xxscreeps-mod-client 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -0
- package/backend.js +110 -0
- package/dist/assets/BufferResource-wp05kXJi.js +185 -0
- package/dist/assets/CanvasRenderer-oAjr4VPy.js +1 -0
- package/dist/assets/Filter-DCFwFDCZ.js +1 -0
- package/dist/assets/RenderTargetSystem-BADEJjVe.js +184 -0
- package/dist/assets/WebGLRenderer-CkUVdJjj.js +156 -0
- package/dist/assets/WebGPURenderer-CDYm-Qve.js +41 -0
- package/dist/assets/browserAll-DRs0HlcT.js +14 -0
- package/dist/assets/canvasUtils--etq-uaC.js +1 -0
- package/dist/assets/index-Cf0rVPz-.js +274 -0
- package/dist/assets/terrain.worker-D9zNeJfz.js +1 -0
- package/dist/assets/webworkerAll-Bs2LlyVn.js +83 -0
- package/dist/backend.js +110 -0
- package/dist/index.html +27 -0
- package/dist/index.js +3 -0
- package/dist/package.json +7 -0
- package/index.js +3 -0
- package/package.json +33 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/browserAll-DRs0HlcT.js","assets/webworkerAll-Bs2LlyVn.js","assets/canvasUtils--etq-uaC.js","assets/Filter-DCFwFDCZ.js","assets/WebGPURenderer-CDYm-Qve.js","assets/BufferResource-wp05kXJi.js","assets/RenderTargetSystem-BADEJjVe.js","assets/WebGLRenderer-CkUVdJjj.js","assets/CanvasRenderer-oAjr4VPy.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
var Cw=Object.defineProperty;var Pw=(s,t,e)=>t in s?Cw(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var Q=(s,t,e)=>Pw(s,typeof t!="symbol"?t+"":t,e);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function e(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerPolicy&&(r.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?r.credentials="include":n.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(n){if(n.ep)return;n.ep=!0;const r=e(n);fetch(n.href,r)}})();const Tw=!0,Mw=(s,t)=>s===t,Ei=Symbol("solid-proxy"),Aw=typeof Proxy=="function",Fc=Symbol("solid-track"),JO=Symbol("solid-dev-component"),hl={equals:Mw};let t0=s0;const Cs=1,cl=2,Qw={};var Mt=null;let kh=null,Rw=null,zt=null,me=null,ji=null,th=0;const Ew={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};function qr(s,t){const e=zt,i=Mt,n=s.length===0,r=t===void 0?i:t,o=n?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:r?r.context:null,owner:r},a=n?()=>s(()=>{throw new Error("Dispose method must be an explicit argument to createRoot function")}):()=>s(()=>ii(()=>co(o)));Mt=o,zt=null;try{return fr(a,!0)}finally{zt=e,Mt=i}}function Y(s,t){t=t?Object.assign({},hl,t):hl;const e={value:s,observers:null,observerSlots:null,comparator:t.equals||void 0};t.name&&(e.name=t.name),t.internal?e.internal=!0:e0(e);const i=n=>(typeof n=="function"&&(n=n(e.value)),Zd(e,n));return[i0.bind(e),i]}function J(s,t,e){const i=eh(s,t,!1,Cs,e);dr(i)}function gt(s,t,e){t0=Bw;const i=eh(s,t,!1,Cs,e);i.user=!0,ji?ji.push(i):dr(i)}function Os(s,t,e){e=e?Object.assign({},hl,e):hl;const i=eh(s,t,!0,0,e);return i.observers=null,i.observerSlots=null,i.comparator=e.equals||void 0,dr(i),i0.bind(i)}function Lw(s){return fr(s,!1)}function ii(s){if(zt===null)return s();const t=zt;zt=null;try{return s()}finally{zt=t}}function ho(s,t,e){const i=Array.isArray(s);let n,r=e&&e.defer;return o=>{let a;if(i){a=Array(s.length);for(let h=0;h<s.length;h++)a[h]=s[h]()}else a=s();if(r)return r=!1,o;const l=ii(()=>t(a,n,o));return n=a,l}}function un(s){gt(()=>ii(s))}function de(s){return Mt===null?console.warn("cleanups created outside a `createRoot` or `render` will never be run"):Mt.cleanups===null?Mt.cleanups=[s]:Mt.cleanups.push(s),s}function qc(){return zt}function Iw(s,t){const e=eh(()=>ii(()=>(Object.assign(s,{[JO]:!0}),s(t))),void 0,!0,0);return e.props=t,e.observers=null,e.observerSlots=null,e.name=s.name,e.component=s,dr(e),e.tValue!==void 0?e.tValue:e.value}function e0(s){Mt&&(Mt.sourceMap?Mt.sourceMap.push(s):Mt.sourceMap=[s],s.graph=Mt)}function i0(){if(this.sources&&this.state)if(this.state===Cs)dr(this);else{const s=me;me=null,fr(()=>dl(this),!1),me=s}if(zt){const s=this.observers?this.observers.length:0;zt.sources?(zt.sources.push(this),zt.sourceSlots.push(s)):(zt.sources=[this],zt.sourceSlots=[s]),this.observers?(this.observers.push(zt),this.observerSlots.push(zt.sources.length-1)):(this.observers=[zt],this.observerSlots=[zt.sources.length-1])}return this.value}function Zd(s,t,e){let i=s.value;return(!s.comparator||!s.comparator(i,t))&&(s.value=t,s.observers&&s.observers.length&&fr(()=>{for(let n=0;n<s.observers.length;n+=1){const r=s.observers[n],o=kh&&kh.running;o&&kh.disposed.has(r),(o?!r.tState:!r.state)&&(r.pure?me.push(r):ji.push(r),r.observers&&n0(r)),o||(r.state=Cs)}if(me.length>1e6)throw me=[],Tw?new Error("Potential Infinite Loop Detected."):new Error},!1)),t}function dr(s){if(!s.fn)return;co(s);const t=th;Zw(s,s.value,t)}function Zw(s,t,e){let i;const n=Mt,r=zt;zt=Mt=s;try{i=s.fn(t)}catch(o){return s.pure&&(s.state=Cs,s.owned&&s.owned.forEach(co),s.owned=null),s.updatedAt=e+1,r0(o)}finally{zt=r,Mt=n}(!s.updatedAt||s.updatedAt<=e)&&(s.updatedAt!=null&&"observers"in s?Zd(s,i):s.value=i,s.updatedAt=e)}function eh(s,t,e,i=Cs,n){const r={fn:s,state:i,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:Mt,context:Mt?Mt.context:null,pure:e};return Mt===null?console.warn("computations created outside a `createRoot` or `render` will never be disposed"):Mt!==Qw&&(Mt.owned?Mt.owned.push(r):Mt.owned=[r]),n&&n.name&&(r.name=n.name),r}function ul(s){if(s.state===0)return;if(s.state===cl)return dl(s);if(s.suspense&&ii(s.suspense.inFallback))return s.suspense.effects.push(s);const t=[s];for(;(s=s.owner)&&(!s.updatedAt||s.updatedAt<th);)s.state&&t.push(s);for(let e=t.length-1;e>=0;e--)if(s=t[e],s.state===Cs)dr(s);else if(s.state===cl){const i=me;me=null,fr(()=>dl(s,t[0]),!1),me=i}}function fr(s,t){if(me)return s();let e=!1;t||(me=[]),ji?e=!0:ji=[],th++;try{const i=s();return Dw(e),i}catch(i){e||(ji=null),me=null,r0(i)}}function Dw(s){if(me&&(s0(me),me=null),s)return;const t=ji;ji=null,t.length&&fr(()=>t0(t),!1)}function s0(s){for(let t=0;t<s.length;t++)ul(s[t])}function Bw(s){let t,e=0;for(t=0;t<s.length;t++){const i=s[t];i.user?s[e++]=i:ul(i)}for(t=0;t<e;t++)ul(s[t])}function dl(s,t){s.state=0;for(let e=0;e<s.sources.length;e+=1){const i=s.sources[e];if(i.sources){const n=i.state;n===Cs?i!==t&&(!i.updatedAt||i.updatedAt<th)&&ul(i):n===cl&&dl(i,t)}}}function n0(s){for(let t=0;t<s.observers.length;t+=1){const e=s.observers[t];e.state||(e.state=cl,e.pure?me.push(e):ji.push(e),e.observers&&n0(e))}}function co(s){let t;if(s.sources)for(;s.sources.length;){const e=s.sources.pop(),i=s.sourceSlots.pop(),n=e.observers;if(n&&n.length){const r=n.pop(),o=e.observerSlots.pop();i<n.length&&(r.sourceSlots[o]=i,n[i]=r,e.observerSlots[i]=o)}}if(s.tOwned){for(t=s.tOwned.length-1;t>=0;t--)co(s.tOwned[t]);delete s.tOwned}if(s.owned){for(t=s.owned.length-1;t>=0;t--)co(s.owned[t]);s.owned=null}if(s.cleanups){for(t=s.cleanups.length-1;t>=0;t--)s.cleanups[t]();s.cleanups=null}s.state=0,delete s.sourceMap}function Xw(s){return s instanceof Error?s:new Error(typeof s=="string"?s:"Unknown error",{cause:s})}function r0(s,t=Mt){throw Xw(s)}const zw=Symbol("fallback");function tp(s){for(let t=0;t<s.length;t++)s[t]()}function Ww(s,t,e={}){let i=[],n=[],r=[],o=0,a=t.length>1?[]:null;return de(()=>tp(r)),()=>{let l=s()||[],h=l.length,c,u;return l[Fc],ii(()=>{let f,p,g,m,O,x,b,v,w;if(h===0)o!==0&&(tp(r),r=[],i=[],n=[],o=0,a&&(a=[])),e.fallback&&(i=[zw],n[0]=qr(S=>(r[0]=S,e.fallback())),o=1);else if(o===0){for(n=new Array(h),u=0;u<h;u++)i[u]=l[u],n[u]=qr(d);o=h}else{for(g=new Array(h),m=new Array(h),a&&(O=new Array(h)),x=0,b=Math.min(o,h);x<b&&i[x]===l[x];x++);for(b=o-1,v=h-1;b>=x&&v>=x&&i[b]===l[v];b--,v--)g[v]=n[b],m[v]=r[b],a&&(O[v]=a[b]);for(f=new Map,p=new Array(v+1),u=v;u>=x;u--)w=l[u],c=f.get(w),p[u]=c===void 0?-1:c,f.set(w,u);for(c=x;c<=b;c++)w=i[c],u=f.get(w),u!==void 0&&u!==-1?(g[u]=n[c],m[u]=r[c],a&&(O[u]=a[c]),u=p[u],f.set(w,u)):r[c]();for(u=x;u<h;u++)u in g?(n[u]=g[u],r[u]=m[u],a&&(a[u]=O[u],a[u](u))):n[u]=qr(d);n=n.slice(0,o=h),i=l.slice(0)}return n});function d(f){if(r[u]=f,a){const[p,g]=Y(u,{name:"index"});return a[u]=g,t(l[u],p)}return t(l[u])}}}function G(s,t){return Iw(s,t||{})}function Jo(){return!0}const ep={get(s,t,e){return t===Ei?e:s.get(t)},has(s,t){return t===Ei?!0:s.has(t)},set:Jo,deleteProperty:Jo,getOwnPropertyDescriptor(s,t){return{configurable:!0,enumerable:!0,get(){return s.get(t)},set:Jo,deleteProperty:Jo}},ownKeys(s){return s.keys()}};function Gw(s,...t){const e=t.length;if(Aw&&Ei in s){const n=e>1?t.flat():t[0],r=t.map(o=>new Proxy({get(a){return o.includes(a)?s[a]:void 0},has(a){return o.includes(a)&&a in s},keys(){return o.filter(a=>a in s)}},ep));return r.push(new Proxy({get(o){return n.includes(o)?void 0:s[o]},has(o){return n.includes(o)?!1:o in s},keys(){return Object.keys(s).filter(o=>!n.includes(o))}},ep)),r}const i=[];for(let n=0;n<=e;n++)i[n]={};for(const n of Object.getOwnPropertyNames(s)){let r=e;for(let l=0;l<t.length;l++)if(t[l].includes(n)){r=l;break}const o=Object.getOwnPropertyDescriptor(s,n);!o.get&&!o.set&&o.enumerable&&o.writable&&o.configurable?i[r][n]=o.value:Object.defineProperty(i[r],n,o)}return i}const Yw=s=>`Attempting to access a stale value from <${s}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`;function oe(s){const t="fallback"in s&&{fallback:()=>s.fallback};return Os(Ww(()=>s.each,s.children,t||void 0),void 0,{name:"value"})}function ot(s){const t=s.keyed,e=Os(()=>s.when,void 0,{name:"condition value"}),i=t?e:Os(e,void 0,{equals:(n,r)=>!n==!r,name:"condition"});return Os(()=>{const n=i();if(n){const r=s.children;return typeof r=="function"&&r.length>0?ii(()=>r(t?n:()=>{if(!ii(i))throw Yw("Show");return e()})):r}return s.fallback},void 0,{name:"value"})}const Nw={hooks:Ew,writeSignal:Zd,registerGraph:e0};globalThis&&(globalThis.Solid$$?console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior."):globalThis.Solid$$=!0);const Vw=["allowfullscreen","async","alpha","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected","adauctionheaders","browsingtopics","credentialless","defaultchecked","defaultmuted","defaultselected","defer","disablepictureinpicture","disableremoteplayback","preservespitch","shadowrootclonable","shadowrootcustomelementregistry","shadowrootdelegatesfocus","shadowrootserializable","sharedstoragewritable"],Fw=new Set(["className","value","readOnly","noValidate","formNoValidate","isMap","noModule","playsInline","adAuctionHeaders","allowFullscreen","browsingTopics","defaultChecked","defaultMuted","defaultSelected","disablePictureInPicture","disableRemotePlayback","preservesPitch","shadowRootClonable","shadowRootCustomElementRegistry","shadowRootDelegatesFocus","shadowRootSerializable","sharedStorageWritable",...Vw]),qw=new Set(["innerHTML","textContent","innerText","children"]),jw=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Uw=Object.assign(Object.create(null),{class:"className",novalidate:{$:"noValidate",FORM:1},formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1},adauctionheaders:{$:"adAuctionHeaders",IFRAME:1},allowfullscreen:{$:"allowFullscreen",IFRAME:1},browsingtopics:{$:"browsingTopics",IMG:1},defaultchecked:{$:"defaultChecked",INPUT:1},defaultmuted:{$:"defaultMuted",AUDIO:1,VIDEO:1},defaultselected:{$:"defaultSelected",OPTION:1},disablepictureinpicture:{$:"disablePictureInPicture",VIDEO:1},disableremoteplayback:{$:"disableRemotePlayback",AUDIO:1,VIDEO:1},preservespitch:{$:"preservesPitch",AUDIO:1,VIDEO:1},shadowrootclonable:{$:"shadowRootClonable",TEMPLATE:1},shadowrootdelegatesfocus:{$:"shadowRootDelegatesFocus",TEMPLATE:1},shadowrootserializable:{$:"shadowRootSerializable",TEMPLATE:1},sharedstoragewritable:{$:"sharedStorageWritable",IFRAME:1,IMG:1}});function Hw(s,t){const e=Uw[s];return typeof e=="object"?e[t]?e.$:void 0:e}const Kw=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),Jw=new Set(["altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","svg","switch","symbol","text","textPath","tref","tspan","use","view","vkern"]),tS={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},Bt=s=>Os(()=>s());function eS(s,t,e){let i=e.length,n=t.length,r=i,o=0,a=0,l=t[n-1].nextSibling,h=null;for(;o<n||a<r;){if(t[o]===e[a]){o++,a++;continue}for(;t[n-1]===e[r-1];)n--,r--;if(n===o){const c=r<i?a?e[a-1].nextSibling:e[r-a]:l;for(;a<r;)s.insertBefore(e[a++],c)}else if(r===a)for(;o<n;)(!h||!h.has(t[o]))&&t[o].remove(),o++;else if(t[o]===e[r-1]&&e[a]===t[n-1]){const c=t[--n].nextSibling;s.insertBefore(e[a++],t[o++].nextSibling),s.insertBefore(e[--r],c),t[n]=e[r]}else{if(!h){h=new Map;let u=a;for(;u<r;)h.set(e[u],u++)}const c=h.get(t[o]);if(c!=null)if(a<c&&c<r){let u=o,d=1,f;for(;++u<n&&u<r&&!((f=h.get(t[u]))==null||f!==c+d);)d++;if(d>c-a){const p=t[o];for(;a<c;)s.insertBefore(e[a++],p)}else s.replaceChild(e[a++],t[o++])}else o++;else t[o++].remove()}}}const ip="_$DX_DELEGATE";function iS(s,t,e,i={}){if(!t)throw new Error("The `element` passed to `render(..., element)` doesn't exist. Make sure `element` exists in the document.");let n;return qr(r=>{n=r,t===document?s():L(t,s(),t.firstChild?null:void 0,e)},i.owner),()=>{n(),t.textContent=""}}function W(s,t,e,i){let n;const r=()=>{const a=document.createElement("template");return a.innerHTML=s,a.content.firstChild},o=()=>(n||(n=r())).cloneNode(!0);return o.cloneNode=o,o}function Ne(s,t=window.document){const e=t[ip]||(t[ip]=new Set);for(let i=0,n=s.length;i<n;i++){const r=s[i];e.has(r)||(e.add(r),t.addEventListener(r,cS))}}function jc(s,t,e){e==null?s.removeAttribute(t):s.setAttribute(t,e)}function sS(s,t,e,i){i==null?s.removeAttributeNS(t,e):s.setAttributeNS(t,e,i)}function nS(s,t,e){e?s.setAttribute(t,""):s.removeAttribute(t)}function rS(s,t){t==null?s.removeAttribute("class"):s.className=t}function fl(s,t,e,i){if(i)Array.isArray(e)?(s[`$$${t}`]=e[0],s[`$$${t}Data`]=e[1]):s[`$$${t}`]=e;else if(Array.isArray(e)){const n=e[0];s.addEventListener(t,e[0]=r=>n.call(s,e[1],r))}else s.addEventListener(t,e,typeof e!="function"&&e)}function oS(s,t,e={}){const i=Object.keys(t||{}),n=Object.keys(e);let r,o;for(r=0,o=n.length;r<o;r++){const a=n[r];!a||a==="undefined"||t[a]||(sp(s,a,!1),delete e[a])}for(r=0,o=i.length;r<o;r++){const a=i[r],l=!!t[a];!a||a==="undefined"||e[a]===l||!l||(sp(s,a,!0),e[a]=l)}return e}function se(s,t,e){if(!t)return e?jc(s,"style"):t;const i=s.style;if(typeof t=="string")return i.cssText=t;typeof e=="string"&&(i.cssText=e=void 0),e||(e={}),t||(t={});let n,r;for(r in e)t[r]==null&&i.removeProperty(r),delete e[r];for(r in t)n=t[r],n!==e[r]&&(i.setProperty(r,n),e[r]=n);return e}function tt(s,t,e){e!=null?s.style.setProperty(t,e):s.style.removeProperty(t)}function aS(s,t={},e,i){const n={};return J(()=>n.children=uo(s,t.children,n.children)),J(()=>typeof t.ref=="function"&&Us(t.ref,s)),J(()=>lS(s,t,e,!0,n,!0)),n}function Us(s,t,e){return ii(()=>s(t,e))}function L(s,t,e,i){if(e!==void 0&&!i&&(i=[]),typeof t!="function")return uo(s,t,i,e);J(n=>uo(s,t(),n,e),i)}function lS(s,t,e,i,n={},r=!1){t||(t={});for(const o in n)if(!(o in t)){if(o==="children")continue;n[o]=np(s,o,null,n[o],e,r,t)}for(const o in t){if(o==="children")continue;const a=t[o];n[o]=np(s,o,a,n[o],e,r,t)}}function hS(s){return s.toLowerCase().replace(/-([a-z])/g,(t,e)=>e.toUpperCase())}function sp(s,t,e){const i=t.trim().split(/\s+/);for(let n=0,r=i.length;n<r;n++)s.classList.toggle(i[n],e)}function np(s,t,e,i,n,r,o){let a,l,h,c,u;if(t==="style")return se(s,e,i);if(t==="classList")return oS(s,e,i);if(e===i)return i;if(t==="ref")r||e(s);else if(t.slice(0,3)==="on:"){const d=t.slice(3);i&&s.removeEventListener(d,i,typeof i!="function"&&i),e&&s.addEventListener(d,e,typeof e!="function"&&e)}else if(t.slice(0,10)==="oncapture:"){const d=t.slice(10);i&&s.removeEventListener(d,i,!0),e&&s.addEventListener(d,e,!0)}else if(t.slice(0,2)==="on"){const d=t.slice(2).toLowerCase(),f=Kw.has(d);if(!f&&i){const p=Array.isArray(i)?i[0]:i;s.removeEventListener(d,p)}(f||e)&&(fl(s,d,e,f),f&&Ne([d]))}else if(t.slice(0,5)==="attr:")jc(s,t.slice(5),e);else if(t.slice(0,5)==="bool:")nS(s,t.slice(5),e);else if((u=t.slice(0,5)==="prop:")||(h=qw.has(t))||!n&&((c=Hw(t,s.tagName))||(l=Fw.has(t)))||(a=s.nodeName.includes("-")||"is"in o))u&&(t=t.slice(5),l=!0),t==="class"||t==="className"?rS(s,e):a&&!l&&!h?s[hS(t)]=e:s[c||t]=e;else{const d=n&&t.indexOf(":")>-1&&tS[t.split(":")[0]];d?sS(s,d,t,e):jc(s,jw[t]||t,e)}return e}function cS(s){let t=s.target;const e=`$$${s.type}`,i=s.target,n=s.currentTarget,r=l=>Object.defineProperty(s,"target",{configurable:!0,value:l}),o=()=>{const l=t[e];if(l&&!t.disabled){const h=t[`${e}Data`];if(h!==void 0?l.call(t,h,s):l.call(t,s),s.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(s.target)&&r(t.host),!0},a=()=>{for(;o()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(s,"currentTarget",{configurable:!0,get(){return t||document}}),s.composedPath){const l=s.composedPath();r(l[0]);for(let h=0;h<l.length-2&&(t=l[h],!!o());h++){if(t._$host){t=t._$host,a();break}if(t.parentNode===n)break}}else a();r(i)}function uo(s,t,e,i,n){for(;typeof e=="function";)e=e();if(t===e)return e;const r=typeof t,o=i!==void 0;if(s=o&&e[0]&&e[0].parentNode||s,r==="string"||r==="number"){if(r==="number"&&(t=t.toString(),t===e))return e;if(o){let a=e[0];a&&a.nodeType===3?a.data!==t&&(a.data=t):a=document.createTextNode(t),e=dn(s,e,i,a)}else e!==""&&typeof e=="string"?e=s.firstChild.data=t:e=s.textContent=t}else if(t==null||r==="boolean")e=dn(s,e,i);else{if(r==="function")return J(()=>{let a=t();for(;typeof a=="function";)a=a();e=uo(s,a,e,i)}),()=>e;if(Array.isArray(t)){const a=[],l=e&&Array.isArray(e);if(Uc(a,t,e,n))return J(()=>e=uo(s,a,e,i,!0)),()=>e;if(a.length===0){if(e=dn(s,e,i),o)return e}else l?e.length===0?rp(s,a,i):eS(s,e,a):(e&&dn(s),rp(s,a));e=a}else if(t.nodeType){if(Array.isArray(e)){if(o)return e=dn(s,e,i,t);dn(s,e,null,t)}else e==null||e===""||!s.firstChild?s.appendChild(t):s.replaceChild(t,s.firstChild);e=t}else console.warn("Unrecognized value. Skipped inserting",t)}return e}function Uc(s,t,e,i){let n=!1;for(let r=0,o=t.length;r<o;r++){let a=t[r],l=e&&e[s.length],h;if(!(a==null||a===!0||a===!1))if((h=typeof a)=="object"&&a.nodeType)s.push(a);else if(Array.isArray(a))n=Uc(s,a,l)||n;else if(h==="function")if(i){for(;typeof a=="function";)a=a();n=Uc(s,Array.isArray(a)?a:[a],Array.isArray(l)?l:[l])||n}else s.push(a),n=!0;else{const c=String(a);l&&l.nodeType===3&&l.data===c?s.push(l):s.push(document.createTextNode(c))}}return n}function rp(s,t,e=null){for(let i=0,n=t.length;i<n;i++)s.insertBefore(t[i],e)}function dn(s,t,e,i){if(e===void 0)return s.textContent="";const n=i||document.createTextNode("");if(t.length){let r=!1;for(let o=t.length-1;o>=0;o--){const a=t[o];if(n!==a){const l=a.parentNode===s;!r&&!o?l?s.replaceChild(n,a):s.insertBefore(n,e):l&&a.remove()}else r=!0}}else s.insertBefore(n,e);return[n]}const uS="http://www.w3.org/2000/svg";function dS(s,t=!1,e=void 0){return t?document.createElementNS(uS,s):document.createElement(s,{is:e})}function fS(s,t){const e=Os(s);return Os(()=>{const i=e();switch(typeof i){case"function":return Object.assign(i,{[JO]:!0}),ii(()=>i(t));case"string":const n=Jw.has(i),r=dS(i,n,ii(()=>t.is));return aS(r,t,n),r}})}function pS(s){const[,t]=Gw(s,["component"]);return fS(()=>s.component,t)}async function o0(s,t){const e=s.slice(3),i=Uint8Array.from(atob(e),u=>u.charCodeAt(0)),n=new DecompressionStream(t),r=n.writable.getWriter();await r.write(i),await r.close();const o=n.readable.getReader(),a=[];try{for(;;){const{done:u,value:d}=await o.read();if(u)break;a.push(d)}}catch(u){throw o.cancel(),u}let l=0;for(const u of a)l+=u.length;const h=new Uint8Array(l);let c=0;for(const u of a)h.set(u,c),c+=u.length;return JSON.parse(new TextDecoder().decode(h))}function gS(s){return o0(s,"gzip")}function mS(s){return o0(s,"deflate")}class qi{constructor(t){Q(this,"fn");this.fn=t}static create(t){return t===!0?new qi(console.debug.bind(console)):typeof t=="function"?new qi(t):new qi(null)}child(t){if(!this.fn)return this;const e=this.fn;return new qi((...i)=>e(`[screeps:${t}]`,...i))}log(...t){var e;(e=this.fn)==null||e.call(this,...t)}}function OS(s){return{signin:(t,e)=>s.request("POST","/api/auth/signin",{email:t,password:e}),me:()=>s.request("GET","/api/auth/me"),queryToken:t=>s.request("GET","/api/auth/query-token",{token:t}),steamTicket:(t,e)=>s.request("POST","/api/auth/steam-ticket",{ticket:t,...e!=null?{useNativeAuth:e}:{}}),modInfo:()=>s.request("GET","/api/authmod")}}function yS(s){return{list:()=>s.request("GET","/api/game/power-creeps/list"),create:(t,e)=>s.request("POST","/api/game/power-creeps/create",{name:t,className:e}),delete:t=>s.request("POST","/api/game/power-creeps/delete",{id:t}),cancelDelete:t=>s.request("POST","/api/game/power-creeps/cancel-delete",{id:t}),upgrade:(t,e)=>s.request("POST","/api/game/power-creeps/upgrade",{id:t,powers:e}),rename:(t,e)=>s.request("POST","/api/game/power-creeps/rename",{id:t,name:e}),experimentation:()=>s.request("POST","/api/game/power-creeps/experimentation")}}function ke(s,t){return t&&(s.shard=t),s}function xS(s){return{roomTerrain:(t,e)=>s.request("GET","/api/game/room-terrain",ke({room:t,encoded:1},e)),roomObjects:(t,e)=>s.request("GET","/api/game/room-objects",ke({room:t},e)),roomStatus:(t,e)=>s.request("GET","/api/game/room-status",ke({room:t},e)),roomOverview:(t,e=8,i)=>s.request("GET","/api/game/room-overview",ke({room:t,interval:e},i)),time:t=>s.request("GET","/api/game/time",ke({},t)),worldSize:t=>s.request("GET","/api/game/world-size",ke({},t)),mapStats:(t,e,i)=>s.request("POST","/api/game/map-stats",ke({rooms:t,statName:e},i)),roomsTerrain:(t,e)=>{const i=new URLSearchParams({encoded:"true"});return e&&i.set("shard",e),s.request("POST",`/api/game/rooms?${i}`,{rooms:t})},createFlag:(t,e,i,n,r,o,a)=>s.request("POST","/api/game/create-flag",ke({room:t,x:e,y:i,name:n,color:r,secondaryColor:o},a)),genUniqueFlagName:()=>s.request("POST","/api/game/gen-unique-flag-name"),checkUniqueFlagName:t=>s.request("POST","/api/game/check-unique-flag-name",{name:t}),changeFlagColor:(t,e,i,n)=>s.request("POST","/api/game/change-flag-color",{room:t,name:e,color:i,secondaryColor:n}),removeFlag:(t,e)=>s.request("POST","/api/game/remove-flag",{room:t,name:e}),genUniqueObjectName:t=>s.request("POST","/api/game/gen-unique-object-name",{type:t}),checkUniqueObjectName:(t,e)=>s.request("POST","/api/game/check-unique-object-name",{type:t,name:e}),placeSpawn:(t,e,i,n,r)=>s.request("POST","/api/game/place-spawn",ke({room:t,x:e,y:i,...n?{name:n}:{}},r)),createConstruction:(t,e,i,n,r,o)=>s.request("POST","/api/game/create-construction",ke({room:t,x:e,y:i,structureType:n,...r?{name:r}:{}},o)),removeConstructionSite:(t,e,i)=>s.request("POST","/api/game/add-object-intent",ke({_id:"room",room:t,name:"removeConstructionSite",intent:e.map(n=>({id:n,roomName:t}))},i)),addObjectIntent:(t,e,i,n)=>s.request("POST","/api/game/add-object-intent",{_id:t,room:e,name:i,intent:n}),addGlobalIntent:(t,e)=>s.request("POST","/api/game/add-global-intent",{name:t,intent:e}),setNotifyWhenAttacked:(t,e)=>s.request("POST","/api/game/set-notify-when-attacked",{_id:t,enabled:e}),createInvader:(t,e,i,n,r,o)=>s.request("POST","/api/game/create-invader",{room:t,x:e,y:i,size:n,type:r,...o!=null?{boosted:o}:{}}),removeInvader:t=>s.request("POST","/api/game/remove-invader",{_id:t}),tick:()=>s.request("GET","/api/game/tick"),powerCreeps:yS(s),market:{ordersIndex:t=>s.request("GET","/api/game/market/orders-index",ke({},t)),myOrders:()=>s.request("GET","/api/game/market/my-orders"),orders:(t,e)=>s.request("GET","/api/game/market/orders",ke({resourceType:t},e)),stats:(t,e)=>s.request("GET","/api/game/market/stats",ke({resourceType:t},e))},shards:{info:()=>s.request("GET","/api/game/shards/info")}}}function bS(s){return{send:(t,e)=>s.request("POST","/api/user/messages/send",{respondent:t,text:e}),list:t=>s.request("GET","/api/user/messages/list",{respondent:t}),index:()=>s.request("GET","/api/user/messages/index"),markRead:t=>s.request("POST","/api/user/messages/mark-read",{id:t}),unreadCount:()=>s.request("GET","/api/user/messages/unread-count")}}function fn(s,t){return t&&(s.shard=t),s}function wS(s){return{branches:()=>s.request("GET","/api/user/branches"),code:{get:t=>s.request("GET","/api/user/code",t?{branch:t}:{}),set:(t,e)=>s.request("POST","/api/user/code",{branch:t,modules:e,_hash:Date.now()})},memory:{get:(t,e)=>s.request("GET","/api/user/memory",fn({path:t},e)),set:(t,e,i)=>s.request("POST","/api/user/memory",fn({path:t,value:e},i)),segment:{get:(t,e)=>s.request("GET","/api/user/memory-segment",fn({segment:t},e)),set:(t,e,i)=>s.request("POST","/api/user/memory-segment",fn({segment:t,data:e},i))}},console:(t,e)=>s.request("POST","/api/user/console",fn({expression:t},e)),stats:t=>s.request("GET","/api/user/stats",{interval:t}),rooms:t=>s.request("GET","/api/user/rooms",{id:t}),overview:(t,e)=>s.request("GET","/api/user/overview",{interval:t,statName:e}),worldStatus:()=>s.request("GET","/api/user/world-status"),worldStartRoom:t=>s.request("GET","/api/user/world-start-room",fn({},t)),find:t=>s.request("GET","/api/user/find",t),moneyHistory:t=>s.request("GET","/api/user/money-history",t!=null?{page:t}:{}),respawn:()=>s.request("POST","/api/user/respawn"),respawnProhibitedRooms:()=>s.request("GET","/api/user/respawn-prohibited-rooms"),badge:t=>s.request("POST","/api/user/badge",{badge:t}),setActiveBranch:(t,e)=>s.request("POST","/api/user/set-active-branch",{activeName:t,branch:e}),cloneBranch:(t,e,i)=>s.request("POST","/api/user/clone-branch",{newName:t,...e?{branch:e}:{},...i!=null?{defaultModules:i}:{}}),deleteBranch:t=>s.request("POST","/api/user/delete-branch",{branch:t}),notifyPrefs:t=>s.request("POST","/api/user/notify-prefs",t),tutorialDone:()=>s.request("POST","/api/user/tutorial-done"),email:t=>s.request("POST","/api/user/email",{email:t}),setSteamVisible:t=>s.request("POST","/api/user/set-steam-visible",{visible:t}),password:(t,e)=>s.request("POST","/api/user/password",{password:t,...e!=null?{oldPassword:e}:{}}),messages:bS(s)}}function SS(s){return{list:(t=10,e="world",i=0,n)=>s.request("GET","/api/leaderboard/list",{limit:t,mode:e,offset:i,season:n}),find:(t,e="world",i="")=>s.request("GET","/api/leaderboard/find",{username:t,mode:e,season:i}),seasons:()=>s.request("GET","/api/leaderboard/seasons")}}function vS(s){return{pvp:(t=100)=>s.request("GET","/api/experimental/pvp",{interval:t}),nukes:()=>s.request("GET","/api/experimental/nukes")}}function _S(s){return{checkEmail:t=>s.request("GET","/api/register/check-email",{email:t}),checkUsername:t=>s.request("GET","/api/register/check-username",{username:t}),setUsername:(t,e)=>s.request("POST","/api/register/set-username",{username:t,...e!=null?{email:e}:{}}),submit:(t,e,i,n)=>s.request("POST","/api/register/submit",{username:t,email:e,password:i,...n!=null?{modules:n}:{}})}}class kS extends EventTarget{constructor(e){super();Q(this,"baseUrl");Q(this,"authStrategy");Q(this,"logger");Q(this,"serverPassword");Q(this,"token",null);Q(this,"rateLimits",new Map);Q(this,"authenticating",!1);Q(this,"auth");Q(this,"register");Q(this,"game");Q(this,"user");Q(this,"leaderboard");Q(this,"experimental");this.baseUrl=e.url.endsWith("/")?e.url:`${e.url}/`,this.authStrategy=e.auth,this.logger=e.logger??qi.create(),this.serverPassword=e.serverPassword??null,this.auth=OS(this),this.register=_S(this),this.game=xS(this),this.user=wS(this),this.leaderboard=SS(this),this.experimental=vS(this)}emit(e,i){this.dispatchEvent(new CustomEvent(e,{detail:i}))}on(e,i){const n=r=>i(r.detail);return this.addEventListener(e,n),{dispose:()=>{this.removeEventListener(e,n)}}}async authenticate(){this.logger.log("authenticate"),this.authenticating=!0;try{this.token=await this.authStrategy.authenticate(this),this.logger.log("authenticated")}finally{this.authenticating=!1}}setToken(e){this.token=e}async request(e,i,n,r=!1){this.logger.log(e,i);const o=new URL(i.startsWith("/")?i.slice(1):i,this.baseUrl),a={};this.token&&(a["X-Token"]=this.token,a["X-Username"]=this.token),this.serverPassword&&(a["X-Server-Password"]=this.serverPassword);const l={method:e,headers:a};if(e==="GET"&&n)for(const[d,f]of Object.entries(n))f!=null&&o.searchParams.set(d,String(f));else n&&(a["Content-Type"]="application/json",l.body=JSON.stringify(n));const h=await fetch(o.toString(),l),c=h.headers.get("x-token");if(c&&(this.token=c,this.emit("http:tokenRefresh",{token:c})),this.updateRateLimit(i,h),h.status===401&&!r&&!this.authenticating)return await this.authenticate(),this.request(e,i,n,!0);if(!h.ok){let d="";try{d=await h.text()}catch{}const f=new Error(`HTTP ${h.status}: ${d}`);throw this.emit("http:error",{method:e,path:i,status:h.status,error:f}),f}this.emit("http:success",{method:e,path:i,status:h.status});const u=await h.json();if(typeof u.error=="string"){const d=new Error(`Screeps API error: ${u.error}`);throw this.emit("http:error",{method:e,path:i,status:h.status,error:d}),d}return typeof u.data=="string"&&u.data.startsWith("gz:")&&(u.data=await gS(u.data)),u}updateRateLimit(e,i){const n=i.headers.get("x-ratelimit-limit"),r=i.headers.get("x-ratelimit-remaining"),o=i.headers.get("x-ratelimit-reset");n&&r&&o&&this.rateLimits.set(e,{limit:parseInt(n,10),remaining:parseInt(r,10),reset:parseInt(o,10)})}}async function $S(s){let t=typeof s=="string"?s:s.data;if(t.startsWith("gz:")&&(t=JSON.stringify(await mS(t))),t.startsWith("[")){const[n,r]=JSON.parse(t);return{kind:"channel",message:{channel:n,data:r}}}const[e,...i]=t.split(" ");switch(e){case"auth":return{kind:"server",command:{type:"auth",status:i[0],token:i[1]}};case"time":return{kind:"server",command:{type:"time",time:parseInt(i[0],10)}};case"protocol":return{kind:"server",command:{type:"protocol",protocol:parseInt(i[0],10)}};case"package":return{kind:"server",command:{type:"package",package:parseInt(i[0],10)}};default:throw new Error(`Unknown server command: ${e}`)}}class CS{constructor(t){Q(this,"wsUrl");Q(this,"WS");Q(this,"logger");Q(this,"ws",null);Q(this,"token",null);Q(this,"authed",!1);Q(this,"_connected",!1);Q(this,"reconnecting",!1);Q(this,"authSub",null);Q(this,"queue",[]);Q(this,"subs",new Map);Q(this,"listeners",new Map);Q(this,"MAX_RETRIES",10);Q(this,"MAX_DELAY_MS",6e4);Q(this,"_intentionalClose",!1);const e=t.url.replace(/^http/,"ws").replace(/\/$/,"");this.wsUrl=`${e}/socket/websocket`,this.WS=t.WebSocket??globalThis.WebSocket,this.logger=t.logger??qi.create()}get isConnected(){return this._connected}setToken(t){this.token=t}connect(t){var e;return this.logger.log("connect",this.wsUrl),this.reconnecting||(this._intentionalClose=!1),this.token=t,(e=this.authSub)==null||e.dispose(),this.authSub=null,new Promise((i,n)=>{this.ws=new this.WS(this.wsUrl),this.ws.onopen=()=>{this.logger.log("WebSocket opened"),this._connected=!0,this.reconnecting=!1,this.rawSend(`auth ${this.token}`),this.authSub=this.once("auth",r=>{const o=r;if(o.status==="ok"){for(this.logger.log("auth ok"),this.authed=!0,o.token&&(this.token=o.token,this.emit("socket:tokenRefresh",{token:o.token}));this.queue.length;)this.rawSend(this.queue.shift());this.emit("connected",{}),i()}else this.logger.log("auth failed"),n(new Error("WebSocket auth failed"))})},this.ws.onclose=()=>{var r;this.logger.log("WebSocket closed"),this._connected=!1,this.authed=!1,(r=this.authSub)==null||r.dispose(),this.authSub=null,this.emit("disconnected",{willReconnect:this.reconnecting}),this.scheduleReconnect()},this.ws.onerror=r=>{this._connected||n(r)},this.ws.onmessage=r=>{this.handleMessage(r).catch(o=>{this.logger.log("message parse error",o),this.emit("socket:error",o instanceof Error?o:new Error(String(o)))})}})}disconnect(){var t;this.logger.log("disconnect"),this._intentionalClose=!0,this.reconnecting=!1,(t=this.ws)==null||t.close(),this.ws=null,this._connected=!1,this.authed=!1,this.queue.length=0}activeSubs(){return Array.from(this.subs.entries()).map(([t,e])=>`${t}(${e})`).join(", ")||"(none)"}subscribe(t){const e=this.subs.get(t)??0;return this.subs.set(t,e+1),e===0?(this.logger.log("subscribe",t,"active:",this.activeSubs()),this.sendOrQueue(`subscribe ${t}`)):this.logger.log("subscribe",t,`(refs: ${e+1})`,"active:",this.activeSubs()),{dispose:()=>this.doUnsubscribe(t)}}on(t,e){let i=this.listeners.get(t);return i||(i=new Set,this.listeners.set(t,i)),i.add(e),{dispose:()=>{var n;(n=this.listeners.get(t))==null||n.delete(e)}}}once(t,e){const i=this.on(t,n=>{i.dispose(),e(n)});return i}doUnsubscribe(t){const e=this.subs.get(t)??0;e<=1?(this.subs.delete(t),this.authed&&this.rawSend(`unsubscribe ${t}`),this.logger.log("unsubscribe",t,"active:",this.activeSubs())):(this.subs.set(t,e-1),this.logger.log("unsubscribe",t,`(refs: ${e-1})`,"active:",this.activeSubs()))}rawSend(t){var e;(e=this.ws)==null||e.send(t)}sendOrQueue(t){this.authed?this.rawSend(t):this.queue.push(t)}emit(t,e){var i;(i=this.listeners.get(t))==null||i.forEach(n=>n(e))}async handleMessage(t){const e=await $S(t);e.kind==="server"?this.emit(e.command.type,e.command):this.emit(e.message.channel,e.message.data)}async scheduleReconnect(){var e;if(this.reconnecting||this._intentionalClose)return;if(!this.token){this.reconnecting=!1;return}this.reconnecting=!0;let t=0;for(;t<this.MAX_RETRIES&&this.reconnecting&&!this._intentionalClose;){const i=Math.min(Math.pow(2,t)*100,this.MAX_DELAY_MS);if(this.logger.log(`reconnect attempt ${t+1}/${this.MAX_RETRIES} in ${i}ms`),await new Promise(n=>setTimeout(n,i)),!this.reconnecting||this._intentionalClose)return;try{if(await this.connect(this.token),this._intentionalClose){(e=this.ws)==null||e.close(),this.ws=null;return}for(const n of this.subs.keys())this.rawSend(`subscribe ${n}`);return}catch{t++}}this.reconnecting=!1,t>=this.MAX_RETRIES&&!this._intentionalClose&&this.emit("socket:error",new Error(`WebSocket reconnection failed after ${this.MAX_RETRIES} retries`))}}let PS=class{constructor(t,e){Q(this,"memory",new Map);Q(this,"storage");Q(this,"namespace");this.namespace=t,this.storage=e}memKey(t){return`${this.namespace}/${t}`}get(t){const e=this.memory.get(this.memKey(t));if(e){if(e.expires!==void 0&&Date.now()>e.expires){this.memory.delete(this.memKey(t));return}return e.data}}set(t,e,i){this.memory.set(this.memKey(t),{data:e,expires:i!==void 0?Date.now()+i:void 0})}delete(t){this.memory.delete(this.memKey(t))}async getPersistent(t){return this.storage?this.storage.get(`${this.namespace}/${t}`):null}async setPersistent(t,e){this.storage&&await this.storage.set(`${this.namespace}/${t}`,e)}async deletePersistent(t){this.storage&&await this.storage.delete(`${this.namespace}/${t}`)}clearMemory(){this.memory.clear()}async clearPersistent(){this.storage&&await this.storage.clear()}async clearAll(){this.clearMemory(),await this.clearPersistent()}};class pr extends EventTarget{constructor(e){super();Q(this,"logger");this.logger=e??qi.create()}emit(e,i){this.dispatchEvent(new CustomEvent(e,{detail:i}))}on(e,i){this.logger.log(`on "${e}"`);const n=r=>i(r.detail);return this.addEventListener(e,n),{dispose:()=>{this.logger.log(`off "${e}"`),this.removeEventListener(e,n)}}}}var ci=(s=>(s[s.Plain=0]="Plain",s[s.Wall=1]="Wall",s[s.Swamp=2]="Swamp",s))(ci||{});class Tn{constructor(t){Q(this,"raw");this.raw=t}static fromEncodedString(t){const e=new Uint8Array(2500);for(let i=0;i<2500;i++){const n=parseInt(t[i],10);e[i]=n===3?1:n}return new Tn(e)}get(t,e){return this.raw[e*50+t]}}class TS extends pr{constructor(e,i,n,r){super(r);Q(this,"http");Q(this,"socket");Q(this,"cache");Q(this,"roomObjects",new Map);Q(this,"roomUsers",new Map);Q(this,"roomSubCount",new Map);Q(this,"lastFlagsString",new Map);this.http=e,this.socket=i,this.cache=n}parseFlagsString(e,i){if(!e||e.length===0)return[];const n=[],r=e.split("|");for(const o of r){const a=o.split("~");if(a.length!==5)continue;const[l,h,c,u,d]=a,f=parseInt(h,10),p=parseInt(c,10),g=parseInt(u,10),m=parseInt(d,10);isNaN(f)||isNaN(p)||isNaN(g)||isNaN(m)||n.push({_id:l,type:"flag",room:i,name:l,x:g,y:m,color:f,secondaryColor:p})}return n}async terrain(e,i){const n=`terrain/${i}/${e}`,r=this.cache.get(n);if(r)return this.logger.log("terrain",e,i,"(memory cache hit)"),r;const o=await this.cache.getPersistent(n);if(o){this.logger.log("terrain",e,i,"(persistent cache hit)");const c=new Tn(o);return this.cache.set(n,c),c}this.logger.log("terrain",e,i,"(fetching)");const l=(await this.http.game.roomTerrain(e,i??void 0)).terrain[0];if(!l)throw new Error(`No terrain data for room ${e} shard ${i}`);const h=Tn.fromEncodedString(l.terrain);return this.cache.set(n,h),await this.cache.setPersistent(n,h.raw),this.emit("room:terrainavailable",{room:e,shard:i,terrain:h}),h}async terrainBulk(e,i){const n=new Map,r=[];for(const l of e){const h=this.cache.get(`terrain/${i}/${l}`);h?n.set(l,h):r.push(l)}if(r.length===0)return n;const o=[];if(await Promise.all(r.map(async l=>{const h=`terrain/${i}/${l}`,c=await this.cache.getPersistent(h);if(c){const u=new Tn(c);this.cache.set(h,u),n.set(l,u)}else o.push(l)})),o.length===0)return n;this.logger.log("terrainBulk",`fetching ${o.length} rooms`,i);const a=await this.http.game.roomsTerrain(o,i??void 0);return await Promise.all(a.rooms.map(async l=>{const h=Tn.fromEncodedString(l.terrain),c=`terrain/${i}/${l.room}`;this.cache.set(c,h),await this.cache.setPersistent(c,h.raw),this.emit("room:terrainavailable",{room:l.room,shard:i,terrain:h}),n.set(l.room,h)})),n}objects(e,i){const n=this.roomObjects.get(`${e}/${i}`);return n?{...n}:null}async fetchObjects(e,i){const n=`${e}/${i}`,r=await this.http.game.roomObjects(e,i??void 0),o={};for(const l of r.objects)l&&typeof l=="object"&&"_id"in l&&(o[l._id]=l);this.roomObjects.set(n,o);const a=this.roomUsers.get(n);this.emit("room:update",{room:e,shard:i,gameTime:void 0,objects:o,diff:o,visual:"",users:a})}activeRooms(){return Array.from(this.roomSubCount.entries()).map(([e,i])=>`${e}(${i})`).join(", ")||"(none)"}subscribe(e,i){const n=`${e}/${i}`,r=this.roomSubCount.get(n)??0;this.roomSubCount.set(n,r+1),this.logger.log("subscribe",e,i,`(refs: ${r+1})`,"active:",this.activeRooms());const o=i?`room:${i}/${e}`:`room:${e}`,a=i?`err@room:${i}/${e}`:`err@room:${e}`,l=this.socket.subscribe(o),h=this.socket.on(a,u=>{const d=typeof u=="string"?u:JSON.stringify(u);this.logger.log("room error",e,i,d),this.emit("room:error",{room:e,shard:i,message:d})}),c=this.socket.on(o,u=>{const d=u,f={...this.roomObjects.get(n)??{}};for(const[m,O]of Object.entries(d.objects))O===null?delete f[m]:f[m]?f[m]={...f[m],...O}:f[m]=O;const p={...d.objects};if("flags"in d){const m=d.flags??"",O=this.lastFlagsString.get(n)??"";if(m!==O){this.lastFlagsString.set(n,m);const x=this.parseFlagsString(m,e),b=new Map;for(const v of x)b.set(v.name,v);for(const v in f){const w=f[v];(w==null?void 0:w.type)==="flag"&&!b.has(v)&&(delete f[v],p[v]=null,this.logger.log(`[flag:room] removed ${v} @ ${e}`))}for(const[v,w]of b){const S=f[v];(!S||S.x!==w.x||S.y!==w.y||S.color!==w.color||S.secondaryColor!==w.secondaryColor)&&(f[v]=w,p[v]=w,this.logger.log(`[flag:room] ${S?"changed":"added"} ${v} @ ${e} (${w.x},${w.y})`))}}}d.users&&this.roomUsers.set(n,d.users),this.roomObjects.set(n,f);const g=this.roomUsers.get(n);this.emit("room:update",{room:e,shard:i,gameTime:d.gameTime,objects:f,diff:p,visual:d.visual??"",users:g})});return{dispose:()=>{l.dispose(),c.dispose(),h.dispose();const u=(this.roomSubCount.get(n)??1)-1;u<=0?(this.roomSubCount.delete(n),this.roomObjects.delete(n),this.lastFlagsString.delete(n),this.logger.log("unsubscribe",e,i,"(last ref)","active:",this.activeRooms())):(this.roomSubCount.set(n,u),this.logger.log("unsubscribe",e,i,`(refs: ${u})`,"active:",this.activeRooms()))}}}}class MS extends pr{constructor(e,i,n,r,o=100){super(r);Q(this,"http");Q(this,"socket");Q(this,"cache");Q(this,"console",[]);Q(this,"maxConsoleSize");Q(this,"_cpu",null);Q(this,"_userInfo",null);Q(this,"_userId",null);Q(this,"_worldStatus",null);Q(this,"_mePromise",null);this.http=e,this.socket=i,this.cache=n,this.maxConsoleSize=o}get cpu(){return this._cpu}get userInfo(){return this._userInfo}get userId(){return this._userId}get worldStatusValue(){return this._worldStatus}async me(){const e=this.cache.get("user/me");return e?(this._userId=e._id,this._userInfo=e,e):this._mePromise?this._mePromise:(this.logger.log("fetch me"),this._mePromise=this.http.auth.me().then(i=>{const n=i;return this._userId=n._id,this._userInfo=n,this.cache.set("user/me",n,6e4),this.emit("user:me",n),n}).finally(()=>{this._mePromise=null}),this._mePromise)}async refreshMe(){return this.logger.log("refresh me"),this.cache.delete("user/me"),this.me()}async worldStatus(){const e=this.cache.get("user/worldStatus");if(e)return this._worldStatus=e,e;this.logger.log("fetch world status");const i=await this.http.user.worldStatus();return this._worldStatus=i.status,this.cache.set("user/worldStatus",i.status,6e4),this.emit("user:worldStatus",{status:i.status}),i.status}async refreshWorldStatus(){return this.logger.log("refresh world status"),this.cache.delete("user/worldStatus"),this.worldStatus()}subscribe(e){this.logger.log("subscribe",e);let i=null,n=null,r=!1;return(async()=>{try{const a=this._userId??(await this.me())._id;if(r)return;const l=`user:${a}/${e}`;i=this.socket.subscribe(l),n=this.socket.on(l,h=>{var c,u,d;if(e==="cpu")this._cpu=h,this.emit("user:cpu",this._cpu);else if(e==="console"){const f=h,p={log:((c=f.messages)==null?void 0:c.log)??[],results:((u=f.messages)==null?void 0:u.results)??[],error:((d=f.messages)==null?void 0:d.error)??[]};f.error&&p.error.push(f.error),this.console.push(p),this.console.length>this.maxConsoleSize&&this.console.splice(0,this.console.length-this.maxConsoleSize),this.emit("user:console",{messages:p})}else e==="code"&&this.emit("user:code",h)})}catch(a){r||this.dispatchEvent(new ErrorEvent("error",{error:a instanceof Error?a:new Error(String(a))}))}})(),{dispose:()=>{this.logger.log("unsubscribe",e),r=!0,i==null||i.dispose(),n==null||n.dispose()}}}subscribeUserStream(){this.logger.log("subscribe user stream");let e=null,i=null,n=!1;return(async()=>{try{const o=this._userId??(await this.me())._id;if(n)return;const a=`user:${o}`;e=this.socket.subscribe(a),i=this.socket.on(a,l=>{const h=l;if(h&&typeof h=="object"&&"flags"in h){const c=h.flags;if(c&&typeof c=="object")for(const[u,d]of Object.entries(c)){const f=d;if(f&&typeof f=="object"){const p=f.room??"unknown",g=f.x??"?",m=f.y??"?";this.logger.log(`[flag:user] ${u} @ ${p} (${g},${m})`)}}}this.emit("user:stream",h)})}catch(o){n||this.dispatchEvent(new ErrorEvent("error",{error:o instanceof Error?o:new Error(String(o))}))}})(),{dispose:()=>{this.logger.log("unsubscribe user stream"),n=!0,e==null||e.dispose(),i==null||i.dispose()}}}}class AS extends pr{constructor(e,i,n,r){super(r);Q(this,"http");Q(this,"cache");Q(this,"socketSubs",[]);Q(this,"_version",null);Q(this,"_shards",null);this.http=e,this.cache=n,this.socketSubs.push(i.on("connected",()=>{this.emit("server:connected",{})})),this.socketSubs.push(i.on("disconnected",o=>{const a=o;this.emit("server:disconnected",{willReconnect:a.willReconnect})})),this.socketSubs.push(i.on("socket:error",o=>{this.emit("server:error",{error:o instanceof Error?o:new Error(String(o))})}))}get versionInfo(){return this._version}get isPrivateServer(){var e,i;return this._version?(((i=(e=this._version.serverData)==null?void 0:e.shards)==null?void 0:i.length)??0)===0:null}get shardList(){return this._shards}destroy(){for(const e of this.socketSubs)e.dispose();this.socketSubs.length=0}async version(){const e=this.cache.get("server/version");if(e)return e;const i=await this.http.request("GET","/api/version");return this._version=i,this.cache.set("server/version",i,5*6e4),this.emit("server:version",i),i}async refreshVersion(){return this.cache.delete("server/version"),this.version()}async shards(){const e=this.cache.get("server/shards");if(e)return e;const i=await this.http.request("GET","/api/game/shards/info");return this._shards=i.shards,this.cache.set("server/shards",i.shards,5*6e4),this.emit("server:shards",i.shards),i.shards}async refreshShards(){return this.cache.delete("server/shards"),this.shards()}async worldInfo(e){const n=`server/world/${e??"default"}`,r=this.cache.get(n);if(r)return r;const o={};e&&(o.shard=e);const a=await this.http.request("GET","/api/game/world-size",o),{width:l,height:h}=a;this.logger.log(`worldInfo shard=${e??"none"} — raw size: ${l}x${h}`);let c=-l,u=-1,d=-h,f=-1;try{const m=(await this.http.request("POST","/api/game/map-stats",{rooms:["W0N0","E0N0","W0S0","E0S0"],statName:"owner0",...o})).stats??{},O=["W0N0","E0N0","W0S0","E0S0"].filter(x=>x in m);this.logger.log(`worldInfo corner probe — found: [${O.length?O.join(", "):"none"}]`),("E0N0"in m||"E0S0"in m)&&(c=-Math.ceil(l/2),u=Math.floor(l/2)-1),("W0S0"in m||"E0S0"in m)&&(d=-Math.ceil(h/2),f=Math.floor(h/2)-1)}catch(g){this.logger.log("worldInfo corner probe failed — keeping W/N defaults:",g)}this.logger.log(`worldInfo computed bounds — x: [${c}, ${u}] y: [${d}, ${f}]`);const p={shard:e??null,width:l,height:h,minX:c,maxX:u,minY:d,maxY:f};return this.cache.set(n,p,10*6e4),p}invalidateWorldInfo(e){this.cache.delete(`server/world/${e??"default"}`)}}class QS{constructor(t){Q(this,"memory",new Map);Q(this,"adapter");Q(this,"maxEntries");Q(this,"namespace");Q(this,"accessSeq",0);this.adapter=t.adapter,this.maxEntries=t.maxEntries,this.namespace=t.namespace}key(t,e){return`${e??"_"}/${t}`}adapterKey(t){return`map2/${t}`}tick(){return++this.accessSeq}serialize(t){const e={data:t.data,lastSeen:t.lastSeen,lastAccess:t.lastAccess};return new TextEncoder().encode(JSON.stringify(e))}deserialize(t){try{return JSON.parse(new TextDecoder().decode(t))}catch{return null}}getMemory(t,e){const i=this.memory.get(this.key(t,e));return i?(i.lastAccess=this.tick(),i.data):null}async get(t,e){const i=this.getMemory(t,e);if(i)return i;if(!this.adapter)return null;const n=this.key(t,e),r=await this.adapter.get(this.adapterKey(n));if(!r)return null;const o=this.deserialize(r);return o?(this.memory.set(n,{data:o.data,lastSeen:o.lastSeen,lastAccess:this.tick()}),o.data):null}async put(t,e,i){const n=this.key(t,e),r={data:i,lastSeen:Date.now(),lastAccess:this.tick()};this.memory.set(n,r),await this.pruneIfNeeded(),this.adapter&&await this.adapter.set(this.adapterKey(n),this.serialize(r))}async pruneIfNeeded(){if(this.memory.size<=this.maxEntries)return;const e=[...this.memory.entries()].sort((i,n)=>i[1].lastAccess-n[1].lastAccess).slice(0,this.memory.size-this.maxEntries);for(const[i]of e)this.memory.delete(i),this.adapter&&await this.adapter.delete(this.adapterKey(i))}}function op(s){const t=Object.keys(s).sort(),e={};for(const i of t){const n=s[i];e[i]=n?[...n].sort((r,o)=>r[0]-o[0]||r[1]-o[1]):null}return JSON.stringify(e)}class RS extends pr{constructor(e,i,n={},r){super(r);Q(this,"socket");Q(this,"storage");Q(this,"maxSubscriptions");Q(this,"active",new Map);Q(this,"waitlist",[]);Q(this,"keyStates",new Map);Q(this,"warnedAboutWaitlist",!1);this.socket=e,this.storage=i,this.maxSubscriptions=n.maxSubscriptions??500,this.socket.on("connected",()=>this.onReconnect())}map2data(e,i){return this.storage.getMemory(e,i)}subscribeMap2(e,i){const n=`${e}/${i}`,r=this.active.get(n);if(r){r.refCount++,this.logger.log("subscribeMap2",e,i,`(active, refs: ${r.refCount})`);const l=this.getOrCreateKeyState(n,"active");return this.emitWarmStart(e,i),this.makeSubscription(e,i,n,l)}const o=this.waitlist.find(l=>l.key===n);if(o){o.refCount++,this.logger.log("subscribeMap2",e,i,`(pending, refs: ${o.refCount})`);const l=this.getOrCreateKeyState(n,"pending");return this.emitWarmStart(e,i),this.makeSubscription(e,i,n,l)}if(this.active.size<this.maxSubscriptions){this.activateKey(e,i,n,1),this.logger.log("subscribeMap2",e,i,"(new active)");const l=this.getOrCreateKeyState(n,"active");return this.emit("room:map2state",{room:e,shard:i,status:"active"}),this.emitWarmStart(e,i),this.makeSubscription(e,i,n,l)}this.waitlist.push({key:n,room:e,shard:i,refCount:1}),this.logger.log("subscribeMap2",e,i,"(new pending)");const a=this.getOrCreateKeyState(n,"pending");return this.emit("room:map2state",{room:e,shard:i,status:"pending"}),this.emitWarmStart(e,i),this.warnedAboutWaitlist||(this.logger.log(`subscription limit (${this.maxSubscriptions}) reached — `,"some rooms are on a waitlist and will be promoted as slots free up."),this.warnedAboutWaitlist=!0),this.makeSubscription(e,i,n,a)}activateKey(e,i,n,r){const o=i?`roomMap2:${i}/${e}`:`roomMap2:${e}`,a=this.socket.subscribe(o),l=this.storage.getMemory(e,i),h={room:e,shard:i,refCount:r,socketSub:a,listenerSub:void 0,lastHash:l?op(l):null};h.listenerSub=this.socket.on(o,c=>{const u=c,d=op(u);h.lastHash!==d&&(h.lastHash=d,this.storage.put(e,i,u),this.emit("room:map2update",{room:e,shard:i,data:u,source:"live"}))}),this.active.set(n,h)}promoteNext(){const e=this.waitlist.shift();if(!e)return;this.activateKey(e.room,e.shard,e.key,e.refCount),this.logger.log("promoteNext",e.room,e.shard,"(promoted from waitlist)");const i=this.keyStates.get(e.key);i&&(i.status="active",i.statusHandlers.forEach(n=>n("active"))),this.emit("room:map2state",{room:e.room,shard:e.shard,status:"active"})}getOrCreateKeyState(e,i){let n=this.keyStates.get(e);return n||(n={status:i,statusHandlers:new Set},this.keyStates.set(e,n)),n}makeSubscription(e,i,n,r){let o=!1;return{status:()=>r.status,cachedData:()=>this.storage.getMemory(e,i),onStatusChange:a=>(r.statusHandlers.add(a),{dispose:()=>{r.statusHandlers.delete(a)}}),dispose:()=>{o||(o=!0,this.disposeSubscription(e,i,n))}}}disposeSubscription(e,i,n){const r=this.waitlist.findIndex(a=>a.key===n);if(r>=0){const a=this.waitlist[r];a.refCount--,this.logger.log("unsubscribeMap2",e,i,`(pending, refs: ${a.refCount})`),a.refCount<=0&&(this.waitlist.splice(r,1),this.keyStates.delete(n),this.logger.log("unsubscribeMap2",e,i,"(removed from waitlist)"));return}const o=this.active.get(n);o&&(o.refCount--,this.logger.log("unsubscribeMap2",e,i,`(active, refs: ${o.refCount})`),o.refCount<=0&&(o.socketSub.dispose(),o.listenerSub.dispose(),this.active.delete(n),this.keyStates.delete(n),this.logger.log("unsubscribeMap2",e,i,"(deactivated, promoting next)"),this.promoteNext()))}emitWarmStart(e,i){const n=`${e}/${i}`,r=this.storage.getMemory(e,i);r?queueMicrotask(()=>{this.isSubscribed(n)&&this.emit("room:map2update",{room:e,shard:i,data:r,source:"cache"})}):this.storage.get(e,i).then(o=>{o&&this.isSubscribed(n)&&this.emit("room:map2update",{room:e,shard:i,data:o,source:"cache"})})}onReconnect(){this.logger.log("onReconnect —",this.active.size,"active,",this.waitlist.length,"pending");for(const e of this.active.values())e.lastHash=null,this.emit("room:map2state",{room:e.room,shard:e.shard,status:"active"});for(const e of this.waitlist)this.emit("room:map2state",{room:e.room,shard:e.shard,status:"pending"})}isSubscribed(e){return this.active.has(e)||this.waitlist.some(i=>i.key===e)}}class ES extends pr{constructor(e,i=100,n=500,r){super(r);Q(this,"http");Q(this,"debounceMs");Q(this,"minIntervalMs");Q(this,"pending",new Map);Q(this,"timer",null);Q(this,"lastFlushTime",0);this.http=e,this.debounceMs=i,this.minIntervalMs=n}request(e,i,n){if(e.length===0)return;const r=JSON.stringify([i,n??"shard0"]);let o=this.pending.get(r);o||(o={rooms:new Set,statName:i,shard:n??"shard0"},this.pending.set(r,o));for(const c of e)o.rooms.add(c);this.timer&&clearTimeout(this.timer);const l=Date.now()-this.lastFlushTime,h=Math.max(this.debounceMs,this.minIntervalMs-l);this.timer=setTimeout(()=>this.flush(),h)}async flush(){const e=new Map(this.pending);this.pending.clear(),this.timer=null,this.lastFlushTime=Date.now();for(const[,i]of e){const n=[...i.rooms];try{const r=await this.http.request("POST","/api/game/map-stats",{rooms:n,statName:i.statName,shard:i.shard}),o=r.users??{};for(const[a,l]of Object.entries(r.stats)){const h=this.buildData(l,o);this.emit("mapStats:room",{room:a,shard:i.shard==="shard0"?null:i.shard,stat:h})}for(const a of n)r.stats[a]||this.emit("mapStats:room",{room:a,shard:i.shard==="shard0"?null:i.shard,stat:{}})}catch(r){this.logger.log("mapStats fetch failed:",r)}}}buildData(e,i){var a,l,h;let n,r;for(let c=0;c<3;c++){const u=`minerals${c}`,d=e[u];if(d){n=d.type,r=d.density;break}}const o=(a=e.own)==null?void 0:a.user;return{own:e.own,mineral:n,density:r,username:o?(l=i[o])==null?void 0:l.username:void 0,safeMode:e.safeMode,badge:o?(h=i[o])==null?void 0:h.badge:void 0}}}class LS extends pr{constructor(e=50,i){super(i);Q(this,"_history",[]);Q(this,"_index",-1);Q(this,"maxHistory");this.maxHistory=e}navigateTo(e,i){this._history=this._history.slice(0,this._index+1),this._history.push({room:e,shard:i}),this._history.length>this.maxHistory?this._history.shift():this._index++,this.emit("navigation:change",this.current())}back(){return this.canBack()?(this._index--,this.emit("navigation:change",this.current()),!0):!1}forward(){return this.canForward()?(this._index++,this.emit("navigation:change",this.current()),!0):!1}canBack(){return this._index>0}canForward(){return this._index<this._history.length-1}current(){var e,i;return{room:((e=this._history[this._index])==null?void 0:e.room)??null,shard:((i=this._history[this._index])==null?void 0:i.shard)??null,index:this._index,history:[...this._history]}}}class IS{constructor(t){Q(this,"http");Q(this,"socket");Q(this,"stores");Q(this,"cache");Q(this,"logger");Q(this,"tokenRefreshIntervalMs");Q(this,"tokenSyncSubs",[]);Q(this,"tokenRefreshTimer",null);Q(this,"lastHttpActivity",0);Q(this,"refreshInFlight",!1);var n,r,o;let e;try{e=new URL(t.url).hostname}catch{throw new TypeError(`ScreepsClient: invalid url "${t.url}"`)}this.logger=qi.create(t.debug),this.logger.log(`[screeps:client] init ${t.url}`),this.cache=new PS(e,t.storage??null),this.http=new kS({url:t.url,auth:t.auth,logger:this.logger.child("http"),serverPassword:t.serverPassword}),this.socket=new CS({url:t.url,WebSocket:t.WebSocket,logger:this.logger.child("socket")});const i=new QS({adapter:t.storage??null,namespace:e,maxEntries:((n=t.map2)==null?void 0:n.maxCacheEntries)??1e4});this.stores={room:new TS(this.http,this.socket,this.cache,this.logger.child("room")),user:new MS(this.http,this.socket,this.cache,this.logger.child("user")),server:new AS(this.http,this.socket,this.cache,this.logger.child("server")),map:new RS(this.socket,i,{maxSubscriptions:((r=t.map2)==null?void 0:r.maxSubscriptions)??500},this.logger.child("map")),mapStats:new ES(this.http,100,500,this.logger.child("mapStats")),navigation:new LS(50,this.logger.child("navigation"))},this.tokenRefreshIntervalMs=t.tokenRefresh===!1?null:((o=t.tokenRefresh)==null?void 0:o.intervalMs)??3e4,this.wireTokenSync()}wireTokenSync(){this.tokenSyncSubs.push(this.http.on("http:tokenRefresh",({token:t})=>{this.socket.setToken(t)})),this.tokenSyncSubs.push(this.socket.on("socket:tokenRefresh",t=>{const e=t;this.http.setToken(e.token)})),this.tokenSyncSubs.push(this.http.on("http:success",()=>{this.lastHttpActivity=Date.now()}))}get isConnected(){return this.socket.isConnected}async connect(){this.logger.log("[screeps:client] connect"),await this.http.authenticate(),await this.socket.connect(this.http.token),await Promise.all([this.stores.user.me(),this.stores.user.worldStatus(),this.stores.server.version()]),this.startTokenRefresh()}disconnect(){this.logger.log("[screeps:client] disconnect"),this.stopTokenRefresh(),this.socket.disconnect()}startTokenRefresh(){if(this.tokenRefreshIntervalMs===null||this.tokenRefreshTimer!==null)return;const t=this.tokenRefreshIntervalMs;this.lastHttpActivity=Date.now();const e=Math.max(1e3,Math.floor(t/2));this.tokenRefreshTimer=setInterval(()=>{Date.now()-this.lastHttpActivity<t||this.refreshTokenNow()},e)}stopTokenRefresh(){this.tokenRefreshTimer!==null&&(clearInterval(this.tokenRefreshTimer),this.tokenRefreshTimer=null)}async refreshTokenNow(){if(!this.refreshInFlight){this.refreshInFlight=!0;try{this.logger.log("[screeps:client] token refresh (idle)"),await this.stores.user.refreshWorldStatus()}catch(t){this.logger.log("[screeps:client] token refresh failed",t)}finally{this.refreshInFlight=!1}}}async clearCache(){this.logger.log("[screeps:client] clearCache"),await this.cache.clearAll()}}class ZS{constructor(t){Q(this,"token");this.token=t.token}async authenticate(t){return this.token}}class DS{constructor(t){Q(this,"email");Q(this,"password");this.email=t.email,this.password=t.password}async authenticate(t){return(await t.auth.signin(this.email,this.password)).token}}class BS{async authenticate(t){return"guest"}}const XS=1,Di="data";class zS{constructor(t){Q(this,"namespace");Q(this,"db",null);Q(this,"openPromise",null);this.namespace=t}get dbName(){return`screeps:${this.namespace}`}open(){return this.db?Promise.resolve(this.db):this.openPromise?this.openPromise:(this.openPromise=new Promise((t,e)=>{const i=indexedDB.open(this.dbName,XS);i.onupgradeneeded=()=>{i.result.createObjectStore(Di)},i.onsuccess=()=>{this.db=i.result,this.openPromise=null,t(i.result)},i.onerror=()=>e(i.error),i.onblocked=()=>e(new Error(`IndexedDB open blocked: ${this.dbName}`))}),this.openPromise)}async get(t){const e=await this.open();return new Promise((i,n)=>{const o=e.transaction(Di,"readonly").objectStore(Di).get(t);o.onsuccess=()=>i(o.result??null),o.onerror=()=>n(o.error)})}async set(t,e){const i=await this.open();return new Promise((n,r)=>{const a=i.transaction(Di,"readwrite").objectStore(Di).put(e,t);a.onsuccess=()=>n(),a.onerror=()=>r(a.error)})}async delete(t){const e=await this.open();return new Promise((i,n)=>{const o=e.transaction(Di,"readwrite").objectStore(Di).delete(t);o.onsuccess=()=>i(),o.onerror=()=>n(o.error)})}async clear(){const t=await this.open();return new Promise((e,i)=>{const r=t.transaction(Di,"readwrite").objectStore(Di).clear();r.onsuccess=()=>e(),r.onerror=()=>i(r.error)})}}class Dd{constructor(){Q(this,"subs",[])}add(t){this.subs.push(t)}dispose(){for(const t of this.subs)t.dispose();this.subs.length=0}}const WS=5*6e4;function a0(s,t){try{return`screeps:${s}:${new URL(t).hostname}`}catch{return`screeps:${s}:${t}`}}function l0(s){if(typeof sessionStorage>"u")return null;try{const t=sessionStorage.getItem(s);if(!t)return null;const e=JSON.parse(t);return Date.now()>e.expires?(sessionStorage.removeItem(s),null):e.data}catch{return null}}function h0(s,t){if(!(typeof sessionStorage>"u"))try{sessionStorage.setItem(s,JSON.stringify({data:t,expires:Date.now()+WS}))}catch{}}function Xo(s){return s.endsWith("/")?s:`${s}/`}async function GS(s){const t=a0("version",s),e=l0(t);if(e)return e;const i=await fetch(`${Xo(s)}api/version`);if(!i.ok)throw new Error(`HTTP ${i.status}`);const n=await i.json();return h0(t,n),n}async function YS(s){const t=a0("authmod",s),e=l0(t);if(e)return e;const i=await fetch(`${Xo(s)}api/authmod`);if(!i.ok)return null;const n=await i.json();return n.ok?(h0(t,n),n):null}async function NS(s,t){const e=new URLSearchParams({username:t}),i=await fetch(`${Xo(s)}api/register/check-username?${e}`);if(!i.ok)throw new Error(`HTTP ${i.status}`);return i.json()}async function VS(s,t){const e=new URLSearchParams({email:t}),i=await fetch(`${Xo(s)}api/register/check-email?${e}`);if(!i.ok)throw new Error(`HTTP ${i.status}`);return i.json()}async function FS(s,t,e,i){const n=await fetch(`${Xo(s)}api/register/submit`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:t,email:e,password:i})});if(!n.ok)throw new Error(`HTTP ${n.status}`);return n.json()}function qS(s,t){return s.serverData.features.find(e=>e.name===t)}function c0(s){return qS(s,"screepsmod-auth")}const $h={1:{calc(s=0){let t=0,e=0;s>0&&(t=s*30/100),s<0&&(e=-s*30/100),this.path1=`M 50 ${100-t} L ${e} 50 H ${100-e} Z`,this.path2=`M ${e} 50 H ${100-e} L 50 ${t} Z`}},2:{calc(s=0){let t=0,e=0;s>0&&(t=s*30/100),s<0&&(e=-s*30/100),this.path1=`M ${t} ${e} L 50 50 L ${100-t} ${e} V -1 H -1 Z`,this.path2=`M ${t} ${100-e} L 50 50 L ${100-t} ${100-e} V 101 H -1 Z`}},3:{calc(s=0){const t=Math.PI/4+Math.PI/4*(s+100)/200,e=-Math.PI/2,i=Math.PI/2+Math.PI/3,n=Math.PI/2-Math.PI/3;this.path1=`M 50 50 L ${50+100*Math.cos(e-t/2)} ${50+100*Math.sin(e-t/2)} L ${50+100*Math.cos(e+t/2)} ${50+100*Math.sin(e+t/2)} Z`,this.path2=`M 50 50 L ${50+100*Math.cos(i-t/2)} ${50+100*Math.sin(i-t/2)} L ${50+100*Math.cos(i+t/2)} ${50+100*Math.sin(i+t/2)} Z M 50 50 L ${50+100*Math.cos(n-t/2)} ${50+100*Math.sin(n-t/2)} L ${50+100*Math.cos(n+t/2)} ${50+100*Math.sin(n+t/2)}`},flip:"rotate180"},4:{calc(s=0){s+=100;const t=50-s*30/200,e=50+s*30/200;this.path1=`M 0 ${e} H 100 V 100 H 0 Z`,this.path2=s>0?`M 0 ${t} H 100 V ${e} H 0 Z`:""},flip:"rotate90"},5:{calc(s=0){s+=100;const t=50-s*10/200-10,e=50+s*10/200+10;this.path1=`M ${t} 0 H ${e} V 100 H ${t} Z`,this.path2=`M 0 ${t} H 100 V ${e} H 0 Z`},flip:"rotate45"},6:{calc(s=0){const t=5+(s+100)*8/200,e=50,i=20,n=80;this.path1=`M ${e-t} 0 H ${e+t} V 100 H ${e-t}`,this.path2=`M ${i-t} 0 H ${i+t} V 100 H ${i-t} Z M ${n-t} 0 H ${n+t} V 100 H ${n-t} Z`},flip:"rotate90"},7:{calc(s=0){const t=20+s*10/100;this.path1="M 0 50 Q 25 30 50 50 T 100 50 V 100 H 0 Z",this.path2=`M 0 ${50-t} Q 25 ${30-t} 50 ${50-t} T 100 ${50-t} V ${50+t} Q 75 ${70+t} 50 ${50+t} T 0 ${50+t} Z`},flip:"rotate90"},8:{calc(s=0){const t=s*20/100;this.path1="M 0 50 H 100 V 100 H 0 Z",this.path2=`M 0 50 Q 50 ${t} 100 50 Q 50 ${100-t} 0 50 Z`},flip:"rotate90"},9:{calc(s=0){let t=0,e=50;const i=70;s>0&&(t+=s/100*20),s<0&&(e+=s/100*30),this.path1=`M 50 ${t} L 100 ${t+i} V 101 H 0 V ${t+i} Z`,this.path2=`M 50 ${t+e} L 100 ${t+e+i} V 101 H 0 V ${t+e+i} Z`},flip:"rotate180"},10:{calc(s=0){let t=30,e=7;s>0&&(t+=s*50/100),s<0&&(e-=s*20/100),this.path1=`M ${50+e+t} ${50-t} A ${t} ${t} 0 0 0 ${50+e+t} ${50+t} H 101 V ${50-t} Z`,this.path2=`M ${50-e-t} ${50-t} A ${t} ${t} 0 0 1 ${50-e-t} ${50+t} H -1 V ${50-t} Z`},flip:"rotate90"},11:{calc(s=0){let t=30,e=30;const i=50-50*Math.cos(Math.PI/4),n=50-50*Math.sin(Math.PI/4);s>0&&(t+=s*25/100,e+=s*25/100),s<0&&(e-=s*50/100),this.path1=`M ${i} ${n} Q ${t} 50 ${i} ${100-n} H 0 V ${n} Z M ${100-i} ${n} Q ${100-t} 50 ${100-i} ${100-n} H 100 V ${n} Z`,this.path2=`M ${i} ${n} Q 50 ${e} ${100-i} ${n} V 0 H ${i} Z M ${i} ${100-n} Q 50 ${100-e} ${100-i} ${100-n} V 100 H ${i} Z`},flip:"rotate90"},12:{calc(s=0){let t=30,e=35;s>0&&(t+=s*30/100),s<0&&(e+=s*15/100),this.path1=`M 0 ${t} H 100 V 100 H 0 Z`,this.path2=`M 0 ${t} H ${e} V 100 H 0 Z M 100 ${t} H ${100-e} V 100 H 100 Z`},flip:"rotate180"},13:{calc(s=0){let t=30,e=0;s>0&&(t+=s*50/100),s<0&&(e-=s*20/100),this.path1="M 0 0 H 50 V 100 H 0 Z",this.path2=`M ${50-t} ${50-e-t} A ${t} ${t} 0 0 0 ${50+t} ${50-t-e} V 0 H ${50-t} Z`},flip:"rotate180"},14:{calc(s=0){let t=Math.PI/4;const e=0;t+=s*Math.PI/4/100,this.path1=`M 50 0 Q 50 ${50+e} ${50+50*Math.cos(t)} ${50+50*Math.sin(t)} H 100 V 0 H 50 Z`,this.path2=`M 50 0 Q 50 ${50+e} ${50-50*Math.cos(t)} ${50+50*Math.sin(t)} H 0 V 0 H 50 Z`},flip:"rotate180"},15:{calc(s=0){const t=13+s*6/100,e=80,i=45,n=10;this.path1=`M ${50-e-t} ${100+n} A ${e+t} ${e+t} 0 0 1 ${50+e+t} ${100+n} H ${50+e-t} A ${e-t} ${e-t} 0 1 0 ${50-e+t} ${100+n}`,this.path2=`M ${50-i-t} ${100+n} A ${i+t} ${i+t} 0 0 1 ${50+i+t} ${100+n} H ${50+i-t} A ${i-t} ${i-t} 0 1 0 ${50-i+t} ${100+n}`},flip:"rotate180"},16:{calc(s=0){let t=30*Math.PI/180,e=25;s>0&&(t+=30*Math.PI/180*s/100),s<0&&(e+=s*25/100),this.path1="";for(let i=0;i<3;i++){const n=i*Math.PI*2/3+t/2-Math.PI/2,r=i*Math.PI*2/3-t/2-Math.PI/2;this.path1+=`M ${50+100*Math.cos(n)} ${50+100*Math.sin(n)} L ${50+100*Math.cos(r)} ${50+100*Math.sin(r)} L ${50+e*Math.cos(r)} ${50+e*Math.sin(r)} A ${e} ${e} 0 0 1 ${50+e*Math.cos(n)} ${50+e*Math.sin(n)} Z`}this.path2="";for(let i=0;i<3;i++){const n=i*Math.PI*2/3+t/2+Math.PI/2,r=i*Math.PI*2/3-t/2+Math.PI/2;this.path2+=`M ${50+100*Math.cos(n)} ${50+100*Math.sin(n)} L ${50+100*Math.cos(r)} ${50+100*Math.sin(r)} L ${50+e*Math.cos(r)} ${50+e*Math.sin(r)} A ${e} ${e} 0 0 1 ${50+e*Math.cos(n)} ${50+e*Math.sin(n)} Z`}}},17:{calc(s=0){let t=35,e=45;s>0&&(t+=s*20/100),s<0&&(e-=s*30/100),this.path1=`M 50 45 L ${50-t} ${e+45} H ${50+t} Z`,this.path2=`M 50 0 L ${50-t} ${e} H ${50+t} Z`}},18:{calc(s=0){let t=90*Math.PI/180,e=10;s>0&&(t-=60/180*Math.PI*s/100),s<0&&(e-=s*15/100),this.path1="",this.path2="";for(let i=0;i<3;i++){const n=Math.PI*2/3*i+t/2-Math.PI/2,r=Math.PI*2/3*i-t/2-Math.PI/2,o=`M ${50+100*Math.cos(n)} ${50+100*Math.sin(n)} L ${50+100*Math.cos(r)} ${50+100*Math.sin(r)} L ${50+e*Math.cos((n+r)/2)} ${50+e*Math.sin((n+r)/2)} Z`;i?this.path2+=o:this.path1+=o}},flip:"rotate180"},19:{calc(s=0){let t=20,e=60;e+=s*20/100,t+=s*20/100,this.path1=`M 50 -10 L ${50-e} 100 H ${50+e} Z`,this.path2="",t>0&&(this.path2=`M 50 0 L ${50-t} 100 H ${50+t} Z`)},flip:"rotate180"},20:{calc(s=0){let t=10,e=20;s>0&&(t+=s*20/100),s<0&&(e+=s*40/100),this.path1=`M 0 ${50-e} H ${50-t} V 100 H 0 Z`,this.path2=`M ${50+t} 0 V ${50+e} H 100 V 0 Z`},flip:"rotate90"},21:{calc(s=0){let t=40,e=50;s>0&&(t-=s*20/100),s<0&&(e+=s*20/100),this.path1=`M 50 ${e} Q ${50+t} 0 50 0 T 50 ${e} Z M 50 ${100-e} Q ${50+t} 100 50 100 T 50 ${100-e} Z`,this.path2=`M ${e} 50 Q 0 ${50+t} 0 50 T ${e} 50 Z M ${100-e} 50 Q 100 ${50+t} 100 50 T ${100-e} 50 Z`},flip:"rotate45"},22:{calc(s=0){let t=20;t+=s*10/100,this.path1=`M ${50-t} ${50-t} H ${50+t} V ${50+t} H ${50-t} Z`,this.path2="";for(let e=-4;e<4;e++)for(let i=-4;i<4;i++){const n=(e+i)%2;this.path2+=`M ${50-t-t*2*e} ${50-t-t*2*(i+n)} h ${-t*2} v ${t*2} h ${t*2} Z`}},flip:"rotate45"},23:{calc(s=0){let t=17,e=25;s>0&&(t+=s*35/100),s<0&&(e-=s*23/100),this.path1="";for(let i=-4;i<=4;i++)this.path1+=`M ${50-t*i*2} ${50-e} l ${-t} ${-e} l ${-t} ${e} l ${t} ${e} Z`;this.path2="";for(let i=-4;i<=4;i++)this.path2+=`M ${50-t*i*2} ${50+e} l ${-t} ${-e} l ${-t} ${e} l ${t} ${e} Z`},flip:"rotate90"},24:{calc(s=0){let t=50,e=45;s>0&&(t+=s*60/100),s<0&&(e+=s*30/100),this.path1=`M 0 ${e} L 50 70 L 100 ${e} V 100 H 0 Z`,this.path2=`M 50 0 L ${50+t} 100 H 100 V ${e} L 50 70 L 0 ${e} V 100 H ${50-t} Z`},flip:"rotate180"}};function Ch(s){const t=Math.round(s).toString(16);return t.length<2?"0"+t:t}function as(s,t,e){const i=(1-Math.abs(2*e-1))*t,n=s/60,r=i*(1-Math.abs(n%2-1));let o=0,a=0,l=0;!Number.isNaN(s)&&s!==null&&s!==void 0&&(n>=0&&n<1?(o=i,a=r,l=0):n>=1&&n<2?(o=r,a=i,l=0):n>=2&&n<3?(o=0,a=i,l=r):n>=3&&n<4?(o=0,a=r,l=i):n>=4&&n<5?(o=r,a=0,l=i):n>=5&&n<6&&(o=i,a=0,l=r));const h=e-i/2,c=(o+h)*255,u=(a+h)*255,d=(l+h)*255;return"#"+Ch(c)+Ch(u)+Ch(d)}function jS(){const s=[];let t=0;s.push({index:t++,rgb:as(0,0,.8)});for(let e=0;e<19;e++)s.push({index:t++,rgb:as(e*360/19,.6,.8)});s.push({index:t++,rgb:as(0,0,.5)});for(let e=0;e<19;e++)s.push({index:t++,rgb:as(e*360/19,.7,.5)});s.push({index:t++,rgb:as(0,0,.3)});for(let e=0;e<19;e++)s.push({index:t++,rgb:as(e*360/19,.4,.3)});s.push({index:t++,rgb:as(0,0,.1)});for(let e=0;e<19;e++)s.push({index:t++,rgb:as(e*360/19,.5,.1)});return s}const US=jS();function Ph(s){if(typeof s=="string")return s;if(typeof s=="number"){const t=US[s];return t?t.rgb:"#000000"}return"#000000"}function HS(s){const t=Ph(s.color1),e=Ph(s.color2),i=Ph(s.color3),n=s.param??0;if(typeof s.type=="number"){const c=$h[s.type];c&&c.calc(n)}let r=0;if(s.flip&&typeof s.type=="number"){const c=$h[s.type];(c==null?void 0:c.flip)==="rotate180"&&(r=180),(c==null?void 0:c.flip)==="rotate90"&&(r=90),(c==null?void 0:c.flip)==="rotate45"&&(r=45)}let o,a;if(typeof s.type=="number"){const c=$h[s.type];o=(c==null?void 0:c.path1)??"",a=(c==null?void 0:c.path2)??""}else o=s.type.path1,a=s.type.path2;const l=50;let h='<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 100 100" shape-rendering="geometricPrecision">';return h+=`<defs><clipPath id="clip"><circle cx="50" cy="50" r="${l}"/></clipPath></defs>`,h+=`<g transform="rotate(${r} 50 50)">`,h+=`<rect x="0" y="0" width="100" height="100" fill="${t}" clip-path="url(#clip)"/>`,o&&(h+=`<path d="${o}" fill="${e}" clip-path="url(#clip)"/>`),a&&(h+=`<path d="${a}" fill="${i}" clip-path="url(#clip)"/>`),h+='<circle cx="50" cy="50" r="47.5" fill="transparent" stroke="#000" stroke-width="5"/>',h+="</g></svg>",h}const[KS,ap]=Y([]);let JS=0;function jt(s,t="success",e=4e3){const i=JS++;ap(n=>[...n,{id:i,message:s,type:t,duration:e}]),setTimeout(()=>{ap(n=>n.filter(r=>r.id!==i))},e)}const tv=!0;function Bd(){return!0}function ev(){return tv}function ih(){return window.location.origin}function sh(){return"/".replace(/\/$/,"")}function ns(s){const t=`[${s}]`;return{log:()=>{},warn:()=>{},error:(...e)=>console.error(t,...e)}}const ee={room:"screeps:room",shard:"screeps:shard",sidebarWidth:"screeps:sidebarWidth",consoleHeight:"screeps:consoleHeight",consoleSplit:"screeps:consoleSplit",mapZoom:"screeps:mapZoom",widescreenMode:"screeps:settings:widescreenMode",showCreepLabels:"screeps:settings:showCreepLabels",showMapRoomNames:"screeps:settings:showMapRoomNames"},Ue={url:"screeps:url",token:"screeps:token",serverPassword:"screeps:serverPassword"};function Th(s){return localStorage.getItem(s)}function lp(s,t){localStorage.setItem(s,t)}function iv(s){localStorage.removeItem(s)}function Br(s,t){const e=localStorage.getItem(s);if(e===null)return t;const i=Number(e);return Number.isFinite(i)&&i!==0?i:t}function Na(s,t){localStorage.setItem(s,String(t))}function Mh(s){return sessionStorage.getItem(s)}function ta(s,t){sessionStorage.setItem(s,t)}function jr(s){sessionStorage.removeItem(s)}const{log:xi}=ns("client"),[St,Va]=Y(null),[Hs,bn]=Y("idle"),[hp,Fa]=Y(null),[fo,Hc]=Y(null),[yZ,Kc]=Y(null),[pl,Jc]=Y(null),[tu,u0]=Y(null),[eu,d0]=Y(!1),[Mn,Xd]=Y(null),[sv,f0]=Y({}),[nn,p0]=Y(null);let qa=-1,iu=-1;const wn=[],nv=5;function rv(s){if(s===void 0)return;const t=Date.now();if(qa>=0&&s>qa){const e=t-iu;if(e>0){wn.push(e),wn.length>nv&&wn.shift();const i=wn.reduce((n,r)=>n+r,0)/wn.length;u0(Math.round(i))}}qa=s,iu=t}function ov(){qa=-1,iu=-1,wn.length=0,u0(null)}async function Ns(s){Bd()&&(s={...s,url:ih()}),xi(`connecting to ${s.url} (auth: ${s.auth})`),bn("connecting"),Fa(null);try{let t;if(s.auth==="guest")t=new BS,d0(!0);else if(s.auth==="password"){if(!s.email||!s.password)throw new Error("Email and password are required");t=new DS({email:s.email,password:s.password})}else{if(!s.token)throw new Error("Token is required");t=new ZS({token:s.token})}const e=new IS({url:s.url,auth:t,storage:s.storage??new zS("screeps-client"),debug:!1,serverPassword:s.serverPassword});e.http.on("http:tokenRefresh",({token:i})=>{xi("token refreshed"),ta(Ue.token,i)}),e.http.on("http:error",({method:i,path:n,error:r})=>{xi("http error:",i,n,r.message),jt(`Request failed: ${i} ${n} — ${r.message}`,"error",6e3)}),e.stores.server.on("server:disconnected",i=>{xi(`server disconnected (willReconnect: ${i.willReconnect})`),i.willReconnect||(bn("idle"),Va(null),Hc(null),Kc(null))}),e.stores.server.on("server:error",i=>{xi("server error:",i.error.message),Fa(i.error.message),bn("error")}),e.stores.user.on("user:me",i=>{xi(`user: ${i.username} (id: ${i._id})`),Hc(i)}),e.stores.server.on("server:version",i=>{xi(`server version: ${i.package??"unknown"}`),Kc(i)}),e.stores.user.on("user:stream",i=>{if(i&&typeof i=="object"&&"flags"in i){const n=i.flags;n&&typeof n=="object"&&f0(n)}}),e.stores.user.on("user:worldStatus",({status:i})=>{xi(`world status: ${i}`),p0(i)}),await e.connect(),e.stores.user.subscribeUserStream(),Va(e),bn("connected"),xi(`connected to ${s.url}`),e.stores.server.worldInfo().then(i=>{Xd(i),xi(`world: ${i.width}x${i.height} x[${i.minX},${i.maxX}] y[${i.minY},${i.maxY}]`)}).catch(()=>{}),ta(Ue.url,s.url),e.http.token&&ta(Ue.token,e.http.token),s.serverPassword?ta(Ue.serverPassword,s.serverPassword):jr(Ue.serverPassword)}catch(t){const e=t instanceof Error?t.message:String(t);throw Fa(e),bn("error"),Va(null),t}}async function av(){const s=Bd()?ih():Mh(Ue.url),t=Mh(Ue.token);if(!s||!t)return;const e=Mh(Ue.serverPassword)??void 0;try{t==="guest"?await Ns({url:s,auth:"guest",storage:null,serverPassword:e}):await Ns({url:s,auth:"token",token:t,serverPassword:e})}catch{jr(Ue.token)}}function lv(){const s=St();s&&s.disconnect(),Va(null),bn("idle"),Fa(null),Hc(null),Kc(null),Jc(null),d0(!1),Xd(null),f0({}),p0(null),ov(),jr(Ue.token),jr(Ue.url),jr(Ue.serverPassword)}var hv=W("<span style=font-size:11px>"),cv=W('<div style="color:#3fb950;font-size:14px;text-align:center;padding:8px 0">Account created! Logging you in…'),uv=W("<label style=display:flex;flex-direction:column;gap:4px><div style=display:flex;align-items:baseline;gap:8px><span style=font-size:12px;color:#8b949e>Username</span></div><input type=text name=username autocomplete=username>"),dv=W("<label style=display:flex;flex-direction:column;gap:4px><div style=display:flex;align-items:baseline;gap:8px><span style=font-size:12px;color:#8b949e>Email</span></div><input type=email name=email autocomplete=email>"),fv=W("<label style=display:flex;flex-direction:column;gap:4px><span style=font-size:12px;color:#8b949e>Password</span><input type=password name=new-password autocomplete=new-password>"),pv=W("<span style=font-size:11px;color:#f85149>Passwords don't match"),gv=W("<label style=display:flex;flex-direction:column;gap:4px><div style=display:flex;align-items:baseline;gap:8px><span style=font-size:12px;color:#8b949e>Confirm Password</span></div><input type=password name=confirm-password autocomplete=new-password>"),mv=W("<button type=submit style=padding:10px;border-radius:6px;border:none;background:#238636;color:#fff;font-weight:600>"),Ov=W('<button type=button style="padding:8px;border-radius:6px;border:1px solid #30363d;background:transparent;color:#8b949e;font-size:12px;cursor:pointer">Back to Login'),yv=W("<form style=display:flex;flex-direction:column;gap:16px><h2 style=margin:0;font-size:20px>Create Account"),g0=W("<div style=color:#f85149;font-size:13px>"),xv=W('<div style="width:360px;padding:16px 20px;border-radius:8px;background:#161b22;border:1px solid #30363d;color:#c9d1d9;font-size:13px;line-height:1.6">'),bv=W("<button type=button style=background:none;border:none;color:#58a6ff;font-size:12px;cursor:pointer;padding:0>Create account"),wv=W('<div style=display:flex;gap:8px><button type=button style="flex:1;padding:8px;border-radius:6px;border:1px solid #30363d;color:#fff;cursor:pointer">Password</button><button type=button style="flex:1;padding:8px;border-radius:6px;border:1px solid #30363d;color:#fff;cursor:pointer">Token'),Sv=W("<label style=display:flex;flex-direction:column;gap:4px><span style=font-size:12px;color:#8b949e>Server URL</span><input type=url name=url autocomplete=url inputmode=url>"),vv=W("<div style=color:#8b949e;font-size:12px;margin-top:-8px>"),_v=W("<div style=display:flex;align-items:center;gap:8px;color:#484f58;font-size:12px><div style=flex:1;height:1px;background:#30363d></div>or<div style=flex:1;height:1px;background:#30363d>"),kv=W("<button type=button style=padding:10px;border-radius:6px;border:none;background:#1b2838;color:#c7d5e0;font-weight:600>Login with Steam"),$v=W('<button type=button style="padding:8px;border-radius:6px;border:1px solid #30363d;background:transparent;color:#8b949e;font-size:12px">Connect as Guest (read-only)'),Cv=W('<form style=display:flex;flex-direction:column;gap:16px><div style=display:flex;align-items:baseline;justify-content:space-between><h2 style=margin:0;font-size:20px>Connect to Screeps</h2></div><label style=display:flex;flex-direction:column;gap:4px><span style=font-size:12px;color:#8b949e>Server Password <span style=color:#484f58>(optional)</span></span><input type=password name=server-password autocomplete=off data-1p-ignore data-lpignore=true placeholder="Leave empty if not required"></label><button type=submit style=padding:10px;border-radius:6px;border:none;background:#238636;color:#fff;font-weight:600>'),Pv=W('<div style="width:360px;padding:12px 20px;border-radius:8px;background:#161b22;border:1px solid #30363d"><div style=font-size:11px;color:#484f58;margin-bottom:8px;text-transform:uppercase;letter-spacing:0.05em>Server Mods</div><div style=display:flex;flex-wrap:wrap;gap:6px>'),Tv=W('<div style="display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;width:100%;height:100%;overflow:auto;padding:24px 0;box-sizing:border-box"><div style="display:flex;flex-direction:column;gap:16px;width:360px;padding:32px;border-radius:8px;background:#161b22;border:1px solid #30363d">'),Mv=W("<label style=display:flex;flex-direction:column;gap:4px><span style=font-size:12px;color:#8b949e>Email or Username</span><input type=text id=username name=username autocomplete=username>"),Av=W("<label style=display:flex;flex-direction:column;gap:4px><span style=font-size:12px;color:#8b949e>Password</span><input type=password id=password name=password autocomplete=current-password>"),Qv=W("<label style=display:flex;flex-direction:column;gap:4px><span style=font-size:12px;color:#8b949e>Auth Token</span><input type=password name=token autocomplete=off>"),Rv=W('<span style="font-size:11px;padding:2px 8px;border-radius:12px;background:#21262d;border:1px solid #30363d;color:#8b949e;font-family:monospace">');const Ni={padding:"8px 12px","border-radius":"6px",border:"1px solid #30363d",background:"#0d1117",color:"#c9d1d9"};function Ev(s){const[t,e]=Y(null),[i,n]=Y(null),[r,o]=Y(null);return gt(()=>{const a=s();e(null),n(null),o(null);let l=!1;const h=setTimeout(async()=>{try{const c=await GS(a);if(l)return;if(e(c),o(null),c0(c)){const u=await YS(a);l||n(u)}}catch{l||(o("Could not reach server"),e(null))}},400);de(()=>{l=!0,clearTimeout(h)})}),{serverVersion:t,authModInfo:i,serverError:r}}function cp(s,t,e){const[i,n]=Y("idle");return gt(()=>{const r=t();if(!r){n("idle");return}n("checking");let o=!1;const a=setTimeout(async()=>{try{const l=await e(s(),r);o||n(l.error?"taken":"available")}catch{o||n("error")}},500);de(()=>{o=!0,clearTimeout(a)})}),i}function up(s){const t={idle:null,checking:{text:"Checking…",color:"#8b949e"},available:{text:"✓ Available",color:"#3fb950"},taken:{text:"✗ Already taken",color:"#f85149"},error:{text:"Could not verify",color:"#d29922"}},e=()=>t[s.state];return G(ot,{get when(){return e()},get children(){var i=hv();return L(i,()=>e().text),J(n=>tt(i,"color",e().color)),i}})}function Lv(s){const[t,e]=Y(""),[i,n]=Y(""),[r,o]=Y(""),[a,l]=Y(""),[h,c]=Y(!1),[u,d]=Y(null),[f,p]=Y(!1),g=cp(()=>s.url,t,NS),m=cp(()=>s.url,i,VS),O=()=>a()!==""&&r()!==a(),x=()=>!h()&&t()!==""&&i()!==""&&r().length>=4&&r()===a()&&g()==="available"&&m()==="available",b=async v=>{if(v.preventDefault(),!!x()){c(!0),d(null);try{const w=await FS(s.url,t(),i(),r());if(w.error){d(w.error);return}p(!0),setTimeout(()=>s.onSuccess(i(),r()),1500)}catch(w){d(w instanceof Error?w.message:"Registration failed")}finally{c(!1)}}};return(()=>{var v=yv();return v.firstChild,v.addEventListener("submit",b),L(v,G(ot,{get when(){return f()},get children(){return cv()}}),null),L(v,G(ot,{get when(){return!f()},get children(){return[(()=>{var w=uv(),S=w.firstChild;S.firstChild;var y=S.nextSibling;return L(S,G(up,{get state(){return g()}}),null),y.$$input=_=>e(_.currentTarget.value),J(_=>{var k=Ni,P=h();return _.e=se(y,k,_.e),P!==_.t&&(y.disabled=_.t=P),_},{e:void 0,t:void 0}),J(()=>y.value=t()),w})(),(()=>{var w=dv(),S=w.firstChild;S.firstChild;var y=S.nextSibling;return L(S,G(up,{get state(){return m()}}),null),y.$$input=_=>n(_.currentTarget.value),J(_=>{var k=Ni,P=h();return _.e=se(y,k,_.e),P!==_.t&&(y.disabled=_.t=P),_},{e:void 0,t:void 0}),J(()=>y.value=i()),w})(),(()=>{var w=fv(),S=w.firstChild,y=S.nextSibling;return y.$$input=_=>o(_.currentTarget.value),J(_=>{var k=Ni,P=h();return _.e=se(y,k,_.e),P!==_.t&&(y.disabled=_.t=P),_},{e:void 0,t:void 0}),J(()=>y.value=r()),w})(),(()=>{var w=gv(),S=w.firstChild;S.firstChild;var y=S.nextSibling;return L(S,G(ot,{get when(){return O()},get children(){return pv()}}),null),y.$$input=_=>l(_.currentTarget.value),J(_=>{var k={...Ni,border:O()?"1px solid #f85149":"1px solid #30363d"},P=h();return _.e=se(y,k,_.e),P!==_.t&&(y.disabled=_.t=P),_},{e:void 0,t:void 0}),J(()=>y.value=a()),w})(),Bt(()=>Bt(()=>!!u())()&&(()=>{var w=g0();return L(w,u),w})()),(()=>{var w=mv();return L(w,()=>h()?"Creating account…":"Create Account"),J(S=>{var y=!x(),_=x()?"pointer":"not-allowed",k=x()?1:.5;return y!==S.e&&(w.disabled=S.e=y),_!==S.t&&tt(w,"cursor",S.t=_),k!==S.a&&tt(w,"opacity",S.a=k),S},{e:void 0,t:void 0,a:void 0}),w})(),(()=>{var w=Ov();return w.$$click=()=>s.onCancel(),w})()]}}),null),v})()}function Iv(){const s=Bd(),t=ev(),[e,i]=Y("login"),[n,r]=Y("password"),[o,a]=Y(s?ih():"http://localhost:21025"),[l,h]=Y(""),[c,u]=Y(""),[d,f]=Y(""),[p,g]=Y(""),{serverVersion:m,authModInfo:O,serverError:x}=Ev(o),b=()=>{var $,A;return((A=($=m())==null?void 0:$.serverData)==null?void 0:A.welcomeText)??null},v=()=>{var $,A;return(((A=($=m())==null?void 0:$.serverData)==null?void 0:A.features)??[]).filter(C=>C.name!=="auth"&&C.version!=null)},w=()=>{var A,C;const $=m();return $?((C=(A=c0($))==null?void 0:A.authTypes)==null?void 0:C.includes("steam"))??!0:!0},S=()=>{var $;return(($=O())==null?void 0:$.allowRegistration)===!0},y=()=>{const $=o().replace(/\/$/,""),A=window.open(`${$}/api/auth/steam`,"screeps-steam-auth","width=800,height=600,left=200,top=100"),C=I=>{try{const V=JSON.parse(I.data);V.token&&(E(),Ns({url:$,auth:"token",token:V.token,serverPassword:p()||void 0,storage:null}))}catch{}},B=setInterval(()=>{A!=null&&A.closed&&E()},500),E=()=>{clearInterval(B),window.removeEventListener("message",C)};window.addEventListener("message",C),de(E)},_=async $=>{$.preventDefault(),await Ns({url:o(),auth:n(),email:l()||void 0,password:c()||void 0,token:d()||void 0,serverPassword:p()||void 0,storage:null})},k=async $=>{$.preventDefault(),await Ns({url:o(),auth:"guest",serverPassword:p()||void 0,storage:null})},P=async($,A)=>{try{await Ns({url:o(),auth:"password",email:$,password:A,serverPassword:p()||void 0,storage:null})}catch{i("login"),r("password"),h($),u(A)}},T=()=>Hs()==="connecting";return(()=>{var $=Tv(),A=$.firstChild;return L($,G(ot,{get when(){return b()},get children(){var C=xv();return J(()=>C.innerHTML=b()),C}}),A),L(A,G(ot,{get when(){return e()==="register"},get children(){return G(Lv,{get url(){return o()},get serverPassword(){return p()},onSuccess:P,onCancel:()=>i("login")})}}),null),L(A,G(ot,{get when(){return e()==="login"},get children(){var C=Cv(),B=C.firstChild;B.firstChild;var E=B.nextSibling,I=E.firstChild,V=I.firstChild;V.nextSibling;var Z=I.nextSibling,N=E.nextSibling;return C.addEventListener("submit",_),L(B,G(ot,{get when(){return S()},get children(){var z=bv();return z.$$click=()=>i("register"),z}}),null),L(C,G(ot,{when:!s,get children(){var z=wv(),X=z.firstChild,H=X.nextSibling;return X.$$click=()=>r("password"),H.$$click=()=>r("token"),J(K=>{var it=n()==="password"?"#238636":"transparent",Ot=n()==="token"?"#238636":"transparent";return it!==K.e&&tt(X,"background",K.e=it),Ot!==K.t&&tt(H,"background",K.t=Ot),K},{e:void 0,t:void 0}),z}}),E),L(C,G(ot,{when:!s,get children(){return[(()=>{var z=Sv(),X=z.firstChild,H=X.nextSibling;return H.$$input=K=>a(K.currentTarget.value),J(K=>se(H,Ni,K)),J(()=>H.value=o()),z})(),G(ot,{get when(){return x()},get children(){var z=vv();return L(z,x),z}})]}}),E),L(C,(()=>{var z=Bt(()=>n()==="password");return()=>z()?[(()=>{var X=Mv(),H=X.firstChild,K=H.nextSibling;return K.$$input=it=>h(it.currentTarget.value),J(it=>se(K,Ni,it)),J(()=>K.value=l()),X})(),(()=>{var X=Av(),H=X.firstChild,K=H.nextSibling;return K.$$input=it=>u(it.currentTarget.value),J(it=>se(K,Ni,it)),J(()=>K.value=c()),X})()]:(()=>{var X=Qv(),H=X.firstChild,K=H.nextSibling;return K.$$input=it=>f(it.currentTarget.value),J(it=>se(K,Ni,it)),J(()=>K.value=d()),X})()})(),E),Z.$$input=z=>g(z.currentTarget.value),L(C,(()=>{var z=Bt(()=>!!hp());return()=>z()&&(()=>{var X=g0();return L(X,hp),X})()})(),N),L(N,()=>T()?"Connecting…":"Connect"),L(C,G(ot,{get when(){return w()},get children(){return[(()=>{var z=_v(),X=z.firstChild,H=X.nextSibling;return H.nextSibling,z})(),(()=>{var z=kv();return z.$$click=y,J(X=>{var H=T(),K=T()?"not-allowed":"pointer",it=T()?.6:1;return H!==X.e&&(z.disabled=X.e=H),K!==X.t&&tt(z,"cursor",X.t=K),it!==X.a&&tt(z,"opacity",X.a=it),X},{e:void 0,t:void 0,a:void 0}),z})()]}}),null),L(C,G(ot,{when:!s||t,get children(){var z=$v();return z.addEventListener("mouseleave",X=>{X.currentTarget.style.borderColor="#30363d"}),z.addEventListener("mouseenter",X=>{T()||(X.currentTarget.style.borderColor="#8b949e")}),z.$$click=k,J(X=>{var H=T(),K=T()?"not-allowed":"pointer",it=T()?.6:1;return H!==X.e&&(z.disabled=X.e=H),K!==X.t&&tt(z,"cursor",X.t=K),it!==X.a&&tt(z,"opacity",X.a=it),X},{e:void 0,t:void 0,a:void 0}),z}}),null),J(z=>{var X=Ni,H=T(),K=T()?"not-allowed":"pointer",it=T()?.6:1;return z.e=se(Z,X,z.e),H!==z.t&&(N.disabled=z.t=H),K!==z.a&&tt(N,"cursor",z.a=K),it!==z.o&&tt(N,"opacity",z.o=it),z},{e:void 0,t:void 0,a:void 0,o:void 0}),J(()=>Z.value=p()),C}}),null),L($,G(ot,{get when(){return v().length>0},get children(){var C=Pv(),B=C.firstChild,E=B.nextSibling;return L(E,G(oe,{get each(){return v()},children:I=>(()=>{var V=Rv();return L(V,()=>I.name,null),L(V,(()=>{var Z=Bt(()=>!!I.version);return()=>Z()?` ${I.version}`:""})(),null),V})()})),C}}),null),$})()}Ne(["input","click"]);var Zv=W('<span style="padding:2px 8px;border-radius:4px;background:#21262d;border:1px solid #30363d;color:#8b949e;font-size:11px;font-weight:600;letter-spacing:0.05em;text-transform:uppercase">Guest'),Dv=W('<div style="display:flex;align-items:center;gap:12px;padding:8px 16px;border-bottom:1px solid #30363d;font-size:13px"><div style=display:flex;align-items:center;gap:6px><span style=width:8px;height:8px;border-radius:50%;display:inline-block></span><span style=color:#8b949e>');function Bv(){const s=()=>{switch(Hs()){case"connected":return"#238636";case"connecting":return"#d29922";case"error":return"#f85149";default:return"#8b949e"}};return(()=>{var t=Dv(),e=t.firstChild,i=e.firstChild,n=i.nextSibling;return L(n,(()=>{var r=Bt(()=>Hs()==="connected");return()=>r()?"Online":Hs()})()),L(t,G(ot,{get when(){return eu()},get children(){return Zv()}}),null),J(r=>tt(i,"background-color",s())),t})()}const Xv="modulepreload",zv=function(s){return"/"+s},dp={},Ur=function(t,e,i){let n=Promise.resolve();if(e&&e.length>0){let o=function(h){return Promise.all(h.map(c=>Promise.resolve(c).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));n=o(e.map(h=>{if(h=zv(h),h in dp)return;dp[h]=!0;const c=h.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${h}"]${u}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":Xv,c||(d.as="script"),d.crossOrigin="",d.href=h,l&&d.setAttribute("nonce",l),document.head.appendChild(d),c)return new Promise((f,p)=>{d.addEventListener("load",f),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${h}`)))})}))}function r(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return n.then(o=>{for(const a of o||[])a.status==="rejected"&&r(a.reason);return t().catch(r)})};var lt=(s=>(s.Application="application",s.WebGLPipes="webgl-pipes",s.WebGLPipesAdaptor="webgl-pipes-adaptor",s.WebGLSystem="webgl-system",s.WebGPUPipes="webgpu-pipes",s.WebGPUPipesAdaptor="webgpu-pipes-adaptor",s.WebGPUSystem="webgpu-system",s.CanvasSystem="canvas-system",s.CanvasPipesAdaptor="canvas-pipes-adaptor",s.CanvasPipes="canvas-pipes",s.Asset="asset",s.LoadParser="load-parser",s.ResolveParser="resolve-parser",s.CacheParser="cache-parser",s.DetectionParser="detection-parser",s.MaskEffect="mask-effect",s.BlendMode="blend-mode",s.TextureSource="texture-source",s.Environment="environment",s.ShapeBuilder="shape-builder",s.Batcher="batcher",s))(lt||{});const su=s=>{if(typeof s=="function"||typeof s=="object"&&s.extension){if(!s.extension)throw new Error("Extension class must have an extension object");s={...typeof s.extension!="object"?{type:s.extension}:s.extension,ref:s}}if(typeof s=="object")s={...s};else throw new Error("Invalid extension type");return typeof s.type=="string"&&(s.type=[s.type]),s},ea=(s,t)=>su(s).priority??t,Vt={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...s){return s.map(su).forEach(t=>{t.type.forEach(e=>{var i,n;return(n=(i=this._removeHandlers)[e])==null?void 0:n.call(i,t)})}),this},add(...s){return s.map(su).forEach(t=>{t.type.forEach(e=>{var r,o;const i=this._addHandlers,n=this._queue;i[e]?(o=i[e])==null||o.call(i,t):(n[e]=n[e]||[],(r=n[e])==null||r.push(t))})}),this},handle(s,t,e){var o;const i=this._addHandlers,n=this._removeHandlers;if(i[s]||n[s])throw new Error(`Extension type ${s} already has a handler`);i[s]=t,n[s]=e;const r=this._queue;return r[s]&&((o=r[s])==null||o.forEach(a=>t(a)),delete r[s]),this},handleByMap(s,t){return this.handle(s,e=>{e.name&&(t[e.name]=e.ref)},e=>{e.name&&delete t[e.name]})},handleByNamedList(s,t,e=-1){return this.handle(s,i=>{t.findIndex(r=>r.name===i.name)>=0||(t.push({name:i.name,value:i.ref}),t.sort((r,o)=>ea(o.value,e)-ea(r.value,e)))},i=>{const n=t.findIndex(r=>r.name===i.name);n!==-1&&t.splice(n,1)})},handleByList(s,t,e=-1){return this.handle(s,i=>{t.includes(i.ref)||(t.push(i.ref),t.sort((n,r)=>ea(r,e)-ea(n,e)))},i=>{const n=t.indexOf(i.ref);n!==-1&&t.splice(n,1)})},mixin(s,...t){for(const e of t)Object.defineProperties(s.prototype,Object.getOwnPropertyDescriptors(e))}},Wv={extension:{type:lt.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Ur(()=>import("./browserAll-DRs0HlcT.js"),__vite__mapDeps([0,1,2,3]))}},Gv={extension:{type:lt.Environment,name:"webworker",priority:0},test:()=>typeof self<"u"&&self.WorkerGlobalScope!==void 0,load:async()=>{await Ur(()=>import("./webworkerAll-Bs2LlyVn.js"),__vite__mapDeps([1,2,3]))}};class he{constructor(t,e,i){this._x=e||0,this._y=i||0,this._observer=t}clone(t){return new he(t??this._observer,this._x,this._y)}set(t=0,e=t){return(this._x!==t||this._y!==e)&&(this._x=t,this._y=e,this._observer._onUpdate(this)),this}copyFrom(t){return(this._x!==t.x||this._y!==t.y)&&(this._x=t.x,this._y=t.y,this._observer._onUpdate(this)),this}copyTo(t){return t.set(this._x,this._y),t}equals(t){return t.x===this._x&&t.y===this._y}toString(){return`[pixi.js/math:ObservablePoint x=${this._x} y=${this._y} scope=${this._observer}]`}get x(){return this._x}set x(t){this._x!==t&&(this._x=t,this._observer._onUpdate(this))}get y(){return this._y}set y(t){this._y!==t&&(this._y=t,this._observer._onUpdate(this))}}function m0(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Ah={exports:{}},fp;function Yv(){return fp||(fp=1,(function(s){var t=Object.prototype.hasOwnProperty,e="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(e=!1));function n(l,h,c){this.fn=l,this.context=h,this.once=c||!1}function r(l,h,c,u,d){if(typeof c!="function")throw new TypeError("The listener must be a function");var f=new n(c,u||l,d),p=e?e+h:h;return l._events[p]?l._events[p].fn?l._events[p]=[l._events[p],f]:l._events[p].push(f):(l._events[p]=f,l._eventsCount++),l}function o(l,h){--l._eventsCount===0?l._events=new i:delete l._events[h]}function a(){this._events=new i,this._eventsCount=0}a.prototype.eventNames=function(){var h=[],c,u;if(this._eventsCount===0)return h;for(u in c=this._events)t.call(c,u)&&h.push(e?u.slice(1):u);return Object.getOwnPropertySymbols?h.concat(Object.getOwnPropertySymbols(c)):h},a.prototype.listeners=function(h){var c=e?e+h:h,u=this._events[c];if(!u)return[];if(u.fn)return[u.fn];for(var d=0,f=u.length,p=new Array(f);d<f;d++)p[d]=u[d].fn;return p},a.prototype.listenerCount=function(h){var c=e?e+h:h,u=this._events[c];return u?u.fn?1:u.length:0},a.prototype.emit=function(h,c,u,d,f,p){var g=e?e+h:h;if(!this._events[g])return!1;var m=this._events[g],O=arguments.length,x,b;if(m.fn){switch(m.once&&this.removeListener(h,m.fn,void 0,!0),O){case 1:return m.fn.call(m.context),!0;case 2:return m.fn.call(m.context,c),!0;case 3:return m.fn.call(m.context,c,u),!0;case 4:return m.fn.call(m.context,c,u,d),!0;case 5:return m.fn.call(m.context,c,u,d,f),!0;case 6:return m.fn.call(m.context,c,u,d,f,p),!0}for(b=1,x=new Array(O-1);b<O;b++)x[b-1]=arguments[b];m.fn.apply(m.context,x)}else{var v=m.length,w;for(b=0;b<v;b++)switch(m[b].once&&this.removeListener(h,m[b].fn,void 0,!0),O){case 1:m[b].fn.call(m[b].context);break;case 2:m[b].fn.call(m[b].context,c);break;case 3:m[b].fn.call(m[b].context,c,u);break;case 4:m[b].fn.call(m[b].context,c,u,d);break;default:if(!x)for(w=1,x=new Array(O-1);w<O;w++)x[w-1]=arguments[w];m[b].fn.apply(m[b].context,x)}}return!0},a.prototype.on=function(h,c,u){return r(this,h,c,u,!1)},a.prototype.once=function(h,c,u){return r(this,h,c,u,!0)},a.prototype.removeListener=function(h,c,u,d){var f=e?e+h:h;if(!this._events[f])return this;if(!c)return o(this,f),this;var p=this._events[f];if(p.fn)p.fn===c&&(!d||p.once)&&(!u||p.context===u)&&o(this,f);else{for(var g=0,m=[],O=p.length;g<O;g++)(p[g].fn!==c||d&&!p[g].once||u&&p[g].context!==u)&&m.push(p[g]);m.length?this._events[f]=m.length===1?m[0]:m:o(this,f)}return this},a.prototype.removeAllListeners=function(h){var c;return h?(c=e?e+h:h,this._events[c]&&o(this,c)):(this._events=new i,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=e,a.EventEmitter=a,s.exports=a})(Ah)),Ah.exports}var Nv=Yv();const Li=m0(Nv),Vv=Math.PI*2,Fv=180/Math.PI,qv=Math.PI/180;class Gt{constructor(t=0,e=0){this.x=0,this.y=0,this.x=t,this.y=e}clone(){return new Gt(this.x,this.y)}copyFrom(t){return this.set(t.x,t.y),this}copyTo(t){return t.set(this.x,this.y),t}equals(t){return t.x===this.x&&t.y===this.y}set(t=0,e=t){return this.x=t,this.y=e,this}toString(){return`[pixi.js/math:Point x=${this.x} y=${this.y}]`}static get shared(){return Qh.x=0,Qh.y=0,Qh}}const Qh=new Gt;class ft{constructor(t=1,e=0,i=0,n=1,r=0,o=0){this.array=null,this.a=t,this.b=e,this.c=i,this.d=n,this.tx=r,this.ty=o}fromArray(t){this.a=t[0],this.b=t[1],this.c=t[3],this.d=t[4],this.tx=t[2],this.ty=t[5]}set(t,e,i,n,r,o){return this.a=t,this.b=e,this.c=i,this.d=n,this.tx=r,this.ty=o,this}toArray(t,e){this.array||(this.array=new Float32Array(9));const i=e||this.array;return t?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i}apply(t,e){e=e||new Gt;const i=t.x,n=t.y;return e.x=this.a*i+this.c*n+this.tx,e.y=this.b*i+this.d*n+this.ty,e}applyInverse(t,e){e=e||new Gt;const i=this.a,n=this.b,r=this.c,o=this.d,a=this.tx,l=this.ty,h=1/(i*o+r*-n),c=t.x,u=t.y;return e.x=o*h*c+-r*h*u+(l*r-a*o)*h,e.y=i*h*u+-n*h*c+(-l*i+a*n)*h,e}translate(t,e){return this.tx+=t,this.ty+=e,this}scale(t,e){return this.a*=t,this.d*=e,this.c*=t,this.b*=e,this.tx*=t,this.ty*=e,this}rotate(t){const e=Math.cos(t),i=Math.sin(t),n=this.a,r=this.c,o=this.tx;return this.a=n*e-this.b*i,this.b=n*i+this.b*e,this.c=r*e-this.d*i,this.d=r*i+this.d*e,this.tx=o*e-this.ty*i,this.ty=o*i+this.ty*e,this}append(t){const e=this.a,i=this.b,n=this.c,r=this.d;return this.a=t.a*e+t.b*n,this.b=t.a*i+t.b*r,this.c=t.c*e+t.d*n,this.d=t.c*i+t.d*r,this.tx=t.tx*e+t.ty*n+this.tx,this.ty=t.tx*i+t.ty*r+this.ty,this}appendFrom(t,e){const i=t.a,n=t.b,r=t.c,o=t.d,a=t.tx,l=t.ty,h=e.a,c=e.b,u=e.c,d=e.d;return this.a=i*h+n*u,this.b=i*c+n*d,this.c=r*h+o*u,this.d=r*c+o*d,this.tx=a*h+l*u+e.tx,this.ty=a*c+l*d+e.ty,this}setTransform(t,e,i,n,r,o,a,l,h){return this.a=Math.cos(a+h)*r,this.b=Math.sin(a+h)*r,this.c=-Math.sin(a-l)*o,this.d=Math.cos(a-l)*o,this.tx=t-(i*this.a+n*this.c),this.ty=e-(i*this.b+n*this.d),this}prepend(t){const e=this.tx;if(t.a!==1||t.b!==0||t.c!==0||t.d!==1){const i=this.a,n=this.c;this.a=i*t.a+this.b*t.c,this.b=i*t.b+this.b*t.d,this.c=n*t.a+this.d*t.c,this.d=n*t.b+this.d*t.d}return this.tx=e*t.a+this.ty*t.c+t.tx,this.ty=e*t.b+this.ty*t.d+t.ty,this}decompose(t){const e=this.a,i=this.b,n=this.c,r=this.d,o=t.pivot,a=-Math.atan2(-n,r),l=Math.atan2(i,e),h=Math.abs(a+l);return h<1e-5||Math.abs(Vv-h)<1e-5?(t.rotation=l,t.skew.x=t.skew.y=0):(t.rotation=0,t.skew.x=a,t.skew.y=l),t.scale.x=Math.sqrt(e*e+i*i),t.scale.y=Math.sqrt(n*n+r*r),t.position.x=this.tx+(o.x*e+o.y*n),t.position.y=this.ty+(o.x*i+o.y*r),t}invert(){const t=this.a,e=this.b,i=this.c,n=this.d,r=this.tx,o=t*n-e*i;return this.a=n/o,this.b=-e/o,this.c=-i/o,this.d=t/o,this.tx=(i*this.ty-n*r)/o,this.ty=-(t*this.ty-e*r)/o,this}isIdentity(){return this.a===1&&this.b===0&&this.c===0&&this.d===1&&this.tx===0&&this.ty===0}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const t=new ft;return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyTo(t){return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyFrom(t){return this.a=t.a,this.b=t.b,this.c=t.c,this.d=t.d,this.tx=t.tx,this.ty=t.ty,this}equals(t){return t.a===this.a&&t.b===this.b&&t.c===this.c&&t.d===this.d&&t.tx===this.tx&&t.ty===this.ty}toString(){return`[pixi.js:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`}static get IDENTITY(){return Uv.identity()}static get shared(){return jv.identity()}}const jv=new ft,Uv=new ft,Ls=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],Is=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],Zs=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],Ds=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],nu=[],O0=[],ia=Math.sign;function Hv(){for(let s=0;s<16;s++){const t=[];nu.push(t);for(let e=0;e<16;e++){const i=ia(Ls[s]*Ls[e]+Zs[s]*Is[e]),n=ia(Is[s]*Ls[e]+Ds[s]*Is[e]),r=ia(Ls[s]*Zs[e]+Zs[s]*Ds[e]),o=ia(Is[s]*Zs[e]+Ds[s]*Ds[e]);for(let a=0;a<16;a++)if(Ls[a]===i&&Is[a]===n&&Zs[a]===r&&Ds[a]===o){t.push(a);break}}}for(let s=0;s<16;s++){const t=new ft;t.set(Ls[s],Is[s],Zs[s],Ds[s],0,0),O0.push(t)}}Hv();const _t={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:s=>Ls[s],uY:s=>Is[s],vX:s=>Zs[s],vY:s=>Ds[s],inv:s=>s&8?s&15:-s&7,add:(s,t)=>nu[s][t],sub:(s,t)=>nu[s][_t.inv(t)],rotate180:s=>s^4,isVertical:s=>(s&3)===2,byDirection:(s,t)=>Math.abs(s)*2<=Math.abs(t)?t>=0?_t.S:_t.N:Math.abs(t)*2<=Math.abs(s)?s>0?_t.E:_t.W:t>0?s>0?_t.SE:_t.SW:s>0?_t.NE:_t.NW,matrixAppendRotationInv:(s,t,e=0,i=0,n=0,r=0)=>{const o=O0[_t.inv(t)],a=o.a,l=o.b,h=o.c,c=o.d,u=e-Math.min(0,a*n,h*r,a*n+h*r),d=i-Math.min(0,l*n,c*r,l*n+c*r),f=s.a,p=s.b,g=s.c,m=s.d;s.a=a*f+l*g,s.b=a*p+l*m,s.c=h*f+c*g,s.d=h*p+c*m,s.tx=u*f+d*g+s.tx,s.ty=u*p+d*m+s.ty},transformRectCoords:(s,t,e,i)=>{const{x:n,y:r,width:o,height:a}=s,{x:l,y:h,width:c,height:u}=t;return e===_t.E?(i.set(n+l,r+h,o,a),i):e===_t.S?i.set(c-r-a+l,n+h,a,o):e===_t.W?i.set(c-n-o+l,u-r-a+h,o,a):e===_t.N?i.set(r+l,u-n-o+h,a,o):i.set(n+l,r+h,o,a)}},sa=[new Gt,new Gt,new Gt,new Gt];class Zt{constructor(t=0,e=0,i=0,n=0){this.type="rectangle",this.x=Number(t),this.y=Number(e),this.width=Number(i),this.height=Number(n)}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}isEmpty(){return this.left===this.right||this.top===this.bottom}static get EMPTY(){return new Zt(0,0,0,0)}clone(){return new Zt(this.x,this.y,this.width,this.height)}copyFromBounds(t){return this.x=t.minX,this.y=t.minY,this.width=t.maxX-t.minX,this.height=t.maxY-t.minY,this}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.copyFrom(this),t}contains(t,e){return this.width<=0||this.height<=0?!1:t>=this.x&&t<this.x+this.width&&e>=this.y&&e<this.y+this.height}strokeContains(t,e,i,n=.5){const{width:r,height:o}=this;if(r<=0||o<=0)return!1;const a=this.x,l=this.y,h=i*(1-n),c=i-h,u=a-h,d=a+r+h,f=l-h,p=l+o+h,g=a+c,m=a+r-c,O=l+c,x=l+o-c;return t>=u&&t<=d&&e>=f&&e<=p&&!(t>g&&t<m&&e>O&&e<x)}intersects(t,e){if(!e){const _=this.x<t.x?t.x:this.x;if((this.right>t.right?t.right:this.right)<=_)return!1;const P=this.y<t.y?t.y:this.y;return(this.bottom>t.bottom?t.bottom:this.bottom)>P}const i=this.left,n=this.right,r=this.top,o=this.bottom;if(n<=i||o<=r)return!1;const a=sa[0].set(t.left,t.top),l=sa[1].set(t.left,t.bottom),h=sa[2].set(t.right,t.top),c=sa[3].set(t.right,t.bottom);if(h.x<=a.x||l.y<=a.y)return!1;const u=Math.sign(e.a*e.d-e.b*e.c);if(u===0||(e.apply(a,a),e.apply(l,l),e.apply(h,h),e.apply(c,c),Math.max(a.x,l.x,h.x,c.x)<=i||Math.min(a.x,l.x,h.x,c.x)>=n||Math.max(a.y,l.y,h.y,c.y)<=r||Math.min(a.y,l.y,h.y,c.y)>=o))return!1;const d=u*(l.y-a.y),f=u*(a.x-l.x),p=d*i+f*r,g=d*n+f*r,m=d*i+f*o,O=d*n+f*o;if(Math.max(p,g,m,O)<=d*a.x+f*a.y||Math.min(p,g,m,O)>=d*c.x+f*c.y)return!1;const x=u*(a.y-h.y),b=u*(h.x-a.x),v=x*i+b*r,w=x*n+b*r,S=x*i+b*o,y=x*n+b*o;return!(Math.max(v,w,S,y)<=x*a.x+b*a.y||Math.min(v,w,S,y)>=x*c.x+b*c.y)}pad(t=0,e=t){return this.x-=t,this.y-=e,this.width+=t*2,this.height+=e*2,this}fit(t){const e=Math.max(this.x,t.x),i=Math.min(this.x+this.width,t.x+t.width),n=Math.max(this.y,t.y),r=Math.min(this.y+this.height,t.y+t.height);return this.x=e,this.width=Math.max(i-e,0),this.y=n,this.height=Math.max(r-n,0),this}ceil(t=1,e=.001){const i=Math.ceil((this.x+this.width-e)*t)/t,n=Math.ceil((this.y+this.height-e)*t)/t;return this.x=Math.floor((this.x+e)*t)/t,this.y=Math.floor((this.y+e)*t)/t,this.width=i-this.x,this.height=n-this.y,this}scale(t,e=t){return this.x*=t,this.y*=e,this.width*=t,this.height*=e,this}enlarge(t){const e=Math.min(this.x,t.x),i=Math.max(this.x+this.width,t.x+t.width),n=Math.min(this.y,t.y),r=Math.max(this.y+this.height,t.y+t.height);return this.x=e,this.width=i-e,this.y=n,this.height=r-n,this}getBounds(t){return t||(t=new Zt),t.copyFrom(this),t}containsRect(t){if(this.width<=0||this.height<=0)return!1;const e=t.x,i=t.y,n=t.x+t.width,r=t.y+t.height;return e>=this.x&&e<this.x+this.width&&i>=this.y&&i<this.y+this.height&&n>=this.x&&n<this.x+this.width&&r>=this.y&&r<this.y+this.height}set(t,e,i,n){return this.x=t,this.y=e,this.width=i,this.height=n,this}toString(){return`[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}const Rh={default:-1};function Dt(s="default"){return Rh[s]===void 0&&(Rh[s]=-1),++Rh[s]}const pp=new Set,It="8.0.0",Kv="8.3.4",An={quiet:!1,noColor:!1},xt=((s,t,e=3)=>{if(An.quiet||pp.has(t))return;let i=new Error().stack;const n=`${t}
|
|
3
|
+
Deprecated since v${s}`,r=typeof console.groupCollapsed=="function"&&!An.noColor;typeof i>"u"?console.warn("PixiJS Deprecation Warning: ",n):(i=i.split(`
|
|
4
|
+
`).splice(e).join(`
|
|
5
|
+
`),r?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",n),console.warn(i),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",n),console.warn(i))),pp.add(t)});Object.defineProperties(xt,{quiet:{get:()=>An.quiet,set:s=>{An.quiet=s},enumerable:!0,configurable:!1},noColor:{get:()=>An.noColor,set:s=>{An.noColor=s},enumerable:!0,configurable:!1}});const y0=()=>{};function Jn(s){return s+=s===0?1:0,--s,s|=s>>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s+1}function gp(s){return!(s&s-1)&&!!s}function x0(s){const t={};for(const e in s)s[e]!==void 0&&(t[e]=s[e]);return t}const mp=Object.create(null);function Jv(s){const t=mp[s];return t===void 0&&(mp[s]=Dt("resource")),t}const b0=class w0 extends Li{constructor(t={}){super(),this._resourceType="textureSampler",this._touched=0,this._maxAnisotropy=1,this.destroyed=!1,t={...w0.defaultOptions,...t},this.addressMode=t.addressMode,this.addressModeU=t.addressModeU??this.addressModeU,this.addressModeV=t.addressModeV??this.addressModeV,this.addressModeW=t.addressModeW??this.addressModeW,this.scaleMode=t.scaleMode,this.magFilter=t.magFilter??this.magFilter,this.minFilter=t.minFilter??this.minFilter,this.mipmapFilter=t.mipmapFilter??this.mipmapFilter,this.lodMinClamp=t.lodMinClamp,this.lodMaxClamp=t.lodMaxClamp,this.compare=t.compare,this.maxAnisotropy=t.maxAnisotropy??1}set addressMode(t){this.addressModeU=t,this.addressModeV=t,this.addressModeW=t}get addressMode(){return this.addressModeU}set wrapMode(t){xt(It,"TextureStyle.wrapMode is now TextureStyle.addressMode"),this.addressMode=t}get wrapMode(){return this.addressMode}set scaleMode(t){this.magFilter=t,this.minFilter=t,this.mipmapFilter=t}get scaleMode(){return this.magFilter}set maxAnisotropy(t){this._maxAnisotropy=Math.min(t,16),this._maxAnisotropy>1&&(this.scaleMode="linear")}get maxAnisotropy(){return this._maxAnisotropy}get _resourceId(){return this._sharedResourceId||this._generateResourceId()}update(){this._sharedResourceId=null,this.emit("change",this)}_generateResourceId(){const t=`${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;return this._sharedResourceId=Jv(t),this._resourceId}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this.removeAllListeners()}};b0.defaultOptions={addressMode:"clamp-to-edge",scaleMode:"linear"};let tr=b0;const S0=class v0 extends Li{constructor(t={}){super(),this.options=t,this._gpuData=Object.create(null),this._gcLastUsed=-1,this.uid=Dt("textureSource"),this._resourceType="textureSource",this._resourceId=Dt("resource"),this.uploadMethodId="unknown",this._resolution=1,this.pixelWidth=1,this.pixelHeight=1,this.width=1,this.height=1,this.sampleCount=1,this.mipLevelCount=1,this.autoGenerateMipmaps=!1,this.format="rgba8unorm",this.dimension="2d",this.viewDimension="2d",this.arrayLayerCount=1,this.antialias=!1,this._touched=0,this._batchTick=-1,this._textureBindLocation=-1,t={...v0.defaultOptions,...t},this.label=t.label??"",this.resource=t.resource,this.autoGarbageCollect=t.autoGarbageCollect,this._resolution=t.resolution,t.width?this.pixelWidth=t.width*this._resolution:this.pixelWidth=this.resource?this.resourceWidth??1:1,t.height?this.pixelHeight=t.height*this._resolution:this.pixelHeight=this.resource?this.resourceHeight??1:1,this.width=this.pixelWidth/this._resolution,this.height=this.pixelHeight/this._resolution,this.format=t.format,this.dimension=t.dimensions,this.viewDimension=t.viewDimension??t.dimensions,this.arrayLayerCount=t.arrayLayerCount,this.mipLevelCount=t.mipLevelCount,this.autoGenerateMipmaps=t.autoGenerateMipmaps,this.sampleCount=t.sampleCount,this.antialias=t.antialias,this.alphaMode=t.alphaMode,this.style=new tr(x0(t)),this.destroyed=!1,this._refreshPOT()}get source(){return this}get style(){return this._style}set style(t){var e,i;this.style!==t&&((e=this._style)==null||e.off("change",this._onStyleChange,this),this._style=t,(i=this._style)==null||i.on("change",this._onStyleChange,this),this._onStyleChange())}set maxAnisotropy(t){this._style.maxAnisotropy=t}get maxAnisotropy(){return this._style.maxAnisotropy}get addressMode(){return this._style.addressMode}set addressMode(t){this._style.addressMode=t}get repeatMode(){return this._style.addressMode}set repeatMode(t){this._style.addressMode=t}get magFilter(){return this._style.magFilter}set magFilter(t){this._style.magFilter=t}get minFilter(){return this._style.minFilter}set minFilter(t){this._style.minFilter=t}get mipmapFilter(){return this._style.mipmapFilter}set mipmapFilter(t){this._style.mipmapFilter=t}get lodMinClamp(){return this._style.lodMinClamp}set lodMinClamp(t){this._style.lodMinClamp=t}get lodMaxClamp(){return this._style.lodMaxClamp}set lodMaxClamp(t){this._style.lodMaxClamp=t}_onStyleChange(){this.emit("styleChange",this)}update(){if(this.resource){const t=this._resolution;if(this.resize(this.resourceWidth/t,this.resourceHeight/t))return}this.emit("update",this)}destroy(){this.destroyed=!0,this.unload(),this.emit("destroy",this),this._style&&(this._style.destroy(),this._style=null),this.uploadMethodId=null,this.resource=null,this.removeAllListeners()}unload(){var t,e;this._resourceId=Dt("resource"),this.emit("change",this),this.emit("unload",this);for(const i in this._gpuData)(e=(t=this._gpuData[i])==null?void 0:t.destroy)==null||e.call(t);this._gpuData=Object.create(null)}get resourceWidth(){const{resource:t}=this;return t.naturalWidth||t.videoWidth||t.displayWidth||t.width}get resourceHeight(){const{resource:t}=this;return t.naturalHeight||t.videoHeight||t.displayHeight||t.height}get resolution(){return this._resolution}set resolution(t){this._resolution!==t&&(this._resolution=t,this.width=this.pixelWidth/t,this.height=this.pixelHeight/t)}resize(t,e,i){i||(i=this._resolution),t||(t=this.width),e||(e=this.height);const n=Math.round(t*i),r=Math.round(e*i);return this.width=n/i,this.height=r/i,this._resolution=i,this.pixelWidth===n&&this.pixelHeight===r?!1:(this._refreshPOT(),this.pixelWidth=n,this.pixelHeight=r,this.emit("resize",this),this._resourceId=Dt("resource"),this.emit("change",this),!0)}updateMipmaps(){this.autoGenerateMipmaps&&this.mipLevelCount>1&&this.emit("updateMipmaps",this)}set wrapMode(t){this._style.wrapMode=t}get wrapMode(){return this._style.wrapMode}set scaleMode(t){this._style.scaleMode=t}get scaleMode(){return this._style.scaleMode}_refreshPOT(){this.isPowerOfTwo=gp(this.pixelWidth)&&gp(this.pixelHeight)}static test(t){throw new Error("Unimplemented")}};S0.defaultOptions={resolution:1,format:"bgra8unorm",alphaMode:"premultiply-alpha-on-upload",dimensions:"2d",viewDimension:"2d",arrayLayerCount:1,mipLevelCount:1,autoGenerateMipmaps:!1,sampleCount:1,antialias:!1,autoGarbageCollect:!1};let ni=S0;class zd extends ni{constructor(t){const e=t.resource||new Float32Array(t.width*t.height*4);let i=t.format;i||(e instanceof Float32Array?i="rgba32float":e instanceof Int32Array||e instanceof Uint32Array?i="rgba32uint":e instanceof Int16Array||e instanceof Uint16Array?i="rgba16uint":(e instanceof Int8Array,i="bgra8unorm")),super({...t,resource:e,format:i}),this.uploadMethodId="buffer"}static test(t){return t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array}}zd.extension=lt.TextureSource;const Op=new ft;class t_{constructor(t,e){this.mapCoord=new ft,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._updateID=0,this.clampOffset=0,typeof e>"u"?this.clampMargin=t.width<10?0:.5:this.clampMargin=e,this.isSimple=!1,this.texture=t}get texture(){return this._texture}set texture(t){var e;this._texture!==t&&((e=this._texture)==null||e.removeListener("update",this.update,this),this._texture=t,this._texture.addListener("update",this.update,this)),this.update()}multiplyUvs(t,e){e===void 0&&(e=t);const i=this.mapCoord;for(let n=0;n<t.length;n+=2){const r=t[n],o=t[n+1];e[n]=r*i.a+o*i.c+i.tx,e[n+1]=r*i.b+o*i.d+i.ty}return e}update(){const t=this._texture;this._updateID++;const e=t.uvs;this.mapCoord.set(e.x1-e.x0,e.y1-e.y0,e.x3-e.x0,e.y3-e.y0,e.x0,e.y0);const i=t.orig,n=t.trim;n&&(Op.set(i.width/n.width,0,0,i.height/n.height,-n.x/n.width,-n.y/n.height),this.mapCoord.append(Op));const r=t.source,o=this.uClampFrame,a=this.clampMargin/r._resolution,l=this.clampOffset/r._resolution;return o[0]=(t.frame.x+a+l)/r.width,o[1]=(t.frame.y+a+l)/r.height,o[2]=(t.frame.x+t.frame.width-a+l)/r.width,o[3]=(t.frame.y+t.frame.height-a+l)/r.height,this.uClampOffset[0]=this.clampOffset/r.pixelWidth,this.uClampOffset[1]=this.clampOffset/r.pixelHeight,this.isSimple=t.frame.width===r.width&&t.frame.height===r.height&&t.rotate===0,!0}}class bt extends Li{constructor({source:t,label:e,frame:i,orig:n,trim:r,defaultAnchor:o,defaultBorders:a,rotate:l,dynamic:h}={}){if(super(),this.uid=Dt("texture"),this.uvs={x0:0,y0:0,x1:0,y1:0,x2:0,y2:0,x3:0,y3:0},this.frame=new Zt,this.noFrame=!1,this.dynamic=!1,this.isTexture=!0,this.label=e,this.source=(t==null?void 0:t.source)??new ni,this.noFrame=!i,i)this.frame.copyFrom(i);else{const{width:c,height:u}=this._source;this.frame.width=c,this.frame.height=u}this.orig=n||this.frame,this.trim=r,this.rotate=l??0,this.defaultAnchor=o,this.defaultBorders=a,this.destroyed=!1,this.dynamic=h||!1,this.updateUvs()}set source(t){this._source&&this._source.off("resize",this.update,this),this._source=t,t.on("resize",this.update,this),this.emit("update",this)}get source(){return this._source}get textureMatrix(){return this._textureMatrix||(this._textureMatrix=new t_(this)),this._textureMatrix}get width(){return this.orig.width}get height(){return this.orig.height}updateUvs(){const{uvs:t,frame:e}=this,{width:i,height:n}=this._source,r=e.x/i,o=e.y/n,a=e.width/i,l=e.height/n;let h=this.rotate;if(h){const c=a/2,u=l/2,d=r+c,f=o+u;h=_t.add(h,_t.NW),t.x0=d+c*_t.uX(h),t.y0=f+u*_t.uY(h),h=_t.add(h,2),t.x1=d+c*_t.uX(h),t.y1=f+u*_t.uY(h),h=_t.add(h,2),t.x2=d+c*_t.uX(h),t.y2=f+u*_t.uY(h),h=_t.add(h,2),t.x3=d+c*_t.uX(h),t.y3=f+u*_t.uY(h)}else t.x0=r,t.y0=o,t.x1=r+a,t.y1=o,t.x2=r+a,t.y2=o+l,t.x3=r,t.y3=o+l}destroy(t=!1){this._source&&(this._source.off("resize",this.update,this),t&&(this._source.destroy(),this._source=null)),this._textureMatrix=null,this.destroyed=!0,this.emit("destroy",this),this.removeAllListeners()}update(){this.noFrame&&(this.frame.width=this._source.width,this.frame.height=this._source.height),this.updateUvs(),this.emit("update",this)}get baseTexture(){return xt(It,"Texture.baseTexture is now Texture.source"),this._source}}bt.EMPTY=new bt({label:"EMPTY",source:new ni({label:"EMPTY"})});bt.EMPTY.destroy=y0;bt.WHITE=new bt({source:new zd({resource:new Uint8Array([255,255,255,255]),width:1,height:1,alphaMode:"premultiply-alpha-on-upload",label:"WHITE"}),label:"WHITE"});bt.WHITE.destroy=y0;function _0(s,t,e){const{width:i,height:n}=e.orig,r=e.trim;if(r){const o=r.width,a=r.height;s.minX=r.x-t._x*i,s.maxX=s.minX+o,s.minY=r.y-t._y*n,s.maxY=s.minY+a}else s.minX=-t._x*i,s.maxX=s.minX+i,s.minY=-t._y*n,s.maxY=s.minY+n}const yp=new ft;class si{constructor(t=1/0,e=1/0,i=-1/0,n=-1/0){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=yp,this.minX=t,this.minY=e,this.maxX=i,this.maxY=n}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}get rectangle(){this._rectangle||(this._rectangle=new Zt);const t=this._rectangle;return this.minX>this.maxX||this.minY>this.maxY?(t.x=0,t.y=0,t.width=0,t.height=0):t.copyFromBounds(this),t}clear(){return this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=yp,this}set(t,e,i,n){this.minX=t,this.minY=e,this.maxX=i,this.maxY=n}addFrame(t,e,i,n,r){r||(r=this.matrix);const o=r.a,a=r.b,l=r.c,h=r.d,c=r.tx,u=r.ty;let d=this.minX,f=this.minY,p=this.maxX,g=this.maxY,m=o*t+l*e+c,O=a*t+h*e+u;m<d&&(d=m),O<f&&(f=O),m>p&&(p=m),O>g&&(g=O),m=o*i+l*e+c,O=a*i+h*e+u,m<d&&(d=m),O<f&&(f=O),m>p&&(p=m),O>g&&(g=O),m=o*t+l*n+c,O=a*t+h*n+u,m<d&&(d=m),O<f&&(f=O),m>p&&(p=m),O>g&&(g=O),m=o*i+l*n+c,O=a*i+h*n+u,m<d&&(d=m),O<f&&(f=O),m>p&&(p=m),O>g&&(g=O),this.minX=d,this.minY=f,this.maxX=p,this.maxY=g}addRect(t,e){this.addFrame(t.x,t.y,t.x+t.width,t.y+t.height,e)}addBounds(t,e){this.addFrame(t.minX,t.minY,t.maxX,t.maxY,e)}addBoundsMask(t){this.minX=this.minX>t.minX?this.minX:t.minX,this.minY=this.minY>t.minY?this.minY:t.minY,this.maxX=this.maxX<t.maxX?this.maxX:t.maxX,this.maxY=this.maxY<t.maxY?this.maxY:t.maxY}applyMatrix(t){const e=this.minX,i=this.minY,n=this.maxX,r=this.maxY,{a:o,b:a,c:l,d:h,tx:c,ty:u}=t;let d=o*e+l*i+c,f=a*e+h*i+u;this.minX=d,this.minY=f,this.maxX=d,this.maxY=f,d=o*n+l*i+c,f=a*n+h*i+u,this.minX=d<this.minX?d:this.minX,this.minY=f<this.minY?f:this.minY,this.maxX=d>this.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=o*e+l*r+c,f=a*e+h*r+u,this.minX=d<this.minX?d:this.minX,this.minY=f<this.minY?f:this.minY,this.maxX=d>this.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=o*n+l*r+c,f=a*n+h*r+u,this.minX=d<this.minX?d:this.minX,this.minY=f<this.minY?f:this.minY,this.maxX=d>this.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY}fit(t){return this.minX<t.left&&(this.minX=t.left),this.maxX>t.right&&(this.maxX=t.right),this.minY<t.top&&(this.minY=t.top),this.maxY>t.bottom&&(this.maxY=t.bottom),this}fitBounds(t,e,i,n){return this.minX<t&&(this.minX=t),this.maxX>e&&(this.maxX=e),this.minY<i&&(this.minY=i),this.maxY>n&&(this.maxY=n),this}pad(t,e=t){return this.minX-=t,this.maxX+=t,this.minY-=e,this.maxY+=e,this}ceil(){return this.minX=Math.floor(this.minX),this.minY=Math.floor(this.minY),this.maxX=Math.ceil(this.maxX),this.maxY=Math.ceil(this.maxY),this}clone(){return new si(this.minX,this.minY,this.maxX,this.maxY)}scale(t,e=t){return this.minX*=t,this.minY*=e,this.maxX*=t,this.maxY*=e,this}get x(){return this.minX}set x(t){const e=this.maxX-this.minX;this.minX=t,this.maxX=t+e}get y(){return this.minY}set y(t){const e=this.maxY-this.minY;this.minY=t,this.maxY=t+e}get width(){return this.maxX-this.minX}set width(t){this.maxX=this.minX+t}get height(){return this.maxY-this.minY}set height(t){this.maxY=this.minY+t}get left(){return this.minX}get right(){return this.maxX}get top(){return this.minY}get bottom(){return this.maxY}get isPositive(){return this.maxX-this.minX>0&&this.maxY-this.minY>0}get isValid(){return this.minX+this.minY!==1/0}addVertexData(t,e,i,n){let r=this.minX,o=this.minY,a=this.maxX,l=this.maxY;n||(n=this.matrix);const h=n.a,c=n.b,u=n.c,d=n.d,f=n.tx,p=n.ty;for(let g=e;g<i;g+=2){const m=t[g],O=t[g+1],x=h*m+u*O+f,b=c*m+d*O+p;r=x<r?x:r,o=b<o?b:o,a=x>a?x:a,l=b>l?b:l}this.minX=r,this.minY=o,this.maxX=a,this.maxY=l}containsPoint(t,e){return this.minX<=t&&this.minY<=e&&this.maxX>=t&&this.maxY>=e}toString(){return`[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`}copyFrom(t){return this.minX=t.minX,this.minY=t.minY,this.maxX=t.maxX,this.maxY=t.maxY,this}}var e_={grad:.9,turn:360,rad:360/(2*Math.PI)},Bi=function(s){return typeof s=="string"?s.length>0:typeof s=="number"},ie=function(s,t,e){return t===void 0&&(t=0),e===void 0&&(e=Math.pow(10,t)),Math.round(e*s)/e+0},He=function(s,t,e){return t===void 0&&(t=0),e===void 0&&(e=1),s>e?e:s>t?s:t},k0=function(s){return(s=isFinite(s)?s%360:0)>0?s:s+360},xp=function(s){return{r:He(s.r,0,255),g:He(s.g,0,255),b:He(s.b,0,255),a:He(s.a)}},Eh=function(s){return{r:ie(s.r),g:ie(s.g),b:ie(s.b),a:ie(s.a,3)}},i_=/^#([0-9a-f]{3,8})$/i,na=function(s){var t=s.toString(16);return t.length<2?"0"+t:t},$0=function(s){var t=s.r,e=s.g,i=s.b,n=s.a,r=Math.max(t,e,i),o=r-Math.min(t,e,i),a=o?r===t?(e-i)/o:r===e?2+(i-t)/o:4+(t-e)/o:0;return{h:60*(a<0?a+6:a),s:r?o/r*100:0,v:r/255*100,a:n}},C0=function(s){var t=s.h,e=s.s,i=s.v,n=s.a;t=t/360*6,e/=100,i/=100;var r=Math.floor(t),o=i*(1-e),a=i*(1-(t-r)*e),l=i*(1-(1-t+r)*e),h=r%6;return{r:255*[i,a,o,o,l,i][h],g:255*[l,i,i,a,o,o][h],b:255*[o,o,l,i,i,a][h],a:n}},bp=function(s){return{h:k0(s.h),s:He(s.s,0,100),l:He(s.l,0,100),a:He(s.a)}},wp=function(s){return{h:ie(s.h),s:ie(s.s),l:ie(s.l),a:ie(s.a,3)}},Sp=function(s){return C0((e=(t=s).s,{h:t.h,s:(e*=((i=t.l)<50?i:100-i)/100)>0?2*e/(i+e)*100:0,v:i+e,a:t.a}));var t,e,i},Hr=function(s){return{h:(t=$0(s)).h,s:(n=(200-(e=t.s))*(i=t.v)/100)>0&&n<200?e*i/100/(n<=100?n:200-n)*100:0,l:n/2,a:t.a};var t,e,i,n},s_=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,n_=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,r_=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,o_=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ru={string:[[function(s){var t=i_.exec(s);return t?(s=t[1]).length<=4?{r:parseInt(s[0]+s[0],16),g:parseInt(s[1]+s[1],16),b:parseInt(s[2]+s[2],16),a:s.length===4?ie(parseInt(s[3]+s[3],16)/255,2):1}:s.length===6||s.length===8?{r:parseInt(s.substr(0,2),16),g:parseInt(s.substr(2,2),16),b:parseInt(s.substr(4,2),16),a:s.length===8?ie(parseInt(s.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(s){var t=r_.exec(s)||o_.exec(s);return t?t[2]!==t[4]||t[4]!==t[6]?null:xp({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(s){var t=s_.exec(s)||n_.exec(s);if(!t)return null;var e,i,n=bp({h:(e=t[1],i=t[2],i===void 0&&(i="deg"),Number(e)*(e_[i]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return Sp(n)},"hsl"]],object:[[function(s){var t=s.r,e=s.g,i=s.b,n=s.a,r=n===void 0?1:n;return Bi(t)&&Bi(e)&&Bi(i)?xp({r:Number(t),g:Number(e),b:Number(i),a:Number(r)}):null},"rgb"],[function(s){var t=s.h,e=s.s,i=s.l,n=s.a,r=n===void 0?1:n;if(!Bi(t)||!Bi(e)||!Bi(i))return null;var o=bp({h:Number(t),s:Number(e),l:Number(i),a:Number(r)});return Sp(o)},"hsl"],[function(s){var t=s.h,e=s.s,i=s.v,n=s.a,r=n===void 0?1:n;if(!Bi(t)||!Bi(e)||!Bi(i))return null;var o=(function(a){return{h:k0(a.h),s:He(a.s,0,100),v:He(a.v,0,100),a:He(a.a)}})({h:Number(t),s:Number(e),v:Number(i),a:Number(r)});return C0(o)},"hsv"]]},vp=function(s,t){for(var e=0;e<t.length;e++){var i=t[e][0](s);if(i)return[i,t[e][1]]}return[null,void 0]},a_=function(s){return typeof s=="string"?vp(s.trim(),ru.string):typeof s=="object"&&s!==null?vp(s,ru.object):[null,void 0]},Lh=function(s,t){var e=Hr(s);return{h:e.h,s:He(e.s+100*t,0,100),l:e.l,a:e.a}},Ih=function(s){return(299*s.r+587*s.g+114*s.b)/1e3/255},_p=function(s,t){var e=Hr(s);return{h:e.h,s:e.s,l:He(e.l+100*t,0,100),a:e.a}},ou=(function(){function s(t){this.parsed=a_(t)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return s.prototype.isValid=function(){return this.parsed!==null},s.prototype.brightness=function(){return ie(Ih(this.rgba),2)},s.prototype.isDark=function(){return Ih(this.rgba)<.5},s.prototype.isLight=function(){return Ih(this.rgba)>=.5},s.prototype.toHex=function(){return t=Eh(this.rgba),e=t.r,i=t.g,n=t.b,o=(r=t.a)<1?na(ie(255*r)):"","#"+na(e)+na(i)+na(n)+o;var t,e,i,n,r,o},s.prototype.toRgb=function(){return Eh(this.rgba)},s.prototype.toRgbString=function(){return t=Eh(this.rgba),e=t.r,i=t.g,n=t.b,(r=t.a)<1?"rgba("+e+", "+i+", "+n+", "+r+")":"rgb("+e+", "+i+", "+n+")";var t,e,i,n,r},s.prototype.toHsl=function(){return wp(Hr(this.rgba))},s.prototype.toHslString=function(){return t=wp(Hr(this.rgba)),e=t.h,i=t.s,n=t.l,(r=t.a)<1?"hsla("+e+", "+i+"%, "+n+"%, "+r+")":"hsl("+e+", "+i+"%, "+n+"%)";var t,e,i,n,r},s.prototype.toHsv=function(){return t=$0(this.rgba),{h:ie(t.h),s:ie(t.s),v:ie(t.v),a:ie(t.a,3)};var t},s.prototype.invert=function(){return vi({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},s.prototype.saturate=function(t){return t===void 0&&(t=.1),vi(Lh(this.rgba,t))},s.prototype.desaturate=function(t){return t===void 0&&(t=.1),vi(Lh(this.rgba,-t))},s.prototype.grayscale=function(){return vi(Lh(this.rgba,-1))},s.prototype.lighten=function(t){return t===void 0&&(t=.1),vi(_p(this.rgba,t))},s.prototype.darken=function(t){return t===void 0&&(t=.1),vi(_p(this.rgba,-t))},s.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},s.prototype.alpha=function(t){return typeof t=="number"?vi({r:(e=this.rgba).r,g:e.g,b:e.b,a:t}):ie(this.rgba.a,3);var e},s.prototype.hue=function(t){var e=Hr(this.rgba);return typeof t=="number"?vi({h:t,s:e.s,l:e.l,a:e.a}):ie(e.h)},s.prototype.isEqual=function(t){return this.toHex()===vi(t).toHex()},s})(),vi=function(s){return s instanceof ou?s:new ou(s)},kp=[],l_=function(s){s.forEach(function(t){kp.indexOf(t)<0&&(t(ou,ru),kp.push(t))})};function h_(s,t){var e={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},i={};for(var n in e)i[e[n]]=n;var r={};s.prototype.toName=function(o){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var a,l,h=i[this.toHex()];if(h)return h;if(o!=null&&o.closest){var c=this.toRgb(),u=1/0,d="black";if(!r.length)for(var f in e)r[f]=new s(e[f]).toRgb();for(var p in e){var g=(a=c,l=r[p],Math.pow(a.r-l.r,2)+Math.pow(a.g-l.g,2)+Math.pow(a.b-l.b,2));g<u&&(u=g,d=p)}return d}},t.string.push([function(o){var a=o.toLowerCase(),l=a==="transparent"?"#0000":e[a];return l?new s(l).toRgb():null},"name"])}l_([h_]);const er=class Xr{constructor(t=16777215){this._value=null,this._components=new Float32Array(4),this._components.fill(1),this._int=16777215,this.value=t}get red(){return this._components[0]}get green(){return this._components[1]}get blue(){return this._components[2]}get alpha(){return this._components[3]}setValue(t){return this.value=t,this}set value(t){if(t instanceof Xr)this._value=this._cloneSource(t._value),this._int=t._int,this._components.set(t._components);else{if(t===null)throw new Error("Cannot set Color#value to null");(this._value===null||!this._isSourceEqual(this._value,t))&&(this._value=this._cloneSource(t),this._normalize(this._value))}}get value(){return this._value}_cloneSource(t){return typeof t=="string"||typeof t=="number"||t instanceof Number||t===null?t:Array.isArray(t)||ArrayBuffer.isView(t)?t.slice(0):typeof t=="object"&&t!==null?{...t}:t}_isSourceEqual(t,e){const i=typeof t;if(i!==typeof e)return!1;if(i==="number"||i==="string"||t instanceof Number)return t===e;if(Array.isArray(t)&&Array.isArray(e)||ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return t.length!==e.length?!1:t.every((r,o)=>r===e[o]);if(t!==null&&e!==null){const r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(a=>t[a]===e[a])}return t===e}toRgba(){const[t,e,i,n]=this._components;return{r:t,g:e,b:i,a:n}}toRgb(){const[t,e,i]=this._components;return{r:t,g:e,b:i}}toRgbaString(){const[t,e,i]=this.toUint8RgbArray();return`rgba(${t},${e},${i},${this.alpha})`}toUint8RgbArray(t){const[e,i,n]=this._components;return this._arrayRgb||(this._arrayRgb=[]),t||(t=this._arrayRgb),t[0]=Math.round(e*255),t[1]=Math.round(i*255),t[2]=Math.round(n*255),t}toArray(t){this._arrayRgba||(this._arrayRgba=[]),t||(t=this._arrayRgba);const[e,i,n,r]=this._components;return t[0]=e,t[1]=i,t[2]=n,t[3]=r,t}toRgbArray(t){this._arrayRgb||(this._arrayRgb=[]),t||(t=this._arrayRgb);const[e,i,n]=this._components;return t[0]=e,t[1]=i,t[2]=n,t}toNumber(){return this._int}toBgrNumber(){const[t,e,i]=this.toUint8RgbArray();return(i<<16)+(e<<8)+t}toLittleEndianNumber(){const t=this._int;return(t>>16)+(t&65280)+((t&255)<<16)}multiply(t){const[e,i,n,r]=Xr._temp.setValue(t)._components;return this._components[0]*=e,this._components[1]*=i,this._components[2]*=n,this._components[3]*=r,this._refreshInt(),this._value=null,this}premultiply(t,e=!0){return e&&(this._components[0]*=t,this._components[1]*=t,this._components[2]*=t),this._components[3]=t,this._refreshInt(),this._value=null,this}toPremultiplied(t,e=!0){if(t===1)return(255<<24)+this._int;if(t===0)return e?0:this._int;let i=this._int>>16&255,n=this._int>>8&255,r=this._int&255;return e&&(i=i*t+.5|0,n=n*t+.5|0,r=r*t+.5|0),(t*255<<24)+(i<<16)+(n<<8)+r}toHex(){const t=this._int.toString(16);return`#${"000000".substring(0,6-t.length)+t}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(t){return this._components[3]=this._clamp(t),this._value=null,this}_normalize(t){let e,i,n,r;if((typeof t=="number"||t instanceof Number)&&t>=0&&t<=16777215){const o=t;e=(o>>16&255)/255,i=(o>>8&255)/255,n=(o&255)/255,r=1}else if((Array.isArray(t)||t instanceof Float32Array)&&t.length>=3&&t.length<=4)t=this._clamp(t),[e,i,n,r=1]=t;else if((t instanceof Uint8Array||t instanceof Uint8ClampedArray)&&t.length>=3&&t.length<=4)t=this._clamp(t,0,255),[e,i,n,r=255]=t,e/=255,i/=255,n/=255,r/=255;else if(typeof t=="string"||typeof t=="object"){if(typeof t=="string"){const a=Xr.HEX_PATTERN.exec(t);a&&(t=`#${a[2]}`)}const o=vi(t);o.isValid()&&({r:e,g:i,b:n,a:r}=o.rgba,e/=255,i/=255,n/=255)}if(e!==void 0)this._components[0]=e,this._components[1]=i,this._components[2]=n,this._components[3]=r,this._refreshInt();else throw new Error(`Unable to convert color ${t}`)}_refreshInt(){this._clamp(this._components);const[t,e,i]=this._components;this._int=(t*255<<16)+(e*255<<8)+(i*255|0)}_clamp(t,e=0,i=1){return typeof t=="number"?Math.min(Math.max(t,e),i):(t.forEach((n,r)=>{t[r]=Math.min(Math.max(n,e),i)}),t)}static isColorLike(t){return typeof t=="number"||typeof t=="string"||t instanceof Number||t instanceof Xr||Array.isArray(t)||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Float32Array||t.r!==void 0&&t.g!==void 0&&t.b!==void 0||t.r!==void 0&&t.g!==void 0&&t.b!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0&&t.a!==void 0}};er.shared=new er;er._temp=new er;er.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Jt=er;const c_={cullArea:null,cullable:!1,cullableChildren:!0};let Zh=0;const $p=500;function ve(...s){Zh!==$p&&(Zh++,Zh===$p?console.warn("PixiJS Warning: too many warnings, no more warnings will be reported to the console by PixiJS."):console.warn("PixiJS Warning: ",...s))}const zo={_registeredResources:new Set,register(s){this._registeredResources.add(s)},unregister(s){this._registeredResources.delete(s)},release(){this._registeredResources.forEach(s=>s.clear())},get registeredCount(){return this._registeredResources.size},isRegistered(s){return this._registeredResources.has(s)},reset(){this._registeredResources.clear()}};class u_{constructor(t,e){this._pool=[],this._count=0,this._index=0,this._classType=t,e&&this.prepopulate(e)}prepopulate(t){for(let e=0;e<t;e++)this._pool[this._index++]=new this._classType;this._count+=t}get(t){var i;let e;return this._index>0?e=this._pool[--this._index]:(e=new this._classType,this._count++),(i=e.init)==null||i.call(e,t),e}return(t){var e;(e=t.reset)==null||e.call(t),this._pool[this._index++]=t}get totalSize(){return this._count}get totalFree(){return this._index}get totalUsed(){return this._count-this._index}clear(){if(this._pool.length>0&&this._pool[0].destroy)for(let t=0;t<this._index;t++)this._pool[t].destroy();this._pool.length=0,this._count=0,this._index=0}}class d_{constructor(){this._poolsByClass=new Map}prepopulate(t,e){this.getPool(t).prepopulate(e)}get(t,e){return this.getPool(t).get(e)}return(t){this.getPool(t.constructor).return(t)}getPool(t){return this._poolsByClass.has(t)||this._poolsByClass.set(t,new u_(t)),this._poolsByClass.get(t)}stats(){const t={};return this._poolsByClass.forEach(e=>{const i=t[e._classType.name]?e._classType.name+e._classType.ID:e._classType.name;t[i]={free:e.totalFree,used:e.totalUsed,size:e.totalSize}}),t}clear(){this._poolsByClass.forEach(t=>t.clear()),this._poolsByClass.clear()}}const Le=new d_;zo.register(Le);const f_={get isCachedAsTexture(){var s;return!!((s=this.renderGroup)!=null&&s.isCachedAsTexture)},cacheAsTexture(s){typeof s=="boolean"&&s===!1?this.disableRenderGroup():(this.enableRenderGroup(),this.renderGroup.enableCacheAsTexture(s===!0?{}:s))},updateCacheTexture(){var s;(s=this.renderGroup)==null||s.updateCacheTexture()},get cacheAsBitmap(){return this.isCachedAsTexture},set cacheAsBitmap(s){xt("v8.6.0","cacheAsBitmap is deprecated, use cacheAsTexture instead."),this.cacheAsTexture(s)}};function p_(s,t,e){const i=s.length;let n;if(t>=i||e===0)return;e=t+e>i?i-t:e;const r=i-e;for(n=t;n<r;++n)s[n]=s[n+e];s.length=r}const g_={allowChildren:!0,removeChildren(s=0,t){var r;const e=t??this.children.length,i=e-s,n=[];if(i>0&&i<=e){for(let a=e-1;a>=s;a--){const l=this.children[a];l&&(n.push(l),l.parent=null)}p_(this.children,s,e);const o=this.renderGroup||this.parentRenderGroup;o&&o.removeChildren(n);for(let a=0;a<n.length;++a){const l=n[a];(r=l.parentRenderLayer)==null||r.detach(l),this.emit("childRemoved",l,this,a),n[a].emit("removed",this)}return n.length>0&&this._didViewChangeTick++,n}else if(i===0&&this.children.length===0)return n;throw new RangeError("removeChildren: numeric values are outside the acceptable range.")},removeChildAt(s){const t=this.getChildAt(s);return this.removeChild(t)},getChildAt(s){if(s<0||s>=this.children.length)throw new Error(`getChildAt: Index (${s}) does not exist.`);return this.children[s]},setChildIndex(s,t){if(t<0||t>=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);this.getChildIndex(s),this.addChildAt(s,t)},getChildIndex(s){const t=this.children.indexOf(s);if(t===-1)throw new Error("The supplied Container must be a child of the caller");return t},addChildAt(s,t){this.allowChildren||xt(It,"addChildAt: Only Containers will be allowed to add children in v8.0.0");const{children:e}=this;if(t<0||t>e.length)throw new Error(`${s}addChildAt: The index ${t} supplied is out of bounds ${e.length}`);const i=s.parent===this;if(s.parent){const r=s.parent.children.indexOf(s);if(i){if(r===t)return s;s.parent.children.splice(r,1)}else s.removeFromParent()}t===e.length?e.push(s):e.splice(t,0,s),s.parent=this,s.didChange=!0,s._updateFlags=15;const n=this.renderGroup||this.parentRenderGroup;return n&&n.addChild(s),this.sortableChildren&&(this.sortDirty=!0),i||(this.emit("childAdded",s,this,t),s.emit("added",this)),s},swapChildren(s,t){if(s===t)return;const e=this.getChildIndex(s),i=this.getChildIndex(t);this.children[e]=t,this.children[i]=s;const n=this.renderGroup||this.parentRenderGroup;n&&(n.structureDidChange=!0),this._didContainerChangeTick++},removeFromParent(){var s;(s=this.parent)==null||s.removeChild(this)},reparentChild(...s){return s.length===1?this.reparentChildAt(s[0],this.children.length):(s.forEach(t=>this.reparentChildAt(t,this.children.length)),s[0])},reparentChildAt(s,t){if(s.parent===this)return this.setChildIndex(s,t),s;const e=s.worldTransform.clone();s.removeFromParent(),this.addChildAt(s,t);const i=this.worldTransform.clone();return i.invert(),e.prepend(i),s.setFromMatrix(e),s},replaceChild(s,t){s.updateLocalTransform(),this.addChildAt(t,this.getChildIndex(s)),t.setFromMatrix(s.localTransform),t.updateLocalTransform(),this.removeChild(s)}},m_={collectRenderables(s,t,e){this.parentRenderLayer&&this.parentRenderLayer!==e||this.globalDisplayStatus<7||!this.includeInBuild||(this.sortableChildren&&this.sortChildren(),this.isSimple?this.collectRenderablesSimple(s,t,e):this.renderGroup?t.renderPipes.renderGroup.addRenderGroup(this.renderGroup,s):this.collectRenderablesWithEffects(s,t,e))},collectRenderablesSimple(s,t,e){const i=this.children,n=i.length;for(let r=0;r<n;r++)i[r].collectRenderables(s,t,e)},collectRenderablesWithEffects(s,t,e){const{renderPipes:i}=t;for(let n=0;n<this.effects.length;n++){const r=this.effects[n];i[r.pipe].push(r,this,s)}this.collectRenderablesSimple(s,t,e);for(let n=this.effects.length-1;n>=0;n--){const r=this.effects[n];i[r.pipe].pop(r,this,s)}}};class Cp{constructor(){this.pipe="filter",this.priority=1}destroy(){for(let t=0;t<this.filters.length;t++)this.filters[t].destroy();this.filters=null,this.filterArea=null}}class O_{constructor(){this._effectClasses=[],this._tests=[],this._initialized=!1}init(){this._initialized||(this._initialized=!0,this._effectClasses.forEach(t=>{this.add({test:t.test,maskClass:t})}))}add(t){this._tests.push(t)}getMaskEffect(t){this._initialized||this.init();for(let e=0;e<this._tests.length;e++){const i=this._tests[e];if(i.test(t))return Le.get(i.maskClass,t)}return t}returnMaskEffect(t){Le.return(t)}}const au=new O_;Vt.handleByList(lt.MaskEffect,au._effectClasses);const y_={_maskEffect:null,_maskOptions:{inverse:!1,channel:"red"},_filterEffect:null,effects:[],_markStructureAsChanged(){const s=this.renderGroup||this.parentRenderGroup;s&&(s.structureDidChange=!0)},addEffect(s){this.effects.indexOf(s)===-1&&(this.effects.push(s),this.effects.sort((e,i)=>e.priority-i.priority),this._markStructureAsChanged(),this._updateIsSimple())},removeEffect(s){const t=this.effects.indexOf(s);t!==-1&&(this.effects.splice(t,1),this._markStructureAsChanged(),this._updateIsSimple())},set mask(s){const t=this._maskEffect;(t==null?void 0:t.mask)!==s&&(t&&(this.removeEffect(t),au.returnMaskEffect(t),this._maskEffect=null),s!=null&&(this._maskEffect=au.getMaskEffect(s),this.addEffect(this._maskEffect)))},get mask(){var s;return(s=this._maskEffect)==null?void 0:s.mask},setMask(s){this._maskOptions={...this._maskOptions,...s},s.mask&&(this.mask=s.mask),this._markStructureAsChanged()},set filters(s){var r;!Array.isArray(s)&&s&&(s=[s]);const t=this._filterEffect||(this._filterEffect=new Cp);s=s;const e=(s==null?void 0:s.length)>0,i=((r=t.filters)==null?void 0:r.length)>0,n=e!==i;s=Array.isArray(s)?s.slice(0):s,t.filters=Object.freeze(s),n&&(e?this.addEffect(t):(this.removeEffect(t),t.filters=s??null))},get filters(){var s;return(s=this._filterEffect)==null?void 0:s.filters},set filterArea(s){this._filterEffect||(this._filterEffect=new Cp),this._filterEffect.filterArea=s},get filterArea(){var s;return(s=this._filterEffect)==null?void 0:s.filterArea}},x_={label:null,get name(){return xt(It,"Container.name property has been removed, use Container.label instead"),this.label},set name(s){xt(It,"Container.name property has been removed, use Container.label instead"),this.label=s},getChildByName(s,t=!1){return this.getChildByLabel(s,t)},getChildByLabel(s,t=!1){const e=this.children;for(let i=0;i<e.length;i++){const n=e[i];if(n.label===s||s instanceof RegExp&&s.test(n.label))return n}if(t)for(let i=0;i<e.length;i++){const r=e[i].getChildByLabel(s,!0);if(r)return r}return null},getChildrenByLabel(s,t=!1,e=[]){const i=this.children;for(let n=0;n<i.length;n++){const r=i[n];(r.label===s||s instanceof RegExp&&s.test(r.label))&&e.push(r)}if(t)for(let n=0;n<i.length;n++)i[n].getChildrenByLabel(s,!0,e);return e}},Se=Le.getPool(ft),Ui=Le.getPool(si),b_=new ft,w_={getFastGlobalBounds(s,t){t||(t=new si),t.clear(),this._getGlobalBoundsRecursive(!!s,t,this.parentRenderLayer),t.isValid||t.set(0,0,0,0);const e=this.renderGroup||this.parentRenderGroup;return t.applyMatrix(e.worldTransform),t},_getGlobalBoundsRecursive(s,t,e){let i=t;if(s&&this.parentRenderLayer&&this.parentRenderLayer!==e||this.localDisplayStatus!==7||!this.measurable)return;const n=!!this.effects.length;if((this.renderGroup||n)&&(i=Ui.get().clear()),this.boundsArea)t.addRect(this.boundsArea,this.worldTransform);else{if(this.renderPipeId){const o=this.bounds;i.addFrame(o.minX,o.minY,o.maxX,o.maxY,this.groupTransform)}const r=this.children;for(let o=0;o<r.length;o++)r[o]._getGlobalBoundsRecursive(s,i,e)}if(n){let r=!1;const o=this.renderGroup||this.parentRenderGroup;for(let a=0;a<this.effects.length;a++)this.effects[a].addBounds&&(r||(r=!0,i.applyMatrix(o.worldTransform)),this.effects[a].addBounds(i,!0));r&&i.applyMatrix(o.worldTransform.copyTo(b_).invert()),t.addBounds(i),Ui.return(i)}else this.renderGroup&&(t.addBounds(i,this.relativeGroupTransform),Ui.return(i))}};function P0(s,t,e){e.clear();let i,n;return s.parent?t?i=s.parent.worldTransform:(n=Se.get().identity(),i=Wd(s,n)):i=ft.IDENTITY,T0(s,e,i,t),n&&Se.return(n),e.isValid||e.set(0,0,0,0),e}function T0(s,t,e,i){var a,l;if(!s.visible||!s.measurable)return;let n;i?n=s.worldTransform:(s.updateLocalTransform(),n=Se.get(),n.appendFrom(s.localTransform,e));const r=t,o=!!s.effects.length;if(o&&(t=Ui.get().clear()),s.boundsArea)t.addRect(s.boundsArea,n);else{const h=s.bounds;h&&!h.isEmpty()&&(t.matrix=n,t.addBounds(h));for(let c=0;c<s.children.length;c++)T0(s.children[c],t,n,i)}if(o){for(let h=0;h<s.effects.length;h++)(l=(a=s.effects[h]).addBounds)==null||l.call(a,t);r.addBounds(t,ft.IDENTITY),Ui.return(t)}i||Se.return(n)}function Wd(s,t){const e=s.parent;return e&&(Wd(e,t),e.updateLocalTransform(),t.append(e.localTransform)),t}function M0(s,t){if(s===16777215||!t)return t;if(t===16777215||!s)return s;const e=s>>16&255,i=s>>8&255,n=s&255,r=t>>16&255,o=t>>8&255,a=t&255,l=e*r/255|0,h=i*o/255|0,c=n*a/255|0;return(l<<16)+(h<<8)+c}const Pp=16777215;function Tp(s,t){return s===Pp?t:t===Pp?s:M0(s,t)}function ja(s){return((s&255)<<16)+(s&65280)+(s>>16&255)}const S_={getGlobalAlpha(s){if(s)return this.renderGroup?this.renderGroup.worldAlpha:this.parentRenderGroup?this.parentRenderGroup.worldAlpha*this.alpha:this.alpha;let t=this.alpha,e=this.parent;for(;e;)t*=e.alpha,e=e.parent;return t},getGlobalTransform(s=new ft,t){if(t)return s.copyFrom(this.worldTransform);this.updateLocalTransform();const e=Wd(this,Se.get().identity());return s.appendFrom(this.localTransform,e),Se.return(e),s},getGlobalTint(s){if(s)return this.renderGroup?ja(this.renderGroup.worldColor):this.parentRenderGroup?ja(Tp(this.localColor,this.parentRenderGroup.worldColor)):this.tint;let t=this.localColor,e=this.parent;for(;e;)t=Tp(t,e.localColor),e=e.parent;return ja(t)}};function A0(s,t,e){return t.clear(),e||(e=ft.IDENTITY),Q0(s,t,e,s,!0),t.isValid||t.set(0,0,0,0),t}function Q0(s,t,e,i,n){var l,h;let r;if(n)r=Se.get(),r=e.copyTo(r);else{if(!s.visible||!s.measurable)return;s.updateLocalTransform();const c=s.localTransform;r=Se.get(),r.appendFrom(c,e)}const o=t,a=!!s.effects.length;if(a&&(t=Ui.get().clear()),s.boundsArea)t.addRect(s.boundsArea,r);else{s.renderPipeId&&(t.matrix=r,t.addBounds(s.bounds));const c=s.children;for(let u=0;u<c.length;u++)Q0(c[u],t,r,i,!1)}if(a){for(let c=0;c<s.effects.length;c++)(h=(l=s.effects[c]).addLocalBounds)==null||h.call(l,t,i);o.addBounds(t,ft.IDENTITY),Ui.return(t)}Se.return(r)}function R0(s,t){const e=s.children;for(let i=0;i<e.length;i++){const n=e[i],r=n.uid,o=(n._didViewChangeTick&65535)<<16|n._didContainerChangeTick&65535,a=t.index;(t.data[a]!==r||t.data[a+1]!==o)&&(t.data[t.index]=r,t.data[t.index+1]=o,t.didChange=!0),t.index=a+2,n.children.length&&R0(n,t)}return t.didChange}const v_=new ft,__={_localBoundsCacheId:-1,_localBoundsCacheData:null,_setWidth(s,t){const e=Math.sign(this.scale.x)||1;t!==0?this.scale.x=s/t*e:this.scale.x=e},_setHeight(s,t){const e=Math.sign(this.scale.y)||1;t!==0?this.scale.y=s/t*e:this.scale.y=e},getLocalBounds(){this._localBoundsCacheData||(this._localBoundsCacheData={data:[],index:1,didChange:!1,localBounds:new si});const s=this._localBoundsCacheData;return s.index=1,s.didChange=!1,s.data[0]!==this._didViewChangeTick&&(s.didChange=!0,s.data[0]=this._didViewChangeTick),R0(this,s),s.didChange&&A0(this,s.localBounds,v_),s.localBounds},getBounds(s,t){return P0(this,s,t||new si)}},k_={_onRender:null,set onRender(s){const t=this.renderGroup||this.parentRenderGroup;if(!s){this._onRender&&(t==null||t.removeOnRender(this)),this._onRender=null;return}this._onRender||t==null||t.addOnRender(this),this._onRender=s},get onRender(){return this._onRender}},$_={_zIndex:0,sortDirty:!1,sortableChildren:!1,get zIndex(){return this._zIndex},set zIndex(s){this._zIndex!==s&&(this._zIndex=s,this.depthOfChildModified())},depthOfChildModified(){this.parent&&(this.parent.sortableChildren=!0,this.parent.sortDirty=!0),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0)},sortChildren(){this.sortDirty&&(this.sortDirty=!1,this.children.sort(C_))}};function C_(s,t){return s._zIndex-t._zIndex}const P_={getGlobalPosition(s=new Gt,t=!1){return this.parent?this.parent.toGlobal(this._position,s,t):(s.x=this._position.x,s.y=this._position.y),s},toGlobal(s,t,e=!1){const i=this.getGlobalTransform(Se.get(),e);return t=i.apply(s,t),Se.return(i),t},toLocal(s,t,e,i){t&&(s=t.toGlobal(s,e,i));const n=this.getGlobalTransform(Se.get(),i);return e=n.applyInverse(s,e),Se.return(n),e}};class Gd{constructor(){this.uid=Dt("instructionSet"),this.instructions=[],this.instructionSize=0,this.renderables=[],this.gcTick=0}reset(){this.instructionSize=0}destroy(){this.instructions.length=0,this.renderables.length=0,this.renderPipes=null,this.gcTick=0}add(t){this.instructions[this.instructionSize++]=t}log(){this.instructions.length=this.instructionSize,console.table(this.instructions,["type","action"])}}let T_=0;class M_{constructor(t){this._poolKeyHash=Object.create(null),this._texturePool={},this.textureOptions=t||{},this.enableFullScreen=!1,this.textureStyle=new tr(this.textureOptions)}createTexture(t,e,i,n){const r=new ni({...this.textureOptions,width:t,height:e,resolution:1,antialias:i,autoGarbageCollect:!1,autoGenerateMipmaps:n});return new bt({source:r,label:`texturePool_${T_++}`})}getOptimalTexture(t,e,i=1,n,r=!1){let o=Math.ceil(t*i-1e-6),a=Math.ceil(e*i-1e-6);o=Jn(o),a=Jn(a);const l=n?1:0,h=r?1:0,c=(o<<17)+(a<<2)+(h<<1)+l;this._texturePool[c]||(this._texturePool[c]=[]);let u=this._texturePool[c].pop();return u||(u=this.createTexture(o,a,n,r)),u.source._resolution=i,u.source.width=o/i,u.source.height=a/i,u.source.pixelWidth=o,u.source.pixelHeight=a,u.frame.x=0,u.frame.y=0,u.frame.width=t,u.frame.height=e,u.updateUvs(),this._poolKeyHash[u.uid]=c,u}getSameSizeTexture(t,e=!1){const i=t.source;return this.getOptimalTexture(t.width,t.height,i._resolution,e)}returnTexture(t,e=!1){const i=this._poolKeyHash[t.uid];e&&(t.source.style=this.textureStyle),this._texturePool[i].push(t)}clear(t){if(t=t!==!1,t)for(const e in this._texturePool){const i=this._texturePool[e];if(i)for(let n=0;n<i.length;n++)i[n].destroy(!0)}this._texturePool={}}}const nh=new M_;zo.register(nh);class A_{constructor(){this.renderPipeId="renderGroup",this.root=null,this.canBundle=!1,this.renderGroupParent=null,this.renderGroupChildren=[],this.worldTransform=new ft,this.worldColorAlpha=4294967295,this.worldColor=16777215,this.worldAlpha=1,this.childrenToUpdate=Object.create(null),this.updateTick=0,this.gcTick=0,this.childrenRenderablesToUpdate={list:[],index:0},this.structureDidChange=!0,this.instructionSet=new Gd,this._onRenderContainers=[],this.textureNeedsUpdate=!0,this.isCachedAsTexture=!1,this._matrixDirty=7}init(t){this.root=t,t._onRender&&this.addOnRender(t),t.didChange=!0;const e=t.children;for(let i=0;i<e.length;i++){const n=e[i];n._updateFlags=15,this.addChild(n)}}enableCacheAsTexture(t={}){this.textureOptions=t,this.isCachedAsTexture=!0,this.textureNeedsUpdate=!0}disableCacheAsTexture(){this.isCachedAsTexture=!1,this.texture&&(nh.returnTexture(this.texture,!0),this.texture=null)}updateCacheTexture(){this.textureNeedsUpdate=!0;const t=this._parentCacheAsTextureRenderGroup;t&&!t.textureNeedsUpdate&&t.updateCacheTexture()}reset(){this.renderGroupChildren.length=0;for(const t in this.childrenToUpdate){const e=this.childrenToUpdate[t];e.list.fill(null),e.index=0}this.childrenRenderablesToUpdate.index=0,this.childrenRenderablesToUpdate.list.fill(null),this.root=null,this.updateTick=0,this.structureDidChange=!0,this._onRenderContainers.length=0,this.renderGroupParent=null,this.disableCacheAsTexture()}get localTransform(){return this.root.localTransform}addRenderGroupChild(t){t.renderGroupParent&&t.renderGroupParent._removeRenderGroupChild(t),t.renderGroupParent=this,this.renderGroupChildren.push(t)}_removeRenderGroupChild(t){const e=this.renderGroupChildren.indexOf(t);e>-1&&this.renderGroupChildren.splice(e,1),t.renderGroupParent=null}addChild(t){if(this.structureDidChange=!0,t.parentRenderGroup=this,t.updateTick=-1,t.parent===this.root?t.relativeRenderGroupDepth=1:t.relativeRenderGroupDepth=t.parent.relativeRenderGroupDepth+1,t.didChange=!0,this.onChildUpdate(t),t.renderGroup){this.addRenderGroupChild(t.renderGroup);return}t._onRender&&this.addOnRender(t);const e=t.children;for(let i=0;i<e.length;i++)this.addChild(e[i])}removeChild(t){if(this.structureDidChange=!0,t._onRender&&(t.renderGroup||this.removeOnRender(t)),t.parentRenderGroup=null,t.renderGroup){this._removeRenderGroupChild(t.renderGroup);return}const e=t.children;for(let i=0;i<e.length;i++)this.removeChild(e[i])}removeChildren(t){for(let e=0;e<t.length;e++)this.removeChild(t[e])}onChildUpdate(t){let e=this.childrenToUpdate[t.relativeRenderGroupDepth];e||(e=this.childrenToUpdate[t.relativeRenderGroupDepth]={index:0,list:[]}),e.list[e.index++]=t}updateRenderable(t){t.globalDisplayStatus<7||(this.instructionSet.renderPipes[t.renderPipeId].updateRenderable(t),t.didViewUpdate=!1)}onChildViewUpdate(t){this.childrenRenderablesToUpdate.list[this.childrenRenderablesToUpdate.index++]=t}get isRenderable(){return this.root.localDisplayStatus===7&&this.worldAlpha>0}addOnRender(t){this._onRenderContainers.push(t)}removeOnRender(t){this._onRenderContainers.splice(this._onRenderContainers.indexOf(t),1)}runOnRender(t){for(let e=0;e<this._onRenderContainers.length;e++)this._onRenderContainers[e]._onRender(t)}destroy(){this.disableCacheAsTexture(),this.renderGroupParent=null,this.root=null,this.childrenRenderablesToUpdate=null,this.childrenToUpdate=null,this.renderGroupChildren=null,this._onRenderContainers=null,this.instructionSet=null}getChildren(t=[]){const e=this.root.children;for(let i=0;i<e.length;i++)this._getChildren(e[i],t);return t}_getChildren(t,e=[]){if(e.push(t),t.renderGroup)return e;const i=t.children;for(let n=0;n<i.length;n++)this._getChildren(i[n],e);return e}invalidateMatrices(){this._matrixDirty=7}get inverseWorldTransform(){return(this._matrixDirty&1)===0?this._inverseWorldTransform:(this._matrixDirty&=-2,this._inverseWorldTransform||(this._inverseWorldTransform=new ft),this._inverseWorldTransform.copyFrom(this.worldTransform).invert())}get textureOffsetInverseTransform(){return(this._matrixDirty&2)===0?this._textureOffsetInverseTransform:(this._matrixDirty&=-3,this._textureOffsetInverseTransform||(this._textureOffsetInverseTransform=new ft),this._textureOffsetInverseTransform.copyFrom(this.inverseWorldTransform).translate(-this._textureBounds.x,-this._textureBounds.y))}get inverseParentTextureTransform(){if((this._matrixDirty&4)===0)return this._inverseParentTextureTransform;this._matrixDirty&=-5;const t=this._parentCacheAsTextureRenderGroup;return t?(this._inverseParentTextureTransform||(this._inverseParentTextureTransform=new ft),this._inverseParentTextureTransform.copyFrom(this.worldTransform).prepend(t.inverseWorldTransform).translate(-t._textureBounds.x,-t._textureBounds.y)):this.worldTransform}get cacheToLocalTransform(){return this.isCachedAsTexture?this.textureOffsetInverseTransform:this._parentCacheAsTextureRenderGroup?this._parentCacheAsTextureRenderGroup.textureOffsetInverseTransform:null}}function Q_(s,t,e={}){for(const i in t)!e[i]&&t[i]!==void 0&&(s[i]=t[i])}const Dh=new he(null),ra=new he(null),Bh=new he(null,1,1),oa=new he(null),Mp=1,R_=2,Xh=4;class Ht extends Li{constructor(t={}){var e,i;super(),this.uid=Dt("renderable"),this._updateFlags=15,this.renderGroup=null,this.parentRenderGroup=null,this.parentRenderGroupIndex=0,this.didChange=!1,this.didViewUpdate=!1,this.relativeRenderGroupDepth=0,this.children=[],this.parent=null,this.includeInBuild=!0,this.measurable=!0,this.isSimple=!0,this.parentRenderLayer=null,this.updateTick=-1,this.localTransform=new ft,this.relativeGroupTransform=new ft,this.groupTransform=this.relativeGroupTransform,this.destroyed=!1,this._position=new he(this,0,0),this._scale=Bh,this._pivot=ra,this._origin=oa,this._skew=Dh,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._rotation=0,this.localColor=16777215,this.localAlpha=1,this.groupAlpha=1,this.groupColor=16777215,this.groupColorAlpha=4294967295,this.localBlendMode="inherit",this.groupBlendMode="normal",this.localDisplayStatus=7,this.globalDisplayStatus=7,this._didContainerChangeTick=0,this._didViewChangeTick=0,this._didLocalTransformChangeId=-1,this.effects=[],Q_(this,t,{children:!0,parent:!0,effects:!0}),(e=t.children)==null||e.forEach(n=>this.addChild(n)),(i=t.parent)==null||i.addChild(this)}static mixin(t){xt("8.8.0","Container.mixin is deprecated, please use extensions.mixin instead."),Vt.mixin(Ht,t)}set _didChangeId(t){this._didViewChangeTick=t>>12&4095,this._didContainerChangeTick=t&4095}get _didChangeId(){return this._didContainerChangeTick&4095|(this._didViewChangeTick&4095)<<12}addChild(...t){if(this.allowChildren||xt(It,"addChild: Only Containers will be allowed to add children in v8.0.0"),t.length>1){for(let n=0;n<t.length;n++)this.addChild(t[n]);return t[0]}const e=t[0],i=this.renderGroup||this.parentRenderGroup;return e.parent===this?(this.children.splice(this.children.indexOf(e),1),this.children.push(e),i&&(i.structureDidChange=!0),e):(e.parent&&e.parent.removeChild(e),this.children.push(e),this.sortableChildren&&(this.sortDirty=!0),e.parent=this,e.didChange=!0,e._updateFlags=15,i&&i.addChild(e),this.emit("childAdded",e,this,this.children.length-1),e.emit("added",this),this._didViewChangeTick++,e._zIndex!==0&&e.depthOfChildModified(),e)}removeChild(...t){if(t.length>1){for(let n=0;n<t.length;n++)this.removeChild(t[n]);return t[0]}const e=t[0],i=this.children.indexOf(e);return i>-1&&(this._didViewChangeTick++,this.children.splice(i,1),this.renderGroup?this.renderGroup.removeChild(e):this.parentRenderGroup&&this.parentRenderGroup.removeChild(e),e.parentRenderLayer&&e.parentRenderLayer.detach(e),e.parent=null,this.emit("childRemoved",e,this,i),e.emit("removed",this)),e}_onUpdate(t){t&&t===this._skew&&this._updateSkew(),this._didContainerChangeTick++,!this.didChange&&(this.didChange=!0,this.parentRenderGroup&&this.parentRenderGroup.onChildUpdate(this))}set isRenderGroup(t){!!this.renderGroup!==t&&(t?this.enableRenderGroup():this.disableRenderGroup())}get isRenderGroup(){return!!this.renderGroup}enableRenderGroup(){if(this.renderGroup)return;const t=this.parentRenderGroup;t==null||t.removeChild(this),this.renderGroup=Le.get(A_,this),this.groupTransform=ft.IDENTITY,t==null||t.addChild(this),this._updateIsSimple()}disableRenderGroup(){if(!this.renderGroup)return;const t=this.parentRenderGroup;t==null||t.removeChild(this),Le.return(this.renderGroup),this.renderGroup=null,this.groupTransform=this.relativeGroupTransform,t==null||t.addChild(this),this._updateIsSimple()}_updateIsSimple(){this.isSimple=!this.renderGroup&&this.effects.length===0}get worldTransform(){return this._worldTransform||(this._worldTransform=new ft),this.renderGroup?this._worldTransform.copyFrom(this.renderGroup.worldTransform):this.parentRenderGroup&&this._worldTransform.appendFrom(this.relativeGroupTransform,this.parentRenderGroup.worldTransform),this._worldTransform}get x(){return this._position.x}set x(t){this._position.x=t}get y(){return this._position.y}set y(t){this._position.y=t}get position(){return this._position}set position(t){this._position.copyFrom(t)}get rotation(){return this._rotation}set rotation(t){this._rotation!==t&&(this._rotation=t,this._onUpdate(this._skew))}get angle(){return this.rotation*Fv}set angle(t){this.rotation=t*qv}get pivot(){return this._pivot===ra&&(this._pivot=new he(this,0,0)),this._pivot}set pivot(t){this._pivot===ra&&(this._pivot=new he(this,0,0),this._origin!==oa&&ve("Setting both a pivot and origin on a Container is not recommended. This can lead to unexpected behavior if not handled carefully.")),typeof t=="number"?this._pivot.set(t):this._pivot.copyFrom(t)}get skew(){return this._skew===Dh&&(this._skew=new he(this,0,0)),this._skew}set skew(t){this._skew===Dh&&(this._skew=new he(this,0,0)),this._skew.copyFrom(t)}get scale(){return this._scale===Bh&&(this._scale=new he(this,1,1)),this._scale}set scale(t){this._scale===Bh&&(this._scale=new he(this,0,0)),typeof t=="string"&&(t=parseFloat(t)),typeof t=="number"?this._scale.set(t):this._scale.copyFrom(t)}get origin(){return this._origin===oa&&(this._origin=new he(this,0,0)),this._origin}set origin(t){this._origin===oa&&(this._origin=new he(this,0,0),this._pivot!==ra&&ve("Setting both a pivot and origin on a Container is not recommended. This can lead to unexpected behavior if not handled carefully.")),typeof t=="number"?this._origin.set(t):this._origin.copyFrom(t)}get width(){return Math.abs(this.scale.x*this.getLocalBounds().width)}set width(t){const e=this.getLocalBounds().width;this._setWidth(t,e)}get height(){return Math.abs(this.scale.y*this.getLocalBounds().height)}set height(t){const e=this.getLocalBounds().height;this._setHeight(t,e)}getSize(t){t||(t={});const e=this.getLocalBounds();return t.width=Math.abs(this.scale.x*e.width),t.height=Math.abs(this.scale.y*e.height),t}setSize(t,e){const i=this.getLocalBounds();typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,i.width),e!==void 0&&this._setHeight(e,i.height)}_updateSkew(){const t=this._rotation,e=this._skew;this._cx=Math.cos(t+e._y),this._sx=Math.sin(t+e._y),this._cy=-Math.sin(t-e._x),this._sy=Math.cos(t-e._x)}updateTransform(t){return this.position.set(typeof t.x=="number"?t.x:this.position.x,typeof t.y=="number"?t.y:this.position.y),this.scale.set(typeof t.scaleX=="number"?t.scaleX||1:this.scale.x,typeof t.scaleY=="number"?t.scaleY||1:this.scale.y),this.rotation=typeof t.rotation=="number"?t.rotation:this.rotation,this.skew.set(typeof t.skewX=="number"?t.skewX:this.skew.x,typeof t.skewY=="number"?t.skewY:this.skew.y),this.pivot.set(typeof t.pivotX=="number"?t.pivotX:this.pivot.x,typeof t.pivotY=="number"?t.pivotY:this.pivot.y),this.origin.set(typeof t.originX=="number"?t.originX:this.origin.x,typeof t.originY=="number"?t.originY:this.origin.y),this}setFromMatrix(t){t.decompose(this)}updateLocalTransform(){const t=this._didContainerChangeTick;if(this._didLocalTransformChangeId===t)return;this._didLocalTransformChangeId=t;const e=this.localTransform,i=this._scale,n=this._pivot,r=this._origin,o=this._position,a=i._x,l=i._y,h=n._x,c=n._y,u=-r._x,d=-r._y;e.a=this._cx*a,e.b=this._sx*a,e.c=this._cy*l,e.d=this._sy*l,e.tx=o._x-(h*e.a+c*e.c)+(u*e.a+d*e.c)-u,e.ty=o._y-(h*e.b+c*e.d)+(u*e.b+d*e.d)-d}set alpha(t){t!==this.localAlpha&&(this.localAlpha=t,this._updateFlags|=Mp,this._onUpdate())}get alpha(){return this.localAlpha}set tint(t){const i=Jt.shared.setValue(t??16777215).toBgrNumber();i!==this.localColor&&(this.localColor=i,this._updateFlags|=Mp,this._onUpdate())}get tint(){return ja(this.localColor)}set blendMode(t){this.localBlendMode!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=R_,this.localBlendMode=t,this._onUpdate())}get blendMode(){return this.localBlendMode}get visible(){return!!(this.localDisplayStatus&2)}set visible(t){const e=t?2:0;(this.localDisplayStatus&2)!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=Xh,this.localDisplayStatus^=2,this._onUpdate(),this.emit("visibleChanged",t))}get culled(){return!(this.localDisplayStatus&4)}set culled(t){const e=t?0:4;(this.localDisplayStatus&4)!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=Xh,this.localDisplayStatus^=4,this._onUpdate())}get renderable(){return!!(this.localDisplayStatus&1)}set renderable(t){const e=t?1:0;(this.localDisplayStatus&1)!==e&&(this._updateFlags|=Xh,this.localDisplayStatus^=1,this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._onUpdate())}get isRenderable(){return this.localDisplayStatus===7&&this.groupAlpha>0}destroy(t=!1){var n;if(this.destroyed)return;this.destroyed=!0;let e;if(this.children.length&&(e=this.removeChildren(0,this.children.length)),this.removeFromParent(),this.parent=null,this._maskEffect=null,this._filterEffect=null,this.effects=null,this._position=null,this._scale=null,this._pivot=null,this._origin=null,this._skew=null,this.emit("destroyed",this),this.removeAllListeners(),(typeof t=="boolean"?t:t==null?void 0:t.children)&&e)for(let r=0;r<e.length;++r)e[r].destroy(t);(n=this.renderGroup)==null||n.destroy(),this.renderGroup=null}}Vt.mixin(Ht,g_,w_,P_,k_,__,y_,x_,$_,c_,f_,S_,m_);class Yd extends Ht{constructor(t){super(t),this.canBundle=!0,this.allowChildren=!1,this._roundPixels=0,this._lastUsed=-1,this._gpuData=Object.create(null),this.autoGarbageCollect=!0,this._gcLastUsed=-1,this._bounds=new si(0,1,0,0),this._boundsDirty=!0,this.autoGarbageCollect=t.autoGarbageCollect??!0}get bounds(){return this._boundsDirty?(this.updateBounds(),this._boundsDirty=!1,this._bounds):this._bounds}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=t?1:0}containsPoint(t){const e=this.bounds,{x:i,y:n}=t;return i>=e.minX&&i<=e.maxX&&n>=e.minY&&n<=e.maxY}onViewUpdate(){if(this._didViewChangeTick++,this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}unload(){var t;this.emit("unload",this);for(const e in this._gpuData)(t=this._gpuData[e])==null||t.destroy();this._gpuData=Object.create(null),this.onViewUpdate()}destroy(t){this.unload(),super.destroy(t),this._bounds=null}collectRenderablesSimple(t,e,i){const{renderPipes:n}=e;n.blendMode.pushBlendMode(this,this.groupBlendMode,t);const o=n[this.renderPipeId];o!=null&&o.addRenderable&&o.addRenderable(this,t),this.didViewUpdate=!1;const a=this.children,l=a.length;for(let h=0;h<l;h++)a[h].collectRenderables(t,e,i);n.blendMode.popBlendMode(t)}}class Ji extends Yd{constructor(t=bt.EMPTY){t instanceof bt&&(t={texture:t});const{texture:e=bt.EMPTY,anchor:i,roundPixels:n,width:r,height:o,...a}=t;super({label:"Sprite",...a}),this.renderPipeId="sprite",this.batched=!0,this._visualBounds={minX:0,maxX:1,minY:0,maxY:0},this._anchor=new he({_onUpdate:()=>{this.onViewUpdate()}}),i?this.anchor=i:e.defaultAnchor&&(this.anchor=e.defaultAnchor),this.texture=e,this.allowChildren=!1,this.roundPixels=n??!1,r!==void 0&&(this.width=r),o!==void 0&&(this.height=o)}static from(t,e=!1){return t instanceof bt?new Ji(t):new Ji(bt.from(t,e))}set texture(t){t||(t=bt.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this._width&&this._setWidth(this._width,this._texture.orig.width),this._height&&this._setHeight(this._height,this._texture.orig.height),this.onViewUpdate())}get texture(){return this._texture}get visualBounds(){return _0(this._visualBounds,this._anchor,this._texture),this._visualBounds}get sourceBounds(){return xt("8.6.1","Sprite.sourceBounds is deprecated, use visualBounds instead."),this.visualBounds}updateBounds(){const t=this._anchor,e=this._texture,i=this._bounds,{width:n,height:r}=e.orig;i.minX=-t._x*n,i.maxX=i.minX+n,i.minY=-t._y*r,i.maxY=i.minY+r}destroy(t=!1){if(super.destroy(t),typeof t=="boolean"?t:t==null?void 0:t.texture){const i=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(i)}this._texture=null,this._visualBounds=null,this._bounds=null,this._anchor=null}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(t){this._setWidth(t,this._texture.orig.width),this._width=t}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(t){this._setHeight(t,this._texture.orig.height),this._height=t}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this._texture.orig.width,t.height=Math.abs(this.scale.y)*this._texture.orig.height,t}setSize(t,e){typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,this._texture.orig.width),e!==void 0&&this._setHeight(e,this._texture.orig.height)}}const E_=new si;function E0(s,t,e){const i=E_;s.measurable=!0,P0(s,e,i),t.addBoundsMask(i),s.measurable=!1}function L0(s,t,e){const i=Ui.get();s.measurable=!0;const n=Se.get().identity(),r=I0(s,e,n);A0(s,i,r),s.measurable=!1,t.addBoundsMask(i),Se.return(n),Ui.return(i)}function I0(s,t,e){return s?(s!==t&&(I0(s.parent,t,e),s.updateLocalTransform(),e.append(s.localTransform)),e):(ve("Mask bounds, renderable is not inside the root container"),e)}class Z0{constructor(t){this.priority=0,this.inverse=!1,this.channel="red",this.pipe="alphaMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.renderMaskToTexture=!(t instanceof Ji),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask=null)}addBounds(t,e){this.inverse||E0(this.mask,t,e)}addLocalBounds(t,e){L0(this.mask,t,e)}containsPoint(t,e){const i=this.mask;return e(i,t)}destroy(){this.reset()}static test(t){return t instanceof Ji}}Z0.extension=lt.MaskEffect;class D0{constructor(t){this.priority=0,this.pipe="colorMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t}destroy(){}static test(t){return typeof t=="number"}}D0.extension=lt.MaskEffect;class B0{constructor(t){this.priority=0,this.pipe="stencilMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null)}addBounds(t,e){E0(this.mask,t,e)}addLocalBounds(t,e){L0(this.mask,t,e)}containsPoint(t,e){const i=this.mask;return e(i,t)}destroy(){this.reset()}static test(t){return t instanceof Ht}}B0.extension=lt.MaskEffect;const L_={createCanvas:(s,t)=>{const e=document.createElement("canvas");return e.width=s,e.height=t,e},createImage:()=>new Image,getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(s,t)=>fetch(s,t),parseXML:s=>new DOMParser().parseFromString(s,"text/xml")};let Ap=L_;const Ye={get(){return Ap},set(s){Ap=s}};class X0 extends ni{constructor(t){t.resource||(t.resource=Ye.get().createCanvas()),t.width||(t.width=t.resource.width,t.autoDensity||(t.width/=t.resolution)),t.height||(t.height=t.resource.height,t.autoDensity||(t.height/=t.resolution)),super(t),this.uploadMethodId="image",this.autoDensity=t.autoDensity,this.resizeCanvas(),this.transparent=!!t.transparent}resizeCanvas(){this.autoDensity&&"style"in this.resource&&(this.resource.style.width=`${this.width}px`,this.resource.style.height=`${this.height}px`),(this.resource.width!==this.pixelWidth||this.resource.height!==this.pixelHeight)&&(this.resource.width=this.pixelWidth,this.resource.height=this.pixelHeight)}resize(t=this.width,e=this.height,i=this._resolution){const n=super.resize(t,e,i);return n&&this.resizeCanvas(),n}static test(t){return globalThis.HTMLCanvasElement&&t instanceof HTMLCanvasElement||globalThis.OffscreenCanvas&&t instanceof OffscreenCanvas}get context2D(){return this._context2D||(this._context2D=this.resource.getContext("2d"))}}X0.extension=lt.TextureSource;class gl extends ni{constructor(t){super(t),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(t){return globalThis.HTMLImageElement&&t instanceof HTMLImageElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||globalThis.VideoFrame&&t instanceof VideoFrame}}gl.extension=lt.TextureSource;var ml=(s=>(s[s.INTERACTION=50]="INTERACTION",s[s.HIGH=25]="HIGH",s[s.NORMAL=0]="NORMAL",s[s.LOW=-25]="LOW",s[s.UTILITY=-50]="UTILITY",s))(ml||{});class zh{constructor(t,e=null,i=0,n=!1){this.next=null,this.previous=null,this._destroyed=!1,this._fn=t,this._context=e,this.priority=i,this._once=n}match(t,e=null){return this._fn===t&&this._context===e}emit(t){this._fn&&(this._context?this._fn.call(this._context,t):this._fn(t));const e=this.next;return this._once&&this.destroy(!0),this._destroyed&&(this.next=null),e}connect(t){this.previous=t,t.next&&(t.next.previous=this),this.next=t.next,t.next=this}destroy(t=!1){this._destroyed=!0,this._fn=null,this._context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const e=this.next;return this.next=t?null:e,this.previous=null,e}}const z0=class ze{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new zh(null,null,1/0),this.deltaMS=1/ze.targetFPMS,this.elapsedMS=1/ze.targetFPMS,this._tick=t=>{this._requestId=null,this.started&&(this.update(t),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(t,e,i=ml.NORMAL){return this._addListener(new zh(t,e,i))}addOnce(t,e,i=ml.NORMAL){return this._addListener(new zh(t,e,i,!0))}_addListener(t){let e=this._head.next,i=this._head;if(!e)t.connect(i);else{for(;e;){if(t.priority>e.priority){t.connect(i);break}i=e,e=e.next}t.previous||t.connect(i)}return this._startIfPossible(),this}remove(t,e){let i=this._head.next;for(;i;)i.match(t,e)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let t=0,e=this._head;for(;e=e.next;)t++;return t}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let t=this._head.next;for(;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}}update(t=performance.now()){let e;if(t>this.lastTime){if(e=this.elapsedMS=t-this.lastTime,e>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){const r=t-this._lastFrame|0;if(r<this._minElapsedMS)return;this._lastFrame=t-r%this._minElapsedMS}this.deltaMS=e,this.deltaTime=this.deltaMS*ze.targetFPMS;const i=this._head;let n=i.next;for(;n;)n=n.emit(this);i.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=t}get FPS(){return 1e3/this.elapsedMS}get minFPS(){return 1e3/this._maxElapsedMS}set minFPS(t){const e=Math.min(Math.max(0,t)/1e3,ze.targetFPMS);this._maxElapsedMS=1/e,this._minElapsedMS&&t>this.maxFPS&&(this.maxFPS=t)}get maxFPS(){return this._minElapsedMS?Math.round(1e3/this._minElapsedMS):0}set maxFPS(t){t===0?this._minElapsedMS=0:(t<this.minFPS&&(this.minFPS=t),this._minElapsedMS=1/(t/1e3))}static get shared(){if(!ze._shared){const t=ze._shared=new ze;t.autoStart=!0,t._protected=!0}return ze._shared}static get system(){if(!ze._system){const t=ze._system=new ze;t.autoStart=!0,t._protected=!0}return ze._system}};z0.targetFPMS=.06;let Qn=z0,Wh;async function I_(){return Wh??(Wh=(async()=>{var o;const t=Ye.get().createCanvas(1,1).getContext("webgl");if(!t)return"premultiply-alpha-on-upload";const e=await new Promise(a=>{const l=document.createElement("video");l.onloadeddata=()=>a(l),l.onerror=()=>a(null),l.autoplay=!1,l.crossOrigin="anonymous",l.preload="auto",l.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",l.load()});if(!e)return"premultiply-alpha-on-upload";const i=t.createTexture();t.bindTexture(t.TEXTURE_2D,i);const n=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,n),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,i,0),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.NONE),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e);const r=new Uint8Array(4);return t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,r),t.deleteFramebuffer(n),t.deleteTexture(i),(o=t.getExtension("WEBGL_lose_context"))==null||o.loseContext(),r[0]<=r[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),Wh}const rh=class W0 extends ni{constructor(t){super(t),this.isReady=!1,this.uploadMethodId="video",t={...W0.defaultOptions,...t},this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=t.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=t.autoPlay!==!1,this.alphaMode=t.alphaMode??"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),this._onLoadedMetadata=this._onLoadedMetadata.bind(this),t.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){const t=Qn.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-t)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;const t=this.resource,e=this.options;return(t.readyState===t.HAVE_ENOUGH_DATA||t.readyState===t.HAVE_FUTURE_DATA)&&t.width&&t.height&&(t.complete=!0),t.addEventListener("play",this._onPlayStart),t.addEventListener("pause",this._onPlayStop),t.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(e.preload||t.addEventListener("canplay",this._onCanPlay),t.addEventListener("canplaythrough",this._onCanPlayThrough),t.addEventListener("error",this._onError,!0)),this.isValid||t.addEventListener("loadedmetadata",this._onLoadedMetadata),this.alphaMode=await I_(),this._load=new Promise((i,n)=>{this.isValid?i(this):(this._resolve=i,this._reject=n,e.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${e.preloadTimeoutMs}ms`))})),t.load())}),this._load}_onError(t){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",t),this._reject&&(this._reject(t),this._reject=null,this._resolve=null)}_isSourcePlaying(){const t=this.resource;return!t.paused&&!t.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onLoadedMetadata(){this.isValid&&this._mediaReady()}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlayThrough),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){const t=this.resource;this.isValid&&(this.isReady=!0,this.resize(t.videoWidth,t.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&this.isValid&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();const t=this.resource;t&&(t.removeEventListener("play",this._onPlayStart),t.removeEventListener("pause",this._onPlayStop),t.removeEventListener("seeked",this._onSeeked),t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlayThrough),t.removeEventListener("loadedmetadata",this._onLoadedMetadata),t.removeEventListener("error",this._onError,!0),t.pause(),t.src="",t.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(t){t!==this._updateFPS&&(this._updateFPS=t,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(Qn.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(Qn.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(Qn.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(t){return globalThis.HTMLVideoElement&&t instanceof HTMLVideoElement}};rh.extension=lt.TextureSource;rh.defaultOptions={...ni.defaultOptions,autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1};rh.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Z_=rh;const Sn=(s,t,e=!1)=>(Array.isArray(s)||(s=[s]),t?s.map(i=>typeof i=="string"||e?t(i):i):s);class D_{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(t){return this._cache.has(t)}get(t){const e=this._cache.get(t);return e||ve(`[Assets] Asset id ${t} was not found in the Cache`),e}set(t,e){const i=Sn(t);let n;for(let l=0;l<this.parsers.length;l++){const h=this.parsers[l];if(h.test(e)){n=h.getCacheableAssets(i,e);break}}const r=new Map(Object.entries(n||{}));n||i.forEach(l=>{r.set(l,e)});const o=[...r.keys()],a={cacheKeys:o,keys:i};i.forEach(l=>{this._cacheMap.set(l,a)}),o.forEach(l=>{const h=n?n[l]:e;this._cache.has(l)&&this._cache.get(l)!==h&&ve("[Cache] already has key:",l),this._cache.set(l,r.get(l))})}remove(t){if(!this._cacheMap.has(t)){ve(`[Assets] Asset id ${t} was not found in the Cache`);return}const e=this._cacheMap.get(t);e.cacheKeys.forEach(n=>{this._cache.delete(n)}),e.keys.forEach(n=>{this._cacheMap.delete(n)})}get parsers(){return this._parsers}}const vn=new D_,lu=[];Vt.handleByList(lt.TextureSource,lu);function G0(s={}){const t=s&&s.resource,e=t?s.resource:s,i=t?s:{resource:s};for(let n=0;n<lu.length;n++){const r=lu[n];if(r.test(e))return new r(i)}throw new Error(`Could not find a source type for resource: ${i.resource}`)}function B_(s={},t=!1){const e=s&&s.resource,i=e?s.resource:s,n=e?s:{resource:s};if(!t&&vn.has(i))return vn.get(i);const r=new bt({source:G0(n)});return r.on("destroy",()=>{vn.has(i)&&vn.remove(i)}),t||vn.set(i,r),r}function X_(s,t=!1){return typeof s=="string"?vn.get(s):s instanceof ni?new bt({source:s}):B_(s,t)}bt.from=X_;ni.from=G0;Vt.add(Z0,D0,B0,Z_,gl,X0,zd);var Y0=(s=>(s[s.Low=0]="Low",s[s.Normal=1]="Normal",s[s.High=2]="High",s))(Y0||{});function ai(s){if(typeof s!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(s)}`)}function br(s){return s.split("?")[0].split("#")[0]}function z_(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function W_(s,t,e){return s.replace(new RegExp(z_(t),"g"),e)}function G_(s,t){let e="",i=0,n=-1,r=0,o=-1;for(let a=0;a<=s.length;++a){if(a<s.length)o=s.charCodeAt(a);else{if(o===47)break;o=47}if(o===47){if(!(n===a-1||r===1))if(n!==a-1&&r===2){if(e.length<2||i!==2||e.charCodeAt(e.length-1)!==46||e.charCodeAt(e.length-2)!==46){if(e.length>2){const l=e.lastIndexOf("/");if(l!==e.length-1){l===-1?(e="",i=0):(e=e.slice(0,l),i=e.length-1-e.lastIndexOf("/")),n=a,r=0;continue}}else if(e.length===2||e.length===1){e="",i=0,n=a,r=0;continue}}}else e.length>0?e+=`/${s.slice(n+1,a)}`:e=s.slice(n+1,a),i=a-n-1;n=a,r=0}else o===46&&r!==-1?++r:r=-1}return e}const po={toPosix(s){return W_(s,"\\","/")},isUrl(s){return/^https?:/.test(this.toPosix(s))},isDataUrl(s){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(s)},isBlobUrl(s){return s.startsWith("blob:")},hasProtocol(s){return/^[^/:]+:/.test(this.toPosix(s))},getProtocol(s){ai(s),s=this.toPosix(s);const t=/^file:\/\/\//.exec(s);if(t)return t[0];const e=/^[^/:]+:\/{0,2}/.exec(s);return e?e[0]:""},toAbsolute(s,t,e){if(ai(s),this.isDataUrl(s)||this.isBlobUrl(s))return s;const i=br(this.toPosix(t??Ye.get().getBaseUrl())),n=br(this.toPosix(e??this.rootname(i)));return s=this.toPosix(s),s.startsWith("/")?po.join(n,s.slice(1)):this.isAbsolute(s)?s:this.join(i,s)},normalize(s){if(ai(s),s.length===0)return".";if(this.isDataUrl(s)||this.isBlobUrl(s))return s;s=this.toPosix(s);let t="";const e=s.startsWith("/");this.hasProtocol(s)&&(t=this.rootname(s),s=s.slice(t.length));const i=s.endsWith("/");return s=G_(s),s.length>0&&i&&(s+="/"),e?`/${s}`:t+s},isAbsolute(s){return ai(s),s=this.toPosix(s),this.hasProtocol(s)?!0:s.startsWith("/")},join(...s){if(s.length===0)return".";let t;for(let e=0;e<s.length;++e){const i=s[e];if(ai(i),i.length>0)if(t===void 0)t=i;else{const n=s[e-1]??"";this.joinExtensions.includes(this.extname(n).toLowerCase())?t+=`/../${i}`:t+=`/${i}`}}return t===void 0?".":this.normalize(t)},dirname(s){if(ai(s),s.length===0)return".";s=this.toPosix(s);let t=s.charCodeAt(0);const e=t===47;let i=-1,n=!0;const r=this.getProtocol(s),o=s;s=s.slice(r.length);for(let a=s.length-1;a>=1;--a)if(t=s.charCodeAt(a),t===47){if(!n){i=a;break}}else n=!1;return i===-1?e?"/":this.isUrl(o)?r+s:r:e&&i===1?"//":r+s.slice(0,i)},rootname(s){ai(s),s=this.toPosix(s);let t="";if(s.startsWith("/")?t="/":t=this.getProtocol(s),this.isUrl(s)){const e=s.indexOf("/",t.length);e!==-1?t=s.slice(0,e):t=s,t.endsWith("/")||(t+="/")}return t},basename(s,t){ai(s),t&&ai(t),s=br(this.toPosix(s));let e=0,i=-1,n=!0,r;if(t!==void 0&&t.length>0&&t.length<=s.length){if(t.length===s.length&&t===s)return"";let o=t.length-1,a=-1;for(r=s.length-1;r>=0;--r){const l=s.charCodeAt(r);if(l===47){if(!n){e=r+1;break}}else a===-1&&(n=!1,a=r+1),o>=0&&(l===t.charCodeAt(o)?--o===-1&&(i=r):(o=-1,i=a))}return e===i?i=a:i===-1&&(i=s.length),s.slice(e,i)}for(r=s.length-1;r>=0;--r)if(s.charCodeAt(r)===47){if(!n){e=r+1;break}}else i===-1&&(n=!1,i=r+1);return i===-1?"":s.slice(e,i)},extname(s){ai(s),s=br(this.toPosix(s));let t=-1,e=0,i=-1,n=!0,r=0;for(let o=s.length-1;o>=0;--o){const a=s.charCodeAt(o);if(a===47){if(!n){e=o+1;break}continue}i===-1&&(n=!1,i=o+1),a===46?t===-1?t=o:r!==1&&(r=1):t!==-1&&(r=-1)}return t===-1||i===-1||r===0||r===1&&t===i-1&&t===e+1?"":s.slice(t,i)},parse(s){ai(s);const t={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return t;s=br(this.toPosix(s));let e=s.charCodeAt(0);const i=this.isAbsolute(s);let n;t.root=this.rootname(s),i||this.hasProtocol(s)?n=1:n=0;let r=-1,o=0,a=-1,l=!0,h=s.length-1,c=0;for(;h>=n;--h){if(e=s.charCodeAt(h),e===47){if(!l){o=h+1;break}continue}a===-1&&(l=!1,a=h+1),e===46?r===-1?r=h:c!==1&&(c=1):r!==-1&&(c=-1)}return r===-1||a===-1||c===0||c===1&&r===a-1&&r===o+1?a!==-1&&(o===0&&i?t.base=t.name=s.slice(1,a):t.base=t.name=s.slice(o,a)):(o===0&&i?(t.name=s.slice(1,r),t.base=s.slice(1,a)):(t.name=s.slice(o,r),t.base=s.slice(o,a)),t.ext=s.slice(r,a)),t.dir=this.dirname(s),t},sep:"/",delimiter:":",joinExtensions:[".html"]};function N0(s,t,e,i,n){const r=t[e];for(let o=0;o<r.length;o++){const a=r[o];e<t.length-1?N0(s.replace(i[e],a),t,e+1,i,n):n.push(s.replace(i[e],a))}}function Y_(s){const t=/\{(.*?)\}/g,e=s.match(t),i=[];if(e){const n=[];e.forEach(r=>{const o=r.substring(1,r.length-1).split(",");n.push(o)}),N0(s,n,0,e,i)}else i.push(s);return i}const Qp=s=>!Array.isArray(s);class V0{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(t,e)=>`${t}${this._bundleIdConnector}${e}`,extractAssetIdFromBundle:(t,e)=>e.replace(`${t}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(t){if(this._bundleIdConnector=t.connector??this._bundleIdConnector,this._createBundleAssetId=t.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=t.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...t){t.forEach(e=>{this._preferredOrder.push(e),e.priority||(e.priority=Object.keys(e.params))}),this._resolverHash={}}set basePath(t){this._basePath=t}get basePath(){return this._basePath}set rootPath(t){this._rootPath=t}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(t){if(typeof t=="string")this._defaultSearchParams=t;else{const e=t;this._defaultSearchParams=Object.keys(e).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(e[i])}`).join("&")}}getAlias(t){const{alias:e,src:i}=t;return Sn(e||i,r=>typeof r=="string"?r:Array.isArray(r)?r.map(o=>(o==null?void 0:o.src)??o):r!=null&&r.src?r.src:r,!0)}removeAlias(t,e){this._assetMap[t]&&(e&&e!==this._resolverHash[t]||(delete this._resolverHash[t],delete this._assetMap[t]))}addManifest(t){this._manifest&&ve("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=t,t.bundles.forEach(e=>{this.addBundle(e.name,e.assets)})}addBundle(t,e){const i=[];let n=e;Array.isArray(e)||(n=Object.entries(e).map(([r,o])=>typeof o=="string"||Array.isArray(o)?{alias:r,src:o}:{alias:r,...o})),n.forEach(r=>{const o=r.src,a=r.alias;let l;if(typeof a=="string"){const h=this._createBundleAssetId(t,a);i.push(h),l=[a,h]}else{const h=a.map(c=>this._createBundleAssetId(t,c));i.push(...h),l=[...a,...h]}this.add({...r,alias:l,src:o})}),this._bundles[t]=i}add(t){const e=[];Array.isArray(t)?e.push(...t):e.push(t);let i;i=r=>{this.hasKey(r)&&ve(`[Resolver] already has key: ${r} overwriting`)},Sn(e).forEach(r=>{const{src:o}=r;let{data:a,format:l,loadParser:h,parser:c}=r;const u=Sn(o).map(g=>typeof g=="string"?Y_(g):Array.isArray(g)?g:[g]),d=this.getAlias(r);Array.isArray(d)?d.forEach(i):i(d);const f=[],p=g=>{const m=this._parsers.find(O=>O.test(g));return{src:g,...m==null?void 0:m.parse(g)}};u.forEach(g=>{g.forEach(m=>{let O={};if(typeof m!="object"?O=p(m):(a=m.data??a,l=m.format??l,(m.loadParser||m.parser)&&(h=m.loadParser??h,c=m.parser??c),O={...p(m.src),...m}),!d)throw new Error(`[Resolver] alias is undefined for this asset: ${O.src}`);O=this._buildResolvedAsset(O,{aliases:d,data:a,format:l,loadParser:h,parser:c,progressSize:r.progressSize}),f.push(O)})}),d.forEach(g=>{this._assetMap[g]=f})})}resolveBundle(t){const e=Qp(t);t=Sn(t);const i={};return t.forEach(n=>{const r=this._bundles[n];if(r){const o=this.resolve(r),a={};for(const l in o){const h=o[l];a[this._extractAssetIdFromBundle(n,l)]=h}i[n]=a}}),e?i[t[0]]:i}resolveUrl(t){const e=this.resolve(t);if(typeof t!="string"){const i={};for(const n in e)i[n]=e[n].src;return i}return e.src}resolve(t){const e=Qp(t);t=Sn(t);const i={};return t.forEach(n=>{if(!this._resolverHash[n])if(this._assetMap[n]){let r=this._assetMap[n];const o=this._getPreferredOrder(r);o==null||o.priority.forEach(a=>{o.params[a].forEach(l=>{const h=r.filter(c=>c[a]?c[a]===l:!1);h.length&&(r=h)})}),this._resolverHash[n]=r[0]}else this._resolverHash[n]=this._buildResolvedAsset({alias:[n],src:n},{});i[n]=this._resolverHash[n]}),e?i[t[0]]:i}hasKey(t){return!!this._assetMap[t]}hasBundle(t){return!!this._bundles[t]}_getPreferredOrder(t){for(let e=0;e<t.length;e++){const i=t[e],n=this._preferredOrder.find(r=>r.params.format.includes(i.format));if(n)return n}return this._preferredOrder[0]}_appendDefaultSearchParams(t){if(!this._defaultSearchParams)return t;const e=/\?/.test(t)?"&":"?";return`${t}${e}${this._defaultSearchParams}`}_buildResolvedAsset(t,e){const{aliases:i,data:n,loadParser:r,parser:o,format:a,progressSize:l}=e;return(this._basePath||this._rootPath)&&(t.src=po.toAbsolute(t.src,this._basePath,this._rootPath)),t.alias=i??t.alias??[t.src],t.src=this._appendDefaultSearchParams(t.src),t.data={...n||{},...t.data},t.loadParser=r??t.loadParser,t.parser=o??t.parser,t.format=a??t.format??N_(t.src),l!==void 0&&(t.progressSize=l),t}}V0.RETINA_PREFIX=/@([0-9\.]+)x/;function N_(s){return s.split(".").pop().split("?").shift().split("#").shift()}const Rp=(s,t)=>{const e=t.split("?")[1];return e&&(s+=`?${e}`),s},F0=class zr{constructor(t,e){this.linkedSheets=[];let i=t;(t==null?void 0:t.source)instanceof ni&&(i={texture:t,data:e});const{texture:n,data:r,cachePrefix:o=""}=i;this.cachePrefix=o,this._texture=n instanceof bt?n:null,this.textureSource=n.source,this.textures={},this.animations={},this.data=r;const a=parseFloat(r.meta.scale);a?(this.resolution=a,n.source.resolution=this.resolution):this.resolution=n.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(t=>{this._callback=t,this._batchIndex=0,this._frameKeys.length<=zr.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}parseSync(){return this._processFrames(0,!0),this._processAnimations(),this.textures}_processFrames(t,e=!1){let i=t;const n=e?1/0:zr.BATCH_SIZE;for(;i-t<n&&i<this._frameKeys.length;){const r=this._frameKeys[i],o=this._frames[r],a=o.frame;if(a){let l=null,h=null;const c=o.trimmed!==!1&&o.sourceSize?o.sourceSize:o.frame,u=new Zt(0,0,Math.floor(c.w)/this.resolution,Math.floor(c.h)/this.resolution);o.rotated?l=new Zt(Math.floor(a.x)/this.resolution,Math.floor(a.y)/this.resolution,Math.floor(a.h)/this.resolution,Math.floor(a.w)/this.resolution):l=new Zt(Math.floor(a.x)/this.resolution,Math.floor(a.y)/this.resolution,Math.floor(a.w)/this.resolution,Math.floor(a.h)/this.resolution),o.trimmed!==!1&&o.spriteSourceSize&&(h=new Zt(Math.floor(o.spriteSourceSize.x)/this.resolution,Math.floor(o.spriteSourceSize.y)/this.resolution,Math.floor(a.w)/this.resolution,Math.floor(a.h)/this.resolution)),this.textures[r]=new bt({source:this.textureSource,frame:l,orig:u,trim:h,rotate:o.rotated?2:0,defaultAnchor:o.anchor,defaultBorders:o.borders,label:r.toString()})}i++}}_processAnimations(){const t=this.data.animations||{};for(const e in t){this.animations[e]=[];for(let i=0;i<t[e].length;i++){const n=t[e][i];this.animations[e].push(this.textures[n])}}}_parseComplete(){const t=this._callback;this._callback=null,this._batchIndex=0,t.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*zr.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*zr.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy(t=!1){var e;for(const i in this.textures)this.textures[i].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,t&&((e=this._texture)==null||e.destroy(),this.textureSource.destroy()),this._texture=null,this.textureSource=null,this.linkedSheets=[]}};F0.BATCH_SIZE=1e3;let Ep=F0;const V_=["jpg","png","jpeg","avif","webp","basis","etc2","bc7","bc6h","bc5","bc4","bc3","bc2","bc1","eac","astc"];function q0(s,t,e){const i={};if(s.forEach(n=>{i[n]=t}),Object.keys(t.textures).forEach(n=>{i[`${t.cachePrefix}${n}`]=t.textures[n]}),!e){const n=po.dirname(s[0]);t.linkedSheets.forEach((r,o)=>{const a=q0([`${n}/${t.data.meta.related_multi_packs[o]}`],r,!0);Object.assign(i,a)})}return i}const F_={extension:lt.Asset,cache:{test:s=>s instanceof Ep,getCacheableAssets:(s,t)=>q0(s,t,!1)},resolver:{extension:{type:lt.ResolveParser,name:"resolveSpritesheet"},test:s=>{const e=s.split("?")[0].split("."),i=e.pop(),n=e.pop();return i==="json"&&V_.includes(n)},parse:s=>{var e;const t=s.split(".");return{resolution:parseFloat(((e=V0.RETINA_PREFIX.exec(s))==null?void 0:e[1])??"1"),format:t[t.length-2],src:s}}},loader:{name:"spritesheetLoader",id:"spritesheet",extension:{type:lt.LoadParser,priority:Y0.Normal,name:"spritesheetLoader"},async testParse(s,t){return po.extname(t.src).toLowerCase()===".json"&&!!s.frames},async parse(s,t,e){var u,d;const{texture:i,imageFilename:n,textureOptions:r,cachePrefix:o}=(t==null?void 0:t.data)??{};let a=po.dirname(t.src);a&&a.lastIndexOf("/")!==a.length-1&&(a+="/");let l;if(i instanceof bt)l=i;else{const f=Rp(a+(n??s.meta.image),t.src);l=(await e.load([{src:f,data:r}]))[f]}const h=new Ep({texture:l.source,data:s,cachePrefix:o});await h.parse();const c=(u=s==null?void 0:s.meta)==null?void 0:u.related_multi_packs;if(Array.isArray(c)){const f=[];for(const g of c){if(typeof g!="string")continue;let m=a+g;(d=t.data)!=null&&d.ignoreMultiPack||(m=Rp(m,t.src),f.push(e.load({src:m,data:{textureOptions:r,ignoreMultiPack:!0}})))}const p=await Promise.all(f);h.linkedSheets=p,p.forEach(g=>{g.linkedSheets=[h].concat(h.linkedSheets.filter(m=>m!==g))})}return h},async unload(s,t,e){await e.unload(s.textureSource._sourceOrigin),s.destroy(!1)}}};Vt.add(F_);const Gh=Object.create(null),Lp=Object.create(null);function Nd(s,t){let e=Lp[s];return e===void 0&&(Gh[t]===void 0&&(Gh[t]=1),Lp[s]=e=Gh[t]++),e}let pn;function j0(){return(!pn||pn!=null&&pn.isContextLost())&&(pn=Ye.get().createCanvas().getContext("webgl",{})),pn}let aa;function q_(){if(!aa){aa="mediump";const s=j0();s&&s.getShaderPrecisionFormat&&(aa=s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT).precision?"highp":"mediump")}return aa}function j_(s,t,e){return t?s:e?(s=s.replace("out vec4 finalColor;",""),`
|
|
6
|
+
|
|
7
|
+
#ifdef GL_ES // This checks if it is WebGL1
|
|
8
|
+
#define in varying
|
|
9
|
+
#define finalColor gl_FragColor
|
|
10
|
+
#define texture texture2D
|
|
11
|
+
#endif
|
|
12
|
+
${s}
|
|
13
|
+
`):`
|
|
14
|
+
|
|
15
|
+
#ifdef GL_ES // This checks if it is WebGL1
|
|
16
|
+
#define in attribute
|
|
17
|
+
#define out varying
|
|
18
|
+
#endif
|
|
19
|
+
${s}
|
|
20
|
+
`}function U_(s,t,e){const i=e?t.maxSupportedFragmentPrecision:t.maxSupportedVertexPrecision;if(s.substring(0,9)!=="precision"){let n=e?t.requestedFragmentPrecision:t.requestedVertexPrecision;return n==="highp"&&i!=="highp"&&(n="mediump"),`precision ${n} float;
|
|
21
|
+
${s}`}else if(i!=="highp"&&s.substring(0,15)==="precision highp")return s.replace("precision highp","precision mediump");return s}function H_(s,t){return t?`#version 300 es
|
|
22
|
+
${s}`:s}const K_={},J_={};function tk(s,{name:t="pixi-program"},e=!0){t=t.replace(/\s+/g,"-"),t+=e?"-fragment":"-vertex";const i=e?K_:J_;return i[t]?(i[t]++,t+=`-${i[t]}`):i[t]=1,s.indexOf("#define SHADER_NAME")!==-1?s:`${`#define SHADER_NAME ${t}`}
|
|
23
|
+
${s}`}function ek(s,t){return t?s.replace("#version 300 es",""):s}const Yh={stripVersion:ek,ensurePrecision:U_,addProgramDefines:j_,setProgramName:tk,insertVersion:H_},wr=Object.create(null),U0=class hu{constructor(t){t={...hu.defaultOptions,...t};const e=t.fragment.indexOf("#version 300 es")!==-1,i={stripVersion:e,ensurePrecision:{requestedFragmentPrecision:t.preferredFragmentPrecision,requestedVertexPrecision:t.preferredVertexPrecision,maxSupportedVertexPrecision:"highp",maxSupportedFragmentPrecision:q_()},setProgramName:{name:t.name},addProgramDefines:e,insertVersion:e};let n=t.fragment,r=t.vertex;Object.keys(Yh).forEach(o=>{const a=i[o];n=Yh[o](n,a,!0),r=Yh[o](r,a,!1)}),this.fragment=n,this.vertex=r,this.transformFeedbackVaryings=t.transformFeedbackVaryings,this._key=Nd(`${this.vertex}:${this.fragment}`,"gl-program")}destroy(){this.fragment=null,this.vertex=null,this._attributeData=null,this._uniformData=null,this._uniformBlockData=null,this.transformFeedbackVaryings=null,wr[this._cacheKey]=null}static from(t){const e=`${t.vertex}:${t.fragment}`;return wr[e]||(wr[e]=new hu(t),wr[e]._cacheKey=e),wr[e]}};U0.defaultOptions={preferredVertexPrecision:"highp",preferredFragmentPrecision:"mediump"};let H0=U0;const Ip={uint8x2:{size:2,stride:2,normalised:!1},uint8x4:{size:4,stride:4,normalised:!1},sint8x2:{size:2,stride:2,normalised:!1},sint8x4:{size:4,stride:4,normalised:!1},unorm8x2:{size:2,stride:2,normalised:!0},unorm8x4:{size:4,stride:4,normalised:!0},snorm8x2:{size:2,stride:2,normalised:!0},snorm8x4:{size:4,stride:4,normalised:!0},uint16x2:{size:2,stride:4,normalised:!1},uint16x4:{size:4,stride:8,normalised:!1},sint16x2:{size:2,stride:4,normalised:!1},sint16x4:{size:4,stride:8,normalised:!1},unorm16x2:{size:2,stride:4,normalised:!0},unorm16x4:{size:4,stride:8,normalised:!0},snorm16x2:{size:2,stride:4,normalised:!0},snorm16x4:{size:4,stride:8,normalised:!0},float16x2:{size:2,stride:4,normalised:!1},float16x4:{size:4,stride:8,normalised:!1},float32:{size:1,stride:4,normalised:!1},float32x2:{size:2,stride:8,normalised:!1},float32x3:{size:3,stride:12,normalised:!1},float32x4:{size:4,stride:16,normalised:!1},uint32:{size:1,stride:4,normalised:!1},uint32x2:{size:2,stride:8,normalised:!1},uint32x3:{size:3,stride:12,normalised:!1},uint32x4:{size:4,stride:16,normalised:!1},sint32:{size:1,stride:4,normalised:!1},sint32x2:{size:2,stride:8,normalised:!1},sint32x3:{size:3,stride:12,normalised:!1},sint32x4:{size:4,stride:16,normalised:!1}};function ik(s){return Ip[s]??Ip.float32}const sk={f32:"float32","vec2<f32>":"float32x2","vec3<f32>":"float32x3","vec4<f32>":"float32x4",vec2f:"float32x2",vec3f:"float32x3",vec4f:"float32x4",i32:"sint32","vec2<i32>":"sint32x2","vec3<i32>":"sint32x3","vec4<i32>":"sint32x4",vec2i:"sint32x2",vec3i:"sint32x3",vec4i:"sint32x4",u32:"uint32","vec2<u32>":"uint32x2","vec3<u32>":"uint32x3","vec4<u32>":"uint32x4",vec2u:"uint32x2",vec3u:"uint32x3",vec4u:"uint32x4",bool:"uint32","vec2<bool>":"uint32x2","vec3<bool>":"uint32x3","vec4<bool>":"uint32x4"},Zp=/@location\((\d+)\)\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_<>]+)(?:,|\s|\)|$)/g;function Dp(s,t){let e;for(;(e=Zp.exec(s))!==null;){const i=sk[e[3]]??"float32";t[e[2]]={location:parseInt(e[1],10),format:i,stride:ik(i).stride,offset:0,instance:!1,start:0}}Zp.lastIndex=0}function nk(s){return s.replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"")}function rk({source:s,entryPoint:t}){const e={},i=nk(s),n=i.indexOf(`fn ${t}(`);if(n===-1)return e;const r=i.indexOf("->",n);if(r===-1)return e;const o=i.substring(n,r);if(Dp(o,e),Object.keys(e).length===0){const a=o.match(/\(\s*\w+\s*:\s*(\w+)/);if(a){const l=a[1],h=new RegExp(`struct\\s+${l}\\s*\\{([^}]+)\\}`,"s"),c=i.match(h);c&&Dp(c[1],e)}}return e}function Nh(s){var u,d;const t=/(^|[^/])@(group|binding)\(\d+\)[^;]+;/g,e=/@group\((\d+)\)/,i=/@binding\((\d+)\)/,n=/var(<[^>]+>)? (\w+)/,r=/:\s*([\w<>]+)/,o=/struct\s+(\w+)\s*{([^}]+)}/g,a=/(\w+)\s*:\s*([\w\<\>]+)/g,l=/struct\s+(\w+)/,h=(u=s.match(t))==null?void 0:u.map(f=>({group:parseInt(f.match(e)[1],10),binding:parseInt(f.match(i)[1],10),name:f.match(n)[2],isUniform:f.match(n)[1]==="<uniform>",type:f.match(r)[1]}));if(!h)return{groups:[],structs:[]};const c=((d=s.match(o))==null?void 0:d.map(f=>{const p=f.match(l)[1],g=f.match(a).reduce((m,O)=>{const[x,b]=O.split(":");return m[x.trim()]=b.trim(),m},{});return g?{name:p,members:g}:null}).filter(({name:f})=>h.some(p=>p.type===f||p.type.includes(`<${f}>`))))??[];return{groups:h,structs:c}}var Bs=(s=>(s[s.VERTEX=1]="VERTEX",s[s.FRAGMENT=2]="FRAGMENT",s[s.COMPUTE=4]="COMPUTE",s))(Bs||{});function ok({groups:s}){const t=[];for(let e=0;e<s.length;e++){const i=s[e];t[i.group]||(t[i.group]=[]),i.isUniform?t[i.group].push({binding:i.binding,visibility:Bs.VERTEX|Bs.FRAGMENT,buffer:{type:"uniform"}}):i.type==="sampler"?t[i.group].push({binding:i.binding,visibility:Bs.FRAGMENT,sampler:{type:"filtering"}}):i.type==="texture_2d"||i.type.startsWith("texture_2d<")?t[i.group].push({binding:i.binding,visibility:Bs.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d",multisampled:!1}}):i.type==="texture_2d_array"||i.type.startsWith("texture_2d_array<")?t[i.group].push({binding:i.binding,visibility:Bs.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d-array",multisampled:!1}}):(i.type==="texture_cube"||i.type.startsWith("texture_cube<"))&&t[i.group].push({binding:i.binding,visibility:Bs.FRAGMENT,texture:{sampleType:"float",viewDimension:"cube",multisampled:!1}})}for(let e=0;e<t.length;e++)t[e]||(t[e]=[]);return t}function ak({groups:s}){const t=[];for(let e=0;e<s.length;e++){const i=s[e];t[i.group]||(t[i.group]={}),t[i.group][i.name]=i.binding}return t}function lk(s,t){const e=new Set,i=new Set,n=[...s.structs,...t.structs].filter(o=>e.has(o.name)?!1:(e.add(o.name),!0)),r=[...s.groups,...t.groups].filter(o=>{const a=`${o.name}-${o.binding}`;return i.has(a)?!1:(i.add(a),!0)});return{structs:n,groups:r}}const Sr=Object.create(null);class oh{constructor(t){var a,l;this._layoutKey=0,this._attributeLocationsKey=0;const{fragment:e,vertex:i,layout:n,gpuLayout:r,name:o}=t;if(this.name=o,this.fragment=e,this.vertex=i,e.source===i.source){const h=Nh(e.source);this.structsAndGroups=h}else{const h=Nh(i.source),c=Nh(e.source);this.structsAndGroups=lk(h,c)}this.layout=n??ak(this.structsAndGroups),this.gpuLayout=r??ok(this.structsAndGroups),this.autoAssignGlobalUniforms=((a=this.layout[0])==null?void 0:a.globalUniforms)!==void 0,this.autoAssignLocalUniforms=((l=this.layout[1])==null?void 0:l.localUniforms)!==void 0,this._generateProgramKey()}_generateProgramKey(){const{vertex:t,fragment:e}=this,i=t.source+e.source+t.entryPoint+e.entryPoint;this._layoutKey=Nd(i,"program")}get attributeData(){return this._attributeData??(this._attributeData=rk(this.vertex)),this._attributeData}destroy(){this.gpuLayout=null,this.layout=null,this.structsAndGroups=null,this.fragment=null,this.vertex=null,Sr[this._cacheKey]=null}static from(t){const e=`${t.vertex.source}:${t.fragment.source}:${t.fragment.entryPoint}:${t.vertex.entryPoint}`;return Sr[e]||(Sr[e]=new oh(t),Sr[e]._cacheKey=e),Sr[e]}}const K0=["f32","i32","vec2<f32>","vec3<f32>","vec4<f32>","mat2x2<f32>","mat3x3<f32>","mat4x4<f32>","mat3x2<f32>","mat4x2<f32>","mat2x3<f32>","mat4x3<f32>","mat2x4<f32>","mat3x4<f32>","vec2<i32>","vec3<i32>","vec4<i32>"],hk=K0.reduce((s,t)=>(s[t]=!0,s),{});function ck(s,t){switch(s){case"f32":return 0;case"vec2<f32>":return new Float32Array(2*t);case"vec3<f32>":return new Float32Array(3*t);case"vec4<f32>":return new Float32Array(4*t);case"mat2x2<f32>":return new Float32Array([1,0,0,1]);case"mat3x3<f32>":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4x4<f32>":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}const J0=class ty{constructor(t,e){this._touched=0,this.uid=Dt("uniform"),this._resourceType="uniformGroup",this._resourceId=Dt("resource"),this.isUniformGroup=!0,this._dirtyId=0,this.destroyed=!1,e={...ty.defaultOptions,...e},this.uniformStructures=t;const i={};for(const n in t){const r=t[n];if(r.name=n,r.size=r.size??1,!hk[r.type]){const o=r.type.match(/^array<(\w+(?:<\w+>)?),\s*(\d+)>$/);if(o){const[,a,l]=o;throw new Error(`Uniform type ${r.type} is not supported. Use type: '${a}', size: ${l} instead.`)}throw new Error(`Uniform type ${r.type} is not supported. Supported uniform types are: ${K0.join(", ")}`)}r.value??(r.value=ck(r.type,r.size)),i[n]=r.value}this.uniforms=i,this._dirtyId=1,this.ubo=e.ubo,this.isStatic=e.isStatic,this._signature=Nd(Object.keys(i).map(n=>`${n}-${t[n].type}`).join("-"),"uniform-group")}update(){this._dirtyId++}};J0.defaultOptions={ubo:!1,isStatic:!1};let ey=J0;class Ua{constructor(t){this.resources=Object.create(null),this._dirty=!0;let e=0;for(const i in t){const n=t[i];this.setResource(n,e++)}this._updateKey()}_updateKey(){if(!this._dirty)return;this._dirty=!1;const t=[];let e=0;for(const i in this.resources)t[e++]=this.resources[i]._resourceId;this._key=t.join("|")}setResource(t,e){var n,r;const i=this.resources[e];t!==i&&((n=i==null?void 0:i.off)==null||n.call(i,"change",this.onResourceChange,this),(r=t.on)==null||r.call(t,"change",this.onResourceChange,this),this.resources[e]=t,this._dirty=!0)}getResource(t){return this.resources[t]}_touch(t,e){const i=this.resources;for(const n in i)i[n]._gcLastUsed=t,i[n]._touched=e}destroy(){var e;const t=this.resources;for(const i in t){const n=t[i];(e=n==null?void 0:n.off)==null||e.call(n,"change",this.onResourceChange,this)}this.resources=null}onResourceChange(t){this._dirty=!0,t.destroyed?this.destroy():this._updateKey()}}var cu=(s=>(s[s.WEBGL=1]="WEBGL",s[s.WEBGPU=2]="WEBGPU",s[s.CANVAS=4]="CANVAS",s[s.BOTH=3]="BOTH",s))(cu||{});class Vd extends Li{constructor(t){super(),this.uid=Dt("shader"),this._uniformBindMap=Object.create(null),this._ownedBindGroups=[],this._destroyed=!1;let{gpuProgram:e,glProgram:i,groups:n,resources:r,compatibleRenderers:o,groupMap:a}=t;this.gpuProgram=e,this.glProgram=i,o===void 0&&(o=0,e&&(o|=cu.WEBGPU),i&&(o|=cu.WEBGL)),this.compatibleRenderers=o;const l={};if(!r&&!n&&(r={}),r&&n)throw new Error("[Shader] Cannot have both resources and groups");if(!e&&n&&!a)throw new Error("[Shader] No group map or WebGPU shader provided - consider using resources instead.");if(!e&&n&&a)for(const h in a)for(const c in a[h]){const u=a[h][c];l[u]={group:h,binding:c,name:u}}else if(e&&n&&!a){const h=e.structsAndGroups.groups;a={},h.forEach(c=>{a[c.group]=a[c.group]||{},a[c.group][c.binding]=c.name,l[c.name]=c})}else if(r){n={},a={},e&&e.structsAndGroups.groups.forEach(u=>{a[u.group]=a[u.group]||{},a[u.group][u.binding]=u.name,l[u.name]=u});let h=0;for(const c in r)l[c]||(n[99]||(n[99]=new Ua,this._ownedBindGroups.push(n[99])),l[c]={group:99,binding:h,name:c},a[99]=a[99]||{},a[99][h]=c,h++);for(const c in r){const u=c;let d=r[c];!d.source&&!d._resourceType&&(d=new ey(d));const f=l[u];f&&(n[f.group]||(n[f.group]=new Ua,this._ownedBindGroups.push(n[f.group])),n[f.group].setResource(d,f.binding))}}this.groups=n,this._uniformBindMap=a,this.resources=this._buildResourceAccessor(n,l)}addResource(t,e,i){var n,r;(n=this._uniformBindMap)[e]||(n[e]={}),(r=this._uniformBindMap[e])[i]||(r[i]=t),this.groups[e]||(this.groups[e]=new Ua,this._ownedBindGroups.push(this.groups[e]))}_buildResourceAccessor(t,e){const i={};for(const n in e){const r=e[n];Object.defineProperty(i,r.name,{get(){return t[r.group].getResource(r.binding)},set(o){t[r.group].setResource(o,r.binding)}})}return i}destroy(t=!1){var e,i;this._destroyed||(this._destroyed=!0,this.emit("destroy",this),t&&((e=this.gpuProgram)==null||e.destroy(),(i=this.glProgram)==null||i.destroy()),this.gpuProgram=null,this.glProgram=null,this.removeAllListeners(),this._uniformBindMap=null,this._ownedBindGroups.forEach(n=>{n.destroy()}),this._ownedBindGroups=null,this.resources=null,this.groups=null)}static from(t){const{gpu:e,gl:i,...n}=t;let r,o;return e&&(r=oh.from(e)),i&&(o=H0.from(i)),new Vd({gpuProgram:r,glProgram:o,...n})}}const uk={normal:0,add:1,multiply:2,screen:3,overlay:4,erase:5,"normal-npm":6,"add-npm":7,"screen-npm":8,min:9,max:10},Vh=0,Fh=1,qh=2,jh=3,Uh=4,Hh=5,uu=class iy{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<<Vh)}set blend(t){!!(this.data&1<<Vh)!==t&&(this.data^=1<<Vh)}get offsets(){return!!(this.data&1<<Fh)}set offsets(t){!!(this.data&1<<Fh)!==t&&(this.data^=1<<Fh)}set cullMode(t){if(t==="none"){this.culling=!1;return}this.culling=!0,this.clockwiseFrontFace=t==="front"}get cullMode(){return this.culling?this.clockwiseFrontFace?"front":"back":"none"}get culling(){return!!(this.data&1<<qh)}set culling(t){!!(this.data&1<<qh)!==t&&(this.data^=1<<qh)}get depthTest(){return!!(this.data&1<<jh)}set depthTest(t){!!(this.data&1<<jh)!==t&&(this.data^=1<<jh)}get depthMask(){return!!(this.data&1<<Hh)}set depthMask(t){!!(this.data&1<<Hh)!==t&&(this.data^=1<<Hh)}get clockwiseFrontFace(){return!!(this.data&1<<Uh)}set clockwiseFrontFace(t){!!(this.data&1<<Uh)!==t&&(this.data^=1<<Uh)}get blendMode(){return this._blendMode}set blendMode(t){this.blend=t!=="none",this._blendMode=t,this._blendModeId=uk[t]||0}get polygonOffset(){return this._polygonOffset}set polygonOffset(t){this.offsets=!!t,this._polygonOffset=t}toString(){return`[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`}static for2d(){const t=new iy;return t.depthTest=!1,t.blend=!0,t}};uu.default2d=uu.for2d();let sy=uu;const du=[];Vt.handleByNamedList(lt.Environment,du);async function dk(s){if(!s)for(let t=0;t<du.length;t++){const e=du[t];if(e.value.test()){await e.value.load();return}}}let vr;function fk(){if(typeof vr=="boolean")return vr;try{vr=new Function("param1","param2","param3","return param1[param2] === param3;")({a:"b"},"a","b")===!0}catch{vr=!1}return vr}function Bp(s,t,e=2){const i=t&&t.length,n=i?t[0]*e:s.length;let r=ny(s,0,n,e,!0);const o=[];if(!r||r.next===r.prev)return o;let a,l,h;if(i&&(r=yk(s,t,r,e)),s.length>80*e){a=s[0],l=s[1];let c=a,u=l;for(let d=e;d<n;d+=e){const f=s[d],p=s[d+1];f<a&&(a=f),p<l&&(l=p),f>c&&(c=f),p>u&&(u=p)}h=Math.max(c-a,u-l),h=h!==0?32767/h:0}return go(r,o,e,a,l,h,0),o}function ny(s,t,e,i,n){let r;if(n===Tk(s,t,e,i)>0)for(let o=t;o<e;o+=i)r=Xp(o/i|0,s[o],s[o+1],r);else for(let o=e-i;o>=t;o-=i)r=Xp(o/i|0,s[o],s[o+1],r);return r&&ir(r,r.next)&&(Oo(r),r=r.next),r}function rn(s,t){if(!s)return s;t||(t=s);let e=s,i;do if(i=!1,!e.steiner&&(ir(e,e.next)||Et(e.prev,e,e.next)===0)){if(Oo(e),e=t=e.prev,e===e.next)break;i=!0}else e=e.next;while(i||e!==t);return t}function go(s,t,e,i,n,r,o){if(!s)return;!o&&r&&vk(s,i,n,r);let a=s;for(;s.prev!==s.next;){const l=s.prev,h=s.next;if(r?gk(s,i,n,r):pk(s)){t.push(l.i,s.i,h.i),Oo(s),s=h.next,a=h.next;continue}if(s=h,s===a){o?o===1?(s=mk(rn(s),t),go(s,t,e,i,n,r,2)):o===2&&Ok(s,t,e,i,n,r):go(rn(s),t,e,i,n,r,1);break}}}function pk(s){const t=s.prev,e=s,i=s.next;if(Et(t,e,i)>=0)return!1;const n=t.x,r=e.x,o=i.x,a=t.y,l=e.y,h=i.y,c=Math.min(n,r,o),u=Math.min(a,l,h),d=Math.max(n,r,o),f=Math.max(a,l,h);let p=i.next;for(;p!==t;){if(p.x>=c&&p.x<=d&&p.y>=u&&p.y<=f&&Wr(n,a,r,l,o,h,p.x,p.y)&&Et(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function gk(s,t,e,i){const n=s.prev,r=s,o=s.next;if(Et(n,r,o)>=0)return!1;const a=n.x,l=r.x,h=o.x,c=n.y,u=r.y,d=o.y,f=Math.min(a,l,h),p=Math.min(c,u,d),g=Math.max(a,l,h),m=Math.max(c,u,d),O=fu(f,p,t,e,i),x=fu(g,m,t,e,i);let b=s.prevZ,v=s.nextZ;for(;b&&b.z>=O&&v&&v.z<=x;){if(b.x>=f&&b.x<=g&&b.y>=p&&b.y<=m&&b!==n&&b!==o&&Wr(a,c,l,u,h,d,b.x,b.y)&&Et(b.prev,b,b.next)>=0||(b=b.prevZ,v.x>=f&&v.x<=g&&v.y>=p&&v.y<=m&&v!==n&&v!==o&&Wr(a,c,l,u,h,d,v.x,v.y)&&Et(v.prev,v,v.next)>=0))return!1;v=v.nextZ}for(;b&&b.z>=O;){if(b.x>=f&&b.x<=g&&b.y>=p&&b.y<=m&&b!==n&&b!==o&&Wr(a,c,l,u,h,d,b.x,b.y)&&Et(b.prev,b,b.next)>=0)return!1;b=b.prevZ}for(;v&&v.z<=x;){if(v.x>=f&&v.x<=g&&v.y>=p&&v.y<=m&&v!==n&&v!==o&&Wr(a,c,l,u,h,d,v.x,v.y)&&Et(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function mk(s,t){let e=s;do{const i=e.prev,n=e.next.next;!ir(i,n)&&oy(i,e,e.next,n)&&mo(i,n)&&mo(n,i)&&(t.push(i.i,e.i,n.i),Oo(e),Oo(e.next),e=s=n),e=e.next}while(e!==s);return rn(e)}function Ok(s,t,e,i,n,r){let o=s;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&$k(o,a)){let l=ay(o,a);o=rn(o,o.next),l=rn(l,l.next),go(o,t,e,i,n,r,0),go(l,t,e,i,n,r,0);return}a=a.next}o=o.next}while(o!==s)}function yk(s,t,e,i){const n=[];for(let r=0,o=t.length;r<o;r++){const a=t[r]*i,l=r<o-1?t[r+1]*i:s.length,h=ny(s,a,l,i,!1);h===h.next&&(h.steiner=!0),n.push(kk(h))}n.sort(xk);for(let r=0;r<n.length;r++)e=bk(n[r],e);return e}function xk(s,t){let e=s.x-t.x;if(e===0&&(e=s.y-t.y,e===0)){const i=(s.next.y-s.y)/(s.next.x-s.x),n=(t.next.y-t.y)/(t.next.x-t.x);e=i-n}return e}function bk(s,t){const e=wk(s,t);if(!e)return t;const i=ay(e,s);return rn(i,i.next),rn(e,e.next)}function wk(s,t){let e=t;const i=s.x,n=s.y;let r=-1/0,o;if(ir(s,e))return e;do{if(ir(s,e.next))return e.next;if(n<=e.y&&n>=e.next.y&&e.next.y!==e.y){const u=e.x+(n-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(u<=i&&u>r&&(r=u,o=e.x<e.next.x?e:e.next,u===i))return o}e=e.next}while(e!==t);if(!o)return null;const a=o,l=o.x,h=o.y;let c=1/0;e=o;do{if(i>=e.x&&e.x>=l&&i!==e.x&&ry(n<h?i:r,n,l,h,n<h?r:i,n,e.x,e.y)){const u=Math.abs(n-e.y)/(i-e.x);mo(e,s)&&(u<c||u===c&&(e.x>o.x||e.x===o.x&&Sk(o,e)))&&(o=e,c=u)}e=e.next}while(e!==a);return o}function Sk(s,t){return Et(s.prev,s,t.prev)<0&&Et(t.next,s,s.next)<0}function vk(s,t,e,i){let n=s;do n.z===0&&(n.z=fu(n.x,n.y,t,e,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next;while(n!==s);n.prevZ.nextZ=null,n.prevZ=null,_k(n)}function _k(s){let t,e=1;do{let i=s,n;s=null;let r=null;for(t=0;i;){t++;let o=i,a=0;for(let h=0;h<e&&(a++,o=o.nextZ,!!o);h++);let l=e;for(;a>0||l>0&&o;)a!==0&&(l===0||!o||i.z<=o.z)?(n=i,i=i.nextZ,a--):(n=o,o=o.nextZ,l--),r?r.nextZ=n:s=n,n.prevZ=r,r=n;i=o}r.nextZ=null,e*=2}while(t>1);return s}function fu(s,t,e,i,n){return s=(s-e)*n|0,t=(t-i)*n|0,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,s|t<<1}function kk(s){let t=s,e=s;do(t.x<e.x||t.x===e.x&&t.y<e.y)&&(e=t),t=t.next;while(t!==s);return e}function ry(s,t,e,i,n,r,o,a){return(n-o)*(t-a)>=(s-o)*(r-a)&&(s-o)*(i-a)>=(e-o)*(t-a)&&(e-o)*(r-a)>=(n-o)*(i-a)}function Wr(s,t,e,i,n,r,o,a){return!(s===o&&t===a)&&ry(s,t,e,i,n,r,o,a)}function $k(s,t){return s.next.i!==t.i&&s.prev.i!==t.i&&!Ck(s,t)&&(mo(s,t)&&mo(t,s)&&Pk(s,t)&&(Et(s.prev,s,t.prev)||Et(s,t.prev,t))||ir(s,t)&&Et(s.prev,s,s.next)>0&&Et(t.prev,t,t.next)>0)}function Et(s,t,e){return(t.y-s.y)*(e.x-t.x)-(t.x-s.x)*(e.y-t.y)}function ir(s,t){return s.x===t.x&&s.y===t.y}function oy(s,t,e,i){const n=ha(Et(s,t,e)),r=ha(Et(s,t,i)),o=ha(Et(e,i,s)),a=ha(Et(e,i,t));return!!(n!==r&&o!==a||n===0&&la(s,e,t)||r===0&&la(s,i,t)||o===0&&la(e,s,i)||a===0&&la(e,t,i))}function la(s,t,e){return t.x<=Math.max(s.x,e.x)&&t.x>=Math.min(s.x,e.x)&&t.y<=Math.max(s.y,e.y)&&t.y>=Math.min(s.y,e.y)}function ha(s){return s>0?1:s<0?-1:0}function Ck(s,t){let e=s;do{if(e.i!==s.i&&e.next.i!==s.i&&e.i!==t.i&&e.next.i!==t.i&&oy(e,e.next,s,t))return!0;e=e.next}while(e!==s);return!1}function mo(s,t){return Et(s.prev,s,s.next)<0?Et(s,t,s.next)>=0&&Et(s,s.prev,t)>=0:Et(s,t,s.prev)<0||Et(s,s.next,t)<0}function Pk(s,t){let e=s,i=!1;const n=(s.x+t.x)/2,r=(s.y+t.y)/2;do e.y>r!=e.next.y>r&&e.next.y!==e.y&&n<(e.next.x-e.x)*(r-e.y)/(e.next.y-e.y)+e.x&&(i=!i),e=e.next;while(e!==s);return i}function ay(s,t){const e=pu(s.i,s.x,s.y),i=pu(t.i,t.x,t.y),n=s.next,r=t.prev;return s.next=t,t.prev=s,e.next=n,n.prev=e,i.next=e,e.prev=i,r.next=i,i.prev=r,i}function Xp(s,t,e,i){const n=pu(s,t,e);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function Oo(s){s.next.prev=s.prev,s.prev.next=s.next,s.prevZ&&(s.prevZ.nextZ=s.nextZ),s.nextZ&&(s.nextZ.prevZ=s.prevZ)}function pu(s,t,e){return{i:s,x:t,y:e,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Tk(s,t,e,i){let n=0;for(let r=t,o=e-i;r<e;r+=i)n+=(s[o]-s[r])*(s[r+1]+s[o+1]),o=r;return n}const Mk=Bp.default||Bp;var ly=(s=>(s[s.NONE=0]="NONE",s[s.COLOR=16384]="COLOR",s[s.STENCIL=1024]="STENCIL",s[s.DEPTH=256]="DEPTH",s[s.COLOR_DEPTH=16640]="COLOR_DEPTH",s[s.COLOR_STENCIL=17408]="COLOR_STENCIL",s[s.DEPTH_STENCIL=1280]="DEPTH_STENCIL",s[s.ALL=17664]="ALL",s))(ly||{});class Ak{constructor(t){this.items=[],this._name=t}emit(t,e,i,n,r,o,a,l){const{name:h,items:c}=this;for(let u=0,d=c.length;u<d;u++)c[u][h](t,e,i,n,r,o,a,l);return this}add(t){return t[this._name]&&(this.remove(t),this.items.push(t)),this}remove(t){const e=this.items.indexOf(t);return e!==-1&&this.items.splice(e,1),this}contains(t){return this.items.indexOf(t)!==-1}removeAll(){return this.items.length=0,this}destroy(){this.removeAll(),this.items=null,this._name=null}get empty(){return this.items.length===0}get name(){return this._name}}const Qk=["init","destroy","contextChange","resolutionChange","resetState","renderEnd","renderStart","render","update","postrender","prerender"],hy=class cy extends Li{constructor(t){super(),this.tick=0,this.uid=Dt("renderer"),this.runners=Object.create(null),this.renderPipes=Object.create(null),this._initOptions={},this._systemsHash=Object.create(null),this.type=t.type,this.name=t.name,this.config=t;const e=[...Qk,...this.config.runners??[]];this._addRunners(...e),this._unsafeEvalCheck()}async init(t={}){const e=t.skipExtensionImports===!0?!0:t.manageImports===!1;await dk(e),this._addSystems(this.config.systems),this._addPipes(this.config.renderPipes,this.config.renderPipeAdaptors);for(const i in this._systemsHash)t={...this._systemsHash[i].constructor.defaultOptions,...t};t={...cy.defaultOptions,...t},this._roundPixels=t.roundPixels?1:0;for(let i=0;i<this.runners.init.items.length;i++)await this.runners.init.items[i].init(t);this._initOptions=t}render(t,e){this.tick++;let i=t;if(i instanceof Ht&&(i={container:i},e&&(xt(It,"passing a second argument is deprecated, please use render options instead"),i.target=e.renderTexture)),i.target||(i.target=this.view.renderTarget),i.target===this.view.renderTarget&&(this._lastObjectRendered=i.container,i.clearColor??(i.clearColor=this.background.colorRgba),i.clear??(i.clear=this.background.clearBeforeRender)),i.clearColor){const n=Array.isArray(i.clearColor)&&i.clearColor.length===4;i.clearColor=n?i.clearColor:Jt.shared.setValue(i.clearColor).toArray()}i.transform||(i.container.updateLocalTransform(),i.transform=i.container.localTransform),i.container.visible&&(i.container.enableRenderGroup(),this.runners.prerender.emit(i),this.runners.renderStart.emit(i),this.runners.render.emit(i),this.runners.renderEnd.emit(i),this.runners.postrender.emit(i))}resize(t,e,i){const n=this.view.resolution;this.view.resize(t,e,i),this.emit("resize",this.view.screen.width,this.view.screen.height,this.view.resolution),i!==void 0&&i!==n&&this.runners.resolutionChange.emit(i)}clear(t={}){const e=this;t.target||(t.target=e.renderTarget.renderTarget),t.clearColor||(t.clearColor=this.background.colorRgba),t.clear??(t.clear=ly.ALL);const{clear:i,clearColor:n,target:r,mipLevel:o,layer:a}=t;Jt.shared.setValue(n??this.background.colorRgba),e.renderTarget.clear(r,i,Jt.shared.toArray(),o??0,a??0)}get resolution(){return this.view.resolution}set resolution(t){this.view.resolution=t,this.runners.resolutionChange.emit(t)}get width(){return this.view.texture.frame.width}get height(){return this.view.texture.frame.height}get canvas(){return this.view.canvas}get lastObjectRendered(){return this._lastObjectRendered}get renderingToScreen(){return this.renderTarget.renderingToScreen}get screen(){return this.view.screen}_addRunners(...t){t.forEach(e=>{this.runners[e]=new Ak(e)})}_addSystems(t){let e;for(e in t){const i=t[e];this._addSystem(i.value,i.name)}}_addSystem(t,e){const i=new t(this);if(this[e])throw new Error(`Whoops! The name "${e}" is already in use`);this[e]=i,this._systemsHash[e]=i;for(const n in this.runners)this.runners[n].add(i);return this}_addPipes(t,e){const i=e.reduce((n,r)=>(n[r.name]=r.value,n),{});t.forEach(n=>{const r=n.value,o=n.name,a=i[o];this.renderPipes[o]=new r(this,a?new a:null),this.runners.destroy.add(this.renderPipes[o])})}destroy(t=!1){this.runners.destroy.items.reverse(),this.runners.destroy.emit(t),(t===!0||typeof t=="object"&&t.releaseGlobalResources)&&zo.release(),Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash=null,this.renderPipes=null,this.removeAllListeners()}generateTexture(t){return this.textureGenerator.generateTexture(t)}get roundPixels(){return!!this._roundPixels}_unsafeEvalCheck(){if(!fk())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}resetState(){this.runners.resetState.emit()}};hy.defaultOptions={resolution:1,failIfMajorPerformanceCaveat:!1,roundPixels:!1};let uy=hy,ca;function Rk(s){return ca!==void 0||(ca=(()=>{var e;const t={stencil:!0,failIfMajorPerformanceCaveat:s??uy.defaultOptions.failIfMajorPerformanceCaveat};try{if(!Ye.get().getWebGLRenderingContext())return!1;let n=Ye.get().createCanvas().getContext("webgl",t);const r=!!((e=n==null?void 0:n.getContextAttributes())!=null&&e.stencil);if(n){const o=n.getExtension("WEBGL_lose_context");o&&o.loseContext()}return n=null,r}catch{return!1}})()),ca}let ua;async function Ek(s={}){return ua!==void 0||(ua=await(async()=>{const t=Ye.get().getNavigator().gpu;if(!t)return!1;try{return await(await t.requestAdapter(s)).requestDevice(),!0}catch{return!1}})()),ua}const zp=["webgl","webgpu","canvas"];async function Lk(s){let t=[];s.preference?Array.isArray(s.preference)?t=s.preference.slice():(t.push(s.preference),zp.forEach(r=>{r!==s.preference&&t.push(r)})):t=zp.slice();let e,i={};for(let r=0;r<t.length;r++){const o=t[r];if(o==="webgpu"&&await Ek()){const{WebGPURenderer:a}=await Ur(async()=>{const{WebGPURenderer:l}=await import("./WebGPURenderer-CDYm-Qve.js");return{WebGPURenderer:l}},__vite__mapDeps([4,5,6,3]));e=a,i={...s,...s.webgpu};break}else if(o==="webgl"&&Rk(s.failIfMajorPerformanceCaveat??uy.defaultOptions.failIfMajorPerformanceCaveat)){const{WebGLRenderer:a}=await Ur(async()=>{const{WebGLRenderer:l}=await import("./WebGLRenderer-CkUVdJjj.js");return{WebGLRenderer:l}},__vite__mapDeps([7,5,6,3]));e=a,i={...s,...s.webgl};break}else if(o==="canvas"){const{CanvasRenderer:a}=await Ur(async()=>{const{CanvasRenderer:l}=await import("./CanvasRenderer-oAjr4VPy.js");return{CanvasRenderer:l}},__vite__mapDeps([8,6,3,2]));e=a,i={...s,...s.canvasOptions};break}}if(delete i.webgpu,delete i.webgl,delete i.canvasOptions,!e)throw new Error("No available renderer for the current environment");const n=new e;return await n.init(i),n}const dy="8.18.1";class fy{static init(){var t;(t=globalThis.__PIXI_APP_INIT__)==null||t.call(globalThis,this,dy)}static destroy(){}}fy.extension=lt.Application;class Ik{constructor(t){this._renderer=t}init(){var t;(t=globalThis.__PIXI_RENDERER_INIT__)==null||t.call(globalThis,this._renderer,dy)}destroy(){this._renderer=null}}Ik.extension={type:[lt.WebGLSystem,lt.WebGPUSystem],name:"initHook",priority:-10};class py{static init(t){Object.defineProperty(this,"resizeTo",{configurable:!0,set(e){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=e,e&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this._cancelResize();let e,i;if(this._resizeTo===globalThis.window)e=globalThis.innerWidth,i=globalThis.innerHeight;else{const{clientWidth:n,clientHeight:r}=this._resizeTo;e=n,i=r}this.renderer.resize(e,i),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=t.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}py.extension=lt.Application;class gy{static init(t){t=Object.assign({autoStart:!0,sharedTicker:!1},t),Object.defineProperty(this,"ticker",{configurable:!0,set(e){this._ticker&&this._ticker.remove(this.render,this),this._ticker=e,e&&e.add(this.render,this,ml.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=t.sharedTicker?Qn.shared:new Qn,t.autoStart&&this.start()}static destroy(){if(this._ticker){const t=this._ticker;this.ticker=null,t.destroy()}}}gy.extension=lt.Application;Vt.add(py);Vt.add(gy);const my=class gu{constructor(...t){this.stage=new Ht,t[0]!==void 0&&xt(It,"Application constructor options are deprecated, please use Application.init() instead.")}async init(t){t={...t},this.stage||(this.stage=new Ht),this.renderer=await Lk(t),gu._plugins.forEach(e=>{e.init.call(this,t)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return xt(It,"Application.view is deprecated, please use Application.canvas instead."),this.renderer.canvas}get screen(){return this.renderer.screen}get domContainerRoot(){var t;return(t=this.renderer.renderPipes.dom)==null?void 0:t._domElement}destroy(t=!1,e=!1){const i=gu._plugins.slice(0);i.reverse(),i.forEach(n=>{n.destroy.call(this)}),this.stage.destroy(e),this.stage=null,this.renderer.destroy(t),this.renderer=null}};my._plugins=[];let Fd=my;Vt.handleByList(lt.Application,Fd._plugins);Vt.add(fy);var Kh,Wp;function Zk(){if(Wp)return Kh;Wp=1,Kh=e;var s={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},t=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function e(r){var o=[];return r.replace(t,function(a,l,h){var c=l.toLowerCase();for(h=n(h),c=="m"&&h.length>2&&(o.push([l].concat(h.splice(0,2))),c="l",l=l=="m"?"l":"L");;){if(h.length==s[c])return h.unshift(l),o.push(h);if(h.length<s[c])throw new Error("malformed path data");o.push([l].concat(h.splice(0,s[c])))}}),o}var i=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function n(r){var o=r.match(i);return o?o.map(Number):[]}return Kh}var Dk=Zk();const Bk=m0(Dk);function Xk(s,t){const e=Bk(s),i=[];let n=null,r=0,o=0;for(let a=0;a<e.length;a++){const l=e[a],h=l[0],c=l;switch(h){case"M":r=c[1],o=c[2],t.moveTo(r,o);break;case"m":r+=c[1],o+=c[2],t.moveTo(r,o);break;case"H":r=c[1],t.lineTo(r,o);break;case"h":r+=c[1],t.lineTo(r,o);break;case"V":o=c[1],t.lineTo(r,o);break;case"v":o+=c[1],t.lineTo(r,o);break;case"L":r=c[1],o=c[2],t.lineTo(r,o);break;case"l":r+=c[1],o+=c[2],t.lineTo(r,o);break;case"C":r=c[5],o=c[6],t.bezierCurveTo(c[1],c[2],c[3],c[4],r,o);break;case"c":t.bezierCurveTo(r+c[1],o+c[2],r+c[3],o+c[4],r+c[5],o+c[6]),r+=c[5],o+=c[6];break;case"S":r=c[3],o=c[4],t.bezierCurveToShort(c[1],c[2],r,o);break;case"s":t.bezierCurveToShort(r+c[1],o+c[2],r+c[3],o+c[4]),r+=c[3],o+=c[4];break;case"Q":r=c[3],o=c[4],t.quadraticCurveTo(c[1],c[2],r,o);break;case"q":t.quadraticCurveTo(r+c[1],o+c[2],r+c[3],o+c[4]),r+=c[3],o+=c[4];break;case"T":r=c[1],o=c[2],t.quadraticCurveToShort(r,o);break;case"t":r+=c[1],o+=c[2],t.quadraticCurveToShort(r,o);break;case"A":r=c[6],o=c[7],t.arcToSvg(c[1],c[2],c[3],c[4],c[5],r,o);break;case"a":r+=c[6],o+=c[7],t.arcToSvg(c[1],c[2],c[3],c[4],c[5],r,o);break;case"Z":case"z":t.closePath(),i.length>0&&(n=i.pop(),n?(r=n.startX,o=n.startY):(r=0,o=0)),n=null;break;default:ve(`Unknown SVG path command: ${h}`)}h!=="Z"&&h!=="z"&&n===null&&(n={startX:r,startY:o},i.push(n))}return t}class qd{constructor(t=0,e=0,i=0){this.type="circle",this.x=t,this.y=e,this.radius=i}clone(){return new qd(this.x,this.y,this.radius)}contains(t,e){if(this.radius<=0)return!1;const i=this.radius*this.radius;let n=this.x-t,r=this.y-e;return n*=n,r*=r,n+r<=i}strokeContains(t,e,i,n=.5){if(this.radius===0)return!1;const r=this.x-t,o=this.y-e,a=this.radius,l=(1-n)*i,h=Math.sqrt(r*r+o*o);return h<=a+l&&h>a-(i-l)}getBounds(t){return t||(t=new Zt),t.x=this.x-this.radius,t.y=this.y-this.radius,t.width=this.radius*2,t.height=this.radius*2,t}copyFrom(t){return this.x=t.x,this.y=t.y,this.radius=t.radius,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`}}class jd{constructor(t=0,e=0,i=0,n=0){this.type="ellipse",this.x=t,this.y=e,this.halfWidth=i,this.halfHeight=n}clone(){return new jd(this.x,this.y,this.halfWidth,this.halfHeight)}contains(t,e){if(this.halfWidth<=0||this.halfHeight<=0)return!1;let i=(t-this.x)/this.halfWidth,n=(e-this.y)/this.halfHeight;return i*=i,n*=n,i+n<=1}strokeContains(t,e,i,n=.5){const{halfWidth:r,halfHeight:o}=this;if(r<=0||o<=0)return!1;const a=i*(1-n),l=i-a,h=r-l,c=o-l,u=r+a,d=o+a,f=t-this.x,p=e-this.y,g=f*f/(h*h)+p*p/(c*c),m=f*f/(u*u)+p*p/(d*d);return g>1&&m<=1}getBounds(t){return t||(t=new Zt),t.x=this.x-this.halfWidth,t.y=this.y-this.halfHeight,t.width=this.halfWidth*2,t.height=this.halfHeight*2,t}copyFrom(t){return this.x=t.x,this.y=t.y,this.halfWidth=t.halfWidth,this.halfHeight=t.halfHeight,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:Ellipse x=${this.x} y=${this.y} halfWidth=${this.halfWidth} halfHeight=${this.halfHeight}]`}}function zk(s,t,e,i,n,r){const o=s-e,a=t-i,l=n-e,h=r-i,c=o*l+a*h,u=l*l+h*h;let d=-1;u!==0&&(d=c/u);let f,p;d<0?(f=e,p=i):d>1?(f=n,p=r):(f=e+d*l,p=i+d*h);const g=s-f,m=t-p;return g*g+m*m}let Wk,Gk;class Kr{constructor(...t){this.type="polygon";let e=Array.isArray(t[0])?t[0]:t;if(typeof e[0]!="number"){const i=[];for(let n=0,r=e.length;n<r;n++)i.push(e[n].x,e[n].y);e=i}this.points=e,this.closePath=!0}isClockwise(){let t=0;const e=this.points,i=e.length;for(let n=0;n<i;n+=2){const r=e[n],o=e[n+1],a=e[(n+2)%i],l=e[(n+3)%i];t+=(a-r)*(l+o)}return t<0}containsPolygon(t){const e=this.getBounds(Wk),i=t.getBounds(Gk);if(!e.containsRect(i))return!1;const n=t.points;for(let r=0;r<n.length;r+=2){const o=n[r],a=n[r+1];if(!this.contains(o,a))return!1}return!0}clone(){const t=this.points.slice(),e=new Kr(t);return e.closePath=this.closePath,e}contains(t,e){let i=!1;const n=this.points.length/2;for(let r=0,o=n-1;r<n;o=r++){const a=this.points[r*2],l=this.points[r*2+1],h=this.points[o*2],c=this.points[o*2+1];l>e!=c>e&&t<(h-a)*((e-l)/(c-l))+a&&(i=!i)}return i}strokeContains(t,e,i,n=.5){const r=i*i,o=r*(1-n),a=r-o,{points:l}=this,h=l.length-(this.closePath?0:2);for(let c=0;c<h;c+=2){const u=l[c],d=l[c+1],f=l[(c+2)%l.length],p=l[(c+3)%l.length],g=zk(t,e,u,d,f,p),m=Math.sign((f-u)*(e-d)-(p-d)*(t-u));if(g<=(m<0?a:o))return!0}return!1}getBounds(t){t||(t=new Zt);const e=this.points;let i=1/0,n=-1/0,r=1/0,o=-1/0;for(let a=0,l=e.length;a<l;a+=2){const h=e[a],c=e[a+1];i=h<i?h:i,n=h>n?h:n,r=c<r?c:r,o=c>o?c:o}return t.x=i,t.width=n-i,t.y=r,t.height=o-r,t}copyFrom(t){return this.points=t.points.slice(),this.closePath=t.closePath,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:PolygoncloseStroke=${this.closePath}points=${this.points.reduce((t,e)=>`${t}, ${e}`,"")}]`}get lastX(){return this.points[this.points.length-2]}get lastY(){return this.points[this.points.length-1]}get x(){return xt("8.11.0","Polygon.lastX is deprecated, please use Polygon.lastX instead."),this.points[this.points.length-2]}get y(){return xt("8.11.0","Polygon.y is deprecated, please use Polygon.lastY instead."),this.points[this.points.length-1]}get startX(){return this.points[0]}get startY(){return this.points[1]}}const da=(s,t,e,i,n,r,o)=>{const a=s-e,l=t-i,h=Math.sqrt(a*a+l*l);return h>=n-r&&h<=n+o};class Ud{constructor(t=0,e=0,i=0,n=0,r=20){this.type="roundedRectangle",this.x=t,this.y=e,this.width=i,this.height=n,this.radius=r}getBounds(t){return t||(t=new Zt),t.x=this.x,t.y=this.y,t.width=this.width,t.height=this.height,t}clone(){return new Ud(this.x,this.y,this.width,this.height,this.radius)}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.copyFrom(this),t}contains(t,e){if(this.width<=0||this.height<=0)return!1;if(t>=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){const i=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(e>=this.y+i&&e<=this.y+this.height-i||t>=this.x+i&&t<=this.x+this.width-i)return!0;let n=t-(this.x+i),r=e-(this.y+i);const o=i*i;if(n*n+r*r<=o||(n=t-(this.x+this.width-i),n*n+r*r<=o)||(r=e-(this.y+this.height-i),n*n+r*r<=o)||(n=t-(this.x+i),n*n+r*r<=o))return!0}return!1}strokeContains(t,e,i,n=.5){const{x:r,y:o,width:a,height:l,radius:h}=this,c=i*(1-n),u=i-c,d=r+h,f=o+h,p=a-h*2,g=l-h*2,m=r+a,O=o+l;return(t>=r-c&&t<=r+u||t>=m-u&&t<=m+c)&&e>=f&&e<=f+g||(e>=o-c&&e<=o+u||e>=O-u&&e<=O+c)&&t>=d&&t<=d+p?!0:t<d&&e<f&&da(t,e,d,f,h,u,c)||t>m-h&&e<f&&da(t,e,m-h,f,h,u,c)||t>m-h&&e>O-h&&da(t,e,m-h,O-h,h,u,c)||t<d&&e>O-h&&da(t,e,d,O-h,h,u,c)}toString(){return`[pixi.js/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`}}const Oy={};function Yk(s,t,e){let i=2166136261;for(let n=0;n<t;n++)i^=s[n].uid,i=Math.imul(i,16777619),i>>>=0;return Oy[i]||Nk(s,t,i,e)}function Nk(s,t,e,i){const n={};let r=0;for(let a=0;a<i;a++){const l=a<t?s[a]:bt.EMPTY.source;n[r++]=l.source,n[r++]=l.style}const o=new Ua(n);return Oy[e]=o,o}class Gp{constructor(t){typeof t=="number"?this.rawBinaryData=new ArrayBuffer(t):t instanceof Uint8Array?this.rawBinaryData=t.buffer:this.rawBinaryData=t,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData),this.size=this.rawBinaryData.byteLength}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}get float64View(){return this._float64Array||(this._float64Array=new Float64Array(this.rawBinaryData)),this._float64Array}get bigUint64View(){return this._bigUint64Array||(this._bigUint64Array=new BigUint64Array(this.rawBinaryData)),this._bigUint64Array}view(t){return this[`${t}View`]}destroy(){this.rawBinaryData=null,this.uint32View=null,this.float32View=null,this.uint16View=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._int32View=null,this._float64Array=null,this._bigUint64Array=null}static sizeOf(t){switch(t){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${t} isn't a valid view type`)}}}function Yp(s,t,e,i){if(e??(e=0),i??(i=Math.min(s.byteLength-e,t.byteLength)),!(e&7)&&!(i&7)){const n=i/8;new Float64Array(t,0,n).set(new Float64Array(s,e,n))}else if(!(e&3)&&!(i&3)){const n=i/4;new Float32Array(t,0,n).set(new Float32Array(s,e,n))}else new Uint8Array(t).set(new Uint8Array(s,e,i))}const Vk={normal:"normal-npm",add:"add-npm",screen:"screen-npm"};var Fk=(s=>(s[s.DISABLED=0]="DISABLED",s[s.RENDERING_MASK_ADD=1]="RENDERING_MASK_ADD",s[s.MASK_ACTIVE=2]="MASK_ACTIVE",s[s.INVERSE_MASK_ACTIVE=3]="INVERSE_MASK_ACTIVE",s[s.RENDERING_MASK_REMOVE=4]="RENDERING_MASK_REMOVE",s[s.NONE=5]="NONE",s))(Fk||{});function Np(s,t){return t.alphaMode==="no-premultiply-alpha"&&Vk[s]||s}const qk=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(`
|
|
24
|
+
`);function jk(s){let t="";for(let e=0;e<s;++e)e>0&&(t+=`
|
|
25
|
+
else `),e<s-1&&(t+=`if(test == ${e}.0){}`);return t}function Uk(s,t){if(s===0)throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");const e=t.createShader(t.FRAGMENT_SHADER);try{for(;;){const i=qk.replace(/%forloop%/gi,jk(s));if(t.shaderSource(e,i),t.compileShader(e),!t.getShaderParameter(e,t.COMPILE_STATUS))s=s/2|0;else break}}finally{t.deleteShader(e)}return s}let gn=null;function Hk(){var t;if(gn)return gn;const s=j0();return gn=s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS),gn=Uk(gn,s),(t=s.getExtension("WEBGL_lose_context"))==null||t.loseContext(),gn}class Kk{constructor(){this.ids=Object.create(null),this.textures=[],this.count=0}clear(){for(let t=0;t<this.count;t++){const e=this.textures[t];this.textures[t]=null,this.ids[e.uid]=null}this.count=0}}class Jk{constructor(){this.renderPipeId="batch",this.action="startBatch",this.start=0,this.size=0,this.textures=new Kk,this.blendMode="normal",this.topology="triangle-strip",this.canBundle=!0}destroy(){this.textures=null,this.gpuBindGroup=null,this.bindGroup=null,this.batcher=null,this.elements=null}}const Jr=[];let Ol=0;zo.register({clear:()=>{if(Jr.length>0)for(const s of Jr)s&&s.destroy();Jr.length=0,Ol=0}});function Vp(){return Ol>0?Jr[--Ol]:new Jk}function Fp(s){s.elements=null,Jr[Ol++]=s}let _r=0;const yy=class xy{constructor(t){this.uid=Dt("batcher"),this.dirty=!0,this.batchIndex=0,this.batches=[],this._elements=[],t={...xy.defaultOptions,...t},t.maxTextures||(xt("v8.8.0","maxTextures is a required option for Batcher now, please pass it in the options"),t.maxTextures=Hk());const{maxTextures:e,attributesInitialSize:i,indicesInitialSize:n}=t;this.attributeBuffer=new Gp(i*4),this.indexBuffer=new Uint16Array(n),this.maxTextures=e}begin(){this.elementSize=0,this.elementStart=0,this.indexSize=0,this.attributeSize=0;for(let t=0;t<this.batchIndex;t++)Fp(this.batches[t]);this.batchIndex=0,this._batchIndexStart=0,this._batchIndexSize=0,this.dirty=!0}add(t){this._elements[this.elementSize++]=t,t._indexStart=this.indexSize,t._attributeStart=this.attributeSize,t._batcher=this,this.indexSize+=t.indexSize,this.attributeSize+=t.attributeSize*this.vertexSize}checkAndUpdateTexture(t,e){const i=t._batch.textures.ids[e._source.uid];return!i&&i!==0?!1:(t._textureId=i,t.texture=e,!0)}updateElement(t){this.dirty=!0;const e=this.attributeBuffer;t.packAsQuad?this.packQuadAttributes(t,e.float32View,e.uint32View,t._attributeStart,t._textureId):this.packAttributes(t,e.float32View,e.uint32View,t._attributeStart,t._textureId)}break(t){const e=this._elements;if(!e[this.elementStart])return;let i=Vp(),n=i.textures;n.clear();const r=e[this.elementStart];let o=Np(r.blendMode,r.texture._source),a=r.topology;this.attributeSize*4>this.attributeBuffer.size&&this._resizeAttributeBuffer(this.attributeSize*4),this.indexSize>this.indexBuffer.length&&this._resizeIndexBuffer(this.indexSize);const l=this.attributeBuffer.float32View,h=this.attributeBuffer.uint32View,c=this.indexBuffer;let u=this._batchIndexSize,d=this._batchIndexStart,f="startBatch",p=[];const g=this.maxTextures;for(let m=this.elementStart;m<this.elementSize;++m){const O=e[m];e[m]=null;const b=O.texture._source,v=Np(O.blendMode,b),w=o!==v||a!==O.topology;if(b._batchTick===_r&&!w){O._textureId=b._textureBindLocation,u+=O.indexSize,O.packAsQuad?(this.packQuadAttributes(O,l,h,O._attributeStart,O._textureId),this.packQuadIndex(c,O._indexStart,O._attributeStart/this.vertexSize)):(this.packAttributes(O,l,h,O._attributeStart,O._textureId),this.packIndex(O,c,O._indexStart,O._attributeStart/this.vertexSize)),O._batch=i,p.push(O);continue}b._batchTick=_r,(n.count>=g||w)&&(this._finishBatch(i,d,u-d,n,o,a,t,f,p),f="renderBatch",d=u,o=v,a=O.topology,i=Vp(),n=i.textures,n.clear(),p=[],++_r),O._textureId=b._textureBindLocation=n.count,n.ids[b.uid]=n.count,n.textures[n.count++]=b,O._batch=i,p.push(O),u+=O.indexSize,O.packAsQuad?(this.packQuadAttributes(O,l,h,O._attributeStart,O._textureId),this.packQuadIndex(c,O._indexStart,O._attributeStart/this.vertexSize)):(this.packAttributes(O,l,h,O._attributeStart,O._textureId),this.packIndex(O,c,O._indexStart,O._attributeStart/this.vertexSize))}n.count>0&&(this._finishBatch(i,d,u-d,n,o,a,t,f,p),d=u,++_r),this.elementStart=this.elementSize,this._batchIndexStart=d,this._batchIndexSize=u}_finishBatch(t,e,i,n,r,o,a,l,h){t.gpuBindGroup=null,t.bindGroup=null,t.action=l,t.batcher=this,t.textures=n,t.blendMode=r,t.topology=o,t.start=e,t.size=i,t.elements=h,++_r,this.batches[this.batchIndex++]=t,a.add(t)}finish(t){this.break(t)}ensureAttributeBuffer(t){t*4<=this.attributeBuffer.size||this._resizeAttributeBuffer(t*4)}ensureIndexBuffer(t){t<=this.indexBuffer.length||this._resizeIndexBuffer(t)}_resizeAttributeBuffer(t){const e=Math.max(t,this.attributeBuffer.size*2),i=new Gp(e);Yp(this.attributeBuffer.rawBinaryData,i.rawBinaryData),this.attributeBuffer=i}_resizeIndexBuffer(t){const e=this.indexBuffer;let i=Math.max(t,e.length*1.5);i+=i%2;const n=i>65535?new Uint32Array(i):new Uint16Array(i);if(n.BYTES_PER_ELEMENT!==e.BYTES_PER_ELEMENT)for(let r=0;r<e.length;r++)n[r]=e[r];else Yp(e.buffer,n.buffer);this.indexBuffer=n}packQuadIndex(t,e,i){t[e]=i+0,t[e+1]=i+1,t[e+2]=i+2,t[e+3]=i+0,t[e+4]=i+2,t[e+5]=i+3}packIndex(t,e,i,n){const r=t.indices,o=t.indexSize,a=t.indexOffset,l=t.attributeOffset;for(let h=0;h<o;h++)e[i++]=n+r[h+a]-l}destroy(t={}){var e;if(this.batches!==null){for(let i=0;i<this.batchIndex;i++)Fp(this.batches[i]);this.batches=null,this.geometry.destroy(!0),this.geometry=null,t.shader&&((e=this.shader)==null||e.destroy(),this.shader=null);for(let i=0;i<this._elements.length;i++)this._elements[i]&&(this._elements[i]._batch=null);this._elements=null,this.indexBuffer=null,this.attributeBuffer.destroy(),this.attributeBuffer=null}}};yy.defaultOptions={maxTextures:null,attributesInitialSize:4,indicesInitialSize:6};let t$=yy;var Pe=(s=>(s[s.MAP_READ=1]="MAP_READ",s[s.MAP_WRITE=2]="MAP_WRITE",s[s.COPY_SRC=4]="COPY_SRC",s[s.COPY_DST=8]="COPY_DST",s[s.INDEX=16]="INDEX",s[s.VERTEX=32]="VERTEX",s[s.UNIFORM=64]="UNIFORM",s[s.STORAGE=128]="STORAGE",s[s.INDIRECT=256]="INDIRECT",s[s.QUERY_RESOLVE=512]="QUERY_RESOLVE",s[s.STATIC=1024]="STATIC",s))(Pe||{});class yo extends Li{constructor(t){let{data:e,size:i}=t;const{usage:n,label:r,shrinkToFit:o}=t;super(),this._gpuData=Object.create(null),this._gcLastUsed=-1,this.autoGarbageCollect=!0,this.uid=Dt("buffer"),this._resourceType="buffer",this._resourceId=Dt("resource"),this._touched=0,this._updateID=1,this._dataInt32=null,this.shrinkToFit=!0,this.destroyed=!1,e instanceof Array&&(e=new Float32Array(e)),this._data=e,i??(i=e==null?void 0:e.byteLength);const a=!!e;this.descriptor={size:i,usage:n,mappedAtCreation:a,label:r},this.shrinkToFit=o??!0}get data(){return this._data}set data(t){this.setDataWithSize(t,t.length,!0)}get dataInt32(){return this._dataInt32||(this._dataInt32=new Int32Array(this.data.buffer)),this._dataInt32}get static(){return!!(this.descriptor.usage&Pe.STATIC)}set static(t){t?this.descriptor.usage|=Pe.STATIC:this.descriptor.usage&=~Pe.STATIC}setDataWithSize(t,e,i){if(this._updateID++,this._updateSize=e*t.BYTES_PER_ELEMENT,this._data===t){i&&this.emit("update",this);return}const n=this._data;if(this._data=t,this._dataInt32=null,!n||n.length!==t.length){!this.shrinkToFit&&n&&t.byteLength<n.byteLength?i&&this.emit("update",this):(this.descriptor.size=t.byteLength,this._resourceId=Dt("resource"),this.emit("change",this));return}i&&this.emit("update",this)}update(t){this._updateSize=t??this._updateSize,this._updateID++,this.emit("update",this)}unload(){var t;this.emit("unload",this);for(const e in this._gpuData)(t=this._gpuData[e])==null||t.destroy();this._gpuData=Object.create(null)}destroy(){this.destroyed=!0,this.unload(),this.emit("destroy",this),this.emit("change",this),this._data=null,this.descriptor=null,this.removeAllListeners()}}function by(s,t){if(!(s instanceof yo)){let e=t?Pe.INDEX:Pe.VERTEX;s instanceof Array&&(t?(s=new Uint32Array(s),e=Pe.INDEX|Pe.COPY_DST):(s=new Float32Array(s),e=Pe.VERTEX|Pe.COPY_DST)),s=new yo({data:s,label:t?"index-mesh-buffer":"vertex-mesh-buffer",usage:e})}return s}function e$(s,t,e){const i=s.getAttribute(t);if(!i)return e.minX=0,e.minY=0,e.maxX=0,e.maxY=0,e;const n=i.buffer.data;let r=1/0,o=1/0,a=-1/0,l=-1/0;const h=n.BYTES_PER_ELEMENT,c=(i.offset||0)/h,u=(i.stride||8)/h;for(let d=c;d<n.length;d+=u){const f=n[d],p=n[d+1];f>a&&(a=f),p>l&&(l=p),f<r&&(r=f),p<o&&(o=p)}return e.minX=r,e.minY=o,e.maxX=a,e.maxY=l,e}function i$(s){return(s instanceof yo||Array.isArray(s)||s.BYTES_PER_ELEMENT)&&(s={buffer:s}),s.buffer=by(s.buffer,!1),s}class s$ extends Li{constructor(t={}){super(),this._gpuData=Object.create(null),this.autoGarbageCollect=!0,this._gcLastUsed=-1,this.uid=Dt("geometry"),this._layoutKey=0,this.instanceCount=1,this._bounds=new si,this._boundsDirty=!0;const{attributes:e,indexBuffer:i,topology:n}=t;if(this.buffers=[],this.attributes={},e)for(const r in e)this.addAttribute(r,e[r]);this.instanceCount=t.instanceCount??1,i&&this.addIndex(i),this.topology=n||"triangle-list"}onBufferUpdate(){this._boundsDirty=!0,this.emit("update",this)}getAttribute(t){return this.attributes[t]}getIndex(){return this.indexBuffer}getBuffer(t){return this.getAttribute(t).buffer}getSize(){for(const t in this.attributes){const e=this.attributes[t];return e.buffer.data.length/(e.stride/4||e.size)}return 0}addAttribute(t,e){const i=i$(e);this.buffers.indexOf(i.buffer)===-1&&(this.buffers.push(i.buffer),i.buffer.on("update",this.onBufferUpdate,this),i.buffer.on("change",this.onBufferUpdate,this)),this.attributes[t]=i}addIndex(t){this.indexBuffer=by(t,!0),this.buffers.push(this.indexBuffer)}get bounds(){return this._boundsDirty?(this._boundsDirty=!1,e$(this,"aPosition",this._bounds)):this._bounds}unload(){var t;this.emit("unload",this);for(const e in this._gpuData)(t=this._gpuData[e])==null||t.destroy();this._gpuData=Object.create(null)}destroy(t=!1){var e;this.emit("destroy",this),this.removeAllListeners(),t&&this.buffers.forEach(i=>i.destroy()),this.unload(),(e=this.indexBuffer)==null||e.destroy(),this.attributes=null,this.buffers=null,this.indexBuffer=null,this._bounds=null}}const n$=new Float32Array(1),r$=new Uint32Array(1);class o$ extends s${constructor(){const e=new yo({data:n$,label:"attribute-batch-buffer",usage:Pe.VERTEX|Pe.COPY_DST,shrinkToFit:!1}),i=new yo({data:r$,label:"index-batch-buffer",usage:Pe.INDEX|Pe.COPY_DST,shrinkToFit:!1}),n=24;super({attributes:{aPosition:{buffer:e,format:"float32x2",stride:n,offset:0},aUV:{buffer:e,format:"float32x2",stride:n,offset:8},aColor:{buffer:e,format:"unorm8x4",stride:n,offset:16},aTextureIdAndRound:{buffer:e,format:"uint16x2",stride:n,offset:20}},indexBuffer:i})}}function qp(s,t,e){if(s)for(const i in s){const n=i.toLocaleLowerCase(),r=t[n];if(r){let o=s[i];i==="header"&&(o=o.replace(/@in\s+[^;]+;\s*/g,"").replace(/@out\s+[^;]+;\s*/g,"")),e&&r.push(`//----${e}----//`),r.push(o)}else ve(`${i} placement hook does not exist in shader`)}}const a$=/\{\{(.*?)\}\}/g;function jp(s){var i;const t={};return(((i=s.match(a$))==null?void 0:i.map(n=>n.replace(/[{()}]/g,"")))??[]).forEach(n=>{t[n]=[]}),t}function Up(s,t){let e;const i=/@in\s+([^;]+);/g;for(;(e=i.exec(s))!==null;)t.push(e[1])}function Hp(s,t,e=!1){const i=[];Up(t,i),s.forEach(a=>{a.header&&Up(a.header,i)});const n=i;e&&n.sort();const r=n.map((a,l)=>` @location(${l}) ${a},`).join(`
|
|
26
|
+
`);let o=t.replace(/@in\s+[^;]+;\s*/g,"");return o=o.replace("{{in}}",`
|
|
27
|
+
${r}
|
|
28
|
+
`),o}function Kp(s,t){let e;const i=/@out\s+([^;]+);/g;for(;(e=i.exec(s))!==null;)t.push(e[1])}function l$(s){const e=/\b(\w+)\s*:/g.exec(s);return e?e[1]:""}function h$(s){const t=/@.*?\s+/g;return s.replace(t,"")}function c$(s,t){const e=[];Kp(t,e),s.forEach(l=>{l.header&&Kp(l.header,e)});let i=0;const n=e.sort().map(l=>l.indexOf("builtin")>-1?l:`@location(${i++}) ${l}`).join(`,
|
|
29
|
+
`),r=e.sort().map(l=>` var ${h$(l)};`).join(`
|
|
30
|
+
`),o=`return VSOutput(
|
|
31
|
+
${e.sort().map(l=>` ${l$(l)}`).join(`,
|
|
32
|
+
`)});`;let a=t.replace(/@out\s+[^;]+;\s*/g,"");return a=a.replace("{{struct}}",`
|
|
33
|
+
${n}
|
|
34
|
+
`),a=a.replace("{{start}}",`
|
|
35
|
+
${r}
|
|
36
|
+
`),a=a.replace("{{return}}",`
|
|
37
|
+
${o}
|
|
38
|
+
`),a}function Jp(s,t){let e=s;for(const i in t){const n=t[i];n.join(`
|
|
39
|
+
`).length?e=e.replace(`{{${i}}}`,`//-----${i} START-----//
|
|
40
|
+
${n.join(`
|
|
41
|
+
`)}
|
|
42
|
+
//----${i} FINISH----//`):e=e.replace(`{{${i}}}`,"")}return e}const ps=Object.create(null),Jh=new Map;let u$=0;function d$({template:s,bits:t}){const e=wy(s,t);if(ps[e])return ps[e];const{vertex:i,fragment:n}=p$(s,t);return ps[e]=Sy(i,n,t),ps[e]}function f$({template:s,bits:t}){const e=wy(s,t);return ps[e]||(ps[e]=Sy(s.vertex,s.fragment,t)),ps[e]}function p$(s,t){const e=t.map(o=>o.vertex).filter(o=>!!o),i=t.map(o=>o.fragment).filter(o=>!!o);let n=Hp(e,s.vertex,!0);n=c$(e,n);const r=Hp(i,s.fragment,!0);return{vertex:n,fragment:r}}function wy(s,t){return t.map(e=>(Jh.has(e)||Jh.set(e,u$++),Jh.get(e))).sort((e,i)=>e-i).join("-")+s.vertex+s.fragment}function Sy(s,t,e){const i=jp(s),n=jp(t);return e.forEach(r=>{qp(r.vertex,i,r.name),qp(r.fragment,n,r.name)}),{vertex:Jp(s,i),fragment:Jp(t,n)}}const g$=`
|
|
43
|
+
@in aPosition: vec2<f32>;
|
|
44
|
+
@in aUV: vec2<f32>;
|
|
45
|
+
|
|
46
|
+
@out @builtin(position) vPosition: vec4<f32>;
|
|
47
|
+
@out vUV : vec2<f32>;
|
|
48
|
+
@out vColor : vec4<f32>;
|
|
49
|
+
|
|
50
|
+
{{header}}
|
|
51
|
+
|
|
52
|
+
struct VSOutput {
|
|
53
|
+
{{struct}}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
@vertex
|
|
57
|
+
fn main( {{in}} ) -> VSOutput {
|
|
58
|
+
|
|
59
|
+
var worldTransformMatrix = globalUniforms.uWorldTransformMatrix;
|
|
60
|
+
var modelMatrix = mat3x3<f32>(
|
|
61
|
+
1.0, 0.0, 0.0,
|
|
62
|
+
0.0, 1.0, 0.0,
|
|
63
|
+
0.0, 0.0, 1.0
|
|
64
|
+
);
|
|
65
|
+
var position = aPosition;
|
|
66
|
+
var uv = aUV;
|
|
67
|
+
|
|
68
|
+
{{start}}
|
|
69
|
+
|
|
70
|
+
vColor = vec4<f32>(1., 1., 1., 1.);
|
|
71
|
+
|
|
72
|
+
{{main}}
|
|
73
|
+
|
|
74
|
+
vUV = uv;
|
|
75
|
+
|
|
76
|
+
var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix;
|
|
77
|
+
|
|
78
|
+
vPosition = vec4<f32>((modelViewProjectionMatrix * vec3<f32>(position, 1.0)).xy, 0.0, 1.0);
|
|
79
|
+
|
|
80
|
+
vColor *= globalUniforms.uWorldColorAlpha;
|
|
81
|
+
|
|
82
|
+
{{end}}
|
|
83
|
+
|
|
84
|
+
{{return}}
|
|
85
|
+
};
|
|
86
|
+
`,m$=`
|
|
87
|
+
@in vUV : vec2<f32>;
|
|
88
|
+
@in vColor : vec4<f32>;
|
|
89
|
+
|
|
90
|
+
{{header}}
|
|
91
|
+
|
|
92
|
+
@fragment
|
|
93
|
+
fn main(
|
|
94
|
+
{{in}}
|
|
95
|
+
) -> @location(0) vec4<f32> {
|
|
96
|
+
|
|
97
|
+
{{start}}
|
|
98
|
+
|
|
99
|
+
var outColor:vec4<f32>;
|
|
100
|
+
|
|
101
|
+
{{main}}
|
|
102
|
+
|
|
103
|
+
var finalColor:vec4<f32> = outColor * vColor;
|
|
104
|
+
|
|
105
|
+
{{end}}
|
|
106
|
+
|
|
107
|
+
return finalColor;
|
|
108
|
+
};
|
|
109
|
+
`,O$=`
|
|
110
|
+
in vec2 aPosition;
|
|
111
|
+
in vec2 aUV;
|
|
112
|
+
|
|
113
|
+
out vec4 vColor;
|
|
114
|
+
out vec2 vUV;
|
|
115
|
+
|
|
116
|
+
{{header}}
|
|
117
|
+
|
|
118
|
+
void main(void){
|
|
119
|
+
|
|
120
|
+
mat3 worldTransformMatrix = uWorldTransformMatrix;
|
|
121
|
+
mat3 modelMatrix = mat3(
|
|
122
|
+
1.0, 0.0, 0.0,
|
|
123
|
+
0.0, 1.0, 0.0,
|
|
124
|
+
0.0, 0.0, 1.0
|
|
125
|
+
);
|
|
126
|
+
vec2 position = aPosition;
|
|
127
|
+
vec2 uv = aUV;
|
|
128
|
+
|
|
129
|
+
{{start}}
|
|
130
|
+
|
|
131
|
+
vColor = vec4(1.);
|
|
132
|
+
|
|
133
|
+
{{main}}
|
|
134
|
+
|
|
135
|
+
vUV = uv;
|
|
136
|
+
|
|
137
|
+
mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix;
|
|
138
|
+
|
|
139
|
+
gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
|
|
140
|
+
|
|
141
|
+
vColor *= uWorldColorAlpha;
|
|
142
|
+
|
|
143
|
+
{{end}}
|
|
144
|
+
}
|
|
145
|
+
`,y$=`
|
|
146
|
+
|
|
147
|
+
in vec4 vColor;
|
|
148
|
+
in vec2 vUV;
|
|
149
|
+
|
|
150
|
+
out vec4 finalColor;
|
|
151
|
+
|
|
152
|
+
{{header}}
|
|
153
|
+
|
|
154
|
+
void main(void) {
|
|
155
|
+
|
|
156
|
+
{{start}}
|
|
157
|
+
|
|
158
|
+
vec4 outColor;
|
|
159
|
+
|
|
160
|
+
{{main}}
|
|
161
|
+
|
|
162
|
+
finalColor = outColor * vColor;
|
|
163
|
+
|
|
164
|
+
{{end}}
|
|
165
|
+
}
|
|
166
|
+
`,x$={name:"global-uniforms-bit",vertex:{header:`
|
|
167
|
+
struct GlobalUniforms {
|
|
168
|
+
uProjectionMatrix:mat3x3<f32>,
|
|
169
|
+
uWorldTransformMatrix:mat3x3<f32>,
|
|
170
|
+
uWorldColorAlpha: vec4<f32>,
|
|
171
|
+
uResolution: vec2<f32>,
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
@group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;
|
|
175
|
+
`}},b$={name:"global-uniforms-bit",vertex:{header:`
|
|
176
|
+
uniform mat3 uProjectionMatrix;
|
|
177
|
+
uniform mat3 uWorldTransformMatrix;
|
|
178
|
+
uniform vec4 uWorldColorAlpha;
|
|
179
|
+
uniform vec2 uResolution;
|
|
180
|
+
`}};function w$({bits:s,name:t}){const e=d$({template:{fragment:m$,vertex:g$},bits:[x$,...s]});return oh.from({name:t,vertex:{source:e.vertex,entryPoint:"main"},fragment:{source:e.fragment,entryPoint:"main"}})}function S$({bits:s,name:t}){return new H0({name:t,...f$({template:{vertex:O$,fragment:y$},bits:[b$,...s]})})}const v$={name:"color-bit",vertex:{header:`
|
|
181
|
+
@in aColor: vec4<f32>;
|
|
182
|
+
`,main:`
|
|
183
|
+
vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);
|
|
184
|
+
`}},_$={name:"color-bit",vertex:{header:`
|
|
185
|
+
in vec4 aColor;
|
|
186
|
+
`,main:`
|
|
187
|
+
vColor *= vec4(aColor.rgb * aColor.a, aColor.a);
|
|
188
|
+
`}},tc={};function k$(s){const t=[];if(s===1)t.push("@group(1) @binding(0) var textureSource1: texture_2d<f32>;"),t.push("@group(1) @binding(1) var textureSampler1: sampler;");else{let e=0;for(let i=0;i<s;i++)t.push(`@group(1) @binding(${e++}) var textureSource${i+1}: texture_2d<f32>;`),t.push(`@group(1) @binding(${e++}) var textureSampler${i+1}: sampler;`)}return t.join(`
|
|
189
|
+
`)}function $$(s){const t=[];if(s===1)t.push("outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);");else{t.push("switch vTextureId {");for(let e=0;e<s;e++)e===s-1?t.push(" default:{"):t.push(` case ${e}:{`),t.push(` outColor = textureSampleGrad(textureSource${e+1}, textureSampler${e+1}, vUV, uvDx, uvDy);`),t.push(" break;}");t.push("}")}return t.join(`
|
|
190
|
+
`)}function C$(s){return tc[s]||(tc[s]={name:"texture-batch-bit",vertex:{header:`
|
|
191
|
+
@in aTextureIdAndRound: vec2<u32>;
|
|
192
|
+
@out @interpolate(flat) vTextureId : u32;
|
|
193
|
+
`,main:`
|
|
194
|
+
vTextureId = aTextureIdAndRound.y;
|
|
195
|
+
`,end:`
|
|
196
|
+
if(aTextureIdAndRound.x == 1)
|
|
197
|
+
{
|
|
198
|
+
vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
|
|
199
|
+
}
|
|
200
|
+
`},fragment:{header:`
|
|
201
|
+
@in @interpolate(flat) vTextureId: u32;
|
|
202
|
+
|
|
203
|
+
${k$(s)}
|
|
204
|
+
`,main:`
|
|
205
|
+
var uvDx = dpdx(vUV);
|
|
206
|
+
var uvDy = dpdy(vUV);
|
|
207
|
+
|
|
208
|
+
${$$(s)}
|
|
209
|
+
`}}),tc[s]}const ec={};function P$(s){const t=[];for(let e=0;e<s;e++)e>0&&t.push("else"),e<s-1&&t.push(`if(vTextureId < ${e}.5)`),t.push("{"),t.push(` outColor = texture(uTextures[${e}], vUV);`),t.push("}");return t.join(`
|
|
210
|
+
`)}function T$(s){return ec[s]||(ec[s]={name:"texture-batch-bit",vertex:{header:`
|
|
211
|
+
in vec2 aTextureIdAndRound;
|
|
212
|
+
out float vTextureId;
|
|
213
|
+
|
|
214
|
+
`,main:`
|
|
215
|
+
vTextureId = aTextureIdAndRound.y;
|
|
216
|
+
`,end:`
|
|
217
|
+
if(aTextureIdAndRound.x == 1.)
|
|
218
|
+
{
|
|
219
|
+
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
|
|
220
|
+
}
|
|
221
|
+
`},fragment:{header:`
|
|
222
|
+
in float vTextureId;
|
|
223
|
+
|
|
224
|
+
uniform sampler2D uTextures[${s}];
|
|
225
|
+
|
|
226
|
+
`,main:`
|
|
227
|
+
|
|
228
|
+
${P$(s)}
|
|
229
|
+
`}}),ec[s]}const M$={name:"round-pixels-bit",vertex:{header:`
|
|
230
|
+
fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>
|
|
231
|
+
{
|
|
232
|
+
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
|
|
233
|
+
}
|
|
234
|
+
`}},A$={name:"round-pixels-bit",vertex:{header:`
|
|
235
|
+
vec2 roundPixels(vec2 position, vec2 targetSize)
|
|
236
|
+
{
|
|
237
|
+
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
|
|
238
|
+
}
|
|
239
|
+
`}},tg={};function Q$(s){let t=tg[s];if(t)return t;const e=new Int32Array(s);for(let i=0;i<s;i++)e[i]=i;return t=tg[s]=new ey({uTextures:{value:e,type:"i32",size:s}},{isStatic:!0}),t}class eg extends Vd{constructor(t){const e=S$({name:"batch",bits:[_$,T$(t),A$]}),i=w$({name:"batch",bits:[v$,C$(t),M$]});super({glProgram:e,gpuProgram:i,resources:{batchSamplers:Q$(t)}}),this.maxTextures=t}}let kr=null;const vy=class _y extends t${constructor(t){super(t),this.geometry=new o$,this.name=_y.extension.name,this.vertexSize=6,kr??(kr=new eg(t.maxTextures)),this.shader=kr}packAttributes(t,e,i,n,r){const o=r<<16|t.roundPixels&65535,a=t.transform,l=a.a,h=a.b,c=a.c,u=a.d,d=a.tx,f=a.ty,{positions:p,uvs:g}=t,m=t.color,O=t.attributeOffset,x=O+t.attributeSize;for(let b=O;b<x;b++){const v=b*2,w=p[v],S=p[v+1];e[n++]=l*w+c*S+d,e[n++]=u*S+h*w+f,e[n++]=g[v],e[n++]=g[v+1],i[n++]=m,i[n++]=o}}packQuadAttributes(t,e,i,n,r){const o=t.texture,a=t.transform,l=a.a,h=a.b,c=a.c,u=a.d,d=a.tx,f=a.ty,p=t.bounds,g=p.maxX,m=p.minX,O=p.maxY,x=p.minY,b=o.uvs,v=t.color,w=r<<16|t.roundPixels&65535;e[n+0]=l*m+c*x+d,e[n+1]=u*x+h*m+f,e[n+2]=b.x0,e[n+3]=b.y0,i[n+4]=v,i[n+5]=w,e[n+6]=l*g+c*x+d,e[n+7]=u*x+h*g+f,e[n+8]=b.x1,e[n+9]=b.y1,i[n+10]=v,i[n+11]=w,e[n+12]=l*g+c*O+d,e[n+13]=u*O+h*g+f,e[n+14]=b.x2,e[n+15]=b.y2,i[n+16]=v,i[n+17]=w,e[n+18]=l*m+c*O+d,e[n+19]=u*O+h*m+f,e[n+20]=b.x3,e[n+21]=b.y3,i[n+22]=v,i[n+23]=w}_updateMaxTextures(t){this.shader.maxTextures!==t&&(kr=new eg(t),this.shader=kr)}destroy(){this.shader=null,super.destroy()}};vy.extension={type:[lt.Batcher],name:"default"};let R$=vy;class Wo{constructor(t){this.items=Object.create(null);const{renderer:e,type:i,onUnload:n,priority:r,name:o}=t;this._renderer=e,e.gc.addResourceHash(this,"items",i,r??0),this._onUnload=n,this.name=o}add(t){return this.items[t.uid]?!1:(this.items[t.uid]=t,t.once("unload",this.remove,this),t._gcLastUsed=this._renderer.gc.now,!0)}remove(t,...e){var n;if(!this.items[t.uid])return;const i=t._gpuData[this._renderer.uid];i&&((n=this._onUnload)==null||n.call(this,t,...e),i.destroy(),t._gpuData[this._renderer.uid]=null,this.items[t.uid]=null)}removeAll(...t){Object.values(this.items).forEach(e=>e&&this.remove(e,...t))}destroy(...t){this.removeAll(...t),this.items=Object.create(null),this._renderer=null,this._onUnload=null}}function E$(s,t,e,i,n,r,o,a=null){let l=0;e*=t,n*=r;const h=a.a,c=a.b,u=a.c,d=a.d,f=a.tx,p=a.ty;for(;l<o;){const g=s[e],m=s[e+1];i[n]=h*g+u*m+f,i[n+1]=c*g+d*m+p,n+=r,e+=t,l++}}function L$(s,t,e,i){let n=0;for(t*=e;n<i;)s[t]=0,s[t+1]=0,t+=e,n++}function ky(s,t,e,i,n){const r=t.a,o=t.b,a=t.c,l=t.d,h=t.tx,c=t.ty;e||(e=0),i||(i=2),n||(n=s.length/i-e);let u=e*i;for(let d=0;d<n;d++){const f=s[u],p=s[u+1];s[u]=r*f+a*p+h,s[u+1]=o*f+l*p+c,u+=i}}const I$=new ft;class Hd{constructor(){this.packAsQuad=!1,this.batcherName="default",this.topology="triangle-list",this.applyTransform=!0,this.roundPixels=0,this._batcher=null,this._batch=null}get uvs(){return this.geometryData.uvs}get positions(){return this.geometryData.vertices}get indices(){return this.geometryData.indices}get blendMode(){return this.renderable&&this.applyTransform?this.renderable.groupBlendMode:"normal"}get color(){const t=this.baseColor,e=t>>16|t&65280|(t&255)<<16,i=this.renderable;return i?M0(e,i.groupColor)+(this.alpha*i.groupAlpha*255<<24):e+(this.alpha*255<<24)}get transform(){var t;return((t=this.renderable)==null?void 0:t.groupTransform)||I$}copyTo(t){t.indexOffset=this.indexOffset,t.indexSize=this.indexSize,t.attributeOffset=this.attributeOffset,t.attributeSize=this.attributeSize,t.baseColor=this.baseColor,t.alpha=this.alpha,t.texture=this.texture,t.geometryData=this.geometryData,t.topology=this.topology}reset(){this.applyTransform=!0,this.renderable=null,this.topology="triangle-list"}destroy(){this.renderable=null,this.texture=null,this.geometryData=null,this._batcher=null,this._batch=null}}const xo={extension:{type:lt.ShapeBuilder,name:"circle"},build(s,t){let e,i,n,r,o,a;if(s.type==="circle"){const v=s;if(o=a=v.radius,o<=0)return!1;e=v.x,i=v.y,n=r=0}else if(s.type==="ellipse"){const v=s;if(o=v.halfWidth,a=v.halfHeight,o<=0||a<=0)return!1;e=v.x,i=v.y,n=r=0}else{const v=s,w=v.width/2,S=v.height/2;e=v.x+w,i=v.y+S,o=a=Math.max(0,Math.min(v.radius,Math.min(w,S))),n=w-o,r=S-a}if(n<0||r<0)return!1;const l=Math.ceil(2.3*Math.sqrt(o+a)),h=l*8+(n?4:0)+(r?4:0);if(h===0)return!1;if(l===0)return t[0]=t[6]=e+n,t[1]=t[3]=i+r,t[2]=t[4]=e-n,t[5]=t[7]=i-r,!0;let c=0,u=l*4+(n?2:0)+2,d=u,f=h,p=n+o,g=r,m=e+p,O=e-p,x=i+g;if(t[c++]=m,t[c++]=x,t[--u]=x,t[--u]=O,r){const v=i-g;t[d++]=O,t[d++]=v,t[--f]=v,t[--f]=m}for(let v=1;v<l;v++){const w=Math.PI/2*(v/l),S=n+Math.cos(w)*o,y=r+Math.sin(w)*a,_=e+S,k=e-S,P=i+y,T=i-y;t[c++]=_,t[c++]=P,t[--u]=P,t[--u]=k,t[d++]=k,t[d++]=T,t[--f]=T,t[--f]=_}p=n,g=r+a,m=e+p,O=e-p,x=i+g;const b=i-g;return t[c++]=m,t[c++]=x,t[--f]=b,t[--f]=m,n&&(t[c++]=O,t[c++]=x,t[--f]=b,t[--f]=O),!0},triangulate(s,t,e,i,n,r){if(s.length===0)return;let o=0,a=0;for(let c=0;c<s.length;c+=2)o+=s[c],a+=s[c+1];o/=s.length/2,a/=s.length/2;let l=i;t[l*e]=o,t[l*e+1]=a;const h=l++;for(let c=0;c<s.length;c+=2)t[l*e]=s[c],t[l*e+1]=s[c+1],c>0&&(n[r++]=l,n[r++]=h,n[r++]=l-1),l++;n[r++]=h+1,n[r++]=h,n[r++]=l-1}},Z$={...xo,extension:{...xo.extension,name:"ellipse"}},D$={...xo,extension:{...xo.extension,name:"roundedRectangle"}},$y=1e-4,ig=1e-4;function B$(s){const t=s.length;if(t<6)return 1;let e=0;for(let i=0,n=s[t-2],r=s[t-1];i<t;i+=2){const o=s[i],a=s[i+1];e+=(o-n)*(a+r),n=o,r=a}return e<0?-1:1}function sg(s,t,e,i,n,r,o,a){const l=s-e*n,h=t-i*n,c=s+e*r,u=t+i*r;let d,f;o?(d=i,f=-e):(d=-i,f=e);const p=l+d,g=h+f,m=c+d,O=u+f;return a.push(p,g),a.push(m,O),2}function Ms(s,t,e,i,n,r,o,a){const l=e-s,h=i-t;let c=Math.atan2(l,h),u=Math.atan2(n-s,r-t);a&&c<u?c+=Math.PI*2:!a&&c>u&&(u+=Math.PI*2);let d=c;const f=u-c,p=Math.abs(f),g=Math.sqrt(l*l+h*h),m=(15*p*Math.sqrt(g)/Math.PI>>0)+1,O=f/m;if(d+=O,a){o.push(s,t),o.push(e,i);for(let x=1,b=d;x<m;x++,b+=O)o.push(s,t),o.push(s+Math.sin(b)*g,t+Math.cos(b)*g);o.push(s,t),o.push(n,r)}else{o.push(e,i),o.push(s,t);for(let x=1,b=d;x<m;x++,b+=O)o.push(s+Math.sin(b)*g,t+Math.cos(b)*g),o.push(s,t);o.push(n,r),o.push(s,t)}return m*2}function X$(s,t,e,i,n,r){const o=$y;if(s.length===0)return;const a=t;let l=a.alignment;if(t.alignment!==.5){let Z=B$(s);l=(l-.5)*Z+.5}const h=new Gt(s[0],s[1]),c=new Gt(s[s.length-2],s[s.length-1]),u=i,d=Math.abs(h.x-c.x)<o&&Math.abs(h.y-c.y)<o;if(u){s=s.slice(),d&&(s.pop(),s.pop(),c.set(s[s.length-2],s[s.length-1]));const Z=(h.x+c.x)*.5,N=(c.y+h.y)*.5;s.unshift(Z,N),s.push(Z,N)}const f=n,p=s.length/2;let g=s.length;const m=f.length/2,O=a.width/2,x=O*O,b=a.miterLimit*a.miterLimit;let v=s[0],w=s[1],S=s[2],y=s[3],_=0,k=0,P=-(w-y),T=v-S,$=0,A=0,C=Math.sqrt(P*P+T*T);P/=C,T/=C,P*=O,T*=O;const B=l,E=(1-B)*2,I=B*2;u||(a.cap==="round"?g+=Ms(v-P*(E-I)*.5,w-T*(E-I)*.5,v-P*E,w-T*E,v+P*I,w+T*I,f,!0)+2:a.cap==="square"&&(g+=sg(v,w,P,T,E,I,!0,f))),f.push(v-P*E,w-T*E),f.push(v+P*I,w+T*I);for(let Z=1;Z<p-1;++Z){v=s[(Z-1)*2],w=s[(Z-1)*2+1],S=s[Z*2],y=s[Z*2+1],_=s[(Z+1)*2],k=s[(Z+1)*2+1],P=-(w-y),T=v-S,C=Math.sqrt(P*P+T*T),P/=C,T/=C,P*=O,T*=O,$=-(y-k),A=S-_,C=Math.sqrt($*$+A*A),$/=C,A/=C,$*=O,A*=O;const N=S-v,z=w-y,X=S-_,H=k-y,K=N*X+z*H,it=z*X-H*N,Ot=it<0;if(Math.abs(it)<.001*Math.abs(K)){f.push(S-P*E,y-T*E),f.push(S+P*I,y+T*I),K>=0&&(a.join==="round"?g+=Ms(S,y,S-P*E,y-T*E,S-$*E,y-A*E,f,!1)+4:g+=2,f.push(S-$*I,y-A*I),f.push(S+$*E,y+A*E));continue}const ae=(-P+v)*(-T+y)-(-P+S)*(-T+w),Ve=(-$+_)*(-A+y)-(-$+S)*(-A+k),ye=(N*Ve-X*ae)/it,dt=(H*ae-z*Ve)/it,xe=(ye-S)*(ye-S)+(dt-y)*(dt-y),oi=S+(ye-S)*E,mi=y+(dt-y)*E,Oi=S-(ye-S)*I,yi=y-(dt-y)*I,wt=Math.min(N*N+z*z,X*X+H*H),pt=Ot?E:I,Qt=wt+pt*pt*x;xe<=Qt?a.join==="bevel"||xe/x>b?(Ot?(f.push(oi,mi),f.push(S+P*I,y+T*I),f.push(oi,mi),f.push(S+$*I,y+A*I)):(f.push(S-P*E,y-T*E),f.push(Oi,yi),f.push(S-$*E,y-A*E),f.push(Oi,yi)),g+=2):a.join==="round"?Ot?(f.push(oi,mi),f.push(S+P*I,y+T*I),g+=Ms(S,y,S+P*I,y+T*I,S+$*I,y+A*I,f,!0)+4,f.push(oi,mi),f.push(S+$*I,y+A*I)):(f.push(S-P*E,y-T*E),f.push(Oi,yi),g+=Ms(S,y,S-P*E,y-T*E,S-$*E,y-A*E,f,!1)+4,f.push(S-$*E,y-A*E),f.push(Oi,yi)):(f.push(oi,mi),f.push(Oi,yi)):(f.push(S-P*E,y-T*E),f.push(S+P*I,y+T*I),a.join==="round"?Ot?g+=Ms(S,y,S+P*I,y+T*I,S+$*I,y+A*I,f,!0)+2:g+=Ms(S,y,S-P*E,y-T*E,S-$*E,y-A*E,f,!1)+2:a.join==="miter"&&xe/x<=b&&(Ot?(f.push(Oi,yi),f.push(Oi,yi)):(f.push(oi,mi),f.push(oi,mi)),g+=2),f.push(S-$*E,y-A*E),f.push(S+$*I,y+A*I),g+=2)}v=s[(p-2)*2],w=s[(p-2)*2+1],S=s[(p-1)*2],y=s[(p-1)*2+1],P=-(w-y),T=v-S,C=Math.sqrt(P*P+T*T),P/=C,T/=C,P*=O,T*=O,f.push(S-P*E,y-T*E),f.push(S+P*I,y+T*I),u||(a.cap==="round"?g+=Ms(S-P*(E-I)*.5,y-T*(E-I)*.5,S-P*E,y-T*E,S+P*I,y+T*I,f,!1)+2:a.cap==="square"&&(g+=sg(S,y,P,T,E,I,!1,f)));const V=ig*ig;for(let Z=m;Z<g+m-2;++Z)v=f[Z*2],w=f[Z*2+1],S=f[(Z+1)*2],y=f[(Z+1)*2+1],_=f[(Z+2)*2],k=f[(Z+2)*2+1],!(Math.abs(v*(y-k)+S*(k-w)+_*(w-y))<V)&&r.push(Z,Z+1,Z+2)}function z$(s,t,e,i){const n=$y;if(s.length===0)return;const r=s[0],o=s[1],a=s[s.length-2],l=s[s.length-1],h=t||Math.abs(r-a)<n&&Math.abs(o-l)<n,c=e,u=s.length/2,d=c.length/2;for(let f=0;f<u;f++)c.push(s[f*2]),c.push(s[f*2+1]);for(let f=0;f<u-1;f++)i.push(d+f,d+f+1);h&&i.push(d+u-1,d)}function Cy(s,t,e,i,n,r,o){const a=Mk(s,t,2);if(!a)return;for(let h=0;h<a.length;h+=3)r[o++]=a[h]+n,r[o++]=a[h+1]+n,r[o++]=a[h+2]+n;let l=n*i;for(let h=0;h<s.length;h+=2)e[l]=s[h],e[l+1]=s[h+1],l+=i}const W$=[],G$={extension:{type:lt.ShapeBuilder,name:"polygon"},build(s,t){for(let e=0;e<s.points.length;e++)t[e]=s.points[e];return!0},triangulate(s,t,e,i,n,r){Cy(s,W$,t,e,i,n,r)}},Y$={extension:{type:lt.ShapeBuilder,name:"rectangle"},build(s,t){const e=s,i=e.x,n=e.y,r=e.width,o=e.height;return r>0&&o>0?(t[0]=i,t[1]=n,t[2]=i+r,t[3]=n,t[4]=i+r,t[5]=n+o,t[6]=i,t[7]=n+o,!0):!1},triangulate(s,t,e,i,n,r){let o=0;i*=e,t[i+o]=s[0],t[i+o+1]=s[1],o+=e,t[i+o]=s[2],t[i+o+1]=s[3],o+=e,t[i+o]=s[6],t[i+o+1]=s[7],o+=e,t[i+o]=s[4],t[i+o+1]=s[5],o+=e;const a=i/e;n[r++]=a,n[r++]=a+1,n[r++]=a+2,n[r++]=a+1,n[r++]=a+3,n[r++]=a+2}},N$={extension:{type:lt.ShapeBuilder,name:"triangle"},build(s,t){return t[0]=s.x,t[1]=s.y,t[2]=s.x2,t[3]=s.y2,t[4]=s.x3,t[5]=s.y3,!0},triangulate(s,t,e,i,n,r){let o=0;i*=e,t[i+o]=s[0],t[i+o+1]=s[1],o+=e,t[i+o]=s[2],t[i+o+1]=s[3],o+=e,t[i+o]=s[4],t[i+o+1]=s[5];const a=i/e;n[r++]=a,n[r++]=a+1,n[r++]=a+2}},ng=[{offset:0,color:"white"},{offset:1,color:"black"}],Kd=class mu{constructor(...t){this.uid=Dt("fillGradient"),this._tick=0,this.type="linear",this.colorStops=[];let e=V$(t);e={...e.type==="radial"?mu.defaultRadialOptions:mu.defaultLinearOptions,...x0(e)},this._textureSize=e.textureSize,this._wrapMode=e.wrapMode,e.type==="radial"?(this.center=e.center,this.outerCenter=e.outerCenter??this.center,this.innerRadius=e.innerRadius,this.outerRadius=e.outerRadius,this.scale=e.scale,this.rotation=e.rotation):(this.start=e.start,this.end=e.end),this.textureSpace=e.textureSpace,this.type=e.type,e.colorStops.forEach(n=>{this.addColorStop(n.offset,n.color)})}addColorStop(t,e){return this.colorStops.push({offset:t,color:Jt.shared.setValue(e).toHexa()}),this}buildLinearGradient(){if(this.texture)return;let{x:t,y:e}=this.start,{x:i,y:n}=this.end,r=i-t,o=n-e;const a=r<0||o<0;if(this._wrapMode==="clamp-to-edge"){if(r<0){const m=t;t=i,i=m,r*=-1}if(o<0){const m=e;e=n,n=m,o*=-1}}const l=this.colorStops.length?this.colorStops:ng,h=this._textureSize,{canvas:c,context:u}=og(h,1),d=a?u.createLinearGradient(this._textureSize,0,0,0):u.createLinearGradient(0,0,this._textureSize,0);rg(d,l),u.fillStyle=d,u.fillRect(0,0,h,1),this.texture=new bt({source:new gl({resource:c,addressMode:this._wrapMode})});const f=Math.sqrt(r*r+o*o),p=Math.atan2(o,r),g=new ft;g.scale(f/h,1),g.rotate(p),g.translate(t,e),this.textureSpace==="local"&&g.scale(h,h),this.transform=g}buildGradient(){this.texture||this._tick++,this.type==="linear"?this.buildLinearGradient():this.buildRadialGradient()}buildRadialGradient(){if(this.texture)return;const t=this.colorStops.length?this.colorStops:ng,e=this._textureSize,{canvas:i,context:n}=og(e,e),{x:r,y:o}=this.center,{x:a,y:l}=this.outerCenter,h=this.innerRadius,c=this.outerRadius,u=a-c,d=l-c,f=e/(c*2),p=(r-u)*f,g=(o-d)*f,m=n.createRadialGradient(p,g,h*f,(a-u)*f,(l-d)*f,c*f);rg(m,t),n.fillStyle=t[t.length-1].color,n.fillRect(0,0,e,e),n.fillStyle=m,n.translate(p,g),n.rotate(this.rotation),n.scale(1,this.scale),n.translate(-p,-g),n.fillRect(0,0,e,e),this.texture=new bt({source:new gl({resource:i,addressMode:this._wrapMode})});const O=new ft;O.scale(1/f,1/f),O.translate(u,d),this.textureSpace==="local"&&O.scale(e,e),this.transform=O}destroy(){var t;(t=this.texture)==null||t.destroy(!0),this.texture=null,this.transform=null,this.colorStops=[],this.start=null,this.end=null,this.center=null,this.outerCenter=null}get styleKey(){return`fill-gradient-${this.uid}-${this._tick}`}};Kd.defaultLinearOptions={start:{x:0,y:0},end:{x:0,y:1},colorStops:[],textureSpace:"local",type:"linear",textureSize:256,wrapMode:"clamp-to-edge"};Kd.defaultRadialOptions={center:{x:.5,y:.5},innerRadius:0,outerRadius:.5,colorStops:[],scale:1,textureSpace:"local",type:"radial",textureSize:256,wrapMode:"clamp-to-edge"};let ts=Kd;function rg(s,t){for(let e=0;e<t.length;e++){const i=t[e];s.addColorStop(i.offset,i.color)}}function og(s,t){const e=Ye.get().createCanvas(s,t),i=e.getContext("2d");return{canvas:e,context:i}}function V$(s){let t=s[0]??{};return(typeof t=="number"||s[1])&&(xt("8.5.2","use options object instead"),t={type:"linear",start:{x:s[0],y:s[1]},end:{x:s[2],y:s[3]},textureSpace:s[4],textureSize:s[5]??ts.defaultLinearOptions.textureSize}),t}const F$=new ft,q$=new Zt;function j$(s,t,e,i){const n=t.matrix?s.copyFrom(t.matrix).invert():s.identity();if(t.textureSpace==="local"){const o=e.getBounds(q$);t.width&&o.pad(t.width);const{x:a,y:l}=o,h=1/o.width,c=1/o.height,u=-a*h,d=-l*c,f=n.a,p=n.b,g=n.c,m=n.d;n.a*=h,n.b*=h,n.c*=c,n.d*=c,n.tx=u*f+d*g+n.tx,n.ty=u*p+d*m+n.ty}else n.translate(t.texture.frame.x,t.texture.frame.y),n.scale(1/t.texture.source.width,1/t.texture.source.height);const r=t.texture.source.style;return!(t.fill instanceof ts)&&r.addressMode==="clamp-to-edge"&&(r.addressMode="repeat",r.update()),i&&n.append(F$.copyFrom(i).invert()),n}const ah={};Vt.handleByMap(lt.ShapeBuilder,ah);Vt.add(Y$,G$,N$,xo,Z$,D$);const U$=new Zt,H$=new ft;function K$(s,t){const{geometryData:e,batches:i}=t;i.length=0,e.indices.length=0,e.vertices.length=0,e.uvs.length=0;for(let n=0;n<s.instructions.length;n++){const r=s.instructions[n];if(r.action==="texture")J$(r.data,i,e);else if(r.action==="fill"||r.action==="stroke"){const o=r.action==="stroke",a=r.data.path.shapePath,l=r.data.style,h=r.data.hole;o&&h&&ag(h.shapePath,l,!0,i,e),h&&(a.shapePrimitives[a.shapePrimitives.length-1].holes=h.shapePath.shapePrimitives),ag(a,l,o,i,e)}}}function J$(s,t,e){const i=[],n=ah.rectangle,r=U$;r.x=s.dx,r.y=s.dy,r.width=s.dw,r.height=s.dh;const o=s.transform;if(!n.build(r,i))return;const{vertices:a,uvs:l,indices:h}=e,c=h.length,u=a.length/2;o&&ky(i,o),n.triangulate(i,a,2,u,h,c);const d=s.image,f=d.uvs;l.push(f.x0,f.y0,f.x1,f.y1,f.x3,f.y3,f.x2,f.y2);const p=Le.get(Hd);p.indexOffset=c,p.indexSize=h.length-c,p.attributeOffset=u,p.attributeSize=a.length/2-u,p.baseColor=s.style,p.alpha=s.alpha,p.texture=d,p.geometryData=e,t.push(p)}function ag(s,t,e,i,n){const{vertices:r,uvs:o,indices:a}=n;s.shapePrimitives.forEach(({shape:l,transform:h,holes:c})=>{const u=[],d=ah[l.type];if(!d.build(l,u))return;const f=a.length,p=r.length/2;let g="triangle-list";if(h&&ky(u,h),e){const b=l.closePath??!0,v=t;v.pixelLine?(z$(u,b,r,a),g="line-list"):X$(u,v,!1,b,r,a)}else if(c){const b=[],v=u.slice();tC(c).forEach(S=>{b.push(v.length/2),v.push(...S)}),Cy(v,b,r,2,p,a,f)}else d.triangulate(u,r,2,p,a,f);const m=o.length/2,O=t.texture;if(O!==bt.WHITE){const b=j$(H$,t,l,h);E$(r,2,p,o,m,2,r.length/2-p,b)}else L$(o,m,2,r.length/2-p);const x=Le.get(Hd);x.indexOffset=f,x.indexSize=a.length-f,x.attributeOffset=p,x.attributeSize=r.length/2-p,x.baseColor=t.color,x.alpha=t.alpha,x.texture=O,x.geometryData=n,x.topology=g,i.push(x)})}function tC(s){const t=[];for(let e=0;e<s.length;e++){const i=s[e].shape,n=[];ah[i.type].build(i,n)&&t.push(n)}return t}class eC{constructor(){this.batches=[],this.geometryData={vertices:[],uvs:[],indices:[]}}reset(){this.batches&&this.batches.forEach(t=>{Le.return(t)}),this.graphicsData&&Le.return(this.graphicsData),this.isBatchable=!1,this.context=null,this.batches.length=0,this.geometryData.indices.length=0,this.geometryData.vertices.length=0,this.geometryData.uvs.length=0,this.graphicsData=null}destroy(){this.reset(),this.batches=null,this.geometryData=null}}class iC{constructor(){this.instructions=new Gd}init(t){const e=t.maxTextures;this.batcher?this.batcher._updateMaxTextures(e):this.batcher=new R$({maxTextures:e}),this.instructions.reset()}get geometry(){return xt(Kv,"GraphicsContextRenderData#geometry is deprecated, please use batcher.geometry instead."),this.batcher.geometry}destroy(){this.batcher.destroy(),this.instructions.destroy(),this.batcher=null,this.instructions=null}}const Jd=class Ou{constructor(t){this._renderer=t,this._managedContexts=new Wo({renderer:t,type:"resource",name:"graphicsContext"})}init(t){Ou.defaultOptions.bezierSmoothness=(t==null?void 0:t.bezierSmoothness)??Ou.defaultOptions.bezierSmoothness}getContextRenderData(t){return t._gpuData[this._renderer.uid].graphicsData||this._initContextRenderData(t)}updateGpuContext(t){const e=!!t._gpuData[this._renderer.uid],i=t._gpuData[this._renderer.uid]||this._initContext(t);if(t.dirty||!e){e&&i.reset(),K$(t,i);const n=t.batchMode;t.customShader||n==="no-batch"?i.isBatchable=!1:n==="auto"?i.isBatchable=i.geometryData.vertices.length<400:i.isBatchable=!0,t.dirty=!1}return i}getGpuContext(t){return t._gpuData[this._renderer.uid]||this._initContext(t)}_initContextRenderData(t){const e=Le.get(iC,{maxTextures:this._renderer.limits.maxBatchableTextures}),i=t._gpuData[this._renderer.uid],{batches:n,geometryData:r}=i;i.graphicsData=e;const o=r.vertices.length,a=r.indices.length;for(let u=0;u<n.length;u++)n[u].applyTransform=!1;const l=e.batcher;l.ensureAttributeBuffer(o),l.ensureIndexBuffer(a),l.begin();for(let u=0;u<n.length;u++){const d=n[u];l.add(d)}l.finish(e.instructions);const h=l.geometry;h.indexBuffer.setDataWithSize(l.indexBuffer,l.indexSize,!0),h.buffers[0].setDataWithSize(l.attributeBuffer.float32View,l.attributeSize,!0);const c=l.batches;for(let u=0;u<c.length;u++){const d=c[u];d.bindGroup=Yk(d.textures.textures,d.textures.count,this._renderer.limits.maxBatchableTextures)}return e}_initContext(t){const e=new eC;return e.context=t,t._gpuData[this._renderer.uid]=e,this._managedContexts.add(t),e}destroy(){this._managedContexts.destroy(),this._renderer=null}};Jd.extension={type:[lt.WebGLSystem,lt.WebGPUSystem],name:"graphicsContext"};Jd.defaultOptions={bezierSmoothness:.5};let tf=Jd;const sC=8,fa=11920929e-14,nC=1;function Py(s,t,e,i,n,r,o,a,l,h){const u=Math.min(.99,Math.max(0,h??tf.defaultOptions.bezierSmoothness));let d=(nC-u)/1;return d*=d,rC(t,e,i,n,r,o,a,l,s,d),s}function rC(s,t,e,i,n,r,o,a,l,h){yu(s,t,e,i,n,r,o,a,l,h,0),l.push(o,a)}function yu(s,t,e,i,n,r,o,a,l,h,c){if(c>sC)return;const u=(s+e)/2,d=(t+i)/2,f=(e+n)/2,p=(i+r)/2,g=(n+o)/2,m=(r+a)/2,O=(u+f)/2,x=(d+p)/2,b=(f+g)/2,v=(p+m)/2,w=(O+b)/2,S=(x+v)/2;if(c>0){let y=o-s,_=a-t;const k=Math.abs((e-o)*_-(i-a)*y),P=Math.abs((n-o)*_-(r-a)*y);if(k>fa&&P>fa){if((k+P)*(k+P)<=h*(y*y+_*_)){l.push(w,S);return}}else if(k>fa){if(k*k<=h*(y*y+_*_)){l.push(w,S);return}}else if(P>fa){if(P*P<=h*(y*y+_*_)){l.push(w,S);return}}else if(y=w-(s+o)/2,_=S-(t+a)/2,y*y+_*_<=h){l.push(w,S);return}}yu(s,t,u,d,O,x,w,S,l,h,c+1),yu(w,S,b,v,g,m,o,a,l,h,c+1)}const oC=8,aC=11920929e-14,lC=1;function hC(s,t,e,i,n,r,o,a){const h=Math.min(.99,Math.max(0,a??tf.defaultOptions.bezierSmoothness));let c=(lC-h)/1;return c*=c,cC(t,e,i,n,r,o,s,c),s}function cC(s,t,e,i,n,r,o,a){xu(o,s,t,e,i,n,r,a,0),o.push(n,r)}function xu(s,t,e,i,n,r,o,a,l){if(l>oC)return;const h=(t+i)/2,c=(e+n)/2,u=(i+r)/2,d=(n+o)/2,f=(h+u)/2,p=(c+d)/2;let g=r-t,m=o-e;const O=Math.abs((i-r)*m-(n-o)*g);if(O>aC){if(O*O<=a*(g*g+m*m)){s.push(f,p);return}}else if(g=f-(t+r)/2,m=p-(e+o)/2,g*g+m*m<=a){s.push(f,p);return}xu(s,t,e,h,c,f,p,a,l+1),xu(s,f,p,u,d,r,o,a,l+1)}function Ty(s,t,e,i,n,r,o,a){let l=Math.abs(n-r);(!o&&n>r||o&&r>n)&&(l=2*Math.PI-l),a||(a=Math.max(6,Math.floor(6*Math.pow(i,1/3)*(l/Math.PI)))),a=Math.max(a,3);let h=l/a,c=n;h*=o?-1:1;for(let u=0;u<a+1;u++){const d=Math.cos(c),f=Math.sin(c),p=t+d*i,g=e+f*i;s.push(p,g),c+=h}}function uC(s,t,e,i,n,r){const o=s[s.length-2],l=s[s.length-1]-e,h=o-t,c=n-e,u=i-t,d=Math.abs(l*u-h*c);if(d<1e-8||r===0){(s[s.length-2]!==t||s[s.length-1]!==e)&&s.push(t,e);return}const f=l*l+h*h,p=c*c+u*u,g=l*c+h*u,m=r*Math.sqrt(f)/d,O=r*Math.sqrt(p)/d,x=m*g/f,b=O*g/p,v=m*u+O*h,w=m*c+O*l,S=h*(O+x),y=l*(O+x),_=u*(m+b),k=c*(m+b),P=Math.atan2(y-w,S-v),T=Math.atan2(k-w,_-v);Ty(s,v+t,w+e,r,P,T,h*c>u*l)}const to=Math.PI*2,ic={centerX:0,centerY:0,ang1:0,ang2:0},sc=({x:s,y:t},e,i,n,r,o,a,l)=>{s*=e,t*=i;const h=n*s-r*t,c=r*s+n*t;return l.x=h+o,l.y=c+a,l};function dC(s,t){const e=t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),i=t===1.5707963267948966?.551915024494:e,n=Math.cos(s),r=Math.sin(s),o=Math.cos(s+t),a=Math.sin(s+t);return[{x:n-r*i,y:r+n*i},{x:o+a*i,y:a-o*i},{x:o,y:a}]}const lg=(s,t,e,i)=>{const n=s*i-t*e<0?-1:1;let r=s*e+t*i;return r>1&&(r=1),r<-1&&(r=-1),n*Math.acos(r)},fC=(s,t,e,i,n,r,o,a,l,h,c,u,d)=>{const f=Math.pow(n,2),p=Math.pow(r,2),g=Math.pow(c,2),m=Math.pow(u,2);let O=f*p-f*m-p*g;O<0&&(O=0),O/=f*m+p*g,O=Math.sqrt(O)*(o===a?-1:1);const x=O*n/r*u,b=O*-r/n*c,v=h*x-l*b+(s+e)/2,w=l*x+h*b+(t+i)/2,S=(c-x)/n,y=(u-b)/r,_=(-c-x)/n,k=(-u-b)/r,P=lg(1,0,S,y);let T=lg(S,y,_,k);a===0&&T>0&&(T-=to),a===1&&T<0&&(T+=to),d.centerX=v,d.centerY=w,d.ang1=P,d.ang2=T};function pC(s,t,e,i,n,r,o,a=0,l=0,h=0){if(r===0||o===0)return;const c=Math.sin(a*to/360),u=Math.cos(a*to/360),d=u*(t-i)/2+c*(e-n)/2,f=-c*(t-i)/2+u*(e-n)/2;if(d===0&&f===0)return;r=Math.abs(r),o=Math.abs(o);const p=Math.pow(d,2)/Math.pow(r,2)+Math.pow(f,2)/Math.pow(o,2);p>1&&(r*=Math.sqrt(p),o*=Math.sqrt(p)),fC(t,e,i,n,r,o,l,h,c,u,d,f,ic);let{ang1:g,ang2:m}=ic;const{centerX:O,centerY:x}=ic;let b=Math.abs(m)/(to/4);Math.abs(1-b)<1e-7&&(b=1);const v=Math.max(Math.ceil(b),1);m/=v;let w=s[s.length-2],S=s[s.length-1];const y={x:0,y:0};for(let _=0;_<v;_++){const k=dC(g,m),{x:P,y:T}=sc(k[0],r,o,u,c,O,x,y),{x:$,y:A}=sc(k[1],r,o,u,c,O,x,y),{x:C,y:B}=sc(k[2],r,o,u,c,O,x,y);Py(s,w,S,P,T,$,A,C,B),w=C,S=B,g+=m}}function gC(s,t,e){const i=(o,a)=>{const l=a.x-o.x,h=a.y-o.y,c=Math.sqrt(l*l+h*h),u=l/c,d=h/c;return{len:c,nx:u,ny:d}},n=(o,a)=>{o===0?s.moveTo(a.x,a.y):s.lineTo(a.x,a.y)};let r=t[t.length-1];for(let o=0;o<t.length;o++){const a=t[o%t.length],l=a.radius??e;if(l<=0){n(o,a),r=a;continue}const h=t[(o+1)%t.length],c=i(a,r),u=i(a,h);if(c.len<1e-4||u.len<1e-4){n(o,a),r=a;continue}let d=Math.asin(c.nx*u.ny-c.ny*u.nx),f=1,p=!1;c.nx*u.nx-c.ny*-u.ny<0?d<0?d=Math.PI+d:(d=Math.PI-d,f=-1,p=!0):d>0&&(f=-1,p=!0);const g=d/2;let m,O=Math.abs(Math.cos(g)*l/Math.sin(g));O>Math.min(c.len/2,u.len/2)?(O=Math.min(c.len/2,u.len/2),m=Math.abs(O*Math.sin(g)/Math.cos(g))):m=l;const x=a.x+u.nx*O+-u.ny*m*f,b=a.y+u.ny*O+u.nx*m*f,v=Math.atan2(c.ny,c.nx)+Math.PI/2*f,w=Math.atan2(u.ny,u.nx)-Math.PI/2*f;o===0&&s.moveTo(x+Math.cos(v)*m,b+Math.sin(v)*m),s.arc(x,b,m,v,w,p),r=a}}function mC(s,t,e,i){const n=(a,l)=>Math.sqrt((a.x-l.x)**2+(a.y-l.y)**2),r=(a,l,h)=>({x:a.x+(l.x-a.x)*h,y:a.y+(l.y-a.y)*h}),o=t.length;for(let a=0;a<o;a++){const l=t[(a+1)%o],h=l.radius??e;if(h<=0){a===0?s.moveTo(l.x,l.y):s.lineTo(l.x,l.y);continue}const c=t[a],u=t[(a+2)%o],d=n(c,l);let f;if(d<1e-4)f=l;else{const m=Math.min(d/2,h);f=r(l,c,m/d)}const p=n(u,l);let g;if(p<1e-4)g=l;else{const m=Math.min(p/2,h);g=r(l,u,m/p)}a===0?s.moveTo(f.x,f.y):s.lineTo(f.x,f.y),s.quadraticCurveTo(l.x,l.y,g.x,g.y,i)}}const OC=new Zt;class yC{constructor(t){this.shapePrimitives=[],this._currentPoly=null,this._bounds=new si,this._graphicsPath2D=t,this.signed=t.checkForHoles}moveTo(t,e){return this.startPoly(t,e),this}lineTo(t,e){this._ensurePoly();const i=this._currentPoly.points,n=i[i.length-2],r=i[i.length-1];return(n!==t||r!==e)&&i.push(t,e),this}arc(t,e,i,n,r,o){this._ensurePoly(!1);const a=this._currentPoly.points;return Ty(a,t,e,i,n,r,o),this}arcTo(t,e,i,n,r){this._ensurePoly();const o=this._currentPoly.points;return uC(o,t,e,i,n,r),this}arcToSvg(t,e,i,n,r,o,a){const l=this._currentPoly.points;return pC(l,this._currentPoly.lastX,this._currentPoly.lastY,o,a,t,e,i,n,r),this}bezierCurveTo(t,e,i,n,r,o,a){this._ensurePoly();const l=this._currentPoly;return Py(this._currentPoly.points,l.lastX,l.lastY,t,e,i,n,r,o,a),this}quadraticCurveTo(t,e,i,n,r){this._ensurePoly();const o=this._currentPoly;return hC(this._currentPoly.points,o.lastX,o.lastY,t,e,i,n,r),this}closePath(){return this.endPoly(!0),this}addPath(t,e){this.endPoly(),e&&!e.isIdentity()&&(t=t.clone(!0),t.transform(e));const i=this.shapePrimitives,n=i.length;for(let r=0;r<t.instructions.length;r++){const o=t.instructions[r];this[o.action](...o.data)}if(t.checkForHoles&&i.length-n>1){let r=null;for(let o=n;o<i.length;o++){const a=i[o];if(a.shape.type==="polygon"){const l=a.shape,h=r==null?void 0:r.shape;h&&h.containsPolygon(l)?(r.holes||(r.holes=[]),r.holes.push(a),i.copyWithin(o,o+1),i.length--,o--):r=a}}}return this}finish(t=!1){this.endPoly(t)}rect(t,e,i,n,r){return this.drawShape(new Zt(t,e,i,n),r),this}circle(t,e,i,n){return this.drawShape(new qd(t,e,i),n),this}poly(t,e,i){const n=new Kr(t);return n.closePath=e,this.drawShape(n,i),this}regularPoly(t,e,i,n,r=0,o){n=Math.max(n|0,3);const a=-1*Math.PI/2+r,l=Math.PI*2/n,h=[];for(let c=0;c<n;c++){const u=a-c*l;h.push(t+i*Math.cos(u),e+i*Math.sin(u))}return this.poly(h,!0,o),this}roundPoly(t,e,i,n,r,o=0,a){if(n=Math.max(n|0,3),r<=0)return this.regularPoly(t,e,i,n,o);const l=i*Math.sin(Math.PI/n)-.001;r=Math.min(r,l);const h=-1*Math.PI/2+o,c=Math.PI*2/n,u=(n-2)*Math.PI/n/2;for(let d=0;d<n;d++){const f=d*c+h,p=t+i*Math.cos(f),g=e+i*Math.sin(f),m=f+Math.PI+u,O=f-Math.PI-u,x=p+r*Math.cos(m),b=g+r*Math.sin(m),v=p+r*Math.cos(O),w=g+r*Math.sin(O);d===0?this.moveTo(x,b):this.lineTo(x,b),this.quadraticCurveTo(p,g,v,w,a)}return this.closePath()}roundShape(t,e,i=!1,n){return t.length<3?this:(i?mC(this,t,e,n):gC(this,t,e),this.closePath())}filletRect(t,e,i,n,r){if(r===0)return this.rect(t,e,i,n);const o=Math.min(i,n)/2,a=Math.min(o,Math.max(-o,r)),l=t+i,h=e+n,c=a<0?-a:0,u=Math.abs(a);return this.moveTo(t,e+u).arcTo(t+c,e+c,t+u,e,u).lineTo(l-u,e).arcTo(l-c,e+c,l,e+u,u).lineTo(l,h-u).arcTo(l-c,h-c,t+i-u,h,u).lineTo(t+u,h).arcTo(t+c,h-c,t,h-u,u).closePath()}chamferRect(t,e,i,n,r,o){if(r<=0)return this.rect(t,e,i,n);const a=Math.min(r,Math.min(i,n)/2),l=t+i,h=e+n,c=[t+a,e,l-a,e,l,e+a,l,h-a,l-a,h,t+a,h,t,h-a,t,e+a];for(let u=c.length-1;u>=2;u-=2)c[u]===c[u-2]&&c[u-1]===c[u-3]&&c.splice(u-1,2);return this.poly(c,!0,o)}ellipse(t,e,i,n,r){return this.drawShape(new jd(t,e,i,n),r),this}roundRect(t,e,i,n,r,o){return this.drawShape(new Ud(t,e,i,n,r),o),this}drawShape(t,e){return this.endPoly(),this.shapePrimitives.push({shape:t,transform:e}),this}startPoly(t,e){let i=this._currentPoly;return i&&this.endPoly(),i=new Kr,i.points.push(t,e),this._currentPoly=i,this}endPoly(t=!1){const e=this._currentPoly;return e&&e.points.length>2&&(e.closePath=t,this.shapePrimitives.push({shape:e})),this._currentPoly=null,this}_ensurePoly(t=!0){if(!this._currentPoly&&(this._currentPoly=new Kr,t)){const e=this.shapePrimitives[this.shapePrimitives.length-1];if(e){let i=e.shape.x,n=e.shape.y;if(e.transform&&!e.transform.isIdentity()){const r=e.transform,o=i;i=r.a*i+r.c*n+r.tx,n=r.b*o+r.d*n+r.ty}this._currentPoly.points.push(i,n)}else this._currentPoly.points.push(0,0)}}buildPath(){const t=this._graphicsPath2D;this.shapePrimitives.length=0,this._currentPoly=null;for(let e=0;e<t.instructions.length;e++){const i=t.instructions[e];this[i.action](...i.data)}this.finish()}get bounds(){const t=this._bounds;t.clear();const e=this.shapePrimitives;for(let i=0;i<e.length;i++){const n=e[i],r=n.shape.getBounds(OC);n.transform?t.addRect(r,n.transform):t.addRect(r)}return t}}class Hi{constructor(t,e=!1){this.instructions=[],this.uid=Dt("graphicsPath"),this._dirty=!0,this.checkForHoles=e,typeof t=="string"?Xk(t,this):this.instructions=(t==null?void 0:t.slice())??[]}get shapePath(){return this._shapePath||(this._shapePath=new yC(this)),this._dirty&&(this._dirty=!1,this._shapePath.buildPath()),this._shapePath}addPath(t,e){return t=t.clone(),this.instructions.push({action:"addPath",data:[t,e]}),this._dirty=!0,this}arc(...t){return this.instructions.push({action:"arc",data:t}),this._dirty=!0,this}arcTo(...t){return this.instructions.push({action:"arcTo",data:t}),this._dirty=!0,this}arcToSvg(...t){return this.instructions.push({action:"arcToSvg",data:t}),this._dirty=!0,this}bezierCurveTo(...t){return this.instructions.push({action:"bezierCurveTo",data:t}),this._dirty=!0,this}bezierCurveToShort(t,e,i,n,r){const o=this.instructions[this.instructions.length-1],a=this.getLastPoint(Gt.shared);let l=0,h=0;if(!o||o.action!=="bezierCurveTo")l=a.x,h=a.y;else{l=o.data[2],h=o.data[3];const c=a.x,u=a.y;l=c+(c-l),h=u+(u-h)}return this.instructions.push({action:"bezierCurveTo",data:[l,h,t,e,i,n,r]}),this._dirty=!0,this}closePath(){return this.instructions.push({action:"closePath",data:[]}),this._dirty=!0,this}ellipse(...t){return this.instructions.push({action:"ellipse",data:t}),this._dirty=!0,this}lineTo(...t){return this.instructions.push({action:"lineTo",data:t}),this._dirty=!0,this}moveTo(...t){return this.instructions.push({action:"moveTo",data:t}),this}quadraticCurveTo(...t){return this.instructions.push({action:"quadraticCurveTo",data:t}),this._dirty=!0,this}quadraticCurveToShort(t,e,i){const n=this.instructions[this.instructions.length-1],r=this.getLastPoint(Gt.shared);let o=0,a=0;if(!n||n.action!=="quadraticCurveTo")o=r.x,a=r.y;else{o=n.data[0],a=n.data[1];const l=r.x,h=r.y;o=l+(l-o),a=h+(h-a)}return this.instructions.push({action:"quadraticCurveTo",data:[o,a,t,e,i]}),this._dirty=!0,this}rect(t,e,i,n,r){return this.instructions.push({action:"rect",data:[t,e,i,n,r]}),this._dirty=!0,this}circle(t,e,i,n){return this.instructions.push({action:"circle",data:[t,e,i,n]}),this._dirty=!0,this}roundRect(...t){return this.instructions.push({action:"roundRect",data:t}),this._dirty=!0,this}poly(...t){return this.instructions.push({action:"poly",data:t}),this._dirty=!0,this}regularPoly(...t){return this.instructions.push({action:"regularPoly",data:t}),this._dirty=!0,this}roundPoly(...t){return this.instructions.push({action:"roundPoly",data:t}),this._dirty=!0,this}roundShape(...t){return this.instructions.push({action:"roundShape",data:t}),this._dirty=!0,this}filletRect(...t){return this.instructions.push({action:"filletRect",data:t}),this._dirty=!0,this}chamferRect(...t){return this.instructions.push({action:"chamferRect",data:t}),this._dirty=!0,this}star(t,e,i,n,r,o,a){r||(r=n/2);const l=-1*Math.PI/2+o,h=i*2,c=Math.PI*2/h,u=[];for(let d=0;d<h;d++){const f=d%2?r:n,p=d*c+l;u.push(t+f*Math.cos(p),e+f*Math.sin(p))}return this.poly(u,!0,a),this}clone(t=!1){const e=new Hi;if(e.checkForHoles=this.checkForHoles,!t)e.instructions=this.instructions.slice();else for(let i=0;i<this.instructions.length;i++){const n=this.instructions[i];e.instructions.push({action:n.action,data:n.data.slice()})}return e}clear(){return this.instructions.length=0,this._dirty=!0,this}transform(t){if(t.isIdentity())return this;const e=t.a,i=t.b,n=t.c,r=t.d,o=t.tx,a=t.ty;let l=0,h=0,c=0,u=0,d=0,f=0,p=0,g=0;for(let m=0;m<this.instructions.length;m++){const O=this.instructions[m],x=O.data;switch(O.action){case"moveTo":case"lineTo":l=x[0],h=x[1],x[0]=e*l+n*h+o,x[1]=i*l+r*h+a;break;case"bezierCurveTo":c=x[0],u=x[1],d=x[2],f=x[3],l=x[4],h=x[5],x[0]=e*c+n*u+o,x[1]=i*c+r*u+a,x[2]=e*d+n*f+o,x[3]=i*d+r*f+a,x[4]=e*l+n*h+o,x[5]=i*l+r*h+a;break;case"quadraticCurveTo":c=x[0],u=x[1],l=x[2],h=x[3],x[0]=e*c+n*u+o,x[1]=i*c+r*u+a,x[2]=e*l+n*h+o,x[3]=i*l+r*h+a;break;case"arcToSvg":l=x[5],h=x[6],p=x[0],g=x[1],x[0]=e*p+n*g,x[1]=i*p+r*g,x[5]=e*l+n*h+o,x[6]=i*l+r*h+a;break;case"circle":x[4]=mn(x[3],t);break;case"rect":x[4]=mn(x[4],t);break;case"ellipse":x[8]=mn(x[8],t);break;case"roundRect":x[5]=mn(x[5],t);break;case"addPath":x[0].transform(t);break;case"poly":x[2]=mn(x[2],t);break;case"regularPoly":case"chamferRect":x[5]=mn(x[5],t);break;case"closePath":break;default:ve("unknown transform action",O.action);break}}return this._dirty=!0,this}get bounds(){return this.shapePath.bounds}getLastPoint(t){let e=this.instructions.length-1,i=this.instructions[e];if(!i)return t.x=0,t.y=0,t;for(;i.action==="closePath";){if(e--,e<0)return t.x=0,t.y=0,t;i=this.instructions[e]}switch(i.action){case"moveTo":case"lineTo":t.x=i.data[0],t.y=i.data[1];break;case"quadraticCurveTo":t.x=i.data[2],t.y=i.data[3];break;case"bezierCurveTo":t.x=i.data[4],t.y=i.data[5];break;case"arc":case"arcToSvg":t.x=i.data[5],t.y=i.data[6];break;case"addPath":i.data[0].getLastPoint(t);break}return t}}function mn(s,t){return s?s.prepend(t):t.clone()}function Lt(s,t,e){const i=s.getAttribute(t);return i?Number(i):e}function xC(s,t){const e=s.querySelectorAll("defs");for(let i=0;i<e.length;i++){const n=e[i];for(let r=0;r<n.children.length;r++){const o=n.children[r];switch(o.nodeName.toLowerCase()){case"lineargradient":t.defs[o.id]=bC(o);break;case"radialgradient":t.defs[o.id]=wC();break}}}}function bC(s){const t=Lt(s,"x1",0),e=Lt(s,"y1",0),i=Lt(s,"x2",1),n=Lt(s,"y2",0),r=s.getAttribute("gradientUnits")||"objectBoundingBox",o=new ts(t,e,i,n,r==="objectBoundingBox"?"local":"global");for(let a=0;a<s.children.length;a++){const l=s.children[a],h=Lt(l,"offset",0),c=Jt.shared.setValue(l.getAttribute("stop-color")).toNumber();o.addColorStop(h,c)}return o}function wC(s){return ve("[SVG Parser] Radial gradients are not yet supported"),new ts(0,0,1,0)}function hg(s){const t=s.match(/url\s*\(\s*['"]?\s*#([^'"\s)]+)\s*['"]?\s*\)/i);return t?t[1]:""}const cg={fill:{type:"paint",default:0},"fill-opacity":{type:"number",default:1},stroke:{type:"paint",default:0},"stroke-width":{type:"number",default:1},"stroke-opacity":{type:"number",default:1},"stroke-linecap":{type:"string",default:"butt"},"stroke-linejoin":{type:"string",default:"miter"},"stroke-miterlimit":{type:"number",default:10},"stroke-dasharray":{type:"string",default:"none"},"stroke-dashoffset":{type:"number",default:0},opacity:{type:"number",default:1}};function My(s,t){const e=s.getAttribute("style"),i={},n={},r={strokeStyle:i,fillStyle:n,useFill:!1,useStroke:!1};for(const o in cg){const a=s.getAttribute(o);a&&ug(t,r,o,a.trim())}if(e){const o=e.split(";");for(let a=0;a<o.length;a++){const l=o[a].trim(),[h,c]=l.split(":");cg[h]&&ug(t,r,h,c.trim())}}return{strokeStyle:r.useStroke?i:null,fillStyle:r.useFill?n:null,useFill:r.useFill,useStroke:r.useStroke}}function ug(s,t,e,i){switch(e){case"stroke":if(i!=="none"){if(i.startsWith("url(")){const n=hg(i);t.strokeStyle.fill=s.defs[n]}else t.strokeStyle.color=Jt.shared.setValue(i).toNumber();t.useStroke=!0}break;case"stroke-width":t.strokeStyle.width=Number(i);break;case"fill":if(i!=="none"){if(i.startsWith("url(")){const n=hg(i);t.fillStyle.fill=s.defs[n]}else t.fillStyle.color=Jt.shared.setValue(i).toNumber();t.useFill=!0}break;case"fill-opacity":t.fillStyle.alpha=Number(i);break;case"stroke-opacity":t.strokeStyle.alpha=Number(i);break;case"opacity":t.fillStyle.alpha=Number(i),t.strokeStyle.alpha=Number(i);break}}function SC(s){if(s.length<=2)return!0;const t=s.map(a=>a.area).sort((a,l)=>l-a),[e,i]=t,n=t[t.length-1],r=e/i,o=i/n;return!(r>3&&o<2)}function vC(s){return s.split(/(?=[Mm])/).filter(i=>i.trim().length>0)}function _C(s){const t=s.match(/[-+]?[0-9]*\.?[0-9]+/g);if(!t||t.length<4)return 0;const e=t.map(Number),i=[],n=[];for(let c=0;c<e.length;c+=2)c+1<e.length&&(i.push(e[c]),n.push(e[c+1]));if(i.length===0||n.length===0)return 0;const r=Math.min(...i),o=Math.max(...i),a=Math.min(...n),l=Math.max(...n);return(o-r)*(l-a)}function dg(s,t){const e=new Hi(s,!1);for(const i of e.instructions)t.instructions.push(i)}function kC(s,t){if(typeof s=="string"){const o=document.createElement("div");o.innerHTML=s.trim(),s=o.querySelector("svg")}const e={context:t,defs:{},path:new Hi};xC(s,e);const i=s.children,{fillStyle:n,strokeStyle:r}=My(s,e);for(let o=0;o<i.length;o++){const a=i[o];a.nodeName.toLowerCase()!=="defs"&&Ay(a,e,n,r)}return t}function Ay(s,t,e,i){const n=s.children,{fillStyle:r,strokeStyle:o}=My(s,t);r&&e?e={...e,...r}:r&&(e=r),o&&i?i={...i,...o}:o&&(i=o);const a=!e&&!i;a&&(e={color:0});let l,h,c,u,d,f,p,g,m,O,x,b,v,w,S,y,_;switch(s.nodeName.toLowerCase()){case"path":{w=s.getAttribute("d");const k=s.getAttribute("fill-rule"),P=vC(w),T=k==="evenodd",$=P.length>1;if(T&&$){const C=P.map(E=>({path:E,area:_C(E)}));if(C.sort((E,I)=>I.area-E.area),P.length>3||!SC(C))for(let E=0;E<C.length;E++){const I=C[E],V=E===0;t.context.beginPath();const Z=new Hi(void 0,!0);dg(I.path,Z),t.context.path(Z),V?(e&&t.context.fill(e),i&&t.context.stroke(i)):t.context.cut()}else for(let E=0;E<C.length;E++){const I=C[E],V=E%2===1;t.context.beginPath();const Z=new Hi(void 0,!0);dg(I.path,Z),t.context.path(Z),V?t.context.cut():(e&&t.context.fill(e),i&&t.context.stroke(i))}}else{const C=k?k==="evenodd":!0;S=new Hi(w,C),t.context.path(S),e&&t.context.fill(e),i&&t.context.stroke(i)}break}case"circle":p=Lt(s,"cx",0),g=Lt(s,"cy",0),m=Lt(s,"r",0),t.context.ellipse(p,g,m,m),e&&t.context.fill(e),i&&t.context.stroke(i);break;case"rect":l=Lt(s,"x",0),h=Lt(s,"y",0),y=Lt(s,"width",0),_=Lt(s,"height",0),O=Lt(s,"rx",0),x=Lt(s,"ry",0),O||x?t.context.roundRect(l,h,y,_,O||x):t.context.rect(l,h,y,_),e&&t.context.fill(e),i&&t.context.stroke(i);break;case"ellipse":p=Lt(s,"cx",0),g=Lt(s,"cy",0),O=Lt(s,"rx",0),x=Lt(s,"ry",0),t.context.beginPath(),t.context.ellipse(p,g,O,x),e&&t.context.fill(e),i&&t.context.stroke(i);break;case"line":c=Lt(s,"x1",0),u=Lt(s,"y1",0),d=Lt(s,"x2",0),f=Lt(s,"y2",0),t.context.beginPath(),t.context.moveTo(c,u),t.context.lineTo(d,f),i&&t.context.stroke(i);break;case"polygon":v=s.getAttribute("points"),b=v.match(/-?\d+/g).map(k=>parseInt(k,10)),t.context.poly(b,!0),e&&t.context.fill(e),i&&t.context.stroke(i);break;case"polyline":v=s.getAttribute("points"),b=v.match(/-?\d+/g).map(k=>parseInt(k,10)),t.context.poly(b,!1),i&&t.context.stroke(i);break;case"g":case"svg":break;default:{ve(`[SVG parser] <${s.nodeName}> elements unsupported`);break}}a&&(e=null);for(let k=0;k<n.length;k++)Ay(n[k],t,e,i)}const fg={repeat:{addressModeU:"repeat",addressModeV:"repeat"},"repeat-x":{addressModeU:"repeat",addressModeV:"clamp-to-edge"},"repeat-y":{addressModeU:"clamp-to-edge",addressModeV:"repeat"},"no-repeat":{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}};class lh{constructor(t,e){this.uid=Dt("fillPattern"),this._tick=0,this.transform=new ft,this.texture=t,this.transform.scale(1/t.frame.width,1/t.frame.height),e&&(t.source.style.addressModeU=fg[e].addressModeU,t.source.style.addressModeV=fg[e].addressModeV)}setTransform(t){const e=this.texture;this.transform.copyFrom(t),this.transform.invert(),this.transform.scale(1/e.frame.width,1/e.frame.height),this._tick++}get texture(){return this._texture}set texture(t){this._texture!==t&&(this._texture=t,this._tick++)}get styleKey(){return`fill-pattern-${this.uid}-${this._tick}`}destroy(){this.texture.destroy(!0),this.texture=null}}function $C(s){return Jt.isColorLike(s)}function pg(s){return s instanceof lh}function gg(s){return s instanceof ts}function CC(s){return s instanceof bt}function PC(s,t,e){const i=Jt.shared.setValue(t??0);return s.color=i.toNumber(),s.alpha=i.alpha===1?e.alpha:i.alpha,s.texture=bt.WHITE,{...e,...s}}function TC(s,t,e){return s.texture=t,{...e,...s}}function mg(s,t,e){return s.fill=t,s.color=16777215,s.texture=t.texture,s.matrix=t.transform,{...e,...s}}function Og(s,t,e){return t.buildGradient(),s.fill=t,s.color=16777215,s.texture=t.texture,s.matrix=t.transform,s.textureSpace=t.textureSpace,{...e,...s}}function MC(s,t){const e={...t,...s},i=Jt.shared.setValue(e.color);return e.alpha*=i.alpha,e.color=i.toNumber(),e}function Vs(s,t){if(s==null)return null;const e={},i=s;return $C(s)?PC(e,s,t):CC(s)?TC(e,s,t):pg(s)?mg(e,s,t):gg(s)?Og(e,s,t):i.fill&&pg(i.fill)?mg(i,i.fill,t):i.fill&&gg(i.fill)?Og(i,i.fill,t):MC(i,t)}function yl(s,t){const{width:e,alignment:i,miterLimit:n,cap:r,join:o,pixelLine:a,...l}=t,h=Vs(s,l);return h?{width:e,alignment:i,miterLimit:n,cap:r,join:o,pixelLine:a,...h}:null}function AC(s,t){let e=1;const i=s.shapePath.shapePrimitives;for(let n=0;n<i.length;n++){const r=i[n].shape;if(r.type!=="polygon")continue;const o=r.points,a=o.length;if(a<6)continue;const l=r.closePath;for(let h=0;h<a;h+=2){if(!l&&(h===0||h===a-2))continue;const c=(h-2+a)%a,u=(h+2)%a,d=o[c],f=o[c+1],p=o[h],g=o[h+1],m=o[u],O=o[u+1],x=d-p,b=f-g,v=m-p,w=O-g,S=x*x+b*b,y=v*v+w*w;if(S<1e-12||y<1e-12)continue;let P=(x*v+b*w)/Math.sqrt(S*y);P<-1?P=-1:P>1&&(P=1);const T=Math.sqrt((1-P)*.5);if(T<1e-6)continue;const $=Math.min(1/T,t);$>e&&(e=$)}}return e}const QC=new Gt,yg=new ft,ef=class _i extends Li{constructor(){super(...arguments),this._gpuData=Object.create(null),this.autoGarbageCollect=!0,this._gcLastUsed=-1,this.uid=Dt("graphicsContext"),this.dirty=!0,this.batchMode="auto",this.instructions=[],this.destroyed=!1,this._activePath=new Hi,this._transform=new ft,this._fillStyle={..._i.defaultFillStyle},this._strokeStyle={..._i.defaultStrokeStyle},this._stateStack=[],this._tick=0,this._bounds=new si,this._boundsDirty=!0}clone(){const t=new _i;return t.batchMode=this.batchMode,t.instructions=this.instructions.slice(),t._activePath=this._activePath.clone(),t._transform=this._transform.clone(),t._fillStyle={...this._fillStyle},t._strokeStyle={...this._strokeStyle},t._stateStack=this._stateStack.slice(),t._bounds=this._bounds.clone(),t._boundsDirty=!0,t}get fillStyle(){return this._fillStyle}set fillStyle(t){this._fillStyle=Vs(t,_i.defaultFillStyle)}get strokeStyle(){return this._strokeStyle}set strokeStyle(t){this._strokeStyle=yl(t,_i.defaultStrokeStyle)}setFillStyle(t){return this._fillStyle=Vs(t,_i.defaultFillStyle),this}setStrokeStyle(t){return this._strokeStyle=Vs(t,_i.defaultStrokeStyle),this}texture(t,e,i,n,r,o){return this.instructions.push({action:"texture",data:{image:t,dx:i||0,dy:n||0,dw:r||t.frame.width,dh:o||t.frame.height,transform:this._transform.clone(),alpha:this._fillStyle.alpha,style:e||e===0?Jt.shared.setValue(e).toNumber():16777215}}),this.onUpdate(),this}beginPath(){return this._activePath=new Hi,this}fill(t,e){let i;const n=this.instructions[this.instructions.length-1];return this._tick===0&&(n==null?void 0:n.action)==="stroke"?i=n.data.path:i=this._activePath.clone(),i?(t!=null&&(e!==void 0&&typeof t=="number"&&(xt(It,"GraphicsContext.fill(color, alpha) is deprecated, use GraphicsContext.fill({ color, alpha }) instead"),t={color:t,alpha:e}),this._fillStyle=Vs(t,_i.defaultFillStyle)),this.instructions.push({action:"fill",data:{style:this.fillStyle,path:i}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}_initNextPathLocation(){const{x:t,y:e}=this._activePath.getLastPoint(Gt.shared);this._activePath.clear(),this._activePath.moveTo(t,e)}stroke(t){let e;const i=this.instructions[this.instructions.length-1];return this._tick===0&&(i==null?void 0:i.action)==="fill"?e=i.data.path:e=this._activePath.clone(),e?(t!=null&&(this._strokeStyle=yl(t,_i.defaultStrokeStyle)),this.instructions.push({action:"stroke",data:{style:this.strokeStyle,path:e}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}cut(){for(let t=0;t<2;t++){const e=this.instructions[this.instructions.length-1-t],i=this._activePath.clone();if(e&&(e.action==="stroke"||e.action==="fill"))if(e.data.hole)e.data.hole.addPath(i);else{e.data.hole=i;break}}return this._initNextPathLocation(),this}arc(t,e,i,n,r,o){this._tick++;const a=this._transform;return this._activePath.arc(a.a*t+a.c*e+a.tx,a.b*t+a.d*e+a.ty,i,n,r,o),this}arcTo(t,e,i,n,r){this._tick++;const o=this._transform;return this._activePath.arcTo(o.a*t+o.c*e+o.tx,o.b*t+o.d*e+o.ty,o.a*i+o.c*n+o.tx,o.b*i+o.d*n+o.ty,r),this}arcToSvg(t,e,i,n,r,o,a){this._tick++;const l=this._transform;return this._activePath.arcToSvg(t,e,i,n,r,l.a*o+l.c*a+l.tx,l.b*o+l.d*a+l.ty),this}bezierCurveTo(t,e,i,n,r,o,a){this._tick++;const l=this._transform;return this._activePath.bezierCurveTo(l.a*t+l.c*e+l.tx,l.b*t+l.d*e+l.ty,l.a*i+l.c*n+l.tx,l.b*i+l.d*n+l.ty,l.a*r+l.c*o+l.tx,l.b*r+l.d*o+l.ty,a),this}closePath(){var t;return this._tick++,(t=this._activePath)==null||t.closePath(),this}ellipse(t,e,i,n){return this._tick++,this._activePath.ellipse(t,e,i,n,this._transform.clone()),this}circle(t,e,i){return this._tick++,this._activePath.circle(t,e,i,this._transform.clone()),this}path(t){return this._tick++,this._activePath.addPath(t,this._transform.clone()),this}lineTo(t,e){this._tick++;const i=this._transform;return this._activePath.lineTo(i.a*t+i.c*e+i.tx,i.b*t+i.d*e+i.ty),this}moveTo(t,e){this._tick++;const i=this._transform,n=this._activePath.instructions,r=i.a*t+i.c*e+i.tx,o=i.b*t+i.d*e+i.ty;return n.length===1&&n[0].action==="moveTo"?(n[0].data[0]=r,n[0].data[1]=o,this):(this._activePath.moveTo(r,o),this)}quadraticCurveTo(t,e,i,n,r){this._tick++;const o=this._transform;return this._activePath.quadraticCurveTo(o.a*t+o.c*e+o.tx,o.b*t+o.d*e+o.ty,o.a*i+o.c*n+o.tx,o.b*i+o.d*n+o.ty,r),this}rect(t,e,i,n){return this._tick++,this._activePath.rect(t,e,i,n,this._transform.clone()),this}roundRect(t,e,i,n,r){return this._tick++,this._activePath.roundRect(t,e,i,n,r,this._transform.clone()),this}poly(t,e){return this._tick++,this._activePath.poly(t,e,this._transform.clone()),this}regularPoly(t,e,i,n,r=0,o){return this._tick++,this._activePath.regularPoly(t,e,i,n,r,o),this}roundPoly(t,e,i,n,r,o){return this._tick++,this._activePath.roundPoly(t,e,i,n,r,o),this}roundShape(t,e,i,n){return this._tick++,this._activePath.roundShape(t,e,i,n),this}filletRect(t,e,i,n,r){return this._tick++,this._activePath.filletRect(t,e,i,n,r),this}chamferRect(t,e,i,n,r,o){return this._tick++,this._activePath.chamferRect(t,e,i,n,r,o),this}star(t,e,i,n,r=0,o=0){return this._tick++,this._activePath.star(t,e,i,n,r,o,this._transform.clone()),this}svg(t){return this._tick++,kC(t,this),this}restore(){const t=this._stateStack.pop();return t&&(this._transform=t.transform,this._fillStyle=t.fillStyle,this._strokeStyle=t.strokeStyle),this}save(){return this._stateStack.push({transform:this._transform.clone(),fillStyle:{...this._fillStyle},strokeStyle:{...this._strokeStyle}}),this}getTransform(){return this._transform}resetTransform(){return this._transform.identity(),this}rotate(t){return this._transform.rotate(t),this}scale(t,e=t){return this._transform.scale(t,e),this}setTransform(t,e,i,n,r,o){return t instanceof ft?(this._transform.set(t.a,t.b,t.c,t.d,t.tx,t.ty),this):(this._transform.set(t,e,i,n,r,o),this)}transform(t,e,i,n,r,o){return t instanceof ft?(this._transform.append(t),this):(yg.set(t,e,i,n,r,o),this._transform.append(yg),this)}translate(t,e=t){return this._transform.translate(t,e),this}clear(){return this._activePath.clear(),this.instructions.length=0,this.resetTransform(),this.onUpdate(),this}onUpdate(){this._boundsDirty=!0,this.dirty=!0,this.emit("update",this,16)}get bounds(){if(!this._boundsDirty)return this._bounds;this._boundsDirty=!1;const t=this._bounds;t.clear();for(let e=0;e<this.instructions.length;e++){const i=this.instructions[e],n=i.action;if(n==="fill"){const r=i.data;t.addBounds(r.path.bounds)}else if(n==="texture"){const r=i.data;t.addFrame(r.dx,r.dy,r.dx+r.dw,r.dy+r.dh,r.transform)}if(n==="stroke"){const r=i.data,o=r.style.alignment;let a=r.style.width*(1-o);r.style.join==="miter"&&(a*=AC(r.path,r.style.miterLimit));const l=r.path.bounds;t.addFrame(l.minX-a,l.minY-a,l.maxX+a,l.maxY+a)}}return t.isValid||t.set(0,0,0,0),t}containsPoint(t){var n;if(!this.bounds.containsPoint(t.x,t.y))return!1;const e=this.instructions;let i=!1;for(let r=0;r<e.length;r++){const o=e[r],a=o.data,l=a.path;if(!o.action||!l)continue;const h=a.style,c=l.shapePath.shapePrimitives;for(let u=0;u<c.length;u++){const d=c[u].shape;if(!h||!d)continue;const f=c[u].transform,p=f?f.applyInverse(t,QC):t;if(o.action==="fill")i=d.contains(p.x,p.y);else{const m=h;i=d.strokeContains(p.x,p.y,m.width,m.alignment)}const g=a.hole;if(g){const m=(n=g.shapePath)==null?void 0:n.shapePrimitives;if(m)for(let O=0;O<m.length;O++)m[O].shape.contains(p.x,p.y)&&(i=!1)}if(i)return!0}}return i}unload(){var t;this.emit("unload",this);for(const e in this._gpuData)(t=this._gpuData[e])==null||t.destroy();this._gpuData=Object.create(null)}destroy(t=!1){if(this.destroyed)return;if(this.destroyed=!0,this._stateStack.length=0,this._transform=null,this.unload(),this.emit("destroy",this),this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.texture){const i=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._fillStyle.texture&&(this._fillStyle.fill&&"uid"in this._fillStyle.fill?this._fillStyle.fill.destroy():this._fillStyle.texture.destroy(i)),this._strokeStyle.texture&&(this._strokeStyle.fill&&"uid"in this._strokeStyle.fill?this._strokeStyle.fill.destroy():this._strokeStyle.texture.destroy(i))}this._fillStyle=null,this._strokeStyle=null,this.instructions=null,this._activePath=null,this._bounds=null,this._stateStack=null,this.customShader=null,this._transform=null}};ef.defaultFillStyle={color:16777215,alpha:1,texture:bt.WHITE,matrix:null,fill:null,textureSpace:"local"};ef.defaultStrokeStyle={width:1,color:16777215,alpha:1,alignment:.5,miterLimit:10,cap:"butt",join:"miter",texture:bt.WHITE,matrix:null,fill:null,textureSpace:"local",pixelLine:!1};let li=ef;class RC{constructor(t){this._canvasPool=Object.create(null),this.canvasOptions=t||{},this.enableFullScreen=!1}_createCanvasAndContext(t,e){const i=Ye.get().createCanvas();i.width=t,i.height=e;const n=i.getContext("2d");return{canvas:i,context:n}}getOptimalCanvasAndContext(t,e,i=1){t=Math.ceil(t*i-1e-6),e=Math.ceil(e*i-1e-6),t=Jn(t),e=Jn(e);const n=(t<<17)+(e<<1);this._canvasPool[n]||(this._canvasPool[n]=[]);let r=this._canvasPool[n].pop();return r||(r=this._createCanvasAndContext(t,e)),r}returnCanvasAndContext(t){const e=t.canvas,{width:i,height:n}=e,r=(i<<17)+(n<<1);t.context.resetTransform(),t.context.clearRect(0,0,i,n),this._canvasPool[r].push(t)}clear(){this._canvasPool={}}}const bu=new RC;zo.register(bu);const EC=new si;function LC(s,t,e,i,n=!1){const r=EC;r.minX=0,r.minY=0,r.maxX=s.width/i|0,r.maxY=s.height/i|0;const o=nh.getOptimalTexture(r.width,r.height,i,!1,n);return o.source.uploadMethodId="image",o.source.resource=s,o.source.alphaMode="premultiply-alpha-on-upload",o.frame.width=t/i,o.frame.height=e/i,o.source.emit("update",o.source),o.updateUvs(),o}class IC{constructor(){this.isBatchable=!1}reset(){this.isBatchable=!1,this.context=null,this.graphicsData&&(this.graphicsData.destroy(),this.graphicsData=null)}destroy(){this.reset()}}class ZC{constructor(){this.instructions=new Gd}init(){this.instructions.reset()}destroy(){this.instructions.destroy(),this.instructions=null}}const sf=class wu{constructor(t){this._renderer=t,this._managedContexts=new Wo({renderer:t,type:"resource",name:"graphicsContext"})}init(t){wu.defaultOptions.bezierSmoothness=(t==null?void 0:t.bezierSmoothness)??wu.defaultOptions.bezierSmoothness}getContextRenderData(t){return this.getGpuContext(t).graphicsData||this._initContextRenderData(t)}updateGpuContext(t){const e=t._gpuData,i=!!e[this._renderer.uid],n=e[this._renderer.uid]||this._initContext(t);return(t.dirty||!i)&&(i&&n.reset(),n.isBatchable=!1,t.dirty=!1),n}getGpuContext(t){return t._gpuData[this._renderer.uid]||this._initContext(t)}_initContextRenderData(t){const e=new ZC,i=this.getGpuContext(t);return i.graphicsData=e,e.init(),e}_initContext(t){const e=new IC;return e.context=t,t._gpuData[this._renderer.uid]=e,this._managedContexts.add(t),e}destroy(){this._managedContexts.destroy(),this._renderer=null}};sf.extension={type:[lt.CanvasSystem],name:"graphicsContext"};sf.defaultOptions={bezierSmoothness:.5};let DC=sf;class Qy{constructor(t,e){this.state=sy.for2d(),this.renderer=t,this._adaptor=e,this.renderer.runners.contextChange.add(this),this._managedGraphics=new Wo({renderer:t,type:"renderable",priority:-1,name:"graphics"})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(t){return!1}addRenderable(t,e){this._managedGraphics.add(t),this.renderer.renderPipes.batch.break(e),e.add(t)}updateRenderable(t){}execute(t){t.isRenderable&&this._adaptor.execute(this,t)}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null}}Qy.extension={type:[lt.CanvasPipes],name:"graphics"};function BC(s,t,e){const i=(s>>24&255)/255;t[e++]=(s&255)/255*i,t[e++]=(s>>8&255)/255*i,t[e++]=(s>>16&255)/255*i,t[e++]=i}class XC{constructor(){this.batches=[],this.batched=!1}destroy(){this.batches.forEach(t=>{Le.return(t)}),this.batches.length=0}}class Ry{constructor(t,e){this.state=sy.for2d(),this.renderer=t,this._adaptor=e,this.renderer.runners.contextChange.add(this),this._managedGraphics=new Wo({renderer:t,type:"renderable",priority:-1,name:"graphics"})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(t){const e=t.context,i=!!t._gpuData,r=this.renderer.graphicsContext.updateGpuContext(e);return!!(r.isBatchable||i!==r.isBatchable)}addRenderable(t,e){const n=this.renderer.graphicsContext.updateGpuContext(t.context);t.didViewUpdate&&this._rebuild(t),n.isBatchable?this._addToBatcher(t,e):(this.renderer.renderPipes.batch.break(e),e.add(t))}updateRenderable(t){const i=this._getGpuDataForRenderable(t).batches;for(let n=0;n<i.length;n++){const r=i[n];r._batcher.updateElement(r)}}execute(t){if(!t.isRenderable)return;const e=this.renderer,i=t.context;if(!e.graphicsContext.getGpuContext(i).batches.length)return;const r=i.customShader||this._adaptor.shader;this.state.blendMode=t.groupBlendMode;const o=r.resources.localUniforms.uniforms;o.uTransformMatrix=t.groupTransform,o.uRound=e._roundPixels|t._roundPixels,BC(t.groupColorAlpha,o.uColor,0),this._adaptor.execute(this,t)}_rebuild(t){const e=this._getGpuDataForRenderable(t),n=this.renderer.graphicsContext.updateGpuContext(t.context);e.destroy(),n.isBatchable&&this._updateBatchesForRenderable(t,e)}_addToBatcher(t,e){const i=this.renderer.renderPipes.batch,n=this._getGpuDataForRenderable(t).batches;for(let r=0;r<n.length;r++){const o=n[r];i.addToBatch(o,e)}}_getGpuDataForRenderable(t){return t._gpuData[this.renderer.uid]||this._initGpuDataForRenderable(t)}_initGpuDataForRenderable(t){const e=new XC;return t._gpuData[this.renderer.uid]=e,this._managedGraphics.add(t),e}_updateBatchesForRenderable(t,e){const i=t.context,r=this.renderer.graphicsContext.getGpuContext(i),o=this.renderer._roundPixels|t._roundPixels;e.batches=r.batches.map(a=>{const l=Le.get(Hd);return a.copyTo(l),l.renderable=t,l.roundPixels=o,l})}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null}}Ry.extension={type:[lt.WebGLPipes,lt.WebGPUPipes],name:"graphics"};Vt.add(Qy);Vt.add(Ry);Vt.add(DC);Vt.add(tf);class ht extends Yd{constructor(t){t instanceof li&&(t={context:t});const{context:e,roundPixels:i,...n}=t||{};super({label:"Graphics",...n}),this.renderPipeId="graphics",e?this.context=e:(this.context=this._ownedContext=new li,this.context.autoGarbageCollect=this.autoGarbageCollect),this.didViewUpdate=!0,this.allowChildren=!1,this.roundPixels=i??!1}set context(t){t!==this._context&&(this._context&&(this._context.off("update",this.onViewUpdate,this),this._context.off("unload",this.unload,this)),this._context=t,this._context.on("update",this.onViewUpdate,this),this._context.on("unload",this.unload,this),this.onViewUpdate())}get context(){return this._context}get bounds(){return this._context.bounds}updateBounds(){}containsPoint(t){return this._context.containsPoint(t)}destroy(t){this._ownedContext&&!t?this._ownedContext.destroy(t):(t===!0||(t==null?void 0:t.context)===!0)&&this._context.destroy(t),this._ownedContext=null,this._context=null,super.destroy(t)}_onTouch(t){this._gcLastUsed=t,this._context._gcLastUsed=t}_callContextMethod(t,e){return this.context[t](...e),this}setFillStyle(...t){return this._callContextMethod("setFillStyle",t)}setStrokeStyle(...t){return this._callContextMethod("setStrokeStyle",t)}fill(...t){return this._callContextMethod("fill",t)}stroke(...t){return this._callContextMethod("stroke",t)}texture(...t){return this._callContextMethod("texture",t)}beginPath(){return this._callContextMethod("beginPath",[])}cut(){return this._callContextMethod("cut",[])}arc(...t){return this._callContextMethod("arc",t)}arcTo(...t){return this._callContextMethod("arcTo",t)}arcToSvg(...t){return this._callContextMethod("arcToSvg",t)}bezierCurveTo(...t){return this._callContextMethod("bezierCurveTo",t)}closePath(){return this._callContextMethod("closePath",[])}ellipse(...t){return this._callContextMethod("ellipse",t)}circle(...t){return this._callContextMethod("circle",t)}path(...t){return this._callContextMethod("path",t)}lineTo(...t){return this._callContextMethod("lineTo",t)}moveTo(...t){return this._callContextMethod("moveTo",t)}quadraticCurveTo(...t){return this._callContextMethod("quadraticCurveTo",t)}rect(...t){return this._callContextMethod("rect",t)}roundRect(...t){return this._callContextMethod("roundRect",t)}poly(...t){return this._callContextMethod("poly",t)}regularPoly(...t){return this._callContextMethod("regularPoly",t)}roundPoly(...t){return this._callContextMethod("roundPoly",t)}roundShape(...t){return this._callContextMethod("roundShape",t)}filletRect(...t){return this._callContextMethod("filletRect",t)}chamferRect(...t){return this._callContextMethod("chamferRect",t)}star(...t){return this._callContextMethod("star",t)}svg(...t){return this._callContextMethod("svg",t)}restore(...t){return this._callContextMethod("restore",t)}save(){return this._callContextMethod("save",[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod("resetTransform",[])}rotateTransform(...t){return this._callContextMethod("rotate",t)}scaleTransform(...t){return this._callContextMethod("scale",t)}setTransform(...t){return this._callContextMethod("setTransform",t)}transform(...t){return this._callContextMethod("transform",t)}translateTransform(...t){return this._callContextMethod("translate",t)}clear(){return this._callContextMethod("clear",[])}get fillStyle(){return this._context.fillStyle}set fillStyle(t){this._context.fillStyle=t}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(t){this._context.strokeStyle=t}clone(t=!1){return t?new ht(this._context.clone()):(this._ownedContext=null,new ht(this._context))}lineStyle(t,e,i){xt(It,"Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.");const n={};return t&&(n.width=t),e&&(n.color=e),i&&(n.alpha=i),this.context.strokeStyle=n,this}beginFill(t,e){xt(It,"Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.");const i={};return t!==void 0&&(i.color=t),e!==void 0&&(i.alpha=e),this.context.fillStyle=i,this}endFill(){xt(It,"Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style."),this.context.fill();const t=this.context.strokeStyle;return(t.width!==li.defaultStrokeStyle.width||t.color!==li.defaultStrokeStyle.color||t.alpha!==li.defaultStrokeStyle.alpha)&&this.context.stroke(),this}drawCircle(...t){return xt(It,"Graphics#drawCircle has been renamed to Graphics#circle"),this._callContextMethod("circle",t)}drawEllipse(...t){return xt(It,"Graphics#drawEllipse has been renamed to Graphics#ellipse"),this._callContextMethod("ellipse",t)}drawPolygon(...t){return xt(It,"Graphics#drawPolygon has been renamed to Graphics#poly"),this._callContextMethod("poly",t)}drawRect(...t){return xt(It,"Graphics#drawRect has been renamed to Graphics#rect"),this._callContextMethod("rect",t)}drawRoundedRect(...t){return xt(It,"Graphics#drawRoundedRect has been renamed to Graphics#roundRect"),this._callContextMethod("roundRect",t)}drawStar(...t){return xt(It,"Graphics#drawStar has been renamed to Graphics#star"),this._callContextMethod("star",t)}}class zC extends Yd{constructor(t,e){const{text:i,resolution:n,style:r,anchor:o,width:a,height:l,roundPixels:h,...c}=t;super({...c}),this.batched=!0,this._resolution=null,this._autoResolution=!0,this._didTextUpdate=!0,this._styleClass=e,this.text=i??"",this.style=r,this.resolution=n??null,this.allowChildren=!1,this._anchor=new he({_onUpdate:()=>{this.onViewUpdate()}}),o&&(this.anchor=o),this.roundPixels=h??!1,a!==void 0&&(this.width=a),l!==void 0&&(this.height=l)}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}set text(t){t=t.toString(),this._text!==t&&(this._text=t,this.onViewUpdate())}get text(){return this._text}set resolution(t){this._autoResolution=t===null,this._resolution=t,this.onViewUpdate()}get resolution(){return this._resolution}get style(){return this._style}set style(t){var e;t||(t={}),(e=this._style)==null||e.off("update",this.onViewUpdate,this),t instanceof this._styleClass?this._style=t:this._style=new this._styleClass(t),this._style.on("update",this.onViewUpdate,this),this.onViewUpdate()}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(t){this._setWidth(t,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(t){this._setHeight(t,this.bounds.height)}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this.bounds.width,t.height=Math.abs(this.scale.y)*this.bounds.height,t}setSize(t,e){typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,this.bounds.width),e!==void 0&&this._setHeight(e,this.bounds.height)}containsPoint(t){const e=this.bounds.width,i=this.bounds.height,n=-e*this.anchor.x;let r=0;return t.x>=n&&t.x<=n+e&&(r=-i*this.anchor.y,t.y>=r&&t.y<=r+i)}onViewUpdate(){this.didViewUpdate||(this._didTextUpdate=!0),super.onViewUpdate()}destroy(t=!1){super.destroy(t),this.owner=null,this._bounds=null,this._anchor=null,(typeof t=="boolean"?t:t!=null&&t.style)&&this._style.destroy(t),this._style=null,this._text=null}get styleKey(){return`${this._text}:${this._style.styleKey}:${this._resolution}`}}function WC(s,t){let e=s[0]??{};return(typeof e=="string"||s[1])&&(xt(It,`use new ${t}({ text: "hi!", style }) instead`),e={text:e,style:s[1]}),e}let As=null,Wi=null;function GC(s,t){As||(As=Ye.get().createCanvas(256,128),Wi=As.getContext("2d",{willReadFrequently:!0}),Wi.globalCompositeOperation="copy",Wi.globalAlpha=1),(As.width<s||As.height<t)&&(As.width=Jn(s),As.height=Jn(t))}function xg(s,t,e){for(let i=0,n=4*e*t;i<t;++i,n+=4)if(s[n+3]!==0)return!1;return!0}function bg(s,t,e,i,n){const r=4*t;for(let o=i,a=i*r+4*e;o<=n;++o,a+=r)if(s[a+3]!==0)return!1;return!0}function YC(...s){let t=s[0];t.canvas||(t={canvas:s[0],resolution:s[1]});const{canvas:e}=t,i=Math.min(t.resolution??1,1),n=t.width??e.width,r=t.height??e.height;let o=t.output;if(GC(n,r),!Wi)throw new TypeError("Failed to get canvas 2D context");Wi.drawImage(e,0,0,n,r,0,0,n*i,r*i);const l=Wi.getImageData(0,0,n,r).data;let h=0,c=0,u=n-1,d=r-1;for(;c<r&&xg(l,n,c);)++c;if(c===r)return Zt.EMPTY;for(;xg(l,n,d);)--d;for(;bg(l,n,h,c,d);)++h;for(;bg(l,n,u,c,d);)--u;return++u,++d,Wi.globalCompositeOperation="source-over",Wi.strokeRect(h,c,u-h,d-c),Wi.globalCompositeOperation="copy",o??(o=new Zt),o.set(h/i,c/i,(u-h)/i,(d-c)/i),o}/**
|
|
240
|
+
* tiny-lru
|
|
241
|
+
*
|
|
242
|
+
* @copyright 2026 Jason Mulligan <jason.mulligan@avoidwork.com>
|
|
243
|
+
* @license BSD-3-Clause
|
|
244
|
+
* @version 11.4.7
|
|
245
|
+
*/class NC{constructor(t=0,e=0,i=!1){this.first=null,this.items=Object.create(null),this.last=null,this.max=t,this.resetTtl=i,this.size=0,this.ttl=e}clear(){return this.first=null,this.items=Object.create(null),this.last=null,this.size=0,this}delete(t){if(this.has(t)){const e=this.items[t];delete this.items[t],this.size--,e.prev!==null&&(e.prev.next=e.next),e.next!==null&&(e.next.prev=e.prev),this.first===e&&(this.first=e.next),this.last===e&&(this.last=e.prev)}return this}entries(t=this.keys()){const e=new Array(t.length);for(let i=0;i<t.length;i++){const n=t[i];e[i]=[n,this.get(n)]}return e}evict(t=!1){if(t||this.size>0){const e=this.first;delete this.items[e.key],--this.size===0?(this.first=null,this.last=null):(this.first=e.next,this.first.prev=null)}return this}expiresAt(t){let e;return this.has(t)&&(e=this.items[t].expiry),e}get(t){const e=this.items[t];if(e!==void 0){if(this.ttl>0&&e.expiry<=Date.now()){this.delete(t);return}return this.moveToEnd(e),e.value}}has(t){return t in this.items}moveToEnd(t){this.last!==t&&(t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.first===t&&(this.first=t.next),t.prev=this.last,t.next=null,this.last!==null&&(this.last.next=t),this.last=t,this.first===null&&(this.first=t))}keys(){const t=new Array(this.size);let e=this.first,i=0;for(;e!==null;)t[i++]=e.key,e=e.next;return t}setWithEvicted(t,e,i=this.resetTtl){let n=null;if(this.has(t))this.set(t,e,!0,i);else{this.max>0&&this.size===this.max&&(n={...this.first},this.evict(!0));let r=this.items[t]={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:t,prev:this.last,next:null,value:e};++this.size===1?this.first=r:this.last.next=r,this.last=r}return n}set(t,e,i=!1,n=this.resetTtl){let r=this.items[t];return i||r!==void 0?(r.value=e,i===!1&&n&&(r.expiry=this.ttl>0?Date.now()+this.ttl:this.ttl),this.moveToEnd(r)):(this.max>0&&this.size===this.max&&this.evict(!0),r=this.items[t]={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:t,prev:this.last,next:null,value:e},++this.size===1?this.first=r:this.last.next=r,this.last=r),this}values(t=this.keys()){const e=new Array(t.length);for(let i=0;i<t.length;i++)e[i]=this.get(t[i]);return e}}function VC(s=1e3,t=0,e=!1){if(isNaN(s)||s<0)throw new TypeError("Invalid max value");if(isNaN(t)||t<0)throw new TypeError("Invalid ttl value");if(typeof e!="boolean")throw new TypeError("Invalid resetTtl value");return new NC(s,t,e)}function Ey(s){return!!s.tagStyles&&Object.keys(s.tagStyles).length>0}function Ly(s){return s.includes("<")}function FC(s,t){return s.clone().assign(t)}function qC(s,t){const e=[],i=t.tagStyles;if(!Ey(t)||!Ly(s))return e.push({text:s,style:t}),e;const n=[t],r=[];let o="",a=0;for(;a<s.length;){const l=s[a];if(l==="<"){const h=s.indexOf(">",a);if(h===-1){o+=l,a++;continue}const c=s.indexOf("<",a+1);if(c!==-1&&c<h){o+=l,a++;continue}const u=s.slice(a+1,h);if(u.startsWith("/")){const d=u.slice(1).trim();if(r.length>0&&r[r.length-1]===d){o.length>0&&(e.push({text:o,style:n[n.length-1]}),o=""),n.pop(),r.pop(),a=h+1;continue}else{o+=s.slice(a,h+1),a=h+1;continue}}else{const d=u.trim();if(i[d]){o.length>0&&(e.push({text:o,style:n[n.length-1]}),o="");const f=n[n.length-1],p=FC(f,i[d]);n.push(p),r.push(d),a=h+1;continue}else{o+=s.slice(a,h+1),a=h+1;continue}}}else o+=l,a++}return o.length>0&&e.push({text:o,style:n[n.length-1]}),e}const jC=[10,13],UC=new Set(jC),HC=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288],KC=new Set(HC),JC=[9,32];new Set(JC);const tP=[45,8208,8211,8212,173],eP=new Set(tP),iP=/(\r\n|\r|\n)/,sP=/(?:\r\n|\r|\n)/;function xl(s){return typeof s!="string"?!1:UC.has(s.charCodeAt(0))}function Ke(s,t){return typeof s!="string"?!1:KC.has(s.charCodeAt(0))}function nP(s){return typeof s!="string"?!1:eP.has(s.charCodeAt(0))}function Iy(s){return s==="normal"||s==="pre-line"}function Zy(s){return s==="normal"}function Xi(s){if(typeof s!="string")return"";let t=s.length-1;for(;t>=0&&Ke(s[t]);)t--;return t<s.length-1?s.slice(0,t+1):s}function Dy(s){const t=[],e=[];if(typeof s!="string")return t;for(let i=0;i<s.length;i++){const n=s[i],r=s[i+1];if(Ke(n)||xl(n)){e.length>0&&(t.push(e.join("")),e.length=0),n==="\r"&&r===`
|
|
246
|
+
`?(t.push(`\r
|
|
247
|
+
`),i++):t.push(n);continue}e.push(n),nP(n)&&r&&!Ke(r)&&!xl(r)&&(t.push(e.join("")),e.length=0)}return e.length>0&&t.push(e.join("")),t}function By(s,t,e,i){const n=e(s),r=[];for(let o=0;o<n.length;o++){let a=n[o],l=a,h=1;for(;n[o+h];){const c=n[o+h];if(!i(l,c,s,o,t))a+=c,l=c,h++;else break}o+=h-1,r.push(a)}return r}const rP=/\r\n|\r|\n/g;function oP(s,t,e,i,n,r,o,a,l){var C,B;const h=qC(s,t);if(Zy(t.whiteSpace))for(let E=0;E<h.length;E++){const I=h[E];h[E]={text:I.text.replace(rP," "),style:I.style}}const u=[];let d=[];for(const E of h){const I=E.text.split(iP);for(let V=0;V<I.length;V++){const Z=I[V];Z===`\r
|
|
248
|
+
`||Z==="\r"||Z===`
|
|
249
|
+
`?(u.push(d),d=[]):Z.length>0&&d.push({text:Z,style:E.style})}}(d.length>0||u.length===0)&&u.push(d);const f=e?aP(u,t,i,r,a,l):u,p=[],g=[],m=[],O=[],x=[];let b=0;const v=t._fontString,w=o(v);w.fontSize===0&&(w.fontSize=t.fontSize,w.ascent=t.fontSize);let S="",y=!!t.dropShadow,_=((C=t._stroke)==null?void 0:C.width)||0;for(const E of f){let I=0,V=w.ascent,Z=w.descent,N="";for(const X of E){const H=X.style._fontString,K=o(H);H!==S&&(i.font=H,S=H);const it=n(X.text,X.style.letterSpacing,i);I+=it,V=Math.max(V,K.ascent),Z=Math.max(Z,K.descent),N+=X.text;const Ot=((B=X.style._stroke)==null?void 0:B.width)||0;Ot>_&&(_=Ot),!y&&X.style.dropShadow&&(y=!0)}E.length===0&&(V=w.ascent,Z=w.descent),p.push(I),g.push(V),m.push(Z),x.push(N);const z=t.lineHeight||V+Z;O.push(z+t.leading),b=Math.max(b,I)}const k=_,P=b+k+(t.dropShadow?t.dropShadow.distance:0);let T=0;for(let E=0;E<O.length;E++)T+=O[E];T=Math.max(T,O[0]+k);const $=T+(t.dropShadow?t.dropShadow.distance:0),A=t.lineHeight||w.fontSize;return{width:P,height:$,lines:x,lineWidths:p,lineHeight:A+t.leading,maxLineWidth:b,fontProperties:w,runsByLine:f,lineAscents:g,lineDescents:m,lineHeights:O,hasDropShadow:y}}function aP(s,t,e,i,n,r){var m;const{letterSpacing:o,whiteSpace:a,wordWrapWidth:l,breakWords:h}=t,c=Iy(a),u=l+o,d={};let f="";const p=(O,x)=>{const b=`${O}|${x.styleKey}`;let v=d[b];if(v===void 0){const w=x._fontString;w!==f&&(e.font=w,f=w),v=i(O,x.letterSpacing,e)+x.letterSpacing,d[b]=v}return v},g=[];for(const O of s){const x=lP(O),b=g.length,v=$=>{let A=0,C=$;do{const{token:B,style:E}=x[C];A+=p(B,E),C++}while(C<x.length&&x[C].continuesFromPrevious);return A},w=$=>{const A=[];let C=$;do A.push({token:x[C].token,style:x[C].style}),C++;while(C<x.length&&x[C].continuesFromPrevious);return A};let S=[],y=0,_=!c,k=null;const P=()=>{k&&k.text.length>0&&S.push(k),k=null},T=()=>{if(P(),S.length>0){const $=S[S.length-1];$.text=Xi($.text),$.text.length===0&&S.pop()}g.push(S),S=[],y=0,_=!1};for(let $=0;$<x.length;$++){const{token:A,style:C,continuesFromPrevious:B}=x[$],E=p(A,C);if(c){const Z=Ke(A),N=(k==null?void 0:k.text[k.text.length-1])??((m=S[S.length-1])==null?void 0:m.text.slice(-1))??"",z=N?Ke(N):!1;if(Z&&z)continue}const I=!B,V=I?v($):E;if(V>u&&I)if(y>0&&T(),h){const Z=w($);for(let N=0;N<Z.length;N++){const z=Z[N].token,X=Z[N].style,H=By(z,h,r,n);for(const K of H){const it=p(K,X);it+y>u&&T(),!k||k.style!==X?(P(),k={text:K,style:X}):k.text+=K,y+=it}}$+=Z.length-1}else{const Z=w($);P(),g.push(Z.map(N=>({text:N.token,style:N.style}))),_=!1,$+=Z.length-1}else if(V+y>u&&I){if(Ke(A)){_=!1;continue}T(),k={text:A,style:C},y=E}else if(B&&!h)!k||k.style!==C?(P(),k={text:A,style:C}):k.text+=A,y+=E;else{const Z=Ke(A);if(y===0&&Z&&!_)continue;!k||k.style!==C?(P(),k={text:A,style:C}):k.text+=A,y+=E}}if(P(),S.length>0){const $=S[S.length-1];$.text=Xi($.text),$.text.length===0&&S.pop()}(S.length>0||g.length===b)&&g.push(S)}return g}function lP(s){const t=[];let e=!1;for(const i of s){const n=Dy(i.text);let r=!0;for(const o of n){const a=Ke(o)||xl(o),l=r&&e&&!a;t.push({token:o,style:i.style,continuesFromPrevious:l}),e=!a,r=!1}}return t}const hP={willReadFrequently:!0};function wg(s,t,e,i,n){let r=e[s];return typeof r!="number"&&(r=n(s,t,i)+t,e[s]=r),r}function cP(s,t,e,i,n,r,o){const a=e.getContext("2d",hP);a.font=t._fontString;let l=0,h="";const c=[],u=Object.create(null),{letterSpacing:d,whiteSpace:f}=t,p=Iy(f),g=Zy(f);let m=!p;const O=t.wordWrapWidth+d,x=Dy(s);for(let v=0;v<x.length;v++){let w=x[v];if(xl(w)){if(!g){c.push(Xi(h)),m=!p,h="",l=0;continue}w=" "}if(p){const y=Ke(w),_=Ke(h[h.length-1]);if(y&&_)continue}const S=wg(w,d,u,a,i);if(S>O)if(h!==""&&(c.push(Xi(h)),h="",l=0),n(w,t.breakWords)){const y=By(w,t.breakWords,o,r);for(const _ of y){const k=wg(_,d,u,a,i);k+l>O&&(c.push(Xi(h)),m=!1,h="",l=0),h+=_,l+=k}}else h.length>0&&(c.push(Xi(h)),h="",l=0),c.push(Xi(w)),m=!1,h="",l=0;else S+l>O&&(m=!1,c.push(Xi(h)),h="",l=0),(h.length>0||!Ke(w)||m)&&(h+=w,l+=S)}const b=Xi(h);return b.length>0&&c.push(b),c.join(`
|
|
250
|
+
`)}const Sg={willReadFrequently:!0},rs=class st{static get experimentalLetterSpacingSupported(){let t=st._experimentalLetterSpacingSupported;if(t===void 0){const e=Ye.get().getCanvasRenderingContext2D().prototype;t=st._experimentalLetterSpacingSupported="letterSpacing"in e||"textLetterSpacing"in e}return t}constructor(t,e,i,n,r,o,a,l,h,c){this.text=t,this.style=e,this.width=i,this.height=n,this.lines=r,this.lineWidths=o,this.lineHeight=a,this.maxLineWidth=l,this.fontProperties=h,c&&(this.runsByLine=c.runsByLine,this.lineAscents=c.lineAscents,this.lineDescents=c.lineDescents,this.lineHeights=c.lineHeights,this.hasDropShadow=c.hasDropShadow)}static measureText(t=" ",e,i=st._canvas,n=e.wordWrap){var v;const r=`${t}-${e.styleKey}-wordWrap-${n}`;if(st._measurementCache.has(r))return st._measurementCache.get(r);if(Ey(e)&&Ly(t)){const w=oP(t,e,n,st._context,st._measureText,st._measureTextAdvance,st.measureFont,st.canBreakChars,st.wordWrapSplit),S=new st(t,e,w.width,w.height,w.lines,w.lineWidths,w.lineHeight,w.maxLineWidth,w.fontProperties,{runsByLine:w.runsByLine,lineAscents:w.lineAscents,lineDescents:w.lineDescents,lineHeights:w.lineHeights,hasDropShadow:w.hasDropShadow});return st._measurementCache.set(r,S),S}const a=e._fontString,l=st.measureFont(a);l.fontSize===0&&(l.fontSize=e.fontSize,l.ascent=e.fontSize,l.descent=0);const h=st._context;h.font=a;const u=(n?st._wordWrap(t,e,i):t).split(sP),d=new Array(u.length);let f=0;for(let w=0;w<u.length;w++){const S=st._measureText(u[w],e.letterSpacing,h);d[w]=S,f=Math.max(f,S)}const p=((v=e._stroke)==null?void 0:v.width)??0,g=e.lineHeight||l.fontSize,m=st._adjustWidthForStyle(f,e),O=Math.max(g,l.fontSize+p)+(u.length-1)*(g+e.leading),x=st._adjustHeightForStyle(O,e),b=new st(t,e,m,x,u,d,g+e.leading,f,l);return st._measurementCache.set(r,b),b}static _adjustWidthForStyle(t,e){var r;const i=((r=e._stroke)==null?void 0:r.width)||0;let n=t+i;return e.dropShadow&&(n+=e.dropShadow.distance),n}static _adjustHeightForStyle(t,e){let i=t;return e.dropShadow&&(i+=e.dropShadow.distance),i}static _measureText(t,e,i){const{metricWidth:n,metrics:r,letterSpacingVal:o}=st._measureTextCore(t,e,i),a=-(r.actualBoundingBoxLeft??0);let h=(r.actualBoundingBoxRight??0)-a;return r.width>0&&(h+=o),Math.max(n,h)}static _measureTextAdvance(t,e,i){return st._measureTextCore(t,e,i).metricWidth}static _measureTextCore(t,e,i){let n=!1;st.experimentalLetterSpacingSupported&&(st.experimentalLetterSpacing?(i.letterSpacing=`${e}px`,i.textLetterSpacing=`${e}px`,n=!0):(i.letterSpacing="0px",i.textLetterSpacing="0px"));const r=i.measureText(t);let o=r.width,a=0;return o>0&&(n?a=-e:a=(st.graphemeSegmenter(t).length-1)*e,o+=a),{metricWidth:o,metrics:r,letterSpacingVal:a}}static _wordWrap(t,e,i=st._canvas){return cP(t,e,i,st._measureTextAdvance,st.canBreakWords,st.canBreakChars,st.wordWrapSplit)}static isBreakingSpace(t,e){return Ke(t)}static canBreakWords(t,e){return e}static canBreakChars(t,e,i,n,r){return!0}static wordWrapSplit(t){return st.graphemeSegmenter(t)}static measureFont(t){if(st._fonts[t])return st._fonts[t];const e=st._context;e.font=t;const i=e.measureText(st.METRICS_STRING+st.BASELINE_SYMBOL),n=i.actualBoundingBoxAscent??0,r=i.actualBoundingBoxDescent??0,o={ascent:n,descent:r,fontSize:n+r};return st._fonts[t]=o,o}static clearMetrics(t=""){t?delete st._fonts[t]:st._fonts={}}static get _canvas(){if(!st.__canvas){let t;try{const e=new OffscreenCanvas(0,0),i=e.getContext("2d",Sg);if(i!=null&&i.measureText)return st.__canvas=e,e;t=Ye.get().createCanvas()}catch{t=Ye.get().createCanvas()}t.width=t.height=10,st.__canvas=t}return st.__canvas}static get _context(){return st.__context||(st.__context=st._canvas.getContext("2d",Sg)),st.__context}};rs.METRICS_STRING="|ÉqÅ";rs.BASELINE_SYMBOL="M";rs.BASELINE_MULTIPLIER=1.4;rs.HEIGHT_MULTIPLIER=2;rs.graphemeSegmenter=(()=>{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const s=new Intl.Segmenter;return t=>{const e=s.segment(t),i=[];let n=0;for(const r of e)i[n++]=r.segment;return i}}return s=>[...s]})();rs.experimentalLetterSpacing=!1;rs._fonts={};rs._measurementCache=VC(1e3);let zi=rs;const uP=["serif","sans-serif","monospace","cursive","fantasy","system-ui"];function Su(s){const t=typeof s.fontSize=="number"?`${s.fontSize}px`:s.fontSize;let e=s.fontFamily;Array.isArray(s.fontFamily)||(e=s.fontFamily.split(","));for(let i=e.length-1;i>=0;i--){let n=e[i].trim();!/([\"\'])[^\'\"]+\1/.test(n)&&!uP.includes(n)&&(n=`"${n}"`),e[i]=n}return`${s.fontStyle} ${s.fontVariant} ${s.fontWeight} ${t} ${e.join(",")}`}const vg=1e5;function pa(s,t,e,i=0,n=0,r=0){if(s.texture===bt.WHITE&&!s.fill)return Jt.shared.setValue(s.color).setAlpha(s.alpha??1).toHexa();if(s.fill){if(s.fill instanceof lh){const o=s.fill,a=t.createPattern(o.texture.source.resource,"repeat"),l=o.transform.copyTo(ft.shared);return l.scale(o.texture.source.pixelWidth,o.texture.source.pixelHeight),a.setTransform(l),a}else if(s.fill instanceof ts){const o=s.fill,a=o.type==="linear",l=o.textureSpace==="local";let h=1,c=1;l&&e&&(h=e.width+i,c=e.height+i);let u,d=!1;if(a){const{start:f,end:p}=o;u=t.createLinearGradient(f.x*h+n,f.y*c+r,p.x*h+n,p.y*c+r),d=Math.abs(p.x-f.x)<Math.abs((p.y-f.y)*.1)}else{const{center:f,innerRadius:p,outerCenter:g,outerRadius:m}=o;u=t.createRadialGradient(f.x*h+n,f.y*c+r,p*h,g.x*h+n,g.y*c+r,m*h)}if(d&&l&&e){const f=e.lineHeight/c;for(let p=0;p<e.lines.length;p++){const g=(p*e.lineHeight+i/2)/c;o.colorStops.forEach(m=>{let O=g+m.offset*f;O=Math.max(0,Math.min(1,O)),u.addColorStop(Math.floor(O*vg)/vg,Jt.shared.setValue(m.color).toHex())})}}else o.colorStops.forEach(f=>{u.addColorStop(f.offset,Jt.shared.setValue(f.color).toHex())});return u}}else{const o=t.createPattern(s.texture.source.resource,"repeat"),a=s.matrix.copyTo(ft.shared);return a.scale(s.texture.source.pixelWidth,s.texture.source.pixelHeight),o.setTransform(a),o}return ve("FillStyle not recognised",s),"red"}const _g=new Zt;function On(s){let t=0;for(let e=0;e<s.length;e++)s.charCodeAt(e)===32&&t++;return t}class dP{getCanvasAndContext(t){const{text:e,style:i,resolution:n=1}=t,r=i._getFinalPadding(),o=zi.measureText(e||" ",i),a=Math.ceil(Math.ceil(Math.max(1,o.width)+r*2)*n),l=Math.ceil(Math.ceil(Math.max(1,o.height)+r*2)*n),h=bu.getOptimalCanvasAndContext(a,l);this._renderTextToCanvas(i,r,n,h,o);const c=i.trim?YC({canvas:h.canvas,width:a,height:l,resolution:1,output:_g}):_g.set(0,0,a,l);return{canvasAndContext:h,frame:c}}returnCanvasAndContext(t){bu.returnCanvasAndContext(t)}_renderTextToCanvas(t,e,i,n,r){var w,S,y;if(r.runsByLine&&r.runsByLine.length>0){this._renderTaggedTextToCanvas(r,t,e,i,n);return}const{canvas:o,context:a}=n,l=Su(t),h=r.lines,c=r.lineHeight,u=r.lineWidths,d=r.maxLineWidth,f=r.fontProperties,p=o.height;if(a.resetTransform(),a.scale(i,i),a.textBaseline=t.textBaseline,(w=t._stroke)!=null&&w.width){const _=t._stroke;a.lineWidth=_.width,a.miterLimit=_.miterLimit,a.lineJoin=_.join,a.lineCap=_.cap}a.font=l;let g,m;const O=t.dropShadow?2:1,b=(((S=t._stroke)==null?void 0:S.width)??0)/2;let v=(c-f.fontSize)/2;c-f.fontSize<0&&(v=0);for(let _=0;_<O;++_){const k=t.dropShadow&&_===0,P=k?Math.ceil(Math.max(1,p)+e*2):0,T=P*i;if(k)this._setupDropShadow(a,t,i,T);else{const $=t._gradientBounds,A=t._gradientOffset;if($){const C={width:$.width,height:$.height,lineHeight:$.height,lines:r.lines};this._setFillAndStrokeStyles(a,t,C,e,b,(A==null?void 0:A.x)??0,(A==null?void 0:A.y)??0)}else A?this._setFillAndStrokeStyles(a,t,r,e,b,A.x,A.y):this._setFillAndStrokeStyles(a,t,r,e,b);a.shadowColor="rgba(0,0,0,0)"}for(let $=0;$<h.length;$++){g=b,m=b+$*c+f.ascent+v,g+=this._getAlignmentOffset(u[$],d,t.align);let A=0;if(t.align==="justify"&&t.wordWrap&&$<h.length-1){const C=On(h[$]);C>0&&(A=(d-u[$])/C)}(y=t._stroke)!=null&&y.width&&this._drawLetterSpacing(h[$],t,n,g+e,m+e-P,!0,A),t._fill!==void 0&&this._drawLetterSpacing(h[$],t,n,g+e,m+e-P,!1,A)}}}_renderTaggedTextToCanvas(t,e,i,n,r){var b,v,w;const{canvas:o,context:a}=r,{runsByLine:l,lineWidths:h,maxLineWidth:c,lineAscents:u,lineHeights:d,hasDropShadow:f}=t,p=o.height;a.resetTransform(),a.scale(n,n),a.textBaseline=e.textBaseline;const g=f?2:1;let m=((b=e._stroke)==null?void 0:b.width)??0;for(const S of l)for(const y of S){const _=((v=y.style._stroke)==null?void 0:v.width)??0;_>m&&(m=_)}const O=m/2,x=[];for(let S=0;S<l.length;S++){const y=l[S],_=[];for(const k of y){const P=Su(k.style);a.font=P,_.push({width:zi._measureText(k.text,k.style.letterSpacing,a),font:P})}x.push(_)}for(let S=0;S<g;++S){const y=f&&S===0,_=y?Math.ceil(Math.max(1,p)+i*2):0,k=_*n;y||(a.shadowColor="rgba(0,0,0,0)");let P=O;for(let T=0;T<l.length;T++){const $=l[T],A=h[T],C=u[T],B=d[T],E=x[T];let I=O;I+=this._getAlignmentOffset(A,c,e.align);let V=0;if(e.align==="justify"&&e.wordWrap&&T<l.length-1){let z=0;for(const X of $)z+=On(X.text);z>0&&(V=(c-A)/z)}const Z=P+C;let N=I+i;for(let z=0;z<$.length;z++){const X=$[z],{width:H,font:K}=E[z];if(a.font=K,a.textBaseline=X.style.textBaseline,(w=X.style._stroke)!=null&&w.width){const Ot=X.style._stroke;if(a.lineWidth=Ot.width,a.miterLimit=Ot.miterLimit,a.lineJoin=Ot.join,a.lineCap=Ot.cap,y)if(X.style.dropShadow)this._setupDropShadow(a,X.style,n,k);else{const ae=On(X.text);N+=H+ae*V;continue}else{const ae=zi.measureFont(K),Ve=X.style.lineHeight||ae.fontSize,ye={width:H,height:Ve,lineHeight:Ve,lines:[X.text]};a.strokeStyle=pa(Ot,a,ye,i*2,N-i,P)}this._drawLetterSpacing(X.text,X.style,r,N,Z+i-_,!0,V)}const it=On(X.text);N+=H+it*V}N=I+i;for(let z=0;z<$.length;z++){const X=$[z],{width:H,font:K}=E[z];if(a.font=K,a.textBaseline=X.style.textBaseline,X.style._fill!==void 0){if(y)if(X.style.dropShadow)this._setupDropShadow(a,X.style,n,k);else{const Ot=On(X.text);N+=H+Ot*V;continue}else{const Ot=zi.measureFont(K),ae=X.style.lineHeight||Ot.fontSize,Ve={width:H,height:ae,lineHeight:ae,lines:[X.text]};a.fillStyle=pa(X.style._fill,a,Ve,i*2,N-i,P)}this._drawLetterSpacing(X.text,X.style,r,N,Z+i-_,!1,V)}const it=On(X.text);N+=H+it*V}P+=B}}}_setFillAndStrokeStyles(t,e,i,n,r,o=0,a=0){var l;if(t.fillStyle=e._fill?pa(e._fill,t,i,n*2,o,a):null,(l=e._stroke)!=null&&l.width){const h=r+n*2;t.strokeStyle=pa(e._stroke,t,i,h,o,a)}}_setupDropShadow(t,e,i,n){t.fillStyle="black",t.strokeStyle="black";const r=e.dropShadow,o=r.color,a=r.alpha;t.shadowColor=Jt.shared.setValue(o).setAlpha(a).toRgbaString();const l=r.blur*i,h=r.distance*i;t.shadowBlur=l,t.shadowOffsetX=Math.cos(r.angle)*h,t.shadowOffsetY=Math.sin(r.angle)*h+n}_getAlignmentOffset(t,e,i){return i==="right"?e-t:i==="center"?(e-t)/2:0}_drawLetterSpacing(t,e,i,n,r,o=!1,a=0){const{context:l}=i,h=e.letterSpacing;let c=!1;if(zi.experimentalLetterSpacingSupported&&(zi.experimentalLetterSpacing?(l.letterSpacing=`${h}px`,l.textLetterSpacing=`${h}px`,c=!0):(l.letterSpacing="0px",l.textLetterSpacing="0px")),(h===0||c)&&a===0){o?l.strokeText(t,n,r):l.fillText(t,n,r);return}if(a!==0&&(h===0||c)){const g=t.split(" ");let m=n;const O=l.measureText(" ").width;for(let x=0;x<g.length;x++)o?l.strokeText(g[x],m,r):l.fillText(g[x],m,r),m+=l.measureText(g[x]).width+O+a;return}let u=n;const d=zi.graphemeSegmenter(t);let f=l.measureText(t).width,p=0;for(let g=0;g<d.length;++g){const m=d[g];o?l.strokeText(m,u,r):l.fillText(m,u,r);let O="";for(let x=g+1;x<d.length;++x)O+=d[x];p=l.measureText(O).width,u+=f-p+h,m===" "&&(u+=a),f=p}}}const Rn=new dP,nf=class Xs extends Li{constructor(t={}){super(),this.uid=Dt("textStyle"),this._tick=0,this._cachedFontString=null,fP(t),t instanceof Xs&&(t=t._toObject());const n={...Xs.defaultTextStyle,...t};for(const r in n){const o=r;this[o]=n[r]}this._tagStyles=t.tagStyles??void 0,this.update(),this._tick=0}get align(){return this._align}set align(t){this._align!==t&&(this._align=t,this.update())}get breakWords(){return this._breakWords}set breakWords(t){this._breakWords!==t&&(this._breakWords=t,this.update())}get dropShadow(){return this._dropShadow}set dropShadow(t){this._dropShadow!==t&&(t!==null&&typeof t=="object"?this._dropShadow=this._createProxy({...Xs.defaultDropShadow,...t}):this._dropShadow=t?this._createProxy({...Xs.defaultDropShadow}):null,this.update())}get fontFamily(){return this._fontFamily}set fontFamily(t){this._fontFamily!==t&&(this._fontFamily=t,this.update())}get fontSize(){return this._fontSize}set fontSize(t){this._fontSize!==t&&(typeof t=="string"?this._fontSize=parseInt(t,10):this._fontSize=t,this.update())}get fontStyle(){return this._fontStyle}set fontStyle(t){this._fontStyle!==t&&(this._fontStyle=t.toLowerCase(),this.update())}get fontVariant(){return this._fontVariant}set fontVariant(t){this._fontVariant!==t&&(this._fontVariant=t,this.update())}get fontWeight(){return this._fontWeight}set fontWeight(t){this._fontWeight!==t&&(this._fontWeight=t,this.update())}get leading(){return this._leading}set leading(t){this._leading!==t&&(this._leading=t,this.update())}get letterSpacing(){return this._letterSpacing}set letterSpacing(t){this._letterSpacing!==t&&(this._letterSpacing=t,this.update())}get lineHeight(){return this._lineHeight}set lineHeight(t){this._lineHeight!==t&&(this._lineHeight=t,this.update())}get padding(){return this._padding}set padding(t){this._padding!==t&&(this._padding=t,this.update())}get filters(){return this._filters}set filters(t){this._filters!==t&&(this._filters=Object.freeze(t),this.update())}get trim(){return this._trim}set trim(t){this._trim!==t&&(this._trim=t,this.update())}get textBaseline(){return this._textBaseline}set textBaseline(t){this._textBaseline!==t&&(this._textBaseline=t,this.update())}get whiteSpace(){return this._whiteSpace}set whiteSpace(t){this._whiteSpace!==t&&(this._whiteSpace=t,this.update())}get wordWrap(){return this._wordWrap}set wordWrap(t){this._wordWrap!==t&&(this._wordWrap=t,this.update())}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(t){this._wordWrapWidth!==t&&(this._wordWrapWidth=t,this.update())}get fill(){return this._originalFill}set fill(t){t!==this._originalFill&&(this._originalFill=t,this._isFillStyle(t)&&(this._originalFill=this._createProxy({...li.defaultFillStyle,...t},()=>{this._fill=Vs({...this._originalFill},li.defaultFillStyle)})),this._fill=Vs(t===0?"black":t,li.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(t){t!==this._originalStroke&&(this._originalStroke=t,this._isFillStyle(t)&&(this._originalStroke=this._createProxy({...li.defaultStrokeStyle,...t},()=>{this._stroke=yl({...this._originalStroke},li.defaultStrokeStyle)})),this._stroke=yl(t,li.defaultStrokeStyle),this.update())}get tagStyles(){return this._tagStyles}set tagStyles(t){this._tagStyles!==t&&(this._tagStyles=t??void 0,this.update())}update(){this._tick++,this._cachedFontString=null,this.emit("update",this)}reset(){const t=Xs.defaultTextStyle;for(const e in t)this[e]=t[e]}assign(t){for(const e in t){const i=e;this[i]=t[e]}return this}get styleKey(){return`${this.uid}-${this._tick}`}get _fontString(){return this._cachedFontString===null&&(this._cachedFontString=Su(this)),this._cachedFontString}_toObject(){return{align:this.align,breakWords:this.breakWords,dropShadow:this._dropShadow?{...this._dropShadow}:null,fill:this._fill?{...this._fill}:void 0,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,leading:this.leading,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke?{...this._stroke}:void 0,textBaseline:this.textBaseline,trim:this.trim,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,filters:this._filters?[...this._filters]:void 0,tagStyles:this._tagStyles?{...this._tagStyles}:void 0}}clone(){return new Xs(this._toObject())}_getFinalPadding(){let t=0;if(this._filters)for(let e=0;e<this._filters.length;e++)t+=this._filters[e].padding;return Math.max(this._padding,t)}destroy(t=!1){var i,n,r,o;if(this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.texture){const a=typeof t=="boolean"?t:t==null?void 0:t.textureSource;(i=this._fill)!=null&&i.texture&&this._fill.texture.destroy(a),(n=this._originalFill)!=null&&n.texture&&this._originalFill.texture.destroy(a),(r=this._stroke)!=null&&r.texture&&this._stroke.texture.destroy(a),(o=this._originalStroke)!=null&&o.texture&&this._originalStroke.texture.destroy(a)}this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}_createProxy(t,e){return new Proxy(t,{set:(i,n,r)=>(i[n]===r||(i[n]=r,e==null||e(n,r),this.update()),!0)})}_isFillStyle(t){return(t??null)!==null&&!(Jt.isColorLike(t)||t instanceof ts||t instanceof lh)}};nf.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:"black",distance:5};nf.defaultTextStyle={align:"left",breakWords:!1,dropShadow:null,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,padding:0,stroke:null,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let bo=nf;function fP(s){const t=s;if(typeof t.dropShadow=="boolean"&&t.dropShadow){const e=bo.defaultDropShadow;s.dropShadow={alpha:t.dropShadowAlpha??e.alpha,angle:t.dropShadowAngle??e.angle,blur:t.dropShadowBlur??e.blur,color:t.dropShadowColor??e.color,distance:t.dropShadowDistance??e.distance}}if(t.strokeThickness!==void 0){xt(It,"strokeThickness is now a part of stroke");const e=t.stroke;let i={};if(Jt.isColorLike(e))i.color=e;else if(e instanceof ts||e instanceof lh)i.fill=e;else if(Object.hasOwnProperty.call(e,"color")||Object.hasOwnProperty.call(e,"fill"))i=e;else throw new Error("Invalid stroke value.");s.stroke={...i,width:t.strokeThickness}}if(Array.isArray(t.fillGradientStops)){if(xt(It,"gradient fill is now a fill pattern: `new FillGradient(...)`"),!Array.isArray(t.fill)||t.fill.length===0)throw new Error("Invalid fill value. Expected an array of colors for gradient fill.");t.fill.length!==t.fillGradientStops.length&&ve("The number of fill colors must match the number of fill gradient stops.");const e=new ts({start:{x:0,y:0},end:{x:0,y:1},textureSpace:"local"}),i=t.fillGradientStops.slice(),n=t.fill.map(r=>Jt.shared.setValue(r).toNumber());i.forEach((r,o)=>{e.addColorStop(r,n[o])}),s.fill={fill:e}}}function pP(s,t){const{texture:e,bounds:i}=s,n=t._style._getFinalPadding();_0(i,t._anchor,e);const r=t._anchor._x*n*2,o=t._anchor._y*n*2;i.minX-=n-r,i.minY-=n-o,i.maxX-=n-r,i.maxY-=n-o}class gP{constructor(){this.batcherName="default",this.topology="triangle-list",this.attributeSize=4,this.indexSize=6,this.packAsQuad=!0,this.roundPixels=0,this._attributeStart=0,this._batcher=null,this._batch=null}get blendMode(){return this.renderable.groupBlendMode}get color(){return this.renderable.groupColorAlpha}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.bounds=null}destroy(){this.reset()}}class mP extends gP{}class Xy{constructor(t){this._renderer=t,t.runners.resolutionChange.add(this),this._managedTexts=new Wo({renderer:t,type:"renderable",onUnload:this.onTextUnload.bind(this),name:"canvasText"})}resolutionChange(){for(const t in this._managedTexts.items){const e=this._managedTexts.items[t];e!=null&&e._autoResolution&&e.onViewUpdate()}}validateRenderable(t){const e=this._getGpuText(t),i=t.styleKey;return e.currentKey!==i?!0:t._didTextUpdate}addRenderable(t,e){const i=this._getGpuText(t);if(t._didTextUpdate){const n=t._autoResolution?this._renderer.resolution:t.resolution;(i.currentKey!==t.styleKey||t._resolution!==n)&&this._updateGpuText(t),t._didTextUpdate=!1,pP(i,t)}this._renderer.renderPipes.batch.addToBatch(i,e)}updateRenderable(t){const e=this._getGpuText(t);e._batcher.updateElement(e)}_updateGpuText(t){const e=this._getGpuText(t);e.texture&&this._renderer.canvasText.decreaseReferenceCount(e.currentKey),t._resolution=t._autoResolution?this._renderer.resolution:t.resolution,e.texture=this._renderer.canvasText.getManagedTexture(t),e.currentKey=t.styleKey}_getGpuText(t){return t._gpuData[this._renderer.uid]||this.initGpuText(t)}initGpuText(t){const e=new mP;return e.currentKey="--",e.renderable=t,e.transform=t.groupTransform,e.bounds={minX:0,maxX:1,minY:0,maxY:0},e.roundPixels=this._renderer._roundPixels|t._roundPixels,t._gpuData[this._renderer.uid]=e,this._managedTexts.add(t),e}onTextUnload(t){const e=t._gpuData[this._renderer.uid];if(!e)return;const{canvasText:i}=this._renderer;i.getReferenceCount(e.currentKey)>0?i.decreaseReferenceCount(e.currentKey):e.texture&&i.returnTexture(e.texture)}destroy(){this._managedTexts.destroy(),this._renderer=null}}Xy.extension={type:[lt.WebGLPipes,lt.WebGPUPipes,lt.CanvasPipes],name:"text"};class zy{constructor(t,e){this._activeTextures={},this._renderer=t,this._retainCanvasContext=e}getTexture(t,e,i,n){typeof t=="string"&&(xt("8.0.0","CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments"),t={text:t,style:i,resolution:e}),t.style instanceof bo||(t.style=new bo(t.style)),t.textureStyle instanceof tr||(t.textureStyle=new tr(t.textureStyle)),typeof t.text!="string"&&(t.text=t.text.toString());const{text:r,style:o,textureStyle:a,autoGenerateMipmaps:l}=t,h=t.resolution??this._renderer.resolution,{frame:c,canvasAndContext:u}=Rn.getCanvasAndContext({text:r,style:o,resolution:h}),d=LC(u.canvas,c.width,c.height,h,l);if(a&&(d.source.style=a),o.trim&&(c.pad(o.padding),d.frame.copyFrom(c),d.frame.scale(1/h),d.updateUvs()),o.filters){const f=this._applyFilters(d,o.filters);return this.returnTexture(d),Rn.returnCanvasAndContext(u),f}return this._renderer.texture.initSource(d._source),this._retainCanvasContext||Rn.returnCanvasAndContext(u),d}returnTexture(t){const e=t.source,i=e.resource;if(this._retainCanvasContext&&(i!=null&&i.getContext)){const n=i.getContext("2d");n&&Rn.returnCanvasAndContext({canvas:i,context:n})}e.resource=null,e.uploadMethodId="unknown",e.alphaMode="no-premultiply-alpha",nh.returnTexture(t,!0)}renderTextToCanvas(){xt("8.10.0","CanvasTextSystem.renderTextToCanvas: no longer supported, use CanvasTextSystem.getTexture instead")}getManagedTexture(t){t._resolution=t._autoResolution?this._renderer.resolution:t.resolution;const e=t.styleKey;if(this._activeTextures[e])return this._increaseReferenceCount(e),this._activeTextures[e].texture;const i=this.getTexture({text:t.text,style:t.style,resolution:t._resolution,textureStyle:t.textureStyle,autoGenerateMipmaps:t.autoGenerateMipmaps});return this._activeTextures[e]={texture:i,usageCount:1},i}decreaseReferenceCount(t){const e=this._activeTextures[t];e&&(e.usageCount--,e.usageCount===0&&(this.returnTexture(e.texture),this._activeTextures[t]=null))}getReferenceCount(t){var e;return((e=this._activeTextures[t])==null?void 0:e.usageCount)??0}_increaseReferenceCount(t){this._activeTextures[t].usageCount++}_applyFilters(t,e){const i=this._renderer.renderTarget.renderTarget,n=this._renderer.filter.generateFilteredTexture({texture:t,filters:e});return this._renderer.renderTarget.bind(i,!1),n}destroy(){this._renderer=null;for(const t in this._activeTextures)this._activeTextures[t]&&this.returnTexture(this._activeTextures[t].texture);this._activeTextures=null}}class Wy extends zy{constructor(t){super(t,!0)}}Wy.extension={type:[lt.CanvasSystem],name:"canvasText"};class Gy extends zy{constructor(t){super(t,!1)}}Gy.extension={type:[lt.WebGLSystem,lt.WebGPUSystem],name:"canvasText"};Vt.add(Wy);Vt.add(Gy);Vt.add(Xy);let wo=class extends zC{constructor(...t){const e=WC(t,"Text");super(e,bo),this.renderPipeId="text",e.textureStyle&&(this.textureStyle=e.textureStyle instanceof tr?e.textureStyle:new tr(e.textureStyle)),this.autoGenerateMipmaps=e.autoGenerateMipmaps??ni.defaultOptions.autoGenerateMipmaps}updateBounds(){const t=this._bounds,e=this._anchor;let i=0,n=0;if(this._style.trim){const{frame:r,canvasAndContext:o}=Rn.getCanvasAndContext({text:this.text,style:this._style,resolution:1});Rn.returnCanvasAndContext(o),i=r.width,n=r.height}else{const r=zi.measureText(this._text,this._style);i=r.width,n=r.height}t.minX=-e._x*i,t.maxX=t.minX+i,t.minY=-e._y*n,t.maxY=t.minY+n}};Vt.add(Wv,Gv);class OP{constructor(t){Q(this,"container");Q(this,"hoverGraphics");Q(this,"pendingGraphics");Q(this,"selectionContainer");Q(this,"selectionGraphics",new Map);Q(this,"selectionTypes",new Map);Q(this,"selectionVisuals",new Map);Q(this,"ticker",null);Q(this,"tickerCallback",null);this.container=new Ht,this.container.label="hoverHighlight",this.container.eventMode="none",this.hoverGraphics=new ht,this.hoverGraphics.eventMode="none",this.container.addChild(this.hoverGraphics),this.pendingGraphics=new ht,this.pendingGraphics.eventMode="none",this.container.addChild(this.pendingGraphics),this.selectionContainer=new Ht,this.selectionContainer.eventMode="none",this.container.addChild(this.selectionContainer),t&&(this.ticker=t,this.tickerCallback=()=>this.trackCreepRings(),t.add(this.tickerCallback))}setHoveredTile(t,e){if(this.hoverGraphics.clear(),t===null||e===null)return;const i=t*R,n=e*R;this.hoverGraphics.rect(i,n,R,R),this.hoverGraphics.stroke({width:1,color:16777215,alpha:.35}),this.hoverGraphics.rect(i,n,R,R),this.hoverGraphics.fill({color:16777215,alpha:.06})}setSelectedObjects(t){this.selectionContainer.removeChildren();for(const e of this.selectionGraphics.values())e.destroy();this.selectionGraphics.clear(),this.selectionTypes.clear(),this.selectionVisuals.clear();for(const{id:e,type:i,visual:n}of t){const r=new ht;r.eventMode="none",this.selectionContainer.addChild(r),this.selectionGraphics.set(e,r),this.selectionTypes.set(e,i),this.selectionVisuals.set(e,n),i==="creep"?this.drawCreepRing(r,n.x,n.y):this.drawStructureBox(r,n.x,n.y)}}clearSelection(){this.selectionContainer.removeChildren();for(const t of this.selectionGraphics.values())t.destroy();this.selectionGraphics.clear(),this.selectionTypes.clear(),this.selectionVisuals.clear()}setPendingTile(t,e){if(this.pendingGraphics.clear(),t===null||e===null)return;const i=t*R,n=e*R,r=i+R/2,o=n+R/2,a=R*.35;this.pendingGraphics.moveTo(r-a,o),this.pendingGraphics.lineTo(r+a,o),this.pendingGraphics.moveTo(r,o-a),this.pendingGraphics.lineTo(r,o+a),this.pendingGraphics.stroke({width:1.5,color:15763518,alpha:.9}),this.pendingGraphics.rect(i+1,n+1,R-2,R-2),this.pendingGraphics.stroke({width:1.5,color:15763518,alpha:.6})}clearPendingTile(){this.pendingGraphics.clear()}drawCreepRing(t,e,i){t.clear();const n=e+R/2,r=i+R/2,o=R*.48;t.circle(n,r,o),t.stroke({width:1.5,color:16777215,alpha:.9})}drawStructureBox(t,e,i){t.clear();const n=1;t.rect(e+n,i+n,R-n*2,R-n*2),t.stroke({width:1.5,color:16777215,alpha:.9}),t.rect(e+n,i+n,R-n*2,R-n*2),t.fill({color:16777215,alpha:.04})}trackCreepRings(){for(const[t,e]of this.selectionGraphics){if(this.selectionTypes.get(t)!=="creep")continue;const i=this.selectionVisuals.get(t);i&&this.drawCreepRing(e,i.x,i.y)}}destroy(){this.ticker&&this.tickerCallback&&this.ticker.remove(this.tickerCallback),this.ticker=null,this.tickerCallback=null,this.clearSelection(),this.clearPendingTile(),this.pendingGraphics.destroy(),this.hoverGraphics.destroy(),this.container.destroy()}}const R=12,De=50*R,Ft=48,$r=128;class rf{constructor(t,e){Q(this,"app");Q(this,"world");Q(this,"hoverLayer");Q(this,"destroyed",!1);Q(this,"canDrag",!1);Q(this,"container");Q(this,"resizeObserver",null);Q(this,"bounceRaf",null);Q(this,"wheelTimeout",null);Q(this,"navOverlay");Q(this,"lastMouseX",0);Q(this,"lastMouseY",0);Q(this,"onHoverTile",null);Q(this,"onClickTile",null);this.app=t,this.container=e,this.world=new Ht,this.app.stage.addChild(this.world),this.hoverLayer=new OP(t.ticker),this.world.addChild(this.hoverLayer.container),this.navOverlay=new Ht,this.world.addChild(this.navOverlay),this.setupCamera(),this.centerView(),this.clampView(),this.setupResizeObserver()}bringNavOverlayToTop(){this.hoverLayer.container.parent===this.world&&(this.world.removeChild(this.hoverLayer.container),this.world.addChild(this.hoverLayer.container)),this.navOverlay.parent===this.world&&(this.world.removeChild(this.navOverlay),this.world.addChild(this.navOverlay))}static async create(t){const e=new Fd;return await e.init({background:"#0d1117",antialias:!1,resolution:window.devicePixelRatio||1,autoDensity:!0}),t.appendChild(e.canvas),new rf(e,t)}getMinScale(){const e=this.container.clientWidth,i=this.container.clientHeight;return Math.min(e,i)/(De+64)}clampView(t=!1){const e=this.world.scale.x,i=De*e,n=this.container.clientWidth,r=this.container.clientHeight,o=t?$r:0;if(i<=n){const a=n/2-i/2;t?this.world.x=Math.min(a+$r,Math.max(a-$r,this.world.x)):this.world.x=a}else{const a=n-i-Ft-o,l=Ft+o;this.world.x=Math.min(l,Math.max(a,this.world.x))}if(i<=r){const a=r/2-i/2;t?this.world.y=Math.min(a+$r,Math.max(a-$r,this.world.y)):this.world.y=a}else{const a=r-i-Ft-o,l=Ft+o;this.world.y=Math.min(l,Math.max(a,this.world.y))}this.canDrag=!0}getTargetPosition(){const t=this.world.scale.x,e=De*t,i=this.container.clientWidth,n=this.container.clientHeight;let r=null,o=null;if(e<=i)r=i/2-e/2;else{const a=i-e-Ft,l=Ft;this.world.x<a?r=a:this.world.x>l&&(r=l)}if(e<=n)o=n/2-e/2;else{const a=n-e-Ft,l=Ft;this.world.y<a?o=a:this.world.y>l&&(o=l)}return r===null&&o===null?null:{x:r??this.world.x,y:o??this.world.y}}springBack(){const t=this.getTargetPosition(),e=this.getTargetScale();if(!t&&e===null)return;const i=this.world.x,n=this.world.y,r=this.world.scale.x,o=performance.now(),a=300,l=this.container.clientWidth/2,h=this.container.clientHeight/2,c=(l-i)/r,u=(h-n)/r,d=f=>{const p=f-o,g=Math.min(1,p/a),m=1-Math.pow(1-g,3);if(e!==null){const O=r+(e-r)*m;this.world.scale.set(O),this.world.x=l-c*O,this.world.y=h-u*O}t&&e===null&&(this.world.x=i+(t.x-i)*m,this.world.y=n+(t.y-n)*m),g<1?this.bounceRaf=requestAnimationFrame(d):(this.bounceRaf=null,this.clampView())};this.cancelBounce(),this.bounceRaf=requestAnimationFrame(d)}cancelBounce(){this.bounceRaf!==null&&(cancelAnimationFrame(this.bounceRaf),this.bounceRaf=null)}cancelWheelTimeout(){this.wheelTimeout!==null&&(clearTimeout(this.wheelTimeout),this.wheelTimeout=null)}getTargetScale(){const t=this.getMinScale(),e=5;return this.world.scale.x<t?t:this.world.scale.x>e?e:null}setupCamera(){let t=!1,e=new Gt(0,0),i=new Gt(0,0);const n=this.app.canvas,r=4;n.addEventListener("contextmenu",a=>{a.preventDefault()}),n.addEventListener("pointerdown",a=>{this.cancelBounce(),this.cancelWheelTimeout(),t=this.canDrag,e=new Gt(a.clientX,a.clientY),i=new Gt(a.clientX,a.clientY),this.canDrag&&n.setPointerCapture(a.pointerId)}),n.addEventListener("pointermove",a=>{var d;const l=n.getBoundingClientRect();this.lastMouseX=a.clientX-l.left,this.lastMouseY=a.clientY-l.top;const h=this.screenToTile(this.lastMouseX,this.lastMouseY);if(this.hoverLayer.setHoveredTile((h==null?void 0:h.tx)??null,(h==null?void 0:h.ty)??null),(d=this.onHoverTile)==null||d.call(this,(h==null?void 0:h.tx)??null,(h==null?void 0:h.ty)??null),!t||!this.canDrag)return;const c=a.clientX-e.x,u=a.clientY-e.y;this.world.x+=c,this.world.y+=u,e=new Gt(a.clientX,a.clientY),this.clampView(!0)});const o=a=>{var u;this.canDrag&&n.releasePointerCapture(a.pointerId),t=!1;const l=a.clientX-i.x,h=a.clientY-i.y;if(Math.sqrt(l*l+h*h)<r){const d=n.getBoundingClientRect(),f=a.clientX-d.left,p=a.clientY-d.top,g=this.screenToTile(f,p);g&&((u=this.onClickTile)==null||u.call(this,g.tx,g.ty,a.ctrlKey||a.metaKey))}this.springBack()};n.addEventListener("pointerup",o),n.addEventListener("pointercancel",o),n.addEventListener("pointerleave",()=>{var a;this.hoverLayer.setHoveredTile(null,null),(a=this.onHoverTile)==null||a.call(this,null,null)}),n.addEventListener("wheel",a=>{a.preventDefault();const l=a.deltaY>0?.9:1.1,h=this.getMinScale(),c=5;let u=this.world.scale.x*l;const d=.6;u<h&&(u=h+(u-h)*d),u>c&&(u=c+(u-c)*d);const f=n.getBoundingClientRect(),p=a.clientX-f.left,g=a.clientY-f.top;if(this.cancelBounce(),u<h){const m=this.container.clientWidth/2,O=this.container.clientHeight/2,x=(m-this.world.x)/this.world.scale.x,b=(O-this.world.y)/this.world.scale.y;this.world.scale.set(u),this.world.x=m-x*u,this.world.y=O-b*u}else{const m=(p-this.world.x)/this.world.scale.x,O=(g-this.world.y)/this.world.scale.y;this.world.scale.set(u),this.world.x=p-m*u,this.world.y=g-O*u}this.clampView(),this.cancelWheelTimeout(),this.wheelTimeout=window.setTimeout(()=>{this.wheelTimeout=null,this.springBack()},80)},{passive:!1})}setTileHandlers(t,e){this.onHoverTile=t,this.onClickTile=e}screenToTile(t,e){const i=(t-this.world.x)/this.world.scale.x,n=(e-this.world.y)/this.world.scale.y,r=Math.floor(i/R),o=Math.floor(n/R);return r<0||r>=50||o<0||o>=50?null:{tx:r,ty:o}}centerView(){const t=this.container.clientWidth/2,e=this.container.clientHeight/2,i=this.world.scale.x;this.world.x=t-De*i/2,this.world.y=e-De*i/2}resetView(){this.cancelBounce(),this.cancelWheelTimeout(),this.world.scale.set(this.getMinScale()),this.centerView(),this.clampView()}setupResizeObserver(){const{width:t,height:e}=this.container.getBoundingClientRect();this.app.renderer.resize(t,e),this.resizeObserver=new ResizeObserver(i=>{const{width:n,height:r}=i[0].contentRect;this.app.renderer.resize(n,r),this.clampView()}),this.resizeObserver.observe(this.container)}setupNavigationZones(t){this.navOverlay.removeChildren();const e=(o,a,l,h,c,u)=>{if(!u)return;const d=new ht;d.x=o,d.y=a,d.hitArea=new Zt(0,0,l,h),d.fill({color:16777215,alpha:.12}),d.poly(c),d.fill(),d.eventMode="static",d.cursor="pointer",d.alpha=1,d.on("pointerover",()=>{d.clear(),d.fill({color:16777215,alpha:.06}),d.rect(0,0,l,h),d.fill(),d.fill({color:16777215,alpha:.35}),d.poly(c),d.fill()}),d.on("pointerout",()=>{d.clear(),d.fill({color:16777215,alpha:.12}),d.poly(c),d.fill()}),d.on("pointerdown",u),this.navOverlay.addChild(d)},i=De/2,n=De/2,r=18;e(-Ft,0,Ft,De,[18,n,Ft-6,n-r,Ft-6,n+r],t.west),e(De,0,Ft,De,[Ft-18,n,6,n-r,6,n+r],t.east),e(0,-Ft,De,Ft,[i,18,i-r,Ft-6,i+r,Ft-6],t.north),e(0,De,De,Ft,[i,Ft-18,i-r,6,i+r,6],t.south);for(const o of this.navOverlay.children){const a=o,l=a.hitArea,h=this.world.x+a.x*this.world.scale.x,c=this.world.y+a.y*this.world.scale.y,u=l.width*this.world.scale.x,d=l.height*this.world.scale.y;this.lastMouseX>=h&&this.lastMouseX<=h+u&&this.lastMouseY>=c&&this.lastMouseY<=c+d&&a.emit("pointerover",new Event("pointerover"))}}clear(){for(let t=this.world.children.length-1;t>=0;t--){const e=this.world.children[t];e!==this.navOverlay&&e!==this.hoverLayer.container&&this.world.removeChild(e)}this.navOverlay.removeChildren(),this.hoverLayer.clearSelection(),this.hoverLayer.setHoveredTile(null,null),this.world.scale.set(1),this.cancelBounce(),this.cancelWheelTimeout(),this.clampView()}destroy(){var t;this.destroyed||(this.destroyed=!0,this.cancelBounce(),this.cancelWheelTimeout(),(t=this.resizeObserver)==null||t.disconnect(),this.resizeObserver=null,this.hoverLayer.destroy(),this.app.destroy(!0,{children:!0}))}}const Yy=856343,yP=1448738,xP=1843496,bP=3421243,wP=bP,Ny=Yy,SP=3361075,of=7039337,Vy=3159613,vP=5000268,_P=11122630,kP=16770413,$P=7829367,CP=16332866,PP=6127794,TP=6684002,MP=12164347,ga={tough:vP,move:_P,work:kP,carry:$P,attack:CP,ranged_attack:PP,heal:TP,claim:MP},Ha=5809919,Wn=7979263,AP=4176208,nc=9147550,En=13801762,kg=10711543,QP=16218298,$g=16273737,eo=15763518,RP=2172461,Fy=of,EP=13226457,Ln=[16777215,16711680,8388736,255,65535,32768,16776960,16753920,10824234,8421504,16777215],LP={creep:eo,spawn:Ha,extension:Wn,tower:AP,container:nc,storage:En,link:kg,rampart:Ha,road:Fy,wall:RP,extractor:nc,lab:QP,terminal:En,observer:Wn,powerSpawn:eo,nuker:$g,factory:nc,invaderCore:$g,source:En,mineral:Wn,deposit:En,controller:Ha,powerBank:eo,portal:kg},af=16769126,IP=af,ZP=Wn,Cg=xP,DP=13684944,qt=1579032,Qs=5592405,Ka=11184810,Fe=9419667,Gn=16771195,BP=16069959,Pg=4410435,qy={[ci.Plain]:wP,[ci.Wall]:Ny,[ci.Swamp]:SP};function Tg(s,t,e){const i=qy[e],n=R,r=n/2;for(let o=0;o<50;o++)for(let a=0;a<50;a++){const l=t.get(a,o)===e,h=o>0&&t.get(a,o-1)===e,c=o<49&&t.get(a,o+1)===e,u=a>0&&t.get(a-1,o)===e,d=a<49&&t.get(a+1,o)===e,f=a*n+r,p=o*n+r;l?!h&&!u&&o>0&&a>0?(s.moveTo(f,o*n),s.arc(f,p,r,-Math.PI/2,Math.PI,!0),s.lineTo(f,p),s.fill(i)):(s.rect(a*n,o*n,r,r),s.fill(i)):h&&u&&t.get(a-1,o-1)===e&&(s.moveTo(f,o*n),s.lineTo(a*n,o*n),s.lineTo(a*n,p),s.arc(f,p,r,Math.PI,-Math.PI/2,!1),s.fill(i)),l?!h&&!d&&o>0&&a<49?(s.moveTo(f,o*n),s.arc(f,p,r,-Math.PI/2,0,!1),s.lineTo(f,p),s.fill(i)):(s.rect(f,o*n,r,r),s.fill(i)):h&&d&&t.get(a+1,o-1)===e&&(s.moveTo(f,o*n),s.lineTo(a*n+n,o*n),s.lineTo(a*n+n,p),s.arc(f,p,r,0,-Math.PI/2,!0),s.fill(i)),l?!c&&!u&&o<49&&a>0?(s.moveTo(a*n,p),s.arc(f,p,r,Math.PI,Math.PI/2,!0),s.lineTo(f,p),s.fill(i)):(s.rect(a*n,p,r,r),s.fill(i)):c&&u&&t.get(a-1,o+1)===e&&(s.moveTo(a*n,p),s.lineTo(a*n,o*n+n),s.lineTo(f,o*n+n),s.arc(f,p,r,Math.PI/2,Math.PI,!1),s.fill(i)),l?!c&&!d&&o<49&&a<49?(s.moveTo(f,o*n+n),s.arc(f,p,r,Math.PI/2,0,!0),s.lineTo(f,p),s.fill(i)):(s.rect(f,p,r,r),s.fill(i)):c&&d&&t.get(a+1,o+1)===e&&(s.moveTo(f,o*n+n),s.lineTo(a*n+n,o*n+n),s.lineTo(a*n+n,p),s.arc(f,p,r,0,Math.PI/2,!1),s.fill(i))}}function XP(s,t){const e=of,i=R,n=(r,o,a)=>{const l=r*i+i/2,h=o*i+i/2,c=i*.3;s.moveTo(l,h),a==="up"?(s.moveTo(l,h-c),s.lineTo(l+c,h+c),s.lineTo(l-c,h+c)):a==="down"?(s.moveTo(l,h+c),s.lineTo(l+c,h-c),s.lineTo(l-c,h-c)):a==="left"?(s.moveTo(l-c,h),s.lineTo(l+c,h-c),s.lineTo(l+c,h+c)):a==="right"&&(s.moveTo(l+c,h),s.lineTo(l-c,h-c),s.lineTo(l-c,h+c)),s.fill(e)};for(let r=0;r<50;r++)t.get(r,0)!==ci.Wall&&n(r,0,"up"),t.get(r,49)!==ci.Wall&&n(r,49,"down");for(let r=0;r<50;r++)t.get(0,r)!==ci.Wall&&n(0,r,"left"),t.get(49,r)!==ci.Wall&&n(49,r,"right")}function Mg(s){const t=new ht;return t.rect(0,0,50*R,50*R),t.fill(qy[ci.Plain]),Tg(t,s,ci.Swamp),Tg(t,s,ci.Wall),XP(t,s),t.rect(0,0,50*R,50*R),t.stroke({width:1,color:Vy}),t}function zP(s){return new Promise((t,e)=>{const i=new Image;i.onload=()=>t(i),i.onerror=e,i.src=s})}class jy{constructor(){Q(this,"cache",new Map);Q(this,"pending",new Map)}getKey(t){return JSON.stringify(t)}has(t){return this.cache.has(this.getKey(t))}getOrCreate(t){const e=this.getKey(t),i=this.cache.get(e);if(i)return Promise.resolve(i);const n=this.pending.get(e);if(n)return n;const r=this.buildTexture(t,e);return this.pending.set(e,r),r.then(()=>{this.pending.delete(e)}).catch(()=>{this.pending.delete(e)}),r}async buildTexture(t,e){const i=HS(t),n=new Blob([i],{type:"image/svg+xml;charset=utf-8"}),r=URL.createObjectURL(n);try{const o=await zP(r),a=bt.from(o);return this.cache.set(e,a),a}finally{URL.revokeObjectURL(r)}}destroy(){for(const t of this.cache.values())t.destroyed||t.destroy(!0);this.cache.clear(),this.pending.clear()}}const WP=new jy,us=R*.44,Vi=R*.28,Cr=50,vu=32,_u=12/vu,Uy=R/2-R*.44,Hy=2,Ag=R*.42,Ky=R*.3,GP=Math.max(1,R*.08);function ls(s,t,e){return e.flatMap(([i,n])=>[s+i*R,t+n*R])}function yn(s,t,e,i){e-t<.001||(s.moveTo(us*Math.cos(t),us*Math.sin(t)),s.arc(0,0,us,t,e),s.lineTo(Vi*Math.cos(e),Vi*Math.sin(e)),s.arc(0,0,Vi,e,t,!0),s.closePath(),s.fill(i))}function ku(s){let t=0;if(typeof s.storeCapacity=="number")t=s.storeCapacity;else{const i=s.body;i&&(t=i.filter(n=>n.type==="carry").length*50)}if(t===0)return{used:0,capacity:0};let e=0;if(s.store&&typeof s.store=="object"){const i=s.store;for(const n in i){const r=i[n];typeof r=="number"&&(e+=r)}}else typeof s.energy=="number"&&(e=s.energy);return{used:e,capacity:t}}function $u(s,t){return t<=0||s<=0?0:Vi*.8*Math.min(1,s/t)}function YP(s,t){const e=s.__creepFillGraphics;e&&(e.clear(),t>0&&(e.circle(0,0,t),e.fill(af)))}function NP(s){return LP[s]??EP}function In(s){const t=typeof s.energyCapacity=="number"?s.energyCapacity:typeof s.storeCapacity=="number"?s.storeCapacity:50;let e=0;return typeof s.energy=="number"?e=s.energy:s.store&&typeof s.store=="object"&&(e=s.store.energy??0),{energy:e,capacity:t}}function Jy(s){return s<100?.7:1}function Cu(s,t){return t<=0||s<=0?0:Ky*Jy(t)*Math.min(1,s/t)}function VP(s,t,e){const i=R/2,n=R/2,r=Jy(e),o=new ht;o.circle(i,n,Ag*r),o.fill(qt),o.circle(i,n,Ag*r),o.stroke({width:GP*r,color:Fe}),o.circle(i,n,Ky*r),o.fill(Ka),s.addChild(o);const a=new ht,l=Cu(t,e);l>0&&(a.circle(i,n,l),a.fill(Gn)),s.addChild(a),s.__fillGraphics=a}function FP(s,t){const e=R/2,i=R/2,n=s.__fillGraphics;n&&(n.clear(),t>0&&(n.circle(e,i,t),n.fill(Gn)))}const Pu=-R*.4,Tu=-R*.3,Mu=R*.8,bl=R*.6;function Au(s,t){return t<=0||s<=0?0:bl*Math.min(1,s/t)}function tx(s,t){const e=s.__towerFillGraphics;if(e&&(e.clear(),t>0)){const i=Math.max(.5,R*.02);e.rect(Pu+i,Tu+bl-t+i,Mu-i*2,t-i*2),e.fill(Gn)}}const Qu=R*.65,Ru=Qu,Ws=R*.42;function Eu(s,t,e,i,n,r,o,a){s.clear();const l=8,h=.1,c=2*Math.PI/l-h;for(let u=0;u<l;u++){const d=-Math.PI/2+u*(2*Math.PI/l)+h/2,f=d+c,p=t+n*Math.cos(d),g=e+n*Math.sin(d);if(u<r)s.moveTo(p,g),s.arc(t,e,i,d,f),s.arc(t,e,n,f,d,!0),s.closePath(),s.fill({color:14540253,alpha:.9});else if(u===r&&a>0){if(s.moveTo(p,g),s.arc(t,e,i,d,f),s.arc(t,e,n,f,d,!0),s.closePath(),s.fill({color:1973790,alpha:.85}),o>0){const m=Math.min(1,o/a),O=d+c*m;s.moveTo(p,g),s.arc(t,e,i,d,O),s.arc(t,e,n,O,d,!0),s.closePath(),s.fill({color:14540253,alpha:.9})}}else s.moveTo(p,g),s.arc(t,e,i,d,f),s.arc(t,e,n,f,d,!0),s.closePath(),s.fill({color:1973790,alpha:.6})}}function Qg(s,t){const e=s.user;return typeof e!="string"||!t?!1:e!==t}function ma(s,t=!0,e,i,n,r){var u,d,f;const o=new Ht,a=new ht,l=NP(s.type),h=R/2,c=R/2;switch(s.type){case"creep":{const p=2*Math.PI,g=new Ht;g.position.set(h,c),g.rotation=-Math.PI/2;const m=Qg(s,e);if(m){const dt=new ht;dt.circle(0,0,us+.75),dt.stroke({width:1.5,color:16720418}),g.addChild(dt)}const O=new ht;O.circle(0,0,us),O.fill(Yy),g.addChild(O);const x=s.body??[];let b=0,v=0,w=0;const S=[],y={};for(const dt of x)dt.type==="work"?b++:dt.type==="move"?v++:(y[dt.type]===void 0&&(S.push(dt.type),y[dt.type]=0),y[dt.type]++,w++);const _=b/Cr*p,k=v/Cr*p,P=w/Cr*p,T=_/2,$=T+P/2,A=Math.PI-k/2,C=Math.PI+k/2,B=p-_/2-P/2,E=p-_/2,I=new ht;_>0&&yn(I,-_/2,T,ga.work);let V=T;for(const dt of S){const xe=(y[dt]??0)/Cr*p/2;yn(I,V,V+xe,ga[dt]??7829367),V+=xe}yn(I,$,A,Cg),k>0&&yn(I,A,C,ga.move),yn(I,C,B,Cg);let Z=E;for(const dt of S){const xe=(y[dt]??0)/Cr*p/2;yn(I,Z-xe,Z,ga[dt]??7829367),Z-=xe}g.addChild(I);const N=new ht;N.circle(0,0,Vi),N.fill(yP),g.addChild(N);const z=typeof s.user=="string"?s.user:void 0,X=z?(u=r==null?void 0:r[z])==null?void 0:u.badge:void 0;if(X&&n){const dt=new Ji;dt.anchor.set(.5,.5);const xe=Vi*2;dt.width=xe,dt.height=xe,dt.rotation=Math.PI/2,g.addChild(dt),n.getOrCreate(X).then(oi=>{dt.destroyed||(dt.texture=oi)}).catch(()=>{})}else if(m){const dt=new ht;dt.circle(0,0,Vi*.82),dt.fill({color:13373713,alpha:.8}),g.addChild(dt)}const{used:H,capacity:K}=ku(s),it=$u(H,K),Ot=new ht;it>0&&(Ot.circle(0,0,it),Ot.fill(af)),g.addChild(Ot),o.__creepFillGraphics=Ot,o.__creepUsed=H,o.__creepCapacity=K;const ae=(us+Vi)/2,Ve=(us-Vi)*.45,ye=new ht;ye.moveTo(us,0),ye.lineTo(ae,-Ve),ye.lineTo(ae,Ve),ye.closePath(),ye.fill(DP),g.addChild(ye),o.addChild(g),o.__bodyContainer=g;break}case"extension":{const{energy:p,capacity:g}=In(s);VP(o,p,g),o.__extEnergy=p,o.__extCapacity=g;break}case"spawn":{a.circle(h,c,R*.65),a.fill(qt),a.circle(h,c,R*.65),a.stroke({width:R*.1,color:13421772}),a.circle(h,c,R*.4),a.fill(Gn);break}case"powerSpawn":{a.circle(h,c,R*.65),a.fill(qt),a.circle(h,c,R*.65),a.stroke({width:R*.1,color:BP}),a.circle(h,c,R*.4),a.fill(Gn);break}case"source":case"mineral":case"deposit":{a.rect(2,2,R-4,R-4),a.fill(l);break}case"controller":{const p=typeof s.level=="number"?s.level:0,g=typeof s.progress=="number"?s.progress:0,m=typeof s.progressTotal=="number"?s.progressTotal:0,O=new ht,x=[];for(let y=0;y<8;y++){const _=-Math.PI/2+y*Math.PI/4;x.push(h+Qu*Math.cos(_),c+Qu*Math.sin(_))}O.poly(x),O.fill(qt),O.poly(x),O.stroke({width:R*.05,color:4737096}),o.addChild(O);const b=new ht;Eu(b,h,c,Ru,Ws,p,g,m),o.addChild(b),o.__ctrlSegGraphics=b,o.__ctrlLevel=p,o.__ctrlProgress=g,o.__ctrlProgressTotal=m;const v=new ht;v.circle(h,c,Ws),v.fill(qt),o.addChild(v);const w=typeof s.user=="string"?s.user:void 0,S=w?(d=r==null?void 0:r[w])==null?void 0:d.badge:void 0;if(S&&n){const y=new Ji;y.anchor.set(.5,.5),y.width=Ws*2,y.height=Ws*2,y.position.set(h,c);const _=new ht;_.circle(h,c,Ws),_.fill(16777215),o.addChild(y),y.mask=_,o.addChild(_),n.getOrCreate(S).then(k=>{y.destroyed||(y.texture=k)}).catch(()=>{})}break}case"energy":{a.circle(h,c,R*.2),a.fill(En);break}case"road":break;case"wall":{a.circle(h,c,R*.4),a.fill(qt),a.circle(h,c,R*.4),a.stroke({width:R*.05,color:Ka});break}case"rampart":break;case"tower":{const{energy:p,capacity:g}=In(s),m=new ht;m.circle(h,c,R*.6),m.fill(qt),m.circle(h,c,R*.6),m.stroke({width:R*.05,color:Fe}),o.addChild(m);const O=new Ht;O.position.set(h,c);const x=new ht;x.rect(Pu,Tu,Mu,bl),x.fill(qt),O.addChild(x);const b=new ht;O.addChild(b),o.__towerFillGraphics=b,o.__towerEnergy=p,o.__towerCapacity=g,tx(o,Au(p,g));const v=new ht;v.rect(Pu,Tu,Mu,bl),v.stroke({width:1,color:Qs}),O.addChild(v);const w=new ht;w.rect(-R*.2,-R*.9,R*.4,R*.5),w.fill(Ka),w.rect(-R*.2,-R*.9,R*.4,R*.5),w.stroke({width:R*.07,color:qt}),O.addChild(w),o.addChild(O),o.__barrelContainer=O;break}case"storage":{const p=ls(h,c,[[-.6,-.7],[0,-.8],[.6,-.7],[.65,0],[.6,.7],[0,.8],[-.6,.7],[-.65,0],[-.6,-.7]]);a.poly(p),a.fill(qt),a.poly(p),a.stroke({width:R*.05,color:Fe}),a.rect(h-R*.5,c-R*.6,R*1,R*1.2),a.fill(Qs),a.rect(h-R*.5,c-R*.6,R*1,R*1.2),a.stroke({width:R*.1,color:qt});break}case"terminal":{const p=ls(h,c,[[0,-.8],[.55,-.55],[.8,0],[.55,.55],[0,.8],[-.55,.55],[-.8,0],[-.55,-.55],[0,-.8]]),g=ls(h,c,[[0,-.65],[.45,-.45],[.65,0],[.45,.45],[0,.65],[-.45,.45],[-.65,0],[-.45,-.45],[0,-.65]]);a.poly(p),a.fill(qt),a.poly(p),a.stroke({width:R*.05,color:Fe}),a.poly(g),a.fill(Ka),a.rect(h-R*.45,c-R*.45,R*.9,R*.9),a.fill(Qs),a.rect(h-R*.45,c-R*.45,R*.9,R*.9),a.stroke({width:R*.1,color:qt});break}case"link":{const p=ls(h,c,[[0,-.5],[.4,0],[0,.5],[-.4,0],[0,-.5]]),g=ls(h,c,[[0,-.3],[.25,0],[0,.3],[-.25,0],[0,-.3]]);a.poly(p),a.fill(qt),a.poly(p),a.stroke({width:R*.05,color:Fe}),a.poly(g),a.fill(Qs);break}case"lab":{const p=c-R*.025;a.circle(h,p,R*.55),a.fill(qt),a.circle(h,p,R*.55),a.stroke({width:R*.05,color:Fe}),a.circle(h,p,R*.4),a.fill(Qs),a.rect(h-R*.45,c+R*.3,R*.9,R*.25),a.fill(qt),a.poly(ls(h,c,[[-.45,.3],[-.45,.55],[.45,.55],[.45,.3]])),a.stroke({width:R*.05,color:Fe});break}case"container":{a.rect(h-R*.225,c-R*.3,R*.45,R*.6),a.fill(Gn),a.rect(h-R*.225,c-R*.3,R*.45,R*.6),a.stroke({width:R*.1,color:qt});break}case"observer":{a.circle(h,c,R*.45),a.fill(qt),a.circle(h,c,R*.45),a.stroke({width:R*.05,color:Fe}),a.circle(h+R*.225,c,R*.2),a.fill(Fe);break}case"nuker":{const p=ls(h,c,[[0,-1],[-.47,.2],[-.5,.5],[.5,.5],[.47,.2],[0,-1]]),g=ls(h,c,[[0,-.8],[-.4,.2],[.4,.2],[0,-.8]]);a.poly(p),a.fill(qt),a.poly(p),a.stroke({width:R*.05,color:Fe}),a.poly(g),a.fill(Qs),a.poly(g),a.stroke({width:R*.01,color:Fe});break}case"factory":case"extractor":case"invaderCore":{a.circle(h,c,R*.45),a.fill(qt),a.circle(h,c,R*.45),a.stroke({width:R*.05,color:Fe}),a.circle(h,c,R*.35),a.fill(Qs);break}case"flag":{const p=typeof s.color=="number"?s.color:0,g=typeof s.secondaryColor=="number"?s.secondaryColor:0,m=Ln[p]??Ln[0],O=Ln[g]??Ln[0],x=1.5,b=R*.08*x,v=R*.7*x,w=h-b/2,S=c-R*.25*x;a.rect(w,S,b,v),a.fill(8947848);const y=w+b,_=S,k=y+R*.45*x,P=_,T=_+R*.44*x,$=(P+T)/2,A=$;if(a.moveTo(y,P),a.lineTo(k,$),a.lineTo(y,A),a.closePath(),a.fill(m),a.moveTo(y,A),a.lineTo(k,$),a.lineTo(y,T),a.closePath(),a.fill(O),o.addChild(a),o.__flagColor=p,o.__flagSecondaryColor=g,typeof s.name=="string"){const C=new wo({text:s.name,style:{fontSize:vu,fill:16777215}});C.scale.set(_u),C.anchor.set(.5,0),C.x=h,C.y=c+R*.55,C.visible=t,o.__nameLabel=C,o.addChild(C)}break}default:{const p=R-2;a.rect(1,1,p,p),a.fill(l)}}if(s.type!=="extension"&&s.type!=="road"&&s.type!=="creep"&&s.type!=="tower"&&s.type!=="controller"&&s.type!=="flag"&&o.addChild(a),s.type==="creep"&&typeof s.name=="string"){const p=Qg(s,e);let g;if(p){const x=typeof s.user=="string"?s.user:void 0;g=x?((f=r==null?void 0:r[x])==null?void 0:f.username)??x:"Hostile"}else g=s.name;const m=p?16720418:16777215,O=new wo({text:g,style:{fontSize:vu,fill:m}});O.scale.set(_u),O.anchor.set(.5,1),O.x=h,O.y=Uy-Hy,O.visible=t,o.__nameLabel=O,o.addChild(O)}return s.type==="creep"&&(o.zIndex=1),s.type==="flag"&&(o.zIndex=10),o.position.set(s.x*R,s.y*R),o}function Pr(s){s.destroy({children:!0})}class qP{constructor(t,e=!0,i,n,r){Q(this,"container");Q(this,"objects",new Map);Q(this,"rawObjects",new Map);Q(this,"roadGraphics");Q(this,"rampartGraphics");Q(this,"ticker",null);Q(this,"tickerCallback",null);Q(this,"extAnimations",new Map);Q(this,"creepFillAnimations",new Map);Q(this,"towerFillAnimations",new Map);Q(this,"EXT_ANIM_DURATION",300);Q(this,"lastWorldScale",1);Q(this,"showLabels");Q(this,"currentUserId");Q(this,"badge");Q(this,"badgeCache",WP);Q(this,"users");this.showLabels=e,this.currentUserId=i,this.badge=n,this.users=r,this.container=new Ht,this.container.sortableChildren=!0,this.rampartGraphics=new ht,this.rampartGraphics.zIndex=-1,this.container.addChild(this.rampartGraphics),this.roadGraphics=new ht,this.container.addChild(this.roadGraphics),t&&(this.ticker=t,this.tickerCallback=()=>this.tick(),t.add(this.tickerCallback))}tick(){var n;for(const r of this.objects.values()){const o=r.__targetX,a=r.__targetY;if(o!==void 0&&a!==void 0){const l=o-r.x,h=a-r.y;Math.abs(l)<.5&&Math.abs(h)<.5?(r.position.set(o,a),r.__targetX=void 0,r.__targetY=void 0):(r.x+=l*.15,r.y+=h*.15)}}const t=((n=this.container.parent)==null?void 0:n.scale.x)??1;if(t!==this.lastWorldScale){this.lastWorldScale=t;const r=_u/t,o=Uy-Hy/t;for(const a of this.objects.values())a.__nameLabel&&(a.__nameLabel.scale.set(r),a.__nameLabel.anchor.y===0?a.__nameLabel.y=R/2+R*.55:a.__nameLabel.y=o)}const e=performance.now(),i=e/1e3;for(const r of this.objects.values())r.__barrelContainer&&(r.__barrelContainer.rotation=i*.4);for(const[r,o]of this.extAnimations){const a=e-o.startTime,l=Math.min(1,a/this.EXT_ANIM_DURATION),h=l<.5?2*l*l:1-Math.pow(-2*l+2,2)/2;FP(o.visual,o.fromRadius+(o.toRadius-o.fromRadius)*h),l>=1&&this.extAnimations.delete(r)}for(const[r,o]of this.creepFillAnimations){const a=e-o.startTime,l=Math.min(1,a/this.EXT_ANIM_DURATION),h=l<.5?2*l*l:1-Math.pow(-2*l+2,2)/2;YP(o.visual,o.fromRadius+(o.toRadius-o.fromRadius)*h),l>=1&&this.creepFillAnimations.delete(r)}for(const[r,o]of this.towerFillAnimations){const a=e-o.startTime,l=Math.min(1,a/this.EXT_ANIM_DURATION),h=l<.5?2*l*l:1-Math.pow(-2*l+2,2)/2;tx(o.visual,o.fromRadius+(o.toRadius-o.fromRadius)*h),l>=1&&this.towerFillAnimations.delete(r)}}startExtAnimation(t,e,i,n,r,o){const a=Cu(i,n),l=Cu(r,o);a!==l&&this.extAnimations.set(t,{visual:e,fromRadius:a,toRadius:l,startTime:performance.now()})}startCreepFillAnimation(t,e,i,n,r,o){const a=$u(i,n),l=$u(r,o);a!==l&&this.creepFillAnimations.set(t,{visual:e,fromRadius:a,toRadius:l,startTime:performance.now()})}startTowerFillAnimation(t,e,i,n,r,o){const a=Au(i,n),l=Au(r,o);a!==l&&this.towerFillAnimations.set(t,{visual:e,fromRadius:a,toRadius:l,startTime:performance.now()})}update(t,e,i){i&&(this.users=i);let n=!1;if(e)for(const r in e)if(e[r]===null){const a=this.rawObjects.get(r);a&&a.type==="road"&&(n=!0);const l=this.objects.get(r);l&&(this.container.removeChild(l),Pr(l),this.objects.delete(r),this.rawObjects.delete(r),this.extAnimations.delete(r),this.creepFillAnimations.delete(r),this.towerFillAnimations.delete(r))}else{const a=t[r];if(!a)continue;if(a.type==="road"){const h=this.rawObjects.get(r);(!h||h.x!==a.x||h.y!==a.y)&&(n=!0)}this.rawObjects.set(r,a);const l=this.objects.get(r);if(l){const h=a.x*R,c=a.y*R;if(a.type==="creep"){const u=a.x-(l.__tileX??a.x),d=a.y-(l.__tileY??a.y);(u!==0||d!==0)&&(l.__angle=Math.atan2(d,u),l.__bodyContainer&&(l.__bodyContainer.rotation=l.__angle)),l.__tileX=a.x,l.__tileY=a.y,(l.x!==h||l.y!==c)&&(l.__targetX=h,l.__targetY=c);const{used:f,capacity:p}=ku(a);(l.__creepUsed!==f||l.__creepCapacity!==p)&&(this.startCreepFillAnimation(r,l,l.__creepUsed??0,l.__creepCapacity??p,f,p),l.__creepUsed=f,l.__creepCapacity=p)}else if(a.type==="flag"){const u=typeof a.color=="number"?a.color:0,d=typeof a.secondaryColor=="number"?a.secondaryColor:0;if(l.__flagColor!==u||l.__flagSecondaryColor!==d){this.container.removeChild(l),Pr(l),this.objects.delete(r);const p=ma(a,this.showLabels,this.currentUserId,this.badge,this.badgeCache,this.users);p.__tileX=a.x,p.__tileY=a.y,this.objects.set(r,p),this.container.addChild(p)}else l.position.set(h,c)}else l.position.set(h,c);if(a.type==="extension"){const{energy:u,capacity:d}=In(a),f=l;(f.__extEnergy!==u||f.__extCapacity!==d)&&(this.startExtAnimation(r,l,f.__extEnergy??0,f.__extCapacity??d,u,d),f.__extEnergy=u,f.__extCapacity=d)}if(a.type==="tower"){const{energy:u,capacity:d}=In(a);(l.__towerEnergy!==u||l.__towerCapacity!==d)&&(this.startTowerFillAnimation(r,l,l.__towerEnergy??0,l.__towerCapacity??d,u,d),l.__towerEnergy=u,l.__towerCapacity=d)}if(a.type==="controller"){const u=typeof a.level=="number"?a.level:0,d=typeof a.progress=="number"?a.progress:0,f=typeof a.progressTotal=="number"?a.progressTotal:0;(l.__ctrlLevel!==u||l.__ctrlProgress!==d||l.__ctrlProgressTotal!==f)&&(l.__ctrlSegGraphics&&Eu(l.__ctrlSegGraphics,R/2,R/2,Ru,Ws,u,d,f),l.__ctrlLevel=u,l.__ctrlProgress=d,l.__ctrlProgressTotal=f)}}else{const h=ma(a,this.showLabels,this.currentUserId,this.badge,this.badgeCache,this.users);h.__tileX=a.x,h.__tileY=a.y,this.objects.set(r,h),this.container.addChild(h)}}else{const r=new Set;for(const o in t){const a=t[o];if(!a)continue;r.add(o),this.rawObjects.set(o,a);const l=this.objects.get(o);if(l){const h=a.x*R,c=a.y*R;if(a.type==="creep"){const u=a.x-(l.__tileX??a.x),d=a.y-(l.__tileY??a.y);(u!==0||d!==0)&&(l.__angle=Math.atan2(d,u),l.__bodyContainer&&(l.__bodyContainer.rotation=l.__angle)),l.__tileX=a.x,l.__tileY=a.y,(l.x!==h||l.y!==c)&&(l.__targetX=h,l.__targetY=c);const{used:f,capacity:p}=ku(a);(l.__creepUsed!==f||l.__creepCapacity!==p)&&(this.startCreepFillAnimation(o,l,l.__creepUsed??0,l.__creepCapacity??p,f,p),l.__creepUsed=f,l.__creepCapacity=p)}else if(a.type==="flag"){const u=typeof a.color=="number"?a.color:0,d=typeof a.secondaryColor=="number"?a.secondaryColor:0;if(l.__flagColor!==u||l.__flagSecondaryColor!==d){this.container.removeChild(l),Pr(l),this.objects.delete(o);const p=ma(a,this.showLabels,this.currentUserId,this.badge,this.badgeCache,this.users);p.__tileX=a.x,p.__tileY=a.y,this.objects.set(o,p),this.container.addChild(p)}else l.position.set(h,c)}else l.position.set(h,c);if(a.type==="extension"){const{energy:u,capacity:d}=In(a),f=l;(f.__extEnergy!==u||f.__extCapacity!==d)&&(this.startExtAnimation(o,l,f.__extEnergy??0,f.__extCapacity??d,u,d),f.__extEnergy=u,f.__extCapacity=d)}if(a.type==="tower"){const{energy:u,capacity:d}=In(a);(l.__towerEnergy!==u||l.__towerCapacity!==d)&&(this.startTowerFillAnimation(o,l,l.__towerEnergy??0,l.__towerCapacity??d,u,d),l.__towerEnergy=u,l.__towerCapacity=d)}if(a.type==="controller"){const u=typeof a.level=="number"?a.level:0,d=typeof a.progress=="number"?a.progress:0,f=typeof a.progressTotal=="number"?a.progressTotal:0;(l.__ctrlLevel!==u||l.__ctrlProgress!==d||l.__ctrlProgressTotal!==f)&&(l.__ctrlSegGraphics&&Eu(l.__ctrlSegGraphics,R/2,R/2,Ru,Ws,u,d,f),l.__ctrlLevel=u,l.__ctrlProgress=d,l.__ctrlProgressTotal=f)}}else{const h=ma(a,this.showLabels,this.currentUserId,this.badge,this.badgeCache,this.users);h.__tileX=a.x,h.__tileY=a.y,this.objects.set(o,h),this.container.addChild(h)}}for(const[o,a]of this.objects)r.has(o)||(this.container.removeChild(a),Pr(a),this.objects.delete(o),this.rawObjects.delete(o),this.extAnimations.delete(o),this.creepFillAnimations.delete(o));n=!0}this.redrawRamparts(),n&&this.redrawRoads()}redrawRoads(){this.roadGraphics.clear();const t=Fy,e=Array.from({length:50},()=>new Array(50).fill(!1)),i=[];for(const l of this.rawObjects.values())l.type==="road"&&(i.push(l),l.x>=0&&l.x<50&&l.y>=0&&l.y<50&&(e[l.x][l.y]=!0));if(i.length===0)return;const n=R/2,r=R/2,o=R*.125;for(const l of i)this.roadGraphics.circle(l.x*R+n,l.y*R+r,o);this.roadGraphics.fill(t);const a=[[1,0],[1,1],[0,1],[-1,1]];for(const l of i){const h=l.x*R+n,c=l.y*R+r;for(const[u,d]of a){const f=l.x+u,p=l.y+d;if(f>=0&&f<50&&p>=0&&p<50&&e[f][p]){const g=f*R+n,m=p*R+r;this.roadGraphics.moveTo(h,c),this.roadGraphics.lineTo(g,m)}}}this.roadGraphics.stroke({width:o*2,color:t})}redrawRamparts(){this.rampartGraphics.clear();const t=R,e=t/2,i=Array.from({length:50},()=>new Array(50).fill(void 0));for(const r of this.rawObjects.values())r.type==="rampart"&&r.x>=0&&r.x<50&&r.y>=0&&r.y<50&&(i[r.x][r.y]=typeof r.user=="string"?r.user:void 0);const n=r=>!r||!this.currentUserId?{color:Pg,alpha:.7}:r===this.currentUserId?{color:Pg,alpha:.7}:{color:7807522,alpha:.5};for(let r=0;r<50;r++)for(let o=0;o<50;o++){const a=i[o][r],l=a!==void 0,h=r>0&&i[o][r-1]!==void 0,c=r<49&&i[o][r+1]!==void 0,u=o>0&&i[o-1][r]!==void 0,d=o<49&&i[o+1][r]!==void 0,f=o*t+e,p=r*t+e;if(l){const g=n(a);!h&&!u&&r>0&&o>0?(this.rampartGraphics.moveTo(f,r*t),this.rampartGraphics.arc(f,p,e,-Math.PI/2,Math.PI,!0),this.rampartGraphics.lineTo(f,p),this.rampartGraphics.fill(g)):(this.rampartGraphics.rect(o*t,r*t,e,e),this.rampartGraphics.fill(g))}else if(h&&u&&i[o-1][r-1]!==void 0){const g=n(i[o-1][r-1]);this.rampartGraphics.moveTo(f,r*t),this.rampartGraphics.lineTo(o*t,r*t),this.rampartGraphics.lineTo(o*t,p),this.rampartGraphics.arc(f,p,e,Math.PI,-Math.PI/2,!1),this.rampartGraphics.fill(g)}if(l){const g=n(a);!h&&!d&&r>0&&o<49?(this.rampartGraphics.moveTo(f,r*t),this.rampartGraphics.arc(f,p,e,-Math.PI/2,0,!1),this.rampartGraphics.lineTo(f,p),this.rampartGraphics.fill(g)):(this.rampartGraphics.rect(f,r*t,e,e),this.rampartGraphics.fill(g))}else if(h&&d&&i[o+1][r-1]!==void 0){const g=n(i[o+1][r-1]);this.rampartGraphics.moveTo(f,r*t),this.rampartGraphics.lineTo(o*t+t,r*t),this.rampartGraphics.lineTo(o*t+t,p),this.rampartGraphics.arc(f,p,e,0,-Math.PI/2,!0),this.rampartGraphics.fill(g)}if(l){const g=n(a);!c&&!u&&r<49&&o>0?(this.rampartGraphics.moveTo(o*t,p),this.rampartGraphics.arc(f,p,e,Math.PI,Math.PI/2,!0),this.rampartGraphics.lineTo(f,p),this.rampartGraphics.fill(g)):(this.rampartGraphics.rect(o*t,p,e,e),this.rampartGraphics.fill(g))}else if(c&&u&&i[o-1][r+1]!==void 0){const g=n(i[o-1][r+1]);this.rampartGraphics.moveTo(o*t,p),this.rampartGraphics.lineTo(o*t,r*t+t),this.rampartGraphics.lineTo(f,r*t+t),this.rampartGraphics.arc(f,p,e,Math.PI/2,Math.PI,!1),this.rampartGraphics.fill(g)}if(l){const g=n(a);!c&&!d&&r<49&&o<49?(this.rampartGraphics.moveTo(f,r*t+t),this.rampartGraphics.arc(f,p,e,Math.PI/2,0,!0),this.rampartGraphics.lineTo(f,p),this.rampartGraphics.fill(g)):(this.rampartGraphics.rect(f,p,e,e),this.rampartGraphics.fill(g))}else if(c&&d&&i[o+1][r+1]!==void 0){const g=n(i[o+1][r+1]);this.rampartGraphics.moveTo(f,r*t+t),this.rampartGraphics.lineTo(o*t+t,r*t+t),this.rampartGraphics.lineTo(o*t+t,p),this.rampartGraphics.arc(f,p,e,0,Math.PI/2,!1),this.rampartGraphics.fill(g)}}}getObjectsAtTile(t,e){const i=[];for(const[n,r]of this.objects){const o=this.rawObjects.get(n);o&&o.x===t&&o.y===e&&i.push({id:n,obj:o,visual:r})}return i}setShowLabels(t){this.showLabels=t;for(const e of this.objects.values())e.__nameLabel&&(e.__nameLabel.visible=t)}getVisualById(t){return this.objects.get(t)}clear(){for(const t of this.objects.values())Pr(t);this.objects.clear(),this.rawObjects.clear(),this.extAnimations.clear(),this.creepFillAnimations.clear(),this.towerFillAnimations.clear(),this.roadGraphics.clear(),this.rampartGraphics.clear(),this.container.removeChildren()}destroy(){this.clear(),this.ticker&&this.tickerCallback&&this.ticker.remove(this.tickerCallback),this.ticker=null,this.tickerCallback=null}}const Rg=2;function Oa(s,t){return{cx:s*R+R/2,cy:t*R+R/2}}class jP{constructor(t){Q(this,"container");Q(this,"graphics");Q(this,"animations",[]);Q(this,"ticker",null);Q(this,"tickerCallback",null);this.container=new Ht,this.graphics=new ht,this.container.addChild(this.graphics),t&&(this.ticker=t,this.tickerCallback=()=>this.animate(),t.add(this.tickerCallback))}addHarvest(t,e,i,n,r){const o=Oa(t,e),a=Oa(i,n);this.animations.push({fromX:o.cx,fromY:o.cy,toX:a.cx,toY:a.cy,startTime:performance.now(),duration:r,color:IP,width:Rg})}addUpgradeController(t,e,i,n,r){const o=Oa(t,e),a=Oa(i,n);this.animations.push({fromX:o.cx,fromY:o.cy,toX:a.cx,toY:a.cy,startTime:performance.now(),duration:r,color:ZP,width:Rg})}animate(){this.graphics.clear();const t=performance.now();let e=!1;for(let i=this.animations.length-1;i>=0;i--){const n=this.animations[i],r=t-n.startTime,o=Math.min(1,r/n.duration);let a,l,h,c;const u=.5,d=.2;if(o<u){const f=o/u;a=n.fromX,l=n.fromY,h=n.fromX+(n.toX-n.fromX)*f,c=n.fromY+(n.toY-n.fromY)*f}else if(o<u+d)a=n.fromX,l=n.fromY,h=n.toX,c=n.toY;else{const f=(o-u-d)/(1-u-d);a=n.fromX+(n.toX-n.fromX)*f,l=n.fromY+(n.toY-n.fromY)*f,h=n.toX,c=n.toY}this.graphics.moveTo(a,l),this.graphics.lineTo(h,c),this.graphics.stroke({width:n.width,color:n.color}),e=!0,o>=1&&this.animations.splice(i,1)}e||this.graphics.clear()}clear(){this.animations.length=0,this.graphics.clear()}destroy(){this.clear(),this.ticker&&this.tickerCallback&&this.ticker.remove(this.tickerCallback),this.ticker=null,this.tickerCallback=null,this.graphics.destroy(),this.container.destroy()}}const $e=s=>(s+.5)*R,Tr=4,ya={dashed:[.4*R,.4*R],dotted:[.1*R,.3*R]};function xa(s,t,e,i){let n=!0,r=e;for(let o=0;o<t.length-1;o++){const[a,l]=t[o],[h,c]=t[o+1],u=h-a,d=c-l,f=Math.sqrt(u*u+d*d);if(f<.001)continue;const p=u/f,g=d/f;let m=0;for(;m<f;){const O=Math.min(r,f-m);if(n){const x=a+p*m,b=l+g*m;s.moveTo(x,b),s.lineTo(x+p*O,b+g*O)}m+=O,r-=O,r<.001&&(n=!n,r=n?e:i)}}}function UP(s,t,e){const i=Math.max(32,Math.ceil(2*Math.PI*e/2)),n=[];for(let r=0;r<=i;r++){const o=r/i*2*Math.PI;n.push([s+Math.cos(o)*e,t+Math.sin(o)*e])}return n}function HP(s){if(s==null)return .7;if(typeof s=="number")return s;const t=s.match(/^([0-9.]+)(px)?/);if(!t)return .7;const e=parseFloat(t[1]);return t[2]?e/R:e}function KP(s){if(typeof s!="string")return"Arial";const t=s.match(/^[0-9.]+(px)?\s+(.+)$/);return t?t[2]:"Arial"}class JP{constructor(){Q(this,"container");Q(this,"g");this.container=new Ht,this.container.label="visuals",this.g=new ht,this.container.addChild(this.g)}update(t){const e=this.container.removeChildren();for(const n of e)n!==this.g&&n.destroy();if(this.g.clear(),this.container.addChild(this.g),!t)return;const i=this.g;for(const n of t.split(`
|
|
251
|
+
`)){if(!n.trim())continue;let r;try{r=JSON.parse(n)}catch{continue}const o=r.s??{},a=o.opacity??1;switch(r.t){case"l":this.drawLine(i,r,o,a);break;case"c":this.drawCircle(i,r,o,a);break;case"r":this.drawRect(i,r,o,a);break;case"p":this.drawPoly(i,r,o,a);break;case"t":this.drawText(r,o,a);break}}}drawLine(t,e,i,n){const r=$e(e.x1),o=$e(e.y1),a=$e(e.x2),l=$e(e.y2),h=i.color??"#ffffff",c=(i.width??.1)*R;if(i.lineStyle&&i.lineStyle!=="solid"){const[u,d]=ya[i.lineStyle];xa(t,[[r,o],[a,l]],u,d)}else t.moveTo(r,o),t.lineTo(a,l);t.stroke({color:h,width:c,alpha:n})}drawCircle(t,e,i,n){const r=$e(e.x),o=$e(e.y),a=(i.radius??.5)*R,l=!!(i.fill&&i.fill!=="transparent"),h=!!(i.stroke&&i.strokeWidth),c=i.lineStyle&&i.lineStyle!=="solid";if(l&&(t.circle(r,o,a),t.fill({color:i.fill,alpha:n})),h){const u=i.strokeWidth*R;if(c){const[d,f]=ya[i.lineStyle];xa(t,UP(r,o,a),d,f)}else t.circle(r,o,a);t.stroke({color:i.stroke,width:u,alpha:n})}}drawRect(t,e,i,n){const r=$e(e.x),o=$e(e.y),a=e.w*R,l=e.h*R,h=!!(i.fill&&i.fill!=="transparent"),c=!!(i.stroke&&i.strokeWidth),u=i.lineStyle&&i.lineStyle!=="solid";if(h&&(t.rect(r,o,a,l),t.fill({color:i.fill,alpha:n})),c){const d=i.strokeWidth*R;if(u){const[f,p]=ya[i.lineStyle],g=[[r,o],[r+a,o],[r+a,o+l],[r,o+l],[r,o]];xa(t,g,f,p)}else t.rect(r,o,a,l);t.stroke({color:i.stroke,width:d,alpha:n})}}drawPoly(t,e,i,n){if(!e.points||e.points.length===0)return;const r=!!(i.fill&&i.fill!=="transparent"),o=!!(i.stroke&&i.strokeWidth);if(!r&&!o)return;const a=i.lineStyle&&i.lineStyle!=="solid",l=new Array(e.points.length*2);let h;o&&a&&(h=new Array(e.points.length));for(let c=0;c<e.points.length;c++){const[u,d]=e.points[c],f=$e(u),p=$e(d);l[c*2]=f,l[c*2+1]=p,h&&(h[c]=[f,p])}if(r&&(t.poly(l,!0),t.fill({color:i.fill,alpha:n})),o){const c=i.strokeWidth*R;if(a&&h){const[u,d]=ya[i.lineStyle],f=h[0],p=h[h.length-1],g=f[0]===p[0]&&f[1]===p[1];xa(t,g?h:[...h,f],u,d)}else t.poly(l,!0);t.stroke({color:i.stroke,width:c,alpha:n})}}drawText(t,e,i){const n=HP(e.font),r=KP(e.font),o=e.align??"left",a=new bo({fill:e.color??"#ffffff",fontSize:Math.round(n*R*Tr),fontFamily:r,align:o,...e.stroke&&e.strokeWidth?{stroke:{color:e.stroke,width:e.strokeWidth*R*Tr}}:{}});if(e.backgroundColor&&e.backgroundColor!=="transparent"){const h=zi.measureText(t.text,a),c=h.width/Tr,u=h.height/Tr,d=(e.backgroundPadding??.3)*R,f=o==="center"?.5:o==="right"?1:0,p=$e(t.x)-f*c-d,g=$e(t.y)-u/2-d,m=new ht;m.rect(p,g,c+d*2,u+d*2),m.fill({color:e.backgroundColor,alpha:i}),this.container.addChild(m)}const l=new wo({text:t.text,style:a});l.scale.set(1/Tr),l.anchor.x=o==="center"?.5:o==="right"?1:0,l.anchor.y=.5,l.position.set($e(t.x),$e(t.y)),l.alpha=i,this.container.addChild(l)}destroy(){const t=this.container.removeChildren();for(const e of t)e!==this.g&&e.destroy();this.g.destroy(),this.container.destroy()}}function lf(s,t){const e=localStorage.getItem(s),[i,n]=Y(e!==null?e==="true":t);return[i,r=>{n(r),localStorage.setItem(s,String(r))}]}const[ex,tT]=lf(ee.widescreenMode,!0),[Lu,eT]=lf(ee.showCreepLabels,!0),[hf,ix]=lf(ee.showMapRoomNames,!1),Iu=Symbol("store-raw"),Yn=Symbol("store-node"),Gi=Symbol("store-has"),sx=Symbol("store-self");function nx(s){let t=s[Ei];if(!t&&(Object.defineProperty(s,Ei,{value:t=new Proxy(s,nT)}),!Array.isArray(s))){const e=Object.keys(s),i=Object.getOwnPropertyDescriptors(s);for(let n=0,r=e.length;n<r;n++){const o=e[n];i[o].get&&Object.defineProperty(s,o,{enumerable:i[o].enumerable,get:i[o].get.bind(t)})}}return t}function xs(s){let t;return s!=null&&typeof s=="object"&&(s[Ei]||!(t=Object.getPrototypeOf(s))||t===Object.prototype||Array.isArray(s))}function sr(s,t=new Set){let e,i,n,r;if(e=s!=null&&s[Iu])return e;if(!xs(s)||t.has(s))return s;if(Array.isArray(s)){Object.isFrozen(s)?s=s.slice(0):t.add(s);for(let o=0,a=s.length;o<a;o++)n=s[o],(i=sr(n,t))!==n&&(s[o]=i)}else{Object.isFrozen(s)?s=Object.assign({},s):t.add(s);const o=Object.keys(s),a=Object.getOwnPropertyDescriptors(s);for(let l=0,h=o.length;l<h;l++)r=o[l],!a[r].get&&(n=s[r],(i=sr(n,t))!==n&&(s[r]=i))}return s}function wl(s,t){let e=s[t];return e||Object.defineProperty(s,t,{value:e=Object.create(null)}),e}function So(s,t,e){if(s[t])return s[t];const[i,n]=Y(e,{equals:!1,internal:!0});return i.$=n,s[t]=i}function iT(s,t){const e=Reflect.getOwnPropertyDescriptor(s,t);return!e||e.get||!e.configurable||t===Ei||t===Yn||(delete e.value,delete e.writable,e.get=()=>s[Ei][t]),e}function rx(s){qc()&&So(wl(s,Yn),sx)()}function sT(s){return rx(s),Reflect.ownKeys(s)}const nT={get(s,t,e){if(t===Iu)return s;if(t===Ei)return e;if(t===Fc)return rx(s),e;const i=wl(s,Yn),n=i[t];let r=n?n():s[t];if(t===Yn||t===Gi||t==="__proto__")return r;if(!n){const o=Object.getOwnPropertyDescriptor(s,t);qc()&&(typeof r!="function"||s.hasOwnProperty(t))&&!(o&&o.get)&&(r=So(i,t,r)())}return xs(r)?nx(r):r},has(s,t){return t===Iu||t===Ei||t===Fc||t===Yn||t===Gi||t==="__proto__"?!0:(qc()&&So(wl(s,Gi),t)(),t in s)},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:sT,getOwnPropertyDescriptor:iT};function qe(s,t,e,i=!1){if(!i&&s[t]===e)return;const n=s[t],r=s.length;e===void 0?(delete s[t],s[Gi]&&s[Gi][t]&&n!==void 0&&s[Gi][t].$()):(s[t]=e,s[Gi]&&s[Gi][t]&&n===void 0&&s[Gi][t].$());let o=wl(s,Yn),a;if((a=So(o,t,n))&&a.$(()=>e),Array.isArray(s)&&s.length!==r){for(let l=s.length;l<r;l++)(a=o[l])&&a.$();(a=So(o,"length",r))&&a.$(s.length)}(a=o[sx])&&a.$()}function ox(s,t){const e=Object.keys(t);for(let i=0;i<e.length;i+=1){const n=e[i];qe(s,n,t[n])}}function rT(s,t){if(typeof t=="function"&&(t=t(s)),t=sr(t),Array.isArray(t)){if(s===t)return;let e=0,i=t.length;for(;e<i;e++){const n=t[e];s[e]!==n&&qe(s,e,n)}qe(s,"length",i)}else ox(s,t)}function Gr(s,t,e=[]){let i,n=s;if(t.length>1){i=t.shift();const o=typeof i,a=Array.isArray(s);if(Array.isArray(i)){for(let l=0;l<i.length;l++)Gr(s,[i[l]].concat(t),e);return}else if(a&&o==="function"){for(let l=0;l<s.length;l++)i(s[l],l)&&Gr(s,[l].concat(t),e);return}else if(a&&o==="object"){const{from:l=0,to:h=s.length-1,by:c=1}=i;for(let u=l;u<=h;u+=c)Gr(s,[u].concat(t),e);return}else if(t.length>1){Gr(s[i],t,[i].concat(e));return}n=s[i],e=[i].concat(e)}let r=t[0];typeof r=="function"&&(r=r(n,e),r===n)||i===void 0&&r==null||(r=sr(r),i===void 0||xs(n)&&xs(r)&&!Array.isArray(r)?ox(n,r):qe(s,i,r))}function oT(...[s,t]){const e=sr(s||{}),i=Array.isArray(e);if(typeof e!="object"&&typeof e!="function")throw new Error(`Unexpected type ${typeof e} received when initializing 'createStore'. Expected an object.`);const n=nx(e);Nw.registerGraph({value:e,name:t&&t.name});function r(...o){Lw(()=>{i&&o.length===1?rT(e,o[0]):Gr(e,o)})}return[n,r]}const Zu=Symbol("store-root");function _n(s,t,e,i,n){const r=t[e];if(s===r)return;const o=Array.isArray(s);if(e!==Zu&&(!xs(s)||!xs(r)||o!==Array.isArray(r)||n&&s[n]!==r[n])){qe(t,e,s);return}if(o){if(s.length&&r.length&&(!i||n&&s[0]&&s[0][n]!=null)){let h,c,u,d,f,p,g,m;for(u=0,d=Math.min(r.length,s.length);u<d&&(r[u]===s[u]||n&&r[u]&&s[u]&&r[u][n]&&r[u][n]===s[u][n]);u++)_n(s[u],r,u,i,n);const O=new Array(s.length),x=new Map;for(d=r.length-1,f=s.length-1;d>=u&&f>=u&&(r[d]===s[f]||n&&r[d]&&s[f]&&r[d][n]&&r[d][n]===s[f][n]);d--,f--)O[f]=r[d];if(u>f||u>d){for(c=u;c<=f;c++)qe(r,c,s[c]);for(;c<s.length;c++)qe(r,c,O[c]),_n(s[c],r,c,i,n);r.length>s.length&&qe(r,"length",s.length);return}for(g=new Array(f+1),c=f;c>=u;c--)p=s[c],m=n&&p?p[n]:p,h=x.get(m),g[c]=h===void 0?-1:h,x.set(m,c);for(h=u;h<=d;h++)p=r[h],m=n&&p?p[n]:p,c=x.get(m),c!==void 0&&c!==-1&&(O[c]=r[h],c=g[c],x.set(m,c));for(c=u;c<s.length;c++)c in O?(qe(r,c,O[c]),_n(s[c],r,c,i,n)):qe(r,c,s[c])}else for(let h=0,c=s.length;h<c;h++)_n(s[h],r,h,i,n);r.length>s.length&&qe(r,"length",s.length);return}const a=Object.keys(s);for(let h=0,c=a.length;h<c;h++)_n(s[a[h]],r,a[h],i,n);const l=Object.keys(r);for(let h=0,c=l.length;h<c;h++)s[l[h]]===void 0&&qe(r,l[h],void 0)}function aT(s,t={}){const{merge:e,key:i="id"}=t,n=sr(s);return r=>{if(!xs(r)||!xs(n))return n;const o=_n(n,{[Zu]:r},Zu,e,i);return o===void 0?r:o}}const ax=new WeakMap;function Eg(s,t){const[e,i]=oT(t),n={id:s,type:t.type,raw:e};return ax.set(n,r=>i(aT(r,{key:"_id",merge:!1}))),n}const[Sl,vo]=Y([]);function lT(){vo([])}function lx(s){vo(t=>t.filter(e=>e.id!==s))}function hT(s,t){const e=Sl();let i=!1;const n=[];for(const r of e){const o=s[r.id];if(o===null){i=!0;continue}if(o!==void 0){const a=t[r.id];if(a){const l=ax.get(r);l==null||l(a)}}n.push(r)}i&&vo(n)}const[cT,Lg]=Y(null),[uT,Ig]=Y(null),[Zn,Zg]=Y(null),[vl,Dg]=Y({});function cf(s,t,e){return isNaN(e.minX)||isNaN(e.maxX)||isNaN(e.minY)||isNaN(e.maxY)?!0:s>=e.minX&&s<=e.maxX&&t>=e.minY&&t<=e.maxY}function be(s){const t=s.match(/^([WE])(\d+)([NS])(\d+)$/);if(!t)return null;const[,e,i,n,r]=t,o=e==="W"?-(parseInt(i,10)+1):parseInt(i,10),a=n==="N"?-(parseInt(r,10)+1):parseInt(r,10);return{x:o,y:a}}function ds(s,t){const e=s<0?"W":"E",i=t<0?"N":"S",n=s<0?-s-1:s,r=t<0?-t-1:t;return`${e}${n}${i}${r}`}function hx(s){const t=s;if(!t)return!1;const e=t.tagName??"";return e==="INPUT"||e==="TEXTAREA"?!0:t.isContentEditable===!0}function cx(s){const t=e=>{if(hx(e.target))return;const i=s.currentRoom(),n=i?be(i):null;if(!n)return;const r=s.worldBounds(),o=(a,l)=>!r||cf(a,l,r);switch(e.key){case"ArrowLeft":e.preventDefault(),o(n.x-1,n.y)&&s.onMove(n.x-1,n.y);break;case"ArrowRight":e.preventDefault(),o(n.x+1,n.y)&&s.onMove(n.x+1,n.y);break;case"ArrowUp":e.preventDefault(),o(n.x,n.y-1)&&s.onMove(n.x,n.y-1);break;case"ArrowDown":e.preventDefault(),o(n.x,n.y+1)&&s.onMove(n.x,n.y+1);break}};window.addEventListener("keydown",t),de(()=>window.removeEventListener("keydown",t))}var dT=W('<div style=text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px><div style=font-size:14px;font-weight:600;color:#f85149>You have no rooms!</div><button style="padding:4px 12px;border-radius:4px;border:1px solid #238636;background:#1a3a2a;color:#3fb950;font-size:12px;cursor:pointer">Place Spawn'),fT=W('<div style=text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px><div style=font-size:14px;font-weight:600;color:#f85149>You lost all your spawns!</div><button style="padding:4px 12px;border-radius:4px;border:1px solid #da3633;background:#3d1a1a;color:#f85149;font-size:12px;cursor:pointer">Respawn'),pT=W("<span>Choose new flag position"),rc=W("<span>"),gT=W("<span>Select structure type, then click to build — Ctrl+click to remove construction sites");const{log:Bg,warn:mT,error:Xg}=ns("build"),zg={COLOR_RED:1,COLOR_PURPLE:2,COLOR_BLUE:3,COLOR_CYAN:4,COLOR_GREEN:5,COLOR_YELLOW:6,COLOR_ORANGE:7,COLOR_BROWN:8,COLOR_GREY:9,COLOR_WHITE:10},_l={spawn:{0:0,1:1,2:1,3:1,4:1,5:1,6:1,7:2,8:3},extension:{0:0,1:0,2:5,3:10,4:20,5:30,6:40,7:50,8:60},link:{1:0,2:0,3:0,4:0,5:2,6:3,7:4,8:6},road:{0:2500,1:2500,2:2500,3:2500,4:2500,5:2500,6:2500,7:2500,8:2500},constructedWall:{1:0,2:2500,3:2500,4:2500,5:2500,6:2500,7:2500,8:2500},rampart:{1:0,2:2500,3:2500,4:2500,5:2500,6:2500,7:2500,8:2500},storage:{1:0,2:0,3:0,4:1,5:1,6:1,7:1,8:1},tower:{1:0,2:0,3:1,4:1,5:2,6:2,7:3,8:6},observer:{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:1},powerSpawn:{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:1},extractor:{1:0,2:0,3:0,4:0,5:0,6:1,7:1,8:1},terminal:{1:0,2:0,3:0,4:0,5:0,6:1,7:1,8:1},lab:{1:0,2:0,3:0,4:0,5:0,6:3,7:6,8:10},container:{0:5,1:5,2:5,3:5,4:5,5:5,6:5,7:5,8:5},nuker:{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:1},factory:{1:0,2:0,3:0,4:0,5:0,6:0,7:1,8:1}},[on,Nn]=Y("view"),[kn,ux]=Y({name:"",color:"COLOR_WHITE",secondaryColor:"COLOR_WHITE"}),[Ks,Du]=Y(null),[uf,Bu]=Y(null),[nr,hh]=Y({structureType:"",structureName:""});qr(()=>{gt(()=>{const s=nr().structureType;if(!s)return;const t=Zn()??0,e=_l[s];if(!e)return;const i=nn()==="empty"&&s==="spawn"?Math.max(e[t]??0,1):e[t]??0;if(i===2500)return;(vl()[s]??0)>=i&&(hh({structureType:"",structureName:""}),gs())})});function gs(){Du(null)}function Xu(){Bu(null)}function OT(){hh({structureType:"",structureName:""})}function yT(s,t){const e=St(),i=nr(),n=Ks();if(!e||!i.structureType||!n){mT("missing requirements",{hasClient:!!e,structureType:i.structureType,pending:n});return}if(nn()==="empty"&&i.structureType==="spawn"){Bg("placing spawn",{room:s,x:n.tx,y:n.ty,name:i.structureName||void 0,shard:t??void 0}),e.http.game.placeSpawn(s,n.tx,n.ty,i.structureName||"Spawn 1",t??void 0).then(()=>(jt("Spawn placed successfully","success"),gs(),e.stores.user.refreshWorldStatus())).catch(r=>{Xg("place spawn failed:",r),jt(`Failed to place spawn: ${r.message}`,"error")});return}Bg("creating construction site",{room:s,x:n.tx,y:n.ty,structureType:i.structureType,name:i.structureName||void 0,shard:t??void 0}),e.http.game.createConstruction(s,n.tx,n.ty,i.structureType,i.structureName||void 0,t??void 0).then(()=>{jt(`Construction site for ${i.structureType} created`,"success"),gs()}).catch(r=>{Xg("create construction failed:",r),jt(`Failed to create construction site: ${r.message}`,"error")})}function xT(){Nn("view"),gs(),Xu(),OT()}function Wg(){const s=on(),t=Ks(),e=uf(),i=nn();if(i==="empty")return(()=>{var n=dT(),r=n.firstChild,o=r.nextSibling;return o.$$click=()=>{Nn("build"),hh({structureType:"spawn",structureName:""})},n})();if(i==="lost")return(()=>{var n=fT(),r=n.firstChild,o=r.nextSibling;return o.$$click=()=>{const a=St();a&&a.http.user.respawn().then(()=>{jt("Respawn successful","success"),a.stores.user.refreshWorldStatus()}).catch(l=>{jt(`Respawn failed: ${l.message}`,"error")})},n})();if((e==null?void 0:e.type)==="moveFlag")return pT();if(s==="flag")return(()=>{var n=rc();return L(n,t?"Confirm position":"Choose position"),n})();if(s==="build"){const n=nr(),r=Zn(),o=vl(),a=n.structureType,l=" — Ctrl+click to remove construction sites";if(!a)return gT();const h=_l[a],c=(h==null?void 0:h[r??0])??0,u=o[a]??0,d=a.replace(/([A-Z])/g," $1").trim();return c===2500?(()=>{var f=rc();return L(f,`Click to build ${d} (${u}/∞)${l}`),f})():(()=>{var f=rc();return L(f,`Click to build ${d} (${u}/${c})${l}`),f})()}return null}Ne(["click"]);var bT=W("<div style=width:100%;height:100%;position:relative><div style=width:100%;height:100%>"),wT=W('<div style="position:absolute;top:12px;left:50%;transform:translateX(-50%);padding:6px 16px;border-radius:6px;background:rgba(13, 17, 23, 0.65);border:1px solid rgba(48, 54, 61, 0.6);font-size:13px;font-weight:500;color:#c9d1d9;user-select:none;z-index:10">'),ST=W('<div style="position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;background:rgba(13, 17, 23, 0.8);border:1px solid #30363d;font-size:12px;color:#8b949e;z-index:10">Tick ');const{log:Mr,error:Ar}=ns("room");function vT(s){let t,e=null,i=null,n=null,r=null;const[o,a]=Y(null),[l,h]=Y(null),[c,u]=Y(null),[d,f]=Y("");return un(async()=>{if(!t)return;const p=await rf.create(t);a(p)}),de(()=>{e==null||e.destroy(),e=null,i==null||i.destroy(),i=null,n==null||n.destroy(),n=null;const p=o();p&&p.destroy()}),gt(()=>{const p=St();if(!p)return;const g=s.room,m=s.shard;h(null),u(null),f(""),Jc(null),lT(),Lg(null),Ig(null),Zg(null),Dg({});const O=new Dd;let x=!1;p.stores.room.terrain(g,m).then(b=>{x||h({room:g,data:b})}).catch(b=>{x||Ar(`terrain load failed for ${g}:`,b)}),O.add(p.stores.room.subscribe(g,m)),O.add(p.stores.room.on("room:error",b=>{jt(`Room subscription error (${b.room}): ${b.message}`,"error",8e3)})),O.add(p.stores.room.on("room:update",b=>{var _,k;let v=0;const w={};let S=0,y=null;for(const P in b.objects){v++;const T=b.objects[P];if(!T)continue;const $=T.type;if(typeof $=="string")if($==="constructionSite"){const A=T.structureType;typeof A=="string"&&(w[A]=(w[A]||0)+1)}else w[$]=(w[$]||0)+1;if($==="controller"&&typeof T.user=="string"){const A=T.user,C=((k=(_=b.users)==null?void 0:_[A])==null?void 0:k.username)??A;y={userId:A,username:C},typeof T.level=="number"&&(S=T.level)}}b.diff||Mr(`objects loaded — ${g}: ${v} objects, tick=${b.gameTime}`),u({objects:b.objects,diff:b.diff,users:b.users}),f(b.visual),Jc(b.gameTime??null),rv(b.gameTime),Lg(v),Ig(y),Zg(S||null),Dg(w)})),de(()=>{x=!0,O.dispose()})}),gt(()=>{const p=o();if(!p)return;s.room,s.shard,xT(),p.hoverLayer.clearPendingTile(),r==null||r.destroy(),r=null,p.clear(),p.resetView(),e==null||e.destroy(),e=null,i==null||i.destroy(),i=null,n==null||n.destroy(),n=null;const g=ii(l);g&&g.room===s.room&&(Mr(`terrain applied immediately (pre-loaded) — ${s.room}`),r=Mg(g.data),p.world.addChildAt(r,0),p.bringNavOverlayToTop())}),gt(()=>{const p=o();if(!p)return;const g=s.room,m=s.shard,O=be(g);if(O&&s.onNavigate){const x=s.onNavigate,b=Mn(),v=(S,y)=>!b||cf(S,y,b),w=S=>{x(S,m)};cx({currentRoom:()=>s.room,worldBounds:Mn,onMove:(S,y)=>w(ds(S,y))}),p.setupNavigationZones({west:v(O.x-1,O.y)?()=>w(ds(O.x-1,O.y)):void 0,east:v(O.x+1,O.y)?()=>w(ds(O.x+1,O.y)):void 0,north:v(O.x,O.y-1)?()=>w(ds(O.x,O.y-1)):void 0,south:v(O.x,O.y+1)?()=>w(ds(O.x,O.y+1)):void 0})}}),gt(()=>{const p=on(),g=o();p==="view"&&g&&(gs(),g.hoverLayer.clearPendingTile())}),gt(()=>{const p=o(),g=Ks();p&&(g?p.hoverLayer.setPendingTile(g.tx,g.ty):p.hoverLayer.clearPendingTile())}),gt(()=>{const p=o(),g=l();if(!(!p||!g||g.room!==s.room)){if(r!=null&&r.parent){Mr(`terrain already in scene, skipping — ${s.room}`);return}Mr(`terrain applied (async) — ${s.room}`),r=Mg(g.data),p.world.addChildAt(r,0),p.bringNavOverlayToTop()}}),gt(()=>{var b,v;const p=o(),g=c();if(!p||!g)return;const{objects:m,diff:O,users:x}=g;if(e||(Mr(`object layer created — ${s.room}`),e=new qP(p.app.ticker,Lu(),(b=fo())==null?void 0:b._id,(v=fo())==null?void 0:v.badge,x),e.container.label="objects",p.world.addChild(e.container),p.bringNavOverlayToTop(),i=new jP(p.app.ticker),i.container.label="animations",p.world.addChild(i.container),n=new JP,p.world.addChild(n.container),p.bringNavOverlayToTop(),p.setTileHandlers((w,S)=>{},(w,S,y)=>{const _=s.room,k=s.shard,P=on(),T=uf();if((T==null?void 0:T.type)==="moveFlag"){const B=St();if(!B)return;const{name:E,room:I,color:V,secondaryColor:Z}=T;B.http.game.removeFlag(I,E).then(()=>B.http.game.createFlag(_,w,S,E,V,Z,k??void 0)).then(()=>{jt(`Flag "${E}" moved`,"success"),Xu()}).catch(N=>{Ar("move flag failed:",N),jt(`Failed to move flag "${E}"`,"error"),Xu()});return}if(P==="flag"){const B=Ks();if(!B||B.tx!==w||B.ty!==S){Du({tx:w,ty:S}),p.hoverLayer.setPendingTile(w,S);return}const E=St();if(!E)return;const I=kn(),V=I.name.trim();if(!V){jt("Flag name is required","error");return}const Z=zg[I.color]??0,N=zg[I.secondaryColor]??0;E.http.game.createFlag(_,w,S,V,Z,N,k??void 0).then(()=>{jt(`Flag "${V}" created`,"success"),gs(),p.hoverLayer.clearPendingTile(),E.http.game.genUniqueFlagName().then(z=>ux(X=>({...X,name:z.name}))).catch(z=>Ar("gen unique flag name failed:",z))}).catch(z=>Ar("create flag failed:",z));return}if(P==="build"){if(!y&&!nr().structureType){jt("Select a structure type first","error");return}if(y){if(!e)return;const E=e.getObjectsAtTile(w,S).filter(({obj:V})=>V.type==="constructionSite");if(E.length===0){jt("No construction sites on this tile","error");return}const I=St();if(!I)return;I.http.game.removeConstructionSite(_,E.map(({id:V})=>V),k??void 0).then(()=>{jt(`Removed ${E.length} construction site${E.length>1?"s":""}`,"success"),gs(),p.hoverLayer.clearPendingTile()}).catch(V=>{Ar("remove construction sites failed:",V),jt(`Failed to remove construction sites: ${V.message}`,"error")});return}Du({tx:w,ty:S}),p.hoverLayer.setPendingTile(w,S),yT(_,k);return}if(gs(),p.hoverLayer.clearPendingTile(),!e)return;const $=e.getObjectsAtTile(w,S);if($.length===0){y||(vo([]),p.hoverLayer.clearSelection());return}let A=[...Sl()];if(y){const B=new Set($.map(I=>I.id));if(A.some(I=>B.has(I.id)))A=A.filter(I=>!B.has(I.id));else{const I=$.filter(({id:V})=>!A.some(Z=>Z.id===V)).map(({id:V,obj:Z})=>Eg(V,Z));A=[...A,...I]}}else A=$.map(({id:B,obj:E})=>Eg(B,E));vo(A);const C=A.map(({id:B,type:E})=>({id:B,type:E,visual:e.getVisualById(B)})).filter(B=>B.visual!=null);p.hoverLayer.setSelectedObjects(C)})),O&&hT(O,m),e.update(m,O,x),i){i.clear();const w=(tu()??2e3)*.6;for(const S in m){const y=m[S];if(!y||y.type!=="creep")continue;const _=y.actionLog;if(_){if(_.harvest){const k=_.harvest;i.addHarvest(k.x,k.y,y.x,y.y,w)}if(_.upgradeController){const k=_.upgradeController;i.addUpgradeController(y.x,y.y,k.x,k.y,w)}}}}}),gt(()=>{const p=d();n==null||n.update(p)}),gt(()=>{e==null||e.setShowLabels(Lu())}),(()=>{var p=bT(),g=p.firstChild;return Us(m=>t=m,g),L(p,(()=>{var m=Bt(()=>!!Wg());return()=>m()&&(()=>{var O=wT();return L(O,Wg),J(x=>tt(O,"pointer-events",nn()==="empty"||nn()==="lost"?"auto":"none")),O})()})(),null),L(p,(()=>{var m=Bt(()=>pl()!==null);return()=>m()&&(()=>{var O=ST();return O.firstChild,L(O,pl,null),O})()})(),null),p})()}const dx="screeps-terrain-v1";async function _T(s,t,e){try{const i=await caches.open(dx),n=`/terrain/${s}_${t}_z${e}.webp`,r=new Request(n),o=await i.match(r);if(o)return await o.blob()}catch{}return null}async function kT(s,t,e,i){try{const n=await caches.open(dx),r=`/terrain/${s}_${t}_z${e}.webp`,o=new Request(r),a=new Response(i);await n.put(o,a)}catch{}}async function $T(s){const t=new OffscreenCanvas(s.width,s.height),e=t.getContext("2d");if(!e)throw new Error("OffscreenCanvas 2D context not available");return e.drawImage(s,0,0),await t.convertToBlob({type:"image/webp"})}async function CT(s){return await createImageBitmap(s)}function PT(s){return new Worker("/assets/terrain.worker-D9zNeJfz.js",{name:s==null?void 0:s.name})}const{warn:TT}=ns("MapRenderer"),fx=3,at=fx*50,MT=[50,60,70,80,90,100,110],Rs=1,ba=50,AT=2600,QT=5,Gg=.2,Yg=5,RT=En,ET=Ha,LT=Wn,IT=eo,ZT=4491519,DT=new Set(["w","r","pb","p","s","c","m","k"]),BT={H:13421772,O:13421772,U:5809919,L:4176208,K:10711543,Z:13801762,X:16273737},XT=[16,24,32,40];class zT{constructor(t){Q(this,"app");Q(this,"world");Q(this,"boundsGraphics",null);Q(this,"selectionGraphics",null);Q(this,"safeModeGraphics",null);Q(this,"safeModeRooms",new Set);Q(this,"activeRooms",new Map);Q(this,"roomPool",[]);Q(this,"terrainBaked",new Set);Q(this,"terrainData",new Map);Q(this,"worker");Q(this,"pendingBakes",new Map);Q(this,"nextBakeId",0);Q(this,"currentShard","shard0");Q(this,"callbacks");Q(this,"resizeObserver",null);Q(this,"_destroyed",!1);Q(this,"showRoomNames",!1);Q(this,"worldBoundsSet",null);Q(this,"lastVisibleBounds",null);Q(this,"animTargetX",0);Q(this,"animTargetY",0);Q(this,"isAnimating",!1);Q(this,"overlayMode","owner");Q(this,"isDragging",!1);Q(this,"hasDragged",!1);Q(this,"dragStartX",0);Q(this,"dragStartY",0);Q(this,"dragWorldX",0);Q(this,"dragWorldY",0);Q(this,"lastVisibleKey","");Q(this,"visibleDebounceTimer",null);Q(this,"selectedRoom",null);Q(this,"currentUserId",null);Q(this,"badgeCache",new jy);Q(this,"lastCheckX",0);Q(this,"lastCheckY",0);Q(this,"lastCheckScale",0);this.app=new Fd,this.callbacks=t,this.worker=new PT,this.worker.onmessage=e=>{const{id:i,bitmap:n}=e.data,r=this.pendingBakes.get(i);r&&(this.pendingBakes.delete(i),r.resolve(n))}}async init(t){const e=t.parentElement??t,{width:i,height:n}=e.getBoundingClientRect();await this.app.init({canvas:t,width:i,height:n,background:Ny,antialias:!1,preference:"webgl"}),this.resizeObserver=new ResizeObserver(r=>{const{width:o,height:a}=r[0].contentRect,l=this.app.screen.width,h=this.app.screen.height;this.app.renderer.resize(o,a),this.world.x+=(o-l)/2,this.world.y+=(a-h)/2}),this.resizeObserver.observe(e),this.world=new Ht,this.app.stage.addChild(this.world),this.boundsGraphics=new ht,this.world.addChild(this.boundsGraphics),this.selectionGraphics=new ht,this.world.addChild(this.selectionGraphics),this.safeModeGraphics=new ht,this.world.addChild(this.safeModeGraphics),this.setupInteraction(),this.app.ticker.add(()=>{if(this.isAnimating){const r=this.animTargetX-this.world.x,o=this.animTargetY-this.world.y;Math.abs(r)<.5&&Math.abs(o)<.5?(this.world.x=this.animTargetX,this.world.y=this.animTargetY,this.isAnimating=!1):(this.world.x+=r*.2,this.world.y+=o*.2)}this.checkVisibleRooms()})}get zoom(){var t;return((t=this.world)==null?void 0:t.scale.x)??1}setZoom(t){var h,c;if(!this.world)return;t=Math.max(Gg,Math.min(Yg,t));const e=this.world.scale.x;if(t===e)return;const i=this.app.screen.width/2,n=this.app.screen.height/2,r=(i-this.world.x)/e,o=(n-this.world.y)/e,a=this.getLOD(),l=this.zoom>=Rs;this.world.scale.set(t),this.world.x=i-r*t,this.world.y=n-o*t,this.getLOD()!==a&&this.applyLOD(),t>=Rs!==l&&this.updateAllNameLabels(),this.updateAllRoomScales(t),(c=(h=this.callbacks).onZoomChanged)==null||c.call(h,t),this.setSelectedRoom(this.selectedRoom),this.redrawSafeMode()}centerOn(t,e,i=!1){const n=t*at+at/2,r=e*at+at/2,o=this.world.scale.x,a=this.app.screen.width/2-n*o,l=this.app.screen.height/2-r*o;i?(this.animTargetX=a,this.animTargetY=l,this.isAnimating=!0):(this.isAnimating=!1,this.world.x=a,this.world.y=l)}async getTerrainBitmap(t,e,i){const n=this.currentShard;try{const r=await _T(n,t,e);if(r)return await CT(r);const o=this.nextBakeId++,a=new Promise((h,c)=>{this.pendingBakes.set(o,{roomName:t,lod:e,resolve:h,reject:c})});this.worker.postMessage({id:o,roomName:t,lod:e,raw:i});const l=await a;return $T(l).then(h=>{kT(n,t,e,h)}).catch(h=>TT("failed to save to terrainCache:",h)),l}catch{return null}}async setRoomTerrain(t,e){const i=e.raw;let n=!1;for(let h=0;h<i.length;h++)if(i[h]!==0){n=!0;break}if(!n){this.terrainBaked.add(t);return}const r=this.getOrCreate(t),o=this.getLOD();o===0&&this.terrainData.set(t,i);const a=await this.getTerrainBitmap(t,o,i);if(!a)return;if(!this.activeRooms.has(t)){a.close();return}const l=bt.from(a);o===0?(r.texLo&&!r.texLo.destroyed&&r.texLo.destroy(!0),r.texLo=l,this.getLOD()===0&&r.texLo&&(r.terrainSprite.texture=r.texLo)):(r.texHi&&!r.texHi.destroyed&&r.texHi.destroy(!0),r.texHi=l,this.getLOD()===1&&r.texHi&&(r.terrainSprite.texture=r.texHi)),r.terrainSprite.width=at,r.terrainSprite.height=at,this.terrainBaked.add(t)}getLOD(){return this.zoom<Rs?0:1}async applyLOD(){const t=this.getLOD()===1,e=[];for(const[i,n]of this.activeRooms)if(this.terrainBaked.has(i))if(t&&!n.texHi){const r=this.terrainData.get(i);r&&(this.terrainData.delete(i),e.push(this.getTerrainBitmap(i,1,r).then(o=>{o&&this.activeRooms.has(i)?(n.texHi=bt.from(o),this.getLOD()===1&&(n.terrainSprite.texture=n.texHi)):o&&o.close()})))}else{const r=t?n.texHi:n.texLo;r&&!r.destroyed&&(n.terrainSprite.texture=r)}await Promise.all(e)}setRoomMap2(t,e,i="live"){const r=this.getOrCreate(t).map2Graphics;r.alpha=i==="cache"?.6:1;const o=fx;r.clear();const a=e.r??[];for(const[g,m]of a)r.rect(g*o,m*o,o,o);a.length&&r.fill(of);const l=e.w??[];for(const[g,m]of l)r.rect(g*o+.5,m*o+.5,o-1,o-1);l.length&&r.fill(4486980);const h=e.s??[];for(const[g,m]of h)r.circle((g+.5)*o,(m+.5)*o,2.5);h.length&&r.fill(RT);const c=e.c??[];for(const[g,m]of c)r.circle((g+.5)*o,(m+.5)*o,2);c.length&&r.fill(ET);const u=e.m??[];for(const[g,m]of u)r.circle((g+.5)*o,(m+.5)*o,2);u.length&&r.fill(LT);const d=e.k??[];for(const[g,m]of d)r.circle((g+.5)*o,(m+.5)*o,2);d.length&&r.fill(IT);const f=e.pb??[];for(const[g,m]of f)r.circle((g+.5)*o,(m+.5)*o,1.5);f.length&&r.fill(eo);const p=e;for(const g in p){if(DT.has(g))continue;const m=p[g];if(!Array.isArray(m)||m.length===0)continue;for(const[x,b]of m)r.circle((x+.5)*o,(b+.5)*o,1);const O=g===this.currentUserId?ZT:16711680;r.fill(O)}}clearRoomMap2(t){var e;(e=this.activeRooms.get(t))==null||e.map2Graphics.clear()}clearAllMap2(){for(const t of this.activeRooms.values())t.map2Graphics.clear()}setRoomOwned(t,e){const n=this.getOrCreate(t).ownerOverlay;n.clear(),e&&(n.rect(0,0,at,at),n.fill({color:10027008,alpha:.18}))}async setRoomBadge(t,e,i){const n=this.activeRooms.get(t);if(n){if(!e){n.badgeSprite&&(n.container.removeChild(n.badgeSprite),n.badgeSprite.destroy(),n.badgeSprite=void 0),n.badgeLevel=void 0;return}try{const r=await this.badgeCache.getOrCreate(e);if(!this.activeRooms.has(t))return;if(n.badgeSprite){if(n.badgeSprite.texture===r){n.badgeLevel=i,this.applyBadgeSize(n,this.zoom),this.applyOverlayMode(n);return}n.badgeSprite.texture=r}else{const o=new Ji(r);o.anchor.set(.5),o.x=at/2,o.y=at/2;const a=n.container.getChildIndex(n.nameLabel);n.container.addChildAt(o,a),n.badgeSprite=o}n.badgeLevel=i,this.applyBadgeSize(n,this.zoom),this.applyOverlayMode(n)}catch{}}}applyBadgeSize(t,e){if(!t.badgeSprite||t.badgeLevel===void 0)return;const n=(MT[t.badgeLevel-1]??24)*Math.min(1,e);t.badgeSprite.width=n/e,t.badgeSprite.height=n/e}setOverlayMode(t){if(this.overlayMode!==t){this.overlayMode=t;for(const e of this.activeRooms.values())this.applyOverlayMode(e)}}setRoomMineral(t,e,i){const n=this.activeRooms.get(t);if(!n)return;if(!e||!i){n.mineralCircle&&(n.container.removeChild(n.mineralCircle),n.mineralCircle.destroy(),n.mineralCircle=void 0),n.mineralLabel&&(n.container.removeChild(n.mineralLabel),n.mineralLabel.destroy(),n.mineralLabel=void 0),n.mineralDensity=void 0;return}const r=BT[e]??Wn;if(n.mineralDensity=i,n.mineralColor=r,!n.mineralCircle){const o=new ht;o.x=at/2,o.y=at/2;const a=n.container.getChildIndex(n.nameLabel);n.container.addChildAt(o,a),n.mineralCircle=o}if(n.mineralLabel)n.mineralLabel.text=e;else{const o=new wo({text:e,style:{fontSize:36,fill:16777215,fontFamily:"ui-monospace, monospace",fontWeight:"bold"}});o.anchor.set(.5),o.x=at/2,o.y=at/2,n.container.addChild(o),n.mineralLabel=o}this.applyMineralSize(n,this.zoom),this.applyOverlayMode(n)}applyOverlayMode(t){t.badgeSprite&&(t.badgeSprite.visible=this.overlayMode==="owner"),t.mineralCircle&&(t.mineralCircle.visible=this.overlayMode==="mineral"),t.mineralLabel&&(t.mineralLabel.visible=this.overlayMode==="mineral")}applyMineralSize(t,e){if(!t.mineralCircle||!t.mineralLabel||t.mineralDensity===void 0||t.mineralColor===void 0)return;const i=Math.max(.5,Math.min(1.5,e)),n=(XT[t.mineralDensity-1]??24)*i,r=n/2/e;t.mineralCircle.clear(),t.mineralCircle.circle(0,0,1),t.mineralCircle.fill(t.mineralColor);const a=2/e;t.mineralCircle.stroke({color:0,width:a/r}),t.mineralCircle.scale.set(r);const h=n*.55/36/e;t.mineralLabel.scale.set(h)}updateNameLabelScale(t,e){t.nameLabel.scale.set(.5/e)}updateAllRoomScales(t){for(const e of this.activeRooms.values())this.applyBadgeSize(e,t),this.updateNameLabelScale(e,t),this.applyMineralSize(e,t)}setCurrentUser(t){this.currentUserId=t}setSelectedRoom(t){if(this.selectedRoom=t,!this.selectionGraphics||(this.selectionGraphics.clear(),this.world.removeChild(this.selectionGraphics),this.world.addChild(this.selectionGraphics),!t))return;const e=be(t);if(!e)return;const i=e.x*at,n=e.y*at;this.selectionGraphics.rect(i,n,at,at);const r=Math.max(2,Math.ceil(2/this.zoom));this.selectionGraphics.stroke({color:16777215,width:r,alignment:0})}setRoomSafeMode(t,e){e?this.safeModeRooms.add(t):this.safeModeRooms.delete(t),this.redrawSafeMode()}redrawSafeMode(){if(!this.safeModeGraphics||(this.safeModeGraphics.clear(),this.safeModeRooms.size===0))return;const t=Math.max(1,Math.ceil(1/this.zoom));for(const e of this.safeModeRooms){const i=be(e);if(!i)continue;const n=i.x*at,r=i.y*at;this.safeModeGraphics.rect(n,r,at,at),this.safeModeGraphics.stroke({color:16776960,width:t,alignment:1,alpha:.5})}this.world.removeChild(this.safeModeGraphics),this.world.addChild(this.safeModeGraphics)}setBounds(t,e,i,n){if(!this.boundsGraphics)return;this.worldBoundsSet={minX:t,maxX:e,minY:i,maxY:n},this.boundsGraphics.clear();const r=t*at,o=i*at,a=(e-t+1)*at,l=(n-i+1)*at;this.boundsGraphics.rect(r,o,a,l),this.boundsGraphics.stroke({color:Vy,width:6,alignment:0}),this.updateAllNameLabels()}clearBounds(){var t;this.worldBoundsSet=null,(t=this.boundsGraphics)==null||t.clear(),this.updateAllNameLabels()}setShowRoomNames(t){this.showRoomNames=t,this.updateAllNameLabels()}hasRoom(t){return this.terrainBaked.has(t)}clearRoom(t){const e=this.activeRooms.get(t);e&&(e.texLo&&!e.texLo.destroyed&&e.texLo.destroy(!0),e.texHi&&!e.texHi.destroyed&&e.texHi.destroy(!0),e.texLo=null,e.texHi=null,e.terrainSprite.texture=bt.EMPTY,e.map2Graphics.clear(),e.ownerOverlay.clear(),e.badgeSprite&&(e.container.removeChild(e.badgeSprite),e.badgeSprite.destroy(),e.badgeSprite=void 0),e.mineralCircle&&(e.container.removeChild(e.mineralCircle),e.mineralCircle.destroy(),e.mineralCircle=void 0),e.mineralLabel&&(e.container.removeChild(e.mineralLabel),e.mineralLabel.destroy(),e.mineralLabel=void 0),e.mineralDensity=void 0,e.mineralColor=void 0,e.container.visible=!1,this.safeModeRooms.delete(t),this.terrainBaked.delete(t),this.terrainData.delete(t),this.activeRooms.delete(t),this.roomPool.length<AT?this.roomPool.push(e):(this.world.removeChild(e.container),e.container.destroy({children:!0,context:!0})))}clearInvisibleRooms(t){const e=this.lastVisibleBounds;for(const i of[...this.activeRooms.keys()])if(!t.has(i)){if(e){const n=be(i);if(n&&n.x>=e.rxMin-ba&&n.x<=e.rxMax+ba&&n.y>=e.ryMin-ba&&n.y<=e.ryMax+ba)continue}this.clearRoom(i)}}destroy(){var t;if(!this._destroyed){this._destroyed=!0,(t=this.resizeObserver)==null||t.disconnect(),this.resizeObserver=null,this.visibleDebounceTimer!==null&&(clearTimeout(this.visibleDebounceTimer),this.visibleDebounceTimer=null);for(const[,e]of this.activeRooms)e.texLo&&!e.texLo.destroyed&&e.texLo.destroy(!0),e.texHi&&!e.texHi.destroyed&&e.texHi.destroy(!0);this.activeRooms.clear(),this.safeModeRooms.clear();for(const e of this.roomPool)e.texLo&&!e.texLo.destroyed&&e.texLo.destroy(!0),e.texHi&&!e.texHi.destroyed&&e.texHi.destroy(!0);this.roomPool.length=0,this.terrainBaked.clear(),this.terrainData.clear(),this.worker.terminate(),this.pendingBakes.clear(),this.badgeCache.destroy();try{this.app.destroy(!1,{children:!0,texture:!0,context:!0})}catch{}}}getOrCreate(t){const e=this.activeRooms.get(t);if(e)return e;const i=be(t);if(!i)throw new Error(`MapRenderer: invalid room "${t}"`);let n;if(this.roomPool.length>0)n=this.roomPool.pop();else{const r=new Ht;r.cullable=!0;const o=new Ji(bt.EMPTY),a=new ht,l=new ht;r.addChild(o),r.addChild(a),r.addChild(l);const h=new wo({text:"",style:{fontSize:36,fill:9147550,fontFamily:"ui-monospace, monospace"}});h.scale.set(.25),h.x=2,h.y=2,r.addChild(h),this.world.addChild(r),n={container:r,terrainSprite:o,texLo:null,texHi:null,map2Graphics:a,ownerOverlay:l,nameLabel:h}}return n.container.x=i.x*at,n.container.y=i.y*at,n.container.visible=!0,n.nameLabel.text=t,n.nameLabel.visible=this.showRoomNames&&this.zoom>=Rs&&this.nameLabelShouldShow(i.x,i.y),this.updateNameLabelScale(n,this.zoom),n.badgeSprite&&(n.container.removeChild(n.badgeSprite),n.badgeSprite.destroy(),n.badgeSprite=void 0),n.mineralCircle&&(n.container.removeChild(n.mineralCircle),n.mineralCircle.destroy(),n.mineralCircle=void 0),n.mineralLabel&&(n.container.removeChild(n.mineralLabel),n.mineralLabel.destroy(),n.mineralLabel=void 0),n.mineralDensity=void 0,n.mineralColor=void 0,this.safeModeGraphics&&(this.world.removeChild(this.safeModeGraphics),this.world.addChild(this.safeModeGraphics)),this.selectionGraphics&&(this.world.removeChild(this.selectionGraphics),this.world.addChild(this.selectionGraphics)),this.activeRooms.set(t,n),n}nameLabelShouldShow(t,e){const i=this.worldBoundsSet;return!(i&&(t<i.minX||t>i.maxX||e<i.minY||e>i.maxY))}updateAllNameLabels(){const t=this.showRoomNames&&this.zoom>=Rs;for(const[e,i]of this.activeRooms){if(!t){i.nameLabel.visible=!1;continue}const n=be(e);n&&(i.nameLabel.visible=this.nameLabelShouldShow(n.x,n.y))}}setupInteraction(){const t=this.app.canvas;t.style.touchAction="none",t.style.userSelect="none",t.addEventListener("pointermove",e=>{if(this.isDragging)return;const i=t.getBoundingClientRect();this.emitHover(e.clientX-i.left,e.clientY-i.top)}),t.addEventListener("pointerleave",()=>{this.isDragging||this.callbacks.onRoomHover(null)}),t.addEventListener("pointerdown",e=>{e.preventDefault(),this.isAnimating=!1,this.isDragging=!0,this.hasDragged=!1,this.dragStartX=e.clientX,this.dragStartY=e.clientY,this.dragWorldX=this.world.x,this.dragWorldY=this.world.y;const i=o=>{const a=o.clientX-this.dragStartX,l=o.clientY-this.dragStartY;(Math.abs(a)>3||Math.abs(l)>3)&&(this.hasDragged=!0);const h=this.worldBoundsSet;if(h){const c=this.world.scale.x,u=50,d=u-(h.maxX+1)*at*c,f=this.app.screen.width-u-h.minX*at*c,p=u-(h.maxY+1)*at*c,g=this.app.screen.height-u-h.minY*at*c;this.world.x=this.rubberBand(this.dragWorldX+a,d,f),this.world.y=this.rubberBand(this.dragWorldY+l,p,g)}else this.world.x=this.dragWorldX+a,this.world.y=this.dragWorldY+l},n=o=>{if(!this.hasDragged){const a=t.getBoundingClientRect(),l=this.screenToRoom(o.clientX-a.left,o.clientY-a.top);l&&this.callbacks.onRoomClick(l)}r()},r=()=>{this.isDragging=!1,this.springBack(),window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",r)};window.addEventListener("pointermove",i),window.addEventListener("pointerup",n),window.addEventListener("pointercancel",r)}),t.addEventListener("wheel",e=>{var c,u;if(e.preventDefault(),this.isDragging)return;this.isAnimating=!1;const i=this.world.scale.x,n=e.deltaY<0?1.1:.9,r=Math.max(Gg,Math.min(Yg,i*n)),o=(e.offsetX-this.world.x)/i,a=(e.offsetY-this.world.y)/i,l=this.getLOD(),h=this.zoom>=Rs;this.world.scale.set(r),this.world.x=e.offsetX-o*r,this.world.y=e.offsetY-a*r,this.getLOD()!==l&&this.applyLOD(),r>=Rs!==h&&this.updateAllNameLabels(),this.updateAllRoomScales(r),(u=(c=this.callbacks).onZoomChanged)==null||u.call(c,r),this.setSelectedRoom(this.selectedRoom),this.redrawSafeMode()},{passive:!1})}rubberBand(t,e,i){const n=i-e;if(n<=0||t>=e&&t<=i)return t;const r=.55;if(t<e){const a=e-t;return e-(1-1/(a*r/n+1))*n*r}const o=t-i;return i+(1-1/(o*r/n+1))*n*r}springBack(){const t=this.worldBoundsSet;if(!t)return;const e=this.world.scale.x,i=this.app.screen.width,n=this.app.screen.height,r=50,o=this.world.x+t.minX*at*e,a=this.world.x+(t.maxX+1)*at*e,l=this.world.y+t.minY*at*e,h=this.world.y+(t.maxY+1)*at*e;let c=this.world.x,u=this.world.y;a<r?c+=r-a:o>i-r&&(c-=o-(i-r)),h<r?u+=r-h:l>n-r&&(u-=l-(n-r)),(c!==this.world.x||u!==this.world.y)&&(this.animTargetX=c,this.animTargetY=u,this.isAnimating=!0)}screenToRoom(t,e){const i=this.world.scale.x,n=(t-this.world.x)/i,r=(e-this.world.y)/i,o=Math.floor(n/at),a=Math.floor(r/at);return ds(o,a)}emitHover(t,e){this.callbacks.onRoomHover(this.screenToRoom(t,e))}checkVisibleRooms(){const t=this.world.scale.x,e=this.world.x,i=this.world.y;if(this.lastCheckX===e&&this.lastCheckY===i&&this.lastCheckScale===t)return;this.lastCheckX=e,this.lastCheckY=i,this.lastCheckScale=t;const n=-e/t,r=-i/t,o=(this.app.screen.width-e)/t,a=(this.app.screen.height-i)/t,l=Math.floor(n/at)-1,h=Math.ceil(o/at),c=Math.floor(r/at)-1,u=Math.ceil(a/at);this.lastVisibleBounds={rxMin:l,rxMax:h,ryMin:c,ryMax:u};const d=[];for(let p=l;p<=h;p++)for(let g=c;g<=u;g++){const m=ds(p,g);m&&d.push(m)}const f=`${l},${c},${h},${u}`;f!==this.lastVisibleKey&&(this.lastVisibleKey=f,this.visibleDebounceTimer!==null&&clearTimeout(this.visibleDebounceTimer),this.visibleDebounceTimer=setTimeout(()=>{this.visibleDebounceTimer=null,this.callbacks.onVisibleRoomsChanged(d)},QT))}}const[px,WT]=Y("owner");var GT=W("<div style=width:100%;height:100%;position:relative><canvas style=display:block>");const{log:wa,error:Ng}=ns("map");function YT(s){let t,e=null;const[i,n]=Y([]),[r,o]=Y(1),a=()=>s.originRoom,[l,h]=Y(a()??null);let c=null,u=null;const d=new Map,f=new Map,p=new Map,g=S=>{const y=Mn();if(!y)return!0;const _=be(S);return!!_&&cf(_.x,_.y,y)},m=S=>{var _;const y=f.get(S);return{room:S,owner:(y==null?void 0:y.username)??((_=y==null?void 0:y.own)!=null&&_.user?`user:${y.own.user}`:null),mineral:(y==null?void 0:y.mineral)??null,density:(y==null?void 0:y.density)??null}},O=200,x=0;let b=[],v=null;const w=()=>{v=null;const S=St();if(!S||!e)return;const y=new Set(i());if(b=b.filter(k=>y.has(k)&&!e.hasRoom(k)),b.length===0)return;const _=b.splice(0,O);S.stores.room.terrainBulk(_,s.shard).then(k=>{for(const[P,T]of k)e==null||e.setRoomTerrain(P,T)}).catch(k=>Ng("terrain fetch failed:",k)).finally(()=>{b.length>0&&(v=setTimeout(w,x))})};return gt(()=>{St(),s.shard,f.clear()}),un(()=>{t&&(async()=>{var y,_;if(e=new zT({onRoomHover:k=>{var P;(P=s.onHoveredRoomChanged)==null||P.call(s,k?m(k):null)},onRoomClick:k=>{var P;l()!==k?(h(k),e==null||e.setSelectedRoom(k),(P=s.onSelectedRoomChanged)==null||P.call(s,m(k))):g(k)&&setTimeout(()=>s.onNavigateToRoom(k),0)},onVisibleRoomsChanged:k=>{const P=k.length===0;u!==P&&(u=P,P||wa(`zoom in — terrain loading active, ${k.length} rooms visible`)),n(k)},onZoomChanged:k=>{var P;o(k),(P=s.onZoomChanged)==null||P.call(s,k)}}),await e.init(t),!e)return;s.initialZoom!==void 0&&s.initialZoom>0&&e.setZoom(s.initialZoom),(y=s.onZoomChanged)==null||y.call(s,e.zoom);const S=Mn();if(S&&e.setBounds(S.minX,S.maxX,S.minY,S.maxY),s.originRoom){const k=be(s.originRoom);k&&e.centerOn(k.x,k.y),e.setSelectedRoom(s.originRoom),(_=s.onSelectedRoomChanged)==null||_.call(s,m(s.originRoom))}else{const k=St();if(k)try{const P=await k.http.user.worldStartRoom(s.shard??"shard0");if(!e)return;const T=Array.isArray(P==null?void 0:P.room)?P.room[0]:P==null?void 0:P.room;if(typeof T=="string"){const $=be(T);$&&e.centerOn($.x,$.y)}}catch(P){Ng("worldStartRoom failed:",P)}}})()}),de(()=>{v!==null&&(clearTimeout(v),v=null),b=[];for(const S of d.values())S.dispose();d.clear(),e==null||e.destroy(),e=null}),gt(()=>{cx({currentRoom:l,worldBounds:Mn,onMove:(_,k)=>{var T,$;const P=ds(_,k);h(P),e==null||e.setSelectedRoom(P),e==null||e.centerOn(_,k,!0),(T=s.onSelectedRoomChanged)==null||T.call(s,m(P)),($=s.onHoveredRoomChanged)==null||$.call(s,m(P))}});const y=_=>{var T,$;const k=((T=_.target)==null?void 0:T.tagName)??"",P=(($=_.target)==null?void 0:$.isContentEditable)??!1;if(!(k==="INPUT"||k==="TEXTAREA"||P)&&_.key==="m"){const A=l();A&&g(A)&&s.onNavigateToRoom(A)}};window.addEventListener("keydown",y),de(()=>window.removeEventListener("keydown",y))}),gt(()=>{var $;const S=St(),y=i(),_=s.shard;if(!S||y.length===0)return;const k=new Set(y),P=y.filter(A=>!(e!=null&&e.hasRoom(A)));if(P.length>0){const A=y.reduce((B,E)=>{var I;return B+(((I=be(E))==null?void 0:I.x)??0)},0)/y.length,C=y.reduce((B,E)=>{var I;return B+(((I=be(E))==null?void 0:I.y)??0)},0)/y.length;b=P.slice().sort((B,E)=>{const I=be(B),V=be(E),Z=I?Math.abs(I.x-A)+Math.abs(I.y-C):999,N=V?Math.abs(V.x-A)+Math.abs(V.y-C):999;return Z-N}),v===null&&(v=setTimeout(w,0))}S.stores.mapStats.request(y,"owner0",_??void 0);const T=r()>=.4;if(T!==c&&(c=T,($=s.onSubscriptionStateChanged)==null||$.call(s,T),T||e==null||e.clearAllMap2()),T){const A=new Set(y.map(C=>`${C}/${_}`));for(const[C,B]of d)A.has(C)||(B.dispose(),d.delete(C),e==null||e.clearRoomMap2(C.split("/")[0]));for(const C of y){const B=`${C}/${_}`;d.has(B)||d.set(B,S.stores.map.subscribeMap2(C,_))}}else{for(const[,A]of d)A.dispose();d.clear()}e==null||e.clearInvisibleRooms(k)}),gt(()=>{e==null||e.setShowRoomNames(hf()),e&&(e.currentShard=s.shard??"shard0")}),gt(()=>{e==null||e.setOverlayMode(px())}),gt(()=>{const S=St(),y=s.shard;S&&S.stores.server.worldInfo(y??void 0).then(_=>{wa(`worldInfo(shard=${y??"none"}) — x: [${_.minX}, ${_.maxX}] y: [${_.minY}, ${_.maxY}]`),Xd(_)}).catch(_=>{})}),gt(()=>{var S;e==null||e.setCurrentUser(((S=fo())==null?void 0:S._id)??null)}),gt(()=>{const S=Mn();S?(e==null||e.setBounds(S.minX,S.maxX,S.minY,S.maxY),wa(`worldBounds applied — shard: ${s.shard??"none"} x: [${S.minX}, ${S.maxX}] y: [${S.minY}, ${S.maxY}] (fetched for shard: ${S.shard??"none"})`)):(e==null||e.clearBounds(),wa(`worldBounds — none (shard: ${s.shard??"none"})`))}),gt(()=>{const S=St();if(!S)return;const y=S.stores.map.on("room:map2update",({room:_,shard:k,data:P,source:T})=>{k===s.shard&&(e==null||e.setRoomMap2(_,P,T))});de(()=>y.dispose())}),gt(()=>{var P;const S=St();if(!S)return;const y=(P=fo())==null?void 0:P._id,_=new Set(i()),k=S.stores.mapStats.on("mapStats:room",({room:T,stat:$})=>{var E,I;f.set(T,$);const A=!!($.own&&$.own.user!==y);_.has(T)&&(e==null||e.setRoomOwned(T,A),e==null||e.setRoomSafeMode(T,!!$.safeMode)),e==null||e.setRoomMineral(T,$.mineral,$.density);const C=$.badge?JSON.stringify($.badge):"";p.get(T)!==C&&(p.set(T,C),e==null||e.setRoomBadge(T,$.badge,(E=$.own)==null?void 0:E.level)),l()===T&&((I=s.onSelectedRoomChanged)==null||I.call(s,m(T)))});de(()=>k.dispose())}),(()=>{var S=GT(),y=S.firstChild;return Us(_=>t=_,y),S})()}var NT=W("<div style=position:fixed;bottom:16px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:9999;pointer-events:none>"),VT=W('<div style="padding:10px 16px;border-radius:6px;font-size:13px;color:#fff;box-shadow:0 4px 12px rgba(0,0,0,0.4);max-width:320px;word-break:break-word;pointer-events:auto;animation:toast-in 0.2s ease">');function FT(){return(()=>{var s=NT();return L(s,G(oe,{get each(){return KS()},children:t=>(()=>{var e=VT();return L(e,()=>t.message),J(i=>tt(e,"background",t.type==="error"?"#da3633":"#238636")),e})()})),s})()}const[Qr,qT]=Y(!0),[xn,jT]=Y(!0);function gx(){qT(s=>!s)}function mx(){jT(s=>!s)}var UT=W("<div style=overflow:auto;padding:8px>"),HT=W("<div style=width:4px;flex-shrink:0;cursor:col-resize>"),KT=W('<div style=flex:1;display:flex;flex-direction:column;overflow:hidden><div style=flex:1;overflow:auto;padding:8px></div><form style="display:flex;gap:6px;padding:8px;border-top:1px solid #30363d"><span style=color:#8b949e;font-size:13px;line-height:28px>></span><input type=text placeholder="Game.creeps.Harvester1.moveTo(10, 10)"style="flex:1;padding:6px 8px;border-radius:4px;border:1px solid #30363d;background:#161b22;color:#c9d1d9;font-size:12px;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace"><button type=submit style="padding:6px 12px;border-radius:4px;border:none;background:#238636;color:#fff;font-size:12px;cursor:pointer">Run'),JT=W("<div style=flex:1;display:flex;overflow:hidden>"),t2=W('<div style=display:flex;flex-direction:column;height:100%;background:#0d1117><div style="height:32px;flex-shrink:0;padding:0 10px;border-bottom:1px solid #30363d;display:flex;align-items:center;gap:6px"><button>Log</button><button>Console</button><div style=margin-left:auto><button style=background:transparent;border:none;color:#8b949e;font-size:11px;cursor:pointer>Clear'),e2=W("<div style=color:#484f58;font-style:italic>No log output yet…"),i2=W("<div style=margin-bottom:4px;color:#f85149;white-space:pre-wrap;word-break:break-word>"),s2=W("<div style=margin-bottom:4px;color:#c9d1d9;white-space:pre-wrap;word-break:break-word>"),n2=W("<div style=color:#484f58;font-style:italic>No command results yet…"),r2=W("<div style=margin-bottom:4px;color:#58a6ff;white-space:pre-wrap;word-break:break-word>");const{error:o2}=ns("console");function a2(s){const[t,e]=Y([]),[i,n]=Y(""),[r,o]=Y(!0),[a,l]=Y(Br(ee.consoleSplit,50)),[h,c]=Y(!1);let u,d,f,p=0;un(()=>{const y=St();if(!y)return;const _=new Dd;_.add(y.stores.user.subscribe("console")),_.add(y.stores.user.on("user:console",k=>{const P=k.messages,T={id:p++,log:P.log??[],results:P.results??[],error:P.error??[]};e($=>{const A=[...$,T];return A.length>200?A.slice(A.length-200):A})})),de(()=>_.dispose())}),gt(()=>{t(),r()&&requestAnimationFrame(()=>{Qr()&&u&&(u.scrollTop=u.scrollHeight),xn()&&d&&(d.scrollTop=d.scrollHeight)})});const g=(y,_)=>{var P,T;const k=!y&&!_;k&&!s.isCollapsed&&((P=s.onToggle)==null||P.call(s)),!k&&s.isCollapsed&&((T=s.onToggle)==null||T.call(s))};gt(()=>{g(Qr(),xn())});const m=y=>{y.preventDefault(),c(!0);const k=f.getBoundingClientRect(),P=$=>{const A=($.clientX-k.left)/k.width*100,C=Math.max(15,Math.min(85,A));l(C),Na(ee.consoleSplit,C)},T=()=>{c(!1),window.removeEventListener("pointermove",P),window.removeEventListener("pointerup",T)};window.addEventListener("pointermove",P),window.addEventListener("pointerup",T)},O=async y=>{y.preventDefault();const _=St();if(!(!_||!i().trim()))try{await _.http.user.console(i().trim(),s.shard??"shard0"),n("")}catch(k){o2("command failed:",k)}},x=y=>({background:y?"#30363d":"transparent",border:`1px solid ${y?"#58a6ff":"transparent"}`,color:y?"#c9d1d9":"#8b949e","font-size":"12px",cursor:"pointer",padding:"2px 10px","border-radius":"4px"}),b=()=>t().flatMap(y=>y.log),v=()=>t().flatMap(y=>y.error),w=()=>t().flatMap(y=>y.results),S={"font-family":"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace","font-size":"12px","line-height":"1.5"};return(()=>{var y=t2(),_=y.firstChild,k=_.firstChild,P=k.nextSibling,T=P.nextSibling,$=T.firstChild;return fl(k,"click",gx,!0),fl(P,"click",mx,!0),$.$$click=()=>e([]),L(y,G(ot,{get when(){return!s.isCollapsed},get children(){var A=JT();return Us(C=>f=C,A),L(A,G(ot,{get when(){return Qr()},get children(){var C=UT();C.addEventListener("scroll",()=>{u&&o(u.scrollHeight-u.scrollTop-u.clientHeight<20)});var B=u;return typeof B=="function"?Us(B,C):u=C,L(C,(()=>{var E=Bt(()=>b().length===0&&v().length===0);return()=>E()&&e2()})(),null),L(C,G(oe,{get each(){return v()},children:E=>(()=>{var I=i2();return I.innerHTML=E,I})()}),null),L(C,G(oe,{get each(){return b()},children:E=>(()=>{var I=s2();return I.innerHTML=E,I})()}),null),J(E=>se(C,{...xn()?{width:`${a()}%`,"flex-shrink":0}:{flex:1},...S},E)),C}}),null),L(A,G(ot,{get when(){return Bt(()=>!!Qr())()&&xn()},get children(){var C=HT();return C.$$pointerdown=m,J(B=>tt(C,"background",h()?"#388bfd":"#21262d")),C}}),null),L(A,G(ot,{get when(){return xn()},get children(){var C=KT(),B=C.firstChild,E=B.nextSibling,I=E.firstChild,V=I.nextSibling;V.nextSibling,B.addEventListener("scroll",()=>{d&&o(d.scrollHeight-d.scrollTop-d.clientHeight<20)});var Z=d;return typeof Z=="function"?Us(Z,B):d=B,L(B,(()=>{var N=Bt(()=>w().length===0);return()=>N()&&n2()})(),null),L(B,G(oe,{get each(){return w()},children:N=>(()=>{var z=r2();return z.innerHTML=N,z})()}),null),E.addEventListener("submit",O),V.$$input=N=>n(N.currentTarget.value),J(N=>se(B,{...S},N)),J(()=>V.value=i()),C}}),null),J(C=>tt(A,"user-select",h()?"none":"auto")),A}}),null),J(A=>{var C=x(Qr()),B=x(xn());return A.e=se(k,C,A.e),A.t=se(P,B,A.t),A},{e:void 0,t:void 0}),y})()}Ne(["click","pointerdown","input"]);var l2=W('<div style="display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#21262d;font-size:10px">'),h2=W('<div style="padding:3px 8px;background:#0d1117;color:#8b949e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">'),c2=W('<div style="padding:3px 8px;background:#0d1117;color:#c9d1d9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums">'),u2=W('<div style="background:#21262d;border-top:1px solid #30363d;font-size:10px"><div style="padding:4px 8px;background:#161b22;color:#8b949e;font-weight:600">Store Contents</div><div style="display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#21262d">'),d2=W('<div style="padding:3px 8px;background:#0d1117;color:#8b949e">'),f2=W('<div style="padding:3px 8px;background:#0d1117;color:#c9d1d9;font-variant-numeric:tabular-nums">'),p2=W('<div style=padding:8px;display:flex;flex-direction:column;gap:8px;background:#0d1117><label>Primary color<select></select></label><label>Secondary color<select></select></label><button style="color:#fff;border:none;border-radius:4px;padding:6px 8px;font-size:12px;transition:opacity 150ms ease, background 150ms ease">Apply color</button><button style="color:#fff;border:none;border-radius:4px;padding:6px 8px;font-size:12px;cursor:pointer;transition:background 150ms ease"></button><button style="color:#fff;border:none;border-radius:4px;padding:6px 8px;font-size:12px;cursor:pointer;margin-top:4px;transition:background 150ms ease">'),Vg=W("<option>"),g2=W('<div style="border-radius:6px;border:1px solid #30363d;margin-bottom:6px;overflow:hidden"><div style="display:flex;align-items:center;gap:7px;padding:6px 8px;background:#161b22;border-bottom:1px solid #21262d"><div style=width:8px;height:8px;border-radius:50%;flex-shrink:0></div><span style=font-size:11px;font-weight:600;color:#c9d1d9;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap></span><span style=font-size:10px;color:#484f58;flex-shrink:0;margin-right:2px>(<!>,<!>)</span><button title=Deselect style="background:transparent;border:none;color:#8b949e;cursor:pointer;padding:0 4px;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center">×'),m2=W("<span style=font-weight:400;color:#8b949e;margin-left:5px>"),O2=W("<div style=flex:1;overflow:auto;min-height:0;padding:8px>"),y2=W("<div style=color:#484f58;font-style:italic;font-size:12px>Click a tile to select objects…");const{log:Fg,error:x2}=ns("SelectionList"),b2={creep:"#f0883e",spawn:"#58a6ff",extension:"#79c0ff",tower:"#3fb950",container:"#8b949e",storage:"#d29922",link:"#a371f7",rampart:"#58a6ff",road:"#484f58",wall:"#21262d",extractor:"#8b949e",lab:"#f778ba",terminal:"#d29922",observer:"#79c0ff",powerSpawn:"#f0883e",nuker:"#f85149",factory:"#8b949e",invaderCore:"#f85149",source:"#d29922",mineral:"#79c0ff",deposit:"#d29922",controller:"#58a6ff",powerBank:"#f0883e",portal:"#a371f7",energy:"#d29922"},w2={creep:"Creep",spawn:"Spawn",extension:"Extension",tower:"Tower",container:"Container",storage:"Storage",link:"Link",rampart:"Rampart",road:"Road",wall:"Wall",extractor:"Extractor",lab:"Lab",terminal:"Terminal",observer:"Observer",powerSpawn:"Power Spawn",nuker:"Nuker",factory:"Factory",invaderCore:"Invader Core",source:"Source",mineral:"Mineral",deposit:"Deposit",controller:"Controller",powerBank:"Power Bank",portal:"Portal",energy:"Energy",flag:"Flag"},S2=new Set(["x","y","type","id","name","user","_id","room","hitsMax","energyCapacity"]),qg=new Set(["hits","energy","energyCapacity","store","progress","progressTotal","nextDecayTime"]);function v2(s){return typeof s=="number"?String(s):typeof s=="string"?s:typeof s=="boolean"?s?"yes":"no":null}function Ox(s){const t=()=>{const e=s.item.raw,i=[];for(const n in e){if(S2.has(n))continue;const r=e[n],o=n;let a=v2(r);if(n==="hits"&&typeof e.hitsMax=="number"&&(a=`${r} / ${e.hitsMax}`),n==="energy"&&typeof e.energyCapacity=="number"&&(a=`${r} / ${e.energyCapacity}`),n==="nextDecayTime"&&typeof r=="number"){const l=pl();l!==null&&(a=String(r-l))}a!==null&&i.push({key:o,value:a})}return i.sort((n,r)=>{const o=qg.has(n.key)?0:1,a=qg.has(r.key)?0:1;return o-a}),i};return G(ot,{get when(){return t().length>0},get children(){var e=l2();return L(e,G(oe,{get each(){return t()},children:i=>[(()=>{var n=h2();return L(n,()=>i.key),n})(),(()=>{var n=c2();return L(n,()=>i.value),n})()]})),e}})}function _2(s){const t=()=>{const e=s.store||{},i=[];for(const n in e)i.push([n,e[n]]);return i};return G(ot,{get when(){return t().length>0},get children(){var e=u2(),i=e.firstChild,n=i.nextSibling;return L(n,G(oe,{get each(){return t()},children:([r,o])=>[(()=>{var a=d2();return L(a,r),a})(),(()=>{var a=f2();return L(a,o),a})()]})),e}})}function k2(s){const t=()=>s.item.raw.store;return[G(Ox,{get item(){return s.item}}),G(_2,{get store(){return t()}})]}const jg=[{label:"Red",value:1},{label:"Purple",value:2},{label:"Blue",value:3},{label:"Cyan",value:4},{label:"Green",value:5},{label:"Yellow",value:6},{label:"Orange",value:7},{label:"Brown",value:8},{label:"Grey",value:9},{label:"White",value:10}];function $2(s){const t=()=>s.item.raw,e=()=>typeof t().name=="string"?t().name:"",i=()=>typeof t().room=="string"?t().room:"",n=()=>typeof t().color=="number"?t().color:1,r=()=>typeof t().secondaryColor=="number"?t().secondaryColor:1,[o,a]=Y(n()),[l,h]=Y(r());gt(()=>{a(n()),h(r())});const c=()=>o()!==n()||l()!==r(),u=()=>{const v=St();if(!v)return;const w=o(),S=l();Fg(`changeFlagColor: name="${e()}" room=${i()} primary=${w} secondary=${S}`),v.http.game.changeFlagColor(i(),e(),w,S).then(()=>Fg("changeFlagColor OK")).catch(y=>x2("changeFlagColor FAILED:",y))},d=()=>{const v=uf();return(v==null?void 0:v.type)==="moveFlag"&&v.id===s.item.id},f=()=>{if(d()){Bu(null);return}Bu({type:"moveFlag",id:s.item.id,name:e(),room:i(),color:o(),secondaryColor:l()})},[p,g]=Y(!1);let m=null;const O=()=>{if(!p()){g(!0),m=setTimeout(()=>{g(!1)},3e3);return}m&&(clearTimeout(m),m=null),g(!1);const v=St();if(!v)return;const w=s.item.id;v.http.game.removeFlag(i(),e()).then(()=>{lx(w)}).catch(()=>{})},x={background:"#010409",color:"#c9d1d9",border:"1px solid #30363d","border-radius":"4px",padding:"5px 6px","font-size":"12px",width:"100%"},b={display:"flex","flex-direction":"column",gap:"4px","font-size":"11px",color:"#8b949e"};return(()=>{var v=p2(),w=v.firstChild,S=w.firstChild,y=S.nextSibling,_=w.nextSibling,k=_.firstChild,P=k.nextSibling,T=_.nextSibling,$=T.nextSibling,A=$.nextSibling;return y.addEventListener("change",C=>a(Number(C.currentTarget.value))),L(y,G(oe,{each:jg,children:C=>(()=>{var B=Vg();return L(B,()=>C.label),J(()=>B.value=C.value),B})()})),P.addEventListener("change",C=>h(Number(C.currentTarget.value))),L(P,G(oe,{each:jg,children:C=>(()=>{var B=Vg();return L(B,()=>C.label),J(()=>B.value=C.value),B})()})),T.addEventListener("mouseleave",C=>{c()&&(C.currentTarget.style.background="#238636")}),T.addEventListener("mouseenter",C=>{c()&&(C.currentTarget.style.background="#2ea043")}),T.$$click=u,$.addEventListener("mouseleave",C=>{d()||(C.currentTarget.style.background="#d29922")}),$.addEventListener("mouseenter",C=>{d()||(C.currentTarget.style.background="#e3b341")}),$.$$click=f,L($,()=>d()?"Abort":"Move flag"),A.addEventListener("mouseleave",C=>{p()||(C.currentTarget.style.background="#f85149")}),A.addEventListener("mouseenter",C=>{p()||(C.currentTarget.style.background="#da3633")}),A.$$click=O,L(A,()=>p()?"Confirm deletion":"Delete flag"),J(C=>{var B=b,E=x,I=b,V=x,Z=!c(),N=c()?"#238636":"#1f6feb",z=c()?"pointer":"not-allowed",X=c()?1:.6,H=d()?"#8b949e":"#d29922",K=p()?"#da3633":"#f85149";return C.e=se(w,B,C.e),C.t=se(y,E,C.t),C.a=se(_,I,C.a),C.o=se(P,V,C.o),Z!==C.i&&(T.disabled=C.i=Z),N!==C.n&&tt(T,"background",C.n=N),z!==C.s&&tt(T,"cursor",C.s=z),X!==C.h&&tt(T,"opacity",C.h=X),H!==C.r&&tt($,"background",C.r=H),K!==C.d&&tt(A,"background",C.d=K),C},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0}),J(()=>y.value=o()),J(()=>P.value=l()),v})()}const C2={creep:k2,flag:$2};function P2(s){const t=()=>b2[s.item.type]??"#c9d1d9",e=()=>w2[s.item.type]??s.item.type,i=()=>C2[s.item.type]||Ox;return(()=>{var n=g2(),r=n.firstChild,o=r.firstChild,a=o.nextSibling,l=a.nextSibling,h=l.firstChild,c=h.nextSibling,u=c.nextSibling,d=u.nextSibling;d.nextSibling;var f=l.nextSibling;return L(a,e,null),L(a,G(ot,{get when(){return Bt(()=>typeof s.item.raw.name=="string")()&&s.item.raw.name},children:p=>(()=>{var g=m2();return L(g,()=>p()),g})()}),null),L(l,()=>s.item.raw.x,c),L(l,()=>s.item.raw.y,d),f.addEventListener("mouseleave",p=>p.currentTarget.style.color="#8b949e"),f.addEventListener("mouseenter",p=>p.currentTarget.style.color="#fff"),f.$$click=()=>lx(s.item.id),L(n,G(pS,{get component(){return i()},get item(){return s.item}}),null),J(p=>tt(o,"background",t())),n})()}function T2(){return(()=>{var s=O2();return L(s,G(ot,{get when(){return Sl().length>0},get fallback(){return y2()},get children(){return G(oe,{get each(){return Sl()},children:t=>G(P2,{item:t})})}})),s})()}Ne(["click"]);var M2=W('<div style="padding:8px;border-bottom:1px solid #30363d;flex-shrink:0"><div style="padding:4px 8px;background:#161b22;border-radius:6px;border:1px solid #30363d"><div style=font-size:10px;font-weight:600;color:#8b949e;text-transform:uppercase;letter-spacing:0.04em;margin-bottom:4px> Room</div><div style=font-size:13px;font-weight:600;color:#c9d1d9></div><div style="display:grid;grid-template-columns:auto 1fr;row-gap:1px;margin-top:4px;font-size:11px"><div style="padding:3px 0;color:#8b949e">Shard</div><div style="padding:3px 0;color:#c9d1d9"></div><div style="padding:3px 0;color:#8b949e">Tick</div><div style="padding:3px 0;color:#c9d1d9"></div><div style="padding:3px 0;color:#8b949e">Tick duration</div><div style="padding:3px 0;color:#c9d1d9"></div><div style="padding:3px 0;color:#8b949e">Objects</div><div style="padding:3px 0;color:#c9d1d9"></div><div style="padding:3px 0;color:#8b949e">Owner</div><div style="padding:3px 0;color:#c9d1d9"></div></div></div><div style="display:grid;grid-template-columns:repeat(3, 1fr);gap:4px;margin-top:8px">'),A2=W('<button type=button style="padding:5px 8px;border-radius:6px;cursor:pointer;font-size:11px;font-weight:600">');const Q2=[{mode:"view",label:"View"},{mode:"flag",label:"Flag"},{mode:"build",label:"Build"}];function R2(s){return(()=>{var t=M2(),e=t.firstChild,i=e.firstChild,n=i.nextSibling,r=n.nextSibling,o=r.firstChild,a=o.nextSibling,l=a.nextSibling,h=l.nextSibling,c=h.nextSibling,u=c.nextSibling,d=u.nextSibling,f=d.nextSibling,p=f.nextSibling,g=p.nextSibling,m=e.nextSibling;return L(n,()=>s.room),L(a,()=>s.shard??"—"),L(h,()=>pl()??"—"),L(u,(()=>{var O=Bt(()=>!!tu());return()=>O()?`${tu()}ms`:"—"})()),L(f,()=>cT()??"—"),L(g,()=>{var O;return((O=uT())==null?void 0:O.username)??"—"}),L(m,G(oe,{each:Q2,children:O=>{const x=()=>on()===O.mode;return(()=>{var b=A2();return b.$$click=()=>Nn(O.mode),L(b,()=>O.label),J(v=>{var w=`1px solid ${x()?"#58a6ff":"#30363d"}`,S=x()?"#1f6feb33":"#161b22",y=x()?"#c9d1d9":"#8b949e";return w!==v.e&&tt(b,"border",v.e=w),S!==v.t&&tt(b,"background",v.t=S),y!==v.a&&tt(b,"color",v.a=y),v},{e:void 0,t:void 0,a:void 0}),b})()}})),t})()}Ne(["click"]);var E2=W('<div style="padding:8px;border-bottom:1px solid #30363d;flex-shrink:0"><div style="padding:4px 8px;background:#161b22;border-radius:6px;border:1px solid #30363d"><div style=font-size:10px;font-weight:600;color:#8b949e;text-transform:uppercase;letter-spacing:0.04em;margin-bottom:4px>Map</div><div style="display:grid;grid-template-columns:auto 1fr;row-gap:1px;font-size:11px;margin-bottom:8px"><div style="padding:3px 0;color:#8b949e">Zoom</div><div style="padding:3px 0;color:#c9d1d9"></div><div style="padding:3px 0;color:#8b949e">Live</div><div style="padding:3px 0;color:#c9d1d9"></div></div><label style=display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#c9d1d9;cursor:pointer><span>Show room names</span><input type=checkbox></label></div><div style="display:grid;grid-template-columns:repeat(3, 1fr);gap:4px;margin-top:8px">'),L2=W('<button type=button style="padding:5px 8px;border-radius:6px;cursor:pointer;font-size:11px;font-weight:600">');const I2=[{mode:"owner",label:"Owner"},{mode:"mineral",label:"Mineral"},{mode:"none",label:"None"}];function Z2(s){return(()=>{var t=E2(),e=t.firstChild,i=e.firstChild,n=i.nextSibling,r=n.firstChild,o=r.nextSibling,a=o.nextSibling,l=a.nextSibling,h=n.nextSibling,c=h.firstChild,u=c.nextSibling,d=e.nextSibling;return L(o,()=>{var f;return((f=s.zoom)==null?void 0:f.toFixed(2))??"—"}),L(l,()=>s.subsActive?"Yes":"No"),u.addEventListener("change",f=>ix(f.currentTarget.checked)),L(d,G(oe,{each:I2,children:f=>{const p=()=>px()===f.mode;return(()=>{var g=L2();return g.$$click=()=>WT(f.mode),L(g,()=>f.label),J(m=>{var O=`1px solid ${p()?"#58a6ff":"#30363d"}`,x=p()?"#1f6feb33":"#161b22",b=p()?"#c9d1d9":"#8b949e";return O!==m.e&&tt(g,"border",m.e=O),x!==m.t&&tt(g,"background",m.t=x),b!==m.a&&tt(g,"color",m.a=b),m},{e:void 0,t:void 0,a:void 0}),g})()}})),J(()=>u.checked=hf()),t})()}Ne(["click"]);var D2=W('<div style="margin:8px 8px 0;border-radius:6px;overflow:hidden"><div style="padding:4px 8px;background:#161b22;border-bottom:1px solid #21262d;font-size:10px;font-weight:600;color:#8b949e;text-transform:uppercase;letter-spacing:0.04em">'),B2=W('<div style="padding:6px 8px;font-size:11px;color:#484f58;font-style:italic">None'),X2=W('<div style="padding:3px 8px;color:#8b949e">Mineral'),z2=W('<div style="padding:3px 8px;color:#79c0ff">'),W2=W('<div style="padding:3px 8px;color:#8b949e">Density'),G2=W('<div style="padding:3px 8px;color:#c9d1d9">'),Y2=W('<div style=font-size:11px><div style="padding:5px 8px;font-weight:600;color:#c9d1d9;font-size:12px;border-bottom:1px solid #21262d"></div><div style="display:grid;grid-template-columns:auto 1fr;row-gap:1px;column-gap:0"><div style="padding:3px 8px;color:#8b949e">Owner</div><div style="padding:3px 8px;color:#c9d1d9">');const N2=["Low","Medium","High","Ultra"];function V2(s){return N2[s-1]??String(s)}function Ug(s){return(()=>{var t=D2(),e=t.firstChild;return L(e,()=>s.label),L(t,G(ot,{get when(){return s.info},get fallback(){return B2()},children:i=>(()=>{var n=Y2(),r=n.firstChild,o=r.nextSibling,a=o.firstChild,l=a.nextSibling;return L(r,()=>i().room),L(l,()=>i().owner??"None"),L(o,G(ot,{get when(){return i().mineral},get children(){return[X2(),(()=>{var h=z2();return L(h,()=>i().mineral),h})(),W2(),(()=>{var h=G2();return L(h,()=>V2(i().density??0)),h})()]}}),null),n})()}),null),J(i=>{var n=`1px solid ${s.dim?"#21262d":"#30363d"}`,r=s.dim?.6:1;return n!==i.e&&tt(t,"border",i.e=n),r!==i.t&&tt(t,"opacity",i.t=r),i},{e:void 0,t:void 0}),t})()}var F2=W("<span style=color:#8b949e;font-size:11px>Checking…"),q2=W('<div style=margin-top:8px><div style="padding:6px 8px;font-size:11px;font-weight:600;color:#c9d1d9;margin-bottom:6px">Your flags'),j2=W('<div style=flex:1;overflow:auto;min-height:0;padding:8px><div style="border-radius:6px;border:1px solid #30363d;overflow:hidden;background:#0d1117"><div style="padding:6px 8px;background:#161b22;border-bottom:1px solid #21262d;font-size:11px;font-weight:600;color:#c9d1d9">Create flag</div><div style=padding:8px;display:flex;flex-direction:column;gap:8px><label style=display:flex;flex-direction:column;gap:4px;font-size:11px;color:#8b949e>Name<input placeholder="Flag name"style="background:#010409;color:#c9d1d9;border-radius:4px;padding:5px 6px;font-size:12px"></label><label style=display:flex;flex-direction:column;gap:4px;font-size:11px;color:#8b949e>Primary color<select style="background:#010409;color:#c9d1d9;border:1px solid #30363d;border-radius:4px;padding:5px 6px;font-size:12px"></select></label><label style=display:flex;flex-direction:column;gap:4px;font-size:11px;color:#8b949e>Secondary color<select style="background:#010409;color:#c9d1d9;border:1px solid #30363d;border-radius:4px;padding:5px 6px;font-size:12px"></select></label><div style=color:#484f58;font-size:11px;line-height:1.4>'),U2=W("<span style=color:#f85149;font-size:11px>"),Hg=W("<option>"),H2=W("<div style=margin-top:8px;color:#484f58;font-style:italic;font-size:12px>No flags."),K2=W('<div style="border-radius:6px;border:1px solid #30363d;margin-bottom:6px;overflow:hidden"><div style="display:flex;align-items:center;gap:7px;padding:6px 8px;background:#161b22;border-bottom:1px solid #21262d"><div style=width:8px;height:8px;border-radius:50%;flex-shrink:0></div><span style=font-size:11px;font-weight:600;color:#c9d1d9;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap></span><span style=font-size:10px;color:#8b949e;flex-shrink:0></span><span style=font-size:10px;color:#484f58;flex-shrink:0;margin-left:4px>(<!>,<!>)');const{error:J2}=ns("flag"),Kg=["COLOR_WHITE","COLOR_GREY","COLOR_RED","COLOR_PURPLE","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_YELLOW","COLOR_ORANGE","COLOR_BROWN"];function tM(){const s=h=>{ux({...kn(),...h})},[t,e]=Y(null),[i,n]=Y(!1);let r=null;gt(()=>{if(on()!=="flag"||kn().name.trim()!=="")return;const h=St();h&&h.http.game.genUniqueFlagName().then(c=>{s({name:c.name}),e(null)}).catch(c=>{J2("gen unique name failed:",c)})});const o=h=>{s({name:h}),e(null),r&&clearTimeout(r);const c=h.trim();if(!c){n(!1);return}n(!0),r=setTimeout(()=>{const u=St();if(!u){n(!1);return}u.http.game.checkUniqueFlagName(c).then(()=>{e(null)}).catch(d=>{e(d.message)}).finally(()=>{n(!1)})},300)},a=()=>{const h=sv(),c=[];for(const[u,d]of Object.entries(h))d&&typeof d=="object"&&"room"in d&&"x"in d&&"y"in d&&c.push([u,d]);return c},l=h=>h===void 0||h<0||h>=Ln.length?"#8b949e":`#${Ln[h].toString(16).padStart(6,"0")}`;return(()=>{var h=j2(),c=h.firstChild,u=c.firstChild,d=u.nextSibling,f=d.firstChild,p=f.firstChild,g=p.nextSibling,m=f.nextSibling,O=m.firstChild,x=O.nextSibling,b=m.nextSibling,v=b.firstChild,w=v.nextSibling,S=b.nextSibling;return g.$$input=y=>o(y.currentTarget.value),L(f,G(ot,{get when(){return t()},children:y=>(()=>{var _=U2();return L(_,y),_})()}),null),L(f,G(ot,{get when(){return i()},get children(){return F2()}}),null),x.addEventListener("change",y=>s({color:y.currentTarget.value})),L(x,G(oe,{each:Kg,children:y=>(()=>{var _=Hg();return _.value=y,L(_,()=>y.replace("COLOR_","")),_})()})),w.addEventListener("change",y=>s({secondaryColor:y.currentTarget.value})),L(w,G(oe,{each:Kg,children:y=>(()=>{var _=Hg();return _.value=y,L(_,()=>y.replace("COLOR_","")),_})()})),L(S,(()=>{var y=Bt(()=>!!Ks());return()=>y()?`Marked at x=${Ks().tx}, y=${Ks().ty}. Click again to create the flag, or click elsewhere to move the mark.`:"Click a position in the room to mark it."})()),L(h,G(ot,{get when(){return a().length>0},get fallback(){return H2()},get children(){var y=q2();return y.firstChild,L(y,G(oe,{get each(){return a()},children:([_,k])=>(()=>{var P=K2(),T=P.firstChild,$=T.firstChild,A=$.nextSibling,C=A.nextSibling,B=C.nextSibling,E=B.firstChild,I=E.nextSibling,V=I.nextSibling,Z=V.nextSibling;return Z.nextSibling,L(A,_),L(C,()=>k.room),L(B,()=>k.x,I),L(B,()=>k.y,Z),J(N=>tt($,"background",l(k.color))),P})()}),null),y}}),null),J(y=>tt(g,"border",`1px solid ${t()?"#f85149":"#30363d"}`)),J(()=>g.value=kn().name),J(()=>x.value=kn().color),J(()=>w.value=kn().secondaryColor),h})()}Ne(["input"]);var eM=W('<div style=flex:1;overflow:auto;min-height:0;padding:8px><div style="border-radius:6px;border:1px solid #30363d;overflow:hidden;background:#0d1117;margin-bottom:8px"><div style="padding:6px 8px;background:#161b22;border-bottom:1px solid #21262d;font-size:11px;font-weight:600;color:#c9d1d9">Controller Level </div><div style=padding:8px;font-size:11px;color:#8b949e></div></div><div style="border-radius:6px;border:1px solid #30363d;overflow:hidden;background:#0d1117"><div style="padding:6px 8px;background:#161b22;border-bottom:1px solid #21262d;font-size:11px;font-weight:600;color:#c9d1d9">Structures</div></div><div style="margin-top:8px;padding:0 4px"><div style=color:#484f58;font-style:italic;font-size:12px>'),iM=W('<div style="padding:6px 8px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #21262d;font-size:11px;color:#c9d1d9"><span style=text-transform:capitalize></span><span style=color:#8b949e>');function sM(){const s=Object.keys(_l),t=(n,r)=>{const o=_l[n];return o?nn()==="empty"&&n==="spawn"?Math.max(o[r]??0,1):o[r]??0:0},e=(n,r)=>{const o=t(n,r);if(o===2500)return 1/0;const a=vl()[n]??0;return Math.max(0,o-a)},i=n=>{hh({structureType:n,structureName:""})};return(()=>{var n=eM(),r=n.firstChild,o=r.firstChild;o.firstChild;var a=o.nextSibling,l=r.nextSibling;l.firstChild;var h=l.nextSibling,c=h.firstChild;return L(o,()=>Zn()??"?",null),L(a,()=>{const u=nn();return u==="empty"?"World is empty — place a spawn to claim this room.":u==="lost"?"You lost all your spawns — respawn to continue.":Zn()!=null?`RCL ${Zn()} — Select a structure type and click a tile to build.`:"No controller — roads and containers only."}),L(l,G(oe,{each:s,children:u=>{const d=()=>Zn()??0,f=()=>t(u,d()),p=()=>vl()[u]??0,g=()=>nr().structureType===u,m=()=>f()===2500,O=()=>!m()&&e(u,d())<=0;return G(ot,{get when(){return f()>0},get children(){var x=iM(),b=x.firstChild,v=b.nextSibling;return x.$$click=()=>!O()&&i(u),L(b,()=>u.replace(/([A-Z])/g," $1").trim(),null),L(b,()=>g()&&" ✓",null),L(v,(()=>{var w=Bt(()=>!!m());return()=>w()?`${p()}/∞`:`${p()}/${f()}`})(),null),L(v,()=>O()&&" (Max)",null),J(w=>{var S=g()?"#1f3158":"transparent",y=O()?"default":"pointer",_=O()?.5:1;return S!==w.e&&tt(x,"background",w.e=S),y!==w.t&&tt(x,"cursor",w.t=y),_!==w.a&&tt(x,"opacity",w.a=_),w},{e:void 0,t:void 0,a:void 0}),x}})}}),null),L(c,()=>nr().structureType?"Click a tile in the room to build.":"Select a structure type, then click a tile."),n})()}Ne(["click"]);var nM=W("<div style=padding-bottom:8px;overflow:auto;min-height:0>"),rM=W('<div style=display:flex;flex-direction:row;height:100%;background:#0d1117><div style="width:32px;height:100%;display:flex;flex-direction:column;align-items:center;border-right:1px solid #30363d;padding:8px 0;cursor:pointer"></div><div style=flex:1;display:flex;flex-direction:column;overflow:hidden><div style="padding:6px 10px;border-bottom:1px solid #30363d;font-size:12px;font-weight:600;color:#8b949e;display:flex;justify-content:space-between;align-items:center"><span>Properties'),oM=W("<button style=background:transparent;border:none;color:#8b949e;font-size:14px;cursor:pointer;padding:4px>"),aM=W("<button style=background:transparent;border:none;color:#8b949e;font-size:11px;cursor:pointer>Collapse");function lM(){return G(ot,{get when(){return on()==="flag"},get fallback(){return G(ot,{get when(){return on()==="build"},get fallback(){return G(T2,{})},get children(){return G(sM,{})}})},get children(){return G(tM,{})}})}function hM(s){const t=()=>{var i;(i=s.onToggle)==null||i.call(s)},e=i=>{var n;i.stopPropagation(),(n=s.onToggle)==null||n.call(s)};return(()=>{var i=rM(),n=i.firstChild,r=n.nextSibling,o=r.firstChild;return o.firstChild,n.$$click=t,L(n,(()=>{var a=Bt(()=>!!s.onToggle);return()=>a()&&(()=>{var l=oM();return l.$$click=e,L(l,()=>s.isCollapsed?"▶":"◀"),l})()})()),L(o,(()=>{var a=Bt(()=>!!s.onToggle);return()=>a()&&(()=>{var l=aM();return l.$$click=e,l})()})(),null),L(r,G(ot,{get when(){return s.mapMode},get fallback(){return G(R2,{get room(){return s.room??"—"},get shard(){return s.shard??null}})},get children(){return G(Z2,{get zoom(){return s.mapZoom},get subsActive(){return s.mapSubsActive}})}}),null),L(r,G(ot,{get when(){return s.mapMode},get fallback(){return G(lM,{})},get children(){var a=nM();return L(a,G(Ug,{label:"Selected",get info(){return s.selectedRoomInfo??null}}),null),L(a,G(Ug,{label:"Cursor",get info(){return s.hoveredRoomInfo??null},dim:!0}),null),a}}),null),i})()}Ne(["click"]);var cM=W("<div style=display:flex;gap:6px;align-items:center><span style=font-weight:600>CPU:</span><span style=color:#c9d1d9>"),uM=W("<div style=display:flex;gap:6px;align-items:center><span style=font-weight:600>Memory:</span><span style=color:#c9d1d9>"),dM=W("<div style=display:flex;gap:6px;align-items:center><span style=font-weight:600>Zoom:</span><span style=color:#c9d1d9>%"),fM=W("<div style=display:flex;gap:6px;align-items:center><span style=font-weight:600>Subs:</span><span>"),pM=W('<div style="display:flex;gap:16px;padding:6px 16px;font-size:12px;color:#8b949e;align-items:center">');function gM(s){const[t,e]=Y(null);un(()=>{const r=St();if(!r)return;const o=new Dd;o.add(r.stores.user.subscribe("cpu")),o.add(r.stores.user.on("user:cpu",a=>{e(a)})),de(()=>{o.dispose()})});const i=()=>{var a;const r=t();if(!r)return"—";const o=((a=fo())==null?void 0:a.cpu)??"?";return`${r.cpu.toFixed(1)} / ${o}`},n=()=>{const r=t();return r?`${(r.memory/1024).toFixed(1)} KB`:"—"};return(()=>{var r=pM();return L(r,G(ot,{get when(){return t()!==null},get children(){return[(()=>{var o=cM(),a=o.firstChild,l=a.nextSibling;return L(l,i),o})(),(()=>{var o=uM(),a=o.firstChild,l=a.nextSibling;return L(l,n),o})()]}}),null),L(r,G(ot,{get when(){return Bt(()=>s.mapZoom!==null)()&&s.mapZoom!==void 0},get children(){return[(()=>{var o=dM(),a=o.firstChild,l=a.nextSibling,h=l.firstChild;return L(l,()=>(s.mapZoom*100).toFixed(0),h),o})(),(()=>{var o=fM(),a=o.firstChild,l=a.nextSibling;return L(l,()=>s.mapSubsActive===!1?"paused":"active"),J(h=>tt(l,"color",s.mapSubsActive===!1?"#e3b341":"#3fb950")),o})()]}}),null),r})()}var mM=W('<div style="display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #21262d"><div><div style=font-size:13px;color:#c9d1d9></div></div><button style="flex-shrink:0;margin-left:24px;width:40px;height:20px;border-radius:10px;border:none;cursor:pointer;position:relative;transition:background 0.15s"><div style="position:absolute;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left 0.15s">'),OM=W("<div style=font-size:11px;color:#8b949e;margin-top:3px>"),yM=W("<div style=margin-bottom:24px><div style=font-size:10px;font-weight:700;color:#8b949e;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:4px>"),xM=W('<div style="position:absolute;inset:0px;background:rgba(13, 17, 23, 0.96);z-index:100;display:flex;flex-direction:column;overflow:hidden"><div style="display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-bottom:1px solid #30363d;flex-shrink:0"><span style=font-size:15px;font-weight:600;color:#c9d1d9>Settings</span><button style="background:transparent;border:none;color:#8b949e;font-size:18px;cursor:pointer;line-height:1;padding:2px 6px">✕</button></div><div style="overflow:auto;flex:1;padding:20px 24px"><div style=max-width:480px>');function oc(s){return(()=>{var t=mM(),e=t.firstChild,i=e.firstChild,n=e.nextSibling,r=n.firstChild;return L(i,()=>s.label),L(e,(()=>{var o=Bt(()=>!!s.description);return()=>o()&&(()=>{var a=OM();return L(a,()=>s.description),a})()})(),null),n.$$click=()=>s.onChange(!s.value),J(o=>{var a=s.value?"#238636":"#30363d",l=s.value?"22px":"2px";return a!==o.e&&tt(n,"background",o.e=a),l!==o.t&&tt(r,"left",o.t=l),o},{e:void 0,t:void 0}),t})()}function ac(s){return(()=>{var t=yM(),e=t.firstChild;return L(e,()=>s.title),L(t,()=>s.children,null),t})()}function bM(s){return(()=>{var t=xM(),e=t.firstChild,i=e.firstChild,n=i.nextSibling,r=e.nextSibling,o=r.firstChild;return n.$$click=()=>s.onClose(),L(o,G(ac,{title:"Layout",get children(){return G(oc,{label:"Widescreen mode",description:"Sidebar spans full height; console sits below the room view only. When off, the console spans the full width below both the view and the sidebar.",get value(){return ex()},onChange:tT})}}),null),L(o,G(ac,{title:"Room View",get children(){return G(oc,{label:"Show creep labels",description:"Display each creep's name above its sprite.",get value(){return Lu()},onChange:eT})}}),null),L(o,G(ac,{title:"Map View",get children(){return G(oc,{label:"Show room names",description:"Render a small room name in the top-left corner of each map tile.",get value(){return hf()},onChange:ix})}}),null),t})()}Ne(["click"]);let zu=[],yx=[];(()=>{let s="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t<s.length;t++)(t%2?yx:zu).push(e=e+s[t])})();function wM(s){if(s<768)return!1;for(let t=0,e=zu.length;;){let i=t+e>>1;if(s<zu[i])e=i;else if(s>=yx[i])t=i+1;else return!0;if(t==e)return!1}}function Jg(s){return s>=127462&&s<=127487}const tm=8205;function SM(s,t,e=!0,i=!0){return(e?xx:vM)(s,t,i)}function xx(s,t,e){if(t==s.length)return t;t&&bx(s.charCodeAt(t))&&wx(s.charCodeAt(t-1))&&t--;let i=lc(s,t);for(t+=em(i);t<s.length;){let n=lc(s,t);if(i==tm||n==tm||e&&wM(n))t+=em(n),i=n;else if(Jg(n)){let r=0,o=t-2;for(;o>=0&&Jg(lc(s,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function vM(s,t,e){for(;t>0;){let i=xx(s,t-2,e);if(i<t)return i;t--}return 0}function lc(s,t){let e=s.charCodeAt(t);if(!wx(e)||t+1==s.length)return e;let i=s.charCodeAt(t+1);return bx(i)?(e-55296<<10)+(i-56320)+65536:e}function bx(s){return s>=56320&&s<57344}function wx(s){return s>=55296&&s<56320}function em(s){return s<65536?1:2}class mt{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=rr(this,t,e);let n=[];return this.decompose(0,t,n,2),i.length&&i.decompose(0,i.length,n,3),this.decompose(e,this.length,n,1),$i.from(n,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=rr(this,t,e);let i=[];return this.decompose(t,e,i,0),$i.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),n=new io(this),r=new io(t);for(let o=e,a=e;;){if(n.next(o),r.next(o),o=0,n.lineBreak!=r.lineBreak||n.done!=r.done||n.value!=r.value)return!1;if(a+=n.value.length,n.done||a>=i)return!0}}iter(t=1){return new io(this,t)}iterRange(t,e=this.length){return new Sx(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let n=this.line(t).from;i=this.iterRange(n,Math.max(n,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new vx(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?mt.empty:t.length<=32?new Wt(t):$i.from(Wt.split(t,[]))}}class Wt extends mt{constructor(t,e=_M(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,n){for(let r=0;;r++){let o=this.text[r],a=n+o.length;if((e?i:a)>=t)return new kM(n,a,i,o);n=a+1,i++}}decompose(t,e,i,n){let r=t<=0&&e>=this.length?this:new Wt(im(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(n&1){let o=i.pop(),a=Ja(r.text,o.text.slice(),0,r.length);if(a.length<=32)i.push(new Wt(a,o.length+r.length));else{let l=a.length>>1;i.push(new Wt(a.slice(0,l)),new Wt(a.slice(l)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof Wt))return super.replace(t,e,i);[t,e]=rr(this,t,e);let n=Ja(this.text,Ja(i.text,im(this.text,0,t)),e),r=this.length+i.length-(e-t);return n.length<=32?new Wt(n,r):$i.from(Wt.split(n,[]),r)}sliceString(t,e=this.length,i=`
|
|
252
|
+
`){[t,e]=rr(this,t,e);let n="";for(let r=0,o=0;r<=e&&o<this.text.length;o++){let a=this.text[o],l=r+a.length;r>t&&o&&(n+=i),t<l&&e>r&&(n+=a.slice(Math.max(0,t-r),e-r)),r=l+1}return n}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],n=-1;for(let r of t)i.push(r),n+=r.length+1,i.length==32&&(e.push(new Wt(i,n)),i=[],n=-1);return n>-1&&e.push(new Wt(i,n)),e}}class $i extends mt{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let i of t)this.lines+=i.lines}lineInner(t,e,i,n){for(let r=0;;r++){let o=this.children[r],a=n+o.length,l=i+o.lines-1;if((e?l:a)>=t)return o.lineInner(t,e,i,n);n=a+1,i=l+1}}decompose(t,e,i,n){for(let r=0,o=0;o<=e&&r<this.children.length;r++){let a=this.children[r],l=o+a.length;if(t<=l&&e>=o){let h=n&((o<=t?1:0)|(l>=e?2:0));o>=t&&l<=e&&!h?i.push(a):a.decompose(t-o,e-o,i,h)}o=l+1}}replace(t,e,i){if([t,e]=rr(this,t,e),i.lines<this.lines)for(let n=0,r=0;n<this.children.length;n++){let o=this.children[n],a=r+o.length;if(t>=r&&e<=a){let l=o.replace(t-r,e-r,i),h=this.lines-o.lines+l.lines;if(l.lines<h>>4&&l.lines>h>>6){let c=this.children.slice();return c[n]=l,new $i(c,this.length-(e-t)+i.length)}return super.replace(r,a,l)}r=a+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i=`
|
|
253
|
+
`){[t,e]=rr(this,t,e);let n="";for(let r=0,o=0;r<this.children.length&&o<=e;r++){let a=this.children[r],l=o+a.length;o>t&&r&&(n+=i),t<l&&e>o&&(n+=a.sliceString(t-o,e-o,i)),o=l+1}return n}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof $i))return 0;let i=0,[n,r,o,a]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;n+=e,r+=e){if(n==o||r==a)return i;let l=this.children[n],h=t.children[r];if(l!=h)return i+l.scanIdentical(h,e);i+=l.length+1}}static from(t,e=t.reduce((i,n)=>i+n.length+1,-1)){let i=0;for(let f of t)i+=f.lines;if(i<32){let f=[];for(let p of t)p.flatten(f);return new Wt(f,e)}let n=Math.max(32,i>>5),r=n<<1,o=n>>1,a=[],l=0,h=-1,c=[];function u(f){let p;if(f.lines>r&&f instanceof $i)for(let g of f.children)u(g);else f.lines>o&&(l>o||!l)?(d(),a.push(f)):f instanceof Wt&&l&&(p=c[c.length-1])instanceof Wt&&f.lines+p.lines<=32?(l+=f.lines,h+=f.length+1,c[c.length-1]=new Wt(p.text.concat(f.text),p.length+1+f.length)):(l+f.lines>n&&d(),l+=f.lines,h+=f.length+1,c.push(f))}function d(){l!=0&&(a.push(c.length==1?c[0]:$i.from(c,h)),h=-1,l=c.length=0)}for(let f of t)u(f);return d(),a.length==1?a[0]:new $i(a,e)}}mt.empty=new Wt([""],0);function _M(s){let t=-1;for(let e of s)t+=e.length+1;return t}function Ja(s,t,e=0,i=1e9){for(let n=0,r=0,o=!0;r<s.length&&n<=i;r++){let a=s[r],l=n+a.length;l>=e&&(l>i&&(a=a.slice(0,i-n)),n<e&&(a=a.slice(e-n)),o?(t[t.length-1]+=a,o=!1):t.push(a)),n=l+1}return t}function im(s,t,e){return Ja(s,[""],t,e)}class io{constructor(t,e=1){this.dir=e,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[t],this.offsets=[e>0?1:(t instanceof Wt?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,n=this.nodes[i],r=this.offsets[i],o=r>>1,a=n instanceof Wt?n.text.length:n.children.length;if(o==(e>0?a:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=`
|
|
254
|
+
`,this;t--}else if(n instanceof Wt){let l=n.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,l.length>Math.max(0,t))return this.value=t==0?l:e>0?l.slice(t):l.slice(0,l.length-t),this;t-=l.length}else{let l=n.children[o+(e<0?-1:0)];t>l.length?(t-=l.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(l),this.offsets.push(e>0?1:(l instanceof Wt?l.text.length:l.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}}class Sx{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new io(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:n}=this.cursor.next(t);return this.pos+=(n.length+t)*e,this.value=n.length<=i?n:e<0?n.slice(n.length-i):n.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class vx{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:n}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(mt.prototype[Symbol.iterator]=function(){return this.iter()},io.prototype[Symbol.iterator]=Sx.prototype[Symbol.iterator]=vx.prototype[Symbol.iterator]=function(){return this});class kM{constructor(t,e,i,n){this.from=t,this.to=e,this.number=i,this.text=n}get length(){return this.to-this.from}}function rr(s,t,e){return t=Math.max(0,Math.min(s.length,t)),[t,Math.max(t,Math.min(s.length,e))]}function re(s,t,e=!0,i=!0){return SM(s,t,e,i)}function $M(s){return s>=56320&&s<57344}function CM(s){return s>=55296&&s<56320}function Te(s,t){let e=s.charCodeAt(t);if(!CM(e)||t+1==s.length)return e;let i=s.charCodeAt(t+1);return $M(i)?(e-55296<<10)+(i-56320)+65536:e}function df(s){return s<=65535?String.fromCharCode(s):(s-=65536,String.fromCharCode((s>>10)+55296,(s&1023)+56320))}function Ci(s){return s<65536?1:2}const Wu=/\r\n?|\n/;var ue=(function(s){return s[s.Simple=0]="Simple",s[s.TrackDel=1]="TrackDel",s[s.TrackBefore=2]="TrackBefore",s[s.TrackAfter=3]="TrackAfter",s})(ue||(ue={}));class Ri{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;e<this.sections.length;e+=2)t+=this.sections[e];return t}get newLength(){let t=0;for(let e=0;e<this.sections.length;e+=2){let i=this.sections[e+1];t+=i<0?this.sections[e]:i}return t}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(t){for(let e=0,i=0,n=0;e<this.sections.length;){let r=this.sections[e++],o=this.sections[e++];o<0?(t(i,n,r),n+=r):n+=o,i+=r}}iterChangedRanges(t,e=!1){Gu(this,t,e)}get invertedDesc(){let t=[];for(let e=0;e<this.sections.length;){let i=this.sections[e++],n=this.sections[e++];n<0?t.push(i,n):t.push(n,i)}return new Ri(t)}composeDesc(t){return this.empty?t:t.empty?this:_x(this,t)}mapDesc(t,e=!1){return t.empty?this:Yu(this,t,e)}mapPos(t,e=-1,i=ue.Simple){let n=0,r=0;for(let o=0;o<this.sections.length;){let a=this.sections[o++],l=this.sections[o++],h=n+a;if(l<0){if(h>t)return r+(t-n);r+=a}else{if(i!=ue.Simple&&h>=t&&(i==ue.TrackDel&&n<t&&h>t||i==ue.TrackBefore&&n<t||i==ue.TrackAfter&&h>t))return null;if(h>t||h==t&&e<0&&!a)return t==n||e<0?r:r+l;r+=l}n=h}if(t>n)throw new RangeError(`Position ${t} is out of range for changeset of length ${n}`);return r}touchesRange(t,e=t){for(let i=0,n=0;i<this.sections.length&&n<=e;){let r=this.sections[i++],o=this.sections[i++],a=n+r;if(o>=0&&n<=e&&a>=t)return n<t&&a>e?"cover":!0;n=a}return!1}toString(){let t="";for(let e=0;e<this.sections.length;){let i=this.sections[e++],n=this.sections[e++];t+=(t?" ":"")+i+(n>=0?":"+n:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Ri(t)}static create(t){return new Ri(t)}}class Kt extends Ri{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Gu(this,(e,i,n,r,o)=>t=t.replace(n,n+(i-e),o),!1),t}mapDesc(t,e=!1){return Yu(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let n=0,r=0;n<e.length;n+=2){let o=e[n],a=e[n+1];if(a>=0){e[n]=a,e[n+1]=o;let l=n>>1;for(;i.length<l;)i.push(mt.empty);i.push(o?t.slice(r,r+o):mt.empty)}r+=o}return new Kt(e,i)}compose(t){return this.empty?t:t.empty?this:_x(this,t,!0)}map(t,e=!1){return t.empty?this:Yu(this,t,e,!0)}iterChanges(t,e=!1){Gu(this,t,e)}get desc(){return Ri.create(this.sections)}filter(t){let e=[],i=[],n=[],r=new _o(this);t:for(let o=0,a=0;;){let l=o==t.length?1e9:t[o++];for(;a<l||a==l&&r.len==0;){if(r.done)break t;let c=Math.min(r.len,l-a);ge(n,c,-1);let u=r.ins==-1?-1:r.off==0?r.ins:0;ge(e,c,u),u>0&&ms(i,e,r.text),r.forward(c),a+=c}let h=t[o++];for(;a<h;){if(r.done)break t;let c=Math.min(r.len,h-a);ge(e,c,-1),ge(n,c,r.ins==-1?-1:r.off==0?r.ins:0),r.forward(c),a+=c}}return{changes:new Kt(e,i),filtered:Ri.create(n)}}toJSON(){let t=[];for(let e=0;e<this.sections.length;e+=2){let i=this.sections[e],n=this.sections[e+1];n<0?t.push(i):n==0?t.push([i]):t.push([i].concat(this.inserted[e>>1].toJSON()))}return t}static of(t,e,i){let n=[],r=[],o=0,a=null;function l(c=!1){if(!c&&!n.length)return;o<e&&ge(n,e-o,-1);let u=new Kt(n,r);a=a?a.compose(u.map(a)):u,n=[],r=[],o=0}function h(c){if(Array.isArray(c))for(let u of c)h(u);else if(c instanceof Kt){if(c.length!=e)throw new RangeError(`Mismatched change set length (got ${c.length}, expected ${e})`);l(),a=a?a.compose(c.map(a)):c}else{let{from:u,to:d=u,insert:f}=c;if(u>d||u<0||d>e)throw new RangeError(`Invalid change range ${u} to ${d} (in doc of length ${e})`);let p=f?typeof f=="string"?mt.of(f.split(i||Wu)):f:mt.empty,g=p.length;if(u==d&&g==0)return;u<o&&l(),u>o&&ge(n,u-o,-1),ge(n,d-u,g),ms(r,n,p),o=d}}return h(t),l(!a),a}static empty(t){return new Kt(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let n=0;n<t.length;n++){let r=t[n];if(typeof r=="number")e.push(r,-1);else{if(!Array.isArray(r)||typeof r[0]!="number"||r.some((o,a)=>a&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length<n;)i.push(mt.empty);i[n]=mt.of(r.slice(1)),e.push(r[0],i[n].length)}}}return new Kt(e,i)}static createSet(t,e){return new Kt(t,e)}}function ge(s,t,e,i=!1){if(t==0&&e<=0)return;let n=s.length-2;n>=0&&e<=0&&e==s[n+1]?s[n]+=t:n>=0&&t==0&&s[n]==0?s[n+1]+=e:i?(s[n]+=t,s[n+1]+=e):s.push(t,e)}function ms(s,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i<s.length)s[s.length-1]=s[s.length-1].append(e);else{for(;s.length<i;)s.push(mt.empty);s.push(e)}}function Gu(s,t,e){let i=s.inserted;for(let n=0,r=0,o=0;o<s.sections.length;){let a=s.sections[o++],l=s.sections[o++];if(l<0)n+=a,r+=a;else{let h=n,c=r,u=mt.empty;for(;h+=a,c+=l,l&&i&&(u=u.append(i[o-2>>1])),!(e||o==s.sections.length||s.sections[o+1]<0);)a=s.sections[o++],l=s.sections[o++];t(n,h,r,c,u),n=h,r=c}}}function Yu(s,t,e,i=!1){let n=[],r=i?[]:null,o=new _o(s),a=new _o(t);for(let l=-1;;){if(o.done&&a.len||a.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&a.ins==-1){let h=Math.min(o.len,a.len);ge(n,h,-1),o.forward(h),a.forward(h)}else if(a.ins>=0&&(o.ins<0||l==o.i||o.off==0&&(a.len<o.len||a.len==o.len&&!e))){let h=a.len;for(ge(n,a.ins,-1);h;){let c=Math.min(o.len,h);o.ins>=0&&l<o.i&&o.len<=c&&(ge(n,0,o.ins),r&&ms(r,n,o.text),l=o.i),o.forward(c),h-=c}a.next()}else if(o.ins>=0){let h=0,c=o.len;for(;c;)if(a.ins==-1){let u=Math.min(c,a.len);h+=u,c-=u,a.forward(u)}else if(a.ins==0&&a.len<c)c-=a.len,a.next();else break;ge(n,h,l<o.i?o.ins:0),r&&l<o.i&&ms(r,n,o.text),l=o.i,o.forward(o.len-c)}else{if(o.done&&a.done)return r?Kt.createSet(n,r):Ri.create(n);throw new Error("Mismatched change set lengths")}}}function _x(s,t,e=!1){let i=[],n=e?[]:null,r=new _o(s),o=new _o(t);for(let a=!1;;){if(r.done&&o.done)return n?Kt.createSet(i,n):Ri.create(i);if(r.ins==0)ge(i,r.len,0,a),r.next();else if(o.len==0&&!o.done)ge(i,0,o.ins,a),n&&ms(n,i,o.text),o.next();else{if(r.done||o.done)throw new Error("Mismatched change set lengths");{let l=Math.min(r.len2,o.len),h=i.length;if(r.ins==-1){let c=o.ins==-1?-1:o.off?0:o.ins;ge(i,l,c,a),n&&c&&ms(n,i,o.text)}else o.ins==-1?(ge(i,r.off?0:r.len,l,a),n&&ms(n,i,r.textBit(l))):(ge(i,r.off?0:r.len,o.off?0:o.ins,a),n&&!o.off&&ms(n,i,o.text));a=(r.ins>l||o.ins>=0&&o.len>l)&&(a||i.length>h),r.forward2(l),o.forward(l)}}}}class _o{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i<t.length?(this.len=t[this.i++],this.ins=t[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:t}=this.set,e=this.i-2>>1;return e>=t.length?mt.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?mt.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}}class Fs{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,n;return this.empty?i=n=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),n=t.mapPos(this.to,-1)),i==this.from&&n==this.to?this:new Fs(i,n,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return D.range(t,e,void 0,void 0,i);let n=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return D.range(this.anchor,n,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return D.range(t.anchor,t.head)}static create(t,e,i){return new Fs(t,e,i)}}class D{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:D.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;i<this.ranges.length;i++)if(!this.ranges[i].eq(t.ranges[i],e))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new D([this.main],0)}addRange(t,e=!0){return D.create([t].concat(this.ranges),e?0:this.mainIndex+1)}replaceRange(t,e=this.mainIndex){let i=this.ranges.slice();return i[e]=t,D.create(i,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(t=>t.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new D(t.ranges.map(e=>Fs.fromJSON(e)),t.main)}static single(t,e=t){return new D([D.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,n=0;n<t.length;n++){let r=t[n];if(r.empty?r.from<=i:r.from<i)return D.normalized(t.slice(),e);i=r.to}return new D(t,e)}static cursor(t,e=0,i,n){return Fs.create(t,t,(e==0?0:e<0?8:16)|(i==null?7:Math.min(6,i))|(n??16777215)<<6)}static range(t,e,i,n,r){let o=(i??16777215)<<6|(n==null?7:Math.min(6,n));return!r&&t!=e&&(r=e<t?1:-1),e<t?Fs.create(e,t,48|o):Fs.create(t,e,(r?r<0?8:16:0)|o)}static normalized(t,e=0){let i=t[e];t.sort((n,r)=>n.from-r.from),e=t.indexOf(i);for(let n=1;n<t.length;n++){let r=t[n],o=t[n-1];if(r.empty?r.from<=o.to:r.from<o.to){let a=o.from,l=Math.max(r.to,o.to);n<=e&&e--,t.splice(--n,2,r.anchor>r.head?D.range(l,a):D.range(a,l))}}return new D(t,e)}}function kx(s,t){for(let e of s.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}let ff=0;class j{constructor(t,e,i,n,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=n,this.id=ff++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new j(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:pf),!!t.static,t.enables)}of(t){return new tl([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new tl(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new tl(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}}function pf(s,t){return s==t||s.length==t.length&&s.every((e,i)=>e===t[i])}class tl{constructor(t,e,i,n){this.dependencies=t,this.facet=e,this.type=i,this.value=n,this.id=ff++}dynamicSlot(t){var e;let i=this.value,n=this.facet.compareInput,r=this.id,o=t[r]>>1,a=this.type==2,l=!1,h=!1,c=[];for(let u of this.dependencies)u=="doc"?l=!0:u=="selection"?h=!0:(((e=t[u.id])!==null&&e!==void 0?e:1)&1)==0&&c.push(t[u.id]);return{create(u){return u.values[o]=i(u),1},update(u,d){if(l&&d.docChanged||h&&(d.docChanged||d.selection)||Nu(u,c)){let f=i(u);if(a?!sm(f,u.values[o],n):!n(f,u.values[o]))return u.values[o]=f,1}return 0},reconfigure:(u,d)=>{let f,p=d.config.address[r];if(p!=null){let g=$l(d,p);if(this.dependencies.every(m=>m instanceof j?d.facet(m)===u.facet(m):m instanceof pe?d.field(m,!1)==u.field(m,!1):!0)||(a?sm(f=i(u),g,n):n(f=i(u),g)))return u.values[o]=g,0}else f=i(u);return u.values[o]=f,1}}}}function sm(s,t,e){if(s.length!=t.length)return!1;for(let i=0;i<s.length;i++)if(!e(s[i],t[i]))return!1;return!0}function Nu(s,t){let e=!1;for(let i of t)so(s,i)&1&&(e=!0);return e}function PM(s,t,e){let i=e.map(l=>s[l.id]),n=e.map(l=>l.type),r=i.filter(l=>!(l&1)),o=s[t.id]>>1;function a(l){let h=[];for(let c=0;c<i.length;c++){let u=$l(l,i[c]);if(n[c]==2)for(let d of u)h.push(d);else h.push(u)}return t.combine(h)}return{create(l){for(let h of i)so(l,h);return l.values[o]=a(l),1},update(l,h){if(!Nu(l,r))return 0;let c=a(l);return t.compare(c,l.values[o])?0:(l.values[o]=c,1)},reconfigure(l,h){let c=Nu(l,i),u=h.config.facets[t.id],d=h.facet(t);if(u&&!c&&pf(e,u))return l.values[o]=d,0;let f=a(l);return t.compare(f,d)?(l.values[o]=d,0):(l.values[o]=f,1)}}}const Sa=j.define({static:!0});class pe{constructor(t,e,i,n,r){this.id=t,this.createF=e,this.updateF=i,this.compareF=n,this.spec=r,this.provides=void 0}static define(t){let e=new pe(ff++,t.create,t.update,t.compare||((i,n)=>i===n),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Sa).find(i=>i.field==this);return((e==null?void 0:e.create)||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,n)=>{let r=i.values[e],o=this.updateF(r,n);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,n)=>{let r=i.facet(Sa),o=n.facet(Sa),a;return(a=r.find(l=>l.field==this))&&a!=o.find(l=>l.field==this)?(i.values[e]=a.create(i),1):n.config.address[this.id]!=null?(i.values[e]=n.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Sa.of({field:this,create:t})]}get extension(){return this}}const Gs={lowest:4,low:3,default:2,high:1,highest:0};function Rr(s){return t=>new $x(t,s)}const Ps={highest:Rr(Gs.highest),high:Rr(Gs.high),default:Rr(Gs.default),low:Rr(Gs.low),lowest:Rr(Gs.lowest)};class $x{constructor(t,e){this.inner=t,this.prec=e}}class Go{of(t){return new Vu(this,t)}reconfigure(t){return Go.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}}class Vu{constructor(t,e){this.compartment=t,this.inner=e}}class kl{constructor(t,e,i,n,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=n,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<i.length;)this.statusTemplate.push(0)}staticFacet(t){let e=this.address[t.id];return e==null?t.default:this.staticValues[e>>1]}static resolve(t,e,i){let n=[],r=Object.create(null),o=new Map;for(let d of TM(t,e,o))d instanceof pe?n.push(d):(r[d.facet.id]||(r[d.facet.id]=[])).push(d);let a=Object.create(null),l=[],h=[];for(let d of n)a[d.id]=h.length<<1,h.push(f=>d.slot(f));let c=i==null?void 0:i.config.facets;for(let d in r){let f=r[d],p=f[0].facet,g=c&&c[d]||[];if(f.every(m=>m.type==0))if(a[p.id]=l.length<<1|1,pf(g,f))l.push(i.facet(p));else{let m=p.combine(f.map(O=>O.value));l.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of f)m.type==0?(a[m.id]=l.length<<1|1,l.push(m.value)):(a[m.id]=h.length<<1,h.push(O=>m.dynamicSlot(O)));a[p.id]=h.length<<1,h.push(m=>PM(m,p,f))}}let u=h.map(d=>d(a));return new kl(t,o,u,a,l,r)}}function TM(s,t,e){let i=[[],[],[],[],[]],n=new Map;function r(o,a){let l=n.get(o);if(l!=null){if(l<=a)return;let h=i[l].indexOf(o);h>-1&&i[l].splice(h,1),o instanceof Vu&&e.delete(o.compartment)}if(n.set(o,a),Array.isArray(o))for(let h of o)r(h,a);else if(o instanceof Vu){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,a)}else if(o instanceof $x)r(o.inner,o.prec);else if(o instanceof pe)i[a].push(o),o.provides&&r(o.provides,a);else if(o instanceof tl)i[a].push(o),o.facet.extensions&&r(o.facet.extensions,Gs.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,a)}}return r(s,Gs.default),i.reduce((o,a)=>o.concat(a))}function so(s,t){if(t&1)return 2;let e=t>>1,i=s.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;s.status[e]=4;let n=s.computeSlot(s,s.config.dynamicSlots[e]);return s.status[e]=2|n}function $l(s,t){return t&1?s.config.staticValues[t>>1]:s.values[t>>1]}const Cx=j.define(),Fu=j.define({combine:s=>s.some(t=>t),static:!0}),Px=j.define({combine:s=>s.length?s[0]:void 0,static:!0}),Tx=j.define(),Mx=j.define(),Ax=j.define(),Qx=j.define({combine:s=>s.length?s[0]:!1});class os{constructor(t,e){this.type=t,this.value=e}static define(){return new MM}}class MM{of(t){return new os(this,t)}}class AM{constructor(t){this.map=t}of(t){return new rt(this,t)}}class rt{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new rt(this.type,e)}is(t){return this.type==t}static define(t={}){return new AM(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let n of t){let r=n.map(e);r&&i.push(r)}return i}}rt.reconfigure=rt.define();rt.appendConfig=rt.define();class Ut{constructor(t,e,i,n,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=n,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&kx(i,e.newLength),r.some(a=>a.type==Ut.time)||(this.annotations=r.concat(Ut.time.of(Date.now())))}static create(t,e,i,n,r,o){return new Ut(t,e,i,n,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(Ut.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}}Ut.time=os.define();Ut.userEvent=os.define();Ut.addToHistory=os.define();Ut.remote=os.define();function QM(s,t){let e=[];for(let i=0,n=0;;){let r,o;if(i<s.length&&(n==t.length||t[n]>=s[i]))r=s[i++],o=s[i++];else if(n<t.length)r=t[n++],o=t[n++];else return e;!e.length||e[e.length-1]<r?e.push(r,o):e[e.length-1]<o&&(e[e.length-1]=o)}}function Rx(s,t,e){var i;let n,r,o;return e?(n=t.changes,r=Kt.empty(t.changes.length),o=s.changes.compose(t.changes)):(n=t.changes.map(s.changes),r=s.changes.mapDesc(t.changes,!0),o=s.changes.compose(n)),{changes:o,selection:t.selection?t.selection.map(r):(i=s.selection)===null||i===void 0?void 0:i.map(n),effects:rt.mapEffects(s.effects,n).concat(rt.mapEffects(t.effects,r)),annotations:s.annotations.length?s.annotations.concat(t.annotations):t.annotations,scrollIntoView:s.scrollIntoView||t.scrollIntoView}}function qu(s,t,e){let i=t.selection,n=Vn(t.annotations);return t.userEvent&&(n=n.concat(Ut.userEvent.of(t.userEvent))),{changes:t.changes instanceof Kt?t.changes:Kt.of(t.changes||[],e,s.facet(Px)),selection:i&&(i instanceof D?i:D.single(i.anchor,i.head)),effects:Vn(t.effects),annotations:n,scrollIntoView:!!t.scrollIntoView}}function Ex(s,t,e){let i=qu(s,t.length?t[0]:{},s.doc.length);t.length&&t[0].filter===!1&&(e=!1);for(let r=1;r<t.length;r++){t[r].filter===!1&&(e=!1);let o=!!t[r].sequential;i=Rx(i,qu(s,t[r],o?i.changes.newLength:s.doc.length),o)}let n=Ut.create(s,i.changes,i.selection,i.effects,i.annotations,i.scrollIntoView);return EM(e?RM(n):n)}function RM(s){let t=s.startState,e=!0;for(let n of t.facet(Tx)){let r=n(s);if(r===!1){e=!1;break}Array.isArray(r)&&(e=e===!0?r:QM(e,r))}if(e!==!0){let n,r;if(e===!1)r=s.changes.invertedDesc,n=Kt.empty(t.doc.length);else{let o=s.changes.filter(e);n=o.changes,r=o.filtered.mapDesc(o.changes).invertedDesc}s=Ut.create(t,n,s.selection&&s.selection.map(r),rt.mapEffects(s.effects,r),s.annotations,s.scrollIntoView)}let i=t.facet(Mx);for(let n=i.length-1;n>=0;n--){let r=i[n](s);r instanceof Ut?s=r:Array.isArray(r)&&r.length==1&&r[0]instanceof Ut?s=r[0]:s=Ex(t,Vn(r),!1)}return s}function EM(s){let t=s.startState,e=t.facet(Ax),i=s;for(let n=e.length-1;n>=0;n--){let r=e[n](s);r&&Object.keys(r).length&&(i=Rx(i,qu(t,r,s.changes.newLength),!0))}return i==s?s:Ut.create(t,s.changes,s.selection,i.effects,i.annotations,i.scrollIntoView)}const LM=[];function Vn(s){return s==null?LM:Array.isArray(s)?s:[s]}var At=(function(s){return s[s.Word=0]="Word",s[s.Space=1]="Space",s[s.Other=2]="Other",s})(At||(At={}));const IM=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let ju;try{ju=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function ZM(s){if(ju)return ju.test(s);for(let t=0;t<s.length;t++){let e=s[t];if(/\w/.test(e)||e>""&&(e.toUpperCase()!=e.toLowerCase()||IM.test(e)))return!0}return!1}function DM(s){return t=>{if(!/\S/.test(t))return At.Space;if(ZM(t))return At.Word;for(let e=0;e<s.length;e++)if(t.indexOf(s[e])>-1)return At.Word;return At.Other}}class yt{constructor(t,e,i,n,r,o){this.config=t,this.doc=e,this.selection=i,this.values=n,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let a=0;a<this.config.dynamicSlots.length;a++)so(this,a<<1);this.computeSlot=null}field(t,e=!0){let i=this.config.address[t.id];if(i==null){if(e)throw new RangeError("Field is not present in this state");return}return so(this,i),$l(this,i)}update(...t){return Ex(this,t,!0)}applyTransaction(t){let e=this.config,{base:i,compartments:n}=e;for(let a of t.effects)a.is(Go.reconfigure)?(e&&(n=new Map,e.compartments.forEach((l,h)=>n.set(h,l)),e=null),n.set(a.value.compartment,a.value.extension)):a.is(rt.reconfigure)?(e=null,i=a.value):a.is(rt.appendConfig)&&(e=null,i=Vn(i).concat(a.value));let r;e?r=t.startState.values.slice():(e=kl.resolve(i,n,this),r=new yt(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(l,h)=>h.reconfigure(l,this),null).values);let o=t.startState.facet(Fu)?t.newSelection:t.newSelection.asSingle();new yt(e,t.newDoc,o,r,(a,l)=>l.update(a,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:D.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),n=this.changes(i.changes),r=[i.range],o=Vn(i.effects);for(let a=1;a<e.ranges.length;a++){let l=t(e.ranges[a]),h=this.changes(l.changes),c=h.map(n);for(let d=0;d<a;d++)r[d]=r[d].map(c);let u=n.mapDesc(h,!0);r.push(l.range.map(u)),n=n.compose(c),o=rt.mapEffects(o,c).concat(rt.mapEffects(Vn(l.effects),u))}return{changes:n,selection:D.create(r,e.mainIndex),effects:o}}changes(t=[]){return t instanceof Kt?t:Kt.of(t,this.doc.length,this.facet(yt.lineSeparator))}toText(t){return mt.of(t.split(this.facet(yt.lineSeparator)||Wu))}sliceDoc(t=0,e=this.doc.length){return this.doc.sliceString(t,e,this.lineBreak)}facet(t){let e=this.config.address[t.id];return e==null?t.default:(so(this,e),$l(this,e))}toJSON(t){let e={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(t)for(let i in t){let n=t[i];n instanceof pe&&this.config.address[n.id]!=null&&(e[i]=n.spec.toJSON(this.field(t[i]),this))}return e}static fromJSON(t,e={},i){if(!t||typeof t.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let n=[];if(i){for(let r in i)if(Object.prototype.hasOwnProperty.call(t,r)){let o=i[r],a=t[r];n.push(o.init(l=>o.spec.fromJSON(a,l)))}}return yt.create({doc:t.doc,selection:D.fromJSON(t.selection),extensions:e.extensions?n.concat([e.extensions]):n})}static create(t={}){let e=kl.resolve(t.extensions||[],new Map),i=t.doc instanceof mt?t.doc:mt.of((t.doc||"").split(e.staticFacet(yt.lineSeparator)||Wu)),n=t.selection?t.selection instanceof D?t.selection:D.single(t.selection.anchor,t.selection.head):D.single(0);return kx(n,i.length),e.staticFacet(Fu)||(n=n.asSingle()),new yt(e,i,n,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(yt.tabSize)}get lineBreak(){return this.facet(yt.lineSeparator)||`
|
|
255
|
+
`}get readOnly(){return this.facet(Qx)}phrase(t,...e){for(let i of this.facet(yt.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,n)=>{if(n=="$")return"$";let r=+(n||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let n=[];for(let r of this.facet(Cx))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&n.push(o[t]);return n}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return DM(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:n}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,a=t-i;for(;o>0;){let l=re(e,o,!1);if(r(e.slice(l,o))!=At.Word)break;o=l}for(;a<n;){let l=re(e,a);if(r(e.slice(a,l))!=At.Word)break;a=l}return o==a?null:D.range(o+i,a+i)}}yt.allowMultipleSelections=Fu;yt.tabSize=j.define({combine:s=>s.length?s[0]:4});yt.lineSeparator=Px;yt.readOnly=Qx;yt.phrases=j.define({compare(s,t){let e=Object.keys(s),i=Object.keys(t);return e.length==i.length&&e.every(n=>s[n]==t[n])}});yt.languageData=Cx;yt.changeFilter=Tx;yt.transactionFilter=Mx;yt.transactionExtender=Ax;Go.reconfigure=rt.define();function Ii(s,t,e={}){let i={};for(let n of s)for(let r of Object.keys(n)){let o=n[r],a=i[r];if(a===void 0)i[r]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](a,o);else throw new Error("Config merge conflict for field "+r)}for(let n in t)i[n]===void 0&&(i[n]=t[n]);return i}class bs{eq(t){return this==t}range(t,e=t){return Uu.create(t,e,this)}}bs.prototype.startSide=bs.prototype.endSide=0;bs.prototype.point=!1;bs.prototype.mapMode=ue.TrackDel;function gf(s,t){return s==t||s.constructor==t.constructor&&s.eq(t)}let Uu=class Lx{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new Lx(t,e,i)}};function Hu(s,t){return s.from-t.from||s.value.startSide-t.value.startSide}class mf{constructor(t,e,i,n){this.from=t,this.to=e,this.value=i,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,n=0){let r=i?this.to:this.from;for(let o=n,a=r.length;;){if(o==a)return o;let l=o+a>>1,h=r[l]-t||(i?this.value[l].endSide:this.value[l].startSide)-e;if(l==o)return h>=0?o:a;h>=0?a=l:o=l+1}}between(t,e,i,n){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);r<o;r++)if(n(this.from[r]+t,this.to[r]+t,this.value[r])===!1)return!1}map(t,e){let i=[],n=[],r=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let h=this.value[l],c=this.from[l]+t,u=this.to[l]+t,d,f;if(c==u){let p=e.mapPos(c,h.startSide,h.mapMode);if(p==null||(d=f=p,h.startSide!=h.endSide&&(f=e.mapPos(c,h.endSide),f<d)))continue}else if(d=e.mapPos(c,h.startSide),f=e.mapPos(u,h.endSide),d>f||d==f&&h.startSide>0&&h.endSide<=0)continue;(f-d||h.endSide-h.startSide)<0||(o<0&&(o=d),h.point&&(a=Math.max(a,f-d)),i.push(h),n.push(d-o),r.push(f-o))}return{mapped:i.length?new mf(n,r,i,a):null,pos:o}}}class ut{constructor(t,e,i,n){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=n}static create(t,e,i,n){return new ut(t,e,i,n)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:n=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(Hu)),this.isEmpty)return e.length?ut.of(e):this;let a=new Ix(this,null,-1).goto(0),l=0,h=[],c=new es;for(;a.value||l<e.length;)if(l<e.length&&(a.from-e[l].from||a.startSide-e[l].value.startSide)>=0){let u=e[l++];c.addInner(u.from,u.to,u.value)||h.push(u)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==e.length||this.chunkEnd(a.chunkIndex)<e[l].from)&&(!o||n>this.chunkEnd(a.chunkIndex)||r<this.chunkPos[a.chunkIndex])&&c.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||n>a.to||r<a.from||o(a.from,a.to,a.value))&&(c.addInner(a.from,a.to,a.value)||h.push(Uu.create(a.from,a.to,a.value))),a.next());return c.finishInner(this.nextLayer.isEmpty&&!h.length?ut.empty:this.nextLayer.update({add:h,filter:o,filterFrom:n,filterTo:r}))}map(t){if(t.empty||this.isEmpty)return this;let e=[],i=[],n=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],h=t.touchesRange(a,a+l.length);if(h===!1)n=Math.max(n,l.maxPoint),e.push(l),i.push(t.mapPos(a));else if(h===!0){let{mapped:c,pos:u}=l.map(a,t);c&&(n=Math.max(n,c.maxPoint),e.push(c),i.push(u))}}let r=this.nextLayer.map(t);return e.length==0?r:new ut(i,e,r||ut.empty,n)}between(t,e,i){if(!this.isEmpty){for(let n=0;n<this.chunk.length;n++){let r=this.chunkPos[n],o=this.chunk[n];if(e>=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return ko.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return ko.from(t).goto(e)}static compare(t,e,i,n,r=-1){let o=t.filter(u=>u.maxPoint>0||!u.isEmpty&&u.maxPoint>=r),a=e.filter(u=>u.maxPoint>0||!u.isEmpty&&u.maxPoint>=r),l=nm(o,a,i),h=new Er(o,l,r),c=new Er(a,l,r);i.iterGaps((u,d,f)=>rm(h,u,c,d,f,n)),i.empty&&i.length==0&&rm(h,0,c,0,0,n)}static eq(t,e,i=0,n){n==null&&(n=999999999);let r=t.filter(c=>!c.isEmpty&&e.indexOf(c)<0),o=e.filter(c=>!c.isEmpty&&t.indexOf(c)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let a=nm(r,o),l=new Er(r,a,0).goto(i),h=new Er(o,a,0).goto(i);for(;;){if(l.to!=h.to||!Ku(l.active,h.active)||l.point&&(!h.point||!gf(l.point,h.point)))return!1;if(l.to>n)return!0;l.next(),h.next()}}static spans(t,e,i,n,r=-1){let o=new Er(t,null,r).goto(e),a=e,l=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let c=o.activeForPoint(o.to),u=o.pointFrom<e?c.length+1:o.point.startSide<0?c.length:Math.min(c.length,l);n.point(a,h,o.point,c,u,o.pointRank),l=Math.min(o.openEnd(h),c.length)}else h>a&&(n.span(a,h,o.active,l),l=o.openEnd(h));if(o.to>i)return l+(o.point&&o.to>i?1:0);a=o.to,o.next()}}static of(t,e=!1){let i=new es;for(let n of t instanceof Uu?[t]:e?BM(t):t)i.add(n.from,n.to,n.value);return i.finish()}static join(t){if(!t.length)return ut.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let n=t[i];n!=ut.empty;n=n.nextLayer)e=new ut(n.chunkPos,n.chunk,e,Math.max(n.maxPoint,e.maxPoint));return e}}ut.empty=new ut([],[],null,-1);function BM(s){if(s.length>1)for(let t=s[0],e=1;e<s.length;e++){let i=s[e];if(Hu(t,i)>0)return s.slice().sort(Hu);t=i}return s}ut.empty.nextLayer=ut.empty;class es{finishChunk(t){this.chunks.push(new mf(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new es)).add(t,e,i)}addInner(t,e,i){let n=t-this.lastTo||i.startSide-this.last.endSide;if(n<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return n<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(ut.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=ut.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}}function nm(s,t,e){let i=new Map;for(let r of s)for(let o=0;o<r.chunk.length;o++)r.chunk[o].maxPoint<=0&&i.set(r.chunk[o],r.chunkPos[o]);let n=new Set;for(let r of t)for(let o=0;o<r.chunk.length;o++){let a=i.get(r.chunk[o]);a!=null&&(e?e.mapPos(a):a)==r.chunkPos[o]&&!(e!=null&&e.touchesRange(a,a+r.chunk[o].length))&&n.add(r.chunk[o])}return n}class Ix{constructor(t,e,i,n=0){this.layer=t,this.skip=e,this.minPoint=i,this.rank=n}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(t,e=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(t,e,!1),this}gotoInner(t,e,i){for(;this.chunkIndex<this.layer.chunk.length;){let n=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(n)||this.layer.chunkEnd(this.chunkIndex)<t||n.maxPoint<this.minPoint))break;this.chunkIndex++,i=!1}if(this.chunkIndex<this.layer.chunk.length){let n=this.layer.chunk[this.chunkIndex].findIndex(t-this.layer.chunkPos[this.chunkIndex],e,!0);(!i||this.rangeIndex<n)&&this.setRangeIndex(n)}this.next()}forward(t,e){(this.to-t||this.endSide-e)<0&&this.gotoInner(t,e,!0)}next(){for(;;)if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}else{let t=this.layer.chunkPos[this.chunkIndex],e=this.layer.chunk[this.chunkIndex],i=t+e.from[this.rangeIndex];if(this.from=i,this.to=t+e.to[this.rangeIndex],this.value=e.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=t}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(t){return this.from-t.from||this.startSide-t.startSide||this.rank-t.rank||this.to-t.to||this.endSide-t.endSide}}class ko{constructor(t){this.heap=t}static from(t,e=null,i=-1){let n=[];for(let r=0;r<t.length;r++)for(let o=t[r];!o.isEmpty;o=o.nextLayer)o.maxPoint>=i&&n.push(new Ix(o,e,i,r));return n.length==1?n[0]:new ko(n)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)hc(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)hc(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),hc(this.heap,0)}}}function hc(s,t){for(let e=s[t];;){let i=(t<<1)+1;if(i>=s.length)break;let n=s[i];if(i+1<s.length&&n.compare(s[i+1])>=0&&(n=s[i+1],i++),e.compare(n)<0)break;s[i]=e,s[t]=n,t=i}}class Er{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=ko.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){va(this.active,t),va(this.activeTo,t),va(this.activeRank,t),this.minActive=om(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:n,rank:r}=this.cursor;for(;e<this.activeRank.length&&(r-this.activeRank[e]||n-this.activeTo[e])>0;)e++;_a(this.active,e,i),_a(this.activeTo,e,n),_a(this.activeRank,e,r),t&&_a(t,e,this.cursor.from),this.minActive=om(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let n=this.minActive;if(n>-1&&(this.activeTo[n]-this.cursor.from||this.active[n].endSide-this.cursor.startSide)<0){if(this.activeTo[n]>t){this.to=this.activeTo[n],this.endSide=this.active[n].endSide;break}this.removeActive(n),i&&va(i,n)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)this.cursor.next();else{this.point=r,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=r.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else{this.to=this.endSide=1e9;break}}if(i){this.openStart=0;for(let n=i.length-1;n>=0&&i[n]<t;n--)this.openStart++}}activeForPoint(t){if(!this.active.length)return this.active;let e=[];for(let i=this.active.length-1;i>=0&&!(this.activeRank[i]<this.pointRank);i--)(this.activeTo[i]>t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}}function rm(s,t,e,i,n,r){s.goto(t),e.goto(i);let o=i+n,a=i,l=i-t,h=!!r.boundChange;for(let c=!1;;){let u=s.to+l-e.to,d=u||s.endSide-e.endSide,f=d<0?s.to+l:e.to,p=Math.min(f,o);if(s.point||e.point?(s.point&&e.point&&gf(s.point,e.point)&&Ku(s.activeForPoint(s.to),e.activeForPoint(e.to))||r.comparePoint(a,p,s.point,e.point),c=!1):(c&&r.boundChange(a),p>a&&!Ku(s.active,e.active)&&r.compareRange(a,p,s.active,e.active),h&&p<o&&(u||s.openEnd(f)!=e.openEnd(f))&&(c=!0)),f>o)break;a=f,d<=0&&s.next(),d>=0&&e.next()}}function Ku(s,t){if(s.length!=t.length)return!1;for(let e=0;e<s.length;e++)if(s[e]!=t[e]&&!gf(s[e],t[e]))return!1;return!0}function va(s,t){for(let e=t,i=s.length-1;e<i;e++)s[e]=s[e+1];s.pop()}function _a(s,t,e){for(let i=s.length-1;i>=t;i--)s[i+1]=s[i];s[t]=e}function om(s,t){let e=-1,i=1e9;for(let n=0;n<t.length;n++)(t[n]-i||s[n].endSide-s[e].endSide)<0&&(e=n,i=t[n]);return e}function gr(s,t,e=s.length){let i=0;for(let n=0;n<e&&n<s.length;)s.charCodeAt(n)==9?(i+=t-i%t,n++):(i++,n=re(s,n));return i}function Ju(s,t,e,i){for(let n=0,r=0;;){if(r>=t)return n;if(n==s.length)break;r+=s.charCodeAt(n)==9?e-r%e:1,n=re(s,n)}return i===!0?-1:s.length}function XM(s,t){const e=new Go,i=n=>{var r;(r=t())===null||r===void 0||r.dispatch({effects:e.reconfigure(n)})};return gt(ho([t,typeof s=="function"?s:()=>s],([n,r])=>{n&&r&&(e.get(n.state)?i(r):n.dispatch({effects:rt.appendConfig.of(e.of(r))}))},{defer:!0})),i}const td="ͼ",am=typeof Symbol>"u"?"__"+td:Symbol.for(td),ed=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),lm=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class ws{constructor(t,e){this.rules=[];let{finish:i}=e||{};function n(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,a,l,h){let c=[],u=/^@(\w+)\b/.exec(o[0]),d=u&&u[1]=="keyframes";if(u&&a==null)return l.push(o[0]+";");for(let f in a){let p=a[f];if(/&/.test(f))r(f.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,l);else if(p&&typeof p=="object"){if(!u)throw new RangeError("The value of a property ("+f+") should be a primitive value.");r(n(f),p,c,d)}else p!=null&&c.push(f.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(c.length||d)&&l.push((i&&!u&&!h?o.map(i):o).join(", ")+" {"+c.join(" ")+"}")}for(let o in t)r(n(o),t[o],this.rules)}getRules(){return this.rules.join(`
|
|
256
|
+
`)}static newName(){let t=lm[am]||1;return lm[am]=t+1,td+t.toString(36)}static mount(t,e,i){let n=t[ed],r=i&&i.nonce;n?r&&n.setNonce(r):n=new zM(t,r),n.mount(Array.isArray(e)?e:[e],t)}}let hm=new Map;class zM{constructor(t,e){let i=t.ownerDocument||t,n=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&n.CSSStyleSheet){let r=hm.get(i);if(r)return t[ed]=r;this.sheet=new n.CSSStyleSheet,hm.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[ed]=this}mount(t,e){let i=this.sheet,n=0,r=0;for(let o=0;o<t.length;o++){let a=t[o],l=this.modules.indexOf(a);if(l<r&&l>-1&&(this.modules.splice(l,1),r--,l=-1),l==-1){if(this.modules.splice(r++,0,a),i)for(let h=0;h<a.rules.length;h++)i.insertRule(a.rules[h],n++)}else{for(;r<l;)n+=this.modules[r++].rules.length;n+=a.rules.length,r++}}if(i)e.adoptedStyleSheets.indexOf(this.sheet)<0&&(e.adoptedStyleSheets=[this.sheet,...e.adoptedStyleSheets]);else{let o="";for(let l=0;l<this.modules.length;l++)o+=this.modules[l].getRules()+`
|
|
257
|
+
`;this.styleTag.textContent=o;let a=e.head||e;this.styleTag.parentNode!=a&&a.insertBefore(this.styleTag,a.firstChild)}}setNonce(t){this.styleTag&&this.styleTag.getAttribute("nonce")!=t&&this.styleTag.setAttribute("nonce",t)}}var Ss={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},$o={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},WM=typeof navigator<"u"&&/Mac/.test(navigator.platform),GM=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var ce=0;ce<10;ce++)Ss[48+ce]=Ss[96+ce]=String(ce);for(var ce=1;ce<=24;ce++)Ss[ce+111]="F"+ce;for(var ce=65;ce<=90;ce++)Ss[ce]=String.fromCharCode(ce+32),$o[ce]=String.fromCharCode(ce);for(var cc in Ss)$o.hasOwnProperty(cc)||($o[cc]=Ss[cc]);function YM(s){var t=WM&&s.metaKey&&s.shiftKey&&!s.ctrlKey&&!s.altKey||GM&&s.shiftKey&&s.key&&s.key.length==1||s.key=="Unidentified",e=!t&&s.key||(s.shiftKey?$o:Ss)[s.keyCode]||s.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}function vt(){var s=arguments[0];typeof s=="string"&&(s=document.createElement(s));var t=1,e=arguments[1];if(e&&typeof e=="object"&&e.nodeType==null&&!Array.isArray(e)){for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var n=e[i];typeof n=="string"?s.setAttribute(i,n):n!=null&&(s[i]=n)}t++}for(;t<arguments.length;t++)Zx(s,arguments[t]);return s}function Zx(s,t){if(typeof t=="string")s.appendChild(document.createTextNode(t));else if(t!=null)if(t.nodeType!=null)s.appendChild(t);else if(Array.isArray(t))for(var e=0;e<t.length;e++)Zx(s,t[e]);else throw new RangeError("Unsupported child node: "+t)}let we=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},id=typeof document<"u"?document:{documentElement:{style:{}}};const sd=/Edge\/(\d+)/.exec(we.userAgent),Dx=/MSIE \d/.test(we.userAgent),nd=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(we.userAgent),ch=!!(Dx||nd||sd),cm=!ch&&/gecko\/(\d+)/i.test(we.userAgent),uc=!ch&&/Chrome\/(\d+)/.exec(we.userAgent),um="webkitFontSmoothing"in id.documentElement.style,rd=!ch&&/Apple Computer/.test(we.vendor),dm=rd&&(/Mobile\/\w+/.test(we.userAgent)||we.maxTouchPoints>2);var U={mac:dm||/Mac/.test(we.platform),windows:/Win/.test(we.platform),linux:/Linux|X11/.test(we.platform),ie:ch,ie_version:Dx?id.documentMode||6:nd?+nd[1]:sd?+sd[1]:0,gecko:cm,gecko_version:cm?+(/Firefox\/(\d+)/.exec(we.userAgent)||[0,0])[1]:0,chrome:!!uc,chrome_version:uc?+uc[1]:0,ios:dm,android:/Android\b/.test(we.userAgent),webkit:um,webkit_version:um?+(/\bAppleWebKit\/(\d+)/.exec(we.userAgent)||[0,0])[1]:0,safari:rd,safari_version:rd?+(/\bVersion\/(\d+(\.\d+)?)/.exec(we.userAgent)||[0,0])[1]:0,tabSize:id.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Of(s,t){for(let e in s)e=="class"&&t.class?t.class+=" "+s.class:e=="style"&&t.style?t.style+=";"+s.style:t[e]=s[e];return t}const Cl=Object.create(null);function yf(s,t,e){if(s==t)return!0;s||(s=Cl),t||(t=Cl);let i=Object.keys(s),n=Object.keys(t);if(i.length-0!=n.length-0)return!1;for(let r of i)if(r!=e&&(n.indexOf(r)==-1||s[r]!==t[r]))return!1;return!0}function NM(s,t){for(let e=s.attributes.length-1;e>=0;e--){let i=s.attributes[e].name;t[i]==null&&s.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?s.style.cssText=i:s.getAttribute(e)!=i&&s.setAttribute(e,i)}}function fm(s,t,e){let i=!1;if(t)for(let n in t)e&&n in e||(i=!0,n=="style"?s.style.cssText="":s.removeAttribute(n));if(e)for(let n in e)t&&t[n]==e[n]||(i=!0,n=="style"?s.style.cssText=e[n]:s.setAttribute(n,e[n]));return i}function VM(s){let t=Object.create(null);for(let e=0;e<s.attributes.length;e++){let i=s.attributes[e];t[i.name]=i.value}return t}class Zi{eq(t){return!1}updateDOM(t,e,i){return!1}compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(t){return!0}coordsAt(t,e,i){return null}get isHidden(){return!1}get editable(){return!1}destroy(t){}}var fe=(function(s){return s[s.Text=0]="Text",s[s.WidgetBefore=1]="WidgetBefore",s[s.WidgetAfter=2]="WidgetAfter",s[s.WidgetRange=3]="WidgetRange",s})(fe||(fe={}));class et extends bs{constructor(t,e,i,n){super(),this.startSide=t,this.endSide=e,this.widget=i,this.spec=n}get heightRelevant(){return!1}static mark(t){return new Yo(t)}static widget(t){let e=Math.max(-1e4,Math.min(1e4,t.side||0)),i=!!t.block;return e+=i&&!t.inlineOrder?e>0?3e8:-4e8:e>0?1e8:-1e8,new an(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,n;if(t.isBlockGap)i=-5e8,n=4e8;else{let{start:r,end:o}=Bx(t,e);i=(r?e?-3e8:-1:5e8)-1,n=(o?e?2e8:1:-6e8)+1}return new an(t,i,n,e,t.widget||null,!0)}static line(t){return new No(t)}static set(t,e=!1){return ut.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}et.none=ut.empty;class Yo extends et{constructor(t){let{start:e,end:i}=Bx(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?Of(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||Cl}eq(t){return this==t||t instanceof Yo&&this.tagName==t.tagName&&yf(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}}Yo.prototype.point=!1;class No extends et{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof No&&this.spec.class==t.spec.class&&yf(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}}No.prototype.mapMode=ue.TrackBefore;No.prototype.point=!0;class an extends et{constructor(t,e,i,n,r,o){super(e,i,r,t),this.block=n,this.isReplace=o,this.mapMode=n?e<=0?ue.TrackBefore:ue.TrackAfter:ue.TrackDel}get type(){return this.startSide!=this.endSide?fe.WidgetRange:this.startSide<=0?fe.WidgetBefore:fe.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof an&&FM(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}}an.prototype.point=!0;function Bx(s,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=s;return e==null&&(e=s.inclusive),i==null&&(i=s.inclusive),{start:e??t,end:i??t}}function FM(s,t){return s==t||!!(s&&t&&s.compare(t))}function Fn(s,t,e,i=0){let n=e.length-1;n>=0&&e[n]+i>=s?e[n]=Math.max(e[n],t):e.push(s,t)}class Co extends bs{constructor(t,e,i){super(),this.tagName=t,this.attributes=e,this.rank=i}eq(t){return t==this||t instanceof Co&&this.tagName==t.tagName&&yf(this.attributes,t.attributes)}static create(t){return new Co(t.tagName,t.attributes||Cl,t.rank==null?50:Math.max(0,Math.min(t.rank,100)))}static set(t,e=!1){return ut.of(t,e)}}Co.prototype.startSide=Co.prototype.endSide=-1;function Po(s){let t;return s.nodeType==11?t=s.getSelection?s:s.ownerDocument:t=s,t.getSelection()}function od(s,t){return t?s==t||s.contains(t.nodeType!=1?t.parentNode:t):!1}function no(s,t){if(!t.anchorNode)return!1;try{return od(s,t.anchorNode)}catch{return!1}}function el(s){return s.nodeType==3?To(s,0,s.nodeValue.length).getClientRects():s.nodeType==1?s.getClientRects():[]}function ro(s,t,e,i){return e?pm(s,t,e,i,-1)||pm(s,t,e,i,1):!1}function vs(s){for(var t=0;;t++)if(s=s.previousSibling,!s)return t}function Pl(s){return s.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(s.nodeName)}function pm(s,t,e,i,n){for(;;){if(s==e&&t==i)return!0;if(t==(n<0?0:is(s))){if(s.nodeName=="DIV")return!1;let r=s.parentNode;if(!r||r.nodeType!=1)return!1;t=vs(s)+(n<0?0:1),s=r}else if(s.nodeType==1){if(s=s.childNodes[t+(n<0?-1:0)],s.nodeType==1&&s.contentEditable=="false")return!1;t=n<0?is(s):0}else return!1}}function is(s){return s.nodeType==3?s.nodeValue.length:s.childNodes.length}function Tl(s,t){let e=t?s.left:s.right;return{left:e,right:e,top:s.top,bottom:s.bottom}}function qM(s){let t=s.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:s.innerWidth,top:0,bottom:s.innerHeight}}function Xx(s,t){let e=t.width/s.offsetWidth,i=t.height/s.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-s.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-s.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function jM(s,t,e,i,n,r,o,a){let l=s.ownerDocument,h=l.defaultView||window;for(let c=s,u=!1;c&&!u;)if(c.nodeType==1){let d,f=c==l.body,p=1,g=1;if(f)d=qM(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(u=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let x=c.getBoundingClientRect();({scaleX:p,scaleY:g}=Xx(c,x)),d={left:x.left,right:x.left+c.clientWidth*p,top:x.top,bottom:x.top+c.clientHeight*g}}let m=0,O=0;if(n=="nearest")t.top<d.top+o?(O=t.top-(d.top+o),e>0&&t.bottom>d.bottom+O&&(O=t.bottom-d.bottom+o)):t.bottom>d.bottom-o&&(O=t.bottom-d.bottom+o,e<0&&t.top-O<d.top&&(O=t.top-(d.top+o)));else{let x=t.bottom-t.top,b=d.bottom-d.top;O=(n=="center"&&x<=b?t.top+x/2-b/2:n=="start"||n=="center"&&e<0?t.top-o:t.bottom-b+o)-d.top}if(i=="nearest"?t.left<d.left+r?(m=t.left-(d.left+r),e>0&&t.right>d.right+m&&(m=t.right-d.right+r)):t.right>d.right-r&&(m=t.right-d.right+r,e<0&&t.left<d.left+m&&(m=t.left-(d.left+r))):m=(i=="center"?t.left+(t.right-t.left)/2-(d.right-d.left)/2:i=="start"==a?t.left-r:t.right-(d.right-d.left)+r)-d.left,m||O)if(f)h.scrollBy(m,O);else{let x=0,b=0;if(O){let v=c.scrollTop;c.scrollTop+=O/g,b=(c.scrollTop-v)*g}if(m){let v=c.scrollLeft;c.scrollLeft+=m/p,x=(c.scrollLeft-v)*p}t={left:t.left-x,top:t.top-b,right:t.right-x,bottom:t.bottom-b},x&&Math.abs(x-m)<1&&(i="nearest"),b&&Math.abs(b-O)<1&&(n="nearest")}if(f)break;(t.top<d.top||t.bottom>d.bottom||t.left<d.left||t.right>d.right)&&(t={left:Math.max(t.left,d.left),right:Math.min(t.right,d.right),top:Math.max(t.top,d.top),bottom:Math.min(t.bottom,d.bottom)}),c=c.assignedSlot||c.parentNode}else if(c.nodeType==11)c=c.host;else break}function zx(s,t=!0){let e=s.ownerDocument,i=null,n=null;for(let r=s.parentNode;r&&!(r==e.body||(!t||i)&&n);)if(r.nodeType==1)!n&&r.scrollHeight>r.clientHeight&&(n=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:n}}class UM{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?is(e):0),i,Math.min(t.focusOffset,i?is(i):0))}set(t,e,i,n){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=n}}let zs=null;U.safari&&U.safari_version>=26&&(zs=!1);function Wx(s){if(s.setActive)return s.setActive();if(zs)return s.focus(zs);let t=[];for(let e=s;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(s.focus(zs==null?{get preventScroll(){return zs={preventScroll:!0},!0}}:void 0),!zs){zs=!1;for(let e=0;e<t.length;){let i=t[e++],n=t[e++],r=t[e++];i.scrollTop!=n&&(i.scrollTop=n),i.scrollLeft!=r&&(i.scrollLeft=r)}}}let gm;function To(s,t,e=t){let i=gm||(gm=document.createRange());return i.setEnd(s,e),i.setStart(s,t),i}function qn(s,t,e,i){let n={key:t,code:t,keyCode:e,which:e,cancelable:!0};i&&({altKey:n.altKey,ctrlKey:n.ctrlKey,shiftKey:n.shiftKey,metaKey:n.metaKey}=i);let r=new KeyboardEvent("keydown",n);r.synthetic=!0,s.dispatchEvent(r);let o=new KeyboardEvent("keyup",n);return o.synthetic=!0,s.dispatchEvent(o),r.defaultPrevented||o.defaultPrevented}function HM(s){for(;s;){if(s&&(s.nodeType==9||s.nodeType==11&&s.host))return s;s=s.assignedSlot||s.parentNode}return null}function KM(s,t){let e=t.focusNode,i=t.focusOffset;if(!e||t.anchorNode!=e||t.anchorOffset!=i)return!1;for(i=Math.min(i,is(e));;)if(i){if(e.nodeType!=1)return!1;let n=e.childNodes[i-1];n.contentEditable=="false"?i--:(e=n,i=is(e))}else{if(e==s)return!0;i=vs(e),e=e.parentNode}}function Gx(s){return s instanceof Window?s.pageYOffset>Math.max(0,s.document.documentElement.scrollHeight-s.innerHeight-4):s.scrollTop>Math.max(1,s.scrollHeight-s.clientHeight-4)}function Yx(s,t){for(let e=s,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=is(e)}else if(e.parentNode&&!Pl(e))i=vs(e),e=e.parentNode;else return null}}function Nx(s,t){for(let e=s,i=t;;){if(e.nodeType==3&&i<e.nodeValue.length)return{node:e,offset:i};if(e.nodeType==1&&i<e.childNodes.length){if(e.contentEditable=="false")return null;e=e.childNodes[i],i=0}else if(e.parentNode&&!Pl(e))i=vs(e)+1,e=e.parentNode;else return null}}class ui{constructor(t,e,i=!0){this.node=t,this.offset=e,this.precise=i}static before(t,e){return new ui(t.parentNode,vs(t),e)}static after(t,e){return new ui(t.parentNode,vs(t)+1,e)}}var $t=(function(s){return s[s.LTR=0]="LTR",s[s.RTL=1]="RTL",s})($t||($t={}));const ln=$t.LTR,xf=$t.RTL;function Vx(s){let t=[];for(let e=0;e<s.length;e++)t.push(1<<+s[e]);return t}const JM=Vx("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),tA=Vx("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),ad=Object.create(null),bi=[];for(let s of["()","[]","{}"]){let t=s.charCodeAt(0),e=s.charCodeAt(1);ad[t]=e,ad[e]=-t}function Fx(s){return s<=247?JM[s]:1424<=s&&s<=1524?2:1536<=s&&s<=1785?tA[s-1536]:1774<=s&&s<=2220?4:8192<=s&&s<=8204?256:64336<=s&&s<=65023?4:1}const eA=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/;class Ti{get dir(){return this.level%2?xf:ln}constructor(t,e,i){this.from=t,this.to=e,this.level=i}side(t,e){return this.dir==e==t?this.to:this.from}forward(t,e){return t==(this.dir==e)}static find(t,e,i,n){let r=-1;for(let o=0;o<t.length;o++){let a=t[o];if(a.from<=e&&a.to>=e){if(a.level==i)return o;(r<0||(n!=0?n<0?a.from<e:a.to>e:t[r].level>a.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}}function qx(s,t){if(s.length!=t.length)return!1;for(let e=0;e<s.length;e++){let i=s[e],n=t[e];if(i.from!=n.from||i.to!=n.to||i.direction!=n.direction||!qx(i.inner,n.inner))return!1}return!0}const kt=[];function iA(s,t,e,i,n){for(let r=0;r<=i.length;r++){let o=r?i[r-1].to:t,a=r<i.length?i[r].from:e,l=r?256:n;for(let h=o,c=l,u=l;h<a;h++){let d=Fx(s.charCodeAt(h));d==512?d=c:d==8&&u==4&&(d=16),kt[h]=d==4?2:d,d&7&&(u=d),c=d}for(let h=o,c=l,u=l;h<a;h++){let d=kt[h];if(d==128)h<a-1&&c==kt[h+1]&&c&24?d=kt[h]=c:kt[h]=256;else if(d==64){let f=h+1;for(;f<a&&kt[f]==64;)f++;let p=h&&c==8||f<e&&kt[f]==8?u==1?1:8:256;for(let g=h;g<f;g++)kt[g]=p;h=f-1}else d==8&&u==1&&(kt[h]=1);c=d,d&7&&(u=d)}}}function sA(s,t,e,i,n){let r=n==1?2:1;for(let o=0,a=0,l=0;o<=i.length;o++){let h=o?i[o-1].to:t,c=o<i.length?i[o].from:e;for(let u=h,d,f,p;u<c;u++)if(f=ad[d=s.charCodeAt(u)])if(f<0){for(let g=a-3;g>=0;g-=3)if(bi[g+1]==-f){let m=bi[g+2],O=m&2?n:m&4?m&1?r:n:0;O&&(kt[u]=kt[bi[g]]=O),a=g;break}}else{if(bi.length==189)break;bi[a++]=u,bi[a++]=d,bi[a++]=l}else if((p=kt[u])==2||p==1){let g=p==n;l=g?0:1;for(let m=a-3;m>=0;m-=3){let O=bi[m+2];if(O&2)break;if(g)bi[m+2]|=2;else{if(O&4)break;bi[m+2]|=4}}}}}function nA(s,t,e,i){for(let n=0,r=i;n<=e.length;n++){let o=n?e[n-1].to:s,a=n<e.length?e[n].from:t;for(let l=o;l<a;){let h=kt[l];if(h==256){let c=l+1;for(;;)if(c==a){if(n==e.length)break;c=e[n++].to,a=n<e.length?e[n].from:t}else if(kt[c]==256)c++;else break;let u=r==1,d=(c<t?kt[c]:i)==1,f=u==d?u?1:2:i;for(let p=c,g=n,m=g?e[g-1].to:s;p>l;)p==m&&(p=e[--g].from,m=g?e[g-1].to:s),kt[--p]=f;l=c}else r=h,l++}}}function ld(s,t,e,i,n,r,o){let a=i%2?2:1;if(i%2==n%2)for(let l=t,h=0;l<e;){let c=!0,u=!1;if(h==r.length||l<r[h].from){let g=kt[l];g!=a&&(c=!1,u=g==16)}let d=!c&&a==1?[]:null,f=c?i:i+1,p=l;t:for(;;)if(h<r.length&&p==r[h].from){if(u)break t;let g=r[h];if(!c)for(let m=g.to,O=h+1;;){if(m==e)break t;if(O<r.length&&r[O].from==m)m=r[O++].to;else{if(kt[m]==a)break t;break}}if(h++,d)d.push(g);else{g.from>l&&o.push(new Ti(l,g.from,f));let m=g.direction==ln!=!(f%2);hd(s,m?i+1:i,n,g.inner,g.from,g.to,o),l=g.to}p=g.to}else{if(p==e||(c?kt[p]!=a:kt[p]==a))break;p++}d?ld(s,l,p,i+1,n,d,o):l<p&&o.push(new Ti(l,p,f)),l=p}else for(let l=e,h=r.length;l>t;){let c=!0,u=!1;if(!h||l>r[h-1].to){let g=kt[l-1];g!=a&&(c=!1,u=g==16)}let d=!c&&a==1?[]:null,f=c?i:i+1,p=l;t:for(;;)if(h&&p==r[h-1].to){if(u)break t;let g=r[--h];if(!c)for(let m=g.from,O=h;;){if(m==t)break t;if(O&&r[O-1].to==m)m=r[--O].from;else{if(kt[m-1]==a)break t;break}}if(d)d.push(g);else{g.to<l&&o.push(new Ti(g.to,l,f));let m=g.direction==ln!=!(f%2);hd(s,m?i+1:i,n,g.inner,g.from,g.to,o),l=g.from}p=g.from}else{if(p==t||(c?kt[p-1]!=a:kt[p-1]==a))break;p--}d?ld(s,p,l,i+1,n,d,o):p<l&&o.push(new Ti(p,l,f)),l=p}}function hd(s,t,e,i,n,r,o){let a=t%2?2:1;iA(s,n,r,i,a),sA(s,n,r,i,a),nA(n,r,i,a),ld(s,n,r,t,e,i,o)}function rA(s,t,e){if(!s)return[new Ti(0,0,t==xf?1:0)];if(t==ln&&!e.length&&!eA.test(s))return jx(s.length);if(e.length)for(;s.length>kt.length;)kt[kt.length]=256;let i=[],n=t==ln?0:1;return hd(s,n,n,e,0,s.length,i),i}function jx(s){return[new Ti(0,s,0)]}let Ux="";function oA(s,t,e,i,n){var r;let o=i.head-s.from,a=Ti.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),l=t[a],h=l.side(n,e);if(o==h){let d=a+=n?1:-1;if(d<0||d>=t.length)return null;l=t[a=d],o=l.side(!n,e),h=l.side(n,e)}let c=re(s.text,o,l.forward(n,e));(c<l.from||c>l.to)&&(c=h),Ux=s.text.slice(Math.min(o,c),Math.max(o,c));let u=a==(n?t.length-1:0)?null:t[a+(n?1:-1)];return u&&c==h&&u.level+(n?0:1)<l.level?D.cursor(u.side(!n,e)+s.from,u.forward(n,e)?1:-1,u.level):D.cursor(c+s.from,l.forward(n,e)?-1:1,l.level)}function aA(s,t,e){for(let i=t;i<e;i++){let n=Fx(s.charCodeAt(i));if(n==1)return ln;if(n==2||n==4)return xf}return ln}const Hx=j.define(),Kx=j.define(),Jx=j.define(),tb=j.define(),cd=j.define(),eb=j.define(),ib=j.define(),bf=j.define(),wf=j.define(),sb=j.define({combine:s=>s.some(t=>t)}),nb=j.define({combine:s=>s.some(t=>t)}),rb=j.define();class jn{constructor(t,e,i,n,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=n,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new jn(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new jn(D.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const ka=rt.define({map:(s,t)=>s.map(t)}),ob=rt.define();function Qe(s,t,e){let i=s.facet(tb);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}const Fi=j.define({combine:s=>s.length?s[0]:!0});let lA=0;const Dn=j.define({combine(s){return s.filter((t,e)=>{for(let i=0;i<e;i++)if(s[i].plugin==t.plugin)return!1;return!0})}});class Nt{constructor(t,e,i,n,r){this.id=t,this.create=e,this.domEventHandlers=i,this.domEventObservers=n,this.baseExtensions=r(this),this.extension=this.baseExtensions.concat(Dn.of({plugin:this,arg:void 0}))}of(t){return this.baseExtensions.concat(Dn.of({plugin:this,arg:t}))}static define(t,e){const{eventHandlers:i,eventObservers:n,provide:r,decorations:o}=e||{};return new Nt(lA++,t,i,n,a=>{let l=[];return o&&l.push(uh.of(h=>{let c=h.plugin(a);return c?o(c):et.none})),r&&l.push(r(a)),l})}static fromClass(t,e){return Nt.define((i,n)=>new t(i,n),e)}}class dc{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Qe(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Qe(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Qe(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const ab=j.define(),Sf=j.define(),uh=j.define(),lb=j.define(),vf=j.define(),Vo=j.define(),hb=j.define();function mm(s,t){let e=s.state.facet(hb);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(s):r),n=[];return ut.spans(i,t.from,t.to,{point(){},span(r,o,a,l){let h=r-t.from,c=o-t.from,u=n;for(let d=a.length-1;d>=0;d--,l--){let f=a[d].spec.bidiIsolate,p;if(f==null&&(f=aA(t.text,h,c)),l>0&&u.length&&(p=u[u.length-1]).to==h&&p.direction==f)p.to=c,u=p.inner;else{let g={from:h,to:c,direction:f,inner:[]};u.push(g),u=g.inner}}}}),n}const cb=j.define();function _f(s){let t=0,e=0,i=0,n=0;for(let r of s.state.facet(cb)){let o=r(s);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(n=Math.max(n,o.bottom)))}return{left:t,right:e,top:i,bottom:n}}const Yr=j.define();class Je{constructor(t,e,i,n){this.fromA=t,this.toA=e,this.fromB=i,this.toB=n}join(t){return new Je(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let n=t[e-1];if(!(n.fromA>i.toA)){if(n.toA<i.fromA)break;i=i.join(n),t.splice(e-1,1)}}return t.splice(e,0,i),t}static extendWithRanges(t,e){if(e.length==0)return t;let i=[];for(let n=0,r=0,o=0;;){let a=n<t.length?t[n].fromB:1e9,l=r<e.length?e[r]:1e9,h=Math.min(a,l);if(h==1e9)break;let c=h+o,u=h,d=c;for(;;)if(r<e.length&&e[r]<=u){let f=e[r+1];r+=2,u=Math.max(u,f);for(let p=n;p<t.length&&t[p].fromB<=u;p++)o=t[p].toA-t[p].toB;d=Math.max(d,f+o)}else if(n<t.length&&t[n].fromB<=u){let f=t[n++];u=Math.max(u,f.toB),d=Math.max(d,f.toA),o=f.toA-f.toB}else break;i.push(new Je(c,d,h,u))}return i}}class Ml{constructor(t,e,i){this.view=t,this.state=e,this.transactions=i,this.flags=0,this.startState=t.state,this.changes=Kt.empty(this.startState.doc.length);for(let r of i)this.changes=this.changes.compose(r.changes);let n=[];this.changes.iterChangedRanges((r,o,a,l)=>n.push(new Je(r,o,a,l))),this.changedRanges=n}static create(t,e,i){return new Ml(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}const hA=[];class Xt{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return hA}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&NM(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let n of this.children){if(n==t)return i;i+=n.length+n.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=vs(this.dom),n=this.length?t>0:e>0;return new ui(this.parent.dom,i+(n?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof fh)return t;return null}static get(t){return t.cmTile}}class dh extends Xt{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,n,r=(t==null?void 0:t.node)==e?t:null,o=0;for(let a of this.children){if(a.sync(t),o+=a.length+a.breakAfter,n=i?i.nextSibling:e.firstChild,r&&n!=a.dom&&(r.written=!0),a.dom.parentNode==e)for(;n&&n!=a.dom;)n=Om(n);else e.insertBefore(a.dom,n);i=a.dom}for(n=i?i.nextSibling:e.firstChild,r&&n&&(r.written=!0);n;)n=Om(n);this.length=o}}function Om(s){let t=s.nextSibling;return s.parentNode.removeChild(s),t}class fh extends dh{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=Xt.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,n=0,r=0;;)if(n==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,n=e.pop()}else{let o=i.children[n++];if(o instanceof Ki)e.push(n),i=o,n=0;else{let a=r+o.length,l=t(o,r);if(l!==void 0)return l;r=a+o.breakAfter}}}resolveBlock(t,e){let i,n=-1,r,o=-1;if(this.blockTiles((a,l)=>{let h=l+a.length;if(t>=l&&t<=h){if(a.isWidget()&&e>=-1&&e<=1){if(a.flags&32)return!0;a.flags&16&&(i=void 0)}(l<t||t==h&&(e<-1?a.length:a.covers(1)))&&(!i||!a.isWidget()&&i.isWidget())&&(i=a,n=t-l),(h>t||t==l&&(e>1?a.length:a.covers(-1)))&&(!r||!a.isWidget()&&r.isWidget())&&(r=a,o=t-l)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:n}:{tile:r,offset:o}}}class Ki extends dh{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new Ki(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}}class or extends dh{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let n=new or(e||document.createElement("div"),t);return(!e||!i)&&(n.flags|=4),n}get domAttrs(){return this.attrs}resolveInline(t,e,i){let n=null,r=-1,o=null,a=-1;function l(c,u){for(let d=0,f=0;d<c.children.length&&f<=u;d++){let p=c.children[d],g=f+p.length;g>=u&&(p.isComposite()?l(p,u-f):(!o||o.isHidden&&(e>0||i&&uA(o,p)))&&(g>u||p.flags&32)?(o=p,a=u-f):(f<u||p.flags&16&&!p.isHidden)&&(n=p,r=u-f)),f=g}}l(this,t);let h=(e<0?n:o)||n||o;return h?{tile:h,offset:h==n?r:a}:null}coordsIn(t,e){let i=this.resolveInline(t,e,!0);return i?i.tile.coordsIn(Math.max(0,i.offset),e):cA(this)}domIn(t,e){let i=this.resolveInline(t,e);if(i){let{tile:n,offset:r}=i;if(this.dom.contains(n.dom))return n.isText()?new ui(n.dom,Math.min(n.dom.nodeValue.length,r)):n.domPosFor(r,n.flags&16?1:n.flags&32?-1:e);let o=i.tile.parent,a=!1;for(let l of o.children){if(a)return new ui(l.dom,0);l==i.tile&&(a=!0)}}return new ui(this.dom,0)}}function cA(s){let t=s.dom.lastChild;if(!t)return s.dom.getBoundingClientRect();let e=el(t);return e[e.length-1]||null}function uA(s,t){let e=s.coordsIn(0,1),i=t.coordsIn(0,1);return e&&i&&i.top<e.bottom}class Ae extends dh{constructor(t,e){super(t),this.mark=e}get domAttrs(){return this.mark.attrs}static of(t,e){let i=new Ae(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}}class qs extends Xt{constructor(t,e){super(t,e.length),this.text=e}sync(t){this.flags&2||(super.sync(t),this.dom.nodeValue!=this.text&&(t&&t.node==this.dom&&(t.written=!0),this.dom.nodeValue=this.text))}isText(){return!0}toString(){return JSON.stringify(this.text)}coordsIn(t,e){let i=this.dom.nodeValue.length;t>i&&(t=i);let n=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?U.chrome||U.gecko||(t?(n--,o=1):r<i&&(r++,o=-1)):e<0?n--:r<i&&r++;let a=To(this.dom,n,r).getClientRects();if(!a.length)return null;let l=a[(o?o<0:e>=0)?0:a.length-1];return U.safari&&!o&&l.width==0&&(l=Array.prototype.find.call(a,h=>h.width)||l),o?Tl(l,o<0):l||null}static of(t,e){let i=new qs(e||document.createTextNode(t),t);return e||(i.flags|=2),i}}class hn extends Xt{constructor(t,e,i,n){super(t,e,n),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let n=this.widget.coordsAt(this.dom,t,e);if(n)return n;if(i)return Tl(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let a=this.flags&16?!0:this.flags&32?!1:t>0;for(let l=a?r.length-1:0;o=r[l],!(t>0?l==0:l==r.length-1||o.top<o.bottom);l+=a?-1:1);return Tl(o,!a)}}get overrideDOMText(){if(!this.length)return mt.empty;let{root:t}=this;if(!t)return mt.empty;let e=this.posAtStart;return t.view.state.doc.slice(e,e+this.length)}destroy(){super.destroy(),this.widget.destroy(this.dom)}static of(t,e,i,n,r){return r||(r=t.toDOM(e),t.editable||(r.contentEditable="false")),new hn(r,i,t,n)}}class Al extends Xt{constructor(t){let e=document.createElement("img");e.className="cm-widgetBuffer",e.setAttribute("aria-hidden","true"),super(e,0,t)}get isHidden(){return!0}get overrideDOMText(){return mt.empty}coordsIn(t){return this.dom.getBoundingClientRect()}}class dA{constructor(t){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=t}advance(t,e,i){let{tile:n,index:r,beforeBreak:o,parents:a}=this;for(;t||e>0;)if(n.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==n.children.length){if(!t&&!a.length)break;i&&i.leave(n),o=!!n.breakAfter,{tile:n,index:r}=a.pop(),r++}else{let l=n.children[r],h=l.breakAfter;(e>0?l.length<=t:l.length<t)&&(!i||i.skip(l,0,l.length)!==!1||!l.isComposite)?(o=!!h,r++,t-=l.length):(a.push({tile:n,index:r}),n=l,r=0,i&&l.isComposite()&&i.enter(l))}else if(r==n.length)o=!!n.breakAfter,{tile:n,index:r}=a.pop(),r++;else if(t){let l=Math.min(t,n.length-r);i&&i.skip(n,r,r+l),t-=l,r+=l}else break;return this.tile=n,this.index=r,this.beforeBreak=o,this}get root(){return this.parents.length?this.parents[0].tile:this.tile}}class fA{constructor(t,e,i,n){this.from=t,this.to=e,this.wrapper=i,this.rank=n}}class pA{constructor(t,e,i){this.cache=t,this.root=e,this.blockWrappers=i,this.curLine=null,this.lastBlock=null,this.afterWidget=null,this.pos=0,this.wrappers=[],this.wrapperPos=0}addText(t,e,i,n){var r;this.flushBuffer();let o=this.ensureMarks(e,i),a=o.lastChild;if(a&&a.isText()&&!(a.flags&8)&&a.length+t.length<512){this.cache.reused.set(a,2);let l=o.children[o.children.length-1]=new qs(a.dom,a.text+t);l.parent=o}else o.append(n||qs.of(t,(r=this.cache.find(qs))===null||r===void 0?void 0:r.dom));this.pos+=t.length,this.afterWidget=null}addComposition(t,e){let i=this.curLine;i.dom!=e.line.dom&&(i.setDOM(this.cache.reused.has(e.line)?fc(e.line.dom):e.line.dom),this.cache.reused.set(e.line,2));let n=i;for(let a=e.marks.length-1;a>=0;a--){let l=e.marks[a],h=n.lastChild;if(h instanceof Ae&&h.mark.eq(l.mark))h.dom!=l.dom&&h.setDOM(fc(l.dom)),n=h;else{if(this.cache.reused.get(l)){let u=Xt.get(l.dom);u&&u.setDOM(fc(l.dom))}let c=Ae.of(l.mark,l.dom);n.append(c),n=c}this.cache.reused.set(l,2)}let r=Xt.get(t.text);r&&this.cache.reused.set(r,2);let o=new qs(t.text,t.text.nodeValue);o.flags|=8,this.pos=t.range.toB,n.append(o)}addInlineWidget(t,e,i){let n=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);n||this.flushBuffer();let r=this.ensureMarks(e,i);!n&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=ub);let n=or.start(t,e||((i=this.cache.find(or))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=n)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let n=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],a;if(e>0&&(a=n.lastChild)&&a instanceof Ae&&a.mark.eq(o))n=a,e--;else{let l=Ae.of(o,(i=this.cache.find(Ae,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);n.append(l),n=l,e=0}}return n}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!ym(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(U.ios&&ym(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(pc,0,32)||new hn(pc.toDOM(),0,pc,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to<this.pos&&this.wrappers.splice(t,1);for(let t=this.blockWrappers;t.value&&t.from<=this.pos;t.next())if(t.to>=this.pos){let e=t.rank*102+t.value.rank,i=new fA(t.from,t.to,t.value,e),n=this.wrappers.length;for(;n>0&&(this.wrappers[n-1].rank-i.rank||this.wrappers[n-1].to-i.to)<0;)n--;this.wrappers.splice(n,0,i)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let n=e.lastChild;if(i.from<this.pos&&n instanceof Ki&&n.wrapper.eq(i.wrapper))e=n;else{let r=Ki.of(i.wrapper,(t=this.cache.find(Ki,o=>o.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Al,void 0,1);return i&&(i.flags=e),i||new Al(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}}class gA{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:n,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=n;let a=this.textOff=Math.min(t,n.length);return r?null:n.slice(0,a)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}}const Ql=[hn,or,qs,Ae,Al,Ki,fh];for(let s=0;s<Ql.length;s++)Ql[s].bucket=s;class mA{constructor(t){this.view=t,this.buckets=Ql.map(()=>[]),this.index=Ql.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let n=t.bucket,r=this.buckets[n],o=this.index[n];for(let a=r.length-1;a>=0;a--){let l=(a+o)%r.length,h=r[l];if((!e||e(h))&&!this.reused.has(h))return r.splice(l,1),l<o&&this.index[n]--,this.reused.set(h,i),h}return null}findWidget(t,e,i){let n=this.buckets[0];if(n.length)for(let r=0,o=0;;r++){if(r==n.length){if(o)return null;o=1,r=0}let a=n[r];if(!this.reused.has(a)&&(o==0?a.widget.compare(t):a.widget.constructor==t.constructor&&t.updateDOM(a.dom,this.view,a.widget)))return n.splice(r,1),r<this.index[0]&&this.index[0]--,a.widget==t&&a.length==e&&(a.flags&497)==i?(this.reused.set(a,1),a):(this.reused.set(a,2),new hn(a.dom,e,t,a.flags&-498|i))}}reuse(t){return this.reused.set(t,1),t}maybeReuse(t,e=2){if(!this.reused.has(t))return this.reused.set(t,e),t.dom}clear(){for(let t=0;t<this.buckets.length;t++)this.buckets[t].length=this.index[t]=0}}class OA{constructor(t,e,i,n,r){this.view=t,this.decorations=n,this.disallowBlockEffectsFor=r,this.openWidget=!1,this.openMarks=0,this.cache=new mA(t),this.text=new gA(t.state.doc),this.builder=new pA(this.cache,new fh(t,t.contentDOM),ut.iter(i)),this.cache.reused.set(e,2),this.old=new dA(e),this.reuseWalker={skip:(o,a,l)=>{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let n=0,r=0,o=0;;){let a=o<t.length?t[o++]:null,l=a?a.fromA:this.old.root.length;if(l>n){let h=l-n;this.preserve(h,!o,!a),n=l,r+=h}if(!a)break;e&&a.fromA<=e.range.fromA&&a.toA>=e.range.toA?(this.forward(a.fromA,e.range.fromA,e.range.fromA<e.range.toA?1:-1),this.emit(r,e.range.fromB),this.cache.clear(),this.builder.addComposition(e,i),this.text.skip(e.range.toB-e.range.fromB),this.forward(e.range.fromA,a.toA),this.emit(e.range.toB,a.toB)):(this.forward(a.fromA,a.toA),this.emit(r,a.toB)),r=a.toB,n=a.toA}return this.builder.curLine&&this.builder.endLine(),this.builder.root}preserve(t,e,i){let n=bA(this.old),r=this.openMarks;this.old.advance(t,i?1:-1,{skip:(o,a,l)=>{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(l-a);else{let h=l>0||a<o.length?hn.of(o.widget,this.view,l-a,o.flags&496,this.cache.maybeReuse(o)):this.cache.reuse(o);h.flags&256?(h.flags&=-2,this.builder.addBlockWidget(h)):(this.builder.ensureLine(null),this.builder.addInlineWidget(h,n,r),r=n.length)}else if(o.isText())this.builder.ensureLine(null),!a&&l==o.length&&!this.cache.reused.has(o)?this.builder.addText(o.text,n,r,this.cache.reuse(o)):(this.cache.add(o),this.builder.addText(o.text.slice(a,l),n,r)),r=n.length;else if(o.isLine())o.flags&=-2,this.cache.reused.set(o,1),this.builder.addLine(o);else if(o instanceof Al)this.cache.add(o);else if(o instanceof Ae)this.builder.ensureLine(null),this.builder.addMark(o,n,r),this.cache.reused.set(o,1),r=n.length;else return!1;this.openWidget=!1},enter:o=>{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof Ae&&n.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?n.length&&(n.length=r=0):o instanceof Ae&&(n.shift(),r=Math.min(r,n.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,n=this.builder,r=0,o=ut.spans(this.decorations,t,e,{point:(a,l,h,c,u,d)=>{if(h instanceof an){if(this.disallowBlockEffectsFor[d]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(l>this.view.state.doc.lineAt(a).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=c.length,u>c.length)n.continueWidget(l-a);else{let f=h.widget||(h.block?ar.block:ar.inline),p=yA(h),g=this.cache.findWidget(f,l-a,p)||hn.of(f,this.view,l-a,p);h.block?(h.startSide>0&&n.addLineStartIfNotCovered(i),n.addBlockWidget(g)):(n.ensureLine(i),n.addInlineWidget(g,c,u))}i=null}else i=xA(i,h);l>a&&this.text.skip(l-a)},span:(a,l,h,c)=>{for(let u=a;u<l;){let d=this.text.next(Math.min(512,l-u));d==null?(n.addLineStartIfNotCovered(i),n.addBreak(),u++):(n.ensureLine(i),n.addText(d,h,u==a?c:h.length),u+=d.length),i=null}}});n.addLineStartIfNotCovered(i),this.openWidget=o>r,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let n=t.parentNode;;n=n.parentNode){let r=Xt.get(n);if(n==this.view.contentDOM)break;r instanceof Ae?e.push(r):r!=null&&r.isLine()?i=r:r instanceof Ki||(n.nodeName=="DIV"&&!i&&n!=this.view.contentDOM?i=new or(n,ub):i||e.push(Ae.of(new Yo({tagName:n.nodeName.toLowerCase(),attributes:VM(n)}),n)))}return{line:i,marks:e}}}function ym(s,t){let e=i=>{for(let n of i.children)if((t?n.isText():n.length)||e(n))return!0;return!1};return e(s)}function yA(s){let t=s.isReplace?(s.startSide<0?64:0)|(s.endSide>0?128:0):s.startSide>0?32:16;return s.block&&(t|=256),t}const ub={class:"cm-line"};function xA(s,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(s||(s={class:"cm-line"}),e&&Of(e,s),i&&(s.class+=" "+i)),s}function bA(s){let t=[];for(let e=s.parents.length;e>1;e--){let i=e==s.parents.length?s.tile:s.parents[e].tile;i instanceof Ae&&t.push(i.mark)}return t}function fc(s){let t=Xt.get(s);return t&&t.setDOM(s.cloneNode()),s}class ar extends Zi{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}ar.inline=new ar("span");ar.block=new ar("div");const pc=new class extends Zi{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}};class xm{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=et.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new fh(t,t.contentDOM),this.updateInner([new Je(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:c,toA:u})=>u<this.minWidthFrom||c>this.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let n=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?n=this.domChanged.newSel.head:!TA(t.changes,this.hasComposition)&&!t.selectionSet&&(n=t.state.selection.main.head));let r=n>-1?SA(this.view,t.changes,n):null;if(this.domChanged=null,this.hasComposition){let{from:c,to:u}=this.hasComposition;i=new Je(c,u,t.changes.mapPos(c,-1),t.changes.mapPos(u,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(U.ie||U.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,a=this.blockWrappers;this.updateDeco();let l=kA(o,this.decorations,t.changes);l.length&&(i=Je.extendWithRanges(i,l));let h=CA(a,this.blockWrappers,t.changes);return h.length&&(i=Je.extendWithRanges(i,h)),r&&!i.some(c=>c.fromA<=r.range.fromA&&c.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,a=new OA(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&Xt.get(e.text)&&a.cache.reused.set(Xt.get(e.text),2),this.tile=a.run(t,e),ud(o,a.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=U.chrome||U.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let n=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let r of this.tile.children)r.isWidget()&&r.widget instanceof gc&&n.push(r.dom);i.updateGaps(n)}updateEditContextFormatting(t){this.editContextFormatting=this.editContextFormatting.map(t.changes);for(let e of t.transactions)for(let i of e.effects)i.is(ob)&&(this.editContextFormatting=i.value)}updateSelection(t=!1,e=!1){(t||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let{dom:i}=this.tile,n=this.view.root.activeElement,r=n==i,o=!r&&!(this.view.state.facet(Fi)||i.tabIndex>-1)&&no(i,this.view.observer.selectionRange)&&!(n&&i.contains(n));if(!(r||e||o))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,h,c;if(l.empty?c=h=this.inlineDOMNearPos(l.anchor,l.assoc||1):(c=this.inlineDOMNearPos(l.head,l.head==l.from?1:-1),h=this.inlineDOMNearPos(l.anchor,l.anchor==l.from?1:-1)),U.gecko&&l.empty&&!this.hasComposition&&wA(h)){let d=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(d,h.node.childNodes[h.offset]||null)),h=c=new ui(d,0),a=!0}let u=this.view.observer.selectionRange;(a||!u.focusNode||(!ro(h.node,h.offset,u.anchorNode,u.anchorOffset)||!ro(c.node,c.offset,u.focusNode,u.focusOffset))&&!this.suppressWidgetCursorChange(u,l))&&(this.view.observer.ignore(()=>{U.android&&U.chrome&&i.contains(u.focusNode)&&PA(u.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let d=Po(this.view.root);if(d)if(l.empty){if(U.gecko){let f=vA(h.node,h.offset);if(f&&f!=3){let p=(f==1?Yx:Nx)(h.node,h.offset);p&&(h=new ui(p.node,p.offset))}}d.collapse(h.node,h.offset),l.bidiLevel!=null&&d.caretBidiLevel!==void 0&&(d.caretBidiLevel=l.bidiLevel)}else if(d.extend){d.collapse(h.node,h.offset);try{d.extend(c.node,c.offset)}catch{}}else{let f=document.createRange();l.anchor>l.head&&([h,c]=[c,h]),f.setEnd(c.node,c.offset),f.setStart(h.node,h.offset),d.removeAllRanges(),d.addRange(f)}o&&this.view.root.activeElement==i&&(i.blur(),n&&n.focus())}),this.view.observer.setSelectionRange(h,c)),this.impreciseAnchor=h.precise?null:new ui(u.anchorNode,u.anchorOffset),this.impreciseHead=c.precise?null:new ui(u.focusNode,u.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ro(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=Po(t.root),{anchorNode:n,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let a=o.posAtStart;if(e.head==a||e.head==a+o.length)return;let l=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!l||!h||l.bottom>h.top)return;let c=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(c.node,c.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let u=t.observer.selectionRange;t.docView.posFromDOM(u.anchorNode,u.anchorOffset)!=e.from&&i.collapse(n,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let n=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=is(t)==0?0:e==0?-1:1;for(;;){let a=t.parentNode;if(a==i.dom)break;o==0&&a.firstChild!=a.lastChild&&(t==a.firstChild?o=-1:o=1),t=a}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return n;for(;r&&!Xt.get(r);)r=r.nextSibling;if(!r)return n+i.length;for(let o=0,a=n;;o++){let l=i.children[o];if(l.dom==r)return a;a+=l.length+l.breakAfter}}else return i.isText()?t==i.dom?n+e:n+(e?i.length:0):n}domAtPos(t,e){let{tile:i,offset:n}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(n,e)}inlineDOMNearPos(t,e){let i,n=-1,r=!1,o,a=-1,l=!1;return this.tile.blockTiles((h,c)=>{if(h.isWidget()){if(h.flags&32&&c>=t)return!0;h.flags&16&&(r=!0)}else{let u=c+h.length;if(c<=t&&(i=h,n=t-c,r=u<t),u>=t&&!o&&(o=h,a=t-c,l=c>t),c>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:l&&i&&(o=null),i&&e<0||!o?i.domIn(n,e):o.domIn(a,e))}coordsAt(t,e){let{tile:i,offset:n}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof gc?null:i.coordsInWidget(n,e,!0):i.coordsIn(n,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function n(r,o){if(r.isComposite())for(let a of r.children){if(a.length>=o){let l=n(a,o);if(l)return l}if(o-=a.length,o<0)break}else if(r.isText()&&o<r.length){let a=re(r.text,o);if(a==o)return null;let l=To(r.dom,o,a).getClientRects();for(let h=0;h<l.length;h++){let c=l[h];if(h==l.length-1||c.top<c.bottom&&c.left<c.right)return c}}return null}return n(e,i)}measureVisibleLineHeights(t){let e=[],{from:i,to:n}=t,r=this.view.contentDOM.clientWidth,o=r>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,a=-1,l=this.view.textDirection==$t.LTR,h=0,c=(u,d,f)=>{for(let p=0;p<u.children.length&&!(d>n);p++){let g=u.children[p],m=d+g.length,O=g.dom.getBoundingClientRect(),{height:x}=O;if(f&&!p&&(h+=O.top-f.top),g instanceof Ki)m>i&&c(g,d,O);else if(d>=i&&(h>0&&e.push(-h),e.push(x+h),h=0,o)){let b=g.dom.lastChild,v=b?el(b):[];if(v.length){let w=v[v.length-1],S=l?w.right-O.left:O.right-w.left;S>a&&(a=S,this.minWidth=r,this.minWidthFrom=d,this.minWidthTo=m)}}f&&p==u.children.length-1&&(h+=f.bottom-O.bottom),d=m+g.breakAfter}};return c(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?$t.RTL:$t.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let a=0,l;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let c=el(h.dom);if(c.length!=1)return;a+=c[0].width,l=c[0].height}if(a)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:a/o.length,textHeight:l}}});if(t)return t;let e=document.createElement("div"),i,n,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=el(e.firstChild)[0];i=e.getBoundingClientRect().height,n=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:n,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,n=0;;n++){let r=n==e.viewports.length?null:e.viewports[n],o=r?r.from-1:this.view.state.doc.length;if(o>i){let a=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(et.replace({widget:new gc(a),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return et.set(t)}updateDeco(){let t=1,e=this.view.state.facet(uh).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,n=this.view.state.facet(vf).map((r,o)=>{let a=typeof r=="function";return a&&(i=!0),a?r(this.view):r});for(n.length&&(this.dynamicDecorationMap[t++]=i,e.push(ut.join(n))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];t<this.decorations.length;)this.dynamicDecorationMap[t++]=!1;this.blockWrappers=this.view.state.facet(lb).map(r=>typeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let c=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=c.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let c of this.view.state.facet(rb))try{if(c(this.view,t.range,t))return!0}catch(u){Qe(this.view.state,u,"scroll handler")}let{range:i}=t,n=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!n)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(n={left:Math.min(n.left,r.left),top:Math.min(n.top,r.top),right:Math.max(n.right,r.right),bottom:Math.max(n.bottom,r.bottom)});let o=_f(this.view),a={left:n.left-o.left,top:n.top-o.top,right:n.right+o.right,bottom:n.bottom+o.bottom},{offsetWidth:l,offsetHeight:h}=this.view.scrollDOM;if(jM(this.view.scrollDOM,a,i.head<i.anchor?-1:1,t.x,t.y,Math.max(Math.min(t.xMargin,l),-l),Math.max(Math.min(t.yMargin,h),-h),this.view.textDirection==$t.LTR),window.visualViewport&&window.innerHeight-window.visualViewport.height>1&&(n.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||n.bottom<window.pageYOffset+window.visualViewport.offsetTop)){let c=this.view.docView.lineAt(i.head,1);c&&c.dom.scrollIntoView({block:"nearest"})}}lineHasWidget(t){let e=i=>i.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){ud(this.tile)}}function ud(s,t){let e=t==null?void 0:t.get(s);if(e!=1){e==null&&s.destroy();for(let i of s.children)ud(i,t)}}function wA(s){return s.node.nodeType==1&&s.node.firstChild&&(s.offset==0||s.node.childNodes[s.offset-1].contentEditable=="false")&&(s.offset==s.node.childNodes.length||s.node.childNodes[s.offset].contentEditable=="false")}function db(s,t){let e=s.observer.selectionRange;if(!e.focusNode)return null;let i=Yx(e.focusNode,e.focusOffset),n=Nx(e.focusNode,e.focusOffset),r=i||n;if(n&&i&&n.node!=i.node){let a=Xt.get(n.node);if(!a||a.isText()&&a.text!=n.node.nodeValue)r=n;else if(s.docView.lastCompositionAfterCursor){let l=Xt.get(i.node);!l||l.isText()&&l.text!=i.node.nodeValue||(r=n)}}if(s.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function SA(s,t,e){let i=db(s,e);if(!i)return null;let{node:n,from:r,to:o}=i,a=n.nodeValue;if(/[\n\r]/.test(a)||s.state.doc.sliceString(i.from,i.to)!=a)return null;let l=t.invertedDesc;return{range:new Je(l.mapPos(r),l.mapPos(o),r,o),text:n}}function vA(s,t){return s.nodeType!=1?0:(t&&s.childNodes[t-1].contentEditable=="false"?1:0)|(t<s.childNodes.length&&s.childNodes[t].contentEditable=="false"?2:0)}let _A=class{constructor(){this.changes=[]}compareRange(t,e){Fn(t,e,this.changes)}comparePoint(t,e){Fn(t,e,this.changes)}boundChange(t){Fn(t,t,this.changes)}};function kA(s,t,e){let i=new _A;return ut.compare(s,t,e,i),i.changes}class $A{constructor(){this.changes=[]}compareRange(t,e){Fn(t,e,this.changes)}comparePoint(){}boundChange(t){Fn(t,t,this.changes)}}function CA(s,t,e){let i=new $A;return ut.compare(s,t,e,i),i.changes}function PA(s,t){for(let e=s;e&&e!=t;e=e.assignedSlot||e.parentNode)if(e.nodeType==1&&e.contentEditable=="false")return!0;return!1}function TA(s,t){let e=!1;return t&&s.iterChangedRanges((i,n)=>{i<t.to&&n>t.from&&(e=!0)}),e}class gc extends Zi{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}function MA(s,t,e=1){let i=s.charCategorizer(t),n=s.doc.lineAt(t),r=t-n.from;if(n.length==0)return D.cursor(t);r==0?e=1:r==n.length&&(e=-1);let o=r,a=r;e<0?o=re(n.text,r,!1):a=re(n.text,r);let l=i(n.text.slice(o,a));for(;o>0;){let h=re(n.text,o,!1);if(i(n.text.slice(h,o))!=l)break;o=h}for(;a<n.length;){let h=re(n.text,a);if(i(n.text.slice(a,h))!=l)break;a=h}return D.range(o+n.from,a+n.from)}function AA(s,t,e,i,n){let r=Math.round((i-t.left)*s.defaultCharacterWidth);if(s.lineWrapping&&e.height>s.defaultLineHeight*1.5){let a=s.viewState.heightOracle.textHeight,l=Math.floor((n-e.top-(s.defaultLineHeight-a)*.5)/a);r+=l*s.viewState.heightOracle.lineLength}let o=s.state.sliceDoc(e.from,e.to);return e.from+Ju(o,r,s.state.tabSize)}function dd(s,t,e){let i=s.lineBlockAt(t);if(Array.isArray(i.type)){let n;for(let r of i.type){if(r.from>t)break;if(!(r.to<t)){if(r.from<t&&r.to>t)return r;(!n||r.type==fe.Text&&(n.type!=r.type||(e<0?r.from<t:r.to>t)))&&(n=r)}}return n||i}return i}function QA(s,t,e,i){let n=dd(s,t.head,t.assoc||-1),r=!i||n.type!=fe.Text||!(s.lineWrapping||n.widgetLineBreaks)?null:s.coordsAtPos(t.assoc<0&&t.head>n.from?t.head-1:t.head);if(r){let o=s.dom.getBoundingClientRect(),a=s.textDirectionAt(n.from),l=s.posAtCoords({x:e==(a==$t.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(l!=null)return D.cursor(l,e?-1:1)}return D.cursor(e?n.to:n.from,e?-1:1)}function bm(s,t,e,i){let n=s.state.doc.lineAt(t.head),r=s.bidiSpans(n),o=s.textDirectionAt(n.from);for(let a=t,l=null;;){let h=oA(n,r,o,a,e),c=Ux;if(!h){if(n.number==(e?s.state.doc.lines:1))return a;c=`
|
|
258
|
+
`,n=s.state.doc.line(n.number+(e?1:-1)),r=s.bidiSpans(n),h=s.visualLineSide(n,!e)}if(l){if(!l(c))return a}else{if(!i)return h;l=i(c)}a=h}}function RA(s,t,e){let i=s.state.charCategorizer(t),n=i(e);return r=>{let o=i(r);return n==At.Space&&(n=o),n==o}}function EA(s,t,e,i){let n=t.head,r=e?1:-1;if(n==(e?s.state.doc.length:0))return D.cursor(n,t.assoc);let o=t.goalColumn,a,l=s.contentDOM.getBoundingClientRect(),h=s.coordsAtPos(n,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),c=s.documentTop;if(h)o==null&&(o=h.left-l.left),a=r<0?h.top:h.bottom;else{let p=s.viewState.lineBlockAt(n);o==null&&(o=Math.min(l.right-l.left,s.defaultCharacterWidth*(n-p.from))),a=(r<0?p.top:p.bottom)+c}let u=l.left+o,d=s.viewState.heightOracle.textHeight>>1,f=i??d;for(let p=0;;p+=d){let g=a+(f+p)*r,m=fd(s,{x:u,y:g},!1,r);if(e?g>l.bottom:g<l.top)return D.cursor(m.pos,m.assoc);let O=s.coordsAtPos(m.pos,m.assoc),x=O?(O.top+O.bottom)/2:0;if(!O||(e?x>a:x<a))return D.cursor(m.pos,m.assoc,void 0,o)}}function oo(s,t,e){for(;;){let i=0;for(let n of s)n.between(t-1,t+1,(r,o,a)=>{if(t>r&&t<o){let l=i||e||(t-r<o-t?-1:1);t=l<0?r:o,i=l}});if(!i)return t}}function fb(s,t){let e=null;for(let i=0;i<t.ranges.length;i++){let n=t.ranges[i],r=null;if(n.empty){let o=oo(s,n.from,0);o!=n.from&&(r=D.cursor(o,-1))}else{let o=oo(s,n.from,-1),a=oo(s,n.to,1);(o!=n.from||a!=n.to)&&(r=D.range(n.from==n.anchor?o:a,n.from==n.head?o:a))}r&&(e||(e=t.ranges.slice()),e[i]=r)}return e?D.create(e,t.mainIndex):t}function mc(s,t,e){let i=oo(s.state.facet(Vo).map(n=>n(s)),e.from,t.head>e.from?-1:1);return i==e.from?e:D.cursor(i,i<e.from?1:-1)}class Pi{constructor(t,e){this.pos=t,this.assoc=e}}function fd(s,t,e,i){let n=s.contentDOM.getBoundingClientRect(),r=n.top+s.viewState.paddingTop,{x:o,y:a}=t,l=a-r,h;for(;;){if(l<0)return new Pi(0,1);if(l>s.viewState.docHeight)return new Pi(s.state.doc.length,-1);if(h=s.elementAtHeight(l),i==null)break;if(h.type==fe.Text){if(i<0?h.to<s.viewport.from:h.from>s.viewport.to)break;let d=s.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(d&&(i<0?d.top<=l+r:d.bottom>=l+r))break}let u=s.viewState.heightOracle.textHeight/2;l=i>0?h.bottom+u:h.top-u}if(s.viewport.from>=h.to||s.viewport.to<=h.from){if(e)return null;if(h.type==fe.Text){let u=AA(s,n,h,o,a);return new Pi(u,u==h.from?1:-1)}}if(h.type!=fe.Text)return l<(h.top+h.bottom)/2?new Pi(h.from,1):new Pi(h.to,-1);let c=s.docView.lineAt(h.from,2);return(!c||c.length!=h.length)&&(c=s.docView.lineAt(h.from,-2)),new LA(s,o,a,s.textDirectionAt(h.from)).scanTile(c,h.from)}class LA{constructor(t,e,i,n){this.view=t,this.x=e,this.y=i,this.baseDir=n,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to<t)&&(this.line=this.view.state.doc.lineAt(t),this.spans=this.view.bidiSpans(this.line)),this}baseDirAt(t,e){let{line:i,spans:n}=this.bidiSpansAt(t);return n[Ti.find(n,t-i.from,-1,e)].level==this.baseDir}dirAt(t,e){let{line:i,spans:n}=this.bidiSpansAt(t);return n[Ti.find(n,t-i.from,-1,e)].dir}bidiIn(t,e){let{spans:i,line:n}=this.bidiSpansAt(t);return i.length>1||i.length&&(i[0].level!=this.baseDir||i[0].to+n.from<e)}scan(t,e,i=!1){let n=0,r=t.length-1,o=new Set,a=this.bidiIn(t[0],t[r]),l,h,c=-1,u=1e9,d;t:for(;n<r;){let p=r-n,g=n+r>>1;e:if(o.has(g)){let O=n+Math.floor(Math.random()*p);for(let x=0;x<p;x++){if(!o.has(O)){g=O;break e}O++,O==r&&(O=n)}break t}o.add(g);let m=e(g);if(m)for(let O=0;O<m.length;O++){let x=m[O],b=0;if(!(x.width==0&&m.length>1)){if(x.bottom<this.y)(!l||l.bottom<x.bottom)&&(l=x),b=1;else if(x.top>this.y)(!h||h.top>x.top)&&(h=x),b=-1;else{let v=x.left>this.x?this.x-x.left:x.right<this.x?this.x-x.right:0,w=Math.abs(v);w<u&&(c=g,u=w,d=x),v&&(b=v<0==(this.baseDir==$t.LTR)?-1:1)}b==-1&&(!a||this.baseDirAt(t[g],1))?r=g:b==1&&(!a||this.baseDirAt(t[g+1],-1))&&(n=g+1)}}}if(!d){let p=l&&(!h||this.y-l.bottom<h.top-this.y)?l:h;return this.y=(p.top+p.bottom)/2,this.scan(t,e,!0)}if(u&&!i){let{top:p,bottom:g}=d;if(l&&l.bottom>(p+p+g)/3)return this.y=l.bottom-1,this.scan(t,e,!0);if(h&&h.top<(p+g+g)/3)return this.y=h.top+1,this.scan(t,e,!0)}let f=(a?this.dirAt(t[c],1):this.baseDir)==$t.LTR;return{i:c,after:this.x>(d.left+d.right)/2==f}}scanText(t,e){let i=[];for(let r=0;r<t.length;r=re(t.text,r))i.push(e+r);i.push(e+t.length);let n=this.scan(i,r=>{let o=i[r]-e,a=i[r+1]-e;return To(t.dom,o,a).getClientRects()});return n.after?new Pi(i[n.i+1],-1):new Pi(i[n.i],1)}scanTile(t,e){if(!t.length)return new Pi(e,1);if(t.children.length==1){let a=t.children[0];if(a.isText())return this.scanText(a,e);if(a.isComposite())return this.scanTile(a,e)}let i=[e];for(let a=0,l=e;a<t.children.length;a++)i.push(l+=t.children[a].length);let n=this.scan(i,a=>{let l=t.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:To(l.dom,0,l.length)).getClientRects()}),r=t.children[n.i],o=i[n.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):n.after?new Pi(i[n.i+1],-1):new Pi(o,1)}}const $n="";class IA{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet(yt.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=$n}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let n=t;;){this.findPointBefore(i,n);let r=this.text.length;this.readNode(n);let o=Xt.get(n),a=n.nextSibling;if(a==e){o!=null&&o.breakAfter&&!a&&i!=this.view.contentDOM&&this.lineBreak();break}let l=Xt.get(a);(o&&l?o.breakAfter:(o?o.breakAfter:Pl(n))||Pl(a)&&(n.nodeName!="BR"||o!=null&&o.isWidget())&&this.text.length>r)&&!DA(a,e)&&this.lineBreak(),n=a}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,n=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,a;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(a=n.exec(e))&&(r=a.index,o=a[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let l of this.points)l.node==t&&l.pos>this.text.length&&(l.pos-=o-1);i=r+o}}readNode(t){let e=Xt.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let n=i.iter();!n.next().done;)n.lineBreak?this.lineBreak():this.append(n.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(ZA(t,i.node,i.offset)?e:0))}}function ZA(s,t,e){for(;;){if(!t||e<is(t))return!1;if(t==s)return!0;e=vs(t)+1,t=t.parentNode}}function DA(s,t){let e;for(;!(s==t||!s);s=s.nextSibling){let i=Xt.get(s);if(!(i!=null&&i.isWidget()))return!1;i&&(e||(e=[])).push(i)}if(e)for(let i of e){let n=i.overrideDOMText;if(n!=null&&n.length)return!1}return!0}class wm{constructor(t,e){this.node=t,this.offset=e,this.pos=-1}}class BA{constructor(t,e,i,n){this.typeOver=n,this.bounds=null,this.text="",this.domChanged=e>-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,a=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=pb(t.docView.tile,e,i,0))){let l=r||o?[]:zA(t),h=new IA(l,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=WA(l,this.bounds.from)}else{let l=t.observer.selectionRange,h=r&&r.node==l.focusNode&&r.offset==l.focusOffset||!od(t.contentDOM,l.focusNode)?a.main.head:t.docView.posFromDOM(l.focusNode,l.focusOffset),c=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!od(t.contentDOM,l.anchorNode)?a.main.anchor:t.docView.posFromDOM(l.anchorNode,l.anchorOffset),u=t.viewport;if((U.ios||U.chrome)&&a.main.empty&&h!=c&&(u.from>0||u.to<t.state.doc.length)){let d=Math.min(h,c),f=Math.max(h,c),p=u.from-d,g=u.to-f;(p==0||p==1||d==0)&&(g==0||g==-1||f==t.state.doc.length)&&(h=0,c=t.state.doc.length)}if(t.inputState.composing>-1&&a.ranges.length>1)this.newSel=a.replaceRange(D.range(c,h));else if(t.lineWrapping&&c==h&&!(a.main.empty&&a.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let d=t.coordsAtPos(h,-1),f=0;d&&(f=t.inputState.lastTouchY<=d.bottom?-1:1),this.newSel=D.create([D.cursor(h,f)])}else this.newSel=D.single(c,h)}}}function pb(s,t,e,i){if(s.isComposite()){let n=-1,r=-1,o=-1,a=-1;for(let l=0,h=i,c=i;l<s.children.length;l++){let u=s.children[l],d=h+u.length;if(h<t&&d>e)return pb(u,t,e,h);if(d>=t&&n==-1&&(n=l,r=h),h>e&&u.dom.parentNode==s.dom){o=l,a=c;break}c=d,h=d+u.breakAfter}return{from:r,to:a<0?i+s.length:a,startDOM:(n?s.children[n-1].dom.nextSibling:null)||s.dom.firstChild,endDOM:o<s.children.length&&o>=0?s.children[o].dom:null}}else return s.isText()?{from:i,to:i+s.length,startDOM:s.dom,endDOM:s.dom.nextSibling}:null}function gb(s,t){let e,{newSel:i}=t,{state:n}=s,r=n.selection.main,o=s.inputState.lastKeyTime>Date.now()-100?s.inputState.lastKeyCode:-1;if(t.bounds){let{from:a,to:l}=t.bounds,h=r.from,c=null;(o===8||U.android&&t.text.length<l-a)&&(h=r.to,c="end");let u=n.doc.sliceString(a,l,$n),d,f;!r.empty&&r.from>=a&&r.to<=l&&(t.typeOver||u!=t.text)&&u.slice(0,r.from-a)==t.text.slice(0,r.from-a)&&u.slice(r.to-a)==t.text.slice(d=t.text.length-(u.length-(r.to-a)))?e={from:r.from,to:r.to,insert:mt.of(t.text.slice(r.from-a,d).split($n))}:(f=mb(u,t.text,h-a,c))&&(U.chrome&&o==13&&f.toB==f.from+2&&t.text.slice(f.from,f.toB)==$n+$n&&f.toB--,e={from:a+f.from,to:a+f.toA,insert:mt.of(t.text.slice(f.from,f.toB).split($n))})}else i&&(!s.hasFocus&&n.facet(Fi)||Rl(i,r))&&(i=null);if(!e&&!i)return!1;if((U.mac||U.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&s.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=D.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:mt.of([e.insert.toString().replace("."," ")])}):n.doc.lineAt(r.from).to<r.to&&s.docView.lineHasWidget(r.to)&&s.inputState.insertingTextAt>Date.now()-50?e={from:r.from,to:r.to,insert:n.toText(s.inputState.insertingText)}:U.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==`
|
|
259
|
+
`&&s.lineWrapping&&(i&&(i=D.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:mt.of([" "])}),e)return kf(s,e,i,o);if(i&&!Rl(i,r)){let a=!1,l="select";return s.inputState.lastSelectionTime>Date.now()-50&&(s.inputState.lastSelectionOrigin=="select"&&(a=!0),l=s.inputState.lastSelectionOrigin,l=="select.pointer"&&(i=fb(n.facet(Vo).map(h=>h(s)),i))),s.dispatch({selection:i,scrollIntoView:a,userEvent:l}),!0}else return!1}function kf(s,t,e,i=-1){if(U.ios&&s.inputState.flushIOSKey(t))return!0;let n=s.state.selection.main;if(U.android&&(t.to==n.to&&(t.from==n.from||t.from==n.from-1&&s.state.sliceDoc(t.from,n.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&qn(s.contentDOM,"Enter",13)||(t.from==n.from-1&&t.to==n.to&&t.insert.length==0||i==8&&t.insert.length<t.to-t.from&&t.to>n.head)&&qn(s.contentDOM,"Backspace",8)||t.from==n.from&&t.to==n.to+1&&t.insert.length==0&&qn(s.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();s.inputState.composing>=0&&s.inputState.composing++;let o,a=()=>o||(o=XA(s,t,e));return s.state.facet(eb).some(l=>l(s,t.from,t.to,r,a))||s.dispatch(a()),!0}function XA(s,t,e){let i,n=s.state,r=n.selection.main,o=-1;if(t.from==t.to&&t.from<r.from||t.from>r.to){let l=t.from<r.from?-1:1,h=l<0?r.from:r.to,c=oo(n.facet(Vo).map(u=>u(s)),h,l);t.from==c&&(o=c)}if(o>-1)i={changes:t,selection:D.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&s.inputState.composing<0){let l=r.from<t.from?n.sliceDoc(r.from,t.from):"",h=r.to>t.to?n.sliceDoc(t.to,r.to):"";i=n.replaceSelection(s.state.toText(l+t.insert.sliceString(0,void 0,s.state.lineBreak)+h))}else{let l=n.changes(t),h=e&&e.main.to<=l.newLength?e.main:void 0;if(n.selection.ranges.length>1&&(s.inputState.composing>=0||s.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let c=s.state.sliceDoc(t.from,t.to),u,d=e&&db(s,e.main.head);if(d){let p=t.insert.length-(t.to-t.from);u={from:d.from,to:d.to-p}}else u=s.state.doc.lineAt(r.head);let f=r.to-t.to;i=n.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:l,range:h||p.map(l)};let g=p.to-f,m=g-c.length;if(s.state.sliceDoc(m,g)!=c||g>=u.from&&m<=u.to)return{range:p};let O=n.changes({from:m,to:g,insert:t.insert}),x=p.to-r.to;return{changes:O,range:h?D.range(Math.max(0,h.anchor+x),Math.max(0,h.head+x)):p.map(O)}})}else i={changes:l,selection:h&&n.selection.replaceRange(h)}}let a="input.type";return(s.composing||s.inputState.compositionPendingChange&&s.inputState.compositionEndedAt>Date.now()-50)&&(s.inputState.compositionPendingChange=!1,a+=".compose",s.inputState.compositionFirstChange&&(a+=".start",s.inputState.compositionFirstChange=!1)),n.update(i,{userEvent:a,scrollIntoView:!0})}function mb(s,t,e,i){let n=Math.min(s.length,t.length),r=0;for(;r<n&&s.charCodeAt(r)==t.charCodeAt(r);)r++;if(r==n&&s.length==t.length)return null;let o=s.length,a=t.length;for(;o>0&&a>0&&s.charCodeAt(o-1)==t.charCodeAt(a-1);)o--,a--;if(i=="end"){let l=Math.max(0,r-Math.min(o,a));e-=o+l-r}if(o<r&&s.length<t.length){let l=e<=r&&e>=o?r-e:0;r-=l,a=r+(a-o),o=r}else if(a<r){let l=e<=r&&e>=a?r-e:0;r-=l,o=r+(o-a),a=r}return{from:r,toA:o,toB:a}}function zA(s){let t=[];if(s.root.activeElement!=s.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:n,focusOffset:r}=s.observer.selectionRange;return e&&(t.push(new wm(e,i)),(n!=e||r!=i)&&t.push(new wm(n,r))),t}function WA(s,t){if(s.length==0)return null;let e=s[0].pos,i=s.length==2?s[1].pos:e;return e>-1&&i>-1?D.single(e+t,i+t):null}function Rl(s,t){return t.head==s.main.head&&t.anchor==s.main.anchor}class GA{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,U.safari&&t.contentDOM.addEventListener("input",()=>null),U.gecko&&nQ(t.contentDOM.ownerDocument)}handleEvent(t){!HA(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let n of i.observers)n(this.view,e);for(let n of i.handlers){if(e.defaultPrevented)break;if(n(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=YA(t),i=this.handlers,n=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,a=i[r];a&&o!=!a.handlers.length&&(n.removeEventListener(r,this.handleEvent),a=null),a||n.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&n.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&yb.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),U.android&&U.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return U.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=Ob.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||NA.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from<t.to&&/^\S+$/.test(t.insert.toString())?!1:(this.pendingIOSKey=void 0,qn(this.view.contentDOM,e.key,e.keyCode,e instanceof KeyboardEvent?e:void 0))}ignoreDuringComposition(t){return!/^key/.test(t.type)||t.synthetic?!1:this.composing>0?!0:U.safari&&!U.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function Sm(s,t){return(e,i)=>{try{return t.call(s,i,e)}catch(n){Qe(e.state,n)}}}function YA(s){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of s){let n=i.spec,r=n&&n.plugin.domEventHandlers,o=n&&n.plugin.domEventObservers;if(r)for(let a in r){let l=r[a];l&&e(a).handlers.push(Sm(i.value,l))}if(o)for(let a in o){let l=o[a];l&&e(a).observers.push(Sm(i.value,l))}}for(let i in fi)e(i).handlers.push(fi[i]);for(let i in Ie)e(i).observers.push(Ie[i]);return t}const Ob=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],NA="dthko",yb=[16,17,18,20,91,92,224,225],$a=6;function Ca(s){return Math.max(0,s)*.7+8}function VA(s,t){return Math.max(Math.abs(s.clientX-t.clientX),Math.abs(s.clientY-t.clientY))}class FA{constructor(t,e,i,n){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=n,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=zx(t.contentDOM),this.atoms=t.state.facet(Vo).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(yt.allowMultipleSelections)&&qA(t,e),this.dragging=UA(t,e)&&wb(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&VA(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,n=0,r=0,o=this.view.win.innerWidth,a=this.view.win.innerHeight;this.scrollParents.x&&({left:n,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:a}=this.scrollParents.y.getBoundingClientRect());let l=_f(this.view);t.clientX-l.left<=n+$a?e=-Ca(n-t.clientX):t.clientX+l.right>=o-$a&&(e=Ca(t.clientX-o)),t.clientY-l.top<=r+$a?i=-Ca(r-t.clientY):t.clientY+l.bottom>=a-$a&&(i=Ca(t.clientY-a)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=fb(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}}function qA(s,t){let e=s.state.facet(Hx);return e.length?e[0](t):U.mac?t.metaKey:t.ctrlKey}function jA(s,t){let e=s.state.facet(Kx);return e.length?e[0](t):U.mac?!t.altKey:!t.ctrlKey}function UA(s,t){let{main:e}=s.state.selection;if(e.empty)return!1;let i=Po(s.root);if(!i||i.rangeCount==0)return!0;let n=i.getRangeAt(0).getClientRects();for(let r=0;r<n.length;r++){let o=n[r];if(o.left<=t.clientX&&o.right>=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function HA(s,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=s.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=Xt.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}const fi=Object.create(null),Ie=Object.create(null),xb=U.ie&&U.ie_version<15||U.ios&&U.webkit_version<604;function KA(s){let t=s.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{s.focus(),e.remove(),bb(s,e.value)},50)}function ph(s,t,e){for(let i of s.facet(t))e=i(e,s);return e}function bb(s,t){t=ph(s.state,bf,t);let{state:e}=s,i,n=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if(pd!=null&&e.selection.ranges.every(l=>l.empty)&&pd==r.toString()){let l=-1;i=e.changeByRange(h=>{let c=e.doc.lineAt(h.from);if(c.from==l)return{range:h};l=c.from;let u=e.toText((o?r.line(n++).text:t)+e.lineBreak);return{changes:{from:c.from,insert:u},range:D.cursor(h.from+u.length)}})}else o?i=e.changeByRange(l=>{let h=r.line(n++);return{changes:{from:l.from,to:l.to,insert:h.text},range:D.cursor(l.from+h.length)}}):i=e.replaceSelection(r);s.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}Ie.scroll=s=>{s.inputState.lastScrollTop=s.scrollDOM.scrollTop,s.inputState.lastScrollLeft=s.scrollDOM.scrollLeft};Ie.wheel=Ie.mousewheel=s=>{s.inputState.lastWheelEvent=Date.now()};fi.keydown=(s,t)=>(s.inputState.setSelectionOrigin("select"),t.keyCode==27&&s.inputState.tabFocusMode!=0&&(s.inputState.tabFocusMode=Date.now()+2e3),!1);Ie.touchstart=(s,t)=>{let e=s.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};Ie.touchmove=s=>{s.inputState.setSelectionOrigin("select.pointer")};fi.mousedown=(s,t)=>{if(s.observer.flush(),s.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of s.state.facet(Jx))if(e=i(s,t),e)break;if(!e&&t.button==0&&(e=tQ(s,t)),e){let i=!s.hasFocus;s.inputState.startMouseSelection(new FA(s,t,e,i)),i&&s.observer.ignore(()=>{Wx(s.contentDOM);let r=s.root.activeElement;r&&!r.contains(s.contentDOM)&&r.blur()});let n=s.inputState.mouseSelection;if(n)return n.start(t),n.dragging===!1}else s.inputState.setSelectionOrigin("select.pointer");return!1};function vm(s,t,e,i){if(i==1)return D.cursor(t,e);if(i==2)return MA(s.state,t,e);{let n=s.docView.lineAt(t,e),r=s.state.doc.lineAt(n?n.posAtEnd:t),o=n?n.posAtStart:r.from,a=n?n.posAtEnd:r.to;return a<s.state.doc.length&&a==r.to&&a++,D.range(o,a)}}const JA=U.ie&&U.ie_version<=11;let _m=null,km=0,$m=0;function wb(s){if(!JA)return s.detail;let t=_m,e=$m;return _m=s,$m=Date.now(),km=!t||e>Date.now()-400&&Math.abs(t.clientX-s.clientX)<2&&Math.abs(t.clientY-s.clientY)<2?(km+1)%3:1}function tQ(s,t){let e=s.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=wb(t),n=s.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),n=n.map(r.changes))},get(r,o,a){let l=s.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,c=vm(s,l.pos,l.assoc,i);if(e.pos!=l.pos&&!o){let u=vm(s,e.pos,e.assoc,i),d=Math.min(u.from,c.from),f=Math.max(u.to,c.to);c=d<c.from?D.range(d,f,c.assoc):D.range(f,d,c.assoc)}return o?n.replaceRange(n.main.extend(c.from,c.to,c.assoc)):a&&i==1&&n.ranges.length>1&&(h=eQ(n,l.pos))?h:a?n.addRange(c):D.create([c])}}}function eQ(s,t){for(let e=0;e<s.ranges.length;e++){let{from:i,to:n}=s.ranges[e];if(i<=t&&n>=t)return D.create(s.ranges.slice(0,e).concat(s.ranges.slice(e+1)),s.mainIndex==e?0:s.mainIndex-(s.mainIndex>e?1:0))}return null}fi.dragstart=(s,t)=>{let{selection:{main:e}}=s.state;if(t.target.draggable){let n=s.docView.tile.nearest(t.target);if(n&&n.isWidget()){let r=n.posAtStart,o=r+n.length;(r>=e.to||o<=e.from)&&(e=D.range(r,o))}}let{inputState:i}=s;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",ph(s.state,wf,s.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};fi.dragend=s=>(s.inputState.draggedContent=null,!1);function Cm(s,t,e,i){if(e=ph(s.state,bf,e),!e)return;let n=s.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=s.inputState,o=i&&r&&jA(s,t)?{from:r.from,to:r.to}:null,a={from:n,insert:e},l=s.state.changes(o?[o,a]:a);s.focus(),s.dispatch({changes:l,selection:{anchor:l.mapPos(n,-1),head:l.mapPos(n,1)},userEvent:o?"move.drop":"input.drop"}),s.inputState.draggedContent=null}fi.drop=(s,t)=>{if(!t.dataTransfer)return!1;if(s.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),n=0,r=()=>{++n==e.length&&Cm(s,t,i.filter(o=>o!=null).join(s.state.lineBreak),!1)};for(let o=0;o<e.length;o++){let a=new FileReader;a.onerror=r,a.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(a.result)||(i[o]=a.result),r()},a.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return Cm(s,t,i,!0),!0}return!1};fi.paste=(s,t)=>{if(s.state.readOnly)return!0;s.observer.flush();let e=xb?null:t.clipboardData;return e?(bb(s,e.getData("text/plain")||e.getData("text/uri-list")),!0):(KA(s),!1)};function iQ(s,t){let e=s.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),s.focus()},50)}function sQ(s){let t=[],e=[],i=!1;for(let n of s.selection.ranges)n.empty||(t.push(s.sliceDoc(n.from,n.to)),e.push(n));if(!t.length){let n=-1;for(let{from:r}of s.selection.ranges){let o=s.doc.lineAt(r);o.number>n&&(t.push(o.text),e.push({from:o.from,to:Math.min(s.doc.length,o.to+1)})),n=o.number}i=!0}return{text:ph(s,wf,t.join(s.lineBreak)),ranges:e,linewise:i}}let pd=null;fi.copy=fi.cut=(s,t)=>{if(!no(s.contentDOM,s.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:n}=sQ(s.state);if(!e&&!n)return!1;pd=n?e:null,t.type=="cut"&&!s.state.readOnly&&s.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=xb?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(iQ(s,e),!1)};const Sb=os.define();function vb(s,t){let e=[];for(let i of s.facet(ib)){let n=i(s,t);n&&e.push(n)}return e.length?s.update({effects:e,annotations:Sb.of(!0)}):null}function _b(s){setTimeout(()=>{let t=s.hasFocus;if(t!=s.inputState.notifiedFocused){let e=vb(s.state,t);e?s.dispatch(e):s.update([])}},10)}Ie.focus=s=>{s.inputState.lastFocusTime=Date.now(),!s.scrollDOM.scrollTop&&(s.inputState.lastScrollTop||s.inputState.lastScrollLeft)&&(s.scrollDOM.scrollTop=s.inputState.lastScrollTop,s.scrollDOM.scrollLeft=s.inputState.lastScrollLeft),_b(s)};Ie.blur=s=>{s.observer.clearSelectionRange(),_b(s)};Ie.compositionstart=Ie.compositionupdate=s=>{s.observer.editContext||(s.inputState.compositionFirstChange==null&&(s.inputState.compositionFirstChange=!0),s.inputState.composing<0&&(s.inputState.composing=0))};Ie.compositionend=s=>{s.observer.editContext||(s.inputState.composing=-1,s.inputState.compositionEndedAt=Date.now(),s.inputState.compositionPendingKey=!0,s.inputState.compositionPendingChange=s.observer.pendingRecords().length>0,s.inputState.compositionFirstChange=null,U.chrome&&U.android?s.observer.flushSoon():s.inputState.compositionPendingChange?Promise.resolve().then(()=>s.observer.flush()):setTimeout(()=>{s.inputState.composing<0&&s.docView.hasComposition&&s.update([])},50))};Ie.contextmenu=s=>{s.inputState.lastContextMenu=Date.now()};fi.beforeinput=(s,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(s.inputState.insertingText=t.data,s.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&s.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let a=o[0],l=s.posAtDOM(a.startContainer,a.startOffset),h=s.posAtDOM(a.endContainer,a.endOffset);return kf(s,{from:l,to:h,insert:s.state.toText(r)},null),!0}}let n;if(U.chrome&&U.android&&(n=Ob.find(r=>r.inputType==t.inputType))&&(s.observer.delayAndroidKey(n.key,n.keyCode),n.key=="Backspace"||n.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&s.hasFocus&&(s.contentDOM.blur(),s.focus())},100)}return U.ios&&t.inputType=="deleteContentForward"&&s.observer.flushSoon(),U.safari&&t.inputType=="insertText"&&s.inputState.composing>=0&&setTimeout(()=>Ie.compositionend(s,t),20),!1};const Pm=new Set;function nQ(s){Pm.has(s)||(Pm.add(s),s.addEventListener("copy",()=>{}),s.addEventListener("cut",()=>{}))}const Tm=["pre-wrap","normal","pre-line","break-spaces"];let lr=!1;function Mm(){lr=!1}class rQ{constructor(t){this.lineWrapping=t,this.doc=mt.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Tm.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i<t.length;i++){let n=t[i];n<0?i++:this.heightSamples[Math.floor(n*10)]||(e=!0,this.heightSamples[Math.floor(n*10)]=!0)}return e}refresh(t,e,i,n,r,o){let a=Tm.indexOf(t)>-1,l=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=a;if(this.lineWrapping=a,this.lineHeight=e,this.charWidth=i,this.textHeight=n,this.lineLength=r,l){this.heightSamples={};for(let h=0;h<o.length;h++){let c=o[h];c<0?h++:this.heightSamples[Math.floor(c*10)]=!0}}return l}}class oQ{constructor(t,e){this.from=t,this.heights=e,this.index=0}get more(){return this.index<this.heights.length}}class hi{constructor(t,e,i,n,r){this.from=t,this.length=e,this.top=i,this.height=n,this._content=r}get type(){return typeof this._content=="number"?fe.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof an?this._content.widget:null}get widgetLineBreaks(){return typeof this._content=="number"?this._content:0}join(t){let e=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(t._content)?t._content:[t]);return new hi(this.from,this.length+t.length,this.top,this.height+t.height,e)}}var Pt=(function(s){return s[s.ByPos=0]="ByPos",s[s.ByHeight=1]="ByHeight",s[s.ByPosNoHeight=2]="ByPosNoHeight",s})(Pt||(Pt={}));const il=.001;class _e{constructor(t,e,i=2){this.length=t,this.height=e,this.flags=i}get outdated(){return(this.flags&2)>0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>il&&(lr=!0),this.height=t)}replace(t,e,i){return _e.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,n){let r=this,o=i.doc;for(let a=n.length-1;a>=0;a--){let{fromA:l,toA:h,fromB:c,toB:u}=n[a],d=r.lineAt(l,Pt.ByPosNoHeight,i.setDoc(e),0,0),f=d.to>=h?d:r.lineAt(h,Pt.ByPosNoHeight,i,0,0);for(u+=f.to-h,h=f.to;a>0&&d.from<=n[a-1].toA;)l=n[a-1].fromA,c=n[a-1].fromB,a--,l<d.from&&(d=r.lineAt(l,Pt.ByPosNoHeight,i,0,0));c+=d.from-l,l=d.from;let p=$f.build(i.setDoc(o),t,c,u);r=El(r,r.replace(l,h,p))}return r.updateHeight(i,0)}static empty(){return new We(0,0,0)}static of(t){if(t.length==1)return t[0];let e=0,i=t.length,n=0,r=0;for(;;)if(e==i)if(n>r*2){let a=t[e-1];a.break?t.splice(--e,1,a.left,null,a.right):t.splice(--e,1,a.left,a.right),i+=1+a.break,n-=a.size}else if(r>n*2){let a=t[i];a.break?t.splice(i,1,a.left,null,a.right):t.splice(i,1,a.left,a.right),i+=2+a.break,r-=a.size}else break;else if(n<r){let a=t[e++];a&&(n+=a.size)}else{let a=t[--i];a&&(r+=a.size)}let o=0;return t[e-1]==null?(o=1,e--):t[e]==null&&(o=1,i++),new lQ(_e.of(t.slice(0,e)),o,_e.of(t.slice(i)))}}function El(s,t){return s==t?s:(s.constructor!=t.constructor&&(lr=!0),t)}_e.prototype.size=1;const aQ=et.replace({});class kb extends _e{constructor(t,e,i){super(t,e),this.deco=i,this.spaceAbove=0}mainBlock(t,e){return new hi(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.deco||0)}blockAt(t,e,i,n){return this.spaceAbove&&t<i+this.spaceAbove?new hi(n,0,i,this.spaceAbove,aQ):this.mainBlock(i,n)}lineAt(t,e,i,n,r){let o=this.mainBlock(n,r);return this.spaceAbove?this.blockAt(0,i,n,r).join(o):o}forEachLine(t,e,i,n,r,o){t<=r+this.length&&e>=r&&o(this.lineAt(0,Pt.ByPos,i,n,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more&&this.setMeasuredHeight(n),this.outdated=!1,this}toString(){return`block(${this.length})`}}class We extends kb{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new hi(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let n=i[0];return i.length==1&&(n instanceof We||n instanceof le&&n.flags&4)&&Math.abs(this.length-n.length)<10?(n instanceof le?n=new We(n.length,this.height,this.spaceAbove):n.height=this.height,this.outdated||(n.outdated=!1),n):_e.of(i)}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more?this.setMeasuredHeight(n):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class le extends _e{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,n=t.doc.lineAt(e+this.length).number,r=n-i+1,o,a=0;if(t.lineWrapping){let l=Math.min(this.height,t.lineHeight*r);o=l/r,this.length>r+1&&(a=(this.height-l)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:n,perLine:o,perChar:a}}blockAt(t,e,i,n){let{firstLine:r,lastLine:o,perLine:a,perChar:l}=this.heightMetrics(e,n);if(e.lineWrapping){let h=n+(t<e.lineHeight?0:Math.round(Math.max(0,Math.min(1,(t-i)/this.height))*this.length)),c=e.doc.lineAt(h),u=a+c.length*l,d=Math.max(i,t-u/2);return new hi(c.from,c.length,d,u,0)}else{let h=Math.max(0,Math.min(o-r,Math.floor((t-i)/a))),{from:c,length:u}=e.doc.line(r+h);return new hi(c,u,i+a*h,a,0)}}lineAt(t,e,i,n,r){if(e==Pt.ByHeight)return this.blockAt(t,i,n,r);if(e==Pt.ByPosNoHeight){let{from:f,to:p}=i.doc.lineAt(t);return new hi(f,p-f,0,0,0)}let{firstLine:o,perLine:a,perChar:l}=this.heightMetrics(i,r),h=i.doc.lineAt(t),c=a+h.length*l,u=h.number-o,d=n+a*u+l*(h.from-r-u);return new hi(h.from,h.length,Math.max(n,Math.min(d,n+this.height-c)),c,0)}forEachLine(t,e,i,n,r,o){t=Math.max(t,r),e=Math.min(e,r+this.length);let{firstLine:a,perLine:l,perChar:h}=this.heightMetrics(i,r);for(let c=t,u=n;c<=e;){let d=i.doc.lineAt(c);if(c==t){let p=d.number-a;u+=l*p+h*(t-r-p)}let f=l+h*d.length;o(new hi(d.from,d.length,u,f,0)),u+=f,c=d.to+1}}replace(t,e,i){let n=this.length-e;if(n>0){let r=i[i.length-1];r instanceof le?i[i.length-1]=new le(r.length+n):i.push(null,new le(n-1))}if(t>0){let r=i[0];r instanceof le?i[0]=new le(t+r.length):i.unshift(new le(t-1),null)}return _e.of(i)}decomposeLeft(t,e){e.push(new le(t-1),null)}decomposeRight(t,e){e.push(null,new le(this.length-t-1))}updateHeight(t,e=0,i=!1,n){let r=e+this.length;if(n&&n.from<=e+this.length&&n.more){let o=[],a=Math.max(e,n.from),l=-1;for(n.from>e&&o.push(new le(n.from-e-1).updateHeight(t,e));a<=r&&n.more;){let c=t.doc.lineAt(a).length;o.length&&o.push(null);let u=n.heights[n.index++],d=0;u<0&&(d=-u,u=n.heights[n.index++]),l==-1?l=u:Math.abs(u-l)>=il&&(l=-2);let f=new We(c,u,d);f.outdated=!1,o.push(f),a+=c+1}a<=r&&o.push(null,new le(r-a).updateHeight(t,a));let h=_e.of(o);return(l<0||Math.abs(h.height-this.height)>=il||Math.abs(l-this.heightMetrics(t,e).perLine)>=il)&&(lr=!0),El(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class lQ extends _e{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,n){let r=i+this.left.height;return t<r?this.left.blockAt(t,e,i,n):this.right.blockAt(t,e,r,n+this.left.length+this.break)}lineAt(t,e,i,n,r){let o=n+this.left.height,a=r+this.left.length+this.break,l=e==Pt.ByHeight?t<o:t<a,h=l?this.left.lineAt(t,e,i,n,r):this.right.lineAt(t,e,i,o,a);if(this.break||(l?h.to<a:h.from>a))return h;let c=e==Pt.ByPosNoHeight?Pt.ByPosNoHeight:Pt.ByPos;return l?h.join(this.right.lineAt(a,c,i,o,a)):this.left.lineAt(a,c,i,n,r).join(h)}forEachLine(t,e,i,n,r,o){let a=n+this.left.height,l=r+this.left.length+this.break;if(this.break)t<l&&this.left.forEachLine(t,e,i,n,r,o),e>=l&&this.right.forEachLine(t,e,i,a,l,o);else{let h=this.lineAt(l,Pt.ByPos,i,n,r);t<h.from&&this.left.forEachLine(t,h.from-1,i,n,r,o),h.to>=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,a,l,o)}}replace(t,e,i){let n=this.left.length+this.break;if(e<n)return this.balanced(this.left.replace(t,e,i),this.right);if(t>this.left.length)return this.balanced(this.left,this.right.replace(t-n,e-n,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let a of i)r.push(a);if(t>0&&Am(r,o-1),e<this.length){let a=r.length;this.decomposeRight(e,r),Am(r,a)}return _e.of(r)}decomposeLeft(t,e){let i=this.left.length;if(t<=i)return this.left.decomposeLeft(t,e);e.push(this.left),this.break&&(i++,t>=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,n=i+this.break;if(t>=n)return this.right.decomposeRight(t-n,e);t<i&&this.left.decomposeRight(t,e),this.break&&t<n&&e.push(null),e.push(this.right)}balanced(t,e){return t.size>2*e.size||e.size>2*t.size?_e.of(this.break?[t,null,e]:[t,e]):(this.left=El(this.left,t),this.right=El(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,n){let{left:r,right:o}=this,a=e+r.length+this.break,l=null;return n&&n.from<=e+r.length&&n.more?l=r=r.updateHeight(t,e,i,n):r.updateHeight(t,e,i),n&&n.from<=a+o.length&&n.more?l=o=o.updateHeight(t,a,i,n):o.updateHeight(t,a,i),l?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function Am(s,t){let e,i;s[t]==null&&(e=s[t-1])instanceof le&&(i=s[t+1])instanceof le&&s.splice(t-1,3,new le(e.length+1+i.length))}const hQ=5;class $f{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),n=this.nodes[this.nodes.length-1];n instanceof We?n.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new We(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t<e||i.heightRelevant){let n=i.widget?i.widget.estimatedHeight:0,r=i.widget?i.widget.lineBreaks:0;n<0&&(n=this.oracle.lineHeight);let o=e-t;i.block?this.addBlock(new kb(o,n,i)):(o||r||n>=hQ)&&this.addLineDeco(n,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTo<t&&((this.writtenTo<t-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,t-1)),this.nodes.push(null)),this.pos>t&&this.nodes.push(new We(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new le(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof We)return t;let e=new We(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let n=this.ensureLine();n.length+=i,n.collapsed+=i,n.widgetHeight=Math.max(n.widgetHeight,t),n.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof We)&&!this.isCovered?this.nodes.push(new We(0,-1,0)):(this.writtenTo<this.pos||e==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let i=t;for(let n of this.nodes)n instanceof We&&n.updateHeight(this.oracle,i),i+=n?n.length:1;return this.nodes}static build(t,e,i,n){let r=new $f(i,t);return ut.spans(e,i,n,r,0),r.finish(i)}}function cQ(s,t,e){let i=new uQ;return ut.compare(s,t,e,i,0),i.changes}class uQ{constructor(){this.changes=[]}compareRange(){}comparePoint(t,e,i,n){(t<e||i&&i.heightRelevant||n&&n.heightRelevant)&&Fn(t,e,this.changes,5)}}function dQ(s,t){let e=s.getBoundingClientRect(),i=s.ownerDocument,n=i.defaultView||window,r=Math.max(0,e.left),o=Math.min(n.innerWidth,e.right),a=Math.max(0,e.top),l=Math.min(n.innerHeight,e.bottom);for(let h=s.parentNode;h&&h!=i.body;)if(h.nodeType==1){let c=h,u=window.getComputedStyle(c);if((c.scrollHeight>c.clientHeight||c.scrollWidth>c.clientWidth)&&u.overflow!="visible"){let d=c.getBoundingClientRect();r=Math.max(r,d.left),o=Math.min(o,d.right),a=Math.max(a,d.top),l=Math.min(h==s.parentNode?n.innerHeight:l,d.bottom)}h=u.position=="absolute"||u.position=="fixed"?c.offsetParent:c.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:a-(e.top+t),bottom:Math.max(a,l)-(e.top+t)}}function fQ(s){let t=s.getBoundingClientRect(),e=s.ownerDocument.defaultView||window;return t.left<e.innerWidth&&t.right>0&&t.top<e.innerHeight&&t.bottom>0}function pQ(s,t){let e=s.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}class Oc{constructor(t,e,i,n){this.from=t,this.to=e,this.size=i,this.displaySize=n}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;i<t.length;i++){let n=t[i],r=e[i];if(n.from!=r.from||n.to!=r.to||n.size!=r.size)return!1}return!0}draw(t,e){return et.replace({widget:new gQ(this.displaySize*(e?t.scaleY:t.scaleX),e)}).range(this.from,this.to)}}class gQ extends Zi{constructor(t,e){super(),this.size=t,this.vertical=e}eq(t){return t.size==this.size&&t.vertical==this.vertical}toDOM(){let t=document.createElement("div");return this.vertical?t.style.height=this.size+"px":(t.style.width=this.size+"px",t.style.height="2px",t.style.display="inline-block"),t}get estimatedHeight(){return this.vertical?this.size:-1}}class Qm{constructor(t,e){this.view=t,this.state=e,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scaleX=1,this.scaleY=1,this.scrollOffset=0,this.scrolledToBottom=!1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=Rm,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=$t.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let i=e.facet(Sf).some(n=>typeof n!="function"&&n.class=="cm-lineWrapping");this.heightOracle=new rQ(i),this.stateDeco=Em(e),this.heightMap=_e.empty().applyChanges(this.stateDeco,mt.empty,this.heightOracle.setDoc(e.doc),[new Je(0,0,0,e.doc.length)]);for(let n=0;n<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());n++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=et.set(this.lineGaps.map(n=>n.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let n=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>n>=r&&n<=o)){let{from:r,to:o}=this.lineBlockAt(n);t.push(new Pa(r,o))}}return this.viewports=t.sort((i,n)=>i.from-n.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Rm:new Cf(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(Nr(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Em(this.state);let n=t.changedRanges,r=Je.extendWithRanges(n,cQ(i,this.stateDeco,t?t.changes:Kt.empty(this.state.doc.length))),o=this.heightMap.height,a=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Mm(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||lr)&&(t.flags|=2),a?(this.scrollAnchorPos=t.changes.mapPos(a.from,-1),this.scrollAnchorHeight=a.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let l=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.head<l.from||e.range.head>l.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,e));let h=l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(nb)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),n=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?$t.RTL:$t.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",a=e.getBoundingClientRect(),l=o||this.mustMeasureContent||this.contentDOMHeight!=a.height;this.contentDOMHeight=a.height,this.mustMeasureContent=!1;let h=0,c=0;if(a.width&&a.height){let{scaleX:w,scaleY:S}=Xx(e,a);(w>.005&&Math.abs(this.scaleX-w)>.005||S>.005&&Math.abs(this.scaleY-S)>.005)&&(this.scaleX=w,this.scaleY=S,h|=16,o=l=!0)}let u=(parseInt(i.paddingTop)||0)*this.scaleY,d=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=u||this.paddingBottom!=d)&&(this.paddingTop=u,this.paddingBottom=d,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(n.lineWrapping&&(l=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let f=zx(this.view.contentDOM,!1).y;f!=this.scrollParent&&(this.scrollParent=f,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=Gx(this.scrollParent||t.win);let g=(this.printing?pQ:dQ)(e,this.paddingTop),m=g.top-this.pixelViewport.top,O=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let x=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(x!=this.inView&&(this.inView=x,x&&(l=!0)),!this.inView&&!this.scrollTarget&&!fQ(t.dom))return 0;let b=a.width;if((this.contentDOMWidth!=b||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=a.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),l){let w=t.docView.measureVisibleLineHeights(this.viewport);if(n.mustRefreshForHeights(w)&&(o=!0),o||n.lineWrapping&&Math.abs(b-this.contentDOMWidth)>n.charWidth){let{lineHeight:S,charWidth:y,textHeight:_}=t.docView.measureTextSize();o=S>0&&n.refresh(r,S,y,_,Math.max(5,b/y),w),o&&(t.docView.minWidth=0,h|=16)}m>0&&O>0?c=Math.max(m,O):m<0&&O<0&&(c=Math.min(m,O)),Mm();for(let S of this.viewports){let y=S.from==this.viewport.from?w:t.docView.measureVisibleLineHeights(S);this.heightMap=(o?_e.empty().applyChanges(this.stateDeco,mt.empty,this.heightOracle,[new Je(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(n,0,o,new oQ(S.from,y))}lr&&(h|=2)}let v=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return v&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(c,this.scrollTarget),h|=this.updateForViewport()),(h&2||v)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),n=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:a}=this,l=new Pa(n.lineAt(o-i*1e3,Pt.ByHeight,r,0,0).from,n.lineAt(a+(1-i)*1e3,Pt.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(h<l.from||h>l.to){let c=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),u=n.lineAt(h,Pt.ByPos,r,0,0),d;e.y=="center"?d=(u.top+u.bottom)/2-c/2:e.y=="start"||e.y=="nearest"&&h<l.from?d=u.top:d=u.bottom-c,l=new Pa(n.lineAt(d-1e3/2,Pt.ByHeight,r,0,0).from,n.lineAt(d+c+1e3/2,Pt.ByHeight,r,0,0).to)}}return l}mapViewport(t,e){let i=e.mapPos(t.from,-1),n=e.mapPos(t.to,1);return new Pa(this.heightMap.lineAt(i,Pt.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(n,Pt.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:t,to:e},i=0){if(!this.inView)return!0;let{top:n}=this.heightMap.lineAt(t,Pt.ByPos,this.heightOracle,0,0),{bottom:r}=this.heightMap.lineAt(e,Pt.ByPos,this.heightOracle,0,0),{visibleTop:o,visibleBottom:a}=this;return(t==0||n<=o-Math.max(10,Math.min(-i,250)))&&(e==this.state.doc.length||r>=a+Math.max(10,Math.min(i,250)))&&n>o-2*1e3&&r<a+2*1e3}mapLineGaps(t,e){if(!t.length||e.empty)return t;let i=[];for(let n of t)e.touchesRange(n.from,n.to)||i.push(new Oc(e.mapPos(n.from),e.mapPos(n.to),n.size,n.displaySize));return i}ensureLineGaps(t,e){let i=this.heightOracle.lineWrapping,n=i?1e4:2e3,r=n>>1,o=n<<1;if(this.defaultTextDirection!=$t.LTR&&!i)return[];let a=[],l=(c,u,d,f)=>{if(u-c<r)return;let p=this.state.selection.main,g=[p.from];p.empty||g.push(p.to);for(let O of g)if(O>c&&O<u){l(c,O-10,d,f),l(O+10,u,d,f);return}let m=OQ(t,O=>O.from>=d.from&&O.to<=d.to&&Math.abs(O.from-c)<r&&Math.abs(O.to-u)<r&&!g.some(x=>O.from<x&&O.to>x));if(!m){if(u<d.to&&e&&i&&e.visibleRanges.some(b=>b.from<=u&&b.to>=u)){let b=e.moveToLineBoundary(D.cursor(u),!1,!0).head;b>c&&(u=b)}let O=this.gapSize(d,c,u,f),x=i||O<2e6?O:2e6;m=new Oc(c,u,O,x)}a.push(m)},h=c=>{if(c.length<o||c.type!=fe.Text)return;let u=mQ(c.from,c.to,this.stateDeco);if(u.total<o)return;let d=this.scrollTarget?this.scrollTarget.range.head:null,f,p;if(i){let g=n/this.heightOracle.lineLength*this.heightOracle.lineHeight,m,O;if(d!=null){let x=Ma(u,d),b=((this.visibleBottom-this.visibleTop)/2+g)/c.height;m=x-b,O=x+b}else m=(this.visibleTop-c.top-g)/c.height,O=(this.visibleBottom-c.top+g)/c.height;f=Ta(u,m),p=Ta(u,O)}else{let g=u.total*this.heightOracle.charWidth,m=n*this.heightOracle.charWidth,O=0;if(g>2e6)for(let S of t)S.from>=c.from&&S.from<c.to&&S.size!=S.displaySize&&S.from*this.heightOracle.charWidth+O<this.pixelViewport.left&&(O=S.size-S.displaySize);let x=this.pixelViewport.left+O,b=this.pixelViewport.right+O,v,w;if(d!=null){let S=Ma(u,d),y=((b-x)/2+m)/g;v=S-y,w=S+y}else v=(x-m)/g,w=(b+m)/g;f=Ta(u,v),p=Ta(u,w)}f>c.from&&l(c.from,f,c,u),p<c.to&&l(p,c.to,c,u)};for(let c of this.viewportLines)Array.isArray(c.type)?c.type.forEach(h):h(c);return a}gapSize(t,e,i,n){let r=Ma(n,i)-Ma(n,e);return this.heightOracle.lineWrapping?t.height*r:n.total*this.heightOracle.charWidth*r}updateLineGaps(t){Oc.same(t,this.lineGaps)||(this.lineGaps=t,this.lineGapDeco=et.set(t.map(e=>e.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];ut.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let n=0;if(i.length!=this.visibleRanges.length)n=12;else for(let r=0;r<i.length&&!(n&8);r++){let o=this.visibleRanges[r],a=i[r];(o.from!=a.from||o.to!=a.to)&&(n|=4,t&&t.mapPos(o.from,-1)==a.from&&t.mapPos(o.to,1)==a.to||(n|=8))}return this.visibleRanges=i,n}lineBlockAt(t){return t>=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||Nr(this.heightMap.lineAt(t,Pt.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||Nr(this.heightMap.lineAt(this.scaler.fromDOM(t),Pt.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return Nr(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class Pa{constructor(t,e){this.from=t,this.to=e}}function mQ(s,t,e){let i=[],n=s,r=0;return ut.spans(e,s,t,{span(){},point(o,a){o>n&&(i.push({from:n,to:o}),r+=o-n),n=a}},20),n<t&&(i.push({from:n,to:t}),r+=t-n),{total:r,ranges:i}}function Ta({total:s,ranges:t},e){if(e<=0)return t[0].from;if(e>=1)return t[t.length-1].to;let i=Math.floor(s*e);for(let n=0;;n++){let{from:r,to:o}=t[n],a=o-r;if(i<=a)return r+i;i-=a}}function Ma(s,t){let e=0;for(let{from:i,to:n}of s.ranges){if(t<=n){e+=t-i;break}e+=n-i}return e/s.total}function OQ(s,t){for(let e of s)if(t(e))return e}const Rm={toDOM(s){return s},fromDOM(s){return s},scale:1,eq(s){return s==this}};function Em(s){let t=s.facet(uh).filter(i=>typeof i!="function"),e=s.facet(vf).filter(i=>typeof i!="function");return e.length&&t.push(ut.join(e)),t}class Cf{constructor(t,e,i){let n=0,r=0,o=0;this.viewports=i.map(({from:a,to:l})=>{let h=e.lineAt(a,Pt.ByPos,t,0,0).top,c=e.lineAt(l,Pt.ByPos,t,0,0).bottom;return n+=c-h,{from:a,to:l,top:h,bottom:c,domTop:0,domBottom:0}}),this.scale=(7e6-n)/(e.height-n);for(let a of this.viewports)a.domTop=o+(a.top-r)*this.scale,o=a.domBottom=a.domTop+(a.bottom-a.top),r=a.bottom}toDOM(t){for(let e=0,i=0,n=0;;e++){let r=e<this.viewports.length?this.viewports[e]:null;if(!r||t<r.top)return n+(t-i)*this.scale;if(t<=r.bottom)return r.domTop+(t-r.top);i=r.bottom,n=r.domBottom}}fromDOM(t){for(let e=0,i=0,n=0;;e++){let r=e<this.viewports.length?this.viewports[e]:null;if(!r||t<r.domTop)return i+(t-n)/this.scale;if(t<=r.domBottom)return r.top+(t-r.domTop);i=r.bottom,n=r.domBottom}}eq(t){return t instanceof Cf?this.scale==t.scale&&this.viewports.length==t.viewports.length&&this.viewports.every((e,i)=>e.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}}function Nr(s,t){if(t.scale==1)return s;let e=t.toDOM(s.top),i=t.toDOM(s.bottom);return new hi(s.from,s.length,e,i-e,Array.isArray(s._content)?s._content.map(n=>Nr(n,t)):s._content)}const Aa=j.define({combine:s=>s.join(" ")}),gd=j.define({combine:s=>s.indexOf(!0)>-1}),md=ws.newName(),$b=ws.newName(),Cb=ws.newName(),Pb={"&light":"."+$b,"&dark":"."+Cb};function Od(s,t,e){return new ws(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,n=>{if(n=="&")return s;if(!e||!e[n])throw new RangeError(`Unsupported selector: ${n}`);return e[n]}):s+" "+i}})}const yQ=Od("."+md,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Pb),xQ={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},yc=U.ie&&U.ie_version<=11;class bQ{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new UM,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(U.ie&&U.ie_version<=11||U.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&U.android&&t.constructor.EDIT_CONTEXT!==!1&&!(U.chrome&&U.chrome_version<126)&&(this.editContext=new SQ(t),t.state.facet(Fi)&&(t.contentDOM.editContext=this.editContext.editContext)),yc&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(t.scrollDOM)),this.addWindowListeners(this.win=t.win),this.start(),typeof IntersectionObserver=="function"&&(this.intersection=new IntersectionObserver(e=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,n=this.selectionRange;if(i.state.facet(Fi)?i.root.activeElement!=this.dom:!no(this.dom,n))return;let r=n.anchorNode&&i.docView.tile.nearest(n.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(U.ie&&U.ie_version<=11||U.android&&U.chrome)&&!i.state.selection.main.empty&&n.focusNode&&ro(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=Po(t.root);if(!e)return!1;let i=U.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&wQ(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let n=no(this.dom,i);return n&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime<Date.now()-300&&KM(this.dom,i)?(this.view.inputState.lastFocusTime=0,t.docView.updateSelection(),!1):(this.selectionRange.setRange(i),n&&(this.selectionChanged=!0),!0)}setSelectionRange(t,e){this.selectionRange.set(t.node,t.offset,e.node,e.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let t=0,e=null;for(let i=this.dom;i;)if(i.nodeType==1)!e&&t<this.scrollTargets.length&&this.scrollTargets[t]==i?t++:e||(e=this.scrollTargets.slice(0,t)),e&&e.push(i),i=i.assignedSlot||i.parentNode;else if(i.nodeType==11)i=i.host;else break;if(t<this.scrollTargets.length&&!e&&(e=this.scrollTargets.slice(0,t)),e){for(let i of this.scrollTargets)i.removeEventListener("scroll",this.onScroll);for(let i of this.scrollTargets=e)i.addEventListener("scroll",this.onScroll)}}ignore(t){if(!this.active)return t();try{return this.stop(),t()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,xQ),yc&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),yc&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(t,e){var i;if(!this.delayedAndroidKey){let n=()=>{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&qn(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(n)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange<Date.now()-50||!!(!((i=this.delayedAndroidKey)===null||i===void 0)&&i.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,n=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(n=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:n}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),n=this.selectionChanged&&no(this.dom,this.selectionRange);if(t<0&&!n)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new BA(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,n=gb(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!Rl(this.view.state.selection,e.newSel.main))&&this.view.update([]),n}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Lm(e,t.previousSibling||t.target.previousSibling,-1),n=Lm(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:n?e.posBefore(n):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Fi)!=t.state.facet(Fi)&&(t.view.contentDOM.editContext=t.state.facet(Fi)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let n of this.scrollTargets)n.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function Lm(s,t,e){for(;t;){let i=Xt.get(t);if(i&&i.parent==s)return i;let n=t.parentNode;t=n!=s.dom?n:e>0?t.nextSibling:t.previousSibling}return null}function Im(s,t){let e=t.startContainer,i=t.startOffset,n=t.endContainer,r=t.endOffset,o=s.docView.domAtPos(s.state.selection.main.anchor,1);return ro(o.node,o.offset,n,r)&&([e,i,n,r]=[n,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:n,focusOffset:r}}function wQ(s,t){if(t.getComposedRanges){let n=t.getComposedRanges(s.root)[0];if(n)return Im(s,n)}let e=null;function i(n){n.preventDefault(),n.stopImmediatePropagation(),e=n.getTargetRanges()[0]}return s.contentDOM.addEventListener("beforeinput",i,!0),s.dom.ownerDocument.execCommand("indent"),s.contentDOM.removeEventListener("beforeinput",i,!0),e?Im(s,e):null}class SQ{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let n=t.state.selection.main,{anchor:r,head:o}=n,a=this.toEditorPos(i.updateRangeStart),l=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:a,drifted:!1});let h=l-a>i.text.length;a==this.from&&r<this.from?a=r:l==this.to&&r>this.to&&(l=r);let c=mb(t.state.sliceDoc(a,l),i.text,(h?n.from:n.to)-a,h?"end":null);if(!c){let d=D.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));Rl(d,n)||t.dispatch({selection:d,userEvent:"select"});return}let u={from:c.from+a,to:c.toA+a,insert:mt.of(i.text.slice(c.from,c.toB).split(`
|
|
260
|
+
`))};if((U.mac||U.android)&&u.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(u={from:a,to:l,insert:mt.of([i.text.replace("."," ")])}),this.pendingContextChange=u,!t.state.readOnly){let d=this.to-this.from+(u.to-u.from+u.insert.length);kf(t,u,D.single(this.toEditorPos(i.selectionStart,d),this.toEditorPos(i.selectionEnd,d)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),u.from<u.to&&!u.insert.length&&t.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let n=[],r=null;for(let o=this.toEditorPos(i.rangeStart),a=this.toEditorPos(i.rangeEnd);o<a;o++){let l=t.coordsForChar(o);r=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||r||new DOMRect,n.push(r)}e.updateCharacterBounds(i.rangeStart,n)},this.handlers.textformatupdate=i=>{let n=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,a=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(l<h){let c=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;n.push(et.mark({attributes:{style:c}}).range(l,h))}}}t.dispatch({effects:ob.of(et.set(n))})},this.handlers.compositionstart=()=>{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let n=Po(i.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,n=this.pendingContextChange;return t.changes.iterChanges((r,o,a,l,h)=>{if(i)return;let c=h.length-(o-r);if(n&&o>=n.to)if(n.from==r&&n.to==o&&n.insert.eq(h)){n=this.pendingContextChange=null,e+=c,this.to+=c;return}else n=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=c,this.to+=c;else if(r<this.to){if(r<this.from||o>this.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=c}e+=c}),n&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(n=>!n.isUserEvent("input.type")&&n.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),n=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(i,n)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to<t.doc.length&&this.to-e<500||this.to-this.from>1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}}class q{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(n=>n.forEach(r=>i(r,this)))||(n=>this.update(n)),this.dispatch=this.dispatch.bind(this),this._root=t.root||HM(t.parent)||document,this.viewState=new Qm(this,t.state||yt.create(t)),t.scrollTo&&t.scrollTo.is(ka)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Dn).map(n=>new dc(n));for(let n of this.plugins)n.update(this);this.observer=new bQ(this),this.inputState=new GA(this),this.inputState.ensureHandlers(this.plugins),this.docView=new xm(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof Ut?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,n,r=this.state;for(let d of t){if(d.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=d.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,a=0,l=null;t.some(d=>d.annotation(Sb))?(this.inputState.notifiedFocused=o,a=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,l=vb(r,o),l||(a=1));let h=this.observer.delayedAndroidKey,c=null;if(h?(this.observer.clearDelayedAndroidKey(),c=this.observer.readChange(),(c&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(c=null)):this.observer.clear(),r.facet(yt.phrases)!=this.state.facet(yt.phrases))return this.setState(r);n=Ml.create(this,r,t),n.flags|=a;let u=this.viewState.scrollTarget;try{this.updateState=2;for(let d of t){if(u&&(u=u.map(d.changes)),d.scrollIntoView){let{main:f}=d.state.selection,{x:p,y:g}=this.state.facet(q.cursorScrollMargin);u=new jn(f.empty?f:D.cursor(f.head,f.head>f.anchor?-1:1),"nearest","nearest",g,p)}for(let f of d.effects)f.is(ka)&&(u=f.value.clip(this.state))}this.viewState.update(n,u),this.bidiCache=Ll.update(this.bidiCache,n.changes),n.empty||(this.updatePlugins(n),this.inputState.update(n)),e=this.docView.update(n),this.state.facet(Yr)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(d=>d.isUserEvent("select.pointer")))}finally{this.updateState=0}if(n.startState.facet(Aa)!=n.state.facet(Aa)&&(this.viewState.mustMeasureContent=!0),(e||i||u||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!n.empty)for(let d of this.state.facet(cd))try{d(n)}catch(f){Qe(this.state,f,"update listener")}(l||c)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),c&&!gb(this,c)&&h.force&&qn(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new Qm(this,t),this.plugins=t.facet(Dn).map(i=>new dc(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new xm(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Dn),i=t.state.facet(Dn);if(e!=i){let n=[];for(let r of i){let o=e.indexOf(r);if(o<0)n.push(new dc(r));else{let a=this.plugins[o];a.mustUpdate=t,n.push(a)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=n,this.pluginMap.clear()}else for(let n of this.plugins)n.mustUpdate=t;for(let n=0;n<this.plugins.length;n++)this.plugins[n].update(this);e!=i&&this.inputState.ensureHandlers(this.plugins)}docViewUpdate(){for(let t of this.plugins){let e=t.value;if(e&&e.docViewUpdate)try{e.docViewUpdate(this)}catch(i){Qe(this.state,i,"doc view update listener")}}}measure(t=!0){if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,n=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(n-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let a=0;;a++){if(o<0)if(Gx(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let f=this.viewState.scrollAnchorAt(n);r=f.from,o=f.top}this.updateState=1;let l=this.viewState.measure();if(!l&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(a>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];l&4||([this.measureRequests,h]=[h,this.measureRequests]);let c=h.map(f=>{try{return f.read(this)}catch(p){return Qe(this.state,p),Zm}}),u=Ml.create(this,this.state,[]),d=!1;u.flags|=l,e?e.flags|=l:e=u,this.updateState=2,u.empty||(this.updatePlugins(u),this.inputState.update(u),this.updateAttrs(),d=this.docView.update(u),d&&this.docViewUpdate());for(let f=0;f<h.length;f++)if(c[f]!=Zm)try{let p=h[f];p.write&&p.write(c[f],this)}catch(p){Qe(this.state,p)}if(d&&this.docView.updateSelection(!0),!u.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight)if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,o=-1;continue}else{let p=((r<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(r).top)-o)/this.scaleY;if((p>1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){n=n+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let a of this.state.facet(cd))a(e)}get themeClasses(){return md+" "+(this.state.facet(gd)?Cb:$b)+" "+this.state.facet(Aa)}updateAttrs(){let t=Dm(this,ab,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Fi)?"true":"false",class:"cm-content",style:`${U.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),Dm(this,Sf,e);let i=this.observer.ignore(()=>{let n=fm(this.contentDOM,this.contentAttrs,e),r=fm(this.dom,this.editorAttrs,t);return n||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let n of i.effects)if(n.is(q.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=n.value}}mountStyles(){this.styleModules=this.state.facet(Yr);let t=this.state.facet(q.cspNonce);ws.mount(this.root,this.styleModules.concat(yQ).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;e<this.measureRequests.length;e++)if(this.measureRequests[e].key===t.key){this.measureRequests[e]=t;return}}this.measureRequests.push(t)}}plugin(t){let e=this.pluginMap.get(t);return(e===void 0||e&&e.plugin!=t)&&this.pluginMap.set(t,e=this.plugins.find(i=>i.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return mc(this,t,bm(this,t,e,i))}moveByGroup(t,e){return mc(this,t,bm(this,t,e,i=>RA(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),n=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return D.cursor(r.side(e,n)+t.from,r.forward(!e,n)?1:-1)}moveToLineBoundary(t,e,i=!0){return QA(this,t,e,i)}moveVertically(t,e,i){return mc(this,t,EA(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=fd(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),fd(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let n=this.state.doc.lineAt(t),r=this.bidiSpans(n),o=r[Ti.find(r,t-n.from,-1,e)];return Tl(i,o.dir==$t.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(sb)||t<this.viewport.from||t>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>vQ)return jx(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||qx(r.isolates,i=mm(this,t))))return r.order;i||(i=mm(this,t));let n=rA(t.text,e,i);return this.bidiCache.push(new Ll(t.from,t.to,e,i,!0,n)),n}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||U.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{Wx(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,n,r,o;return ka.of(new jn(typeof t=="number"?D.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(n=e.x)!==null&&n!==void 0?n:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return ka.of(new jn(D.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Nt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Nt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=ws.newName(),n=[Aa.of(i),Yr.of(Od(`.${i}`,t))];return e&&e.dark&&n.push(gd.of(!0)),n}static baseTheme(t){return Ps.lowest(Yr.of(Od("."+md,t,Pb)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),n=i&&Xt.get(i)||Xt.get(t);return((e=n==null?void 0:n.root)===null||e===void 0?void 0:e.view)||null}}q.styleModule=Yr;q.inputHandler=eb;q.clipboardInputFilter=bf;q.clipboardOutputFilter=wf;q.scrollHandler=rb;q.focusChangeEffect=ib;q.perLineTextDirection=sb;q.exceptionSink=tb;q.updateListener=cd;q.editable=Fi;q.mouseSelectionStyle=Jx;q.dragMovesSelection=Kx;q.clickAddsSelectionRange=Hx;q.decorations=uh;q.blockWrappers=lb;q.outerDecorations=vf;q.atomicRanges=Vo;q.bidiIsolatedRanges=hb;q.cursorScrollMargin=j.define({combine:s=>{let t=5,e=5;for(let i of s)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});q.scrollMargins=cb;q.darkTheme=gd;q.cspNonce=j.define({combine:s=>s.length?s[0]:""});q.contentAttributes=Sf;q.editorAttributes=ab;q.lineWrapping=q.contentAttributes.of({class:"cm-lineWrapping"});q.announce=rt.define();const vQ=4096,Zm={};class Ll{constructor(t,e,i,n,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=n,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],n=t.length?t[t.length-1].dir:$t.LTR;for(let r=Math.max(0,t.length-10);r<t.length;r++){let o=t[r];o.dir==n&&!e.touchesRange(o.from,o.to)&&i.push(new Ll(e.mapPos(o.from,1),e.mapPos(o.to,-1),o.dir,o.isolates,!1,o.order))}return i}}function Dm(s,t,e){for(let i=s.state.facet(t),n=i.length-1;n>=0;n--){let r=i[n],o=typeof r=="function"?r(s):r;o&&Of(o,e)}return e}const _Q=U.mac?"mac":U.windows?"win":U.linux?"linux":"key";function kQ(s,t){const e=s.split(/-(?!$)/);let i=e[e.length-1];i=="Space"&&(i=" ");let n,r,o,a;for(let l=0;l<e.length-1;++l){const h=e[l];if(/^(cmd|meta|m)$/i.test(h))a=!0;else if(/^a(lt)?$/i.test(h))n=!0;else if(/^(c|ctrl|control)$/i.test(h))r=!0;else if(/^s(hift)?$/i.test(h))o=!0;else if(/^mod$/i.test(h))t=="mac"?a=!0:r=!0;else throw new Error("Unrecognized modifier name: "+h)}return n&&(i="Alt-"+i),r&&(i="Ctrl-"+i),a&&(i="Meta-"+i),o&&(i="Shift-"+i),i}function Qa(s,t,e){return t.altKey&&(s="Alt-"+s),t.ctrlKey&&(s="Ctrl-"+s),t.metaKey&&(s="Meta-"+s),e!==!1&&t.shiftKey&&(s="Shift-"+s),s}const $Q=Ps.default(q.domEventHandlers({keydown(s,t){return Mb(Tb(t.state),s,t,"editor")}})),gh=j.define({enables:$Q}),Bm=new WeakMap;function Tb(s){let t=s.facet(gh),e=Bm.get(t);return e||Bm.set(t,e=TQ(t.reduce((i,n)=>i.concat(n),[]))),e}function CQ(s,t,e){return Mb(Tb(s.state),t,s,e)}let fs=null;const PQ=4e3;function TQ(s,t=_Q){let e=Object.create(null),i=Object.create(null),n=(o,a)=>{let l=i[o];if(l==null)i[o]=a;else if(l!=a)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,a,l,h,c)=>{var u,d;let f=e[o]||(e[o]=Object.create(null)),p=a.split(/ (?!$)/).map(O=>kQ(O,t));for(let O=1;O<p.length;O++){let x=p.slice(0,O).join(" ");n(x,!0),f[x]||(f[x]={preventDefault:!0,stopPropagation:!1,run:[b=>{let v=fs={view:b,prefix:x,scope:o};return setTimeout(()=>{fs==v&&(fs=null)},PQ),!0}]})}let g=p.join(" ");n(g,!1);let m=f[g]||(f[g]={preventDefault:!1,stopPropagation:!1,run:((d=(u=f._any)===null||u===void 0?void 0:u.run)===null||d===void 0?void 0:d.slice())||[]});l&&m.run.push(l),h&&(m.preventDefault=!0),c&&(m.stopPropagation=!0)};for(let o of s){let a=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of a){let c=e[h]||(e[h]=Object.create(null));c._any||(c._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:u}=o;for(let d in c)c[d].run.push(f=>u(f,yd))}let l=o[t]||o.key;if(l)for(let h of a)r(h,l,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+l,o.shift,o.preventDefault,o.stopPropagation)}return e}let yd=null;function Mb(s,t,e,i){yd=t;let n=YM(t),r=Te(n,0),o=Ci(r)==n.length&&n!=" ",a="",l=!1,h=!1,c=!1;fs&&fs.view==e&&fs.scope==i&&(a=fs.prefix+" ",yb.indexOf(t.keyCode)<0&&(h=!0,fs=null));let u=new Set,d=m=>{if(m){for(let O of m.run)if(!u.has(O)&&(u.add(O),O(e)))return m.stopPropagation&&(c=!0),!0;m.preventDefault&&(m.stopPropagation&&(c=!0),h=!0)}return!1},f=s[i],p,g;return f&&(d(f[a+Qa(n,t,!o)])?l=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(U.windows&&t.ctrlKey&&t.altKey)&&!(U.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Ss[t.keyCode])&&p!=n?(d(f[a+Qa(p,t,!0)])||t.shiftKey&&(g=$o[t.keyCode])!=n&&g!=p&&d(f[a+Qa(g,t,!1)]))&&(l=!0):o&&t.shiftKey&&d(f[a+Qa(n,t,!0)])&&(l=!0),!l&&d(f._any)&&(l=!0)),h&&(l=!0),l&&c&&t.stopPropagation(),yd=null,l}class Js{constructor(t,e,i,n,r){this.className=t,this.left=e,this.top=i,this.width=n,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let n=t.coordsAtPos(i.head,i.assoc||1);if(!n)return[];let r=Ab(t);return[new Js(e,n.left-r.left,n.top-r.top,null,n.bottom-n.top)]}else return MQ(t,e,i)}}function Ab(s){let t=s.scrollDOM.getBoundingClientRect();return{left:(s.textDirection==$t.LTR?t.left:t.right-s.scrollDOM.clientWidth*s.scaleX)-s.scrollDOM.scrollLeft*s.scaleX,top:t.top-s.scrollDOM.scrollTop*s.scaleY}}function Xm(s,t,e,i){let n=s.coordsAtPos(t,e*2);if(!n)return i;let r=s.dom.getBoundingClientRect(),o=(n.top+n.bottom)/2,a=s.posAtCoords({x:r.left+1,y:o}),l=s.posAtCoords({x:r.right-1,y:o});return a==null||l==null?i:{from:Math.max(i.from,Math.min(a,l)),to:Math.min(i.to,Math.max(a,l))}}function MQ(s,t,e){if(e.to<=s.viewport.from||e.from>=s.viewport.to)return[];let i=Math.max(e.from,s.viewport.from),n=Math.min(e.to,s.viewport.to),r=s.textDirection==$t.LTR,o=s.contentDOM,a=o.getBoundingClientRect(),l=Ab(s),h=o.querySelector(".cm-line"),c=h&&window.getComputedStyle(h),u=a.left+(c?parseInt(c.paddingLeft)+Math.min(0,parseInt(c.textIndent)):0),d=a.right-(c?parseInt(c.paddingRight):0),f=dd(s,i,1),p=dd(s,n,-1),g=f.type==fe.Text?f:null,m=p.type==fe.Text?p:null;if(g&&(s.lineWrapping||f.widgetLineBreaks)&&(g=Xm(s,i,1,g)),m&&(s.lineWrapping||p.widgetLineBreaks)&&(m=Xm(s,n,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return x(b(e.from,e.to,g));{let w=g?b(e.from,null,g):v(f,!1),S=m?b(null,e.to,m):v(p,!0),y=[];return(g||f).to<(m||p).from-(g&&m?1:0)||f.widgetLineBreaks>1&&w.bottom+s.defaultLineHeight/2<S.top?y.push(O(u,w.bottom,d,S.top)):w.bottom<S.top&&s.elementAtHeight((w.bottom+S.top)/2).type==fe.Text&&(w.bottom=S.top=(w.bottom+S.top)/2),x(w).concat(y).concat(x(S))}function O(w,S,y,_){return new Js(t,w-l.left,S-l.top,Math.max(0,y-w),_-S)}function x({top:w,bottom:S,horizontal:y}){let _=[];for(let k=0;k<y.length;k+=2)_.push(O(y[k],w,y[k+1],S));return _}function b(w,S,y){let _=1e9,k=-1e9,P=[];function T(C,B,E,I,V){let Z=s.coordsAtPos(C,C==y.to?-2:2),N=s.coordsAtPos(E,E==y.from?2:-2);!Z||!N||(_=Math.min(Z.top,N.top,_),k=Math.max(Z.bottom,N.bottom,k),V==$t.LTR?P.push(r&&B?u:Z.left,r&&I?d:N.right):P.push(!r&&I?u:N.left,!r&&B?d:Z.right))}let $=w??y.from,A=S??y.to;for(let C of s.visibleRanges)if(C.to>$&&C.from<A)for(let B=Math.max(C.from,$),E=Math.min(C.to,A);;){let I=s.state.doc.lineAt(B);for(let V of s.bidiSpans(I)){let Z=V.from+I.from,N=V.to+I.from;if(Z>=E)break;N>B&&T(Math.max(Z,B),w==null&&Z<=$,Math.min(N,E),S==null&&N>=A,V.dir)}if(B=I.to+1,B>=E)break}return P.length==0&&T($,w==null,A,S==null,s.textDirection),{top:_,bottom:k,horizontal:P}}function v(w,S){let y=a.top+(S?w.top:w.bottom);return{top:y,bottom:y,horizontal:[]}}}function AQ(s,t){return s.constructor==t.constructor&&s.eq(t)}class QQ{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sl)!=t.state.facet(sl)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sl);for(;e<i.length&&i[e]!=this.layer;)e++;this.dom.style.zIndex=String((this.layer.above?150:-1)-e)}measure(){return this.layer.markers(this.view)}scale(){let{scaleX:t,scaleY:e}=this.view;(t!=this.scaleX||e!=this.scaleY)&&(this.scaleX=t,this.scaleY=e,this.dom.style.transform=`scale(${1/t}, ${1/e})`)}draw(t){if(t.length!=this.drawn.length||t.some((e,i)=>!AQ(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let n of t)n.update&&e&&n.constructor&&this.drawn[i].constructor&&n.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(n.draw(),e);for(;e;){let n=e.nextSibling;e.remove(),e=n}this.drawn=t,U.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const sl=j.define();function Qb(s){return[Nt.define(t=>new QQ(t,s)),sl.of(s)]}const hr=j.define({combine(s){return Ii(s,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function RQ(s={}){return[hr.of(s),EQ,LQ,IQ,nb.of(!0)]}function Rb(s){return s.startState.facet(hr)!=s.state.facet(hr)}const EQ=Qb({above:!0,markers(s){let{state:t}=s,e=t.facet(hr),i=[];for(let n of t.selection.ranges){let r=n==t.selection.main;if(n.empty||e.drawRangeCursor&&!(r&&U.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",a=n.empty?n:D.cursor(n.head,n.assoc);for(let l of Js.forRange(s,o,a))i.push(l)}}return i},update(s,t){s.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=Rb(s);return e&&zm(s.state,t),s.docChanged||s.selectionSet||e},mount(s,t){zm(t.state,s)},class:"cm-cursorLayer"});function zm(s,t){t.style.animationDuration=s.facet(hr).cursorBlinkRate+"ms"}const LQ=Qb({above:!1,markers(s){let t=[],{main:e,ranges:i}=s.state.selection;for(let n of i)if(!n.empty)for(let r of Js.forRange(s,"cm-selectionBackground",n))t.push(r);if(U.ios&&!e.empty&&s.state.facet(hr).iosSelectionHandles){for(let n of Js.forRange(s,"cm-selectionHandle cm-selectionHandle-start",D.cursor(e.from,1)))t.push(n);for(let n of Js.forRange(s,"cm-selectionHandle cm-selectionHandle-end",D.cursor(e.to,1)))t.push(n)}return t},update(s,t){return s.docChanged||s.selectionSet||s.viewportChanged||Rb(s)},class:"cm-selectionLayer"}),IQ=Ps.highest(q.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Eb=rt.define({map(s,t){return s==null?null:t.mapPos(s)}}),Vr=pe.define({create(){return null},update(s,t){return s!=null&&(s=t.changes.mapPos(s)),t.effects.reduce((e,i)=>i.is(Eb)?i.value:e,s)}}),ZQ=Nt.fromClass(class{constructor(s){this.view=s,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(s){var t;let e=s.state.field(Vr);e==null?this.cursor!=null&&((t=this.cursor)===null||t===void 0||t.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(s.startState.field(Vr)!=e||s.docChanged||s.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:s}=this,t=s.state.field(Vr),e=t!=null&&s.coordsAtPos(t);if(!e)return null;let i=s.scrollDOM.getBoundingClientRect();return{left:e.left-i.left+s.scrollDOM.scrollLeft*s.scaleX,top:e.top-i.top+s.scrollDOM.scrollTop*s.scaleY,height:e.bottom-e.top}}drawCursor(s){if(this.cursor){let{scaleX:t,scaleY:e}=this.view;s?(this.cursor.style.left=s.left/t+"px",this.cursor.style.top=s.top/e+"px",this.cursor.style.height=s.height/e+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(s){this.view.state.field(Vr)!=s&&this.view.dispatch({effects:Eb.of(s)})}},{eventObservers:{dragover(s){this.setDropPos(this.view.posAtCoords({x:s.clientX,y:s.clientY}))},dragleave(s){(s.target==this.view.contentDOM||!this.view.contentDOM.contains(s.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function DQ(){return[Vr,ZQ]}function Wm(s,t,e,i,n){t.lastIndex=0;for(let r=s.iterRange(e,i),o=e,a;!r.next().done;o+=r.value.length)if(!r.lineBreak)for(;a=t.exec(r.value);)n(o+a.index,a)}function BQ(s,t){let e=s.visibleRanges;if(e.length==1&&e[0].from==s.viewport.from&&e[0].to==s.viewport.to)return e;let i=[];for(let{from:n,to:r}of e)n=Math.max(s.state.doc.lineAt(n).from,n-t),r=Math.min(s.state.doc.lineAt(r).to,r+t),i.length&&i[i.length-1].to>=n?i[i.length-1].to=r:i.push({from:n,to:r});return i}class XQ{constructor(t){const{regexp:e,decoration:i,decorate:n,boundary:r,maxLength:o=1e3}=t;if(!e.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=e,n)this.addMatch=(a,l,h,c)=>n(c,h,h+a[0].length,a,l);else if(typeof i=="function")this.addMatch=(a,l,h,c)=>{let u=i(a,l,h);u&&c(h,h+a[0].length,u)};else if(i)this.addMatch=(a,l,h,c)=>c(h,h+a[0].length,i);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=r,this.maxLength=o}createDeco(t){let e=new es,i=e.add.bind(e);for(let{from:n,to:r}of BQ(t,this.maxLength))Wm(t.state.doc,this.regexp,n,r,(o,a)=>this.addMatch(a,t,o,i));return e.finish()}updateDeco(t,e){let i=1e9,n=-1;return t.docChanged&&t.changes.iterChanges((r,o,a,l)=>{l>=t.view.viewport.from&&a<=t.view.viewport.to&&(i=Math.min(a,i),n=Math.max(l,n))}),t.viewportMoved||n-i>1e3?this.createDeco(t.view):n>-1?this.updateRange(t.view,e.map(t.changes),i,n):e}updateRange(t,e,i,n){for(let r of t.visibleRanges){let o=Math.max(r.from,i),a=Math.min(r.to,n);if(a>=o){let l=t.state.doc.lineAt(o),h=l.to<a?t.state.doc.lineAt(a):l,c=Math.max(r.from,l.from),u=Math.min(r.to,h.to);if(this.boundary){for(;o>l.from;o--)if(this.boundary.test(l.text[o-1-l.from])){c=o;break}for(;a<h.to;a++)if(this.boundary.test(h.text[a-h.from])){u=a;break}}let d=[],f,p=(g,m,O)=>d.push(O.range(g,m));if(l==h)for(this.regexp.lastIndex=c-l.from;(f=this.regexp.exec(l.text))&&f.index<u-l.from;)this.addMatch(f,t,f.index+l.from,p);else Wm(t.state.doc,this.regexp,c,u,(g,m)=>this.addMatch(m,t,g,p));e=e.update({filterFrom:c,filterTo:u,filter:(g,m)=>g<c||m>u,add:d})}}return e}}const xd=/x/.unicode!=null?"gu":"g",zQ=new RegExp(`[\0-\b
|
|
261
|
+
--\u2028\u2029\uFEFF-]`,xd),WQ={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let xc=null;function GQ(){var s;if(xc==null&&typeof document<"u"&&document.body){let t=document.body.style;xc=((s=t.tabSize)!==null&&s!==void 0?s:t.MozTabSize)!=null}return xc||!1}const nl=j.define({combine(s){let t=Ii(s,{render:null,specialChars:zQ,addSpecialChars:null});return(t.replaceTabs=!GQ())&&(t.specialChars=new RegExp(" |"+t.specialChars.source,xd)),t.addSpecialChars&&(t.specialChars=new RegExp(t.specialChars.source+"|"+t.addSpecialChars.source,xd)),t}});function YQ(s={}){return[nl.of(s),NQ()]}let Gm=null;function NQ(){return Gm||(Gm=Nt.fromClass(class{constructor(s){this.view=s,this.decorations=et.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(s.state.facet(nl)),this.decorations=this.decorator.createDeco(s)}makeDecorator(s){return new XQ({regexp:s.specialChars,decoration:(t,e,i)=>{let{doc:n}=e.state,r=Te(t[0],0);if(r==9){let o=n.lineAt(i),a=e.state.tabSize,l=gr(o.text,a,i-o.from);return et.replace({widget:new jQ((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[r]||(this.decorationCache[r]=et.replace({widget:new qQ(s,r)}))},boundary:s.replaceTabs?void 0:/[^]/})}update(s){let t=s.state.facet(nl);s.startState.facet(nl)!=t?(this.decorator=this.makeDecorator(t),this.decorations=this.decorator.createDeco(s.view)):this.decorations=this.decorator.updateDeco(s,this.decorations)}},{decorations:s=>s.decorations}))}const VQ="•";function FQ(s){return s>=32?VQ:s==10?"":String.fromCharCode(9216+s)}class qQ extends Zi{constructor(t,e){super(),this.options=t,this.code=e}eq(t){return t.code==this.code}toDOM(t){let e=FQ(this.code),i=t.state.phrase("Control character")+" "+(WQ[this.code]||"0x"+this.code.toString(16)),n=this.options.render&&this.options.render(this.code,i,e);if(n)return n;let r=document.createElement("span");return r.textContent=e,r.title=i,r.setAttribute("aria-label",i),r.className="cm-specialChar",r}ignoreEvent(){return!1}}class jQ extends Zi{constructor(t){super(),this.width=t}eq(t){return t.width==this.width}toDOM(){let t=document.createElement("span");return t.textContent=" ",t.className="cm-tab",t.style.width=this.width+"px",t}ignoreEvent(){return!1}}function UQ(){return KQ}const HQ=et.line({class:"cm-activeLine"}),KQ=Nt.fromClass(class{constructor(s){this.decorations=this.getDeco(s)}update(s){(s.docChanged||s.selectionSet)&&(this.decorations=this.getDeco(s.view))}getDeco(s){let t=-1,e=[];for(let i of s.state.selection.ranges){let n=s.lineBlockAt(i.head);n.from>t&&(e.push(HQ.range(n.from)),t=n.from)}return et.set(e)}},{decorations:s=>s.decorations}),bd=2e3;function JQ(s,t,e){let i=Math.min(t.line,e.line),n=Math.max(t.line,e.line),r=[];if(t.off>bd||e.off>bd||t.col<0||e.col<0){let o=Math.min(t.off,e.off),a=Math.max(t.off,e.off);for(let l=i;l<=n;l++){let h=s.doc.line(l);h.length<=a&&r.push(D.range(h.from+o,h.to+a))}}else{let o=Math.min(t.col,e.col),a=Math.max(t.col,e.col);for(let l=i;l<=n;l++){let h=s.doc.line(l),c=Ju(h.text,o,s.tabSize,!0);if(c<0)r.push(D.cursor(h.to));else{let u=Ju(h.text,a,s.tabSize);r.push(D.range(h.from+c,h.from+u))}}}return r}function tR(s,t){let e=s.coordsAtPos(s.viewport.from);return e?Math.round(Math.abs((e.left-t)/s.defaultCharacterWidth)):-1}function Ym(s,t){let e=s.posAtCoords({x:t.clientX,y:t.clientY},!1),i=s.state.doc.lineAt(e),n=e-i.from,r=n>bd?-1:n==i.length?tR(s,t.clientX):gr(i.text,s.state.tabSize,e-i.from);return{line:i.number,col:r,off:n}}function eR(s,t){let e=Ym(s,t),i=s.state.selection;return e?{update(n){if(n.docChanged){let r=n.changes.mapPos(n.startState.doc.line(e.line).from),o=n.state.doc.lineAt(r);e={line:o.number,col:e.col,off:Math.min(e.off,o.length)},i=i.map(n.changes)}},get(n,r,o){let a=Ym(s,n);if(!a)return i;let l=JQ(s.state,e,a);return l.length?o?D.create(l.concat(i.ranges)):D.create(l):i}}:null}function iR(s){let t=(e=>e.altKey&&e.button==0);return q.mouseSelectionStyle.of((e,i)=>t(i)?eR(e,i):null)}const sR={Alt:[18,s=>!!s.altKey],Control:[17,s=>!!s.ctrlKey],Shift:[16,s=>!!s.shiftKey],Meta:[91,s=>!!s.metaKey]},nR={style:"cursor: crosshair"};function rR(s={}){let[t,e]=sR[s.key||"Alt"],i=Nt.fromClass(class{constructor(n){this.view=n,this.isDown=!1}set(n){this.isDown!=n&&(this.isDown=n,this.view.update([]))}},{eventObservers:{keydown(n){this.set(n.keyCode==t||e(n))},keyup(n){(n.keyCode==t||!e(n))&&this.set(!1)},mousemove(n){this.set(e(n))}}});return[i,q.contentAttributes.of(n=>{var r;return!((r=n.plugin(i))===null||r===void 0)&&r.isDown?nR:null})]}const Ra="-10000px";class Lb{constructor(t,e,i,n){this.facet=e,this.createTooltipView=i,this.removeTooltipView=n,this.input=t.state.facet(e),this.tooltips=this.input.filter(o=>o);let r=null;this.tooltipViews=this.tooltips.map(o=>r=i(o,r))}update(t,e){var i;let n=t.state.facet(this.facet),r=n.filter(l=>l);if(n===this.input){for(let l of this.tooltipViews)l.update&&l.update(t);return!1}let o=[],a=e?[]:null;for(let l=0;l<r.length;l++){let h=r[l],c=-1;if(h){for(let u=0;u<this.tooltips.length;u++){let d=this.tooltips[u];d&&d.create==h.create&&(c=u)}if(c<0)o[l]=this.createTooltipView(h,l?o[l-1]:null),a&&(a[l]=!!h.above);else{let u=o[l]=this.tooltipViews[c];a&&(a[l]=e[c]),u.update&&u.update(t)}}}for(let l of this.tooltipViews)o.indexOf(l)<0&&(this.removeTooltipView(l),(i=l.destroy)===null||i===void 0||i.call(l));return e&&(a.forEach((l,h)=>e[h]=l),e.length=a.length),this.input=n,this.tooltips=r,this.tooltipViews=o,!0}}function oR(s){let t=s.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:t.clientHeight,right:t.clientWidth}}const bc=j.define({combine:s=>{var t,e,i;return{position:U.ios?"absolute":((t=s.find(n=>n.position))===null||t===void 0?void 0:t.position)||"fixed",parent:((e=s.find(n=>n.parent))===null||e===void 0?void 0:e.parent)||null,tooltipSpace:((i=s.find(n=>n.tooltipSpace))===null||i===void 0?void 0:i.tooltipSpace)||oR}}}),Nm=new WeakMap,Pf=Nt.fromClass(class{constructor(s){this.view=s,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let t=s.state.facet(bc);this.position=t.position,this.parent=t.parent,this.classes=s.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Lb(s,Tf,(e,i)=>this.createTooltip(e,i),e=>{this.resizeObserver&&this.resizeObserver.unobserve(e.dom),e.dom.remove()}),this.above=this.manager.tooltips.map(e=>!!e.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(e=>{Date.now()>this.lastTransaction-50&&e.length>0&&e[e.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),s.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let s of this.manager.tooltipViews)this.intersectionObserver.observe(s.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(s){s.transactions.length&&(this.lastTransaction=Date.now());let t=this.manager.update(s,this.above);t&&this.observeIntersection();let e=t||s.geometryChanged,i=s.state.facet(bc);if(i.position!=this.position&&!this.madeAbsolute){this.position=i.position;for(let n of this.manager.tooltipViews)n.dom.style.position=this.position;e=!0}if(i.parent!=this.parent){this.parent&&this.container.remove(),this.parent=i.parent,this.createContainer();for(let n of this.manager.tooltipViews)this.container.appendChild(n.dom);e=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);e&&this.maybeMeasure()}createTooltip(s,t){let e=s.create(this.view),i=t?t.dom:null;if(e.dom.classList.add("cm-tooltip"),s.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let n=document.createElement("div");n.className="cm-tooltip-arrow",e.dom.appendChild(n)}return e.dom.style.position=this.position,e.dom.style.top=Ra,e.dom.style.left="0px",this.container.insertBefore(e.dom,i),e.mount&&e.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(e.dom),e}destroy(){var s,t,e;this.view.win.removeEventListener("resize",this.measureSoon);for(let i of this.manager.tooltipViews)i.dom.remove(),(s=i.destroy)===null||s===void 0||s.call(i);this.parent&&this.container.remove(),(t=this.resizeObserver)===null||t===void 0||t.disconnect(),(e=this.intersectionObserver)===null||e===void 0||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let s=1,t=1,e=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:r}=this.manager.tooltipViews[0];if(U.safari){let o=r.getBoundingClientRect();e=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else e=!!r.offsetParent&&r.offsetParent!=this.container.ownerDocument.body}if(e||this.position=="absolute")if(this.parent){let r=this.parent.getBoundingClientRect();r.width&&r.height&&(s=r.width/this.parent.offsetWidth,t=r.height/this.parent.offsetHeight)}else({scaleX:s,scaleY:t}=this.view.viewState);let i=this.view.scrollDOM.getBoundingClientRect(),n=_f(this.view);return{visible:{left:i.left+n.left,top:i.top+n.top,right:i.right-n.right,bottom:i.bottom-n.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((r,o)=>{let a=this.manager.tooltipViews[o];return a.getCoords?a.getCoords(r.pos):this.view.coordsAtPos(r.pos)}),size:this.manager.tooltipViews.map(({dom:r})=>r.getBoundingClientRect()),space:this.view.state.facet(bc).tooltipSpace(this.view),scaleX:s,scaleY:t,makeAbsolute:e}}writeMeasure(s){var t;if(s.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let a of this.manager.tooltipViews)a.dom.style.position="absolute"}let{visible:e,space:i,scaleX:n,scaleY:r}=s,o=[];for(let a=0;a<this.manager.tooltips.length;a++){let l=this.manager.tooltips[a],h=this.manager.tooltipViews[a],{dom:c}=h,u=s.pos[a],d=s.size[a];if(!u||l.clip!==!1&&(u.bottom<=Math.max(e.top,i.top)||u.top>=Math.min(e.bottom,i.bottom)||u.right<Math.max(e.left,i.left)-.1||u.left>Math.min(e.right,i.right)+.1)){c.style.top=Ra;continue}let f=l.arrow?h.dom.querySelector(".cm-tooltip-arrow"):null,p=f?7:0,g=d.right-d.left,m=(t=Nm.get(h))!==null&&t!==void 0?t:d.bottom-d.top,O=h.offset||lR,x=this.view.textDirection==$t.LTR,b=d.width>i.right-i.left?x?i.left:i.right-d.width:x?Math.max(i.left,Math.min(u.left-(f?14:0)+O.x,i.right-g)):Math.min(Math.max(i.left,u.left-g+(f?14:0)-O.x),i.right-g),v=this.above[a];!l.strictSide&&(v?u.top-m-p-O.y<i.top:u.bottom+m+p+O.y>i.bottom)&&v==i.bottom-u.bottom>u.top-i.top&&(v=this.above[a]=!v);let w=(v?u.top-i.top:i.bottom-u.bottom)-p;if(w<m&&h.resize!==!1){if(w<this.view.defaultLineHeight){c.style.top=Ra;continue}Nm.set(h,m),c.style.height=(m=w)/r+"px"}else c.style.height&&(c.style.height="");let S=v?u.top-m-p-O.y:u.bottom+p+O.y,y=b+g;if(h.overlap!==!0)for(let _ of o)_.left<y&&_.right>b&&_.top<S+m&&_.bottom>S&&(S=v?_.top-m-2-p:_.bottom+p+2);if(this.position=="absolute"?(c.style.top=(S-s.parent.top)/r+"px",Vm(c,(b-s.parent.left)/n)):(c.style.top=S/r+"px",Vm(c,b/n)),f){let _=u.left+(x?O.x:-O.x)-(b+14-7);f.style.left=_/n+"px"}h.overlap!==!0&&o.push({left:b,top:S,right:y,bottom:S+m}),c.classList.toggle("cm-tooltip-above",v),c.classList.toggle("cm-tooltip-below",!v),h.positioned&&h.positioned(s.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let s of this.manager.tooltipViews)s.dom.style.top=Ra}},{eventObservers:{scroll(){this.maybeMeasure()}}});function Vm(s,t){let e=parseInt(s.style.left,10);(isNaN(e)||Math.abs(t-e)>1)&&(s.style.left=t+"px")}const aR=q.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),lR={x:0,y:0},Tf=j.define({enables:[Pf,aR]}),Il=j.define({combine:s=>s.reduce((t,e)=>t.concat(e),[])});class mh{static create(t){return new mh(t)}constructor(t){this.view=t,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Lb(t,Il,(e,i)=>this.createHostedView(e,i),e=>e.dom.remove())}createHostedView(t,e){let i=t.create(this.view);return i.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(i.dom,e?e.dom.nextSibling:this.dom.firstChild),this.mounted&&i.mount&&i.mount(this.view),i}mount(t){for(let e of this.manager.tooltipViews)e.mount&&e.mount(t);this.mounted=!0}positioned(t){for(let e of this.manager.tooltipViews)e.positioned&&e.positioned(t)}update(t){this.manager.update(t)}destroy(){var t;for(let e of this.manager.tooltipViews)(t=e.destroy)===null||t===void 0||t.call(e)}passProp(t){let e;for(let i of this.manager.tooltipViews){let n=i[t];if(n!==void 0){if(e===void 0)e=n;else if(e!==n)return}}return e}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const hR=Tf.compute([Il],s=>{let t=s.facet(Il);return t.length===0?null:{pos:Math.min(...t.map(e=>e.pos)),end:Math.max(...t.map(e=>{var i;return(i=e.end)!==null&&i!==void 0?i:e.pos})),create:mh.create,above:t[0].above,arrow:t.some(e=>e.arrow)}}),Ib=j.define();class cR{constructor(t,e,i,n,r,o){this.view=t,this.source=e,this.field=i,this.locked=n,this.setHover=r,this.hoverTime=o,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:t.dom,time:0},this.checkHover=this.checkHover.bind(this),t.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),t.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(t){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let t=Date.now()-this.lastMove.time;t<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-t):this.startHover()}startHover(){clearTimeout(this.restartTimeout);let{view:t,lastMove:e}=this,i=t.docView.tile.nearest(e.target);if(!i)return;let n,r=1;if(i.isWidget())n=i.posAtStart;else{if(n=t.posAtCoords(e),n==null)return;let o=t.coordsAtPos(n);if(!o||e.y<o.top||e.y>o.bottom||e.x<o.left-t.defaultCharacterWidth||e.x>o.right+t.defaultCharacterWidth)return;let a=t.bidiSpans(t.state.doc.lineAt(n)).find(h=>h.from<=n&&h.to>=n),l=a&&a.dir==$t.RTL?-1:1;r=e.x<o.left?-l:l}this.activateHover(t,n,r)}activateHover(t,e,i,n){let r=this.source(t,e,i),o=a=>{if(a&&!(Array.isArray(a)&&!a.length)){let l=Array.isArray(a)?a:[a];n&&this.locked.set(l,n),t.dispatch({effects:this.setHover.of(l)})}};if(r&&"then"in r){let a=this.pending={pos:e};r.then(l=>{this.pending==a&&(this.pending=null,o(l))},l=>Qe(t.state,l,"hover tooltip"))}else o(r)}get tooltip(){let t=this.view.plugin(Pf),e=t?t.manager.tooltips.findIndex(i=>i.create==mh.create):-1;return e>-1?t.manager.tooltipViews[e]:null}mousemove(t){var e,i;this.lastMove={x:t.clientX,y:t.clientY,target:t.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:n,tooltip:r}=this;if(n.length&&!this.locked.has(n)&&r&&!uR(r.dom,t)||this.pending){let{pos:o}=n[0]||this.pending,a=(i=(e=n[0])===null||e===void 0?void 0:e.end)!==null&&i!==void 0?i:o;(o==a?this.view.posAtCoords(this.lastMove)!=o:!dR(this.view,o,a,t.clientX,t.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(t){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:e}=this;if(e.length&&!this.locked.has(e)){let{tooltip:i}=this;i&&i.dom.contains(t.relatedTarget)?this.watchTooltipLeave(i.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(t){let e=i=>{t.removeEventListener("mouseleave",e);let{active:n}=this;n.length&&!this.locked.has(n)&&!this.view.dom.contains(i.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};t.addEventListener("mouseleave",e)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const Ea=4;function uR(s,t){let{left:e,right:i,top:n,bottom:r}=s.getBoundingClientRect(),o;if(o=s.querySelector(".cm-tooltip-arrow")){let a=o.getBoundingClientRect();n=Math.min(a.top,n),r=Math.max(a.bottom,r)}return t.clientX>=e-Ea&&t.clientX<=i+Ea&&t.clientY>=n-Ea&&t.clientY<=r+Ea}function dR(s,t,e,i,n,r){let o=s.scrollDOM.getBoundingClientRect(),a=s.documentTop+s.documentPadding.top+s.contentHeight;if(o.left>i||o.right<i||o.top>n||Math.min(o.bottom,a)<n)return!1;let l=s.posAtCoords({x:i,y:n},!1);return l>=t&&l<=e}function fR(s,t={}){let e=rt.define(),i=new WeakMap,n=pe.define({create(){return[]},update(o,a){let l=i.get(o);if(o.length&&(t.hideOnChange&&(a.docChanged||a.selection)?o=[]:l&&l(a)?o=[]:t.hideOn&&(o=o.filter(h=>!t.hideOn(a,h)))),a.docChanged&&o.length){let h=[];for(let c of o){let u=a.changes.mapPos(c.pos,-1,ue.TrackDel);if(u!=null){let d=Object.assign(Object.create(null),c);d.pos=u,d.end!=null&&(d.end=a.changes.mapPos(d.end)),h.push(d)}}o=h}for(let h of a.effects)h.is(e)&&(o=h.value,l=void 0),(h.is(gR)&&!h.value||h.value==n)&&(o=[]);return o.length&&l&&i.set(o,l),o},provide:o=>Il.from(o)});const r=Nt.define(o=>new cR(o,s,n,i,e,t.hoverTime||300));return{active:n,extension:[n,r,Ib.of(r),hR]}}function pR(s,t,e,i={}){var n;let r=s.state.facet(Ib).map(o=>s.plugin(o)).filter(o=>!!o);if(i.tooltip&&i.tooltip.active){let o=r.find(a=>a.field==i.tooltip.active);o&&(r=[o])}for(let o of r)o.activateHover(s,t,e,(n=i.until)!==null&&n!==void 0?n:(()=>!1))}function Zb(s,t){let e=s.plugin(Pf);if(!e)return null;let i=e.manager.tooltips.indexOf(t);return i<0?null:e.manager.tooltipViews[i]}const gR=rt.define(),Fm=j.define({combine(s){let t,e;for(let i of s)t=t||i.topContainer,e=e||i.bottomContainer;return{topContainer:t,bottomContainer:e}}});function Mf(s,t){let e=s.plugin(Db),i=e?e.specs.indexOf(t):-1;return i>-1?e.panels[i]:null}const Db=Nt.fromClass(class{constructor(s){this.input=s.state.facet(Mo),this.specs=this.input.filter(e=>e),this.panels=this.specs.map(e=>e(s));let t=s.state.facet(Fm);this.top=new La(s,!0,t.topContainer),this.bottom=new La(s,!1,t.bottomContainer),this.top.sync(this.panels.filter(e=>e.top)),this.bottom.sync(this.panels.filter(e=>!e.top));for(let e of this.panels)e.dom.classList.add("cm-panel"),e.mount&&e.mount()}update(s){let t=s.state.facet(Fm);this.top.container!=t.topContainer&&(this.top.sync([]),this.top=new La(s.view,!0,t.topContainer)),this.bottom.container!=t.bottomContainer&&(this.bottom.sync([]),this.bottom=new La(s.view,!1,t.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let e=s.state.facet(Mo);if(e!=this.input){let i=e.filter(l=>l),n=[],r=[],o=[],a=[];for(let l of i){let h=this.specs.indexOf(l),c;h<0?(c=l(s.view),a.push(c)):(c=this.panels[h],c.update&&c.update(s)),n.push(c),(c.top?r:o).push(c)}this.specs=i,this.panels=n,this.top.sync(r),this.bottom.sync(o);for(let l of a)l.dom.classList.add("cm-panel"),l.mount&&l.mount()}else for(let i of this.panels)i.update&&i.update(s)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:s=>q.scrollMargins.of(t=>{let e=t.plugin(s);return e&&{top:e.top.scrollMargin(),bottom:e.bottom.scrollMargin()}})});class La{constructor(t,e,i){this.view=t,this.top=e,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(t){for(let e of this.panels)e.destroy&&t.indexOf(e)<0&&e.destroy();this.panels=t,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let e=this.container||this.view.dom;e.insertBefore(this.dom,this.top?e.firstChild:null)}let t=this.dom.firstChild;for(let e of this.panels)if(e.dom.parentNode==this.dom){for(;t!=e.dom;)t=qm(t);t=t.nextSibling}else this.dom.insertBefore(e.dom,t);for(;t;)t=qm(t)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let t of this.classes.split(" "))t&&this.container.classList.remove(t);for(let t of(this.classes=this.view.themeClasses).split(" "))t&&this.container.classList.add(t)}}}function qm(s){let t=s.nextSibling;return s.remove(),t}const Mo=j.define({enables:Db});function mR(s,t){let e,i=new Promise(o=>e=o),n=o=>OR(o,t,e);s.state.field(wc,!1)?s.dispatch({effects:Bb.of(n)}):s.dispatch({effects:rt.appendConfig.of(wc.init(()=>[n]))});let r=Xb.of(n);return{close:r,result:i.then(o=>((s.win.queueMicrotask||(l=>s.win.setTimeout(l,10)))(()=>{s.state.field(wc).indexOf(n)>-1&&s.dispatch({effects:r})}),o))}}const wc=pe.define({create(){return[]},update(s,t){for(let e of t.effects)e.is(Bb)?s=[e.value].concat(s):e.is(Xb)&&(s=s.filter(i=>i!=e.value));return s},provide:s=>Mo.computeN([s],t=>t.field(s))}),Bb=rt.define(),Xb=rt.define();function OR(s,t,e){let i=t.content?t.content(s,()=>o(null)):null;if(!i){if(i=vt("form"),t.input){let a=vt("input",t.input);/^(text|password|number|email|tel|url)$/.test(a.type)&&a.classList.add("cm-textfield"),a.name||(a.name="input"),i.appendChild(vt("label",(t.label||"")+": ",a))}else i.appendChild(document.createTextNode(t.label||""));i.appendChild(document.createTextNode(" ")),i.appendChild(vt("button",{class:"cm-button",type:"submit"},t.submitLabel||"OK"))}let n=i.nodeName=="FORM"?[i]:i.querySelectorAll("form");for(let a=0;a<n.length;a++){let l=n[a];l.addEventListener("keydown",h=>{h.keyCode==27?(h.preventDefault(),o(null)):h.keyCode==13&&(h.preventDefault(),o(l))}),l.addEventListener("submit",h=>{h.preventDefault(),o(l)})}let r=vt("div",i,vt("button",{onclick:()=>o(null),"aria-label":s.state.phrase("close"),class:"cm-dialog-close",type:"button"},["×"]));t.class&&(r.className=t.class),r.classList.add("cm-dialog");function o(a){r.contains(r.ownerDocument.activeElement)&&s.focus(),e(a)}return{dom:r,top:t.top,mount:()=>{if(t.focus){let a;typeof t.focus=="string"?a=i.querySelector(t.focus):a=i.querySelector("input")||i.querySelector("button"),a&&"select"in a?a.select():a&&"focus"in a&&a.focus()}}}}class ss extends bs{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}}ss.prototype.elementClass="";ss.prototype.toDOM=void 0;ss.prototype.mapMode=ue.TrackBefore;ss.prototype.startSide=ss.prototype.endSide=-1;ss.prototype.point=!0;const rl=j.define(),yR=j.define(),xR={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>ut.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},ao=j.define();function bR(s){return[zb(),ao.of({...xR,...s})]}const jm=j.define({combine:s=>s.some(t=>t)});function zb(s){return[wR]}const wR=Nt.fromClass(class{constructor(s){this.view=s,this.domAfter=null,this.prevViewport=s.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=s.state.facet(ao).map(t=>new Hm(s,t)),this.fixed=!s.state.facet(jm);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),s.scrollDOM.insertBefore(this.dom,s.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(s){if(this.updateGutters(s)){let t=this.prevViewport,e=s.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(s.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(jm)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=s.view.viewport}syncGutters(s){let t=this.dom.nextSibling;s&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=ut.iter(this.view.state.facet(rl),this.view.viewport.from),i=[],n=this.gutters.map(r=>new SR(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let a of r.type)if(a.type==fe.Text&&o){wd(e,i,a.from);for(let l of n)l.line(this.view,a,i);o=!1}else if(a.widget)for(let l of n)l.widget(this.view,a)}else if(r.type==fe.Text){wd(e,i,r.from);for(let o of n)o.line(this.view,r,i)}else if(r.widget)for(let o of n)o.widget(this.view,r);for(let r of n)r.finish();s&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(s){let t=s.startState.facet(ao),e=s.state.facet(ao),i=s.docChanged||s.heightChanged||s.viewportChanged||!ut.eq(s.startState.facet(rl),s.state.facet(rl),s.view.viewport.from,s.view.viewport.to);if(t==e)for(let n of this.gutters)n.update(s)&&(i=!0);else{i=!0;let n=[];for(let r of e){let o=t.indexOf(r);o<0?n.push(new Hm(this.view,r)):(this.gutters[o].update(s),n.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),n.indexOf(r)<0&&r.destroy();for(let r of n)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=n}return i}destroy(){for(let s of this.gutters)s.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:s=>q.scrollMargins.of(t=>{let e=t.plugin(s);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,n=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==$t.LTR?{left:i,right:n}:{right:i,left:n}})});function Um(s){return Array.isArray(s)?s:[s]}function wd(s,t,e){for(;s.value&&s.from<=e;)s.from==e&&t.push(s.value),s.next()}class SR{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=ut.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:n}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==n.elements.length){let a=new Wb(t,o,r,i);n.elements.push(a),n.dom.appendChild(a.dom)}else n.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let n=[];wd(this.cursor,n,e.from),i.length&&(n=n.concat(i));let r=this.gutter.config.lineMarker(t,e,n);r&&n.unshift(r);let o=this.gutter;n.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,n)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),n=i?[i]:null;for(let r of t.state.facet(yR)){let o=r(t,e.widget,e);o&&(n||(n=[])).push(o)}n&&this.addElement(t,e,n)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}}class Hm{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,n=>{let r=n.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let l=r.getBoundingClientRect();o=(l.top+l.bottom)/2}else o=n.clientY;let a=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,a,n)&&n.preventDefault()});this.markers=Um(e.markers(t)),e.initialSpacer&&(this.spacer=new Wb(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=Um(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let n=this.config.updateSpacer(this.spacer.markers[0],t);n!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[n])}let i=t.view.viewport;return!ut.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}}class Wb{constructor(t,e,i,n){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,n)}update(t,e,i,n){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),vR(this.markers,n)||this.setMarkers(t,n)}setMarkers(t,e){let i="cm-gutterElement",n=this.dom.firstChild;for(let r=0,o=0;;){let a=o,l=r<e.length?e[r++]:null,h=!1;if(l){let c=l.elementClass;c&&(i+=" "+c);for(let u=o;u<this.markers.length;u++)if(this.markers[u].compare(l)){a=u,h=!0;break}}else a=this.markers.length;for(;o<a;){let c=this.markers[o++];if(c.toDOM){c.destroy(n);let u=n.nextSibling;n.remove(),n=u}}if(!l)break;l.toDOM&&(h?n=n.nextSibling:this.dom.insertBefore(l.toDOM(t),n)),h&&o++}this.dom.className=i,this.markers=e}destroy(){this.setMarkers(null,[])}}function vR(s,t){if(s.length!=t.length)return!1;for(let e=0;e<s.length;e++)if(!s[e].compare(t[e]))return!1;return!0}const _R=j.define(),kR=j.define(),Bn=j.define({combine(s){return Ii(s,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(t,e){let i=Object.assign({},t);for(let n in e){let r=i[n],o=e[n];i[n]=r?(a,l,h)=>r(a,l,h)||o(a,l,h):o}return i}})}});class Sc extends ss{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}}function vc(s,t){return s.state.facet(Bn).formatNumber(t,s.state)}const $R=ao.compute([Bn],s=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(_R)},lineMarker(t,e,i){return i.some(n=>n.toDOM)?null:new Sc(vc(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let n of t.state.facet(kR)){let r=n(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(Bn)!=t.state.facet(Bn),initialSpacer(t){return new Sc(vc(t,Km(t.state.doc.lines)))},updateSpacer(t,e){let i=vc(e.view,Km(e.view.state.doc.lines));return i==t.number?t:new Sc(i)},domEventHandlers:s.facet(Bn).domEventHandlers,side:"before"}));function CR(s={}){return[Bn.of(s),zb(),$R]}function Km(s){let t=9;for(;t<s;)t=t*10+9;return t}const PR=new class extends ss{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},TR=rl.compute(["selection"],s=>{let t=[],e=-1;for(let i of s.selection.ranges){let n=s.doc.lineAt(i.head).from;n>e&&(e=n,t.push(PR.range(n)))}return ut.of(t)});function MR(){return TR}function AR(s){const[t,e]=Y(),[i,n]=Y();function r(o){return XM(o,i)}return r(q.updateListener.of(o=>{var a;return s==null||(a=s.onModelViewUpdate)===null||a===void 0?void 0:a.call(s,o)})),gt(ho(t,o=>{const a=new q({state:yt.create({doc:(s==null?void 0:s.value)??""}),parent:o,dispatch:(l,h)=>{if(s!=null&&s.onTransactionDispatched&&s.onTransactionDispatched(l,h),a.update([l]),l.docChanged){var c;const u=l.state.doc.toString();s==null||(c=s.onValueChange)===null||c===void 0||c.call(s,u)}}});un(()=>n(a)),de(()=>{var l;(l=i())===null||l===void 0||l.destroy(),n(void 0)})})),gt(ho(i,o=>{const a=o==null?void 0:o.state.doc.toString();a!==(s==null?void 0:s.value)&&o&&o.dispatch({changes:{from:0,to:a==null?void 0:a.length,insert:(s==null?void 0:s.value)??""}})},{defer:!0})),{editorView:i,ref:e,createExtension:r}}function QR(s,t){const e=Os(t);gt(ho(s,i=>{i&>(ho(e,n=>{const r=i.state.doc.toString();r!==n&&i.dispatch({changes:{from:0,to:r.length,insert:n??""}})}))}))}const Gb=1024;let RR=0;class _c{constructor(t,e){this.from=t,this.to=e}}class ct{constructor(t={}){this.id=RR++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=Ze.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}}ct.closedBy=new ct({deserialize:s=>s.split(" ")});ct.openedBy=new ct({deserialize:s=>s.split(" ")});ct.group=new ct({deserialize:s=>s.split(" ")});ct.isolate=new ct({deserialize:s=>{if(s&&s!="rtl"&&s!="ltr"&&s!="auto")throw new RangeError("Invalid value for isolate: "+s);return s||"auto"}});ct.contextHash=new ct({perNode:!0});ct.lookAhead=new ct({perNode:!0});ct.mounted=new ct({perNode:!0});class lo{constructor(t,e,i,n=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=n}static get(t){return t&&t.props&&t.props[ct.mounted.id]}}const ER=Object.create(null);class Ze{constructor(t,e,i,n=0){this.name=t,this.props=e,this.id=i,this.flags=n}static define(t){let e=t.props&&t.props.length?Object.create(null):ER,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),n=new Ze(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(n)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return n}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(ct.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let n of i.split(" "))e[n]=t[i];return i=>{for(let n=i.prop(ct.group),r=-1;r<(n?n.length:0);r++){let o=e[r<0?i.name:n[r]];if(o)return o}}}}Ze.none=new Ze("",Object.create(null),0,8);class Af{constructor(t){this.types=t;for(let e=0;e<t.length;e++)if(t[e].id!=e)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...t){let e=[];for(let i of this.types){let n=null;for(let r of t){let o=r(i);if(o){n||(n=Object.assign({},i.props));let a=o[1],l=o[0];l.combine&&l.id in n&&(a=l.combine(n[l.id],a)),n[l.id]=a}}e.push(n?new Ze(i.name,n,i.id,i.flags):i)}return new Af(e)}}const Ia=new WeakMap,Jm=new WeakMap;var Rt;(function(s){s[s.ExcludeBuffers=1]="ExcludeBuffers",s[s.IncludeAnonymous=2]="IncludeAnonymous",s[s.IgnoreMounts=4]="IgnoreMounts",s[s.IgnoreOverlays=8]="IgnoreOverlays",s[s.EnterBracketed=16]="EnterBracketed"})(Rt||(Rt={}));class Yt{constructor(t,e,i,n,r){if(this.type=t,this.children=e,this.positions=i,this.length=n,this.props=null,r&&r.length){this.props=Object.create(null);for(let[o,a]of r)this.props[typeof o=="number"?o:o.id]=a}}toString(){let t=lo.get(this);if(t&&!t.overlay)return t.tree.toString();let e="";for(let i of this.children){let n=i.toString();n&&(e&&(e+=","),e+=n)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(e.length?"("+e+")":""):e}cursor(t=0){return new vd(this.topNode,t)}cursorAt(t,e=0,i=0){let n=Ia.get(this)||this.topNode,r=new vd(n);return r.moveTo(t,e),Ia.set(this,r._tree),r}get topNode(){return new Ee(this,0,0,null)}resolve(t,e=0){let i=Ao(Ia.get(this)||this.topNode,t,e,!1);return Ia.set(this,i),i}resolveInner(t,e=0){let i=Ao(Jm.get(this)||this.topNode,t,e,!0);return Jm.set(this,i),i}resolveStack(t,e=0){return ZR(this,t,e)}iterate(t){let{enter:e,leave:i,from:n=0,to:r=this.length}=t,o=t.mode||0,a=(o&Rt.IncludeAnonymous)>0;for(let l=this.cursor(o|Rt.IncludeAnonymous);;){let h=!1;if(l.from<=r&&l.to>=n&&(!a&&l.type.isAnonymous||e(l)!==!1)){if(l.firstChild())continue;h=!0}for(;h&&i&&(a||!l.type.isAnonymous)&&i(l),!l.nextSibling();){if(!l.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Ef(Ze.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,n)=>new Yt(this.type,e,i,n,this.propValues),t.makeTree||((e,i,n)=>new Yt(Ze.none,e,i,n)))}static build(t){return DR(t)}}Yt.empty=new Yt(Ze.none,[],[],0);class Qf{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Qf(this.buffer,this.index)}}class _s{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return Ze.none}toString(){let t=[];for(let e=0;e<this.buffer.length;)t.push(this.childString(e)),e=this.buffer[e+3];return t.join(",")}childString(t){let e=this.buffer[t],i=this.buffer[t+3],n=this.set.types[e],r=n.name;if(/\W/.test(r)&&!n.isError&&(r=JSON.stringify(r)),t+=4,i==t)return r;let o=[];for(;t<i;)o.push(this.childString(t)),t=this.buffer[t+3];return r+"("+o.join(",")+")"}findChild(t,e,i,n,r){let{buffer:o}=this,a=-1;for(let l=t;l!=e&&!(Yb(r,n,o[l+1],o[l+2])&&(a=l,i>0));l=o[l+3]);return a}slice(t,e,i){let n=this.buffer,r=new Uint16Array(e-t),o=0;for(let a=t,l=0;a<e;){r[l++]=n[a++],r[l++]=n[a++]-i;let h=r[l++]=n[a++]-i;r[l++]=n[a++]-t,o=Math.max(o,h)}return new _s(r,o,this.set)}}function Yb(s,t,e,i){switch(s){case-2:return e<t;case-1:return i>=t&&e<t;case 0:return e<t&&i>t;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ao(s,t,e,i){for(var n;s.from==s.to||(e<1?s.from>=t:s.from>t)||(e>-1?s.to<=t:s.to<t);){let o=!i&&s instanceof Ee&&s.index<0?null:s.parent;if(!o)return s;s=o}let r=i?0:Rt.IgnoreOverlays;if(i)for(let o=s,a=o.parent;a;o=a,a=o.parent)o instanceof Ee&&o.index<0&&((n=a.enter(t,e,r))===null||n===void 0?void 0:n.from)!=o.from&&(s=a);for(;;){let o=s.enter(t,e,r);if(!o)return s;s=o}}class Nb{cursor(t=0){return new vd(this,t)}getChild(t,e=null,i=null){let n=tO(this,t,e,i);return n.length?n[0]:null}getChildren(t,e=null,i=null){return tO(this,t,e,i)}resolve(t,e=0){return Ao(this,t,e,!1)}resolveInner(t,e=0){return Ao(this,t,e,!0)}matchContext(t){return Sd(this.parent,t)}enterUnfinishedNodesBefore(t){let e=this.childBefore(t),i=this;for(;e;){let n=e.lastChild;if(!n||n.to!=e.to)break;n.type.isError&&n.from==n.to?(i=e,e=n.prevSibling):e=n}return i}get node(){return this}get next(){return this.parent}}class Ee extends Nb{constructor(t,e,i,n){super(),this._tree=t,this.from=e,this.index=i,this._parent=n}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(t,e,i,n,r=0){for(let o=this;;){for(let{children:a,positions:l}=o._tree,h=e>0?a.length:-1;t!=h;t+=e){let c=a[t],u=l[t]+o.from,d;if(!(!(r&Rt.EnterBracketed&&c instanceof Yt&&(d=lo.get(c))&&!d.overlay&&d.bracketed&&i>=u&&i<=u+c.length)&&!Yb(n,i,u,u+c.length))){if(c instanceof _s){if(r&Rt.ExcludeBuffers)continue;let f=c.findChild(0,c.buffer.length,e,i-u,n);if(f>-1)return new Mi(new LR(o,c,t,u),null,f)}else if(r&Rt.IncludeAnonymous||!c.type.isAnonymous||Rf(c)){let f;if(!(r&Rt.IgnoreMounts)&&(f=lo.get(c))&&!f.overlay)return new Ee(f.tree,u,t,o);let p=new Ee(c,u,t,o);return r&Rt.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?c.children.length-1:0,e,i,n,r)}}}if(r&Rt.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let n;if(!(i&Rt.IgnoreOverlays)&&(n=lo.get(this._tree))&&n.overlay){let r=t-this.from,o=i&Rt.EnterBracketed&&n.bracketed;for(let{from:a,to:l}of n.overlay)if((e>0||o?a<=r:a<r)&&(e<0||o?l>=r:l>r))return new Ee(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function tO(s,t,e,i){let n=s.cursor(),r=[];if(!n.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=n.type.is(e),!n.nextSibling())return r}for(;;){if(i!=null&&n.type.is(i))return r;if(n.type.is(t)&&r.push(n.node),!n.nextSibling())return i==null?r:[]}}function Sd(s,t,e=t.length-1){for(let i=s;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}class LR{constructor(t,e,i,n){this.parent=t,this.buffer=e,this.index=i,this.start=n}}class Mi extends Nb{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:n}=this.context,r=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new Mi(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&Rt.ExcludeBuffers)return null;let{buffer:n}=this.context,r=n.findChild(this.index+4,n.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new Mi(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new Mi(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new Mi(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,n=this.index+4,r=i.buffer[this.index+3];if(r>n){let o=i.buffer[this.index+1];t.push(i.slice(n,r,o)),e.push(0)}return new Yt(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function Vb(s){if(!s.length)return null;let t=0,e=s[0];for(let r=1;r<s.length;r++){let o=s[r];(o.from>e.from||o.to<e.to)&&(e=o,t=r)}let i=e instanceof Ee&&e.index<0?null:e.parent,n=s.slice();return i?n[t]=i:n.splice(t,1),new IR(n,e)}class IR{constructor(t,e){this.heads=t,this.node=e}get next(){return Vb(this.heads)}}function ZR(s,t,e){let i=s.resolveInner(t,e),n=null;for(let r=i instanceof Ee?i:i.context.parent;r;r=r.parent)if(r.index<0){let o=r.parent;(n||(n=[i])).push(o.resolve(t,e)),r=o}else{let o=lo.get(r.tree);if(o&&o.overlay&&o.overlay[0].from<=t&&o.overlay[o.overlay.length-1].to>=t){let a=new Ee(o.tree,o.overlay[0].from+r.from,-1,r);(n||(n=[i])).push(Ao(a,t,e,!1))}}return n?Vb(n):i}class vd{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~Rt.EnterBracketed,t instanceof Ee)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:n}=this.buffer;return this.type=e||n.set.types[n.buffer[t]],this.from=i+n.buffer[t+1],this.to=i+n.buffer[t+2],!0}yield(t){return t?t instanceof Ee?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:n}=this.buffer,r=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&Rt.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&Rt.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&Rt.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let n=i<0?0:this.stack[i]+4;if(this.index!=n)return this.yieldBuf(e.findChild(n,this.index,-1,0,4))}else{let n=e.buffer[this.index+3];if(n<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(n)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:n}=this;if(n){if(t>0){if(this.index<n.buffer.buffer.length)return!1}else for(let r=0;r<this.index;r++)if(n.buffer.buffer[r+3]<this.index)return!1;({index:e,parent:i}=n)}else({index:e,_parent:i}=this._tree);for(;i;{index:e,_parent:i}=i)if(e>-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let a=i._tree.children[r];if(this.mode&Rt.IncludeAnonymous||a instanceof _s||!a.type.isAnonymous||Rf(a))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to<t))&&this.parent(););for(;this.enterChild(1,t,e););return this}get node(){if(!this.buffer)return this._tree;let t=this.bufferNode,e=null,i=0;if(t&&t.context==this.buffer)t:for(let n=this.index,r=this.stack.length;r>=0;){for(let o=t;o;o=o._parent)if(o.index==n){if(n==this.index)return o;e=o,i=r+1;break t}n=this.stack[--r]}for(let n=i;n<this.stack.length;n++)e=new Mi(this.buffer,e,this.stack[n]);return this.bufferNode=new Mi(this.buffer,e,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(t,e){for(let i=0;;){let n=!1;if(this.type.isAnonymous||t(this)!==!1){if(this.firstChild()){i++;continue}this.type.isAnonymous||(n=!0)}for(;;){if(n&&e&&e(this),n=this.type.isAnonymous,!i)return;if(this.nextSibling())break;this.parent(),i--,n=!0}}}matchContext(t){if(!this.buffer)return Sd(this.node.parent,t);let{buffer:e}=this.buffer,{types:i}=e.set;for(let n=t.length-1,r=this.stack.length-1;n>=0;r--){if(r<0)return Sd(this._tree,t,n);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[n]&&t[n]!=o.name)return!1;n--}}return!0}}function Rf(s){return s.children.some(t=>t instanceof _s||!t.type.isAnonymous||Rf(t))}function DR(s){var t;let{buffer:e,nodeSet:i,maxBufferLength:n=Gb,reused:r=[],minRepeatType:o=i.types.length}=s,a=Array.isArray(e)?new Qf(e,e.length):e,l=i.types,h=0,c=0;function u(w,S,y,_,k,P){let{id:T,start:$,end:A,size:C}=a,B=c,E=h;if(C<0)if(a.next(),C==-1){let z=r[T];y.push(z),_.push($-w);return}else if(C==-3){h=T;return}else if(C==-4){c=T;return}else throw new RangeError(`Unrecognized record size: ${C}`);let I=l[T],V,Z,N=$-w;if(A-$<=n&&(Z=m(a.pos-S,k))){let z=new Uint16Array(Z.size-Z.skip),X=a.pos-Z.size,H=z.length;for(;a.pos>X;)H=O(Z.start,z,H);V=new _s(z,A-Z.start,i),N=Z.start-w}else{let z=a.pos-C;a.next();let X=[],H=[],K=T>=o?T:-1,it=0,Ot=A;for(;a.pos>z;)K>=0&&a.id==K&&a.size>=0?(a.end<=Ot-n&&(p(X,H,$,it,a.end,Ot,K,B,E),it=X.length,Ot=a.end),a.next()):P>2500?d($,z,X,H):u($,z,X,H,K,P+1);if(K>=0&&it>0&&it<X.length&&p(X,H,$,it,$,Ot,K,B,E),X.reverse(),H.reverse(),K>-1&&it>0){let ae=f(I,E);V=Ef(I,X,H,0,X.length,0,A-$,ae,ae)}else V=g(I,X,H,A-$,B-A,E)}y.push(V),_.push(N)}function d(w,S,y,_){let k=[],P=0,T=-1;for(;a.pos>S;){let{id:$,start:A,end:C,size:B}=a;if(B>4)a.next();else{if(T>-1&&A<T)break;T<0&&(T=C-n),k.push($,A,C),P++,a.next()}}if(P){let $=new Uint16Array(P*4),A=k[k.length-2];for(let C=k.length-3,B=0;C>=0;C-=3)$[B++]=k[C],$[B++]=k[C+1]-A,$[B++]=k[C+2]-A,$[B++]=B;y.push(new _s($,k[2]-A,i)),_.push(A-w)}}function f(w,S){return(y,_,k)=>{let P=0,T=y.length-1,$,A;if(T>=0&&($=y[T])instanceof Yt){if(!T&&$.type==w&&$.length==k)return $;(A=$.prop(ct.lookAhead))&&(P=_[T]+$.length+A)}return g(w,y,_,k,P,S)}}function p(w,S,y,_,k,P,T,$,A){let C=[],B=[];for(;w.length>_;)C.push(w.pop()),B.push(S.pop()+y-k);w.push(g(i.types[T],C,B,P-k,$-P,A)),S.push(k-y)}function g(w,S,y,_,k,P,T){if(P){let $=[ct.contextHash,P];T=T?[$].concat(T):[$]}if(k>25){let $=[ct.lookAhead,k];T=T?[$].concat(T):[$]}return new Yt(w,S,y,_,T)}function m(w,S){let y=a.fork(),_=0,k=0,P=0,T=y.end-n,$={size:0,start:0,skip:0};t:for(let A=y.pos-w;y.pos>A;){let C=y.size;if(y.id==S&&C>=0){$.size=_,$.start=k,$.skip=P,P+=4,_+=4,y.next();continue}let B=y.pos-C;if(C<0||B<A||y.start<T)break;let E=y.id>=o?4:0,I=y.start;for(y.next();y.pos>B;){if(y.size<0)if(y.size==-3||y.size==-4)E+=4;else break t;else y.id>=o&&(E+=4);y.next()}k=I,_+=C,P+=E}return(S<0||_==w)&&($.size=_,$.start=k,$.skip=P),$.size>4?$:void 0}function O(w,S,y){let{id:_,start:k,end:P,size:T}=a;if(a.next(),T>=0&&_<o){let $=y;if(T>4){let A=a.pos-(T-4);for(;a.pos>A;)y=O(w,S,y)}S[--y]=$,S[--y]=P-w,S[--y]=k-w,S[--y]=_}else T==-3?h=_:T==-4&&(c=_);return y}let x=[],b=[];for(;a.pos>0;)u(s.start||0,s.bufferStart||0,x,b,-1,0);let v=(t=s.length)!==null&&t!==void 0?t:x.length?b[0]+x[0].length:0;return new Yt(l[s.topID],x.reverse(),b.reverse(),v)}const eO=new WeakMap;function ol(s,t){if(!s.isAnonymous||t instanceof _s||t.type!=s)return 1;let e=eO.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=s||!(i instanceof Yt)){e=1;break}e+=ol(s,i)}eO.set(t,e)}return e}function Ef(s,t,e,i,n,r,o,a,l){let h=0;for(let p=i;p<n;p++)h+=ol(s,t[p]);let c=Math.ceil(h*1.5/8),u=[],d=[];function f(p,g,m,O,x){for(let b=m;b<O;){let v=b,w=g[b],S=ol(s,p[b]);for(b++;b<O;b++){let y=ol(s,p[b]);if(S+y>=c)break;S+=y}if(b==v+1){if(S>c){let y=p[v];f(y.children,y.positions,0,y.children.length,g[v]+x);continue}u.push(p[v])}else{let y=g[b-1]+p[b-1].length-w;u.push(Ef(s,p,g,v,b,w,y,null,l))}d.push(w+x-r)}}return f(t,e,i,n,0),(a||l)(u,d,o)}class BR{constructor(){this.map=new WeakMap}setBuffer(t,e,i){let n=this.map.get(t);n||this.map.set(t,n=new Map),n.set(e,i)}getBuffer(t,e){let i=this.map.get(t);return i&&i.get(e)}set(t,e){t instanceof Mi?this.setBuffer(t.context.buffer,t.index,e):t instanceof Ee&&this.map.set(t.tree,e)}get(t){return t instanceof Mi?this.getBuffer(t.context.buffer,t.index):t instanceof Ee?this.map.get(t.tree):void 0}cursorSet(t,e){t.buffer?this.setBuffer(t.buffer.buffer,t.index,e):this.map.set(t.tree,e)}cursorGet(t){return t.buffer?this.getBuffer(t.buffer.buffer,t.index):this.map.get(t.tree)}}class tn{constructor(t,e,i,n,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=n,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let n=[new tn(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&n.push(r);return n}static applyChanges(t,e,i=128){if(!e.length)return t;let n=[],r=1,o=t.length?t[0]:null;for(let a=0,l=0,h=0;;a++){let c=a<e.length?e[a]:null,u=c?c.fromA:1e9;if(u-l>=i)for(;o&&o.from<u;){let d=o;if(l>=d.from||u<=d.to||h){let f=Math.max(d.from,l)-h,p=Math.min(d.to,u)-h;d=f>=p?null:new tn(f,p,d.tree,d.offset+h,a>0,!!c)}if(d&&n.push(d),o.to>u)break;o=r<t.length?t[r++]:null}if(!c)break;l=c.toA,h=c.toA-c.toB}return n}}class Fb{startParse(t,e,i){return typeof t=="string"&&(t=new XR(t)),i=i?i.length?i.map(n=>new _c(n.from,n.to)):[new _c(0,0)]:[new _c(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let n=this.startParse(t,e,i);for(;;){let r=n.advance();if(r)return r}}}class XR{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}}new ct({perNode:!0});let zR=0;class je{constructor(t,e,i,n){this.name=t,this.set=e,this.base=i,this.modified=n,this.id=zR++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof je&&(e=t),e!=null&&e.base)throw new Error("Can not derive from a modified tag");let n=new je(i,[],null,[]);if(n.set.push(n),e)for(let r of e.set)n.set.push(r);return n}static defineModifier(t){let e=new Zl(t);return i=>i.modified.indexOf(e)>-1?i:Zl.get(i.base||i,i.modified.concat(e).sort((n,r)=>n.id-r.id))}}let WR=0;class Zl{constructor(t){this.name=t,this.instances=[],this.id=WR++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(a=>a.base==t&&GR(e,a.modified));if(i)return i;let n=[],r=new je(t.name,n,t,e);for(let a of e)a.instances.push(r);let o=YR(e);for(let a of t.set)if(!a.modified.length)for(let l of o)n.push(Zl.get(a,l));return r}}function GR(s,t){return s.length==t.length&&s.every((e,i)=>e==t[i])}function YR(s){let t=[[]];for(let e=0;e<s.length;e++)for(let i=0,n=t.length;i<n;i++)t.push(t[i].concat(s[e]));return t.sort((e,i)=>i.length-e.length)}function qb(s){let t=Object.create(null);for(let e in s){let i=s[e];Array.isArray(i)||(i=[i]);for(let n of e.split(" "))if(n){let r=[],o=2,a=n;for(let u=0;;){if(a=="..."&&u>0&&u+3==n.length){o=1;break}let d=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!d)throw new RangeError("Invalid path: "+n);if(r.push(d[0]=="*"?"":d[0][0]=='"'?JSON.parse(d[0]):d[0]),u+=d[0].length,u==n.length)break;let f=n[u++];if(u==n.length&&f=="!"){o=0;break}if(f!="/")throw new RangeError("Invalid path: "+n);a=n.slice(u)}let l=r.length-1,h=r[l];if(!h)throw new RangeError("Invalid path: "+n);let c=new Qo(i,o,l>0?r.slice(0,l):null);t[h]=c.sort(t[h])}}return jb.add(t)}const jb=new ct({combine(s,t){let e,i,n;for(;s||t;){if(!s||t&&s.depth>=t.depth?(n=t,t=t.next):(n=s,s=s.next),e&&e.mode==n.mode&&!n.context&&!e.context)continue;let r=new Qo(n.tags,n.mode,n.context);e?e.next=r:i=r,e=r}return i}});class Qo{constructor(t,e,i,n){this.tags=t,this.mode=e,this.context=i,this.next=n}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth<this.depth?(this.next=t,this):(t.next=this.sort(t.next),t)}get depth(){return this.context?this.context.length:0}}Qo.empty=new Qo([],2,null);function Ub(s,t){let e=Object.create(null);for(let r of s)if(!Array.isArray(r.tag))e[r.tag.id]=r.class;else for(let o of r.tag)e[o.id]=r.class;let{scope:i,all:n=null}=t||{};return{style:r=>{let o=n;for(let a of r)for(let l of a.set){let h=e[l.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function NR(s,t){let e=null;for(let i of s){let n=i.style(t);n&&(e=e?e+" "+n:n)}return e}function VR(s,t,e,i=0,n=s.length){let r=new FR(i,Array.isArray(t)?t:[t],e);r.highlightRange(s.cursor(),i,n,"",r.highlighters),r.flush(n)}class FR{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,n,r){let{type:o,from:a,to:l}=t;if(a>=i||l<=e)return;o.isTop&&(r=this.highlighters.filter(f=>!f.scope||f.scope(o)));let h=n,c=qR(t)||Qo.empty,u=NR(r,c.tags);if(u&&(h&&(h+=" "),h+=u,c.mode==1&&(n+=(n?" ":"")+u)),this.startSpan(Math.max(e,a),h),c.opaque)return;let d=t.tree&&t.tree.prop(ct.mounted);if(d&&d.overlay){let f=t.node.enter(d.overlay[0].from+a,1),p=this.highlighters.filter(m=>!m.scope||m.scope(d.tree.type)),g=t.firstChild();for(let m=0,O=a;;m++){let x=m<d.overlay.length?d.overlay[m]:null,b=x?x.from+a:l,v=Math.max(e,O),w=Math.min(i,b);if(v<w&&g)for(;t.from<w&&(this.highlightRange(t,v,w,n,r),this.startSpan(Math.min(w,t.to),h),!(t.to>=b||!t.nextSibling())););if(!x||b>i)break;O=x.to+a,O>e&&(this.highlightRange(f.cursor(),Math.max(e,x.from+a),Math.min(i,O),"",p),this.startSpan(Math.min(i,O),h))}g&&t.parent()}else if(t.firstChild()){d&&(n="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,n,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}}function qR(s){let t=s.type.prop(jb);for(;t&&t.context&&!s.matchContext(t.context);)t=t.next;return t||null}const F=je.define,Za=F(),hs=F(),iO=F(hs),sO=F(hs),cs=F(),Da=F(cs),kc=F(cs),ki=F(),Es=F(ki),wi=F(),Si=F(),_d=F(),Lr=F(_d),Ba=F(),M={comment:Za,lineComment:F(Za),blockComment:F(Za),docComment:F(Za),name:hs,variableName:F(hs),typeName:iO,tagName:F(iO),propertyName:sO,attributeName:F(sO),className:F(hs),labelName:F(hs),namespace:F(hs),macroName:F(hs),literal:cs,string:Da,docString:F(Da),character:F(Da),attributeValue:F(Da),number:kc,integer:F(kc),float:F(kc),bool:F(cs),regexp:F(cs),escape:F(cs),color:F(cs),url:F(cs),keyword:wi,self:F(wi),null:F(wi),atom:F(wi),unit:F(wi),modifier:F(wi),operatorKeyword:F(wi),controlKeyword:F(wi),definitionKeyword:F(wi),moduleKeyword:F(wi),operator:Si,derefOperator:F(Si),arithmeticOperator:F(Si),logicOperator:F(Si),bitwiseOperator:F(Si),compareOperator:F(Si),updateOperator:F(Si),definitionOperator:F(Si),typeOperator:F(Si),controlOperator:F(Si),punctuation:_d,separator:F(_d),bracket:Lr,angleBracket:F(Lr),squareBracket:F(Lr),paren:F(Lr),brace:F(Lr),content:ki,heading:Es,heading1:F(Es),heading2:F(Es),heading3:F(Es),heading4:F(Es),heading5:F(Es),heading6:F(Es),contentSeparator:F(ki),list:F(ki),quote:F(ki),emphasis:F(ki),strong:F(ki),link:F(ki),monospace:F(ki),strikethrough:F(ki),inserted:F(),deleted:F(),changed:F(),invalid:F(),meta:Ba,documentMeta:F(Ba),annotation:F(Ba),processingInstruction:F(Ba),definition:je.defineModifier("definition"),constant:je.defineModifier("constant"),function:je.defineModifier("function"),standard:je.defineModifier("standard"),local:je.defineModifier("local"),special:je.defineModifier("special")};for(let s in M){let t=M[s];t instanceof je&&(t.name=s)}Ub([{tag:M.link,class:"tok-link"},{tag:M.heading,class:"tok-heading"},{tag:M.emphasis,class:"tok-emphasis"},{tag:M.strong,class:"tok-strong"},{tag:M.keyword,class:"tok-keyword"},{tag:M.atom,class:"tok-atom"},{tag:M.bool,class:"tok-bool"},{tag:M.url,class:"tok-url"},{tag:M.labelName,class:"tok-labelName"},{tag:M.inserted,class:"tok-inserted"},{tag:M.deleted,class:"tok-deleted"},{tag:M.literal,class:"tok-literal"},{tag:M.string,class:"tok-string"},{tag:M.number,class:"tok-number"},{tag:[M.regexp,M.escape,M.special(M.string)],class:"tok-string2"},{tag:M.variableName,class:"tok-variableName"},{tag:M.local(M.variableName),class:"tok-variableName tok-local"},{tag:M.definition(M.variableName),class:"tok-variableName tok-definition"},{tag:M.special(M.variableName),class:"tok-variableName2"},{tag:M.definition(M.propertyName),class:"tok-propertyName tok-definition"},{tag:M.typeName,class:"tok-typeName"},{tag:M.namespace,class:"tok-namespace"},{tag:M.className,class:"tok-className"},{tag:M.macroName,class:"tok-macroName"},{tag:M.propertyName,class:"tok-propertyName"},{tag:M.operator,class:"tok-operator"},{tag:M.comment,class:"tok-comment"},{tag:M.meta,class:"tok-meta"},{tag:M.invalid,class:"tok-invalid"},{tag:M.punctuation,class:"tok-punctuation"}]);var $c;const Xn=new ct;function Hb(s){return j.define({combine:s?t=>t.concat(s):void 0})}const Lf=new ct;class di{constructor(t,e,i=[],n=""){this.data=t,this.name=n,yt.prototype.hasOwnProperty("tree")||Object.defineProperty(yt.prototype,"tree",{get(){return te(this)}}),this.parser=e,this.extension=[ks.of(this),yt.languageData.of((r,o,a)=>{let l=nO(r,o,a),h=l.type.prop(Xn);if(!h)return[];let c=r.facet(h),u=l.type.prop(Lf);if(u){let d=l.resolve(o-l.from,a);for(let f of u)if(f.test(d,r)){let p=r.facet(f.facet);return f.type=="replace"?p:p.concat(c)}}return c})].concat(i)}isActiveAt(t,e,i=-1){return nO(t,e,i).type.prop(Xn)==this.data}findRegions(t){let e=t.facet(ks);if((e==null?void 0:e.data)==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],n=(r,o)=>{if(r.prop(Xn)==this.data){i.push({from:o,to:o+r.length});return}let a=r.prop(ct.mounted);if(a){if(a.tree.prop(Xn)==this.data){if(a.overlay)for(let l of a.overlay)i.push({from:l.from+o,to:l.to+o});else i.push({from:o,to:o+r.length});return}else if(a.overlay){let l=i.length;if(n(a.tree,a.overlay[0].from+o),i.length>l)return}}for(let l=0;l<r.children.length;l++){let h=r.children[l];h instanceof Yt&&n(h,r.positions[l]+o)}};return n(te(t),0),i}get allowsNesting(){return!0}}di.setState=rt.define();function nO(s,t,e){let i=s.facet(ks),n=te(s).topNode;if(!i||i.allowsNesting)for(let r=n;r;r=r.enter(t,e,Rt.ExcludeBuffers|Rt.EnterBracketed))r.type.isTop&&(n=r);return n}class Dl extends di{constructor(t,e,i){super(t,e,[],i),this.parser=e}static define(t){let e=Hb(t.languageData);return new Dl(e,t.parser.configure({props:[Xn.add(i=>i.isTop?e:void 0)]}),t.name)}configure(t,e){return new Dl(this.data,this.parser.configure(t),e||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function te(s){let t=s.field(di.state,!1);return t?t.tree:Yt.empty}class jR{constructor(t){this.doc=t,this.cursorPos=0,this.string="",this.cursor=t.iter()}get length(){return this.doc.length}syncTo(t){return this.string=this.cursor.next(t-this.cursorPos).value,this.cursorPos=t+this.string.length,this.cursorPos-this.string.length}chunk(t){return this.syncTo(t),this.string}get lineChunks(){return!0}read(t,e){let i=this.cursorPos-this.string.length;return t<i||e>=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}}let Ir=null;class Bl{constructor(t,e,i=[],n,r,o,a,l){this.parser=t,this.state=e,this.fragments=i,this.tree=n,this.treeLen=r,this.viewport=o,this.skipped=a,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new Bl(t,e,[],Yt.empty,0,i,[],null)}startParse(){return this.parser.startParse(new jR(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=Yt.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let n=Date.now()+t;t=()=>Date.now()>n}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e<this.state.doc.length&&this.parse.stopAt(e);;){let n=this.parse.advance();if(n)if(this.fragments=this.withoutTempSkipped(tn.addTree(n,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(i=this.parse.stoppedAt)!==null&&i!==void 0?i:this.state.doc.length,this.tree=n,this.parse=null,this.treeLen<(e??this.state.doc.length))this.parse=this.startParse();else return!0;if(t())return!1}})}takeTree(){let t,e;this.parse&&(t=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(tn.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Ir;Ir=this;try{return t()}finally{Ir=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=rO(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:n,treeLen:r,viewport:o,skipped:a}=this;if(this.takeTree(),!t.empty){let l=[];if(t.iterChangedRanges((h,c,u,d)=>l.push({fromA:h,toA:c,fromB:u,toB:d})),i=tn.applyChanges(i,l),n=Yt.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){a=[];for(let h of this.skipped){let c=t.mapPos(h.from,1),u=t.mapPos(h.to,-1);c<u&&a.push({from:c,to:u})}}}return new Bl(this.parser,e,i,n,r,o,a,this.scheduleOn)}updateViewport(t){if(this.viewport.from==t.from&&this.viewport.to==t.to)return!1;this.viewport=t;let e=this.skipped.length;for(let i=0;i<this.skipped.length;i++){let{from:n,to:r}=this.skipped[i];n<t.to&&r>t.from&&(this.fragments=rO(this.fragments,n,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Fb{createParse(e,i,n){let r=n[0].from,o=n[n.length-1].to;return{parsedPos:r,advance(){let l=Ir;if(l){for(let h of n)l.tempSkipped.push(h);t&&(l.scheduleOn=l.scheduleOn?Promise.all([l.scheduleOn,t]):t)}return this.parsedPos=o,new Yt(Ze.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Ir}}function rO(s,t,e){return tn.applyChanges(s,[{fromA:t,toA:e,fromB:t,toB:e}])}class cr{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new cr(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bl.create(t.facet(ks).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new cr(i)}}di.state=pe.define({create:cr.init,update(s,t){for(let e of t.effects)if(e.is(di.setState))return e.value;return t.startState.facet(ks)!=t.state.facet(ks)?cr.init(t.state):s.apply(t)}});let Kb=s=>{let t=setTimeout(()=>s(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(Kb=s=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(s,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});const Cc=typeof navigator<"u"&&(!(($c=navigator.scheduling)===null||$c===void 0)&&$c.isInputPending)?()=>navigator.scheduling.isInputPending():null,UR=Nt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(di.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(di.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=Kb(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnd<e&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=e+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:i,viewport:{to:n}}=this.view,r=i.field(di.state);if(r.tree==r.context.tree&&r.context.isDone(n+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,t&&!Cc?Math.max(25,t.timeRemaining()-5):1e9),a=r.context.treeLen<n&&i.doc.length>n+1e3,l=r.context.work(()=>Cc&&Cc()||Date.now()>o,n+(a?0:1e5));this.chunkBudget-=Date.now()-e,(l||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:di.setState.of(new cr(r.context))})),this.chunkBudget>0&&!(l&&!a)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Qe(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),ks=j.define({combine(s){return s.length?s[0]:null},enables:s=>[di.state,UR,q.contentAttributes.compute([s],t=>{let e=t.facet(s);return e&&e.name?{"data-language":e.name}:{}})]});class HR{constructor(t,e=[]){this.language=t,this.support=e,this.extension=[t,e]}}const KR=j.define(),Oh=j.define({combine:s=>{if(!s.length)return" ";let t=s[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(s[0]));return t}});function Xl(s){let t=s.facet(Oh);return t.charCodeAt(0)==9?s.tabSize*t.length:t.length}function Ro(s,t){let e="",i=s.tabSize,n=s.facet(Oh)[0];if(n==" "){for(;t>=i;)e+=" ",t-=i;n=" "}for(let r=0;r<t;r++)e+=n;return e}function If(s,t){s instanceof yt&&(s=new yh(s));for(let i of s.state.facet(KR)){let n=i(s,t);if(n!==void 0)return n}let e=te(s.state);return e.length>=t?JR(s,e,t):null}class yh{constructor(t,e={}){this.state=t,this.options=e,this.unit=Xl(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:n,simulateDoubleBreak:r}=this.options;return n!=null&&n>=i.from&&n<=i.to?r&&n==t?{text:"",from:t}:(e<0?n<t:n<=t)?{text:i.text.slice(n-i.from),from:n}:{text:i.text.slice(0,n-i.from),from:i.from}:i}textAfterPos(t,e=1){if(this.options.simulateDoubleBreak&&t==this.options.simulateBreak)return"";let{text:i,from:n}=this.lineAt(t,e);return i.slice(t-n,Math.min(i.length,t+100-n))}column(t,e=1){let{text:i,from:n}=this.lineAt(t,e),r=this.countColumn(i,t-n),o=this.options.overrideIndentation?this.options.overrideIndentation(n):-1;return o>-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return gr(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:n}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(n);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const Jb=new ct;function JR(s,t,e){let i=t.resolveStack(e),n=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(n!=i.node){let r=[];for(let o=n;o&&!(o.from<i.node.from||o.to>i.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return t1(i,s,e)}function t1(s,t,e){for(let i=s;i;i=i.next){let n=e5(i.node);if(n)return n(Zf.create(t,e,i))}return 0}function t5(s){return s.pos==s.options.simulateBreak&&s.options.simulateDoubleBreak}function e5(s){let t=s.type.prop(Jb);if(t)return t;let e=s.firstChild,i;if(e&&(i=e.type.prop(ct.closedBy))){let n=s.lastChild,r=n&&i.indexOf(n.name)>-1;return o=>e1(o,!0,1,void 0,r&&!t5(o)?n.from:void 0)}return s.parent==null?i5:null}function i5(){return 0}class Zf extends yh{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new Zf(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(s5(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return t1(this.context.next,this.base,this.pos)}}function s5(s,t){for(let e=t;e;e=e.parent)if(s==e)return!0;return!1}function n5(s){let t=s.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let n=s.options.simulateBreak,r=s.state.doc.lineAt(e.from),o=n==null||n<=r.from?r.to:Math.min(r.to,n);for(let a=e.to;;){let l=t.childAfter(a);if(!l||l==i)return null;if(!l.type.isSkipped){if(l.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}a=l.to}}function r5({closing:s,align:t=!0,units:e=1}){return i=>e1(i,t,e,s)}function e1(s,t,e,i,n){let r=s.textAfter,o=r.match(/^\s*/)[0].length,a=i&&r.slice(o,o+i.length)==i||n==s.pos+o,l=t?n5(s):null;return l?a?s.column(l.from):s.column(l.to):s.baseIndent+(a?0:s.unit*e)}const o5=s=>s.baseIndent;function Pc({except:s,units:t=1}={}){return e=>{let i=s&&s.test(e.textAfter);return e.baseIndent+(i?0:t*e.unit)}}const a5=200;function l5(){return yt.transactionFilter.of(s=>{if(!s.docChanged||!s.isUserEvent("input.type")&&!s.isUserEvent("input.complete"))return s;let t=s.startState.languageDataAt("indentOnInput",s.startState.selection.main.head);if(!t.length)return s;let e=s.newDoc,{head:i}=s.newSelection.main,n=e.lineAt(i);if(i>n.from+a5)return s;let r=e.sliceString(n.from,i);if(!t.some(h=>h.test(r)))return s;let{state:o}=s,a=-1,l=[];for(let{head:h}of o.selection.ranges){let c=o.doc.lineAt(h);if(c.from==a)continue;a=c.from;let u=If(o,c.from);if(u==null)continue;let d=/^\s*/.exec(c.text)[0],f=Ro(o,u);d!=f&&l.push({from:c.from,to:c.from+d.length,insert:f})}return l.length?[s,{changes:l,sequential:!0}]:s})}const h5=j.define(),i1=new ct;function c5(s){let t=s.firstChild,e=s.lastChild;return t&&t.to<e.from?{from:t.to,to:e.type.isError?s.to:e.from}:null}function u5(s,t,e){let i=te(s);if(i.length<e)return null;let n=i.resolveStack(e,1),r=null;for(let o=n;o;o=o.next){let a=o.node;if(a.to<=e||a.from>e)continue;if(r&&a.from<t)break;let l=a.type.prop(i1);if(l&&(a.to<i.length-50||i.length==s.doc.length||!d5(a))){let h=l(a,s);h&&h.from<=e&&h.from>=t&&h.to>e&&(r=h)}}return r}function d5(s){let t=s.lastChild;return t&&t.to==s.to&&t.type.isError}function zl(s,t,e){for(let i of s.facet(h5)){let n=i(s,t,e);if(n)return n}return u5(s,t,e)}function s1(s,t){let e=t.mapPos(s.from,1),i=t.mapPos(s.to,-1);return e>=i?void 0:{from:e,to:i}}const xh=rt.define({map:s1}),Fo=rt.define({map:s1});function n1(s){let t=[];for(let{head:e}of s.state.selection.ranges)t.some(i=>i.from<=e&&i.to>=e)||t.push(s.lineBlockAt(e));return t}const cn=pe.define({create(){return et.none},update(s,t){t.isUserEvent("delete")&&t.changes.iterChangedRanges((e,i)=>s=oO(s,e,i)),s=s.map(t.changes);for(let e of t.effects)if(e.is(xh)&&!f5(s,e.value.from,e.value.to)){let{preparePlaceholder:i}=t.state.facet(a1),n=i?et.replace({widget:new b5(i(t.state,e.value))}):aO;s=s.update({add:[n.range(e.value.from,e.value.to)]})}else e.is(Fo)&&(s=s.update({filter:(i,n)=>e.value.from!=i||e.value.to!=n,filterFrom:e.value.from,filterTo:e.value.to}));return t.selection&&(s=oO(s,t.selection.main.head)),s},provide:s=>q.decorations.from(s),toJSON(s,t){let e=[];return s.between(0,t.doc.length,(i,n)=>{e.push(i,n)}),e},fromJSON(s){if(!Array.isArray(s)||s.length%2)throw new RangeError("Invalid JSON for fold state");let t=[];for(let e=0;e<s.length;){let i=s[e++],n=s[e++];if(typeof i!="number"||typeof n!="number")throw new RangeError("Invalid JSON for fold state");t.push(aO.range(i,n))}return et.set(t,!0)}});function oO(s,t,e=t){let i=!1;return s.between(t,e,(n,r)=>{n<e&&r>t&&(i=!0)}),i?s.update({filterFrom:t,filterTo:e,filter:(n,r)=>n>=e||r<=t}):s}function Wl(s,t,e){var i;let n=null;return(i=s.field(cn,!1))===null||i===void 0||i.between(t,e,(r,o)=>{(!n||n.from>r)&&(n={from:r,to:o})}),n}function f5(s,t,e){let i=!1;return s.between(t,t,(n,r)=>{n==t&&r==e&&(i=!0)}),i}function r1(s,t){return s.field(cn,!1)?t:t.concat(rt.appendConfig.of(l1()))}const p5=s=>{for(let t of n1(s)){let e=zl(s.state,t.from,t.to);if(e)return s.dispatch({effects:r1(s.state,[xh.of(e),o1(s,e)])}),!0}return!1},g5=s=>{if(!s.state.field(cn,!1))return!1;let t=[];for(let e of n1(s)){let i=Wl(s.state,e.from,e.to);i&&t.push(Fo.of(i),o1(s,i,!1))}return t.length&&s.dispatch({effects:t}),t.length>0};function o1(s,t,e=!0){let i=s.state.doc.lineAt(t.from).number,n=s.state.doc.lineAt(t.to).number;return q.announce.of(`${s.state.phrase(e?"Folded lines":"Unfolded lines")} ${i} ${s.state.phrase("to")} ${n}.`)}const m5=s=>{let{state:t}=s,e=[];for(let i=0;i<t.doc.length;){let n=s.lineBlockAt(i),r=zl(t,n.from,n.to);r&&e.push(xh.of(r)),i=(r?s.lineBlockAt(r.to):n).to+1}return e.length&&s.dispatch({effects:r1(s.state,e)}),!!e.length},O5=s=>{let t=s.state.field(cn,!1);if(!t||!t.size)return!1;let e=[];return t.between(0,s.state.doc.length,(i,n)=>{e.push(Fo.of({from:i,to:n}))}),s.dispatch({effects:e}),!0},y5=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:p5},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:g5},{key:"Ctrl-Alt-[",run:m5},{key:"Ctrl-Alt-]",run:O5}],x5={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},a1=j.define({combine(s){return Ii(s,x5)}});function l1(s){return[cn,v5]}function h1(s,t){let{state:e}=s,i=e.facet(a1),n=o=>{let a=s.lineBlockAt(s.posAtDOM(o.target)),l=Wl(s.state,a.from,a.to);l&&s.dispatch({effects:Fo.of(l)}),o.preventDefault()};if(i.placeholderDOM)return i.placeholderDOM(s,n,t);let r=document.createElement("span");return r.textContent=i.placeholderText,r.setAttribute("aria-label",e.phrase("folded code")),r.title=e.phrase("unfold"),r.className="cm-foldPlaceholder",r.onclick=n,r}const aO=et.replace({widget:new class extends Zi{toDOM(s){return h1(s,null)}}});class b5 extends Zi{constructor(t){super(),this.value=t}eq(t){return this.value==t.value}toDOM(t){return h1(t,this.value)}}const w5={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class Tc extends ss{constructor(t,e){super(),this.config=t,this.open=e}eq(t){return this.config==t.config&&this.open==t.open}toDOM(t){if(this.config.markerDOM)return this.config.markerDOM(this.open);let e=document.createElement("span");return e.textContent=this.open?this.config.openText:this.config.closedText,e.title=t.state.phrase(this.open?"Fold line":"Unfold line"),e}}function S5(s={}){let t={...w5,...s},e=new Tc(t,!0),i=new Tc(t,!1),n=Nt.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(ks)!=o.state.facet(ks)||o.startState.field(cn,!1)!=o.state.field(cn,!1)||te(o.startState)!=te(o.state)||t.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let a=new es;for(let l of o.viewportLineBlocks){let h=Wl(o.state,l.from,l.to)?i:zl(o.state,l.from,l.to)?e:null;h&&a.add(l.from,l.from,h)}return a.finish()}}),{domEventHandlers:r}=t;return[n,bR({class:"cm-foldGutter",markers(o){var a;return((a=o.plugin(n))===null||a===void 0?void 0:a.markers)||ut.empty},initialSpacer(){return new Tc(t,!1)},domEventHandlers:{...r,click:(o,a,l)=>{if(r.click&&r.click(o,a,l))return!0;let h=Wl(o.state,a.from,a.to);if(h)return o.dispatch({effects:Fo.of(h)}),!0;let c=zl(o.state,a.from,a.to);return c?(o.dispatch({effects:xh.of(c)}),!0):!1}}}),l1()]}const v5=q.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class qo{constructor(t,e){this.specs=t;let i;function n(a){let l=ws.newName();return(i||(i=Object.create(null)))["."+l]=a,l}const r=typeof e.all=="string"?e.all:e.all?n(e.all):void 0,o=e.scope;this.scope=o instanceof di?a=>a.prop(Xn)==o.data:o?a=>a==o:void 0,this.style=Ub(t.map(a=>({tag:a.tag,class:a.class||n(Object.assign({},a,{tag:null}))})),{all:r}).style,this.module=i?new ws(i):null,this.themeType=e.themeType}static define(t,e){return new qo(t,e||{})}}const kd=j.define(),c1=j.define({combine(s){return s.length?[s[0]]:null}});function Mc(s){let t=s.facet(kd);return t.length?t:s.facet(c1)}function u1(s,t){let e=[k5],i;return s instanceof qo&&(s.module&&e.push(q.styleModule.of(s.module)),i=s.themeType),t!=null&&t.fallback?e.push(c1.of(s)):i?e.push(kd.computeN([q.darkTheme],n=>n.facet(q.darkTheme)==(i=="dark")?[s]:[])):e.push(kd.of(s)),e}class _5{constructor(t){this.markCache=Object.create(null),this.tree=te(t.state),this.decorations=this.buildDeco(t,Mc(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=te(t.state),i=Mc(t.state),n=i!=Mc(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length<r.to&&!n&&e.type==this.tree.type&&o>=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||n)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return et.none;let i=new es;for(let{from:n,to:r}of t.visibleRanges)VR(this.tree,e,(o,a,l)=>{i.add(o,a,this.markCache[l]||(this.markCache[l]=et.mark({class:l})))},n,r);return i.finish()}}const k5=Ps.high(Nt.fromClass(_5,{decorations:s=>s.decorations})),$5=qo.define([{tag:M.meta,color:"#404740"},{tag:M.link,textDecoration:"underline"},{tag:M.heading,textDecoration:"underline",fontWeight:"bold"},{tag:M.emphasis,fontStyle:"italic"},{tag:M.strong,fontWeight:"bold"},{tag:M.strikethrough,textDecoration:"line-through"},{tag:M.keyword,color:"#708"},{tag:[M.atom,M.bool,M.url,M.contentSeparator,M.labelName],color:"#219"},{tag:[M.literal,M.inserted],color:"#164"},{tag:[M.string,M.deleted],color:"#a11"},{tag:[M.regexp,M.escape,M.special(M.string)],color:"#e40"},{tag:M.definition(M.variableName),color:"#00f"},{tag:M.local(M.variableName),color:"#30a"},{tag:[M.typeName,M.namespace],color:"#085"},{tag:M.className,color:"#167"},{tag:[M.special(M.variableName),M.macroName],color:"#256"},{tag:M.definition(M.propertyName),color:"#00c"},{tag:M.comment,color:"#940"},{tag:M.invalid,color:"#f00"}]),C5=q.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),d1=1e4,f1="()[]{}",p1=j.define({combine(s){return Ii(s,{afterCursor:!0,brackets:f1,maxScanDistance:d1,renderMatch:M5})}}),P5=et.mark({class:"cm-matchingBracket"}),T5=et.mark({class:"cm-nonmatchingBracket"});function M5(s){let t=[],e=s.matched?P5:T5;return t.push(e.range(s.start.from,s.start.to)),s.end&&t.push(e.range(s.end.from,s.end.to)),t}function lO(s){let t=[],e=s.facet(p1);for(let i of s.selection.ranges){if(!i.empty)continue;let n=Ai(s,i.head,-1,e)||i.head>0&&Ai(s,i.head-1,1,e)||e.afterCursor&&(Ai(s,i.head,1,e)||i.head<s.doc.length&&Ai(s,i.head+1,-1,e));n&&(t=t.concat(e.renderMatch(n,s)))}return et.set(t,!0)}const A5=Nt.fromClass(class{constructor(s){this.paused=!1,this.decorations=lO(s.state)}update(s){(s.docChanged||s.selectionSet||this.paused)&&(s.view.composing?(this.decorations=this.decorations.map(s.changes),this.paused=!0):(this.decorations=lO(s.state),this.paused=!1))}},{decorations:s=>s.decorations}),Q5=[A5,C5];function R5(s={}){return[p1.of(s),Q5]}const E5=new ct;function $d(s,t,e){let i=s.prop(t<0?ct.openedBy:ct.closedBy);if(i)return i;if(s.name.length==1){let n=e.indexOf(s.name);if(n>-1&&n%2==(t<0?1:0))return[e[n+t]]}return null}function Cd(s){let t=s.type.prop(E5);return t?t(s.node):s}function Ai(s,t,e,i={}){let n=i.maxScanDistance||d1,r=i.brackets||f1,o=te(s),a=o.resolveInner(t,e);for(let l=a;l;l=l.parent){let h=$d(l.type,e,r);if(h&&l.from<l.to){let c=Cd(l);if(c&&(e>0?t>=c.from&&t<c.to:t>c.from&&t<=c.to))return L5(s,t,e,l,c,h,r)}}return I5(s,t,e,o,a.type,n,r)}function L5(s,t,e,i,n,r,o){let a=i.parent,l={from:n.from,to:n.to},h=0,c=a==null?void 0:a.cursor();if(c&&(e<0?c.childBefore(i.from):c.childAfter(i.to)))do if(e<0?c.to<=i.from:c.from>=i.to){if(h==0&&r.indexOf(c.type.name)>-1&&c.from<c.to){let u=Cd(c);return{start:l,end:u?{from:u.from,to:u.to}:void 0,matched:!0}}else if($d(c.type,e,o))h++;else if($d(c.type,-e,o)){if(h==0){let u=Cd(c);return{start:l,end:u&&u.from<u.to?{from:u.from,to:u.to}:void 0,matched:!1}}h--}}while(e<0?c.prevSibling():c.nextSibling());return{start:l,matched:!1}}function I5(s,t,e,i,n,r,o){if(e<0?!t:t==s.doc.length)return null;let a=e<0?s.sliceDoc(t-1,t):s.sliceDoc(t,t+1),l=o.indexOf(a);if(l<0||l%2==0!=e>0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},c=s.doc.iterRange(t,e>0?s.doc.length:0),u=0;for(let d=0;!c.next().done&&d<=r;){let f=c.value;e<0&&(d+=f.length);let p=t+d*e;for(let g=e>0?0:f.length-1,m=e>0?f.length:-1;g!=m;g+=e){let O=o.indexOf(f[g]);if(!(O<0||i.resolveInner(p+g,1).type!=n))if(O%2==0==e>0)u++;else{if(u==1)return{start:h,end:{from:p+g,to:p+g+1},matched:O>>1==l>>1};u--}}e>0&&(d+=f.length)}return c.done?{start:h,matched:!1}:null}const Z5=Object.create(null),hO=[Ze.none],cO=[],uO=Object.create(null),D5=Object.create(null);for(let[s,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])D5[s]=B5(Z5,t);function Ac(s,t){cO.indexOf(s)>-1||(cO.push(s),console.warn(t))}function B5(s,t){let e=[];for(let a of t.split(" ")){let l=[];for(let h of a.split(".")){let c=s[h]||M[h];c?typeof c=="function"?l.length?l=l.map(c):Ac(h,`Modifier ${h} used at start of tag`):l.length?Ac(h,`Tag ${h} used as modifier`):l=Array.isArray(c)?c:[c]:Ac(h,`Unknown highlighting tag ${h}`)}for(let h of l)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),n=i+" "+e.map(a=>a.id),r=uO[n];if(r)return r.id;let o=uO[n]=Ze.define({id:hO.length,name:i,props:[qb({[i]:e})]});return hO.push(o),o.id}$t.RTL,$t.LTR;const X5=s=>{let{state:t}=s,e=t.doc.lineAt(t.selection.main.from),i=Bf(s.state,e.from);return i.line?z5(s):i.block?G5(s):!1};function Df(s,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let n=s(t,e);return n?(i(e.update(n)),!0):!1}}const z5=Df(V5,0),W5=Df(g1,0),G5=Df((s,t)=>g1(s,t,N5(t)),0);function Bf(s,t){let e=s.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}const Zr=50;function Y5(s,{open:t,close:e},i,n){let r=s.sliceDoc(i-Zr,i),o=s.sliceDoc(n,n+Zr),a=/\s*$/.exec(r)[0].length,l=/^\s*/.exec(o)[0].length,h=r.length-a;if(r.slice(h-t.length,h)==t&&o.slice(l,l+e.length)==e)return{open:{pos:i-a,margin:a&&1},close:{pos:n+l,margin:l&&1}};let c,u;n-i<=2*Zr?c=u=s.sliceDoc(i,n):(c=s.sliceDoc(i,i+Zr),u=s.sliceDoc(n-Zr,n));let d=/^\s*/.exec(c)[0].length,f=/\s*$/.exec(u)[0].length,p=u.length-f-e.length;return c.slice(d,d+t.length)==t&&u.slice(p,p+e.length)==e?{open:{pos:i+d+t.length,margin:/\s/.test(c.charAt(d+t.length))?1:0},close:{pos:n-f-e.length,margin:/\s/.test(u.charAt(p-1))?1:0}}:null}function N5(s){let t=[];for(let e of s.selection.ranges){let i=s.doc.lineAt(e.from),n=e.to<=i.to?i:s.doc.lineAt(e.to);n.from>i.from&&n.from==e.to&&(n=e.to==i.to+1?i:s.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=n.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:n.to})}return t}function g1(s,t,e=t.selection.ranges){let i=e.map(r=>Bf(t,r.from).block);if(!i.every(r=>r))return null;let n=e.map((r,o)=>Y5(t,i[o],r.from,r.to));if(s!=2&&!n.every(r=>r))return{changes:t.changes(e.map((r,o)=>n[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(s!=1&&n.some(r=>r)){let r=[];for(let o=0,a;o<n.length;o++)if(a=n[o]){let l=i[o],{open:h,close:c}=a;r.push({from:h.pos-l.open.length,to:h.pos+h.margin},{from:c.pos-c.margin,to:c.pos+l.close.length})}return{changes:r}}return null}function V5(s,t,e=t.selection.ranges){let i=[],n=-1;t:for(let{from:r,to:o}of e){let a=i.length,l=1e9,h;for(let c=r;c<=o;){let u=t.doc.lineAt(c);if(h==null&&(h=Bf(t,u.from).line,!h))continue t;if(u.from>n&&(r==o||o>u.from)){n=u.from;let d=/^\s*/.exec(u.text)[0].length,f=d==u.length,p=u.text.slice(d,d+h.length)==h?d:-1;d<u.text.length&&d<l&&(l=d),i.push({line:u,comment:p,token:h,indent:d,empty:f,single:!1})}c=u.to+1}if(l<1e9)for(let c=a;c<i.length;c++)i[c].indent<i[c].line.text.length&&(i[c].indent=l);i.length==a+1&&(i[a].single=!0)}if(s!=2&&i.some(r=>r.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:a,token:l,indent:h,empty:c,single:u}of i)(u||!c)&&r.push({from:a.from+h,insert:l+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(s!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:a,token:l}of i)if(a>=0){let h=o.from+a,c=h+l.length;o.text[c-o.from]==" "&&c++,r.push({from:h,to:c})}return{changes:r}}return null}const Pd=os.define(),F5=os.define(),q5=j.define(),m1=j.define({combine(s){return Ii(s,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,n)=>t(i,n)||e(i,n)})}}),O1=pe.define({create(){return Qi.empty},update(s,t){let e=t.state.facet(m1),i=t.annotation(Pd);if(i){let l=Re.fromTransaction(t,i.selection),h=i.side,c=h==0?s.undone:s.done;return l?c=Gl(c,c.length,e.minDepth,l):c=b1(c,t.startState.selection),new Qi(h==0?i.rest:c,h==0?c:i.rest)}let n=t.annotation(F5);if((n=="full"||n=="before")&&(s=s.isolate()),t.annotation(Ut.addToHistory)===!1)return t.changes.empty?s:s.addMapping(t.changes.desc);let r=Re.fromTransaction(t),o=t.annotation(Ut.time),a=t.annotation(Ut.userEvent);return r?s=s.addChanges(r,o,a,e,t):t.selection&&(s=s.addSelection(t.startState.selection,o,a,e.newGroupDelay)),(n=="full"||n=="after")&&(s=s.isolate()),s},toJSON(s){return{done:s.done.map(t=>t.toJSON()),undone:s.undone.map(t=>t.toJSON())}},fromJSON(s){return new Qi(s.done.map(Re.fromJSON),s.undone.map(Re.fromJSON))}});function j5(s={}){return[O1,m1.of(s),q.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?y1:t.inputType=="historyRedo"?Td:null;return i?(t.preventDefault(),i(e)):!1}})]}function bh(s,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let n=e.field(O1,!1);if(!n)return!1;let r=n.pop(s,e,t);return r?(i(r),!0):!1}}const y1=bh(0,!1),Td=bh(1,!1),U5=bh(0,!0),H5=bh(1,!0);class Re{constructor(t,e,i,n,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=n,this.selectionsAfter=r}setSelAfter(t){return new Re(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(n=>n.toJSON())}}static fromJSON(t){return new Re(t.changes&&Kt.fromJSON(t.changes),[],t.mapped&&Ri.fromJSON(t.mapped),t.startSelection&&D.fromJSON(t.startSelection),t.selectionsAfter.map(D.fromJSON))}static fromTransaction(t,e){let i=ti;for(let n of t.startState.facet(q5)){let r=n(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new Re(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,ti)}static selection(t){return new Re(void 0,ti,void 0,void 0,t)}}function Gl(s,t,e,i){let n=t+1>e+20?t-e-1:0,r=s.slice(n,t);return r.push(i),r}function K5(s,t){let e=[],i=!1;return s.iterChangedRanges((n,r)=>e.push(n,r)),t.iterChangedRanges((n,r,o,a)=>{for(let l=0;l<e.length;){let h=e[l++],c=e[l++];a>=h&&o<=c&&(i=!0)}}),i}function J5(s,t){return s.ranges.length==t.ranges.length&&s.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function x1(s,t){return s.length?t.length?s.concat(t):s:t}const ti=[],tE=200;function b1(s,t){if(s.length){let e=s[s.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-tE));return i.length&&i[i.length-1].eq(t)?s:(i.push(t),Gl(s,s.length-1,1e9,e.setSelAfter(i)))}else return[Re.selection([t])]}function eE(s){let t=s[s.length-1],e=s.slice();return e[s.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function Qc(s,t){if(!s.length)return s;let e=s.length,i=ti;for(;e;){let n=iE(s[e-1],t,i);if(n.changes&&!n.changes.empty||n.effects.length){let r=s.slice(0,e);return r[e-1]=n,r}else t=n.mapped,e--,i=n.selectionsAfter}return i.length?[Re.selection(i)]:ti}function iE(s,t,e){let i=x1(s.selectionsAfter.length?s.selectionsAfter.map(a=>a.map(t)):ti,e);if(!s.changes)return Re.selection(i);let n=s.changes.map(t),r=t.mapDesc(s.changes,!0),o=s.mapped?s.mapped.composeDesc(r):r;return new Re(n,rt.mapEffects(s.effects,t),o,s.startSelection.map(r),i)}const sE=/^(input\.type|delete)($|\.)/;class Qi{constructor(t,e,i=0,n=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=n}isolate(){return this.prevTime?new Qi(this.done,this.undone):this}addChanges(t,e,i,n,r){let o=this.done,a=o[o.length-1];return a&&a.changes&&!a.changes.empty&&t.changes&&(!i||sE.test(i))&&(!a.selectionsAfter.length&&e-this.prevTime<n.newGroupDelay&&n.joinToEvent(r,K5(a.changes,t.changes))||i=="input.type.compose")?o=Gl(o,o.length-1,n.minDepth,new Re(t.changes.compose(a.changes),x1(rt.mapEffects(t.effects,a.changes),a.effects),a.mapped,a.startSelection,ti)):o=Gl(o,o.length,n.minDepth,t),new Qi(o,ti,e,i)}addSelection(t,e,i,n){let r=this.done.length?this.done[this.done.length-1].selectionsAfter:ti;return r.length>0&&e-this.prevTime<n&&i==this.prevUserEvent&&i&&/^select($|\.)/.test(i)&&J5(r[r.length-1],t)?this:new Qi(b1(this.done,t),this.undone,e,i)}addMapping(t){return new Qi(Qc(this.done,t),Qc(this.undone,t),this.prevTime,this.prevUserEvent)}pop(t,e,i){let n=t==0?this.done:this.undone;if(n.length==0)return null;let r=n[n.length-1],o=r.selectionsAfter[0]||(r.startSelection?r.startSelection.map(r.changes.invertedDesc,1):e.selection);if(i&&r.selectionsAfter.length)return e.update({selection:r.selectionsAfter[r.selectionsAfter.length-1],annotations:Pd.of({side:t,rest:eE(n),selection:o}),userEvent:t==0?"select.undo":"select.redo",scrollIntoView:!0});if(r.changes){let a=n.length==1?ti:n.slice(0,n.length-1);return r.mapped&&(a=Qc(a,r.mapped)),e.update({changes:r.changes,selection:r.startSelection,effects:r.effects,annotations:Pd.of({side:t,rest:a,selection:o}),filter:!1,userEvent:t==0?"undo":"redo",scrollIntoView:!0})}else return null}}Qi.empty=new Qi(ti,ti);const nE=[{key:"Mod-z",run:y1,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Td,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Td,preventDefault:!0},{key:"Mod-u",run:U5,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:H5,preventDefault:!0}];function mr(s,t){return D.create(s.ranges.map(t),s.mainIndex)}function pi(s,t){return s.update({selection:t,scrollIntoView:!0,userEvent:"select"})}function gi({state:s,dispatch:t},e){let i=mr(s.selection,e);return i.eq(s.selection,!0)?!1:(t(pi(s,i)),!0)}function wh(s,t){return D.cursor(t?s.to:s.from)}function w1(s,t){return gi(s,e=>e.empty?s.moveByChar(e,t):wh(e,t))}function Oe(s){return s.textDirectionAt(s.state.selection.main.head)==$t.LTR}const S1=s=>w1(s,!Oe(s)),v1=s=>w1(s,Oe(s));function _1(s,t){return gi(s,e=>e.empty?s.moveByGroup(e,t):wh(e,t))}const rE=s=>_1(s,!Oe(s)),oE=s=>_1(s,Oe(s));function aE(s,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(s.sliceDoc(t.from,t.to)))||t.firstChild}function Sh(s,t,e){let i=te(s).resolveInner(t.head),n=e?ct.closedBy:ct.openedBy;for(let l=t.head;;){let h=e?i.childAfter(l):i.childBefore(l);if(!h)break;aE(s,h,n)?i=h:l=e?h.to:h.from}let r=i.type.prop(n),o,a;return r&&(o=e?Ai(s,i.from,1):Ai(s,i.to,-1))&&o.matched?a=e?o.end.to:o.end.from:a=e?i.to:i.from,D.cursor(a,e?-1:1)}const lE=s=>gi(s,t=>Sh(s.state,t,!Oe(s))),hE=s=>gi(s,t=>Sh(s.state,t,Oe(s)));function k1(s,t){return gi(s,e=>{if(!e.empty)return wh(e,t);let i=s.moveVertically(e,t);return i.head!=e.head?i:s.moveToLineBoundary(e,t)})}const $1=s=>k1(s,!1),C1=s=>k1(s,!0);function P1(s){let t=s.scrollDOM.clientHeight<s.scrollDOM.scrollHeight-2,e=0,i=0,n;if(t){for(let r of s.state.facet(q.scrollMargins)){let o=r(s);o!=null&&o.top&&(e=Math.max(o==null?void 0:o.top,e)),o!=null&&o.bottom&&(i=Math.max(o==null?void 0:o.bottom,i))}n=s.scrollDOM.clientHeight-e-i}else n=(s.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:e,marginBottom:i,selfScroll:t,height:Math.max(s.defaultLineHeight,n-5)}}function T1(s,t){let e=P1(s),{state:i}=s,n=mr(i.selection,o=>o.empty?s.moveVertically(o,t,e.height):wh(o,t));if(n.eq(i.selection))return!1;let r;if(e.selfScroll){let o=s.coordsAtPos(i.selection.main.head),a=s.scrollDOM.getBoundingClientRect(),l=a.top+e.marginTop,h=a.bottom-e.marginBottom;o&&o.top>l&&o.bottom<h&&(r=q.scrollIntoView(n.main.head,{y:"start",yMargin:o.top-l}))}return s.dispatch(pi(i,n),{effects:r}),!0}const dO=s=>T1(s,!1),Md=s=>T1(s,!0);function Ts(s,t,e){let i=s.lineBlockAt(t.head),n=s.moveToLineBoundary(t,e);if(n.head==t.head&&n.head!=(e?i.to:i.from)&&(n=s.moveToLineBoundary(t,e,!1)),!e&&n.head==i.from&&i.length){let r=/^\s*/.exec(s.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(n=D.cursor(i.from+r))}return n}const cE=s=>gi(s,t=>Ts(s,t,!0)),uE=s=>gi(s,t=>Ts(s,t,!1)),dE=s=>gi(s,t=>Ts(s,t,!Oe(s))),fE=s=>gi(s,t=>Ts(s,t,Oe(s))),pE=s=>gi(s,t=>D.cursor(s.lineBlockAt(t.head).from,1)),gE=s=>gi(s,t=>D.cursor(s.lineBlockAt(t.head).to,-1));function mE(s,t,e){let i=!1,n=mr(s.selection,r=>{let o=Ai(s,r.head,-1)||Ai(s,r.head,1)||r.head>0&&Ai(s,r.head-1,1)||r.head<s.doc.length&&Ai(s,r.head+1,-1);if(!o||!o.end)return r;i=!0;let a=o.start.from==r.head?o.end.to:o.end.from;return D.cursor(a)});return i?(t(pi(s,n)),!0):!1}const OE=({state:s,dispatch:t})=>mE(s,t);function ri(s,t){let e=mr(s.state.selection,i=>{let n=t(i);return D.range(i.anchor,n.head,n.goalColumn,n.bidiLevel||void 0,n.assoc)});return e.eq(s.state.selection)?!1:(s.dispatch(pi(s.state,e)),!0)}function M1(s,t){return ri(s,e=>s.moveByChar(e,t))}const A1=s=>M1(s,!Oe(s)),Q1=s=>M1(s,Oe(s));function R1(s,t){return ri(s,e=>s.moveByGroup(e,t))}const yE=s=>R1(s,!Oe(s)),xE=s=>R1(s,Oe(s)),bE=s=>ri(s,t=>Sh(s.state,t,!Oe(s))),wE=s=>ri(s,t=>Sh(s.state,t,Oe(s)));function E1(s,t){return ri(s,e=>s.moveVertically(e,t))}const L1=s=>E1(s,!1),I1=s=>E1(s,!0);function Z1(s,t){return ri(s,e=>s.moveVertically(e,t,P1(s).height))}const fO=s=>Z1(s,!1),pO=s=>Z1(s,!0),SE=s=>ri(s,t=>Ts(s,t,!0)),vE=s=>ri(s,t=>Ts(s,t,!1)),_E=s=>ri(s,t=>Ts(s,t,!Oe(s))),kE=s=>ri(s,t=>Ts(s,t,Oe(s))),$E=s=>ri(s,t=>D.cursor(s.lineBlockAt(t.head).from)),CE=s=>ri(s,t=>D.cursor(s.lineBlockAt(t.head).to)),gO=({state:s,dispatch:t})=>(t(pi(s,{anchor:0})),!0),mO=({state:s,dispatch:t})=>(t(pi(s,{anchor:s.doc.length})),!0),OO=({state:s,dispatch:t})=>(t(pi(s,{anchor:s.selection.main.anchor,head:0})),!0),yO=({state:s,dispatch:t})=>(t(pi(s,{anchor:s.selection.main.anchor,head:s.doc.length})),!0),PE=({state:s,dispatch:t})=>(t(s.update({selection:{anchor:0,head:s.doc.length},userEvent:"select"})),!0),TE=({state:s,dispatch:t})=>{let e=vh(s).map(({from:i,to:n})=>D.range(i,Math.min(n+1,s.doc.length)));return t(s.update({selection:D.create(e),userEvent:"select"})),!0},ME=({state:s,dispatch:t})=>{let e=mr(s.selection,i=>{let n=te(s),r=n.resolveStack(i.from,1);if(i.empty){let o=n.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:a}=o;if((a.from<i.from&&a.to>=i.to||a.to>i.to&&a.from<=i.from)&&o.next)return D.range(a.to,a.from)}return i});return e.eq(s.selection)?!1:(t(pi(s,e)),!0)};function D1(s,t){let{state:e}=s,i=e.selection,n=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to<s.state.doc.length:o.from>0)for(let a=r;;){let l=s.moveVertically(a,t);if(l.head<o.from||l.head>o.to){n.some(h=>h.head==l.head)||n.push(l);break}else{if(l.head==a.head)break;a=l}}}return n.length==i.ranges.length?!1:(s.dispatch(pi(e,D.create(n,n.length-1))),!0)}const AE=s=>D1(s,!1),QE=s=>D1(s,!0),RE=({state:s,dispatch:t})=>{let e=s.selection,i=null;return e.ranges.length>1?i=D.create([e.main]):e.main.empty||(i=D.create([D.cursor(e.main.head)])),i?(t(pi(s,i)),!0):!1};function jo(s,t){if(s.state.readOnly)return!1;let e="delete.selection",{state:i}=s,n=i.changeByRange(r=>{let{from:o,to:a}=r;if(o==a){let l=t(r);l<o?(e="delete.backward",l=Xa(s,l,!1)):l>o&&(e="delete.forward",l=Xa(s,l,!0)),o=Math.min(o,l),a=Math.max(a,l)}else o=Xa(s,o,!1),a=Xa(s,a,!0);return o==a?{range:r}:{changes:{from:o,to:a},range:D.cursor(o,o<r.head?-1:1)}});return n.changes.empty?!1:(s.dispatch(i.update(n,{scrollIntoView:!0,userEvent:e,effects:e=="delete.selection"?q.announce.of(i.phrase("Selection deleted")):void 0})),!0)}function Xa(s,t,e){if(s instanceof q)for(let i of s.state.facet(q.atomicRanges).map(n=>n(s)))i.between(t,t,(n,r)=>{n<t&&r>t&&(t=e?r:n)});return t}const B1=(s,t,e)=>jo(s,i=>{let n=i.from,{state:r}=s,o=r.doc.lineAt(n),a,l;if(e&&!t&&n>o.from&&n<o.from+200&&!/[^ \t]/.test(a=o.text.slice(0,n-o.from))){if(a[a.length-1]==" ")return n-1;let h=gr(a,r.tabSize),c=h%Xl(r)||Xl(r);for(let u=0;u<c&&a[a.length-1-u]==" ";u++)n--;l=n}else l=re(o.text,n-o.from,t,t)+o.from,l==n&&o.number!=(t?r.doc.lines:1)?l+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(o.text.slice(l-o.from,n-o.from))&&(l=re(o.text,l-o.from,!1,!1)+o.from);return l}),Ad=s=>B1(s,!1,!0),X1=s=>B1(s,!0,!1),z1=(s,t)=>jo(s,e=>{let i=e.head,{state:n}=s,r=n.doc.lineAt(i),o=n.charCategorizer(i);for(let a=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?n.doc.lines:1)&&(i+=t?1:-1);break}let l=re(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,l)-r.from,Math.max(i,l)-r.from),c=o(h);if(a!=null&&c!=a)break;(h!=" "||i!=e.head)&&(a=c),i=l}return i}),W1=s=>z1(s,!1),EE=s=>z1(s,!0),LE=s=>jo(s,t=>{let e=s.lineBlockAt(t.head).to;return t.head<e?e:Math.min(s.state.doc.length,t.head+1)}),IE=s=>jo(s,t=>{let e=s.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),ZE=s=>jo(s,t=>{let e=s.moveToLineBoundary(t,!0).head;return t.head<e?e:Math.min(s.state.doc.length,t.head+1)}),DE=({state:s,dispatch:t})=>{if(s.readOnly)return!1;let e=s.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:mt.of(["",""])},range:D.cursor(i.from)}));return t(s.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},BE=({state:s,dispatch:t})=>{if(s.readOnly)return!1;let e=s.changeByRange(i=>{if(!i.empty||i.from==0||i.from==s.doc.length)return{range:i};let n=i.from,r=s.doc.lineAt(n),o=n==r.from?n-1:re(r.text,n-r.from,!1)+r.from,a=n==r.to?n+1:re(r.text,n-r.from,!0)+r.from;return{changes:{from:o,to:a,insert:s.doc.slice(n,a).append(s.doc.slice(o,n))},range:D.cursor(a)}});return e.changes.empty?!1:(t(s.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function vh(s){let t=[],e=-1;for(let i of s.selection.ranges){let n=s.doc.lineAt(i.from),r=s.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=s.doc.lineAt(i.to-1)),e>=n.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:n.from,to:r.to,ranges:[i]});e=r.number+1}return t}function G1(s,t,e){if(s.readOnly)return!1;let i=[],n=[];for(let r of vh(s)){if(e?r.to==s.doc.length:r.from==0)continue;let o=s.doc.lineAt(e?r.to+1:r.from-1),a=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+s.lineBreak});for(let l of r.ranges)n.push(D.range(Math.min(s.doc.length,l.anchor+a),Math.min(s.doc.length,l.head+a)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:s.lineBreak+o.text});for(let l of r.ranges)n.push(D.range(l.anchor-a,l.head-a))}}return i.length?(t(s.update({changes:i,scrollIntoView:!0,selection:D.create(n,s.selection.mainIndex),userEvent:"move.line"})),!0):!1}const XE=({state:s,dispatch:t})=>G1(s,t,!1),zE=({state:s,dispatch:t})=>G1(s,t,!0);function Y1(s,t,e){if(s.readOnly)return!1;let i=[];for(let r of vh(s))e?i.push({from:r.from,insert:s.doc.slice(r.from,r.to)+s.lineBreak}):i.push({from:r.to,insert:s.lineBreak+s.doc.slice(r.from,r.to)});let n=s.changes(i);return t(s.update({changes:n,selection:s.selection.map(n,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}const WE=({state:s,dispatch:t})=>Y1(s,t,!1),GE=({state:s,dispatch:t})=>Y1(s,t,!0),YE=s=>{if(s.state.readOnly)return!1;let{state:t}=s,e=t.changes(vh(t).map(({from:n,to:r})=>(n>0?n--:r<t.doc.length&&r++,{from:n,to:r}))),i=mr(t.selection,n=>{let r;if(s.lineWrapping){let o=s.lineBlockAt(n.head),a=s.coordsAtPos(n.head,n.assoc||1);a&&(r=o.bottom+s.documentTop-a.bottom+s.defaultLineHeight/2)}return s.moveVertically(n,!0,r)}).map(e);return s.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function NE(s,t){if(/\(\)|\[\]|\{\}/.test(s.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=te(s).resolveInner(t),i=e.childBefore(t),n=e.childAfter(t),r;return i&&n&&i.to<=t&&n.from>=t&&(r=i.type.prop(ct.closedBy))&&r.indexOf(n.name)>-1&&s.doc.lineAt(i.to).from==s.doc.lineAt(n.from).from&&!/\S/.test(s.sliceDoc(i.to,n.from))?{from:i.to,to:n.from}:null}const xO=N1(!1),VE=N1(!0);function N1(s){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(n=>{let{from:r,to:o}=n,a=t.doc.lineAt(r),l=!s&&r==o&&NE(t,r);s&&(r=o=(o<=a.to?a:t.doc.lineAt(o)).to);let h=new yh(t,{simulateBreak:r,simulateDoubleBreak:!!l}),c=If(h,r);for(c==null&&(c=gr(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));o<a.to&&/\s/.test(a.text[o-a.from]);)o++;l?{from:r,to:o}=l:r>a.from&&r<a.from+100&&!/\S/.test(a.text.slice(0,r))&&(r=a.from);let u=["",Ro(t,c)];return l&&u.push(Ro(t,h.lineIndent(a.from,-1))),{changes:{from:r,to:o,insert:mt.of(u)},range:D.cursor(r+1+u[1].length)}});return e(t.update(i,{scrollIntoView:!0,userEvent:"input"})),!0}}function Xf(s,t){let e=-1;return s.changeByRange(i=>{let n=[];for(let o=i.from;o<=i.to;){let a=s.doc.lineAt(o);a.number>e&&(i.empty||i.to>a.from)&&(t(a,n,i),e=a.number),o=a.to+1}let r=s.changes(n);return{changes:n,range:D.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}const FE=({state:s,dispatch:t})=>{if(s.readOnly)return!1;let e=Object.create(null),i=new yh(s,{overrideIndentation:r=>{let o=e[r];return o??-1}}),n=Xf(s,(r,o,a)=>{let l=If(i,r.from);if(l==null)return;/\S/.test(r.text)||(l=0);let h=/^\s*/.exec(r.text)[0],c=Ro(s,l);(h!=c||a.from<r.from+h.length)&&(e[r.from]=l,o.push({from:r.from,to:r.from+h.length,insert:c}))});return n.changes.empty||t(s.update(n,{userEvent:"indent"})),!0},qE=({state:s,dispatch:t})=>s.readOnly?!1:(t(s.update(Xf(s,(e,i)=>{i.push({from:e.from,insert:s.facet(Oh)})}),{userEvent:"input.indent"})),!0),jE=({state:s,dispatch:t})=>s.readOnly?!1:(t(s.update(Xf(s,(e,i)=>{let n=/^\s*/.exec(e.text)[0];if(!n)return;let r=gr(n,s.tabSize),o=0,a=Ro(s,Math.max(0,r-Xl(s)));for(;o<n.length&&o<a.length&&n.charCodeAt(o)==a.charCodeAt(o);)o++;i.push({from:e.from+o,to:e.from+n.length,insert:a.slice(o)})}),{userEvent:"delete.dedent"})),!0),UE=s=>(s.setTabFocusMode(),!0),HE=[{key:"Ctrl-b",run:S1,shift:A1,preventDefault:!0},{key:"Ctrl-f",run:v1,shift:Q1},{key:"Ctrl-p",run:$1,shift:L1},{key:"Ctrl-n",run:C1,shift:I1},{key:"Ctrl-a",run:pE,shift:$E},{key:"Ctrl-e",run:gE,shift:CE},{key:"Ctrl-d",run:X1},{key:"Ctrl-h",run:Ad},{key:"Ctrl-k",run:LE},{key:"Ctrl-Alt-h",run:W1},{key:"Ctrl-o",run:DE},{key:"Ctrl-t",run:BE},{key:"Ctrl-v",run:Md}],KE=[{key:"ArrowLeft",run:S1,shift:A1,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:rE,shift:yE,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:dE,shift:_E,preventDefault:!0},{key:"ArrowRight",run:v1,shift:Q1,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:oE,shift:xE,preventDefault:!0},{mac:"Cmd-ArrowRight",run:fE,shift:kE,preventDefault:!0},{key:"ArrowUp",run:$1,shift:L1,preventDefault:!0},{mac:"Cmd-ArrowUp",run:gO,shift:OO},{mac:"Ctrl-ArrowUp",run:dO,shift:fO},{key:"ArrowDown",run:C1,shift:I1,preventDefault:!0},{mac:"Cmd-ArrowDown",run:mO,shift:yO},{mac:"Ctrl-ArrowDown",run:Md,shift:pO},{key:"PageUp",run:dO,shift:fO},{key:"PageDown",run:Md,shift:pO},{key:"Home",run:uE,shift:vE,preventDefault:!0},{key:"Mod-Home",run:gO,shift:OO},{key:"End",run:cE,shift:SE,preventDefault:!0},{key:"Mod-End",run:mO,shift:yO},{key:"Enter",run:xO,shift:xO},{key:"Mod-a",run:PE},{key:"Backspace",run:Ad,shift:Ad,preventDefault:!0},{key:"Delete",run:X1,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:W1,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:EE,preventDefault:!0},{mac:"Mod-Backspace",run:IE,preventDefault:!0},{mac:"Mod-Delete",run:ZE,preventDefault:!0}].concat(HE.map(s=>({mac:s.key,run:s.run,shift:s.shift}))),JE=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:lE,shift:bE},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:hE,shift:wE},{key:"Alt-ArrowUp",run:XE},{key:"Shift-Alt-ArrowUp",run:WE},{key:"Alt-ArrowDown",run:zE},{key:"Shift-Alt-ArrowDown",run:GE},{key:"Mod-Alt-ArrowUp",run:AE},{key:"Mod-Alt-ArrowDown",run:QE},{key:"Escape",run:RE},{key:"Mod-Enter",run:VE},{key:"Alt-l",mac:"Ctrl-l",run:TE},{key:"Mod-i",run:ME,preventDefault:!0},{key:"Mod-[",run:jE},{key:"Mod-]",run:qE},{key:"Mod-Alt-\\",run:FE},{key:"Shift-Mod-k",run:YE},{key:"Shift-Mod-\\",run:OE},{key:"Mod-/",run:X5},{key:"Alt-A",run:W5},{key:"Ctrl-m",mac:"Shift-Alt-m",run:UE}].concat(KE),bO=typeof String.prototype.normalize=="function"?s=>s.normalize("NFKD"):s=>s;class ur{constructor(t,e,i=0,n=t.length,r,o){this.test=o,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=t.iterRange(i,n),this.bufferStart=i,this.normalize=r?a=>r(bO(a)):bO,this.query=this.normalize(e)}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 Te(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let t=this.peek();if(t<0)return this.done=!0,this;let e=df(t),i=this.bufferStart+this.bufferPos;this.bufferPos+=Ci(t);let n=this.normalize(e);if(n.length)for(let r=0,o=i,a=!0;;r++){let l=n.charCodeAt(r),h=this.match(l,o,a,this.bufferPos+this.bufferStart,r==n.length-1);if(h)return this.value=h,this;if(r==n.length-1)break;a&&r<e.length&&e.charCodeAt(r)==l?o++:a=!1}}}match(t,e,i,n,r){let o=null;for(let a=0;a<this.matches.length;){let l=this.matches[a],h=!1;this.query.charCodeAt(l.index)==t&&(l.index==this.query.length-1?o={from:l.from,to:n,precise:r&&l.precise}:(l.index++,h=!0)),h?a++:this.matches.splice(a,1)}return this.query.charCodeAt(0)==t&&(this.query.length==1?o={from:e,to:n,precise:i&&r}:this.matches.push({from:e,index:1,precise:i})),o&&this.test&&!this.test(o.from,o.to,this.buffer,this.bufferStart)&&(o=null),o}}typeof Symbol<"u"&&(ur.prototype[Symbol.iterator]=function(){return this});const V1={from:-1,to:-1,match:/.*/.exec(""),precise:!0},zf="gm"+(/x/.unicode==null?"":"u");class F1{constructor(t,e,i,n=0,r=t.length){if(this.text=t,this.to=r,this.curLine="",this.done=!1,this.value=V1,/\\[sWDnr]|\n|\r|\[\^/.test(e))return new q1(t,e,i,n,r);this.re=new RegExp(e,zf+(i!=null&&i.ignoreCase?"i":"")),this.test=i==null?void 0:i.test,this.iter=t.iter();let o=t.lineAt(n);this.curLineStart=o.from,this.matchPos=Yl(t,n),this.getLine(this.curLineStart)}getLine(t){this.iter.next(t),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.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 t=this.matchPos-this.curLineStart;;){this.re.lastIndex=t;let e=this.matchPos<=this.to&&this.re.exec(this.curLine);if(e){let i=this.curLineStart+e.index,n=i+e[0].length;if(this.matchPos=Yl(this.text,n+(i==n?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(i<n||i>this.value.to)&&(!this.test||this.test(i,n,e)))return this.value={from:i,to:n,precise:!0,match:e},this;t=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),t=0;else return this.done=!0,this}}}const Rc=new WeakMap;class Un{constructor(t,e){this.from=t,this.text=e}get to(){return this.from+this.text.length}static get(t,e,i){let n=Rc.get(t);if(!n||n.from>=i||n.to<=e){let a=new Un(e,t.sliceString(e,i));return Rc.set(t,a),a}if(n.from==e&&n.to==i)return n;let{text:r,from:o}=n;return o>e&&(r=t.sliceString(e,o)+r,o=e),n.to<i&&(r+=t.sliceString(n.to,i)),Rc.set(t,new Un(o,r)),new Un(e,r.slice(e-o,i-o))}}class q1{constructor(t,e,i,n,r){this.text=t,this.to=r,this.done=!1,this.value=V1,this.matchPos=Yl(t,n),this.re=new RegExp(e,zf+(i!=null&&i.ignoreCase?"i":"")),this.test=i==null?void 0:i.test,this.flat=Un.get(t,n,this.chunkEnd(n+5e3))}chunkEnd(t){return t>=this.to?this.to:this.text.lineAt(t).to}next(){for(;;){let t=this.re.lastIndex=this.matchPos-this.flat.from,e=this.re.exec(this.flat.text);if(e&&!e[0]&&e.index==t&&(this.re.lastIndex=t+1,e=this.re.exec(this.flat.text)),e){let i=this.flat.from+e.index,n=i+e[0].length;if((this.flat.to>=this.to||e.index+e[0].length<=this.flat.text.length-10)&&(!this.test||this.test(i,n,e)))return this.value={from:i,to:n,precise:!0,match:e},this.matchPos=Yl(this.text,n+(i==n?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Un.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(F1.prototype[Symbol.iterator]=q1.prototype[Symbol.iterator]=function(){return this});function tL(s){try{return new RegExp(s,zf),!0}catch{return!1}}function Yl(s,t){if(t>=s.length)return t;let e=s.lineAt(t),i;for(;t<e.to&&(i=e.text.charCodeAt(t-e.from))>=56320&&i<57344;)t++;return t}const eL=s=>{let{state:t}=s,e=String(t.doc.lineAt(s.state.selection.main.head).number),{close:i,result:n}=mR(s,{label:t.phrase("Go to line"),input:{type:"text",name:"line",value:e},focus:!0,submitLabel:t.phrase("go")});return n.then(r=>{let o=r&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(r.elements.line.value);if(!o){s.dispatch({effects:i});return}let a=t.doc.lineAt(t.selection.main.head),[,l,h,c,u]=o,d=c?+c.slice(1):0,f=h?+h:a.number;if(h&&u){let m=f/100;l&&(m=m*(l=="-"?-1:1)+a.number/t.doc.lines),f=Math.round(t.doc.lines*m)}else h&&l&&(f=f*(l=="-"?-1:1)+a.number);let p=t.doc.line(Math.max(1,Math.min(t.doc.lines,f))),g=D.cursor(p.from+Math.max(0,Math.min(d,p.length)));s.dispatch({effects:[i,q.scrollIntoView(g.from,{y:"center"})],selection:g})}),!0},iL={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},sL=j.define({combine(s){return Ii(s,iL,{highlightWordAroundCursor:(t,e)=>t||e,minSelectionLength:Math.min,maxMatches:Math.min})}});function nL(s){return[hL,lL]}const rL=et.mark({class:"cm-selectionMatch"}),oL=et.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function wO(s,t,e,i){return(e==0||s(t.sliceDoc(e-1,e))!=At.Word)&&(i==t.doc.length||s(t.sliceDoc(i,i+1))!=At.Word)}function aL(s,t,e,i){return s(t.sliceDoc(e,e+1))==At.Word&&s(t.sliceDoc(i-1,i))==At.Word}const lL=Nt.fromClass(class{constructor(s){this.decorations=this.getDeco(s)}update(s){(s.selectionSet||s.docChanged||s.viewportChanged)&&(this.decorations=this.getDeco(s.view))}getDeco(s){let t=s.state.facet(sL),{state:e}=s,i=e.selection;if(i.ranges.length>1)return et.none;let n=i.main,r,o=null;if(n.empty){if(!t.highlightWordAroundCursor)return et.none;let l=e.wordAt(n.head);if(!l)return et.none;o=e.charCategorizer(n.head),r=e.sliceDoc(l.from,l.to)}else{let l=n.to-n.from;if(l<t.minSelectionLength||l>200)return et.none;if(t.wholeWords){if(r=e.sliceDoc(n.from,n.to),o=e.charCategorizer(n.head),!(wO(o,e,n.from,n.to)&&aL(o,e,n.from,n.to)))return et.none}else if(r=e.sliceDoc(n.from,n.to),!r)return et.none}let a=[];for(let l of s.visibleRanges){let h=new ur(e.doc,r,l.from,l.to);for(;!h.next().done;){let{from:c,to:u}=h.value;if((!o||wO(o,e,c,u))&&(n.empty&&c<=n.from&&u>=n.to?a.push(oL.range(c,u)):(c>=n.to||u<=n.from)&&a.push(rL.range(c,u)),a.length>t.maxMatches))return et.none}}return et.set(a)}},{decorations:s=>s.decorations}),hL=q.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),cL=({state:s,dispatch:t})=>{let{selection:e}=s,i=D.create(e.ranges.map(n=>s.wordAt(n.head)||D.cursor(n.head)),e.mainIndex);return i.eq(e)?!1:(t(s.update({selection:i})),!0)};function uL(s,t){let{main:e,ranges:i}=s.selection,n=s.wordAt(e.head),r=n&&n.from==e.from&&n.to==e.to;for(let o=!1,a=new ur(s.doc,t,i[i.length-1].to);;)if(a.next(),a.done){if(o)return null;a=new ur(s.doc,t,0,Math.max(0,i[i.length-1].from-1)),o=!0}else{if(o&&i.some(l=>l.from==a.value.from))continue;if(r){let l=s.wordAt(a.value.from);if(!l||l.from!=a.value.from||l.to!=a.value.to)continue}return a.value}}const dL=({state:s,dispatch:t})=>{let{ranges:e}=s.selection;if(e.some(r=>r.from===r.to))return cL({state:s,dispatch:t});let i=s.sliceDoc(e[0].from,e[0].to);if(s.selection.ranges.some(r=>s.sliceDoc(r.from,r.to)!=i))return!1;let n=uL(s,i);return n?(t(s.update({selection:s.selection.addRange(D.range(n.from,n.to),!1),effects:q.scrollIntoView(n.to)})),!0):!1},Or=j.define({combine(s){return Ii(s,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:t=>new $L(t),scrollToMatch:t=>q.scrollIntoView(t)})}});class j1{constructor(t){this.search=t.search,this.caseSensitive=!!t.caseSensitive,this.literal=!!t.literal,this.regexp=!!t.regexp,this.replace=t.replace||"",this.valid=!!this.search&&(!this.regexp||tL(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!t.wholeWord,this.test=t.test}unquote(t){return this.literal?t:t.replace(/\\([nrt\\])/g,(e,i)=>i=="n"?`
|
|
262
|
+
`:i=="r"?"\r":i=="t"?" ":"\\")}eq(t){return this.search==t.search&&this.replace==t.replace&&this.caseSensitive==t.caseSensitive&&this.regexp==t.regexp&&this.wholeWord==t.wholeWord&&this.test==t.test}create(){return this.regexp?new yL(this):new gL(this)}getCursor(t,e=0,i){let n=t.doc?t:yt.create({doc:t});return i==null&&(i=n.doc.length),this.regexp?Pn(this,n,e,i):Cn(this,n,e,i)}}class U1{constructor(t){this.spec=t}}function fL(s,t,e){return(i,n,r,o)=>{if(e&&!e(i,n,r,o))return!1;let a=i>=o&&n<=o+r.length?r.slice(i-o,n-o):t.doc.sliceString(i,n);return s(a,t,i,n)}}function Cn(s,t,e,i){let n;return s.wholeWord&&(n=pL(t.doc,t.charCategorizer(t.selection.main.head))),s.test&&(n=fL(s.test,t,n)),new ur(t.doc,s.unquoted,e,i,s.caseSensitive?void 0:r=>r.toLowerCase(),n)}function pL(s,t){return(e,i,n,r)=>((r>e||r+n.length<i)&&(r=Math.max(0,e-2),n=s.sliceString(r,Math.min(s.length,i+2))),(t(Nl(n,e-r))!=At.Word||t(Vl(n,e-r))!=At.Word)&&(t(Vl(n,i-r))!=At.Word||t(Nl(n,i-r))!=At.Word))}class gL extends U1{constructor(t){super(t)}nextMatch(t,e,i){let n=Cn(this.spec,t,i,t.doc.length).nextOverlapping();if(n.done){let r=Math.min(t.doc.length,e+this.spec.unquoted.length);n=Cn(this.spec,t,0,r).nextOverlapping()}return n.done||n.value.from==e&&n.value.to==i?null:n.value}prevMatchInRange(t,e,i){for(let n=i;;){let r=Math.max(e,n-1e4-this.spec.unquoted.length),o=Cn(this.spec,t,r,n),a=null;for(;!o.nextOverlapping().done;)a=o.value;if(a)return a;if(r==e)return null;n-=1e4}}prevMatch(t,e,i){let n=this.prevMatchInRange(t,0,e);return n||(n=this.prevMatchInRange(t,Math.max(0,i-this.spec.unquoted.length),t.doc.length)),n&&(n.from!=e||n.to!=i)?n:null}getReplacement(t){return this.spec.unquote(this.spec.replace)}matchAll(t,e){let i=Cn(this.spec,t,0,t.doc.length),n=[];for(;!i.next().done;){if(n.length>=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let r=Cn(this.spec,t,Math.max(0,e-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,t.doc.length));for(;!r.next().done;)n(r.value.from,r.value.to)}}function mL(s,t,e){return(i,n,r)=>(!e||e(i,n,r))&&s(r[0],t,i,n)}function Pn(s,t,e,i){let n;return s.wholeWord&&(n=OL(t.charCategorizer(t.selection.main.head))),s.test&&(n=mL(s.test,t,n)),new F1(t.doc,s.search,{ignoreCase:!s.caseSensitive,test:n},e,i)}function Nl(s,t){return s.slice(re(s,t,!1),t)}function Vl(s,t){return s.slice(t,re(s,t))}function OL(s){return(t,e,i)=>!i[0].length||(s(Nl(i.input,i.index))!=At.Word||s(Vl(i.input,i.index))!=At.Word)&&(s(Vl(i.input,i.index+i[0].length))!=At.Word||s(Nl(i.input,i.index+i[0].length))!=At.Word)}class yL extends U1{nextMatch(t,e,i){let n=Pn(this.spec,t,i,t.doc.length).next();return n.done&&(n=Pn(this.spec,t,0,e).next()),n.done?null:n.value}prevMatchInRange(t,e,i){for(let n=1;;n++){let r=Math.max(e,i-n*1e4),o=Pn(this.spec,t,r,i),a=null;for(;!o.next().done;)a=o.value;if(a&&(r==e||a.from>r+10))return a;if(r==e)return null}}prevMatch(t,e,i){return this.prevMatchInRange(t,0,e)||this.prevMatchInRange(t,i,t.doc.length)}getReplacement(t){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(e,i)=>{if(i=="&")return t.match[0];if(i=="$")return"$";for(let n=i.length;n>0;n--){let r=+i.slice(0,n);if(r>0&&r<t.match.length)return t.match[r]+i.slice(n)}return e})}matchAll(t,e){let i=Pn(this.spec,t,0,t.doc.length),n=[];for(;!i.next().done;){if(n.length>=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let r=Pn(this.spec,t,Math.max(0,e-250),Math.min(i+250,t.doc.length));for(;!r.next().done;)n(r.value.from,r.value.to)}}const Eo=rt.define(),Wf=rt.define(),ys=pe.define({create(s){return new Ec(Qd(s).create(),null)},update(s,t){for(let e of t.effects)e.is(Eo)?s=new Ec(e.value.create(),s.panel):e.is(Wf)&&(s=new Ec(s.query,e.value?Gf:null));return s},provide:s=>Mo.from(s,t=>t.panel)});class Ec{constructor(t,e){this.query=t,this.panel=e}}const xL=et.mark({class:"cm-searchMatch"}),bL=et.mark({class:"cm-searchMatch cm-searchMatch-selected"}),wL=Nt.fromClass(class{constructor(s){this.view=s,this.decorations=this.highlight(s.state.field(ys))}update(s){let t=s.state.field(ys);(t!=s.startState.field(ys)||s.docChanged||s.selectionSet||s.viewportChanged)&&(this.decorations=this.highlight(t))}highlight({query:s,panel:t}){if(!t||!s.spec.valid)return et.none;let{view:e}=this,i=new es;for(let n=0,r=e.visibleRanges,o=r.length;n<o;n++){let{from:a,to:l}=r[n];for(;n<o-1&&l>r[n+1].from-500;)l=r[++n].to;s.highlight(e.state,a,l,(h,c)=>{let u=e.state.selection.ranges.some(d=>d.from==h&&d.to==c);i.add(h,c,u?bL:xL)})}return i.finish()}},{decorations:s=>s.decorations});function Uo(s){return t=>{let e=t.state.field(ys,!1);return e&&e.query.spec.valid?s(t,e):J1(t)}}const Fl=Uo((s,{query:t})=>{let{to:e}=s.state.selection.main,i=t.nextMatch(s.state,e,e);if(!i)return!1;let n=D.single(i.from,i.to),r=s.state.facet(Or);return s.dispatch({selection:n,effects:[Yf(s,i),r.scrollToMatch(n.main,s)],userEvent:"select.search"}),K1(s),!0}),ql=Uo((s,{query:t})=>{let{state:e}=s,{from:i}=e.selection.main,n=t.prevMatch(e,i,i);if(!n)return!1;let r=D.single(n.from,n.to),o=s.state.facet(Or);return s.dispatch({selection:r,effects:[Yf(s,n),o.scrollToMatch(r.main,s)],userEvent:"select.search"}),K1(s),!0}),SL=Uo((s,{query:t})=>{let e=t.matchAll(s.state,1e3);return!e||!e.length?!1:(s.dispatch({selection:D.create(e.map(i=>D.range(i.from,i.to))),userEvent:"select.search.matches"}),!0)}),vL=({state:s,dispatch:t})=>{let e=s.selection;if(e.ranges.length>1||e.main.empty)return!1;let{from:i,to:n}=e.main,r=[],o=0;for(let a=new ur(s.doc,s.sliceDoc(i,n));!a.next().done;){if(r.length>1e3)return!1;a.value.from==i&&(o=r.length),r.push(D.range(a.value.from,a.value.to))}return t(s.update({selection:D.create(r,o),userEvent:"select.search.matches"})),!0},SO=Uo((s,{query:t})=>{let{state:e}=s,{from:i,to:n}=e.selection.main;if(e.readOnly)return!1;let r=t.nextMatch(e,i,i);if(!r)return!1;let o=r,a=[],l,h,c=[];o.precise?o.from==i&&o.to==n&&(h=e.toText(t.getReplacement(o)),a.push({from:o.from,to:o.to,insert:h}),c.push(q.announce.of(e.phrase("replaced match on line $",e.doc.lineAt(i).number)+"."))):o=t.nextMatch(e,o.from,o.to);let u=s.state.changes(a);return o&&(l=D.single(o.from,o.to).map(u),c.push(Yf(s,o)),c.push(e.facet(Or).scrollToMatch(l.main,s))),s.dispatch({changes:u,selection:l,effects:c,userEvent:"input.replace"}),!0}),_L=Uo((s,{query:t})=>{if(s.state.readOnly)return!1;let e=[];for(let n of t.matchAll(s.state,1e9)){let{from:r,to:o,precise:a}=n;a&&e.push({from:r,to:o,insert:t.getReplacement(n)})}if(!e.length)return!1;let i=s.state.phrase("replaced $ matches",e.length)+".";return s.dispatch({changes:e,effects:q.announce.of(i),userEvent:"input.replace.all"}),!0});function Gf(s){return s.state.facet(Or).createPanel(s)}function Qd(s,t){var e,i,n,r,o;let a=s.selection.main,l=a.empty||a.to>a.from+100?"":s.sliceDoc(a.from,a.to);if(t&&!l)return t;let h=s.facet(Or);return new j1({search:((e=t==null?void 0:t.literal)!==null&&e!==void 0?e:h.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:(i=t==null?void 0:t.caseSensitive)!==null&&i!==void 0?i:h.caseSensitive,literal:(n=t==null?void 0:t.literal)!==null&&n!==void 0?n:h.literal,regexp:(r=t==null?void 0:t.regexp)!==null&&r!==void 0?r:h.regexp,wholeWord:(o=t==null?void 0:t.wholeWord)!==null&&o!==void 0?o:h.wholeWord})}function H1(s){let t=Mf(s,Gf);return t&&t.dom.querySelector("[main-field]")}function K1(s){let t=H1(s);t&&t==s.root.activeElement&&t.select()}const J1=s=>{let t=s.state.field(ys,!1);if(t&&t.panel){let e=H1(s);if(e&&e!=s.root.activeElement){let i=Qd(s.state,t.query.spec);i.valid&&s.dispatch({effects:Eo.of(i)}),e.focus(),e.select()}}else s.dispatch({effects:[Wf.of(!0),t?Eo.of(Qd(s.state,t.query.spec)):rt.appendConfig.of(PL)]});return!0},tw=s=>{let t=s.state.field(ys,!1);if(!t||!t.panel)return!1;let e=Mf(s,Gf);return e&&e.dom.contains(s.root.activeElement)&&s.focus(),s.dispatch({effects:Wf.of(!1)}),!0},kL=[{key:"Mod-f",run:J1,scope:"editor search-panel"},{key:"F3",run:Fl,shift:ql,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Fl,shift:ql,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:tw,scope:"editor search-panel"},{key:"Mod-Shift-l",run:vL},{key:"Mod-Alt-g",run:eL},{key:"Mod-d",run:dL,preventDefault:!0}];class $L{constructor(t){this.view=t;let e=this.query=t.state.field(ys).query.spec;this.commit=this.commit.bind(this),this.searchField=vt("input",{value:e.search,placeholder:Be(t,"Find"),"aria-label":Be(t,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=vt("input",{value:e.replace,placeholder:Be(t,"Replace"),"aria-label":Be(t,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=vt("input",{type:"checkbox",name:"case",form:"",checked:e.caseSensitive,onchange:this.commit}),this.reField=vt("input",{type:"checkbox",name:"re",form:"",checked:e.regexp,onchange:this.commit}),this.wordField=vt("input",{type:"checkbox",name:"word",form:"",checked:e.wholeWord,onchange:this.commit});function i(n,r,o){return vt("button",{class:"cm-button",name:n,onclick:r,type:"button"},o)}this.dom=vt("div",{onkeydown:n=>this.keydown(n),class:"cm-search"},[this.searchField,i("next",()=>Fl(t),[Be(t,"next")]),i("prev",()=>ql(t),[Be(t,"previous")]),i("select",()=>SL(t),[Be(t,"all")]),vt("label",null,[this.caseField,Be(t,"match case")]),vt("label",null,[this.reField,Be(t,"regexp")]),vt("label",null,[this.wordField,Be(t,"by word")]),...t.state.readOnly?[]:[vt("br"),this.replaceField,i("replace",()=>SO(t),[Be(t,"replace")]),i("replaceAll",()=>_L(t),[Be(t,"replace all")])],vt("button",{name:"close",onclick:()=>tw(t),"aria-label":Be(t,"close"),type:"button"},["×"])])}commit(){let t=new j1({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});t.eq(this.query)||(this.query=t,this.view.dispatch({effects:Eo.of(t)}))}keydown(t){CQ(this.view,t,"search-panel")?t.preventDefault():t.keyCode==13&&t.target==this.searchField?(t.preventDefault(),(t.shiftKey?ql:Fl)(this.view)):t.keyCode==13&&t.target==this.replaceField&&(t.preventDefault(),SO(this.view))}update(t){for(let e of t.transactions)for(let i of e.effects)i.is(Eo)&&!i.value.eq(this.query)&&this.setQuery(i.value)}setQuery(t){this.query=t,this.searchField.value=t.search,this.replaceField.value=t.replace,this.caseField.checked=t.caseSensitive,this.reField.checked=t.regexp,this.wordField.checked=t.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Or).top}}function Be(s,t){return s.state.phrase(t)}const za=30,Wa=/[\s\.,:;?!]/;function Yf(s,{from:t,to:e}){let i=s.state.doc.lineAt(t),n=s.state.doc.lineAt(e).to,r=Math.max(i.from,t-za),o=Math.min(n,e+za),a=s.state.sliceDoc(r,o);if(r!=i.from){for(let l=0;l<za;l++)if(!Wa.test(a[l+1])&&Wa.test(a[l])){a=a.slice(l);break}}if(o!=n){for(let l=a.length-1;l>a.length-za;l--)if(!Wa.test(a[l-1])&&Wa.test(a[l])){a=a.slice(0,l);break}}return q.announce.of(`${s.state.phrase("current match")}. ${a} ${s.state.phrase("on line")} ${i.number}.`)}const CL=q.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"}}),PL=[ys,Ps.low(wL),CL];class ew{constructor(t,e,i,n){this.state=t,this.pos=e,this.explicit=i,this.view=n,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(t){let e=te(this.state).resolveInner(this.pos,-1);for(;e&&t.indexOf(e.name)<0;)e=e.parent;return e?{from:e.from,to:this.pos,text:this.state.sliceDoc(e.from,this.pos),type:e.type}:null}matchBefore(t){let e=this.state.doc.lineAt(this.pos),i=Math.max(e.from,this.pos-250),n=e.text.slice(i-e.from,this.pos-e.from),r=n.search(sw(t,!1));return r<0?null:{from:i+r,to:this.pos,text:n.slice(r)}}get aborted(){return this.abortListeners==null}addEventListener(t,e,i){t=="abort"&&this.abortListeners&&(this.abortListeners.push(e),i&&i.onDocChange&&(this.abortOnDocChange=!0))}}function vO(s){let t=Object.keys(s).join(""),e=/\w/.test(t);return e&&(t=t.replace(/\w/g,"")),`[${e?"\\w":""}${t.replace(/[^\w\s]/g,"\\$&")}]`}function TL(s){let t=Object.create(null),e=Object.create(null);for(let{label:n}of s){t[n[0]]=!0;for(let r=1;r<n.length;r++)e[n[r]]=!0}let i=vO(t)+vO(e)+"*$";return[new RegExp("^"+i),new RegExp(i)]}function iw(s){let t=s.map(n=>typeof n=="string"?{label:n}:n),[e,i]=t.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:TL(t);return n=>{let r=n.matchBefore(i);return r||n.explicit?{from:r?r.from:n.pos,options:t,validFor:e}:null}}function ML(s,t){return e=>{for(let i=te(e.state).resolveInner(e.pos,-1);i;i=i.parent){if(s.indexOf(i.name)>-1)return null;if(i.type.isTop)break}return t(e)}}class _O{constructor(t,e,i,n){this.completion=t,this.source=e,this.match=i,this.score=n}}function en(s){return s.selection.main.from}function sw(s,t){var e;let{source:i}=s,n=t&&i[0]!="^",r=i[i.length-1]!="$";return!n&&!r?s:new RegExp(`${n?"^":""}(?:${i})${r?"$":""}`,(e=s.flags)!==null&&e!==void 0?e:s.ignoreCase?"i":"")}const Nf=os.define();function AL(s,t,e,i){let{main:n}=s.selection,r=e-n.from,o=i-n.from;return{...s.changeByRange(a=>{if(a!=n&&e!=i&&s.sliceDoc(a.from+r,a.from+o)!=s.sliceDoc(e,i))return{range:a};let l=s.toText(t);return{changes:{from:a.from+r,to:i==n.from?a.to:a.from+o,insert:l},range:D.cursor(a.from+r+l.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const kO=new WeakMap;function QL(s){if(!Array.isArray(s))return s;let t=kO.get(s);return t||kO.set(s,t=iw(s)),t}const jl=rt.define(),Lo=rt.define();class RL{constructor(t){this.pattern=t,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let e=0;e<t.length;){let i=Te(t,e),n=Ci(i);this.chars.push(i);let r=t.slice(e,e+n),o=r.toUpperCase();this.folded.push(Te(o==r?r.toLowerCase():o,0)),e+=n}this.astral=t.length!=this.chars.length}ret(t,e){return this.score=t,this.matched=e,this}match(t){if(this.pattern.length==0)return this.ret(-100,[]);if(t.length<this.pattern.length)return null;let{chars:e,folded:i,any:n,precise:r,byWord:o}=this;if(e.length==1){let x=Te(t,0),b=Ci(x),v=b==t.length?0:-100;if(x!=e[0])if(x==i[0])v+=-200;else return null;return this.ret(v,[0,b])}let a=t.indexOf(this.pattern);if(a==0)return this.ret(t.length==this.pattern.length?0:-100,[0,this.pattern.length]);let l=e.length,h=0;if(a<0){for(let x=0,b=Math.min(t.length,200);x<b&&h<l;){let v=Te(t,x);(v==e[h]||v==i[h])&&(n[h++]=x),x+=Ci(v)}if(h<l)return null}let c=0,u=0,d=!1,f=0,p=-1,g=-1,m=/[a-z]/.test(t),O=!0;for(let x=0,b=Math.min(t.length,200),v=0;x<b&&u<l;){let w=Te(t,x);a<0&&(c<l&&w==e[c]&&(r[c++]=x),f<l&&(w==e[f]||w==i[f]?(f==0&&(p=x),g=x+1,f++):f=0));let S,y=w<255?w>=48&&w<=57||w>=97&&w<=122?2:w>=65&&w<=90?1:0:(S=df(w))!=S.toLowerCase()?1:S!=S.toUpperCase()?2:0;(!x||y==1&&m||v==0&&y!=0)&&(e[u]==w||i[u]==w&&(d=!0)?o[u++]=x:o.length&&(O=!1)),v=y,x+=Ci(w)}return u==l&&o[0]==0&&O?this.result(-100+(d?-200:0),o,t):f==l&&p==0?this.ret(-200-t.length+(g==t.length?0:-100),[0,g]):a>-1?this.ret(-700-t.length,[a,a+this.pattern.length]):f==l?this.ret(-900-t.length,[p,g]):u==l?this.result(-100+(d?-200:0)+-700+(O?0:-1100),o,t):e.length==2?null:this.result((n[0]?-700:0)+-200+-1100,n,t)}result(t,e,i){let n=[],r=0;for(let o of e){let a=o+(this.astral?Ci(Te(i,o)):1);r&&n[r-1]==o?n[r-1]=a:(n[r++]=o,n[r++]=a)}return this.ret(t-i.length,n)}}class EL{constructor(t){this.pattern=t,this.matched=[],this.score=0,this.folded=t.toLowerCase()}match(t){if(t.length<this.pattern.length)return null;let e=t.slice(0,this.pattern.length),i=e==this.pattern?0:e.toLowerCase()==this.folded?-200:null;return i==null?null:(this.matched=[0,e.length],this.score=i+(t.length==this.pattern.length?0:-100),this)}}const ne=j.define({combine(s){return Ii(s,{activateOnTyping:!0,activateOnCompletion:()=>!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:LL,filterStrict:!1,compareCompletions:(t,e)=>(t.sortText||t.label).localeCompare(e.sortText||e.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(t,e)=>t&&e,closeOnBlur:(t,e)=>t&&e,icons:(t,e)=>t&&e,tooltipClass:(t,e)=>i=>$O(t(i),e(i)),optionClass:(t,e)=>i=>$O(t(i),e(i)),addToOptions:(t,e)=>t.concat(e),filterStrict:(t,e)=>t||e})}});function $O(s,t){return s?t?s+" "+t:s:t}function LL(s,t,e,i,n,r){let o=s.textDirection==$t.RTL,a=o,l=!1,h="top",c,u,d=t.left-n.left,f=n.right-t.right,p=i.right-i.left,g=i.bottom-i.top;if(a&&d<Math.min(p,f)?a=!1:!a&&f<Math.min(p,d)&&(a=!0),p<=(a?d:f))c=Math.max(n.top,Math.min(e.top,n.bottom-g))-t.top,u=Math.min(400,a?d:f);else{l=!0,u=Math.min(400,(o?t.right:n.right-t.left)-30);let x=n.bottom-t.bottom;x>=g||x>t.top?c=e.bottom-t.top:(h="bottom",c=t.bottom-e.top)}let m=(t.bottom-t.top)/r.offsetHeight,O=(t.right-t.left)/r.offsetWidth;return{style:`${h}: ${c/m}px; max-width: ${u/O}px`,class:"cm-completionInfo-"+(l?o?"left-narrow":"right-narrow":a?"left":"right")}}const Vf=rt.define();function IL(s){let t=s.addToOptions.slice();return s.icons&&t.push({render(e){let i=document.createElement("div");return i.classList.add("cm-completionIcon"),e.type&&i.classList.add(...e.type.split(/\s+/g).map(n=>"cm-completionIcon-"+n)),i.setAttribute("aria-hidden","true"),i},position:20}),t.push({render(e,i,n,r){let o=document.createElement("span");o.className="cm-completionLabel";let a=e.displayLabel||e.label,l=0;for(let h=0;h<r.length;){let c=r[h++],u=r[h++];c>l&&o.appendChild(document.createTextNode(a.slice(l,c)));let d=o.appendChild(document.createElement("span"));d.appendChild(document.createTextNode(a.slice(c,u))),d.className="cm-completionMatchedText",l=u}return l<a.length&&o.appendChild(document.createTextNode(a.slice(l))),o},position:50},{render(e){if(!e.detail)return null;let i=document.createElement("span");return i.className="cm-completionDetail",i.textContent=e.detail,i},position:80}),t.sort((e,i)=>e.position-i.position).map(e=>e.render)}function Lc(s,t,e){if(s<=e)return{from:0,to:s};if(t<0&&(t=0),t<=s>>1){let n=Math.floor(t/e);return{from:n*e,to:(n+1)*e}}let i=Math.ceil((s-t)/e);return{from:s-i*e,to:s-(i-1)*e}}class ZL{constructor(t,e,i){this.view=t,this.stateField=e,this.applyCompletion=i,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:l=>this.placeInfo(l),key:this},this.space=null,this.currentClass="";let n=t.state.field(e),{options:r,selected:o}=n.open,a=t.state.facet(ne);this.optionContent=IL(a),this.optionClass=a.optionClass,this.tooltipClass=a.tooltipClass,this.range=Lc(r.length,o,a.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(t.state),this.dom.addEventListener("mousedown",l=>{let{options:h}=t.state.field(e).open;for(let c=l.target,u;c&&c!=this.dom;c=c.parentNode)if(c.nodeName=="LI"&&(u=/-(\d+)$/.exec(c.id))&&+u[1]<h.length){this.applyCompletion(t,h[+u[1]]),l.preventDefault();return}if(l.target==this.list){let c=this.list.classList.contains("cm-completionListIncompleteTop")&&l.clientY<this.list.firstChild.getBoundingClientRect().top?this.range.from-1:this.list.classList.contains("cm-completionListIncompleteBottom")&&l.clientY>this.list.lastChild.getBoundingClientRect().bottom?this.range.to:null;c!=null&&(t.dispatch({effects:Vf.of(c)}),l.preventDefault())}}),this.dom.addEventListener("focusout",l=>{let h=t.state.field(this.stateField,!1);h&&h.tooltip&&t.state.facet(ne).closeOnBlur&&l.relatedTarget!=t.contentDOM&&t.dispatch({effects:Lo.of(null)})}),this.showOptions(r,n.id)}mount(){this.updateSel()}showOptions(t,e){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(t,e,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(t){var e;let i=t.state.field(this.stateField),n=t.startState.field(this.stateField);if(this.updateTooltipClass(t.state),i!=n){let{options:r,selected:o,disabled:a}=i.open;(!n.open||n.open.options!=r)&&(this.range=Lc(r.length,o,t.state.facet(ne).maxRenderedOptions),this.showOptions(r,i.id)),this.updateSel(),a!=((e=n.open)===null||e===void 0?void 0:e.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!a)}}updateTooltipClass(t){let e=this.tooltipClass(t);if(e!=this.currentClass){for(let i of this.currentClass.split(" "))i&&this.dom.classList.remove(i);for(let i of e.split(" "))i&&this.dom.classList.add(i);this.currentClass=e}}positioned(t){this.space=t,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let t=this.view.state.field(this.stateField),e=t.open;(e.selected>-1&&e.selected<this.range.from||e.selected>=this.range.to)&&(this.range=Lc(e.options.length,e.selected,this.view.state.facet(ne).maxRenderedOptions),this.showOptions(e.options,t.id));let i=this.updateSelectedOption(e.selected);if(i){this.destroyInfo();let{completion:n}=e.options[e.selected],{info:r}=n;if(!r)return;let o=typeof r=="string"?document.createTextNode(r):r(n);if(!o)return;"then"in o?o.then(a=>{a&&this.view.state.field(this.stateField,!1)==t&&this.addInfoPane(a,n)}).catch(a=>Qe(this.view.state,a,"completion info")):(this.addInfoPane(o,n),i.setAttribute("aria-describedby",this.info.id))}}addInfoPane(t,e){this.destroyInfo();let i=this.info=document.createElement("div");if(i.className="cm-tooltip cm-completionInfo",i.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),t.nodeType!=null)i.appendChild(t),this.infoDestroy=null;else{let{dom:n,destroy:r}=t;i.appendChild(n),this.infoDestroy=r||null}this.dom.appendChild(i),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(t){let e=null;for(let i=this.list.firstChild,n=this.range.from;i;i=i.nextSibling,n++)i.nodeName!="LI"||!i.id?n--:n==t?i.hasAttribute("aria-selected")||(i.setAttribute("aria-selected","true"),e=i):i.hasAttribute("aria-selected")&&(i.removeAttribute("aria-selected"),i.removeAttribute("aria-describedby"));return e&&BL(this.list,e),e}measureInfo(){let t=this.dom.querySelector("[aria-selected]");if(!t||!this.info)return null;let e=this.dom.getBoundingClientRect(),i=this.info.getBoundingClientRect(),n=t.getBoundingClientRect(),r=this.space;if(!r){let o=this.dom.ownerDocument.documentElement;r={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return n.top>Math.min(r.bottom,e.bottom)-10||n.bottom<Math.max(r.top,e.top)+10?null:this.view.state.facet(ne).positionInfo(this.view,e,n,i,r,this.dom)}placeInfo(t){this.info&&(t?(t.style&&(this.info.style.cssText=t.style),this.info.className="cm-tooltip cm-completionInfo "+(t.class||"")):this.info.style.cssText="top: -1e6px")}createListBox(t,e,i){const n=document.createElement("ul");n.id=e,n.setAttribute("role","listbox"),n.setAttribute("aria-expanded","true"),n.setAttribute("aria-label",this.view.state.phrase("Completions")),n.addEventListener("mousedown",o=>{o.target==n&&o.preventDefault()});let r=null;for(let o=i.from;o<i.to;o++){let{completion:a,match:l}=t[o],{section:h}=a;if(h){let d=typeof h=="string"?h:h.name;if(d!=r&&(o>i.from||i.from==0))if(r=d,typeof h!="string"&&h.header)n.appendChild(h.header(h));else{let f=n.appendChild(document.createElement("completion-section"));f.textContent=d}}const c=n.appendChild(document.createElement("li"));c.id=e+"-"+o,c.setAttribute("role","option");let u=this.optionClass(a);u&&(c.className=u);for(let d of this.optionContent){let f=d(a,this.view.state,this.view,l);f&&c.appendChild(f)}}return i.from&&n.classList.add("cm-completionListIncompleteTop"),i.to<t.length&&n.classList.add("cm-completionListIncompleteBottom"),n}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}}function DL(s,t){return e=>new ZL(e,s,t)}function BL(s,t){let e=s.getBoundingClientRect(),i=t.getBoundingClientRect(),n=e.height/s.offsetHeight;i.top<e.top?s.scrollTop-=(e.top-i.top)/n:i.bottom>e.bottom&&(s.scrollTop+=(i.bottom-e.bottom)/n)}function CO(s){return(s.boost||0)*100+(s.apply?10:0)+(s.info?5:0)+(s.type?1:0)}function XL(s,t){let e=[],i=null,n=null,r=c=>{e.push(c);let{section:u}=c.completion;if(u){i||(i=[]);let d=typeof u=="string"?u:u.name;i.some(f=>f.name==d)||i.push(typeof u=="string"?{name:d}:u)}},o=t.facet(ne);for(let c of s)if(c.hasResult()){let u=c.result.getMatch;if(c.result.filter===!1)for(let d of c.result.options)r(new _O(d,c.source,u?u(d):[],1e9-e.length));else{let d=t.sliceDoc(c.from,c.to),f,p=o.filterStrict?new EL(d):new RL(d);for(let g of c.result.options)if(f=p.match(g.label)){let m=g.displayLabel?u?u(g,f.matched):[]:f.matched,O=f.score+(g.boost||0);if(r(new _O(g,c.source,m,O)),typeof g.section=="object"&&g.section.rank==="dynamic"){let{name:x}=g.section;n||(n=Object.create(null)),n[x]=Math.max(O,n[x]||-1e9)}}}}if(i){let c=Object.create(null),u=0,d=(f,p)=>(f.rank==="dynamic"&&p.rank==="dynamic"?n[p.name]-n[f.name]:0)||(typeof f.rank=="number"?f.rank:1e9)-(typeof p.rank=="number"?p.rank:1e9)||(f.name<p.name?-1:1);for(let f of i.sort(d))u-=1e5,c[f.name]=u;for(let f of e){let{section:p}=f.completion;p&&(f.score+=c[typeof p=="string"?p:p.name])}}let a=[],l=null,h=o.compareCompletions;for(let c of e.sort((u,d)=>d.score-u.score||h(u.completion,d.completion))){let u=c.completion;!l||l.label!=u.label||l.detail!=u.detail||l.type!=null&&u.type!=null&&l.type!=u.type||l.apply!=u.apply||l.boost!=u.boost?a.push(c):CO(c.completion)>CO(l)&&(a[a.length-1]=c),l=c.completion}return a}class zn{constructor(t,e,i,n,r,o){this.options=t,this.attrs=e,this.tooltip=i,this.timestamp=n,this.selected=r,this.disabled=o}setSelected(t,e){return t==this.selected||t>=this.options.length?this:new zn(this.options,PO(e,t),this.tooltip,this.timestamp,t,this.disabled)}static build(t,e,i,n,r,o){if(n&&!o&&t.some(h=>h.isPending))return n.setDisabled();let a=XL(t,e);if(!a.length)return n&&t.some(h=>h.isPending)?n.setDisabled():null;let l=e.facet(ne).selectOnOpen?0:-1;if(n&&n.selected!=l&&n.selected!=-1){let h=n.options[n.selected].completion;for(let c=0;c<a.length;c++)if(a[c].completion==h){l=c;break}}return new zn(a,PO(i,l),{pos:t.reduce((h,c)=>c.hasResult()?Math.min(h,c.from):h,1e8),create:VL,above:r.aboveCursor},n?n.timestamp:Date.now(),l,!1)}map(t){return new zn(this.options,this.attrs,{...this.tooltip,pos:t.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new zn(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class Ul{constructor(t,e,i){this.active=t,this.id=e,this.open=i}static start(){return new Ul(YL,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(t){let{state:e}=t,i=e.facet(ne),r=(i.override||e.languageDataAt("autocomplete",en(e)).map(QL)).map(l=>(this.active.find(c=>c.source==l)||new ei(l,this.active.some(c=>c.state!=0)?1:0)).update(t,i));r.length==this.active.length&&r.every((l,h)=>l==this.active[h])&&(r=this.active);let o=this.open,a=t.effects.some(l=>l.is(Ff));o&&t.docChanged&&(o=o.map(t.changes)),t.selection||r.some(l=>l.hasResult()&&t.changes.touchesRange(l.from,l.to))||!zL(r,this.active)||a?o=zn.build(r,e,this.id,o,i,a):o&&o.disabled&&!r.some(l=>l.isPending)&&(o=null),!o&&r.every(l=>!l.isPending)&&r.some(l=>l.hasResult())&&(r=r.map(l=>l.hasResult()?new ei(l.source,0):l));for(let l of t.effects)l.is(Vf)&&(o=o&&o.setSelected(l.value,this.id));return r==this.active&&o==this.open?this:new Ul(r,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?WL:GL}}function zL(s,t){if(s==t)return!0;for(let e=0,i=0;;){for(;e<s.length&&!s[e].hasResult();)e++;for(;i<t.length&&!t[i].hasResult();)i++;let n=e==s.length,r=i==t.length;if(n||r)return n==r;if(s[e++].result!=t[i++].result)return!1}}const WL={"aria-autocomplete":"list"},GL={};function PO(s,t){let e={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":s};return t>-1&&(e["aria-activedescendant"]=s+"-"+t),e}const YL=[];function nw(s,t){if(s.isUserEvent("input.complete")){let i=s.annotation(Nf);if(i&&t.activateOnCompletion(i))return 12}let e=s.isUserEvent("input.type");return e&&t.activateOnTyping?5:e?1:s.isUserEvent("delete.backward")?2:s.selection?8:s.docChanged?16:0}class ei{constructor(t,e,i=!1){this.source=t,this.state=e,this.explicit=i}hasResult(){return!1}get isPending(){return this.state==1}update(t,e){let i=nw(t,e),n=this;(i&8||i&16&&this.touches(t))&&(n=new ei(n.source,0)),i&4&&n.state==0&&(n=new ei(this.source,1)),n=n.updateFor(t,i);for(let r of t.effects)if(r.is(jl))n=new ei(n.source,1,r.value);else if(r.is(Lo))n=new ei(n.source,0);else if(r.is(Ff))for(let o of r.value)o.source==n.source&&(n=o);return n}updateFor(t,e){return this.map(t.changes)}map(t){return this}touches(t){return t.changes.touchesRange(en(t.state))}}class Hn extends ei{constructor(t,e,i,n,r,o){super(t,3,e),this.limit=i,this.result=n,this.from=r,this.to=o}hasResult(){return!0}updateFor(t,e){var i;if(!(e&3))return this.map(t.changes);let n=this.result;n.map&&!t.changes.empty&&(n=n.map(n,t.changes));let r=t.changes.mapPos(this.from),o=t.changes.mapPos(this.to,1),a=en(t.state);if(a>o||!n||e&2&&(en(t.startState)==this.from||a<this.limit))return new ei(this.source,e&4?1:0);let l=t.changes.mapPos(this.limit);return NL(n.validFor,t.state,r,o)?new Hn(this.source,this.explicit,l,n,r,o):n.update&&(n=n.update(n,r,o,new ew(t.state,a,!1)))?new Hn(this.source,this.explicit,l,n,n.from,(i=n.to)!==null&&i!==void 0?i:en(t.state)):new ei(this.source,1,this.explicit)}map(t){return t.empty?this:(this.result.map?this.result.map(this.result,t):this.result)?new Hn(this.source,this.explicit,t.mapPos(this.limit),this.result,t.mapPos(this.from),t.mapPos(this.to,1)):new ei(this.source,0)}touches(t){return t.changes.touchesRange(this.from,this.to)}}function NL(s,t,e,i){if(!s)return!1;let n=t.sliceDoc(e,i);return typeof s=="function"?s(n,e,i,t):sw(s,!0).test(n)}const Ff=rt.define({map(s,t){return s.map(e=>e.map(t))}}),Me=pe.define({create(){return Ul.start()},update(s,t){return s.update(t)},provide:s=>[Tf.from(s,t=>t.tooltip),q.contentAttributes.from(s,t=>t.attrs)]});function qf(s,t){const e=t.completion.apply||t.completion.label;let i=s.state.field(Me).active.find(n=>n.source==t.source);return i instanceof Hn?(typeof e=="string"?s.dispatch({...AL(s.state,e,i.from,i.to),annotations:Nf.of(t.completion)}):e(s,t.completion,i.from,i.to),!0):!1}const VL=DL(Me,qf);function Ga(s,t="option"){return e=>{let i=e.state.field(Me,!1);if(!i||!i.open||i.open.disabled||Date.now()-i.open.timestamp<e.state.facet(ne).interactionDelay)return!1;let n=1,r;t=="page"&&(r=Zb(e,i.open.tooltip))&&(n=Math.max(2,Math.floor(r.dom.offsetHeight/r.dom.querySelector("li").offsetHeight)-1));let{length:o}=i.open.options,a=i.open.selected>-1?i.open.selected+n*(s?1:-1):s?0:o-1;return a<0?a=t=="page"?0:o-1:a>=o&&(a=t=="page"?o-1:0),e.dispatch({effects:Vf.of(a)}),!0}}const FL=s=>{let t=s.state.field(Me,!1);return s.state.readOnly||!t||!t.open||t.open.selected<0||t.open.disabled||Date.now()-t.open.timestamp<s.state.facet(ne).interactionDelay?!1:qf(s,t.open.options[t.open.selected])},Ic=s=>s.state.field(Me,!1)?(s.dispatch({effects:jl.of(!0)}),!0):!1,qL=s=>{let t=s.state.field(Me,!1);return!t||!t.active.some(e=>e.state!=0)?!1:(s.dispatch({effects:Lo.of(null)}),!0)};class jL{constructor(t,e){this.active=t,this.context=e,this.time=Date.now(),this.updates=[],this.done=void 0}}const UL=50,HL=1e3,KL=Nt.fromClass(class{constructor(s){this.view=s,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let t of s.state.field(Me).active)t.isPending&&this.startQuery(t)}update(s){let t=s.state.field(Me),e=s.state.facet(ne);if(!s.selectionSet&&!s.docChanged&&s.startState.field(Me)==t)return;let i=s.transactions.some(r=>{let o=nw(r,e);return o&8||(r.selection||r.docChanged)&&!(o&3)});for(let r=0;r<this.running.length;r++){let o=this.running[r];if(i||o.context.abortOnDocChange&&s.docChanged||o.updates.length+s.transactions.length>UL&&Date.now()-o.time>HL){for(let a of o.context.abortListeners)try{a()}catch(l){Qe(this.view.state,l)}o.context.abortListeners=null,this.running.splice(r--,1)}else o.updates.push(...s.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),s.transactions.some(r=>r.effects.some(o=>o.is(jl)))&&(this.pendingStart=!0);let n=this.pendingStart?50:e.activateOnTypingDelay;if(this.debounceUpdate=t.active.some(r=>r.isPending&&!this.running.some(o=>o.active.source==r.source))?setTimeout(()=>this.startUpdate(),n):-1,this.composing!=0)for(let r of s.transactions)r.isUserEvent("input.type")?this.composing=2:this.composing==2&&r.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:s}=this.view,t=s.field(Me);for(let e of t.active)e.isPending&&!this.running.some(i=>i.active.source==e.source)&&this.startQuery(e);this.running.length&&t.open&&t.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ne).updateSyncTime))}startQuery(s){let{state:t}=this.view,e=en(t),i=new ew(t,e,s.explicit,this.view),n=new jL(s,i);this.running.push(n),Promise.resolve(s.source(i)).then(r=>{n.context.aborted||(n.done=r||null,this.scheduleAccept())},r=>{this.view.dispatch({effects:Lo.of(null)}),Qe(this.view.state,r)})}scheduleAccept(){this.running.every(s=>s.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ne).updateSyncTime))}accept(){var s;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let t=[],e=this.view.state.facet(ne),i=this.view.state.field(Me);for(let n=0;n<this.running.length;n++){let r=this.running[n];if(r.done===void 0)continue;if(this.running.splice(n--,1),r.done){let a=en(r.updates.length?r.updates[0].startState:this.view.state),l=Math.min(a,r.done.from+(r.active.explicit?0:1)),h=new Hn(r.active.source,r.active.explicit,l,r.done,r.done.from,(s=r.done.to)!==null&&s!==void 0?s:a);for(let c of r.updates)h=h.update(c,e);if(h.hasResult()){t.push(h);continue}}let o=i.active.find(a=>a.source==r.active.source);if(o&&o.isPending)if(r.done==null){let a=new ei(r.active.source,0);for(let l of r.updates)a=a.update(l,e);a.isPending||t.push(a)}else this.startQuery(o)}(t.length||i.open&&i.open.disabled)&&this.view.dispatch({effects:Ff.of(t)})}},{eventHandlers:{blur(s){let t=this.view.state.field(Me,!1);if(t&&t.tooltip&&this.view.state.facet(ne).closeOnBlur){let e=t.open&&Zb(this.view,t.open.tooltip);(!e||!e.dom.contains(s.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:Lo.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:jl.of(!1)}),20),this.composing=0}}}),JL=typeof navigator=="object"&&/Win/.test(navigator.platform),t3=Ps.highest(q.domEventHandlers({keydown(s,t){let e=t.state.field(Me,!1);if(!e||!e.open||e.open.disabled||e.open.selected<0||s.key.length>1||s.ctrlKey&&!(JL&&s.altKey)||s.metaKey)return!1;let i=e.open.options[e.open.selected],n=e.active.find(o=>o.source==i.source),r=i.completion.commitCharacters||n.result.commitCharacters;return r&&r.indexOf(s.key)>-1&&qf(t,i),!1}})),rw=q.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center",cursor:"pointer"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class e3{constructor(t,e,i,n){this.field=t,this.line=e,this.from=i,this.to=n}}class jf{constructor(t,e,i){this.field=t,this.from=e,this.to=i}map(t){let e=t.mapPos(this.from,-1,ue.TrackDel),i=t.mapPos(this.to,1,ue.TrackDel);return e==null||i==null?null:new jf(this.field,e,i)}}class Uf{constructor(t,e){this.lines=t,this.fieldPositions=e}instantiate(t,e){let i=[],n=[e],r=t.doc.lineAt(e),o=/^\s*/.exec(r.text)[0];for(let l of this.lines){if(i.length){let h=o,c=/^\t*/.exec(l)[0].length;for(let u=0;u<c;u++)h+=t.facet(Oh);n.push(e+h.length-c),l=h+l.slice(c)}i.push(l),e+=l.length+1}let a=this.fieldPositions.map(l=>new jf(l.field,n[l.line]+l.from,n[l.line]+l.to));return{text:i,ranges:a}}static parse(t){let e=[],i=[],n=[],r;for(let o of t.split(/\r\n?|\n/)){for(;r=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let a=r[1]?+r[1]:null,l=r[2]||r[3]||"",h=-1,c=l.replace(/\\[{}]/g,u=>u[1]);for(let u=0;u<e.length;u++)(a!=null?e[u].seq==a:c&&e[u].name==c)&&(h=u);if(h<0){let u=0;for(;u<e.length&&(a==null||e[u].seq!=null&&e[u].seq<a);)u++;e.splice(u,0,{seq:a,name:c}),h=u;for(let d of n)d.field>=h&&d.field++}for(let u of n)if(u.line==i.length&&u.from>r.index){let d=r[2]?3+(r[1]||"").length:2;u.from-=d,u.to-=d}n.push(new e3(h,i.length,r.index,r.index+c.length)),o=o.slice(0,r.index)+l+o.slice(r.index+r[0].length)}o=o.replace(/\\([{}])/g,(a,l,h)=>{for(let c of n)c.line==i.length&&c.from>h&&(c.from--,c.to--);return l}),i.push(o)}return new Uf(i,n)}}let i3=et.widget({widget:new class extends Zi{toDOM(){let s=document.createElement("span");return s.className="cm-snippetFieldPosition",s}ignoreEvent(){return!1}}}),s3=et.mark({class:"cm-snippetField"});class yr{constructor(t,e){this.ranges=t,this.active=e,this.deco=et.set(t.map(i=>(i.from==i.to?i3:s3).range(i.from,i.to)),!0)}map(t){let e=[];for(let i of this.ranges){let n=i.map(t);if(!n)return null;e.push(n)}return new yr(e,this.active)}selectionInsideField(t){return t.ranges.every(e=>this.ranges.some(i=>i.field==this.active&&i.from<=e.from&&i.to>=e.to))}}const Ho=rt.define({map(s,t){return s&&s.map(t)}}),n3=rt.define(),Io=pe.define({create(){return null},update(s,t){for(let e of t.effects){if(e.is(Ho))return e.value;if(e.is(n3)&&s)return new yr(s.ranges,e.value)}return s&&t.docChanged&&(s=s.map(t.changes)),s&&t.selection&&!s.selectionInsideField(t.selection)&&(s=null),s},provide:s=>q.decorations.from(s,t=>t?t.deco:et.none)});function Hf(s,t){return D.create(s.filter(e=>e.field==t).map(e=>D.range(e.from,e.to)))}function r3(s){let t=Uf.parse(s);return(e,i,n,r)=>{let{text:o,ranges:a}=t.instantiate(e.state,n),{main:l}=e.state.selection,h={changes:{from:n,to:r==l.from?l.to:r,insert:mt.of(o)},scrollIntoView:!0,annotations:i?[Nf.of(i),Ut.userEvent.of("input.complete")]:void 0};if(a.length&&(h.selection=Hf(a,0)),a.some(c=>c.field>0)){let c=new yr(a,0),u=h.effects=[Ho.of(c)];e.state.field(Io,!1)===void 0&&u.push(rt.appendConfig.of([Io,c3,u3,rw]))}e.dispatch(e.state.update(h))}}function ow(s){return({state:t,dispatch:e})=>{let i=t.field(Io,!1);if(!i||s<0&&i.active==0)return!1;let n=i.active+s,r=s>0&&!i.ranges.some(o=>o.field==n+s);return e(t.update({selection:Hf(i.ranges,n),effects:Ho.of(r?null:new yr(i.ranges,n)),scrollIntoView:!0})),!0}}const o3=({state:s,dispatch:t})=>s.field(Io,!1)?(t(s.update({effects:Ho.of(null)})),!0):!1,a3=ow(1),l3=ow(-1),h3=[{key:"Tab",run:a3,shift:l3},{key:"Escape",run:o3}],TO=j.define({combine(s){return s.length?s[0]:h3}}),c3=Ps.highest(gh.compute([TO],s=>s.facet(TO)));function Ce(s,t){return{...t,apply:r3(s)}}const u3=q.domEventHandlers({mousedown(s,t){let e=t.state.field(Io,!1),i;if(!e||(i=t.posAtCoords({x:s.clientX,y:s.clientY}))==null)return!1;let n=e.ranges.find(r=>r.from<=i&&r.to>=i);return!n||n.field==e.active?!1:(t.dispatch({selection:Hf(e.ranges,n.field),effects:Ho.of(e.ranges.some(r=>r.field>n.field)?new yr(e.ranges,n.field):null),scrollIntoView:!0}),!0)}}),Zo={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},js=rt.define({map(s,t){let e=t.mapPos(s,-1,ue.TrackAfter);return e??void 0}}),Kf=new class extends bs{};Kf.startSide=1;Kf.endSide=-1;const aw=pe.define({create(){return ut.empty},update(s,t){if(s=s.map(t.changes),t.selection){let e=t.state.doc.lineAt(t.selection.main.head);s=s.update({filter:i=>i>=e.from&&i<=e.to})}for(let e of t.effects)e.is(js)&&(s=s.update({add:[Kf.range(e.value,e.value+1)]}));return s}});function d3(){return[p3,aw]}const Zc="()[]{}<>«»»«[]{}";function lw(s){for(let t=0;t<Zc.length;t+=2)if(Zc.charCodeAt(t)==s)return Zc.charAt(t+1);return df(s<128?s:s+1)}function hw(s,t){return s.languageDataAt("closeBrackets",t)[0]||Zo}const f3=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),p3=q.inputHandler.of((s,t,e,i)=>{if((f3?s.composing:s.compositionStarted)||s.state.readOnly)return!1;let n=s.state.selection.main;if(i.length>2||i.length==2&&Ci(Te(i,0))==1||t!=n.from||e!=n.to)return!1;let r=O3(s.state,i);return r?(s.dispatch(r),!0):!1}),g3=({state:s,dispatch:t})=>{if(s.readOnly)return!1;let i=hw(s,s.selection.main.head).brackets||Zo.brackets,n=null,r=s.changeByRange(o=>{if(o.empty){let a=y3(s.doc,o.head);for(let l of i)if(l==a&&_h(s.doc,o.head)==lw(Te(l,0)))return{changes:{from:o.head-l.length,to:o.head+l.length},range:D.cursor(o.head-l.length)}}return{range:n=o}});return n||t(s.update(r,{scrollIntoView:!0,userEvent:"delete.backward"})),!n},m3=[{key:"Backspace",run:g3}];function O3(s,t){let e=hw(s,s.selection.main.head),i=e.brackets||Zo.brackets;for(let n of i){let r=lw(Te(n,0));if(t==n)return r==n?w3(s,n,i.indexOf(n+n+n)>-1,e):x3(s,n,r,e.before||Zo.before);if(t==r&&cw(s,s.selection.main.from))return b3(s,n,r)}return null}function cw(s,t){let e=!1;return s.field(aw).between(0,s.doc.length,i=>{i==t&&(e=!0)}),e}function _h(s,t){let e=s.sliceString(t,t+2);return e.slice(0,Ci(Te(e,0)))}function y3(s,t){let e=s.sliceString(t-2,t);return Ci(Te(e,0))==e.length?e:e.slice(1)}function x3(s,t,e,i){let n=null,r=s.changeByRange(o=>{if(!o.empty)return{changes:[{insert:t,from:o.from},{insert:e,from:o.to}],effects:js.of(o.to+t.length),range:D.range(o.anchor+t.length,o.head+t.length)};let a=_h(s.doc,o.head);return!a||/\s/.test(a)||i.indexOf(a)>-1?{changes:{insert:t+e,from:o.head},effects:js.of(o.head+t.length),range:D.cursor(o.head+t.length)}:{range:n=o}});return n?null:s.update(r,{scrollIntoView:!0,userEvent:"input.type"})}function b3(s,t,e){let i=null,n=s.changeByRange(r=>r.empty&&_h(s.doc,r.head)==e?{changes:{from:r.head,to:r.head+e.length,insert:e},range:D.cursor(r.head+e.length)}:i={range:r});return i?null:s.update(n,{scrollIntoView:!0,userEvent:"input.type"})}function w3(s,t,e,i){let n=i.stringPrefixes||Zo.stringPrefixes,r=null,o=s.changeByRange(a=>{if(!a.empty)return{changes:[{insert:t,from:a.from},{insert:t,from:a.to}],effects:js.of(a.to+t.length),range:D.range(a.anchor+t.length,a.head+t.length)};let l=a.head,h=_h(s.doc,l),c;if(h==t){if(MO(s,l))return{changes:{insert:t+t,from:l},effects:js.of(l+t.length),range:D.cursor(l+t.length)};if(cw(s,l)){let d=e&&s.sliceDoc(l,l+t.length*3)==t+t+t?t+t+t:t;return{changes:{from:l,to:l+d.length,insert:d},range:D.cursor(l+d.length)}}}else{if(e&&s.sliceDoc(l-2*t.length,l)==t+t&&(c=AO(s,l-2*t.length,n))>-1&&MO(s,c))return{changes:{insert:t+t+t+t,from:l},effects:js.of(l+t.length),range:D.cursor(l+t.length)};if(s.charCategorizer(l)(h)!=At.Word&&AO(s,l,n)>-1&&!S3(s,l,t,n))return{changes:{insert:t+t,from:l},effects:js.of(l+t.length),range:D.cursor(l+t.length)}}return{range:r=a}});return r?null:s.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function MO(s,t){let e=te(s).resolveInner(t+1);return e.parent&&e.from==t}function S3(s,t,e,i){let n=te(s).resolveInner(t,-1),r=i.reduce((o,a)=>Math.max(o,a.length),0);for(let o=0;o<5;o++){let a=s.sliceDoc(n.from,Math.min(n.to,n.from+e.length+r)),l=a.indexOf(e);if(!l||l>-1&&i.indexOf(a.slice(0,l))>-1){let c=n.firstChild;for(;c&&c.from==n.from&&c.to-c.from>e.length+l;){if(s.sliceDoc(c.to-e.length,c.to)==e)return!1;c=c.firstChild}return!0}let h=n.to==t&&n.parent;if(!h)break;n=h}return!1}function AO(s,t,e){let i=s.charCategorizer(t);if(i(s.sliceDoc(t-1,t))!=At.Word)return t;for(let n of e){let r=t-n.length;if(s.sliceDoc(r,t)==n&&i(s.sliceDoc(r-1,r))!=At.Word)return r}return-1}function v3(s={}){return[t3,Me,ne.of(s),KL,_3,rw]}const uw=[{key:"Ctrl-Space",run:Ic},{mac:"Alt-`",run:Ic},{mac:"Alt-i",run:Ic},{key:"Escape",run:qL},{key:"ArrowDown",run:Ga(!0)},{key:"ArrowUp",run:Ga(!1)},{key:"PageDown",run:Ga(!0,"page")},{key:"PageUp",run:Ga(!1,"page")},{key:"Enter",run:FL}],_3=Ps.highest(gh.computeN([ne],s=>s.facet(ne).defaultKeymap?[uw]:[]));class QO{constructor(t,e,i){this.from=t,this.to=e,this.diagnostic=i}}class Ys{constructor(t,e,i){this.diagnostics=t,this.panel=e,this.selected=i}static init(t,e,i){let n=i.facet(Do).markerFilter;n&&(t=n(t,i));let r=t.slice().sort((f,p)=>f.from-p.from||f.to-p.to),o=new es,a=[],l=0,h=i.doc.iter(),c=0,u=i.doc.length;for(let f=0;;){let p=f==r.length?null:r[f];if(!p&&!a.length)break;let g,m;if(a.length)g=l,m=a.reduce((b,v)=>Math.min(b,v.to),p&&p.from>g?p.from:1e8);else{if(g=p.from,g>u)break;m=p.to,a.push(p),f++}for(;f<r.length;){let b=r[f];if(b.from==g&&(b.to>b.from||b.to==g))a.push(b),f++,m=Math.min(b.to,m);else{m=Math.min(b.from,m);break}}m=Math.min(m,u);let O=!1;if(a.some(b=>b.from==g&&(b.to==m||m==u))&&(O=g==m,!O&&m-g<10)){let b=g-(c+h.value.length);b>0&&(h.next(b),c=g);for(let v=g;;){if(v>=m){O=!0;break}if(!h.lineBreak&&c+h.value.length>v)break;v=c+h.value.length,c+=h.value.length,h.next()}}let x=Z3(a);if(O)o.add(g,g,et.widget({widget:new R3(x),diagnostics:a.slice()}));else{let b=a.reduce((v,w)=>w.markClass?v+" "+w.markClass:v,"");o.add(g,m,et.mark({class:"cm-lintRange cm-lintRange-"+x+b,diagnostics:a.slice(),inclusiveEnd:a.some(v=>v.to>m)}))}if(l=m,l==u)break;for(let b=0;b<a.length;b++)a[b].to<=l&&a.splice(b--,1)}let d=o.finish();return new Ys(d,e,$s(d))}}function $s(s,t=null,e=0){let i=null;return s.between(e,1e9,(n,r,{spec:o})=>{if(!(t&&o.diagnostics.indexOf(t)<0))if(!i)i=new QO(n,r,t||o.diagnostics[0]);else{if(o.diagnostics.indexOf(i.diagnostic)<0)return!1;i=new QO(i.from,r,i.diagnostic)}}),i}function k3(s,t){let e=t.pos,i=t.end||e,n=s.state.facet(Do).hideOn(s,e,i);if(n!=null)return n;let r=s.startState.doc.lineAt(t.pos);return!!(s.effects.some(o=>o.is(dw))||s.changes.touchesRange(r.from,Math.max(r.to,i)))}function $3(s,t){return s.field(Ge,!1)?t:t.concat(rt.appendConfig.of(D3))}const dw=rt.define(),Jf=rt.define(),fw=rt.define(),Ge=pe.define({create(){return new Ys(et.none,null,null)},update(s,t){if(t.docChanged&&s.diagnostics.size){let e=s.diagnostics.map(t.changes),i=null,n=s.panel;if(s.selected){let r=t.changes.mapPos(s.selected.from,1);i=$s(e,s.selected.diagnostic,r)||$s(e,null,r)}!e.size&&n&&t.state.facet(Do).autoPanel&&(n=null),s=new Ys(e,n,i)}for(let e of t.effects)if(e.is(dw)){let i=t.state.facet(Do).autoPanel?e.value.length?Bo.open:null:s.panel;s=Ys.init(e.value,i,t.state)}else e.is(Jf)?s=new Ys(s.diagnostics,e.value?Bo.open:null,s.selected):e.is(fw)&&(s=new Ys(s.diagnostics,s.panel,e.value));return s},provide:s=>[Mo.from(s,t=>t.panel),q.decorations.from(s,t=>t.diagnostics)]}),C3=et.mark({class:"cm-lintRange cm-lintRange-active"});function P3(s,t,e){let{diagnostics:i}=s.state.field(Ge),n,r=-1,o=-1;i.between(t-(e<0?1:0),t+(e>0?1:0),(l,h,{spec:c})=>{if(t>=l&&t<=h&&(l==h||(t>l||e>0)&&(t<h||e<0)))return n=c.diagnostics,r=l,o=h,!1});let a=s.state.facet(Do).tooltipFilter;return n&&a&&(n=a(n,s.state)),n?{pos:r,end:o,above:s.state.doc.lineAt(r).to<o,create(){return{dom:T3(s,n)}}}:null}function T3(s,t){return vt("ul",{class:"cm-tooltip-lint"},t.map(e=>gw(s,e,!1)))}const M3=s=>{let t=s.state.field(Ge,!1);(!t||!t.panel)&&s.dispatch({effects:$3(s.state,[Jf.of(!0)])});let e=Mf(s,Bo.open);return e&&e.dom.querySelector(".cm-panel-lint ul").focus(),!0},RO=s=>{let t=s.state.field(Ge,!1);return!t||!t.panel?!1:(s.dispatch({effects:Jf.of(!1)}),!0)},A3=s=>{let t=s.state.field(Ge,!1);if(!t)return!1;let e=s.state.selection.main,i=$s(t.diagnostics,null,e.to+1);return!i&&(i=$s(t.diagnostics,null,0),!i||i.from==e.from&&i.to==e.to)?!1:(s.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0}),pR(s,i.from,1,{tooltip:mw,until:n=>n.docChanged||n.newSelection.main.head<i.from||n.newSelection.main.head>i.to}),!0)},Q3=[{key:"Mod-Shift-m",run:M3,preventDefault:!0},{key:"F8",run:A3}],Do=j.define({combine(s){return{sources:s.map(t=>t.source).filter(t=>t!=null),...Ii(s.map(t=>t.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:EO,tooltipFilter:EO,needsRefresh:(t,e)=>t?e?i=>t(i)||e(i):t:e,hideOn:(t,e)=>t?e?(i,n,r)=>t(i,n,r)||e(i,n,r):t:e,autoPanel:(t,e)=>t||e})}}});function EO(s,t){return s?t?(e,i)=>t(s(e,i),i):s:t}function pw(s){let t=[];if(s)t:for(let{name:e}of s){for(let i=0;i<e.length;i++){let n=e[i];if(/[a-zA-Z]/.test(n)&&!t.some(r=>r.toLowerCase()==n.toLowerCase())){t.push(n);continue t}}t.push("")}return t}function gw(s,t,e){var i;let n=e?pw(t.actions):[];return vt("li",{class:"cm-diagnostic cm-diagnostic-"+t.severity},vt("span",{class:"cm-diagnosticText"},t.renderMessage?t.renderMessage(s):t.message),(i=t.actions)===null||i===void 0?void 0:i.map((r,o)=>{let a=!1,l=f=>{if(f.preventDefault(),a)return;a=!0;let p=$s(s.state.field(Ge).diagnostics,t);p&&r.apply(s,p.from,p.to)},{name:h}=r,c=n[o]?h.indexOf(n[o]):-1,u=c<0?h:[h.slice(0,c),vt("u",h.slice(c,c+1)),h.slice(c+1)],d=r.markClass?" "+r.markClass:"";return vt("button",{type:"button",class:"cm-diagnosticAction"+d,onclick:l,onmousedown:l,"aria-label":` Action: ${h}${c<0?"":` (access key "${n[o]})"`}.`},u)}),t.source&&vt("div",{class:"cm-diagnosticSource"},t.source))}class R3 extends Zi{constructor(t){super(),this.sev=t}eq(t){return t.sev==this.sev}toDOM(){return vt("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class LO{constructor(t,e){this.diagnostic=e,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=gw(t,e,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class Bo{constructor(t){this.view=t,this.items=[];let e=n=>{if(!(n.ctrlKey||n.altKey||n.metaKey)){if(n.keyCode==27)RO(this.view),this.view.focus();else if(n.keyCode==38||n.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(n.keyCode==40||n.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(n.keyCode==36)this.moveSelection(0);else if(n.keyCode==35)this.moveSelection(this.items.length-1);else if(n.keyCode==13)this.view.focus();else if(n.keyCode>=65&&n.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:r}=this.items[this.selectedIndex],o=pw(r.actions);for(let a=0;a<o.length;a++)if(o[a].toUpperCase().charCodeAt(0)==n.keyCode){let l=$s(this.view.state.field(Ge).diagnostics,r);l&&r.actions[a].apply(t,l.from,l.to)}}else return;n.preventDefault()}},i=n=>{for(let r=0;r<this.items.length;r++)this.items[r].dom.contains(n.target)&&this.moveSelection(r)};this.list=vt("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:e,onclick:i}),this.dom=vt("div",{class:"cm-panel-lint"},this.list,vt("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>RO(this.view)},"×")),this.update()}get selectedIndex(){let t=this.view.state.field(Ge).selected;if(!t)return-1;for(let e=0;e<this.items.length;e++)if(this.items[e].diagnostic==t.diagnostic)return e;return-1}update(){let{diagnostics:t,selected:e}=this.view.state.field(Ge),i=0,n=!1,r=null,o=new Set;for(t.between(0,this.view.state.doc.length,(a,l,{spec:h})=>{for(let c of h.diagnostics){if(o.has(c))continue;o.add(c);let u=-1,d;for(let f=i;f<this.items.length;f++)if(this.items[f].diagnostic==c){u=f;break}u<0?(d=new LO(this.view,c),this.items.splice(i,0,d),n=!0):(d=this.items[u],u>i&&(this.items.splice(i,u-i),n=!0)),e&&d.diagnostic==e.diagnostic?d.dom.hasAttribute("aria-selected")||(d.dom.setAttribute("aria-selected","true"),r=d):d.dom.hasAttribute("aria-selected")&&d.dom.removeAttribute("aria-selected"),i++}});i<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)n=!0,this.items.pop();this.items.length==0&&(this.items.push(new LO(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),n=!0),r?(this.list.setAttribute("aria-activedescendant",r.id),this.view.requestMeasure({key:this,read:()=>({sel:r.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:a,panel:l})=>{let h=l.height/this.list.offsetHeight;a.top<l.top?this.list.scrollTop-=(l.top-a.top)/h:a.bottom>l.bottom&&(this.list.scrollTop+=(a.bottom-l.bottom)/h)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),n&&this.sync()}sync(){let t=this.list.firstChild;function e(){let i=t;t=i.nextSibling,i.remove()}for(let i of this.items)if(i.dom.parentNode==this.list){for(;t!=i.dom;)e();t=i.dom.nextSibling}else this.list.insertBefore(i.dom,t);for(;t;)e()}moveSelection(t){if(this.selectedIndex<0)return;let e=this.view.state.field(Ge),i=$s(e.diagnostics,this.items[t].diagnostic);i&&this.view.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0,effects:fw.of(i)})}static open(t){return new Bo(t)}}function E3(s,t='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${t}>${encodeURIComponent(s)}</svg>')`}function Ya(s){return E3(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${s}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}const L3=q.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:Ya("#f11")},".cm-lintRange-warning":{backgroundImage:Ya("orange")},".cm-lintRange-info":{backgroundImage:Ya("#999")},".cm-lintRange-hint":{backgroundImage:Ya("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}},"&dark .cm-lintRange-active":{backgroundColor:"#86714a80"},"&dark .cm-panel.cm-panel-lint ul":{"& [aria-selected]":{backgroundColor:"#2e343e"}}});function I3(s){return s=="error"?4:s=="warning"?3:s=="info"?2:1}function Z3(s){let t="hint",e=1;for(let i of s){let n=I3(i.severity);n>e&&(e=n,t=i.severity)}return t}const mw=fR(P3,{hideOn:k3}),D3=[Ge,q.decorations.compute([Ge],s=>{let{selected:t,panel:e}=s.field(Ge);return!t||!e||t.from==t.to?et.none:et.set([C3.range(t.from,t.to)])}),mw,L3],B3=[CR(),MR(),YQ(),j5(),S5(),RQ(),DQ(),yt.allowMultipleSelections.of(!0),l5(),u1($5,{fallback:!0}),R5(),d3(),v3(),iR(),rR(),UQ(),nL(),gh.of([...m3,...JE,...kL,...nE,...y5,...uw,...Q3])];var IO={};class Hl{constructor(t,e,i,n,r,o,a,l,h,c=0,u){this.p=t,this.stack=e,this.state=i,this.reducePos=n,this.pos=r,this.score=o,this.buffer=a,this.bufferBase=l,this.curContext=h,this.lookAhead=c,this.parent=u}toString(){return`[${this.stack.filter((t,e)=>e%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(t,e,i=0){let n=t.parser.context;return new Hl(t,[],e,i,i,0,[],0,n?new ZO(n,n.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(t,e){this.stack.push(this.state,e,this.bufferBase+this.buffer.length),this.state=t}reduce(t){var e;let i=t>>19,n=t&65535,{parser:r}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),a=r.dynamicPrecedence(n);if(a&&(this.score+=a),i==0){n<r.minRepeatTerm&&this.reducePos<this.pos&&(this.reducePos=this.pos),this.pushState(r.getGoto(this.state,n,!0),this.reducePos),n<r.minRepeatTerm&&this.storeNode(n,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(n,this.reducePos);return}let l=this.stack.length-(i-1)*3-(t&262144?6:0),h=l?this.stack[l-2]:this.p.ranges[0].from;n<r.minRepeatTerm&&h==this.reducePos&&this.reducePos<this.pos&&(this.reducePos=this.pos);let c=this.reducePos-h;c>=2e3&&!(!((e=this.p.parser.nodeSet.types[n])===null||e===void 0)&&e.isAnonymous)&&(h==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=c):this.p.lastBigReductionSize<c&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=h,this.p.lastBigReductionSize=c));let u=l?this.stack[l-1]:0,d=this.bufferBase+this.buffer.length-u;if(n<r.minRepeatTerm||t&131072){let f=r.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(n,h,f,d+4,!0)}if(t&262144)this.state=this.stack[l];else{let f=this.stack[l-3];this.state=r.getGoto(f,n,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(n,h)}storeNode(t,e,i,n=4,r=!1){if(t==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this.buffer.length;if(o>0&&this.buffer[o-4]==0&&this.buffer[o-1]>-1){if(e==i)return;if(this.buffer[o-2]>=e){this.buffer[o-2]=i;return}}}if(!r||this.pos==i)this.buffer.push(t,e,i,n);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let a=!1;for(let l=o;l>0&&this.buffer[l-2]>i;l-=4)if(this.buffer[l-1]>=0){a=!0;break}if(a)for(;o>0&&this.buffer[o-2]>i;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,n>4&&(n-=4)}this.buffer[o]=t,this.buffer[o+1]=e,this.buffer[o+2]=i,this.buffer[o+3]=n}}shift(t,e,i,n){if(t&131072)this.pushState(t&65535,this.pos);else if((t&262144)==0){let r=t,{parser:o}=this.p;this.pos=n;let a=o.stateFlag(r,1);!a&&(n>i||e<=o.maxNode)&&(this.reducePos=n),this.pushState(r,a?i:Math.min(i,this.reducePos)),this.shiftContext(e,i),e<=o.maxNode&&this.buffer.push(e,i,n,4)}else this.pos=n,this.shiftContext(e,i),e<=this.p.parser.maxNode&&this.buffer.push(e,i,n,4)}apply(t,e,i,n){t&65536?this.reduce(t):this.shift(t,e,i,n)}useNode(t,e){let i=this.p.reused.length-1;(i<0||this.p.reused[i]!=t)&&(this.p.reused.push(t),i++);let n=this.pos;this.reducePos=this.pos=n+t.length,this.pushState(e,n),this.buffer.push(i,n,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,t,this,this.p.stream.reset(this.pos-t.length)))}split(){let t=this,e=t.buffer.length;for(e&&t.buffer[e-4]==0&&(e-=4);e>0&&t.buffer[e-2]>t.reducePos;)e-=4;let i=t.buffer.slice(e),n=t.bufferBase+e;for(;t&&n==t.bufferBase;)t=t.parent;return new Hl(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,i,n,this.curContext,this.lookAhead,t)}recoverByDelete(t,e){let i=t<=this.p.parser.maxNode;i&&this.storeNode(t,this.pos,e,4),this.storeNode(0,this.pos,e,i?8:4),this.pos=this.reducePos=e,this.score-=190}canShift(t){for(let e=new X3(this);;){let i=this.p.parser.stateSlot(e.state,4)||this.p.parser.hasAction(e.state,t);if(i==0)return!1;if((i&65536)==0)return!0;e.reduce(i)}}recoverByInsert(t){if(this.stack.length>=300)return[];let e=this.p.parser.nextStates(this.state);if(e.length>8||this.stack.length>=120){let n=[];for(let r=0,o;r<e.length;r+=2)(o=e[r+1])!=this.state&&this.p.parser.hasAction(o,t)&&n.push(e[r],o);if(this.stack.length<120)for(let r=0;n.length<8&&r<e.length;r+=2){let o=e[r+1];n.some((a,l)=>l&1&&a==o)||n.push(e[r],o)}e=n}let i=[];for(let n=0;n<e.length&&i.length<4;n+=2){let r=e[n+1];if(r==this.state)continue;let o=this.split();o.pushState(r,this.pos),o.storeNode(0,o.pos,o.pos,4,!0),o.shiftContext(e[n],this.pos),o.reducePos=this.pos,o.score-=200,i.push(o)}return i}forceReduce(){let{parser:t}=this.p,e=t.stateSlot(this.state,5);if((e&65536)==0)return!1;if(!t.validAction(this.state,e)){let i=e>>19,n=e&65535,r=this.stack.length-i*3;if(r<0||t.getGoto(this.stack[r],n,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;e=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(e),!0}findForcedReduction(){let{parser:t}=this.p,e=[],i=(n,r)=>{if(!e.includes(n))return e.push(n),t.allActions(n,o=>{if(!(o&393216))if(o&65536){let a=(o>>19)-r;if(a>1){let l=o&65535,h=this.stack.length-a*3;if(h>=0&&t.getGoto(this.stack[h],l,!1)>=0)return a<<19|65536|l}}else{let a=i(o,r+1);if(a!=null)return a}})};return i(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:t}=this.p;return t.data[t.stateSlot(this.state,1)]==65535&&!t.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(t){if(this.state!=t.state||this.stack.length!=t.stack.length)return!1;for(let e=0;e<this.stack.length;e+=3)if(this.stack[e]!=t.stack[e])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(t){return this.p.parser.dialect.flags[t]}shiftContext(t,e){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,t,this,this.p.stream.reset(e)))}reduceContext(t,e){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,t,this,this.p.stream.reset(e)))}emitContext(){let t=this.buffer.length-1;(t<0||this.buffer[t]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let t=this.buffer.length-1;(t<0||this.buffer[t]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(t){if(t!=this.curContext.context){let e=new ZO(this.curContext.tracker,t);e.hash!=this.curContext.hash&&this.emitContext(),this.curContext=e}}setLookAhead(t){return t<=this.lookAhead?!1:(this.emitLookAhead(),this.lookAhead=t,!0)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class ZO{constructor(t,e){this.tracker=t,this.context=e,this.hash=t.strict?t.hash(e):0}}class X3{constructor(t){this.start=t,this.state=t.state,this.stack=t.stack,this.base=this.stack.length}reduce(t){let e=t&65535,i=t>>19;i==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(i-1)*3;let n=this.start.p.parser.getGoto(this.stack[this.base-3],e,!0);this.state=n}}class Kl{constructor(t,e,i){this.stack=t,this.pos=e,this.index=i,this.buffer=t.buffer,this.index==0&&this.maybeNext()}static create(t,e=t.bufferBase+t.buffer.length){return new Kl(t,e,e-t.bufferBase)}maybeNext(){let t=this.stack.parent;t!=null&&(this.index=this.stack.bufferBase-t.bufferBase,this.stack=t,this.buffer=t.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new Kl(this.stack,this.pos,this.index)}}function Fr(s,t=Uint16Array){if(typeof s!="string")return s;let e=null;for(let i=0,n=0;i<s.length;){let r=0;for(;;){let o=s.charCodeAt(i++),a=!1;if(o==126){r=65535;break}o>=92&&o--,o>=34&&o--;let l=o-32;if(l>=46&&(l-=46,a=!0),r+=l,a)break;r*=46}e?e[n++]=r:e=new t(r)}return e}class al{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const DO=new al;class z3{constructor(t,e){this.input=t,this.ranges=e,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=DO,this.rangeIndex=0,this.pos=this.chunkPos=e[0].from,this.range=e[0],this.end=e[e.length-1].to,this.readNext()}resolveOffset(t,e){let i=this.range,n=this.rangeIndex,r=this.pos+t;for(;r<i.from;){if(!n)return null;let o=this.ranges[--n];r-=i.from-o.to,i=o}for(;e<0?r>i.to:r>=i.to;){if(n==this.ranges.length-1)return null;let o=this.ranges[++n];r+=o.from-i.to,i=o}return r}clipPos(t){if(t>=this.range.from&&t<this.range.to)return t;for(let e of this.ranges)if(e.to>t)return Math.max(t,e.from);return this.end}peek(t){let e=this.chunkOff+t,i,n;if(e>=0&&e<this.chunk.length)i=this.pos+t,n=this.chunk.charCodeAt(e);else{let r=this.resolveOffset(t,1);if(r==null)return-1;if(i=r,i>=this.chunk2Pos&&i<this.chunk2Pos+this.chunk2.length)n=this.chunk2.charCodeAt(i-this.chunk2Pos);else{let o=this.rangeIndex,a=this.range;for(;a.to<=i;)a=this.ranges[++o];this.chunk2=this.input.chunk(this.chunk2Pos=i),i+this.chunk2.length>a.to&&(this.chunk2=this.chunk2.slice(0,a.to-i)),n=this.chunk2.charCodeAt(0)}}return i>=this.token.lookAhead&&(this.token.lookAhead=i+1),n}acceptToken(t,e=0){let i=e?this.resolveOffset(e,-1):this.pos;if(i==null||i<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=t,this.token.end=i}acceptTokenTo(t,e){this.token.value=t,this.token.end=e}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:t,chunkPos:e}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=t,this.chunk2Pos=e,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let t=this.input.chunk(this.pos),e=this.pos+t.length;this.chunk=e>this.range.to?t.slice(0,this.range.to-this.pos):t,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(t=1){for(this.chunkOff+=t;this.pos+t>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();t-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=t,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(t,e){if(e?(this.token=e,e.start=t,e.lookAhead=t+1,e.value=e.extended=-1):this.token=DO,this.pos!=t){if(this.pos=t,t==this.end)return this.setDone(),this;for(;t<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;t>=this.range.to;)this.range=this.ranges[++this.rangeIndex];t>=this.chunkPos&&t<this.chunkPos+this.chunk.length?this.chunkOff=t-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(t,e){if(t>=this.chunkPos&&e<=this.chunkPos+this.chunk.length)return this.chunk.slice(t-this.chunkPos,e-this.chunkPos);if(t>=this.chunk2Pos&&e<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(t-this.chunk2Pos,e-this.chunk2Pos);if(t>=this.range.from&&e<=this.range.to)return this.input.read(t,e);let i="";for(let n of this.ranges){if(n.from>=e)break;n.to>t&&(i+=this.input.read(Math.max(n.from,t),Math.min(n.to,e)))}return i}}class Kn{constructor(t,e){this.data=t,this.id=e}token(t,e){let{parser:i}=e.p;Ow(this.data,t,e,this.id,i.data,i.tokenPrecTable)}}Kn.prototype.contextual=Kn.prototype.fallback=Kn.prototype.extend=!1;class Rd{constructor(t,e,i){this.precTable=e,this.elseToken=i,this.data=typeof t=="string"?Fr(t):t}token(t,e){let i=t.pos,n=0;for(;;){let r=t.next<0,o=t.resolveOffset(1,1);if(Ow(this.data,t,e,0,this.data,this.precTable),t.token.value>-1)break;if(this.elseToken==null)return;if(r||n++,o==null)break;t.reset(o,t.token)}n&&(t.reset(i,t.token),t.acceptToken(this.elseToken,n))}}Rd.prototype.contextual=Kn.prototype.fallback=Kn.prototype.extend=!1;class Ko{constructor(t,e={}){this.token=t,this.contextual=!!e.contextual,this.fallback=!!e.fallback,this.extend=!!e.extend}}function Ow(s,t,e,i,n,r){let o=0,a=1<<i,{dialect:l}=e.p.parser;t:for(;(a&s[o])!=0;){let h=s[o+1];for(let f=o+3;f<h;f+=2)if((s[f+1]&a)>0){let p=s[f];if(l.allows(p)&&(t.token.value==-1||t.token.value==p||W3(p,t.token.value,n,r))){t.acceptToken(p);break}}let c=t.next,u=0,d=s[o+2];if(t.next<0&&d>u&&s[h+d*3-3]==65535){o=s[h+d*3-1];continue t}for(;u<d;){let f=u+d>>1,p=h+f+(f<<1),g=s[p],m=s[p+1]||65536;if(c<g)d=f;else if(c>=m)u=f+1;else{o=s[p+2],t.advance();continue t}}break}}function BO(s,t,e){for(let i=t,n;(n=s[i])!=65535;i++)if(n==e)return i-t;return-1}function W3(s,t,e,i){let n=BO(e,i,t);return n<0||BO(e,i,s)<n}const Xe=typeof process<"u"&&IO&&/\bparse\b/.test(IO.LOG);let Dc=null;function XO(s,t,e){let i=s.cursor(Rt.IncludeAnonymous);for(i.moveTo(t);;)if(!(e<0?i.childBefore(t):i.childAfter(t)))for(;;){if((e<0?i.to<t:i.from>t)&&!i.type.isError)return e<0?Math.max(0,Math.min(i.to-1,t-25)):Math.min(s.length,Math.max(i.from+1,t+25));if(e<0?i.prevSibling():i.nextSibling())break;if(!i.parent())return e<0?0:s.length}}class G3{constructor(t,e){this.fragments=t,this.nodeSet=e,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let t=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(t){for(this.safeFrom=t.openStart?XO(t.tree,t.from+t.offset,1)-t.offset:t.from,this.safeTo=t.openEnd?XO(t.tree,t.to+t.offset,-1)-t.offset:t.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(t.tree),this.start.push(-t.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(t){if(t<this.nextStart)return null;for(;this.fragment&&this.safeTo<=t;)this.nextFragment();if(!this.fragment)return null;for(;;){let e=this.trees.length-1;if(e<0)return this.nextFragment(),null;let i=this.trees[e],n=this.index[e];if(n==i.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let r=i.children[n],o=this.start[e]+i.positions[n];if(o>t)return this.nextStart=o,null;if(r instanceof Yt){if(o==t){if(o<this.safeFrom)return null;let a=o+r.length;if(a<=this.safeTo){let l=r.prop(ct.lookAhead);if(!l||a+l<this.fragment.to)return r}}this.index[e]++,o+r.length>=Math.max(this.safeFrom,t)&&(this.trees.push(r),this.start.push(o),this.index.push(0))}else this.index[e]++,this.nextStart=o+r.length}}}class Y3{constructor(t,e){this.stream=e,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=t.tokenizers.map(i=>new al)}getActions(t){let e=0,i=null,{parser:n}=t.p,{tokenizers:r}=n,o=n.stateSlot(t.state,3),a=t.curContext?t.curContext.hash:0,l=0;for(let h=0;h<r.length;h++){if((1<<h&o)==0)continue;let c=r[h],u=this.tokens[h];if(!(i&&!c.fallback)&&((c.contextual||u.start!=t.pos||u.mask!=o||u.context!=a)&&(this.updateCachedToken(u,c,t),u.mask=o,u.context=a),u.lookAhead>u.end+25&&(l=Math.max(u.lookAhead,l)),u.value!=0)){let d=e;if(u.extended>-1&&(e=this.addActions(t,u.extended,u.end,e)),e=this.addActions(t,u.value,u.end,e),!c.extend&&(i=u,e>d))break}}for(;this.actions.length>e;)this.actions.pop();return l&&t.setLookAhead(l),!i&&t.pos==this.stream.end&&(i=new al,i.value=t.p.parser.eofTerm,i.start=i.end=t.pos,e=this.addActions(t,i.value,i.end,e)),this.mainToken=i,this.actions}getMainToken(t){if(this.mainToken)return this.mainToken;let e=new al,{pos:i,p:n}=t;return e.start=i,e.end=Math.min(i+1,n.stream.end),e.value=i==n.stream.end?n.parser.eofTerm:0,e}updateCachedToken(t,e,i){let n=this.stream.clipPos(i.pos);if(e.token(this.stream.reset(n,t),i),t.value>-1){let{parser:r}=i.p;for(let o=0;o<r.specialized.length;o++)if(r.specialized[o]==t.value){let a=r.specializers[o](this.stream.read(t.start,t.end),i);if(a>=0&&i.p.parser.dialect.allows(a>>1)){(a&1)==0?t.value=a>>1:t.extended=a>>1;break}}}else t.value=0,t.end=this.stream.clipPos(n+1)}putAction(t,e,i,n){for(let r=0;r<n;r+=3)if(this.actions[r]==t)return n;return this.actions[n++]=t,this.actions[n++]=e,this.actions[n++]=i,n}addActions(t,e,i,n){let{state:r}=t,{parser:o}=t.p,{data:a}=o;for(let l=0;l<2;l++)for(let h=o.stateSlot(r,l?2:1);;h+=3){if(a[h]==65535)if(a[h+1]==1)h=Yi(a,h+2);else{n==0&&a[h+1]==2&&(n=this.putAction(Yi(a,h+2),e,i,n));break}a[h]==e&&(n=this.putAction(Yi(a,h+1),e,i,n))}return n}}class N3{constructor(t,e,i,n){this.parser=t,this.input=e,this.ranges=n,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new z3(e,n),this.tokens=new Y3(t,this.stream),this.topTerm=t.top[1];let{from:r}=n[0];this.stacks=[Hl.start(this,t.top[0],r)],this.fragments=i.length&&this.stream.end-r>t.bufferLength*4?new G3(i,t.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let t=this.stacks,e=this.minStackPos,i=this.stacks=[],n,r;if(this.bigReductionCount>300&&t.length==1){let[o]=t;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;o<t.length;o++){let a=t[o];for(;;){if(this.tokens.mainToken=null,a.pos>e)i.push(a);else{if(this.advanceStack(a,i,t))continue;{n||(n=[],r=[]),n.push(a);let l=this.tokens.getMainToken(a);r.push(l.value,l.end)}}break}}if(!i.length){let o=n&&q3(n);if(o)return Xe&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Xe&&n&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+e);this.recovering||(this.recovering=5)}if(this.recovering&&n){let o=this.stoppedAt!=null&&n[0].pos>this.stoppedAt?n[0]:this.runRecovery(n,r,i);if(o)return Xe&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(i.length>o)for(i.sort((a,l)=>l.score-a.score);i.length>o;)i.pop();i.some(a=>a.reducePos>e)&&this.recovering--}else if(i.length>1){t:for(let o=0;o<i.length-1;o++){let a=i[o];for(let l=o+1;l<i.length;l++){let h=i[l];if(a.sameState(h)||a.buffer.length>500&&h.buffer.length>500)if((a.score-h.score||a.buffer.length-h.buffer.length)>0)i.splice(l--,1);else{i.splice(o--,1);continue t}}}i.length>12&&(i.sort((o,a)=>a.score-o.score),i.splice(12,i.length-12))}this.minStackPos=i[0].pos;for(let o=1;o<i.length;o++)i[o].pos<this.minStackPos&&(this.minStackPos=i[o].pos);return null}stopAt(t){if(this.stoppedAt!=null&&this.stoppedAt<t)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=t}advanceStack(t,e,i){let n=t.pos,{parser:r}=this,o=Xe?this.stackID(t)+" -> ":"";if(this.stoppedAt!=null&&n>this.stoppedAt)return t.forceReduce()?t:null;if(this.fragments){let h=t.curContext&&t.curContext.tracker.strict,c=h?t.curContext.hash:0;for(let u=this.fragments.nodeAt(n);u;){let d=this.parser.nodeSet.types[u.type.id]==u.type?r.getGoto(t.state,u.type.id):-1;if(d>-1&&u.length&&(!h||(u.prop(ct.contextHash)||0)==c))return t.useNode(u,d),Xe&&console.log(o+this.stackID(t)+` (via reuse of ${r.getName(u.type.id)})`),!0;if(!(u instanceof Yt)||u.children.length==0||u.positions[0]>0)break;let f=u.children[0];if(f instanceof Yt&&u.positions[0]==0)u=f;else break}}let a=r.stateSlot(t.state,4);if(a>0)return t.reduce(a),Xe&&console.log(o+this.stackID(t)+` (via always-reduce ${r.getName(a&65535)})`),!0;if(t.stack.length>=8400)for(;t.stack.length>6e3&&t.forceReduce(););let l=this.tokens.getActions(t);for(let h=0;h<l.length;){let c=l[h++],u=l[h++],d=l[h++],f=h==l.length||!i,p=f?t:t.split(),g=this.tokens.mainToken;if(p.apply(c,u,g?g.start:p.pos,d),Xe&&console.log(o+this.stackID(p)+` (via ${(c&65536)==0?"shift":`reduce of ${r.getName(c&65535)}`} for ${r.getName(u)} @ ${n}${p==t?"":", split"})`),f)return!0;p.pos>n?e.push(p):i.push(p)}return!1}advanceFully(t,e){let i=t.pos;for(;;){if(!this.advanceStack(t,null,null))return!1;if(t.pos>i)return zO(t,e),!0}}runRecovery(t,e,i){let n=null,r=!1;for(let o=0;o<t.length;o++){let a=t[o],l=e[o<<1],h=e[(o<<1)+1],c=Xe?this.stackID(a)+" -> ":"";if(a.deadEnd&&(r||(r=!0,a.restart(),Xe&&console.log(c+this.stackID(a)+" (restarted)"),this.advanceFully(a,i))))continue;let u=a.split(),d=c;for(let f=0;f<10&&u.forceReduce()&&(Xe&&console.log(d+this.stackID(u)+" (via force-reduce)"),!this.advanceFully(u,i));f++)Xe&&(d=this.stackID(u)+" -> ");for(let f of a.recoverByInsert(l))Xe&&console.log(c+this.stackID(f)+" (via recover-insert)"),this.advanceFully(f,i);this.stream.end>a.pos?(h==a.pos&&(h++,l=0),a.recoverByDelete(l,h),Xe&&console.log(c+this.stackID(a)+` (via recover-delete ${this.parser.getName(l)})`),zO(a,i)):(!n||n.score<u.score)&&(n=u)}return n}stackToTree(t){return t.close(),Yt.build({buffer:Kl.create(t),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:t.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(t){let e=(Dc||(Dc=new WeakMap)).get(t);return e||Dc.set(t,e=String.fromCodePoint(this.nextStackID++)),e+t}}function zO(s,t){for(let e=0;e<t.length;e++){let i=t[e];if(i.pos==s.pos&&i.sameState(s)){t[e].score<s.score&&(t[e]=s);return}}t.push(s)}class V3{constructor(t,e,i){this.source=t,this.flags=e,this.disabled=i}allows(t){return!this.disabled||this.disabled[t]==0}}const Bc=s=>s;class F3{constructor(t){this.start=t.start,this.shift=t.shift||Bc,this.reduce=t.reduce||Bc,this.reuse=t.reuse||Bc,this.hash=t.hash||(()=>0),this.strict=t.strict!==!1}}class Jl extends Fb{constructor(t){if(super(),this.wrappers=[],t.version!=14)throw new RangeError(`Parser version (${t.version}) doesn't match runtime version (14)`);let e=t.nodeNames.split(" ");this.minRepeatTerm=e.length;for(let a=0;a<t.repeatNodeCount;a++)e.push("");let i=Object.keys(t.topRules).map(a=>t.topRules[a][1]),n=[];for(let a=0;a<e.length;a++)n.push([]);function r(a,l,h){n[a].push([l,l.deserialize(String(h))])}if(t.nodeProps)for(let a of t.nodeProps){let l=a[0];typeof l=="string"&&(l=ct[l]);for(let h=1;h<a.length;){let c=a[h++];if(c>=0)r(c,l,a[h++]);else{let u=a[h+-c];for(let d=-c;d>0;d--)r(a[h++],l,u);h++}}}this.nodeSet=new Af(e.map((a,l)=>Ze.define({name:l>=this.minRepeatTerm?void 0:a,id:l,props:n[l],top:i.indexOf(l)>-1,error:l==0,skipped:t.skippedNodes&&t.skippedNodes.indexOf(l)>-1}))),t.propSources&&(this.nodeSet=this.nodeSet.extend(...t.propSources)),this.strict=!1,this.bufferLength=Gb;let o=Fr(t.tokenData);this.context=t.context,this.specializerSpecs=t.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let a=0;a<this.specializerSpecs.length;a++)this.specialized[a]=this.specializerSpecs[a].term;this.specializers=this.specializerSpecs.map(WO),this.states=Fr(t.states,Uint32Array),this.data=Fr(t.stateData),this.goto=Fr(t.goto),this.maxTerm=t.maxTerm,this.tokenizers=t.tokenizers.map(a=>typeof a=="number"?new Kn(o,a):a),this.topRules=t.topRules,this.dialects=t.dialects||{},this.dynamicPrecedences=t.dynamicPrecedences||null,this.tokenPrecTable=t.tokenPrec,this.termNames=t.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(t,e,i){let n=new N3(this,t,e,i);for(let r of this.wrappers)n=r(n,t,e,i);return n}getGoto(t,e,i=!1){let n=this.goto;if(e>=n[0])return-1;for(let r=n[e+1];;){let o=n[r++],a=o&1,l=n[r++];if(a&&i)return l;for(let h=r+(o>>1);r<h;r++)if(n[r]==t)return l;if(a)return-1}}hasAction(t,e){let i=this.data;for(let n=0;n<2;n++)for(let r=this.stateSlot(t,n?2:1),o;;r+=3){if((o=i[r])==65535)if(i[r+1]==1)o=i[r=Yi(i,r+2)];else{if(i[r+1]==2)return Yi(i,r+2);break}if(o==e||o==0)return Yi(i,r+1)}return 0}stateSlot(t,e){return this.states[t*6+e]}stateFlag(t,e){return(this.stateSlot(t,0)&e)>0}validAction(t,e){return!!this.allActions(t,i=>i==e?!0:null)}allActions(t,e){let i=this.stateSlot(t,4),n=i?e(i):void 0;for(let r=this.stateSlot(t,1);n==null;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=Yi(this.data,r+2);else break;n=e(Yi(this.data,r+1))}return n}nextStates(t){let e=[];for(let i=this.stateSlot(t,1);;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=Yi(this.data,i+2);else break;if((this.data[i+2]&1)==0){let n=this.data[i+1];e.some((r,o)=>o&1&&r==n)||e.push(this.data[i],n)}}return e}configure(t){let e=Object.assign(Object.create(Jl.prototype),this);if(t.props&&(e.nodeSet=this.nodeSet.extend(...t.props)),t.top){let i=this.topRules[t.top];if(!i)throw new RangeError(`Invalid top rule name ${t.top}`);e.top=i}return t.tokenizers&&(e.tokenizers=this.tokenizers.map(i=>{let n=t.tokenizers.find(r=>r.from==i);return n?n.to:i})),t.specializers&&(e.specializers=this.specializers.slice(),e.specializerSpecs=this.specializerSpecs.map((i,n)=>{let r=t.specializers.find(a=>a.from==i.external);if(!r)return i;let o=Object.assign(Object.assign({},i),{external:r.to});return e.specializers[n]=WO(o),o})),t.contextTracker&&(e.context=t.contextTracker),t.dialect&&(e.dialect=this.parseDialect(t.dialect)),t.strict!=null&&(e.strict=t.strict),t.wrap&&(e.wrappers=e.wrappers.concat(t.wrap)),t.bufferLength!=null&&(e.bufferLength=t.bufferLength),e}hasWrappers(){return this.wrappers.length>0}getName(t){return this.termNames?this.termNames[t]:String(t<=this.maxNode&&this.nodeSet.types[t].name||t)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(t){let e=this.dynamicPrecedences;return e==null?0:e[t]||0}parseDialect(t){let e=Object.keys(this.dialects),i=e.map(()=>!1);if(t)for(let r of t.split(" ")){let o=e.indexOf(r);o>=0&&(i[o]=!0)}let n=null;for(let r=0;r<e.length;r++)if(!i[r])for(let o=this.dialects[e[r]],a;(a=this.data[o++])!=65535;)(n||(n=new Uint8Array(this.maxTerm+1)))[a]=1;return new V3(t,i,n)}static deserialize(t){return new Jl(t)}}function Yi(s,t){return s[t]|s[t+1]<<16}function q3(s){let t=null;for(let e of s){let i=e.p.stoppedAt;(e.pos==e.p.stream.end||i!=null&&e.pos>i)&&e.p.parser.stateFlag(e.state,2)&&(!t||t.score<e.score)&&(t=e)}return t}function WO(s){if(s.external){let t=s.extend?1:0;return(e,i)=>s.external(e,i)<<1|t}return s.get}const j3=316,U3=317,GO=1,H3=2,K3=3,J3=4,tI=318,eI=320,iI=321,sI=5,nI=6,rI=0,Ed=[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],yw=125,oI=59,Ld=47,aI=42,lI=43,hI=45,cI=60,uI=44,dI=63,fI=46,pI=91,gI=new F3({start:!1,shift(s,t){return t==sI||t==nI||t==eI?s:t==iI},strict:!1}),mI=new Ko((s,t)=>{let{next:e}=s;(e==yw||e==-1||t.context)&&s.acceptToken(tI)},{contextual:!0,fallback:!0}),OI=new Ko((s,t)=>{let{next:e}=s,i;Ed.indexOf(e)>-1||e==Ld&&((i=s.peek(1))==Ld||i==aI)||e!=yw&&e!=oI&&e!=-1&&!t.context&&s.acceptToken(j3)},{contextual:!0}),yI=new Ko((s,t)=>{s.next==pI&&!t.context&&s.acceptToken(U3)},{contextual:!0}),xI=new Ko((s,t)=>{let{next:e}=s;if(e==lI||e==hI){if(s.advance(),e==s.next){s.advance();let i=!t.context&&t.canShift(GO);s.acceptToken(i?GO:H3)}}else e==dI&&s.peek(1)==fI&&(s.advance(),s.advance(),(s.next<48||s.next>57)&&s.acceptToken(K3))},{contextual:!0});function Xc(s,t){return s>=65&&s<=90||s>=97&&s<=122||s==95||s>=192||!t&&s>=48&&s<=57}const bI=new Ko((s,t)=>{if(s.next!=cI||!t.dialectEnabled(rI)||(s.advance(),s.next==Ld))return;let e=0;for(;Ed.indexOf(s.next)>-1;)s.advance(),e++;if(Xc(s.next,!0)){for(s.advance(),e++;Xc(s.next,!1);)s.advance(),e++;for(;Ed.indexOf(s.next)>-1;)s.advance(),e++;if(s.next==uI)return;for(let i=0;;i++){if(i==7){if(!Xc(s.next,!0))return;break}if(s.next!="extends".charCodeAt(i))break;s.advance(),e++}}s.acceptToken(J3,-e)}),wI=qb({"get set async static":M.modifier,"for while do if else switch try catch finally return throw break continue default case defer":M.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":M.operatorKeyword,"let var const using function class extends":M.definitionKeyword,"import export from":M.moduleKeyword,"with debugger new":M.keyword,TemplateString:M.special(M.string),super:M.atom,BooleanLiteral:M.bool,this:M.self,null:M.null,Star:M.modifier,VariableName:M.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":M.function(M.variableName),VariableDefinition:M.definition(M.variableName),Label:M.labelName,PropertyName:M.propertyName,PrivatePropertyName:M.special(M.propertyName),"CallExpression/MemberExpression/PropertyName":M.function(M.propertyName),"FunctionDeclaration/VariableDefinition":M.function(M.definition(M.variableName)),"ClassDeclaration/VariableDefinition":M.definition(M.className),"NewExpression/VariableName":M.className,PropertyDefinition:M.definition(M.propertyName),PrivatePropertyDefinition:M.definition(M.special(M.propertyName)),UpdateOp:M.updateOperator,"LineComment Hashbang":M.lineComment,BlockComment:M.blockComment,Number:M.number,String:M.string,Escape:M.escape,ArithOp:M.arithmeticOperator,LogicOp:M.logicOperator,BitOp:M.bitwiseOperator,CompareOp:M.compareOperator,RegExp:M.regexp,Equals:M.definitionOperator,Arrow:M.function(M.punctuation),": Spread":M.punctuation,"( )":M.paren,"[ ]":M.squareBracket,"{ }":M.brace,"InterpolationStart InterpolationEnd":M.special(M.brace),".":M.derefOperator,", ;":M.separator,"@":M.meta,TypeName:M.typeName,TypeDefinition:M.definition(M.typeName),"type enum interface implements namespace module declare":M.definitionKeyword,"abstract global Privacy readonly override":M.modifier,"is keyof unique infer asserts":M.operatorKeyword,JSXAttributeValue:M.attributeValue,JSXText:M.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":M.angleBracket,"JSXIdentifier JSXNameSpacedName":M.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":M.attributeName,"JSXBuiltin/JSXIdentifier":M.standard(M.tagName)}),SI={__proto__:null,export:20,as:25,from:33,default:36,async:41,function:42,in:52,out:55,const:56,extends:60,this:64,true:72,false:72,null:84,void:88,typeof:92,super:108,new:142,delete:154,yield:163,await:167,class:172,public:235,private:235,protected:235,readonly:237,instanceof:256,satisfies:259,import:292,keyof:349,unique:353,infer:359,asserts:395,is:397,abstract:417,implements:419,type:421,let:424,var:426,using:429,interface:435,enum:439,namespace:445,module:447,declare:451,global:455,defer:471,for:476,of:485,while:488,with:492,do:496,if:500,else:502,switch:506,case:512,try:518,catch:522,finally:526,return:530,throw:534,break:538,continue:542,debugger:546},vI={__proto__:null,async:129,get:131,set:133,declare:195,public:197,private:197,protected:197,static:199,abstract:201,override:203,readonly:209,accessor:211,new:401},_I={__proto__:null,"<":193},kI=Jl.deserialize({version:14,states:"$F|Q%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Il'#IlO1XQ`O'#GsO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JrO6[Q!0MxO'#JsO6uQ`O'#F]O6zQ,UO'#FtOOQ!0Lf'#Ff'#FfO7VO7dO'#FfO9XQMhO'#F|O9`Q`O'#F{OOQ!0Lf'#Js'#JsOOQ!0Lb'#Jr'#JrO9eQ`O'#GwOOQ['#K_'#K_O9pQ`O'#IYO9uQ!0LrO'#IZOOQ['#J`'#J`OOQ['#I_'#I_Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GsO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EyO;hQMhO'#FeO;xQ`O'#GsOOQO'#K`'#K`O;}Q`O'#K`O<]Q`O'#G{O<]Q`O'#G|O<]Q`O'#HOO9kQ`O'#HRO=SQ`O'#HUO>kQ`O'#CeO>{Q`O'#HcO?TQ`O'#HiO?TQ`O'#HkO`QlO'#HmO?TQ`O'#HoO?TQ`O'#HrO?YQ`O'#HxO?_Q!0LsO'#IOO%[QlO'#IQO?jQ!0LsO'#ISO?uQ!0LsO'#IUO9uQ!0LrO'#IWO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FeOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jv'#JvO%[QlO'#JvOOQO'#Jy'#JyOOQO'#Ih'#IhOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#J}'#J}OC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jx'#JxODlQpO'#JyOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CD})CD}OOOO'#I`'#I`OFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ia'#IaOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Ic'#IcOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IdOGyQ`O'#JtOIxQ!fO'#JtO+}QlO'#JtOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KTOKPQ`O'#KSOKPQ`O'#KSOKXQ`O,5;^OK^Q`O'#KROOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KQONtQ`O'#KPO9eQ`O'#KPO! YQ`O'#KPO! bQ`O,5;]O! gQ`O'#KPO!#lQ!fO'#JsOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#Jz'#JzOOQO-E<j-E<jO9kQ`O,5=_O!$rQ`O,5=_O!$wQlO,5;ZO!&zQMhO'#EkO!(eQ`O,5;ZO!(jQlO'#DyO!(tQpO,5;dO!(|QpO,5;dO%[QlO,5;dOOQ['#FT'#FTOOQ['#FV'#FVO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eOOQ['#FZ'#FZO!)[QlO,5;tOOQ!0Lf,5;y,5;yOOQ!0Lf,5;z,5;zOOQ!0Lf,5;|,5;|O%[QlO'#IpO!+_Q!0LrO,5<iO%[QlO,5;eO!&zQMhO,5;eO!+|QMhO,5;eO!-nQMhO'#E^O%[QlO,5;wOOQ!0Lf,5;{,5;{O!-uQ,UO'#FjO!.rQ,UO'#KXO!.^Q,UO'#KXO!.yQ,UO'#KXOOQO'#KX'#KXO!/_Q,UO,5<SOOOW,5<`,5<`O!/pQlO'#FvOOOW'#Io'#IoO7VO7dO,5<QO!/wQ,UO'#FxOOQ!0Lf,5<Q,5<QO!0hQ$IUO'#CyOOQ!0Lh'#C}'#C}O!0{O#@ItO'#DRO!1iQMjO,5<eO!1pQ`O,5<hO!3YQ(CWO'#GXO!3jQ`O'#GYO!3oQ`O'#GYO!5_Q(CWO'#G^O!6dQpO'#GbOOQO'#Gn'#GnO!,TQMhO'#GmOOQO'#Gp'#GpO!,TQMhO'#GoO!7VQ$IUO'#JlOOQ!0Lh'#Jl'#JlO!7aQ`O'#JkO!7oQ`O'#JjO!7wQ`O'#CuOOQ!0Lh'#C{'#C{O!8YQ`O'#C}OOQ!0Lh'#DV'#DVOOQ!0Lh'#DX'#DXO!8_Q`O,5<eO1SQ`O'#DZO!,TQMhO'#GPO!,TQMhO'#GRO!8gQ`O'#GTO!8lQ`O'#GUO!3oQ`O'#G[O!,TQMhO'#GaO<]Q`O'#JkO!8qQ`O'#EqO!9`Q`O,5<gOOQ!0Lb'#Cr'#CrO!9hQ`O'#ErO!:bQpO'#EsOOQ!0Lb'#KR'#KRO!:iQ!0LrO'#KaO9uQ!0LrO,5=cO`QlO,5>tOOQ['#Jh'#JhOOQ[,5>u,5>uOOQ[-E<]-E<]O!<hQ!0MxO,5:bO!:]QpO,5:`O!?RQ!0MxO,5:jO%[QlO,5:jO!AiQ!0MxO,5:lOOQO,5@z,5@zO!BYQMhO,5=_O!BhQ!0LrO'#JiO9`Q`O'#JiO!ByQ!0LrO,59ZO!CUQpO,59ZO!C^QMhO,59ZO:dQMhO,59ZO!CiQ`O,5;ZO!CqQ`O'#HbO!DVQ`O'#KdO%[QlO,5;}O!:]QpO,5<PO!D_Q`O,5=zO!DdQ`O,5=zO!DiQ`O,5=zO!DwQ`O,5=zO9uQ!0LrO,5=zO<]Q`O,5=jOOQO'#Cy'#CyO!EOQpO,5=gO!EWQMhO,5=hO!EcQ`O,5=jO!EhQ!bO,5=mO!EpQ`O'#K`O?YQ`O'#HWO9kQ`O'#HYO!EuQ`O'#HYO:dQMhO'#H[O!EzQ`O'#H[OOQ[,5=p,5=pO!FPQ`O'#H]O!FbQ`O'#CoO!FgQ`O,59PO!FqQ`O,59PO!HvQlO,59POOQ[,59P,59PO!IWQ!0LrO,59PO%[QlO,59PO!KcQlO'#HeOOQ['#Hf'#HfOOQ['#Hg'#HgO`QlO,5=}O!KyQ`O,5=}O`QlO,5>TO`QlO,5>VO!LOQ`O,5>XO`QlO,5>ZO!LTQ`O,5>^O!LYQlO,5>dOOQ[,5>j,5>jO%[QlO,5>jO9uQ!0LrO,5>lOOQ[,5>n,5>nO#!dQ`O,5>nOOQ[,5>p,5>pO#!dQ`O,5>pOOQ[,5>r,5>rO##QQpO'#D_O%[QlO'#JvO##sQpO'#JvO##}QpO'#DmO#$`QpO'#DmO#&qQlO'#DmO#&xQ`O'#JuO#'QQ`O,5:WO#'VQ`O'#EtO#'eQ`O'#KUO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CUQpO,5;YO!C^QMhO,5;YO:dQMhO,5;YO#(`Q`O,5@bO#(eQ07dO,5:sOOQO-E<f-E<fO#)kQ!0MSO,5;RODWQpO,5:rO#)uQpO,5:rODWQpO,5;RO!ByQ!0LrO,5:rOOQ!0Lb'#Ej'#EjOOQO,5;R,5;RO%[QlO,5;RO#*SQ!0LrO,5;RO#*_Q!0LrO,5;RO!CUQpO,5:rOOQO,5;X,5;XO#*mQ!0LrO,5;RPOOO'#I^'#I^P#+RO&2DjO,58|POOO,58|,58|OOOO-E<^-E<^OOQ!0Lh1G.p1G.pOOOO-E<_-E<_OOOO,59},59}O#+^Q!bO,59}OOOO-E<a-E<aOOQ!0Lf1G/g1G/gO#+cQ!fO,5?OO+}QlO,5?OOOQO,5?U,5?UO#+mQlO'#IdOOQO-E<b-E<bO#+zQ`O,5@`O#,SQ!fO,5@`O#,ZQ`O,5@nOOQ!0Lf1G/m1G/mO%[QlO,5@oO#,cQ`O'#IjOOQO-E<h-E<hO#,ZQ`O,5@nOOQ!0Lb1G0x1G0xOOQ!0Ln1G/x1G/xOOQ!0Ln1G0Y1G0YO%[QlO,5@lO#,wQ!0LrO,5@lO#-YQ!0LrO,5@lO#-aQ`O,5@kO9eQ`O,5@kO#-iQ`O,5@kO#-wQ`O'#ImO#-aQ`O,5@kOOQ!0Lb1G0w1G0wO!(tQpO,5:uO!)PQpO,5:uOOQS,5:w,5:wO#.iQdO,5:wO#.qQMhO1G2yO9kQ`O1G2yOOQ!0Lf1G0u1G0uO#/PQ!0MxO1G0uO#0UQ!0MvO,5;VOOQ!0Lh'#GW'#GWO#0rQ!0MzO'#JlO!$wQlO1G0uO#2}Q!fO'#JwO%[QlO'#JwO#3XQ`O,5:eOOQ!0Lh'#D_'#D_OOQ!0Lf1G1O1G1OO%[QlO1G1OOOQ!0Lf1G1f1G1fO#3^Q`O1G1OO#5rQ!0MxO1G1PO#5yQ!0MxO1G1PO#8aQ!0MxO1G1PO#8hQ!0MxO1G1PO#;OQ!0MxO1G1PO#=fQ!0MxO1G1PO#=mQ!0MxO1G1PO#=tQ!0MxO1G1PO#@[Q!0MxO1G1PO#@cQ!0MxO1G1PO#BpQ?MtO'#CiO#DkQ?MtO1G1`O#DrQ?MtO'#JsO#EVQ!0MxO,5?[OOQ!0Lb-E<n-E<nO#GdQ!0MxO1G1PO#HaQ!0MzO1G1POOQ!0Lf1G1P1G1PO#IdQMjO'#J|O#InQ`O,5:xO#IsQ!0MxO1G1cO#JgQ,UO,5<WO#JoQ,UO,5<XO#JwQ,UO'#FoO#K`Q`O'#FnOOQO'#KY'#KYOOQO'#In'#InO#KeQ,UO1G1nOOQ!0Lf1G1n1G1nOOOW1G1y1G1yO#KvQ?MtO'#JrO#LQQ`O,5<bO!)[QlO,5<bOOOW-E<m-E<mOOQ!0Lf1G1l1G1lO#LVQpO'#KXOOQ!0Lf,5<d,5<dO#L_QpO,5<dO#LdQMhO'#DTOOOO'#Ib'#IbO#LkO#@ItO,59mOOQ!0Lh,59m,59mO%[QlO1G2PO!8lQ`O'#IrO#LvQ`O,5<zOOQ!0Lh,5<w,5<wO!,TQMhO'#IuO#MdQMjO,5=XO!,TQMhO'#IwO#NVQMjO,5=ZO!&zQMhO,5=]OOQO1G2S1G2SO#NaQ!dO'#CrO#NtQ(CWO'#ErO$ |QpO'#GbO$!dQ!dO,5<sO$!kQ`O'#K[O9eQ`O'#K[O$!yQ`O,5<uO$#aQ!dO'#C{O!,TQMhO,5<tO$#kQ`O'#GZO$$PQ`O,5<tO$$UQ!dO'#GWO$$cQ!dO'#K]O$$mQ`O'#K]O!&zQMhO'#K]O$$rQ`O,5<xO$$wQlO'#JvO$%RQpO'#GcO#$`QpO'#GcO$%dQ`O'#GgO!3oQ`O'#GkO$%iQ!0LrO'#ItO$%tQpO,5<|OOQ!0Lp,5<|,5<|O$%{QpO'#GcO$&YQpO'#GdO$&kQpO'#GdO$&pQMjO,5=XO$'QQMjO,5=ZOOQ!0Lh,5=^,5=^O!,TQMhO,5@VO!,TQMhO,5@VO$'bQ`O'#IyO$'vQ`O,5@UO$(OQ`O,59aOOQ!0Lh,59i,59iO$(TQ`O,5@VO$)TQ$IYO,59uOOQ!0Lh'#Jp'#JpO$)vQMjO,5<kO$*iQMjO,5<mO@zQ`O,5<oOOQ!0Lh,5<p,5<pO$*sQ`O,5<vO$*xQMjO,5<{O$+YQ`O'#KPO!$wQlO1G2RO$+_Q`O1G2RO9eQ`O'#KSO9eQ`O'#EtO%[QlO'#EtO9eQ`O'#I{O$+dQ!0LrO,5@{OOQ[1G2}1G2}OOQ[1G4`1G4`OOQ!0Lf1G/|1G/|OOQ!0Lf1G/z1G/zO$-fQ!0MxO1G0UOOQ[1G2y1G2yO!&zQMhO1G2yO%[QlO1G2yO#.tQ`O1G2yO$/jQMhO'#EkOOQ!0Lb,5@T,5@TO$/wQ!0LrO,5@TOOQ[1G.u1G.uO!ByQ!0LrO1G.uO!CUQpO1G.uO!C^QMhO1G.uO$0YQ`O1G0uO$0_Q`O'#CiO$0jQ`O'#KeO$0rQ`O,5=|O$0wQ`O'#KeO$0|Q`O'#KeO$1[Q`O'#JRO$1jQ`O,5AOO$1rQ!fO1G1iOOQ!0Lf1G1k1G1kO9kQ`O1G3fO@zQ`O1G3fO$1yQ`O1G3fO$2OQ`O1G3fO!DiQ`O1G3fO9uQ!0LrO1G3fOOQ[1G3f1G3fO!EcQ`O1G3UO!&zQMhO1G3RO$2TQ`O1G3ROOQ[1G3S1G3SO!&zQMhO1G3SO$2YQ`O1G3SO$2bQpO'#HQOOQ[1G3U1G3UO!6_QpO'#I}O!EhQ!bO1G3XOOQ[1G3X1G3XOOQ[,5=r,5=rO$2jQMhO,5=tO9kQ`O,5=tO$%dQ`O,5=vO9`Q`O,5=vO!CUQpO,5=vO!C^QMhO,5=vO:dQMhO,5=vO$2xQ`O'#KcO$3TQ`O,5=wOOQ[1G.k1G.kO$3YQ!0LrO1G.kO@zQ`O1G.kO$3eQ`O1G.kO9uQ!0LrO1G.kO$5mQ!fO,5AQO$5zQ`O,5AQO9eQ`O,5AQO$6VQlO,5>PO$6^Q`O,5>POOQ[1G3i1G3iO`QlO1G3iOOQ[1G3o1G3oOOQ[1G3q1G3qO?TQ`O1G3sO$6cQlO1G3uO$:gQlO'#HtOOQ[1G3x1G3xO$:tQ`O'#HzO?YQ`O'#H|OOQ[1G4O1G4OO$:|QlO1G4OO9uQ!0LrO1G4UOOQ[1G4W1G4WOOQ!0Lb'#G_'#G_O9uQ!0LrO1G4YO9uQ!0LrO1G4[O$?TQ`O,5@bO!)[QlO,5;`O9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CUQpO,5:XO$?YQ?MtO,5:XOOQO,5;`,5;`O$?dQpO'#IeO$?zQ`O,5@aOOQ!0Lf1G/r1G/rO$@SQpO'#IkO$@^Q`O,5@pOOQ!0Lb1G0y1G0yO#$`QpO,5:XOOQO'#Ig'#IgO$@fQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CUQpO1G0tO!C^QMhO1G0tOOQ!0Lb1G5|1G5|O!ByQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@mQ!0LrO1G0mO$@xQ!0LrO1G0mO!CUQpO1G0^ODWQpO1G0^O$AWQ!0LrO1G0mOOQO1G0^1G0^O$AlQ!0MxO1G0mPOOO-E<[-E<[POOO1G.h1G.hOOOO1G/i1G/iO$AvQ!bO,5<iO$BOQ!fO1G4jOOQO1G4p1G4pO%[QlO,5?OO$BYQ`O1G5zO$BbQ`O1G6YO$BjQ!fO1G6ZO9eQ`O,5?UO$BtQ!0MxO1G6WO%[QlO1G6WO$CUQ!0LrO1G6WO$CgQ`O1G6VO$CgQ`O1G6VO9eQ`O1G6VO$CoQ`O,5?XO9eQ`O,5?XOOQO,5?X,5?XO$DTQ`O,5?XO$+YQ`O,5?XOOQO-E<k-E<kOOQS1G0a1G0aOOQS1G0c1G0cO#.lQ`O1G0cOOQ[7+(e7+(eO!&zQMhO7+(eO%[QlO7+(eO$DcQ`O7+(eO$DnQMhO7+(eO$D|Q!0MzO,5=XO$GXQ!0MzO,5=ZO$IdQ!0MzO,5=XO$KuQ!0MzO,5=ZO$NWQ!0MzO,59uO%!]Q!0MzO,5<kO%$hQ!0MzO,5<mO%&sQ!0MzO,5<{OOQ!0Lf7+&a7+&aO%)UQ!0MxO7+&aO%)xQlO'#IfO%*VQ`O,5@cO%*_Q!fO,5@cOOQ!0Lf1G0P1G0PO%*iQ`O7+&jOOQ!0Lf7+&j7+&jO%*nQ?MtO,5:fO%[QlO7+&zO%*xQ?MtO,5:bO%+VQ?MtO,5:jO%+aQ?MtO,5:lO%+kQMhO'#IiO%+uQ`O,5@hOOQ!0Lh1G0d1G0dOOQO1G1r1G1rOOQO1G1s1G1sO%+}Q!jO,5<ZO!)[QlO,5<YOOQO-E<l-E<lOOQ!0Lf7+'Y7+'YOOOW7+'e7+'eOOOW1G1|1G1|O%,YQ`O1G1|OOQ!0Lf1G2O1G2OOOOO,59o,59oO%,_Q!dO,59oOOOO-E<`-E<`OOQ!0Lh1G/X1G/XO%,fQ!0MxO7+'kOOQ!0Lh,5?^,5?^O%-YQMhO1G2fP%-aQ`O'#IrPOQ!0Lh-E<p-E<pO%-}QMjO,5?aOOQ!0Lh-E<s-E<sO%.pQMjO,5?cOOQ!0Lh-E<u-E<uO%.zQ!dO1G2wO%/RQ!dO'#CrO%/iQMhO'#KSO$$wQlO'#JvOOQ!0Lh1G2_1G2_O%/sQ`O'#IqO%0[Q`O,5@vO%0[Q`O,5@vO%0dQ`O,5@vO%0oQ`O,5@vOOQO1G2a1G2aO%0}QMjO1G2`O$+YQ`O'#K[O!,TQMhO1G2`O%1_Q(CWO'#IsO%1lQ`O,5@wO!&zQMhO,5@wO%1tQ!dO,5@wOOQ!0Lh1G2d1G2dO%4UQ!fO'#CiO%4`Q`O,5=POOQ!0Lb,5<},5<}O%4hQpO,5<}OOQ!0Lb,5=O,5=OOCwQ`O,5<}O%4sQpO,5<}OOQ!0Lb,5=R,5=RO$+YQ`O,5=VOOQO,5?`,5?`OOQO-E<r-E<rOOQ!0Lp1G2h1G2hO#$`QpO,5<}O$$wQlO,5=PO%5RQ`O,5=OO%5^QpO,5=OO!,TQMhO'#IuO%6WQMjO1G2sO!,TQMhO'#IwO%6yQMjO1G2uO%7TQMjO1G5qO%7_QMjO1G5qOOQO,5?e,5?eOOQO-E<w-E<wOOQO1G.{1G.{O!,TQMhO1G5qO!,TQMhO1G5qO!:]QpO,59wO%[QlO,59wOOQ!0Lh,5<j,5<jO%7lQ`O1G2ZO!,TQMhO1G2bO%7qQ!0MxO7+'mOOQ!0Lf7+'m7+'mO!$wQlO7+'mO%8eQ`O,5;`OOQ!0Lb,5?g,5?gOOQ!0Lb-E<y-E<yO%8jQ!dO'#K^O#(ZQ`O7+(eO4UQ!fO7+(eO$DfQ`O7+(eO%8tQ!0MvO'#CiO%9XQ!0MvO,5=SO%9lQ`O,5=SO%9tQ`O,5=SOOQ!0Lb1G5o1G5oOOQ[7+$a7+$aO!ByQ!0LrO7+$aO!CUQpO7+$aO!$wQlO7+&aO%9yQ`O'#JQO%:bQ`O,5APOOQO1G3h1G3hO9kQ`O,5APO%:bQ`O,5APO%:jQ`O,5APOOQO,5?m,5?mOOQO-E=P-E=POOQ!0Lf7+'T7+'TO%:oQ`O7+)QO9uQ!0LrO7+)QO9kQ`O7+)QO@zQ`O7+)QO%:tQ`O7+)QOOQ[7+)Q7+)QOOQ[7+(p7+(pO%:yQ!0MvO7+(mO!&zQMhO7+(mO!E^Q`O7+(nOOQ[7+(n7+(nO!&zQMhO7+(nO%;TQ`O'#KbO%;`Q`O,5=lOOQO,5?i,5?iOOQO-E<{-E<{OOQ[7+(s7+(sO%<rQpO'#HZOOQ[1G3`1G3`O!&zQMhO1G3`O%[QlO1G3`O%<yQ`O1G3`O%=UQMhO1G3`O9uQ!0LrO1G3bO$%dQ`O1G3bO9`Q`O1G3bO!CUQpO1G3bO!C^QMhO1G3bO%=dQ`O'#JPO%=xQ`O,5@}O%>QQpO,5@}OOQ!0Lb1G3c1G3cOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>]Q`O7+$VO%[QlO1G6lO%[QlO1G6mO%>bQ!0LrO1G6lO%>lQlO1G3kO%>sQ`O1G3kO%>xQlO1G3kOOQ[7+)T7+)TO9uQ!0LrO7+)_O`QlO7+)aOOQ['#Kh'#KhOOQ['#JS'#JSO%?PQlO,5>`OOQ[,5>`,5>`O%[QlO'#HuO%?^Q`O'#HwOOQ[,5>f,5>fO9eQ`O,5>fOOQ[,5>h,5>hOOQ[7+)j7+)jOOQ[7+)p7+)pOOQ[7+)t7+)tOOQ[7+)v7+)vO%?cQpO1G5|O%?}Q?MtO1G0zO%@XQ`O1G0zOOQO1G/s1G/sO%@dQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?P,5?POOQO-E<c-E<cOOQO,5?V,5?VOOQO-E<i-E<iO!CUQpO1G/sOOQO-E<e-E<eOOQ!0Ln1G0]1G0]OOQ!0Lf7+%u7+%uO#(ZQ`O7+%uOOQ!0Lf7+&`7+&`O?YQ`O7+&`O!CUQpO7+&`OOQO7+%x7+%xO$AlQ!0MxO7+&XOOQO7+&X7+&XO%[QlO7+&XO%@nQ!0LrO7+&XO!ByQ!0LrO7+%xO!CUQpO7+%xO%@yQ!0LrO7+&XO%AXQ!0MxO7++rO%[QlO7++rO%AiQ`O7++qO%AiQ`O7++qOOQO1G4s1G4sO9eQ`O1G4sO%AqQ`O1G4sOOQS7+%}7+%}O#(ZQ`O<<LPO4UQ!fO<<LPO%BPQ`O<<LPOOQ[<<LP<<LPO!&zQMhO<<LPO%[QlO<<LPO%BXQ`O<<LPO%BdQ!0MzO,5?aO%DoQ!0MzO,5?cO%FzQ!0MzO1G2`O%I]Q!0MzO1G2sO%KhQ!0MzO1G2uO%MsQ!fO,5?QO%[QlO,5?QOOQO-E<d-E<dO%M}Q`O1G5}OOQ!0Lf<<JU<<JUO%NVQ?MtO1G0uO&!^Q?MtO1G1PO&!eQ?MtO1G1PO&$fQ?MtO1G1PO&$mQ?MtO1G1PO&&nQ?MtO1G1PO&(oQ?MtO1G1PO&(vQ?MtO1G1PO&(}Q?MtO1G1PO&+OQ?MtO1G1PO&+VQ?MtO1G1PO&+^Q!0MxO<<JfO&-UQ?MtO1G1PO&.RQ?MvO1G1PO&/UQ?MvO'#JlO&1[Q?MtO1G1cO&1iQ?MtO1G0UO&1sQMjO,5?TOOQO-E<g-E<gO!)[QlO'#FqOOQO'#KZ'#KZOOQO1G1u1G1uO&1}Q`O1G1tO&2SQ?MtO,5?[OOOW7+'h7+'hOOOO1G/Z1G/ZO&2^Q!dO1G4xOOQ!0Lh7+(Q7+(QP!&zQMhO,5?^O!,TQMhO7+(cO&2eQ`O,5?]O9eQ`O,5?]O$+YQ`O,5?]OOQO-E<o-E<oO&2sQ`O1G6bO&2sQ`O1G6bO&2{Q`O1G6bO&3WQMjO7+'zO&3hQ!dO,5?_O&3rQ`O,5?_O!&zQMhO,5?_OOQO-E<q-E<qO&3wQ!dO1G6cO&4RQ`O1G6cO&4ZQ`O1G2kO!&zQMhO1G2kOOQ!0Lb1G2i1G2iOOQ!0Lb1G2j1G2jO%4hQpO1G2iO!CUQpO1G2iOCwQ`O1G2iOOQ!0Lb1G2q1G2qO&4`QpO1G2iO&4nQ`O1G2kO$+YQ`O1G2jOCwQ`O1G2jO$$wQlO1G2kO&4vQ`O1G2jO&5jQMjO,5?aOOQ!0Lh-E<t-E<tO&6]QMjO,5?cOOQ!0Lh-E<v-E<vO!,TQMhO7++]O&6gQMjO7++]O&6qQMjO7++]OOQ!0Lh1G/c1G/cO&7OQ`O1G/cOOQ!0Lh7+'u7+'uO&7TQMjO7+'|O&7eQ!0MxO<<KXOOQ!0Lf<<KX<<KXO&8XQ`O1G0zO!&zQMhO'#IzO&8^Q`O,5@xO&:`Q!fO<<LPO!&zQMhO1G2nO&:gQ!0LrO1G2nOOQ[<<G{<<G{O!ByQ!0LrO<<G{O&:xQ!0MxO<<I{OOQ!0Lf<<I{<<I{OOQO,5?l,5?lO&;lQ`O,5?lO&;qQ`O,5?lOOQO-E=O-E=OO&<PQ`O1G6kO&<PQ`O1G6kO9kQ`O1G6kO@zQ`O<<LlOOQ[<<Ll<<LlO&<XQ`O<<LlO9uQ!0LrO<<LlO9kQ`O<<LlOOQ[<<LX<<LXO%:yQ!0MvO<<LXOOQ[<<LY<<LYO!E^Q`O<<LYO&<^QpO'#I|O&<iQ`O,5@|O!)[QlO,5@|OOQ[1G3W1G3WOOQO'#JO'#JOO9uQ!0LrO'#JOO&<qQpO,5=uOOQ[,5=u,5=uO&<xQpO'#EgO&=PQpO'#GeO&=UQ`O7+(zO&=ZQ`O7+(zOOQ[7+(z7+(zO!&zQMhO7+(zO%[QlO7+(zO&=cQ`O7+(zOOQ[7+(|7+(|O9uQ!0LrO7+(|O$%dQ`O7+(|O9`Q`O7+(|O!CUQpO7+(|O&=nQ`O,5?kOOQO-E<}-E<}OOQO'#H^'#H^O&=yQ`O1G6iO9uQ!0LrO<<GqOOQ[<<Gq<<GqO@zQ`O<<GqO&>RQ`O7+,WO&>WQ`O7+,XO%[QlO7+,WO%[QlO7+,XOOQ[7+)V7+)VO&>]Q`O7+)VO&>bQlO7+)VO&>iQ`O7+)VOOQ[<<Ly<<LyOOQ[<<L{<<L{OOQ[-E=Q-E=QOOQ[1G3z1G3zO&>nQ`O,5>aOOQ[,5>c,5>cO&>sQ`O1G4QO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&>xQ?MtO1G6ZO?YQ`O7+%_OOQ!0Lf<<Ia<<IaOOQ!0Lf<<Iz<<IzO?YQ`O<<IzOOQO<<Is<<IsO$AlQ!0MxO<<IsO%[QlO<<IsOOQO<<Id<<IdO!ByQ!0LrO<<IdO&?SQ!0LrO<<IsO&?_Q!0MxO<= ^O&?oQ`O<= ]OOQO7+*_7+*_O9eQ`O7+*_OOQ[ANAkANAkO&?wQ!fOANAkO!&zQMhOANAkO#(ZQ`OANAkO4UQ!fOANAkO&@OQ`OANAkO%[QlOANAkO&@WQ!0MzO7+'zO&BiQ!0MzO,5?aO&DtQ!0MzO,5?cO&GPQ!0MzO7+'|O&IbQ!fO1G4lO&IlQ?MtO7+&aO&KpQ?MvO,5=XO&MwQ?MvO,5=ZO&NXQ?MvO,5=XO&NiQ?MvO,5=ZO&NyQ?MvO,59uO'#PQ?MvO,5<kO'%SQ?MvO,5<mO''hQ?MvO,5<{O')^Q?MtO7+'kO')kQ?MtO7+'mO')xQ`O,5<]OOQO7+'`7+'`OOQ!0Lh7+*d7+*dO')}QMjO<<K}OOQO1G4w1G4wO'*UQ`O1G4wO'*aQ`O1G4wO'*oQ`O7++|O'*oQ`O7++|O!&zQMhO1G4yO'*wQ!dO1G4yO'+RQ`O7++}O'+ZQ`O7+(VO'+fQ!dO7+(VOOQ!0Lb7+(T7+(TOOQ!0Lb7+(U7+(UO!CUQpO7+(TOCwQ`O7+(TO'+pQ`O7+(VO!&zQMhO7+(VO$+YQ`O7+(UO'+uQ`O7+(VOCwQ`O7+(UO'+}QMjO<<NwO!,TQMhO<<NwOOQ!0Lh7+$}7+$}O',XQ!dO,5?fOOQO-E<x-E<xO',cQ!0MvO7+(YO!&zQMhO7+(YOOQ[AN=gAN=gO9kQ`O1G5WOOQO1G5W1G5WO',sQ`O1G5WO',xQ`O7+,VO',xQ`O7+,VO9uQ!0LrOANBWO@zQ`OANBWOOQ[ANBWANBWO'-QQ`OANBWOOQ[ANAsANAsOOQ[ANAtANAtO'-VQ`O,5?hOOQO-E<z-E<zO'-bQ?MtO1G6hOOQO,5?j,5?jOOQO-E<|-E<|OOQ[1G3a1G3aO'-lQ`O,5=POOQ[<<Lf<<LfO!&zQMhO<<LfO&=UQ`O<<LfO'-qQ`O<<LfO%[QlO<<LfOOQ[<<Lh<<LhO9uQ!0LrO<<LhO$%dQ`O<<LhO9`Q`O<<LhO'-yQpO1G5VO'.UQ`O7+,TOOQ[AN=]AN=]O9uQ!0LrOAN=]OOQ[<= r<= rOOQ[<= s<= sO'.^Q`O<= rO'.cQ`O<= sOOQ[<<Lq<<LqO'.hQ`O<<LqO'.mQlO<<LqOOQ[1G3{1G3{O?YQ`O7+)lO'.tQ`O<<JQO'/PQ?MtO<<JQOOQO<<Hy<<HyOOQ!0LfAN?fAN?fOOQOAN?_AN?_O$AlQ!0MxOAN?_OOQOAN?OAN?OO%[QlOAN?_OOQO<<My<<MyOOQ[G27VG27VO!&zQMhOG27VO#(ZQ`OG27VO'/ZQ!fOG27VO4UQ!fOG27VO'/bQ`OG27VO'/jQ?MtO<<JfO'/wQ?MvO1G2`O'1mQ?MvO,5?aO'3pQ?MvO,5?cO'5sQ?MvO1G2sO'7vQ?MvO1G2uO'9yQ?MtO<<KXO':WQ?MtO<<I{OOQO1G1w1G1wO!,TQMhOANAiOOQO7+*c7+*cO':eQ`O7+*cO':pQ`O<= hO':xQ!dO7+*eOOQ!0Lb<<Kq<<KqO$+YQ`O<<KqOCwQ`O<<KqO';SQ`O<<KqO!&zQMhO<<KqOOQ!0Lb<<Ko<<KoO!CUQpO<<KoO';_Q!dO<<KqOOQ!0Lb<<Kp<<KpO';iQ`O<<KqO!&zQMhO<<KqO$+YQ`O<<KpO';nQMjOANDcO';xQ!0MvO<<KtOOQO7+*r7+*rO9kQ`O7+*rO'<YQ`O<= qOOQ[G27rG27rO9uQ!0LrOG27rO@zQ`OG27rO!)[QlO1G5SO'<bQ`O7+,SO'<jQ`O1G2kO&=UQ`OANBQOOQ[ANBQANBQO!&zQMhOANBQO'<oQ`OANBQOOQ[ANBSANBSO9uQ!0LrOANBSO$%dQ`OANBSOOQO'#H_'#H_OOQO7+*q7+*qOOQ[G22wG22wOOQ[ANE^ANE^OOQ[ANE_ANE_OOQ[ANB]ANB]O'<wQ`OANB]OOQ[<<MW<<MWO!)[QlOAN?lOOQOG24yG24yO$AlQ!0MxOG24yO#(ZQ`OLD,qOOQ[LD,qLD,qO!&zQMhOLD,qO'<|Q!fOLD,qO'=TQ?MvO7+'zO'>yQ?MvO,5?aO'@|Q?MvO,5?cO'CPQ?MvO7+'|O'DuQMjOG27TOOQO<<M}<<M}OOQ!0LbANA]ANA]O$+YQ`OANA]OCwQ`OANA]O'EVQ!dOANA]OOQ!0LbANAZANAZO'E^Q`OANA]O!&zQMhOANA]O'EiQ!dOANA]OOQ!0LbANA[ANA[OOQO<<N^<<N^OOQ[LD-^LD-^O9uQ!0LrOLD-^O'EsQ?MtO7+*nOOQO'#Gf'#GfOOQ[G27lG27lO&=UQ`OG27lO!&zQMhOG27lOOQ[G27nG27nO9uQ!0LrOG27nOOQ[G27wG27wO'E}Q?MtOG25WOOQOLD*eLD*eOOQ[!$(!]!$(!]O#(ZQ`O!$(!]O!&zQMhO!$(!]O'FXQ!0MzOG27TOOQ!0LbG26wG26wO$+YQ`OG26wO'HjQ`OG26wOCwQ`OG26wO'HuQ!dOG26wO!&zQMhOG26wOOQ[!$(!x!$(!xOOQ[LD-WLD-WO&=UQ`OLD-WOOQ[LD-YLD-YOOQ[!)9Ew!)9EwO#(ZQ`O!)9EwOOQ!0LbLD,cLD,cO$+YQ`OLD,cOCwQ`OLD,cO'H|Q`OLD,cO'IXQ!dOLD,cOOQ[!$(!r!$(!rOOQ[!.K;c!.K;cO'I`Q?MvOG27TOOQ!0Lb!$( }!$( }O$+YQ`O!$( }OCwQ`O!$( }O'KUQ`O!$( }OOQ!0Lb!)9Ei!)9EiO$+YQ`O!)9EiOCwQ`O!)9EiOOQ!0Lb!.K;T!.K;TO$+YQ`O!.K;TOOQ!0Lb!4/0o!4/0oO!)[QlO'#DzO1PQ`O'#EXO'KaQ!fO'#JrO'KhQ!L^O'#DvO'KoQlO'#EOO'KvQ!fO'#CiO'N^Q!fO'#CiO!)[QlO'#EQO'NnQlO,5;ZO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO'#IpO(!qQ`O,5<iO!)[QlO,5;eO(!yQMhO,5;eO($dQMhO,5;eO!)[QlO,5;wO!&zQMhO'#GmO(!yQMhO'#GmO!&zQMhO'#GoO(!yQMhO'#GoO1SQ`O'#DZO1SQ`O'#DZO!&zQMhO'#GPO(!yQMhO'#GPO!&zQMhO'#GRO(!yQMhO'#GRO!&zQMhO'#GaO(!yQMhO'#GaO!)[QlO,5:jO($kQpO'#D_O($uQpO'#JvO!)[QlO,5@oO'NnQlO1G0uO(%PQ?MtO'#CiO!)[QlO1G2PO!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO(%ZQ!dO'#CrO!&zQMhO,5<tO(!yQMhO,5<tO'NnQlO1G2RO!)[QlO7+&zO!&zQMhO1G2`O(!yQMhO1G2`O!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO!&zQMhO1G2bO(!yQMhO1G2bO'NnQlO7+'mO'NnQlO7+&aO!&zQMhOANAiO(!yQMhOANAiO(%nQ`O'#EoO(%sQ`O'#EoO(%{Q`O'#F]O(&QQ`O'#EyO(&VQ`O'#KTO(&bQ`O'#KRO(&mQ`O,5;ZO(&rQMjO,5<eO(&yQ`O'#GYO('OQ`O'#GYO('TQ`O,5<eO(']Q`O,5<gO('eQ`O,5;ZO('mQ?MtO1G1`O('tQ`O,5<tO('yQ`O,5<tO((OQ`O,5<vO((TQ`O,5<vO((YQ`O1G2RO((_Q`O1G0uO((dQMjO<<K}O((kQMjO<<K}O((rQMhO'#F|O9`Q`O'#F{OAuQ`O'#EnO!)[QlO,5;tO!3oQ`O'#GYO!3oQ`O'#GYO!3oQ`O'#G[O!3oQ`O'#G[O!,TQMhO7+(cO!,TQMhO7+(cO%.zQ!dO1G2wO%.zQ!dO1G2wO!&zQMhO,5=]O!&zQMhO,5=]",stateData:"()x~O'|OS'}OSTOS(ORQ~OPYOQYOSfOY!VOaqOdzOeyOl!POpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!uwO!xxO!|]O$W|O$niO%h}O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO&W!WO&^!XO&`!YO&b!ZO&d![O&g!]O&m!^O&s!_O&u!`O&w!aO&y!bO&{!cO(TSO(VTO(YUO(aVO(o[O~OWtO~P`OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa!wOs!nO!S!oO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!xO#W!pO#X!pO#[!zO#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O(O!{O~OP]XR]X[]Xa]Xj]Xr]X!Q]X!S]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X'z]X(a]X(r]X(y]X(z]X~O!g%RX~P(qO_!}O(V#PO(W!}O(X#PO~O_#QO(X#PO(Y#PO(Z#QO~Ox#SO!U#TO(b#TO(c#VO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T<ZO(VTO(YUO(aVO(o[O~O![#ZO!]#WO!Y(hP!Y(vP~P+}O!^#cO~P`OPYOQYOSfOd!jOe!iOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(VTO(YUO(aVO(o[O~Op#mO![#iO!|]O#i#lO#j#iO(T<[O!k(sP~P.iO!l#oO(T#nO~O!x#sO!|]O%h#tO~O#k#uO~O!g#vO#k#uO~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!]$_O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa(fX'z(fX'w(fX!k(fX!Y(fX!_(fX%i(fX!g(fX~P1qO#S$dO#`$eO$Q$eOP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX!_(gX%i(gX~Oa(gX'z(gX'w(gX!Y(gX!k(gXv(gX!g(gX~P4UO#`$eO~O$]$hO$_$gO$f$mO~OSfO!_$nO$i$oO$k$qO~Oh%VOj%dOk%dOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T$sO(VTO(YUO(a$uO(y$}O(z%POg(^P~Ol%[O~P7eO!l%eO~O!S%hO!_%iO(T%gO~O!g%mO~Oa%nO'z%nO~O!Q%rO~P%[O(U!lO~P%[O%n%vO~P%[Oh%VO!l%eO(T%gO(U!lO~Oe%}O!l%eO(T%gO~Oj$RO~O!_&PO(T%gO(U!lO(VTO(YUO`)WP~O!Q&SO!l&RO%j&VO&T&WO~P;SO!x#sO~O%s&YO!S)SX!_)SX(T)SX~O(T&ZO~Ol!PO!u&`O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO~Od&eOe&dO!x&bO%h&cO%{&aO~P<bOd&hOeyOl!PO!_&gO!u&`O!xxO!|]O%h}O%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO~Ob&kO#`&nO%j&iO(U!lO~P=gO!l&oO!u&sO~O!l#oO~O!_XO~Oa%nO'x&{O'z%nO~Oa%nO'x'OO'z%nO~Oa%nO'x'QO'z%nO~O'w]X!Y]Xv]X!k]X&[]X!_]X%i]X!g]X~P(qO!b'_O!c'WO!d'WO(U!lO(VTO(YUO~Os'UO!S'TO!['XO(e'SO!^(iP!^(xP~P@nOn'bO!_'`O(T%gO~Oe'gO!l%eO(T%gO~O!Q&SO!l&RO~Os!nO!S!oO!|<VO#T!pO#U!pO#W!pO#X!pO(U!lO(VTO(YUO(e!mO(o!sO~O!b'mO!c'lO!d'lO#V!pO#['nO#]'nO~PBYOa%nOh%VO!g#vO!l%eO'z%nO(r'pO~O!p'tO#`'rO~PChOs!nO!S!oO(VTO(YUO(e!mO(o!sO~O!_XOs(mX!S(mX!b(mX!c(mX!d(mX!|(mX#T(mX#U(mX#V(mX#W(mX#X(mX#[(mX#](mX(U(mX(V(mX(Y(mX(e(mX(o(mX~O!c'lO!d'lO(U!lO~PDWO(P'xO(Q'xO(R'zO~O_!}O(V'|O(W!}O(X'|O~O_#QO(X'|O(Y'|O(Z#QO~Ov(OO~P%[Ox#SO!U#TO(b#TO(c(RO~O![(TO!Y'WX!Y'^X!]'WX!]'^X~P+}O!](VO!Y(hX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!](VO!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~O!Y(hX~PHRO!Y([O~O!Y(uX!](uX!g(uX!k(uX(r(uX~O#`(uX#k#dX!^(uX~PJUO#`(]O!Y(wX!](wX~O!](^O!Y(vX~O!Y(aO~O#`$eO~PJUO!^(bO~P`OR#zO!Q#yO!S#{O!l#xO(aVOP!na[!naj!nar!na!]!na!p!na#R!na#n!na#o!na#p!na#q!na#r!na#s!na#t!na#u!na#v!na#x!na#z!na#{!na(r!na(y!na(z!na~Oa!na'z!na'w!na!Y!na!k!nav!na!_!na%i!na!g!na~PKlO!k(cO~O!g#vO#`(dO(r'pO!](tXa(tX'z(tX~O!k(tX~PNXO!S%hO!_%iO!|]O#i(iO#j(hO(T%gO~O!](jO!k(sX~O!k(lO~O!S%hO!_%iO#j(hO(T%gO~OP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~O!g#vO!k(gX~P! uOR(nO!Q(mO!l#xO#S$dO!|!{a!S!{a~O!x!{a%h!{a!_!{a#i!{a#j!{a(T!{a~P!#vO!x(rO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~O#k(xO~O![(zO!k(kP~P%[O(e(|O(o[O~O!S)OO!l#xO(e(|O(o[O~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]$_Oa$qa'z$qa'w$qa!k$qa!Y$qa!_$qa%i$qa!g$qa~Ol)dO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Og(pP~P!,TO!Q)iO!g)hO!_$^X$Z$^X$]$^X$_$^X$f$^X~O!g)hO!_({X$Z({X$]({X$_({X$f({X~O!Q)iO~P!.^O!Q)iO!_({X$Z({X$]({X$_({X$f({X~O!_)kO$Z)oO$])jO$_)jO$f)pO~O![)sO~P!)[O$]$hO$_$gO$f)wO~On$zX!Q$zX#S$zX'y$zX(y$zX(z$zX~OgmXg$zXnmX!]mX#`mX~P!0SOx)yO(b)zO(c)|O~On*VO!Q*OO'y*PO(y$}O(z%PO~Og)}O~P!1WOg*WO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S*YO!_*ZO!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op*`O}O(T&ZO~O!l+SO~O(T(vO~Op+WO!S%hO![#iO!_%iO!|]O#i#lO#j#iO(T%gO!k(sP~O!g#vO#k+XO~O!S%hOTX'z)TX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa!ja!]!ja'z!ja'w!ja!Y!ja!k!jav!ja!_!ja%i!ja!g!ja~P!:tOR#zO!Q#yO!S#{O!l#xO(aVOP!ra[!raj!rar!ra!]!ra!p!ra#R!ra#n!ra#o!ra#p!ra#q!ra#r!ra#s!ra#t!ra#u!ra#v!ra#x!ra#z!ra#{!ra(r!ra(y!ra(z!ra~Oa!ra'z!ra'w!ra!Y!ra!k!rav!ra!_!ra%i!ra!g!ra~P!=[OR#zO!Q#yO!S#{O!l#xO(aVOP!ta[!taj!tar!ta!]!ta!p!ta#R!ta#n!ta#o!ta#p!ta#q!ta#r!ta#s!ta#t!ta#u!ta#v!ta#x!ta#z!ta#{!ta(r!ta(y!ta(z!ta~Oa!ta'z!ta'w!ta!Y!ta!k!tav!ta!_!ta%i!ta!g!ta~P!?rOh%VOn+gO!_'`O%i+fO~O!g+iOa(]X!_(]X'z(]X!](]X~Oa%nO!_XO'z%nO~Oh%VO!l%eO~Oh%VO!l%eO(T%gO~O!g#vO#k(xO~Ob+tO%j+uO(T+qO(VTO(YUO!^)XP~O!]+vO`)WX~O[+zO~O`+{O~O!_&PO(T%gO(U!lO`)WP~O%j,OO~P;SOh%VO#`,SO~Oh%VOn,VO!_$|O~O!_,XO~O!Q,ZO!_XO~O%n%vO~O!x,`O~Oe,eO~Ob,fO(T#nO(VTO(YUO!^)VP~Oe%}O~O%j!QO(T&ZO~P=gO[,kO`,jO~OPYOQYOSfOdzOeyOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!iuO!lZO!oYO!pYO!qYO!svO!xxO!|]O$niO%h}O(VTO(YUO(aVO(o[O~O!_!eO!u!gO$W!kO(T!dO~P!FyO`,jOa%nO'z%nO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa,pOl!OO!uwO%l!OO%m!OO%n!OO~P!IcO!l&oO~O&^,vO~O!_,xO~O&o,zO&q,{OP&laQ&laS&laY&laa&lad&lae&lal&lap&lar&las&lat&laz&la|&la!O&la!S&la!W&la!X&la!_&la!i&la!l&la!o&la!p&la!q&la!s&la!u&la!x&la!|&la$W&la$n&la%h&la%j&la%l&la%m&la%n&la%q&la%s&la%v&la%w&la%y&la&W&la&^&la&`&la&b&la&d&la&g&la&m&la&s&la&u&la&w&la&y&la&{&la'w&la(T&la(V&la(Y&la(a&la(o&la!^&la&e&lab&la&j&la~O(T-QO~Oh!eX!]!RX!^!RX!g!RX!g!eX!l!eX#`!RX~O!]!eX!^!eX~P#!iO!g-VO#`-UOh(jX!]#hX!^#hX!g(jX!l(jX~O!](jX!^(jX~P##[Oh%VO!g-XO!l%eO!]!aX!^!aX~Os!nO!S!oO(VTO(YUO(e!mO~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(VTO(YUO(aVO(o[O~O(T=QO~P#$qO!]-]O!^(iX~O!^-_O~O!g-VO#`-UO!]#hX!^#hX~O!]-`O!^(xX~O!^-bO~O!c-cO!d-cO(U!lO~P#$`O!^-fO~P'_On-iO!_'`O~O!Y-nO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(U!{a(V!{a(Y!{a(e!{a(o!{a~P!#vO!p-sO#`-qO~PChO!c-uO!d-uO(U!lO~PDWOa%nO#`-qO'z%nO~Oa%nO!g#vO#`-qO'z%nO~Oa%nO!g#vO!p-sO#`-qO'z%nO(r'pO~O(P'xO(Q'xO(R-zO~Ov-{O~O!Y'Wa!]'Wa~P!:tO![.PO!Y'WX!]'WX~P%[O!](VO!Y(ha~O!Y(ha~PHRO!](^O!Y(va~O!S%hO![.TO!_%iO(T%gO!Y'^X!]'^X~O#`.VO!](ta!k(taa(ta'z(ta~O!g#vO~P#,wO!](jO!k(sa~O!S%hO!_%iO#j.ZO(T%gO~Op.`O!S%hO![.]O!_%iO!|]O#i._O#j.]O(T%gO!]'aX!k'aX~OR.dO!l#xO~Oh%VOn.gO!_'`O%i.fO~Oa#ci!]#ci'z#ci'w#ci!Y#ci!k#civ#ci!_#ci%i#ci!g#ci~P!:tOn>]O!Q*OO'y*PO(y$}O(z%PO~O#k#_aa#_a#`#_a'z#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#k(`XP(`XR(`X[(`Xa(`Xj(`Xr(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X'z(`X(a(`X(r(`X!k(`X!Y(`X'w(`Xv(`X!_(`X%i(`X!g(`X~P!6kO!].tO!k(kX~P!:tO!k.wO~O!Y.yO~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mia#mij#mir#mi!]#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#n#mi~P#3cO#n$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO[#mia#mij#mi!]#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#r#mi~P#6QO#r$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO(aVOa#mi!]#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#v#mi~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO(aVO(z#}Oa#mi!]#mi#z#mi#{#mi'z#mi(r#mi(y#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#x$UO~P#;VO#x#mi~P#;VO#v$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO(aVO(y#|O(z#}Oa#mi!]#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#z#mi~P#={O#z$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X!]]X!^]X~O$O]X~P#@jOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO#z<gO#{<hO(aVO(r$YO(y#|O(z#}O~O$O.{O~P#BwO#S$dO#`<nO$Q<nO$O(gX!^(gX~P! uOa'da!]'da'z'da'w'da!k'da!Y'dav'da!_'da%i'da!g'da~P!:tO[#mia#mij#mir#mi!]#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO(y#mi(z#mi~P#EyOn>]O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P#EyO!]/POg(pX~P!1WOg/RO~Oa$Pi!]$Pi'z$Pi'w$Pi!Y$Pi!k$Piv$Pi!_$Pi%i$Pi!g$Pi~P!:tO$]/SO$_/SO~O$]/TO$_/TO~O!g)hO#`/UO!_$cX$Z$cX$]$cX$_$cX$f$cX~O![/VO~O!_)kO$Z/XO$])jO$_)jO$f/YO~O!]<iO!^(fX~P#BwO!^/ZO~O!g)hO$f({X~O$f/]O~Ov/^O~P!&zOx)yO(b)zO(c/aO~O!S/dO~O(y$}On%aa!Q%aa'y%aa(z%aa!]%aa#`%aa~Og%aa$O%aa~P#L{O(z%POn%ca!Q%ca'y%ca(y%ca!]%ca#`%ca~Og%ca$O%ca~P#MnO!]fX!gfX!kfX!k$zX(rfX~P!0SOp%WOPP~P!1uOr*sO!b*qO!c*kO!d*kO!l*bO#[*rO%`*mO(U!lO(VTO(YUO~Os<}O!S/nO![+[O!^*pO(e<|O!^(xP~P$ [O!k/oO~P#/sO!]/pO!g#vO(r'pO!k)OX~O!k/uO~OnoX!QoX'yoX(yoX(zoX~O!g#vO!koX~P$#OOp/wO!S%hO![*^O!_%iO(T%gO!k)OP~O#k/xO~O!Y$zX!]$zX!g%RX~P!0SO!]/yO!Y)PX~P#/sO!g/{O~O!Y/}O~OpkO(T0OO~P.iOh%VOr0TO!g#vO!l%eO(r'pO~O!g+iO~Oa%nO!]0XO'z%nO~O!^0ZO~P!5iO!c0[O!d0[O(U!lO~P#$`Os!nO!S0]O(VTO(YUO(e!mO~O#[0_O~Og%aa!]%aa#`%aa$O%aa~P!1WOg%ca!]%ca#`%ca$O%ca~P!1WOj%dOk%dOl%dO(T&ZOg'mX!]'mX~O!]*yOg(^a~Og0hO~On0jO#`0iOg(_a!](_a~OR0kO!Q0kO!S0lO#S$dOn}a'y}a(y}a(z}a!]}a#`}a~Og}a$O}a~P$(cO!Q*OO'y*POn$sa(y$sa(z$sa!]$sa#`$sa~Og$sa$O$sa~P$)_O!Q*OO'y*POn$ua(y$ua(z$ua!]$ua#`$ua~Og$ua$O$ua~P$*QO#k0oO~Og%Ta!]%Ta#`%Ta$O%Ta~P!1WO!g#vO~O#k0rO~O!]+^Oa)Ta'z)Ta~OR#zO!Q#yO!S#{O!l#xO(aVOP!ri[!rij!rir!ri!]!ri!p!ri#R!ri#n!ri#o!ri#p!ri#q!ri#r!ri#s!ri#t!ri#u!ri#v!ri#x!ri#z!ri#{!ri(r!ri(y!ri(z!ri~Oa!ri'z!ri'w!ri!Y!ri!k!riv!ri!_!ri%i!ri!g!ri~P$+oOh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op0{O%]0|O(T0zO~P$.VO!g+iOa(]a!_(]a'z(]a!](]a~O#k1SO~O[]X!]fX!^fX~O!]1TO!^)XX~O!^1VO~O[1WO~Ob1YO(T+qO(VTO(YUO~O!_&PO(T%gO`'uX!]'uX~O!]+vO`)Wa~O!k1]O~P!:tO[1`O~O`1aO~O#`1fO~On1iO!_$|O~O(e(|O!^)UP~Oh%VOn1rO!_1oO%i1qO~O[1|O!]1zO!^)VX~O!^1}O~O`2POa%nO'z%nO~O(T#nO(VTO(YUO~O#S$dO#`$eO$Q$eOP(gXR(gX[(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~Oj2SO&[2TOa(gX~P$3pOj2SO#`$eO&[2TO~Oa2VO~P%[Oa2XO~O&e2[OP&ciQ&ciS&ciY&cia&cid&cie&cil&cip&cir&cis&cit&ciz&ci|&ci!O&ci!S&ci!W&ci!X&ci!_&ci!i&ci!l&ci!o&ci!p&ci!q&ci!s&ci!u&ci!x&ci!|&ci$W&ci$n&ci%h&ci%j&ci%l&ci%m&ci%n&ci%q&ci%s&ci%v&ci%w&ci%y&ci&W&ci&^&ci&`&ci&b&ci&d&ci&g&ci&m&ci&s&ci&u&ci&w&ci&y&ci&{&ci'w&ci(T&ci(V&ci(Y&ci(a&ci(o&ci!^&cib&ci&j&ci~Ob2bO!^2`O&j2aO~P`O!_XO!l2dO~O&q,{OP&liQ&liS&liY&lia&lid&lie&lil&lip&lir&lis&lit&liz&li|&li!O&li!S&li!W&li!X&li!_&li!i&li!l&li!o&li!p&li!q&li!s&li!u&li!x&li!|&li$W&li$n&li%h&li%j&li%l&li%m&li%n&li%q&li%s&li%v&li%w&li%y&li&W&li&^&li&`&li&b&li&d&li&g&li&m&li&s&li&u&li&w&li&y&li&{&li'w&li(T&li(V&li(Y&li(a&li(o&li!^&li&e&lib&li&j&li~O!Y2jO~O!]!aa!^!aa~P#BwOs!nO!S!oO![2pO(e!mO!]'XX!^'XX~P@nO!]-]O!^(ia~O!]'_X!^'_X~P!9|O!]-`O!^(xa~O!^2wO~P'_Oa%nO#`3QO'z%nO~Oa%nO!g#vO#`3QO'z%nO~Oa%nO!g#vO!p3UO#`3QO'z%nO(r'pO~Oa%nO'z%nO~P!:tO!]$_Ov$qa~O!Y'Wi!]'Wi~P!:tO!](VO!Y(hi~O!](^O!Y(vi~O!Y(wi!](wi~P!:tO!](ti!k(tia(ti'z(ti~P!:tO#`3WO!](ti!k(tia(ti'z(ti~O!](jO!k(si~O!S%hO!_%iO!|]O#i3]O#j3[O(T%gO~O!S%hO!_%iO#j3[O(T%gO~On3dO!_'`O%i3cO~Oh%VOn3dO!_'`O%i3cO~O#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aav%aa!_%aa%i%aa!g%aa~P#L{O#k%caP%caR%ca[%caa%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%cav%ca!_%ca%i%ca!g%ca~P#MnO#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!]%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aa#`%aav%aa!_%aa%i%aa!g%aa~P#/sO#k%caP%caR%ca[%caa%caj%car%ca!S%ca!]%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%ca#`%cav%ca!_%ca%i%ca!g%ca~P#/sO#k}aP}a[}aa}aj}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a'z}a(a}a(r}a!k}a!Y}a'w}av}a!_}a%i}a!g}a~P$(cO#k$saP$saR$sa[$saa$saj$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa'z$sa(a$sa(r$sa!k$sa!Y$sa'w$sav$sa!_$sa%i$sa!g$sa~P$)_O#k$uaP$uaR$ua[$uaa$uaj$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua'z$ua(a$ua(r$ua!k$ua!Y$ua'w$uav$ua!_$ua%i$ua!g$ua~P$*QO#k%TaP%TaR%Ta[%Taa%Taj%Tar%Ta!S%Ta!]%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta'z%Ta(a%Ta(r%Ta!k%Ta!Y%Ta'w%Ta#`%Tav%Ta!_%Ta%i%Ta!g%Ta~P#/sOa#cq!]#cq'z#cq'w#cq!Y#cq!k#cqv#cq!_#cq%i#cq!g#cq~P!:tO![3lO!]'YX!k'YX~P%[O!].tO!k(ka~O!].tO!k(ka~P!:tO!Y3oO~O$O!na!^!na~PKlO$O!ja!]!ja!^!ja~P#BwO$O!ra!^!ra~P!=[O$O!ta!^!ta~P!?rOg']X!]']X~P!,TO!]/POg(pa~OSfO!_4TO$d4UO~O!^4YO~Ov4ZO~P#/sOa$mq!]$mq'z$mq'w$mq!Y$mq!k$mqv$mq!_$mq%i$mq!g$mq~P!:tO!Y4]O~P!&zO!S4^O~O!Q*OO'y*PO(z%POn'ia(y'ia!]'ia#`'ia~Og'ia$O'ia~P%-fO!Q*OO'y*POn'ka(y'ka(z'ka!]'ka#`'ka~Og'ka$O'ka~P%.XO(r$YO~P#/sO!YfX!Y$zX!]fX!]$zX!g%RX#`fX~P!0SOp%WO(T=WO~P!1uOp4bO!S%hO![4aO!_%iO(T%gO!]'eX!k'eX~O!]/pO!k)Oa~O!]/pO!g#vO!k)Oa~O!]/pO!g#vO(r'pO!k)Oa~Og$|i!]$|i#`$|i$O$|i~P!1WO![4jO!Y'gX!]'gX~P!3tO!]/yO!Y)Pa~O!]/yO!Y)Pa~P#/sOP]XR]X[]Xj]Xr]X!Q]X!S]X!Y]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~Oj%YX!g%YX~P%2OOj4oO!g#vO~Oh%VO!g#vO!l%eO~Oh%VOr4tO!l%eO(r'pO~Or4yO!g#vO(r'pO~Os!nO!S4zO(VTO(YUO(e!mO~O(y$}On%ai!Q%ai'y%ai(z%ai!]%ai#`%ai~Og%ai$O%ai~P%5oO(z%POn%ci!Q%ci'y%ci(y%ci!]%ci#`%ci~Og%ci$O%ci~P%6bOg(_i!](_i~P!1WO#`5QOg(_i!](_i~P!1WO!k5VO~Oa$oq!]$oq'z$oq'w$oq!Y$oq!k$oqv$oq!_$oq%i$oq!g$oq~P!:tO!Y5ZO~O!]5[O!_)QX~P#/sOa$zX!_$zX%^]X'z$zX!]$zX~P!0SO%^5_OaoX!_oX'zoX!]oX~P$#OOp5`O(T#nO~O%^5_O~Ob5fO%j5gO(T+qO(VTO(YUO!]'tX!^'tX~O!]1TO!^)Xa~O[5kO~O`5lO~O[5pO~Oa%nO'z%nO~P#/sO!]5uO#`5wO!^)UX~O!^5xO~Or6OOs!nO!S*iO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!pO#W!pO#X!pO#[5}O#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O!^5|O~P%;eOn6TO!_1oO%i6SO~Oh%VOn6TO!_1oO%i6SO~Ob6[O(T#nO(VTO(YUO!]'sX!^'sX~O!]1zO!^)Va~O(VTO(YUO(e6^O~O`6bO~Oj6eO&[6fO~PNXO!k6gO~P%[Oa6iO~Oa6iO~P%[Ob2bO!^6nO&j2aO~P`O!g6pO~O!g6rOh(ji!](ji!^(ji!g(ji!l(jir(ji(r(ji~O!]#hi!^#hi~P#BwO#`6sO!]#hi!^#hi~O!]!ai!^!ai~P#BwOa%nO#`6|O'z%nO~Oa%nO!g#vO#`6|O'z%nO~O!](tq!k(tqa(tq'z(tq~P!:tO!](jO!k(sq~O!S%hO!_%iO#j7TO(T%gO~O!_'`O%i7WO~On7[O!_'`O%i7WO~O#k'iaP'iaR'ia['iaa'iaj'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia'z'ia(a'ia(r'ia!k'ia!Y'ia'w'iav'ia!_'ia%i'ia!g'ia~P%-fO#k'kaP'kaR'ka['kaa'kaj'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka'z'ka(a'ka(r'ka!k'ka!Y'ka'w'kav'ka!_'ka%i'ka!g'ka~P%.XO#k$|iP$|iR$|i[$|ia$|ij$|ir$|i!S$|i!]$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i'z$|i(a$|i(r$|i!k$|i!Y$|i'w$|i#`$|iv$|i!_$|i%i$|i!g$|i~P#/sO#k%aiP%aiR%ai[%aia%aij%air%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai'z%ai(a%ai(r%ai!k%ai!Y%ai'w%aiv%ai!_%ai%i%ai!g%ai~P%5oO#k%ciP%ciR%ci[%cia%cij%cir%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci'z%ci(a%ci(r%ci!k%ci!Y%ci'w%civ%ci!_%ci%i%ci!g%ci~P%6bO!]'Ya!k'Ya~P!:tO!].tO!k(ki~O$O#ci!]#ci!^#ci~P#BwOP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mij#mir#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#n#mi~P%NdO#n<_O~P%NdOP$[OR#zOr<kO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO[#mij#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#r#mi~P&!lO#r<aO~P&!lOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO(aVO#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#v#mi~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO(aVO(z#}O#z#mi#{#mi$O#mi(r#mi(y#mi!]#mi!^#mi~O#x<eO~P&&uO#x#mi~P&&uO#v<cO~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO(aVO(y#|O(z#}O#{#mi$O#mi(r#mi!]#mi!^#mi~O#z#mi~P&)UO#z<gO~P&)UOa#|y!]#|y'z#|y'w#|y!Y#|y!k#|yv#|y!_#|y%i#|y!g#|y~P!:tO[#mij#mir#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi!]#mi!^#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO(y#mi(z#mi~P&,QOn>^O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P&,QO#S$dOP(`XR(`X[(`Xj(`Xn(`Xr(`X!Q(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X$O(`X'y(`X(a(`X(r(`X(y(`X(z(`X!](`X!^(`X~O$O$Pi!]$Pi!^$Pi~P#BwO$O!ri!^!ri~P$+oOg']a!]']a~P!1WO!^7nO~O!]'da!^'da~P#BwO!Y7oO~P#/sO!g#vO(r'pO!]'ea!k'ea~O!]/pO!k)Oi~O!]/pO!g#vO!k)Oi~Og$|q!]$|q#`$|q$O$|q~P!1WO!Y'ga!]'ga~P#/sO!g7vO~O!]/yO!Y)Pi~P#/sO!]/yO!Y)Pi~O!Y7yO~Oh%VOr8OO!l%eO(r'pO~Oj8QO!g#vO~Or8TO!g#vO(r'pO~O!Q*OO'y*PO(z%POn'ja(y'ja!]'ja#`'ja~Og'ja$O'ja~P&5RO!Q*OO'y*POn'la(y'la(z'la!]'la#`'la~Og'la$O'la~P&5tOg(_q!](_q~P!1WO#`8VOg(_q!](_q~P!1WO!Y8WO~Og%Oq!]%Oq#`%Oq$O%Oq~P!1WOa$oy!]$oy'z$oy'w$oy!Y$oy!k$oyv$oy!_$oy%i$oy!g$oy~P!:tO!g6rO~O!]5[O!_)Qa~O!_'`OP$TaR$Ta[$Taj$Tar$Ta!Q$Ta!S$Ta!]$Ta!l$Ta!p$Ta#R$Ta#n$Ta#o$Ta#p$Ta#q$Ta#r$Ta#s$Ta#t$Ta#u$Ta#v$Ta#x$Ta#z$Ta#{$Ta(a$Ta(r$Ta(y$Ta(z$Ta~O%i7WO~P&8fO%^8[Oa%[i!_%[i'z%[i!]%[i~Oa#cy!]#cy'z#cy'w#cy!Y#cy!k#cyv#cy!_#cy%i#cy!g#cy~P!:tO[8^O~Ob8`O(T+qO(VTO(YUO~O!]1TO!^)Xi~O`8dO~O(e(|O!]'pX!^'pX~O!]5uO!^)Ua~O!^8nO~P%;eO(o!sO~P$&YO#[8oO~O!_1oO~O!_1oO%i8qO~On8tO!_1oO%i8qO~O[8yO!]'sa!^'sa~O!]1zO!^)Vi~O!k8}O~O!k9OO~O!k9RO~O!k9RO~P%[Oa9TO~O!g9UO~O!k9VO~O!](wi!^(wi~P#BwOa%nO#`9_O'z%nO~O!](ty!k(tya(ty'z(ty~P!:tO!](jO!k(sy~O%i9bO~P&8fO!_'`O%i9bO~O#k$|qP$|qR$|q[$|qa$|qj$|qr$|q!S$|q!]$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q'z$|q(a$|q(r$|q!k$|q!Y$|q'w$|q#`$|qv$|q!_$|q%i$|q!g$|q~P#/sO#k'jaP'jaR'ja['jaa'jaj'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja'z'ja(a'ja(r'ja!k'ja!Y'ja'w'jav'ja!_'ja%i'ja!g'ja~P&5RO#k'laP'laR'la['laa'laj'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la'z'la(a'la(r'la!k'la!Y'la'w'lav'la!_'la%i'la!g'la~P&5tO#k%OqP%OqR%Oq[%Oqa%Oqj%Oqr%Oq!S%Oq!]%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq'z%Oq(a%Oq(r%Oq!k%Oq!Y%Oq'w%Oq#`%Oqv%Oq!_%Oq%i%Oq!g%Oq~P#/sO!]'Yi!k'Yi~P!:tO$O#cq!]#cq!^#cq~P#BwO(y$}OP%aaR%aa[%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa$O%aa(a%aa(r%aa!]%aa!^%aa~On%aa!Q%aa'y%aa(z%aa~P&IyO(z%POP%caR%ca[%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca$O%ca(a%ca(r%ca!]%ca!^%ca~On%ca!Q%ca'y%ca(y%ca~P&LQOn>^O!Q*OO'y*PO(z%PO~P&IyOn>^O!Q*OO'y*PO(y$}O~P&LQOR0kO!Q0kO!S0lO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a$O}a'y}a(a}a(r}a(y}a(z}a!]}a!^}a~O!Q*OO'y*POP$saR$sa[$saj$san$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa$O$sa(a$sa(r$sa(y$sa(z$sa!]$sa!^$sa~O!Q*OO'y*POP$uaR$ua[$uaj$uan$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua$O$ua(a$ua(r$ua(y$ua(z$ua!]$ua!^$ua~On>^O!Q*OO'y*PO(y$}O(z%PO~OP%TaR%Ta[%Taj%Tar%Ta!S%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta$O%Ta(a%Ta(r%Ta!]%Ta!^%Ta~P''VO$O$mq!]$mq!^$mq~P#BwO$O$oq!]$oq!^$oq~P#BwO!^9oO~O$O9pO~P!1WO!g#vO!]'ei!k'ei~O!g#vO(r'pO!]'ei!k'ei~O!]/pO!k)Oq~O!Y'gi!]'gi~P#/sO!]/yO!Y)Pq~Or9wO!g#vO(r'pO~O[9yO!Y9xO~P#/sO!Y9xO~Oj:PO!g#vO~Og(_y!](_y~P!1WO!]'na!_'na~P#/sOa%[q!_%[q'z%[q!]%[q~P#/sO[:UO~O!]1TO!^)Xq~O`:YO~O#`:ZO!]'pa!^'pa~O!]5uO!^)Ui~P#BwO!S:]O~O!_1oO%i:`O~O(VTO(YUO(e:eO~O!]1zO!^)Vq~O!k:hO~O!k:iO~O!k:jO~O!k:jO~P%[O#`:mO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%i:rO~P&8fO!_'`O%i:rO~O$O#|y!]#|y!^#|y~P#BwOP$|iR$|i[$|ij$|ir$|i!S$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i$O$|i(a$|i(r$|i!]$|i!^$|i~P''VO!Q*OO'y*PO(z%POP'iaR'ia['iaj'ian'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia$O'ia(a'ia(r'ia(y'ia!]'ia!^'ia~O!Q*OO'y*POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka$O'ka(a'ka(r'ka(y'ka(z'ka!]'ka!^'ka~O(y$}OP%aiR%ai[%aij%ain%air%ai!Q%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai$O%ai'y%ai(a%ai(r%ai(z%ai!]%ai!^%ai~O(z%POP%ciR%ci[%cij%cin%cir%ci!Q%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci$O%ci'y%ci(a%ci(r%ci(y%ci!]%ci!^%ci~O$O$oy!]$oy!^$oy~P#BwO$O#cy!]#cy!^#cy~P#BwO!g#vO!]'eq!k'eq~O!]/pO!k)Oy~O!Y'gq!]'gq~P#/sOr:|O!g#vO(r'pO~O[;QO!Y;PO~P#/sO!Y;PO~Og(_!R!](_!R~P!1WOa%[y!_%[y'z%[y!]%[y~P#/sO!]1TO!^)Xy~O!]5uO!^)Uq~O(T;XO~O!_1oO%i;[O~O!k;_O~O%i;dO~P&8fOP$|qR$|q[$|qj$|qr$|q!S$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q$O$|q(a$|q(r$|q!]$|q!^$|q~P''VO!Q*OO'y*PO(z%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja$O'ja(a'ja(r'ja(y'ja!]'ja!^'ja~O!Q*OO'y*POP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la$O'la(a'la(r'la(y'la(z'la!]'la!^'la~OP%OqR%Oq[%Oqj%Oqr%Oq!S%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq$O%Oq(a%Oq(r%Oq!]%Oq!^%Oq~P''VOg%e!Z!]%e!Z#`%e!Z$O%e!Z~P!1WO!Y;hO~P#/sOr;iO!g#vO(r'pO~O[;kO!Y;hO~P#/sO!]'pq!^'pq~P#BwO!]#h!Z!^#h!Z~P#BwO#k%e!ZP%e!ZR%e!Z[%e!Za%e!Zj%e!Zr%e!Z!S%e!Z!]%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z'z%e!Z(a%e!Z(r%e!Z!k%e!Z!Y%e!Z'w%e!Z#`%e!Zv%e!Z!_%e!Z%i%e!Z!g%e!Z~P#/sOr;tO!g#vO(r'pO~O!Y;uO~P#/sOr;|O!g#vO(r'pO~O!Y;}O~P#/sOP%e!ZR%e!Z[%e!Zj%e!Zr%e!Z!S%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z$O%e!Z(a%e!Z(r%e!Z!]%e!Z!^%e!Z~P''VOr<QO!g#vO(r'pO~Ov(fX~P1qO!Q%rO~P!)[O(U!lO~P!)[O!YfX!]fX#`fX~P%2OOP]XR]X[]Xj]Xr]X!Q]X!S]X!]]X!]fX!l]X!p]X#R]X#S]X#`]X#`fX#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~O!gfX!k]X!kfX(rfX~P'LTOP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_XO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]<iO!^$qa~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<tO!S${O!_$|O!i>WO!l$xO#j<zO$W%`O$t<vO$v<xO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Ol)dO~P(!yOr!eX(r!eX~P#!iOr(jX(r(jX~P##[O!^]X!^fX~P'LTO!YfX!Y$zX!]fX!]$zX#`fX~P!0SO#k<^O~O!g#vO#k<^O~O#`<nO~Oj<bO~O#`=OO!](wX!^(wX~O#`<nO!](uX!^(uX~O#k=PO~Og=RO~P!1WO#k=XO~O#k=YO~Og=RO(T&ZO~O!g#vO#k=ZO~O!g#vO#k=PO~O$O=[O~P#BwO#k=]O~O#k=^O~O#k=cO~O#k=dO~O#k=eO~O#k=fO~O$O=gO~P!1WO$O=hO~P!1WOl=sO~P7eOk#S#T#U#W#X#[#i#j#u$n$t$v$y%]%^%h%i%j%q%s%v%w%y%{~(OT#o!X'|(U#ps#n#qr!Q'}$]'}(T$_(e~",goto:"$9Y)]PPPPPP)^PP)aP)rP+W/]PPPP6mPP7TPP=QPPP@tPA^PA^PPPA^PCfPA^PA^PA^PCjPCoPD^PIWPPPI[PPPPI[L_PPPLeMVPI[PI[PP! eI[PPPI[PI[P!#lI[P!'S!(X!(bP!)U!)Y!)U!,gPPPPPPP!-W!(XPP!-h!/YP!2iI[I[!2n!5z!:h!:h!>gPPP!>oI[PPPPPPPPP!BOP!C]PPI[!DnPI[PI[I[I[I[I[PI[!FQP!I[P!LbP!Lf!Lp!Lt!LtP!IXP!Lx!LxP#!OP#!SI[PI[#!Y#%_CjA^PA^PA^A^P#&lA^A^#)OA^#+vA^#.SA^A^#.r#1W#1W#1]#1f#1W#1qPP#1WPA^#2ZA^#6YA^A^6mPPP#:_PPP#:x#:xP#:xP#;`#:xPP#;fP#;]P#;]#;y#;]#<e#<k#<n)aP#<q)aP#<z#<z#<zP)aP)aP)aP)aPP)aP#=Q#=TP#=T)aP#=XP#=[P)aP)aP)aP)aP)aP)a)aPP#=b#=h#=s#=y#>P#>V#>]#>k#>q#>{#?R#?]#?c#?s#?y#@k#@}#AT#AZ#Ai#BO#Cs#DR#DY#Et#FS#Gt#HS#HY#H`#Hf#Hp#Hv#H|#IW#Ij#IpPPPPPPPPPPP#IvPPPPPPP#Jk#Mx$ b$ i$ qPPP$']P$'f$*_$0x$0{$1O$1}$2Q$2X$2aP$2g$2jP$3W$3[$4S$5b$5g$5}PP$6S$6Y$6^$6a$6e$6i$7e$7|$8e$8i$8l$8o$8y$8|$9Q$9UR!|RoqOXst!Z#d%m&r&t&u&w,s,x2[2_Y!vQ'`-e1o5{Q%tvQ%|yQ&T|Q&j!VS'W!e-]Q'f!iS'l!r!yU*k$|*Z*oQ+o%}S+|&V&WQ,d&dQ-c'_Q-m'gQ-u'mQ0[*qQ1b,OQ1y,eR<{<Y%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_S#q]<V!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU+P%]<s<tQ+t&PQ,f&gQ,m&oQ0x+gQ0}+iQ1Y+uQ2R,kQ3`.gQ5`0|Q5f1TQ6[1zQ7Y3dQ8`5gR9e7['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S!S!nQ!r!v!y!z$|'W'_'`'l'm'n*k*o*q*r-]-c-e-u0[0_1o5{5}%[$ti#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q&X|Q'U!eS'[%i-`Q+t&PQ,P&WQ,f&gQ0n+SQ1Y+uQ1_+{Q2Q,jQ2R,kQ5f1TQ5o1aQ6[1zQ6_1|Q6`2PQ8`5gQ8c5lQ8|6bQ:X8dQ:f8yQ;V:YR<}*ZrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R,h&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'b'r(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>R>S[#]WZ#W#Z'X(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ%wxQ%{yW&Q|&V&W,OQ&_!TQ'c!hQ'e!iQ(q#sS+n%|%}Q+r&PQ,_&bQ,c&dS-l'f'gQ.i(rQ1R+oQ1X+uQ1Z+vQ1^+zQ1t,`S1x,d,eQ2|-mQ5e1TQ5i1WQ5n1`Q6Z1yQ8_5gQ8b5kQ8f5pQ:T8^R;T:U!U$zi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y!^%yy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{Q+h%wQ,T&[Q,W&]Q,b&dQ.h(qQ1s,_U1w,c,d,eQ3e.iQ6U1tS6Y1x1yQ8x6Z#f>T#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o>U<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hW%Ti%V*y>PS&[!Q&iQ&]!RQ&^!SU*}%[%d=sR,R&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^T)z$u){V+P%]<s<tW'[!e%i*Z-`S(}#y#zQ+c%rQ+y&SS.b(m(nQ1j,XQ5T0kR8i5u'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S$i$^c#Y#e%q%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.|.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vT#TV#U'RkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ'Y!eR2q-]!W!nQ!e!r!v!y!z$|'W'_'`'l'm'n*Z*k*o*q*r-]-c-e-u0[0_1o5{5}R1l,ZnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&y!^Q'v!xS(s#u<^Q+l%zQ,]&_Q,^&aQ-j'dQ-w'oS.r(x=PS0q+X=ZQ1P+mQ1n,[Q2c,zQ2e,{Q2m-WQ2z-kQ2}-oS5Y0r=eQ5a1QS5d1S=fQ6t2oQ6x2{Q6}3SQ8]5bQ9Y6vQ9Z6yQ9^7OR:l9V$d$]c#Y#e%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vS(o#p'iQ)P#zS+b%q.|S.c(n(pR3^.d'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS#q]<VQ&t!XQ&u!YQ&w![Q&x!]R2Z,vQ'a!hQ+e%wQ-h'cS.e(q+hQ2x-gW3b.h.i0w0yQ6w2yW7U3_3a3e5^U9a7V7X7ZU:q9c9d9fS;b:p:sQ;p;cR;x;qU!wQ'`-eT5y1o5{!Q_OXZ`st!V!Z#d#h%e%m&i&k&r&t&u&w(j,s,x.[2[2_]!pQ!r'`-e1o5{T#q]<V%^{OPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S(}#y#zS.b(m(n!s=l$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU$fd)_,mS(p#p'iU*v%R(w4OU0m+O.n7gQ5^0xQ7V3`Q9d7YR:s9em!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}Q't!uS(f#g2US-s'k'wQ/s*]Q0R*jQ3U-vQ4f/tQ4r0TQ4s0UQ4x0^Q7r4`S7}4t4vS8R4y4{Q9r7sQ9v7yQ9{8OQ:Q8TS:{9w9xS;g:|;PS;s;h;iS;{;t;uS<P;|;}R<S<QQ#wbQ's!uS(e#g2US(g#m+WQ+Y%fQ+j%xQ+p&OU-r'k't'wQ.W(fU/r*]*`/wQ0S*jQ0V*lQ1O+kQ1u,aS3R-s-vQ3Z.`S4e/s/tQ4n0PS4q0R0^Q4u0WQ6W1vQ7P3US7q4`4bQ7u4fU7|4r4x4{Q8P4wQ8v6XS9q7r7sQ9u7yQ9}8RQ:O8SQ:c8wQ:y9rS:z9v9xQ;S:QQ;^:dS;f:{;PS;r;g;hS;z;s;uS<O;{;}Q<R<PQ<T<SQ=o=jQ={=tR=|=uV!wQ'`-e%^aOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S#wz!j!r=i$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=o>R%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Q%fj!^%xy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{S&Oz!jQ+k%yQ,a&dW1v,b,c,d,eU6X1w1x1yS8w6Y6ZQ:d8x!r=j$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ=t>QR=u>R%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Y#bWZ#W#Z(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ,n&o!p=k$Z$n)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=n'XU']!e%i*ZR2s-`%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ,m&oQ0x+gQ3`.gQ7Y3dR9e7[!b$Tc#Y%q(S(Y(t(y)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!P<d)^)q-Z.|2k2n3p3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!f$Vc#Y%q(S(Y(t(y)W)X)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!T<f)^)q-Z.|2k2n3p3v3w3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!^$Zc#Y%q(S(Y(t(y)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<WQ4_/kz>S)^)q-Z.|2k2n3p4P4X6u7b7k7l8k9X9g9m9n;W;`=vQ>X>ZR>Y>['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS$oh$pR4U/U'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$kf$qQ$ifS)j$l)nR)v$qT$jf$qT)l$l)n'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$oh$pQ$rhR)u$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_!s>Q$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'b)O)s*i+]+g,p,s,x-i.g/V/n0]0l1r2S2T2V2X2[2_2a3d4T4z6T6e6f6i7[8t9T!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^Q+T%aQ/c*Oo4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!U$yi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>YQ*c$zU*l$|*Z*oQ+U%bQ0W*m#f=q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n=r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hQ=w>TQ=x>UQ=y>VR=z>W!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hnoOXst!Z#d%m&r&t&u&w,s,x2[2_S*f${*YQ-R'OQ-S'QR4i/y%[%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q,U&]Q1h,WQ5s1gR8h5tV*n$|*Z*oU*n$|*Z*oT5z1o5{S0P*i/nQ4w0]T8S4z:]Q+j%xQ0V*lQ1O+kQ1u,aQ6W1vQ8v6XQ:c8wR;^:d!U%Oi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Yx*R$v)e*S*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>OS0`*t0a#f<o#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<p<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!d=S(u)c*[*e.j.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[`=T3}7c7f7j9h:t:w;yS=_.l3iT=`7e9k!U%Qi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y|*T$v)e*U*t+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>OS0b*u0c#f<q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!h=U(u)c*[*e.k.l.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[d=V3}7d7e7j9h9i:t:u:w;yS=a.m3jT=b7f9lrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q&f!UR,p&ornOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R&f!UQ,Y&^R1d,RsnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q1p,_S6R1s1tU8p6P6Q6US:_8r8sS;Y:^:aQ;m;ZR;w;nQ&m!VR,i&iR6_1|R:f8yW&Q|&V&W,OR1Z+vQ&r!WR,s&sR,y&xT2],x2_R,}&yQ,|&yR2f,}Q'y!{R-y'ySsOtQ#dXT%ps#dQ#OTR'{#OQ#RUR'}#RQ){$uR/`){Q#UVR(Q#UQ#XWU(W#X(X.QQ(X#YR.Q(YQ-^'YR2r-^Q.u(yS3m.u3nR3n.vQ-e'`R2v-eY!rQ'`-e1o5{R'j!rQ/Q)eR4S/QU#_W%h*YU(_#_(`.RQ(`#`R.R(ZQ-a']R2t-at`OXst!V!Z#d%m&i&k&r&t&u&w,s,x2[2_S#hZ%eU#r`#h.[R.[(jQ(k#jQ.X(gW.a(k.X3X7RQ3X.YR7R3YQ)n$lR/W)nQ$phR)t$pQ$`cU)a$`-|<jQ-|<WR<j)qQ/q*]W4c/q4d7t9sU4d/r/s/tS7t4e4fR9s7u$e*Q$v(u)c)e*[*e*t*u+Q+R+V.l.m.o.p.q/_/g/i/k/v/|0d0e0v1e3f3g3h3}4R4[4g4h4l4|5O5R5S5W5r7]7^7_7`7e7f7h7i7j7p7w7z8U8X8Z9h9i9j9t9|:R:S:t:u:v:w:x:};R;e;j;v;y=p=}>O>Z>[Q/z*eU4k/z4m7xQ4m/|R7x4lS*o$|*ZR0Y*ox*S$v)e*t*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>O!d.j(u)c*[*e.l.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/h*S.j7ca7c3}7e7f7j9h:t:w;yQ0a*tQ3i.lU4}0a3i9kR9k7e|*U$v)e*t*u+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>O!h.k(u)c*[*e.l.m.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/j*U.k7de7d3}7e7f7j9h9i:t:u:w;yQ0c*uQ3j.mU5P0c3j9lR9l7fQ*z%UR0g*zQ5]0vR8Y5]Q+_%kR0u+_Q5v1jS8j5v:[R:[8kQ,[&_R1m,[Q5{1oR8m5{Q1{,fS6]1{8zR8z6_Q1U+rW5h1U5j8a:VQ5j1XQ8a5iR:V8bQ+w&QR1[+wQ2_,xR6m2_YrOXst#dQ&v!ZQ+a%mQ,r&rQ,t&tQ,u&uQ,w&wQ2Y,sS2],x2_R6l2[Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'q!uQ+`%lQ+l%zQ,Q&XQ,h&mQ-P&|W-p'k's't'wQ-w'oQ0X*nQ1P+mQ1c,PS2O,i,lQ2g-OQ2h-RQ2i-SQ2}-oW3P-r-s-v-xQ5a1QQ5m1_Q5q1eQ6V1uQ6a2QQ6k2ZU6z3O3R3UQ6}3SQ8]5bQ8e5oQ8g5rQ8l5zQ8u6WQ8{6`S9[6{7PQ9^7OQ:W8cQ:b8vQ:g8|Q:n9]Q;U:XQ;]:cQ;a:oQ;l;VR;o;^Q%zyQ'd!iQ'o!uU+m%{%|%}Q-W'VU-k'e'f'gS-o'k'uQ0Q*jS1Q+n+oQ2o-YS2{-l-mQ3S-tS4p0R0UQ5b1RQ6v2uQ6y2|Q7O3TU7{4r4s4vQ9z7}R;O9{S$wi>PR*{%VU%Ui%V>PR0f*yQ$viS(u#v+iS)c$b$cQ)e$dQ*[$xS*e${*YQ*t%OQ*u%QQ+Q%^Q+R%_Q+V%cQ.l<oQ.m<qQ.o<uQ.p<wQ.q<yQ/_)yQ/g*RQ/i*TQ/k*VQ/v*aS/|*g/mQ0d*wQ0e*xl0v+f,V.f1i1q3c6S7W8q9b:`:r;[;dQ1e,SQ3f=SQ3g=UQ3h=XS3}<l<mQ4R/PS4[/d4^Q4g/xQ4h/yQ4l/{Q4|0`Q5O0bQ5R0iQ5S0jQ5W0oQ5r1fQ7]=]Q7^=_Q7_=aQ7`=cQ7e<pQ7f<rQ7h<vQ7i<xQ7j<zQ7p4_Q7w4jQ7z4oQ8U5QQ8X5[Q8Z5_Q9h=YQ9i=TQ9j=VQ9t7vQ9|8QQ:R8VQ:S8[Q:t=^Q:u=`Q:v=bQ:w=dQ:x9pQ:}9yQ;R:PQ;e=gQ;j;QQ;v;kQ;y=hQ=p>PQ=}>XQ>O>YQ>Z>]R>[>^Q+O%]Q.n<sR7g<tnpOXst!Z#d%m&r&t&u&w,s,x2[2_Q!fPS#fZ#oQ&|!`W'h!o*i0]4zQ(P#SQ)Q#{Q)r$nS,l&k&nQ,q&oQ-O&{S-T'T/nQ-g'bQ.x)OQ/[)sQ0s+]Q0y+gQ2W,pQ2y-iQ3a.gQ4W/VQ5U0lQ6Q1rQ6c2SQ6d2TQ6h2VQ6j2XQ6o2aQ7Z3dQ7m4TQ8s6TQ9P6eQ9Q6fQ9S6iQ9f7[Q:a8tR:k9T#[cOPXZst!Z!`!o#d#o#{%m&k&n&o&r&t&u&w&{'T'b)O*i+]+g,p,s,x-i.g/n0]0l1r2S2T2V2X2[2_2a3d4z6T6e6f6i7[8t9TQ#YWQ#eYQ%quQ%svS%uw!gS(S#W(VQ(Y#ZQ(t#uQ(y#xQ)R$OQ)S$PQ)T$QQ)U$RQ)V$SQ)W$TQ)X$UQ)Y$VQ)Z$WQ)[$XQ)^$ZQ)`$_Q)b$aQ)g$eW)q$n)s/V4TQ+d%tQ+x&RS-Z'X2pQ-x'rS-}(T.PQ.S(]Q.U(dQ.s(xQ.v(zQ.z<UQ.|<XQ.}<YQ/O<]Q/b)}Q0p+XQ2k-UQ2n-XQ3O-qQ3V.VQ3k.tQ3p<^Q3q<_Q3r<`Q3s<aQ3t<bQ3u<cQ3v<dQ3w<eQ3x<fQ3y<gQ3z<hQ3{.{Q3|<kQ4P<nQ4Q<{Q4X<iQ5X0rQ5c1SQ6u=OQ6{3QQ7Q3WQ7a3lQ7b=PQ7k=RQ7l=ZQ8k5wQ9X6sQ9]6|Q9g=[Q9m=eQ9n=fQ:o9_Q;W:ZQ;`:mQ<W#SR=v>SR#[WR'Z!el!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}S'V!e-]U*j$|*Z*oS-Y'W'_S0U*k*qQ0^*rQ2u-cQ4v0[R4{0_R({#xQ!fQT-d'`-e]!qQ!r'`-e1o5{Q#p]R'i<VR)f$dY!uQ'`-e1o5{Q'k!rS'u!v!yS'w!z5}S-t'l'mQ-v'nR3T-uT#kZ%eS#jZ%eS%km,oU(g#h#i#lS.Y(h(iQ.^(jQ0t+^Q3Y.ZU3Z.[.]._S7S3[3]R9`7Td#^W#W#Z%h(T(^*Y+Z.T/mr#gZm#h#i#l%e(h(i(j+^.Z.[.]._3[3]7TS*]$x*bQ/t*^Q2U,oQ2l-VQ4`/pQ6q2dQ7s4aQ9W6rT=m'X+[V#aW%h*YU#`W%h*YS(U#W(^U(Z#Z+Z/mS-['X+[T.O(T.TV'^!e%i*ZQ$lfR)x$qT)m$l)nR4V/UT*_$x*bT*h${*YQ0w+fQ1g,VQ3_.fQ5t1iQ6P1qQ7X3cQ8r6SQ9c7WQ:^8qQ:p9bQ;Z:`Q;c:rQ;n;[R;q;dnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&l!VR,h&itmOXst!U!V!Z#d%m&i&r&t&u&w,s,x2[2_R,o&oT%lm,oR1k,XR,g&gQ&U|S+}&V&WR1^,OR+s&PT&p!W&sT&q!W&sT2^,x2_",nodeNames:"⚠ ArithOp ArithOp ?. JSXStartTag LineComment BlockComment Script Hashbang ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:380,context:gI,nodeProps:[["isolate",-8,5,6,14,37,39,51,53,55,""],["group",-26,9,17,19,68,207,211,215,216,218,221,224,234,237,243,245,247,249,252,258,264,266,268,270,272,274,275,"Statement",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,120,121,136,139,141,142,143,144,145,147,148,167,169,171,"Expression",-23,31,33,37,41,43,45,173,175,177,178,180,181,182,184,185,186,188,189,190,201,203,205,206,"Type",-3,88,103,109,"ClassItem"],["openedBy",23,"<",38,"InterpolationStart",56,"[",60,"{",73,"(",160,"JSXStartCloseTag"],["closedBy",-2,24,168,">",40,"InterpolationEnd",50,"]",61,"}",74,")",165,"JSXEndTag"]],propSources:[wI],skippedNodes:[0,5,6,278],repeatNodeCount:37,tokenData:"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$<r#p#q$=h#q#r$>x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$i&j(Wp(Z!b'|0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(X#S$i&j'}0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$i&j(Wp(Z!b'}0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$i&j!p),Q(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(V':f$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$i&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$d`$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$d``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$d`$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(Z!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$d`(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$i&j(Wp(Z!bOY%ZYZ&cZq%Zqr<Srs&}st%ZtuCruw%Zwx(rx!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr(r<__WS$i&j(Wp(Z!bOY<SYZ&cZr<Srs=^sw<Swx@nx!^<S!^!_Bm!_#O<S#O#P>`#P#o<S#o#pBm#p;'S<S;'S;=`Cl<%lO<S(Q=g]WS$i&j(Z!bOY=^YZ&cZw=^wx>`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$i&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(Z!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$i&j(WpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(WpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Wp(Z!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l<S%9[C}i$i&j(o%1l(Wp(Z!bOY%ZYZ&cZr%Zrs&}st%ZtuCruw%Zwx(rx!Q%Z!Q![Cr![!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr%9[EoP;=`<%lCr07[FRk$i&j(Wp(Z!b$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr+dHRk$i&j(Wp(Z!b$]#tOY%ZYZ&cZr%Zrs&}st%ZtuGvuw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Gv![!^%Z!^!_*g!_!c%Z!c!}Gv!}#O%Z#O#P&c#P#R%Z#R#SGv#S#T%Z#T#oGv#o#p*g#p$g%Z$g;'SGv;'S;=`Iv<%lOGv+dIyP;=`<%lGv07[JPP;=`<%lEr(KWJ_`$i&j(Wp(Z!b#p(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWKl_$i&j$Q(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,#xLva(z+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sv%ZvwM{wx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWNW`$i&j#z(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At! c_(Y';W$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b'l!!i_$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b&z!#mX$i&jOw!#hwx6cx!^!#h!^!_!$Y!_#o!#h#o#p!$Y#p;'S!#h;'S;=`!$r<%lO!#h`!$]TOw!$Ywx7]x;'S!$Y;'S;=`!$l<%lO!$Y`!$oP;=`<%l!$Y&z!$uP;=`<%l!#h'l!%R]$d`$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r!Q!&PZ(WpOY!%zYZ!$YZr!%zrs!$Ysw!%zwx!&rx#O!%z#O#P!$Y#P;'S!%z;'S;=`!']<%lO!%z!Q!&yU$d`(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)r!Q!'`P;=`<%l!%z'l!'fP;=`<%l!!b/5|!'t_!l/.^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#&U!)O_!k!Lf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z-!n!*[b$i&j(Wp(Z!b(U%&f#q(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{!+d{!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW!+o`$i&j(Wp(Z!b#n(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;x!,|`$i&j(Wp(Z!br+4YOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,$U!.Z_!]+Jf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!/ec$i&j(Wp(Z!b!Q.2^OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!0p!P!Q%Z!Q![!3Y![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!0ya$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!2O!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!2Z_![!L^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!3eg$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!3Y![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S!3Y#S#X%Z#X#Y!4|#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!5Vg$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!6n|}%Z}!O!6n!O!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!6wc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!8_c$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!9uf$i&j(Wp(Z!b#o(ChOY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcxz!;Zz{#-}{!P!;Z!P!Q#/d!Q!^!;Z!^!_#(i!_!`#7S!`!a#8i!a!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z?O!;fb$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z>^!<w`$i&j(Z!b!X7`OY!<nYZ&cZw!<nwx!=yx!P!<n!P!Q!Eq!Q!^!<n!^!_!Gr!_!}!<n!}#O!KS#O#P!Dy#P#o!<n#o#p!Gr#p;'S!<n;'S;=`!L]<%lO!<n<z!>Q^$i&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!?Td$i&j!X7`O!^&c!_#W&c#W#X!>|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c<z!C][$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#O!CW#O#P!DR#P#Q!=y#Q#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DWX$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DvP;=`<%l!CW<z!EOX$i&jOY!=yYZ&cZ!^!=y!^!_!@c!_#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!EnP;=`<%l!=y>^!Ezl$i&j(Z!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(Z!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(Z!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(Z!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$i&j(Z!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!<n#Q#o!KS#o#p!JU#p;'S!KS;'S;=`!LV<%lO!KS>^!LYP;=`<%l!KS>^!L`P;=`<%l!<n=l!Ll`$i&j(Wp!X7`OY!LcYZ&cZr!Lcrs!=ys!P!Lc!P!Q!Mn!Q!^!Lc!^!_# o!_!}!Lc!}#O#%P#O#P!Dy#P#o!Lc#o#p# o#p;'S!Lc;'S;=`#&Y<%lO!Lc=l!Mwl$i&j(Wp!X7`OY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#W(r#W#X!Mn#X#Z(r#Z#[!Mn#[#](r#]#^!Mn#^#a(r#a#b!Mn#b#g(r#g#h!Mn#h#i(r#i#j!Mn#j#k!Mn#k#m(r#m#n!Mn#n#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r8Q# vZ(Wp!X7`OY# oZr# ors!@cs!P# o!P!Q#!i!Q!}# o!}#O#$R#O#P!Bq#P;'S# o;'S;=`#$y<%lO# o8Q#!pe(Wp!X7`OY)rZr)rs#O)r#P#W)r#W#X#!i#X#Z)r#Z#[#!i#[#])r#]#^#!i#^#a)r#a#b#!i#b#g)r#g#h#!i#h#i)r#i#j#!i#j#k#!i#k#m)r#m#n#!i#n;'S)r;'S;=`*Z<%lO)r8Q#$WX(WpOY#$RZr#$Rrs!Ars#O#$R#O#P!B[#P#Q# o#Q;'S#$R;'S;=`#$s<%lO#$R8Q#$vP;=`<%l#$R8Q#$|P;=`<%l# o=l#%W^$i&j(WpOY#%PYZ&cZr#%Prs!CWs!^#%P!^!_#$R!_#O#%P#O#P!DR#P#Q!Lc#Q#o#%P#o#p#$R#p;'S#%P;'S;=`#&S<%lO#%P=l#&VP;=`<%l#%P=l#&]P;=`<%l!Lc?O#&kn$i&j(Wp(Z!b!X7`OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#W%Z#W#X#&`#X#Z%Z#Z#[#&`#[#]%Z#]#^#&`#^#a%Z#a#b#&`#b#g%Z#g#h#&`#h#i%Z#i#j#&`#j#k#&`#k#m%Z#m#n#&`#n#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z9d#(r](Wp(Z!b!X7`OY#(iZr#(irs!Grsw#(iwx# ox!P#(i!P!Q#)k!Q!}#(i!}#O#+`#O#P!Bq#P;'S#(i;'S;=`#,`<%lO#(i9d#)th(Wp(Z!b!X7`OY*gZr*grs'}sw*gwx)rx#O*g#P#W*g#W#X#)k#X#Z*g#Z#[#)k#[#]*g#]#^#)k#^#a*g#a#b#)k#b#g*g#g#h#)k#h#i*g#i#j#)k#j#k#)k#k#m*g#m#n#)k#n;'S*g;'S;=`+Z<%lO*g9d#+gZ(Wp(Z!bOY#+`Zr#+`rs!JUsw#+`wx#$Rx#O#+`#O#P!B[#P#Q#(i#Q;'S#+`;'S;=`#,Y<%lO#+`9d#,]P;=`<%l#+`9d#,cP;=`<%l#(i?O#,o`$i&j(Wp(Z!bOY#,fYZ&cZr#,frs!KSsw#,fwx#%Px!^#,f!^!_#+`!_#O#,f#O#P!DR#P#Q!;Z#Q#o#,f#o#p#+`#p;'S#,f;'S;=`#-q<%lO#,f?O#-tP;=`<%l#,f?O#-zP;=`<%l!;Z07[#.[b$i&j(Wp(Z!b(O0/l!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z07[#/o_$i&j(Wp(Z!bT0/lOY#/dYZ&cZr#/drs#0nsw#/dwx#4Ox!^#/d!^!_#5}!_#O#/d#O#P#1p#P#o#/d#o#p#5}#p;'S#/d;'S;=`#6|<%lO#/d06j#0w]$i&j(Z!bT0/lOY#0nYZ&cZw#0nwx#1px!^#0n!^!_#3R!_#O#0n#O#P#1p#P#o#0n#o#p#3R#p;'S#0n;'S;=`#3x<%lO#0n05W#1wX$i&jT0/lOY#1pYZ&cZ!^#1p!^!_#2d!_#o#1p#o#p#2d#p;'S#1p;'S;=`#2{<%lO#1p0/l#2iST0/lOY#2dZ;'S#2d;'S;=`#2u<%lO#2d0/l#2xP;=`<%l#2d05W#3OP;=`<%l#1p01O#3YW(Z!bT0/lOY#3RZw#3Rwx#2dx#O#3R#O#P#2d#P;'S#3R;'S;=`#3r<%lO#3R01O#3uP;=`<%l#3R06j#3{P;=`<%l#0n05x#4X]$i&j(WpT0/lOY#4OYZ&cZr#4Ors#1ps!^#4O!^!_#5Q!_#O#4O#O#P#1p#P#o#4O#o#p#5Q#p;'S#4O;'S;=`#5w<%lO#4O00^#5XW(WpT0/lOY#5QZr#5Qrs#2ds#O#5Q#O#P#2d#P;'S#5Q;'S;=`#5q<%lO#5Q00^#5tP;=`<%l#5Q05x#5zP;=`<%l#4O01p#6WY(Wp(Z!bT0/lOY#5}Zr#5}rs#3Rsw#5}wx#5Qx#O#5}#O#P#2d#P;'S#5};'S;=`#6v<%lO#5}01p#6yP;=`<%l#5}07[#7PP;=`<%l#/d)3h#7ab$i&j$Q(Ch(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;ZAt#8vb$Z#t$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z'Ad#:Zp$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#U%Z#U#V#?i#V#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#<jk$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$i&j$O)Lv(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-<U(Wp(Z!b$n7`OY*gZr*grs'}sw*gwx)rx!P*g!P!Q#MO!Q!^*g!^!_#Mt!_!`$ f!`#O*g#P;'S*g;'S;=`+Z<%lO*g(n#MXX$k&j(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#M}Z#r(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#Np!`#O*g#P;'S*g;'S;=`+Z<%lO*g(El#NyX$Q(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El$ oX#s(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g*)x$!ga#`*!Y$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a$#l!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[$#w_#k(Cl$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x$%Vag!*r#s(Ch$f#|$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`$&[!`!a$'f!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$&g_#s(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$'qa#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`!a$(v!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$)R`#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(Kd$*`a(r(Ct$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!a%Z!a!b$+e!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$+p`$i&j#{(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`$,}_!|$Ip$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f$.X_!S0,v$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(n$/]Z$i&jO!^$0O!^!_$0f!_#i$0O#i#j$0k#j#l$0O#l#m$2^#m#o$0O#o#p$0f#p;'S$0O;'S;=`$4i<%lO$0O(n$0VT_#S$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#S$0kO_#S(n$0p[$i&jO!Q&c!Q![$1f![!^&c!_!c&c!c!i$1f!i#T&c#T#Z$1f#Z#o&c#o#p$3|#p;'S&c;'S;=`&w<%lO&c(n$1kZ$i&jO!Q&c!Q![$2^![!^&c!_!c&c!c!i$2^!i#T&c#T#Z$2^#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$2cZ$i&jO!Q&c!Q![$3U![!^&c!_!c&c!c!i$3U!i#T&c#T#Z$3U#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$3ZZ$i&jO!Q&c!Q![$0O![!^&c!_!c&c!c!i$0O!i#T&c#T#Z$0O#Z#o&c#p;'S&c;'S;=`&w<%lO&c#S$4PR!Q![$4Y!c!i$4Y#T#Z$4Y#S$4]S!Q![$4Y!c!i$4Y#T#Z$4Y#q#r$0f(n$4lP;=`<%l$0O#1[$4z_!Y#)l$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$6U`#x(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;p$7c_$i&j(Wp(Z!b(a+4QOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$8qk$i&j(Wp(Z!b(T,2j$_#t(e$I[OY%ZYZ&cZr%Zrs&}st%Ztu$8buw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$8b![!^%Z!^!_*g!_!c%Z!c!}$8b!}#O%Z#O#P&c#P#R%Z#R#S$8b#S#T%Z#T#o$8b#o#p*g#p$g%Z$g;'S$8b;'S;=`$<l<%lO$8b+d$:qk$i&j(Wp(Z!b$_#tOY%ZYZ&cZr%Zrs&}st%Ztu$:fuw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$:f![!^%Z!^!_*g!_!c%Z!c!}$:f!}#O%Z#O#P&c#P#R%Z#R#S$:f#S#T%Z#T#o$:f#o#p*g#p$g%Z$g;'S$:f;'S;=`$<f<%lO$:f+d$<iP;=`<%l$:f07[$<oP;=`<%l$8b#Jf$<{X!_#Hb(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g,#x$=sa(y+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$+e#q;'S%Z;'S;=`+a<%lO%Z)>v$?V_!^(CdvBr$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$i&j(Wp(Z!b'|0/l$]#t(T,2j(e$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$i&j(Wp(Z!b'}0/l$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr",tokenizers:[OI,yI,xI,bI,2,3,4,5,6,7,8,9,10,11,12,13,14,mI,new Rd("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(c~~",141,340),new Rd("j~RQYZXz{^~^O(Q~~aP!P!Qd~iO(R~~",25,323)],topRules:{Script:[0,7],SingleExpression:[1,276],SingleClassItem:[2,277]},dialects:{jsx:0,ts:15175},dynamicPrecedences:{80:1,82:1,94:1,169:1,199:1},specialized:[{term:327,get:s=>SI[s]||-1},{term:343,get:s=>vI[s]||-1},{term:95,get:s=>_I[s]||-1}],tokenPrec:15201}),xw=[Ce("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),Ce("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),Ce("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),Ce("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),Ce("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),Ce(`try {
|
|
263
|
+
\${}
|
|
264
|
+
} catch (\${error}) {
|
|
265
|
+
\${}
|
|
266
|
+
}`,{label:"try",detail:"/ catch block",type:"keyword"}),Ce("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),Ce(`if (\${}) {
|
|
267
|
+
\${}
|
|
268
|
+
} else {
|
|
269
|
+
\${}
|
|
270
|
+
}`,{label:"if",detail:"/ else block",type:"keyword"}),Ce(`class \${name} {
|
|
271
|
+
constructor(\${params}) {
|
|
272
|
+
\${}
|
|
273
|
+
}
|
|
274
|
+
}`,{label:"class",detail:"definition",type:"keyword"}),Ce('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Ce('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],$I=xw.concat([Ce("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Ce("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Ce("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),YO=new BR,bw=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Dr(s){return(t,e)=>{let i=t.node.getChild("VariableDefinition");return i&&e(i,s),!0}}const CI=["FunctionDeclaration"],PI={FunctionDeclaration:Dr("function"),ClassDeclaration:Dr("class"),ClassExpression:()=>!0,EnumDeclaration:Dr("constant"),TypeAliasDeclaration:Dr("type"),NamespaceDeclaration:Dr("namespace"),VariableDefinition(s,t){s.matchContext(CI)||t(s,"variable")},TypeDefinition(s,t){t(s,"type")},__proto__:null};function ww(s,t){let e=YO.get(t);if(e)return e;let i=[],n=!0;function r(o,a){let l=s.sliceString(o.from,o.to);i.push({label:l,type:a})}return t.cursor(Rt.IncludeAnonymous).iterate(o=>{if(n)n=!1;else if(o.name){let a=PI[o.name];if(a&&a(o,r)||bw.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of ww(s,o.node))i.push(a);return!1}}),YO.set(t,i),i}const NO=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,Sw=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function TI(s){let t=te(s.state).resolveInner(s.pos,-1);if(Sw.indexOf(t.name)>-1)return null;let e=t.name=="VariableName"||t.to-t.from<20&&NO.test(s.state.sliceDoc(t.from,t.to));if(!e&&!s.explicit)return null;let i=[];for(let n=t;n;n=n.parent)bw.has(n.name)&&(i=i.concat(ww(s.state.doc,n)));return{options:i,from:e?t.from:s.pos,validFor:NO}}const sn=Dl.define({name:"javascript",parser:kI.configure({props:[Jb.add({IfStatement:Pc({except:/^\s*({|else\b)/}),TryStatement:Pc({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:o5,SwitchBody:s=>{let t=s.textAfter,e=/^\s*\}/.test(t),i=/^\s*(case|default)\b/.test(t);return s.baseIndent+(e?0:i?1:2)*s.unit},Block:r5({closing:"}"}),ArrowFunction:s=>s.baseIndent+s.unit,"TemplateString BlockComment":()=>null,"Statement Property":Pc({except:/^\s*{/}),JSXElement(s){let t=/^\s*<\//.test(s.textAfter);return s.lineIndent(s.node.from)+(t?0:s.unit)},JSXEscape(s){let t=/\s*\}/.test(s.textAfter);return s.lineIndent(s.node.from)+(t?0:s.unit)},"JSXOpenTag JSXSelfClosingTag"(s){return s.column(s.node.from)+s.unit}}),i1.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":c5,BlockComment(s){return{from:s.from+2,to:s.to-2}},JSXElement(s){let t=s.firstChild;if(!t||t.name=="JSXSelfClosingTag")return null;let e=s.lastChild;return{from:t.to,to:e.type.isError?s.to:e.from}},"JSXSelfClosingTag JSXOpenTag"(s){var t;let e=(t=s.firstChild)===null||t===void 0?void 0:t.nextSibling,i=s.lastChild;return!e||e.type.isError?null:{from:e.to,to:i.type.isError?s.to:i.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),vw={test:s=>/^JSX/.test(s.name),facet:Hb({commentTokens:{block:{open:"{/*",close:"*/}"}}})},MI=sn.configure({dialect:"ts"},"typescript"),AI=sn.configure({dialect:"jsx",props:[Lf.add(s=>s.isTop?[vw]:void 0)]}),QI=sn.configure({dialect:"jsx ts",props:[Lf.add(s=>s.isTop?[vw]:void 0)]},"typescript");let _w=s=>({label:s,type:"keyword"});const kw="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(_w),RI=kw.concat(["declare","implements","private","protected","public"].map(_w));function EI(s={}){let t=s.jsx?s.typescript?QI:AI:s.typescript?MI:sn,e=s.typescript?$I.concat(RI):xw.concat(kw);return new HR(t,[sn.data.of({autocomplete:ML(Sw,iw(e))}),sn.data.of({autocomplete:TI}),s.jsx?ZI:[]])}function LI(s){for(;;){if(s.name=="JSXOpenTag"||s.name=="JSXSelfClosingTag"||s.name=="JSXFragmentTag")return s;if(s.name=="JSXEscape"||!s.parent)return null;s=s.parent}}function VO(s,t,e=s.length){for(let i=t==null?void 0:t.firstChild;i;i=i.nextSibling)if(i.name=="JSXIdentifier"||i.name=="JSXBuiltin"||i.name=="JSXNamespacedName"||i.name=="JSXMemberExpression")return s.sliceString(i.from,Math.min(i.to,e));return""}const II=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),ZI=q.inputHandler.of((s,t,e,i,n)=>{if((II?s.composing:s.compositionStarted)||s.state.readOnly||t!=e||i!=">"&&i!="/"||!sn.isActiveAt(s.state,t,-1))return!1;let r=n(),{state:o}=r,a=o.changeByRange(l=>{var h;let{head:c}=l,u=te(o).resolveInner(c-1,-1),d;if(u.name=="JSXStartTag"&&(u=u.parent),!(o.doc.sliceString(c-1,c)!=i||u.name=="JSXAttributeValue"&&u.to>c)){if(i==">"&&u.name=="JSXFragmentTag")return{range:l,changes:{from:c,insert:"</>"}};if(i=="/"&&u.name=="JSXStartCloseTag"){let f=u.parent,p=f.parent;if(p&&f.from==c-2&&((d=VO(o.doc,p.firstChild,c))||((h=p.firstChild)===null||h===void 0?void 0:h.name)=="JSXFragmentTag")){let g=`${d}>`;return{range:D.cursor(c+g.length,-1),changes:{from:c,insert:g}}}}else if(i==">"){let f=LI(u);if(f&&f.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(c,c+2))&&(d=VO(o.doc,f,c)))return{range:l,changes:{from:c,insert:`</${d}>`}}}}return{range:l}});return a.changes.empty?!1:(s.dispatch([r,o.update(a,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),DI="#e5c07b",FO="#e06c75",BI="#56b6c2",XI="#ffffff",ll="#abb2bf",Id="#7d8799",zI="#61afef",WI="#98c379",qO="#d19a66",GI="#c678dd",YI="#21252b",jO="#2c313a",UO="#282c34",zc="#353a42",NI="#3E4451",HO="#528bff",VI=q.theme({"&":{color:ll,backgroundColor:UO},".cm-content":{caretColor:HO},".cm-cursor, .cm-dropCursor":{borderLeftColor:HO},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:NI},".cm-panels":{backgroundColor:YI,color:ll},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:UO,color:Id,border:"none"},".cm-activeLineGutter":{backgroundColor:jO},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:zc},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:zc,borderBottomColor:zc},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:jO,color:ll}}},{dark:!0}),FI=qo.define([{tag:M.keyword,color:GI},{tag:[M.name,M.deleted,M.character,M.propertyName,M.macroName],color:FO},{tag:[M.function(M.variableName),M.labelName],color:zI},{tag:[M.color,M.constant(M.name),M.standard(M.name)],color:qO},{tag:[M.definition(M.name),M.separator],color:ll},{tag:[M.typeName,M.className,M.number,M.changed,M.annotation,M.modifier,M.self,M.namespace],color:DI},{tag:[M.operator,M.operatorKeyword,M.url,M.escape,M.regexp,M.link,M.special(M.string)],color:BI},{tag:[M.meta,M.comment],color:Id},{tag:M.strong,fontWeight:"bold"},{tag:M.emphasis,fontStyle:"italic"},{tag:M.strikethrough,textDecoration:"line-through"},{tag:M.link,color:Id,textDecoration:"underline"},{tag:M.heading,fontWeight:"bold",color:FO},{tag:[M.atom,M.bool,M.special(M.variableName)],color:qO},{tag:[M.processingInstruction,M.string,M.inserted],color:WI},{tag:M.invalid,color:XI}]),qI=[VI,u1(FI)];var jI=W("<span style=font-size:11px;color:#e3b341>Unsaved changes"),UI=W('<div style="padding:12px 10px;font-size:12px;color:#484f58;font-style:italic">Loading…'),HI=W("<div style=flex:1;display:flex;align-items:center;justify-content:center;color:#484f58;font-size:13px;font-style:italic>"),KI=W('<div style=position:absolute;inset:0px;background:#0d1117;z-index:100;display:flex;flex-direction:column;overflow:hidden><div style="display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid #30363d;flex-shrink:0"><span style=font-size:15px;font-weight:600;color:#c9d1d9>Code</span><select style="background:#010409;color:#c9d1d9;border:1px solid #30363d;border-radius:4px;padding:4px 8px;font-size:12px;cursor:pointer"></select><div style=flex:1></div><button style="padding:5px 14px;border-radius:4px;border:1px solid #238636;font-size:12px;font-weight:600"></button><button style="background:transparent;border:none;color:#8b949e;font-size:18px;cursor:pointer;line-height:1;padding:2px 6px">✕</button></div><div style=flex:1;display:flex;overflow:hidden><div style="width:180px;flex-shrink:0;border-right:1px solid #21262d;display:flex;flex-direction:column;overflow:hidden"><div style="padding:6px 10px;font-size:10px;font-weight:700;color:#8b949e;text-transform:uppercase;letter-spacing:0.06em;border-bottom:1px solid #21262d;flex-shrink:0">Modules</div><div style=flex:1;overflow:auto></div></div><div style=flex:1;display:flex;flex-direction:column;overflow:hidden><div style="padding:5px 14px;font-size:12px;color:#8b949e;border-bottom:1px solid #21262d;flex-shrink:0;font-family:monospace;background:#0d1117">.js</div><div style=flex:1;overflow:hidden;flex-direction:column>'),JI=W("<option>"),tZ=W('<div style="padding:7px 12px;font-size:12px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis">');const{error:Wc}=ns("code"),eZ=q.theme({"&":{height:"100%"},".cm-scroller":{"font-family":"'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace","font-size":"13px","line-height":"1.6",overflow:"auto"},".cm-gutters":{background:"#0d1117","border-right":"1px solid #21262d"},".cm-lineNumbers .cm-gutterElement":{color:"#484f58","min-width":"3em"},".cm-activeLineGutter":{background:"#161b22"},".cm-activeLine":{background:"#161b22"}}),iZ=[B3,EI(),qI,eZ];function sZ(s){const[t,e]=Y([]),[i,n]=Y(""),[r,o]=Y({}),[a,l]=Y(""),[h,c]=Y(!1),[u,d]=Y(!1),[f,p]=Y(!1),g=()=>Object.keys(r()),{editorView:m,ref:O,createExtension:x}=AR({onValueChange:v=>{const w=a();!w||r()[w]===v||(o(S=>({...S,[w]:v})),p(!0))}});QR(m,()=>r()[a()]??""),x(iZ),gt(()=>{const v=St();v&&v.http.user.branches().then(w=>{e(w.list);const S=w.list.find(y=>y.activeWorld)??w.list[0];S&&n(S.branch)}).catch(w=>{Wc("branches failed:",w),jt("Failed to load branches","error")})}),gt(()=>{const v=i(),w=St();!v||!w||(c(!0),o({}),l(""),p(!1),w.http.user.code.get(v).then(S=>{const y=S.modules??{};o(y),l(Object.keys(y)[0]??"")}).catch(S=>{Wc("get failed:",S),jt("Failed to load code","error")}).finally(()=>c(!1)))});const b=()=>{const v=St(),w=i();!v||!w||(d(!0),v.http.user.code.set(w,r()).then(()=>{jt("Code saved","success"),p(!1)}).catch(S=>{Wc("set failed:",S),jt("Failed to save code","error")}).finally(()=>d(!1)))};return(()=>{var v=KI(),w=v.firstChild,S=w.firstChild,y=S.nextSibling,_=y.nextSibling,k=_.nextSibling,P=k.nextSibling,T=w.nextSibling,$=T.firstChild,A=$.firstChild,C=A.nextSibling,B=$.nextSibling,E=B.firstChild,I=E.firstChild,V=E.nextSibling;return y.addEventListener("change",Z=>n(Z.currentTarget.value)),L(y,G(oe,{get each(){return t()},children:Z=>(()=>{var N=JI();return L(N,()=>Z.branch,null),L(N,()=>Z.activeWorld?" ★":"",null),J(()=>N.value=Z.branch),N})()})),L(w,G(ot,{get when(){return f()},get children(){return jI()}}),k),k.$$click=b,L(k,()=>u()?"Saving…":"Save"),P.$$click=()=>s.onClose(),L(C,G(ot,{get when(){return h()},get children(){return UI()}}),null),L(C,G(oe,{get each(){return g()},children:Z=>(()=>{var N=tZ();return N.$$click=()=>l(Z),L(N,Z),J(z=>{var X=a()===Z?"#1f3158":"transparent",H=a()===Z?"#58a6ff":"#c9d1d9",K=`2px solid ${a()===Z?"#388bfd":"transparent"}`;return X!==z.e&&tt(N,"background",z.e=X),H!==z.t&&tt(N,"color",z.t=H),K!==z.a&&tt(N,"border-left",z.a=K),z},{e:void 0,t:void 0,a:void 0}),N})()}),null),L(E,a,I),Us(O,V),L(B,G(ot,{get when(){return!a()},get children(){var Z=HI();return L(Z,()=>h()?"Loading code…":"Select a module"),Z}}),null),J(Z=>{var N=u()||h()||!f(),z=u()||!f()?"#161b22":"#1a3a2a",X=u()||!f()?"#484f58":"#3fb950",H=u()||!f()?"default":"pointer",K=a()?"block":"none",it=a()?"flex":"none";return N!==Z.e&&(k.disabled=Z.e=N),z!==Z.t&&tt(k,"background",Z.t=z),X!==Z.a&&tt(k,"color",Z.a=X),H!==Z.o&&tt(k,"cursor",Z.o=H),K!==Z.i&&tt(E,"display",Z.i=K),it!==Z.n&&tt(V,"display",Z.n=it),Z},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),J(()=>y.value=i()),v})()}Ne(["click"]);var nZ=W('<button style="padding:6px 14px;border-radius:4px;font-size:13px;cursor:pointer;margin:0 4px">'),rZ=W('<button style="padding:6px 10px;border-radius:4px;border:1px solid #30363d;background:#21262d;font-size:14px;margin:0 2px">'),oZ=W("<div style=flex:1;position:relative;overflow:hidden>"),aZ=W('<div style="border-top:1px solid #30363d;overflow:hidden;position:relative"><div style=position:absolute;top:0;left:0;width:100%;height:4px;cursor:row-resize;z-index:10;background:#21262d>'),lZ=W('<div style="border-left:1px solid #30363d;overflow:hidden;position:relative"><div style=position:absolute;top:0;left:0;width:4px;height:100%;cursor:col-resize;z-index:10;background:#21262d>'),hZ=W("<div style=display:flex;flex:1;overflow:hidden><div style=display:flex;flex-direction:column;flex:1;overflow:hidden>"),cZ=W('<div style=width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;background:#0d1117><div style="display:flex;border-bottom:1px solid #30363d;align-items:center"><div style=flex:1></div><button style="padding:6px 14px;border-radius:4px;border:none;background:#da3633;color:#fff;font-size:13px;cursor:pointer;margin:0 16px 0 8px">Logout'),uZ=W("<div style=display:flex;flex-direction:column;flex:1;overflow:hidden><div style=display:flex;flex:1;overflow:hidden>");function Gc(){const s=sh(),t=window.location.pathname.match(new RegExp(`^${s}/room/([A-Za-z0-9]+)`));if(!t)return{room:null,shard:null};const e=t[1].toUpperCase();if(!be(e))return{room:null,shard:null};const i=new URLSearchParams(window.location.search).get("shard");return{room:e,shard:i}}function Yc(s,t){return`${sh()}/room/${s}${t?`?shard=${encodeURIComponent(t)}`:""}`}function dZ(s){return`${sh()}/map${s?`?shard=${encodeURIComponent(s)}`:""}`}function Nc(){return window.location.pathname.startsWith(`${sh()}/map`)?{shard:new URLSearchParams(window.location.search).get("shard")}:null}function Vc(s){return(()=>{var t=nZ();return t.$$click=()=>s.onClick(),L(t,()=>s.children),J(e=>{var i=`1px solid ${s.active?"#388bfd":"#30363d"}`,n=s.active?"#1f3158":"#21262d",r=s.active?"#58a6ff":"#c9d1d9";return i!==e.e&&tt(t,"border",e.e=i),n!==e.t&&tt(t,"background",e.t=n),r!==e.a&&tt(t,"color",e.a=r),e},{e:void 0,t:void 0,a:void 0}),t})()}function KO(s){return(()=>{var t=rZ();return t.$$click=()=>s.onClick(),L(t,()=>s.children),J(e=>{var i=s.disabled,n=s.disabled?"#484f58":"#c9d1d9",r=s.disabled?"default":"pointer";return i!==e.e&&(t.disabled=e.e=i),n!==e.t&&tt(t,"color",e.t=n),r!==e.a&&tt(t,"cursor",e.a=r),e},{e:void 0,t:void 0,a:void 0}),t})()}function fZ(){const s=Gc(),[t,e]=Y(s.room??Th(ee.room)??"W1N1"),[i,n]=Y(s.shard??Th(ee.shard)),[r,o]=Y(Nc()!==null),[a,l]=Y(!1),[h,c]=Y(!1),[u,d]=Y(!1);gt(()=>{h(),d(!0),Promise.resolve().then(()=>d(!1))});const[f,p]=Y(void 0),[g,m]=Y(null),[O,x]=Y(null),b=Th(ee.mapZoom),[v,w]=Y(b?Number(b):null),[S,y]=Y(null),[_,k]=Y(!1),[P,T]=Y(!1),[$,A]=Y(Br(ee.sidebarWidth,260)),[C,B]=Y(Br(ee.sidebarWidth,260)),[E,I]=Y(Br(ee.consoleHeight,220)),[V,Z]=Y(Br(ee.consoleHeight,220)),[N,z]=Y(!1),[X,H]=Y(!1),K=()=>$()<=32,it=()=>E()<=32,Ot=()=>{$()>32?(B($()),A(32)):A(C())},ae=()=>{E()>32?(Z(E()),I(32)):I(V())},Ve=wt=>{wt.preventDefault(),z(!0);const pt=wt.clientX,Qt=$(),Tt=Ct=>{const xr=Ct.clientX-pt;A(Math.max(32,Math.min(500,Qt-xr)))},nt=()=>{z(!1),Na(ee.sidebarWidth,$()),window.removeEventListener("pointermove",Tt),window.removeEventListener("pointerup",nt)};window.addEventListener("pointermove",Tt),window.addEventListener("pointerup",nt)},ye=wt=>{wt.preventDefault(),H(!0);const pt=wt.clientY,Qt=E(),Tt=Ct=>{const xr=Ct.clientY-pt;I(Math.max(32,Math.min(500,Qt-xr)))},nt=()=>{H(!1),Na(ee.consoleHeight,E()),window.removeEventListener("pointermove",Tt),window.removeEventListener("pointerup",nt)};window.addEventListener("pointermove",Tt),window.addEventListener("pointerup",nt)},dt=(wt,pt)=>{var Qt;(Qt=St())==null||Qt.stores.navigation.navigateTo(wt,pt)},xe=wt=>{p(wt),o(!0),history.pushState(null,"",dZ(i()))},oi=()=>{r()?(o(!1),m(null),x(null),history.pushState(null,"",Yc(t(),i()))):xe(t())};un(()=>{var Tt;!Gc().room&&!Nc()&&history.replaceState(null,"",Yc(t(),i()));const wt=()=>{const nt=Nc();if(nt){o(!0),nt.shard!==null&&n(nt.shard);return}const{room:Ct,shard:xr}=Gc();Ct&&(e(Ct),n(xr),o(!1))};window.addEventListener("popstate",wt),de(()=>window.removeEventListener("popstate",wt));const pt=(Tt=St())==null?void 0:Tt.stores.navigation;if(pt){const nt=pt.on("navigation:change",Ct=>{Ct.room!==null&&(e(Ct.room),n(Ct.shard),o(!1),m(null),x(null),k(pt.canBack()),T(pt.canForward()),lp(ee.room,Ct.room),Ct.shard?lp(ee.shard,Ct.shard):iv(ee.shard),history.pushState(null,"",Yc(Ct.room,Ct.shard)))});de(()=>nt.dispose())}const Qt=nt=>{if(!hx(nt.target)){if(nt.key==="o"||nt.key==="O"){c(Ct=>!Ct),l(!1);return}(nt.key==="l"||nt.key==="L")&&gx(),(nt.key==="c"||nt.key==="C")&&mx(),r()||(nt.key==="1"&&Nn("view"),nt.key==="2"&&Nn("flag"),nt.key==="3"&&Nn("build"),nt.key==="m"&&xe(t()))}};window.addEventListener("keydown",Qt),de(()=>window.removeEventListener("keydown",Qt))});const mi=()=>(()=>{var wt=oZ();return L(wt,G(ot,{get when(){return a()},get children(){return G(bM,{onClose:()=>l(!1)})}}),null),L(wt,G(ot,{get when(){return h()},get children(){return G(sZ,{onClose:()=>c(!1)})}}),null),L(wt,G(ot,{get when(){return!r()},get fallback(){return G(YT,{get shard(){return i()},get originRoom(){return f()},get initialZoom(){return v()??void 0},onNavigateToRoom:pt=>dt(pt,i()),onHoveredRoomChanged:m,onSelectedRoomChanged:x,onZoomChanged:pt=>{w(pt),Na(ee.mapZoom,pt)},onSubscriptionStateChanged:y})},get children(){return G(vT,{get room(){return t()},get shard(){return i()},onNavigate:dt})}}),null),wt})(),Oi=()=>G(ot,{get when(){return!eu()},get children(){var wt=aZ(),pt=wt.firstChild;return pt.$$pointerdown=ye,L(wt,G(a2,{get shard(){return i()},get isCollapsed(){return it()},onToggle:ae}),null),J(Qt=>{var Tt=`${E()}px`,nt=X()?"none":"height 0.15s ease";return Tt!==Qt.e&&tt(wt,"height",Qt.e=Tt),nt!==Qt.t&&tt(wt,"transition",Qt.t=nt),Qt},{e:void 0,t:void 0}),wt}}),yi=wt=>(()=>{var pt=lZ(),Qt=pt.firstChild;return Qt.$$pointerdown=Ve,L(pt,G(hM,{get isCollapsed(){return K()},onToggle:Ot,get mapMode(){return r()},get hoveredRoomInfo(){return g()},get selectedRoomInfo(){return O()},get room(){return t()},get shard(){return i()},get mapZoom(){return v()},get mapSubsActive(){return S()}}),null),J(Tt=>{var nt=h()?"0":`${$()}px`,Ct=wt&&!(u()||N())?"width 0.15s ease":"none";return nt!==Tt.e&&tt(pt,"width",Tt.e=nt),Ct!==Tt.t&&tt(pt,"transition",Tt.t=Ct),Tt},{e:void 0,t:void 0}),pt})();return(()=>{var wt=cZ(),pt=wt.firstChild,Qt=pt.firstChild,Tt=Qt.nextSibling;return L(pt,G(Bv,{}),Qt),L(pt,G(ot,{get when(){return!eu()||r()},get children(){return G(gM,{get mapZoom(){return Bt(()=>!!r())()?v():null},get mapSubsActive(){return Bt(()=>!!r())()?S():null}})}}),Qt),L(pt,G(KO,{get disabled(){return!_()},onClick:()=>{var nt;return(nt=St())==null?void 0:nt.stores.navigation.back()},children:"←"}),Tt),L(pt,G(KO,{get disabled(){return!P()},onClick:()=>{var nt;return(nt=St())==null?void 0:nt.stores.navigation.forward()},children:"→"}),Tt),L(pt,G(Vc,{get active(){return r()},onClick:oi,get children(){return r()?"Room View":"Map"}}),Tt),L(pt,G(Vc,{get active(){return h()},onClick:()=>{c(nt=>!nt),l(!1)},children:"Code"}),Tt),L(pt,G(Vc,{get active(){return a()},onClick:()=>{l(nt=>!nt),c(!1)},children:"Settings"}),Tt),fl(Tt,"click",lv,!0),L(wt,G(ot,{get when(){return ex()},get fallback(){return(()=>{var nt=uZ(),Ct=nt.firstChild;return L(Ct,mi,null),L(Ct,()=>yi(!0),null),L(nt,Oi,null),nt})()},get children(){var nt=hZ(),Ct=nt.firstChild;return L(Ct,mi,null),L(Ct,Oi,null),L(nt,()=>yi(!1),null),nt}}),null),L(wt,G(FT,{}),null),wt})()}Ne(["click","pointerdown"]);var pZ=W("<div style=width:100%;height:100%>");function gZ(){const s=()=>Hs()==="connected"&&St()!==null;return un(async()=>{if(Hs()==="idle"&&(await av().catch(()=>{}),Hs()!=="connected")){const t=ih();Ns({url:t,auth:"guest",storage:null}).catch(()=>{})}}),(()=>{var t=pZ();return L(t,(()=>{var e=Bt(()=>!!s());return()=>e()?G(fZ,{}):G(Iv,{})})()),t})()}const $w=document.getElementById("root");if(!$w)throw new Error("Root element not found");iS(()=>G(gZ,{}),$w);export{_$ as $,uy as A,gP as B,ly as C,Ye as D,Li as E,ts as F,Wo as G,nh as H,ni as I,tr as J,Qn as K,Mp as L,ft as M,ml as N,Xh as O,Gt as P,ey as Q,Zt as R,Fk as S,bt as T,R_ as U,dy as V,ja as W,X$ as X,Uk as Y,BC as Z,v$ as _,Le as a,S$ as a0,w$ as a1,Nd as a2,xt as a3,Vt as a4,Yp as a5,C$ as a6,T$ as a7,j$ as a8,ik as a9,Q$ as aa,P0 as ab,A0 as ac,LC as ad,Yk as ae,_t as af,Tp as ag,M0 as ah,p_ as ai,M$ as aj,A$ as ak,ah as al,Dt as am,fk as an,It as ao,ve as ap,Ua as b,si as c,yo as d,Pe as e,bu as f,X0 as g,Jt as h,Ht as i,R$ as j,lt as k,lh as l,Cp as m,s$ as n,H0 as o,zo as p,oh as q,ht as r,A_ as s,Ik as t,cu as u,Vd as v,Ji as w,sy as x,Ak as y,t_ as z};
|