Files
8bitworkshop/gen/ui.js
T

3932 lines
1.1 MiB
Plaintext

import{a as X0}from"./chunk-NTFEI2OH.js";import{a as z0}from"./chunk-SRBQMLE7.js";import"./chunk-JRMUDXWR.js";import{a as kc}from"./chunk-G3VBABUZ.js";import{a as W0,b as N0,c as IA}from"./chunk-3H6WIH6E.js";import{G as Pc,L as kf,j as L0,k as D0,q as Z0,x as I0,y as Pf}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{A as Nt,B as Mr,E as wc,G as hr,H as _0,J as vf,K as vo,M as wo,N as wf,O as E0,P as xf,Y as xo,Z as R0,a as Hr,aa as M0,b as La,d as yt,e as Da,f as Zt,g as _e,h as bf,i as k0,ia as xc,k as $0,m as yc,n as Q0,o as Sc,p as vc,q as T0,t as So,w as A0,x as yf,y as C0,z as Sf}from"./chunk-VZWSP3EG.js";import{a as Ue,b as zi,c as Ma,e as gf,g as Of}from"./chunk-N7W4C4V2.js";var Qf=gf((B0,$f)=>{(function(n){if(typeof B0=="object"&&typeof $f!="undefined")$f.exports=n();else if(typeof define=="function"&&define.amd)define([],n);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=n()}})(function(){var n,e,t;return(function r(i,s,o){function a(d,h){if(!s[d]){if(!i[d]){var u=typeof Ma=="function"&&Ma;if(!h&&u)return u(d,!0);if(l)return l(d,!0);var f=new Error("Cannot find module '"+d+"'");throw f.code="MODULE_NOT_FOUND",f}var m=s[d]={exports:{}};i[d][0].call(m.exports,function(O){var S=i[d][1][O];return a(S||O)},m,m.exports,r,i,s,o)}return s[d].exports}for(var l=typeof Ma=="function"&&Ma,c=0;c<o.length;c++)a(o[c]);return a})({1:[function(r,i,s){(function(o){"use strict";var a=o.MutationObserver||o.WebKitMutationObserver,l;if(a){var c=0,d=new a(O),h=o.document.createTextNode("");d.observe(h,{characterData:!0}),l=function(){h.data=c=++c%2}}else if(!o.setImmediate&&typeof o.MessageChannel!="undefined"){var u=new o.MessageChannel;u.port1.onmessage=O,l=function(){u.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var x=o.document.createElement("script");x.onreadystatechange=function(){O(),x.onreadystatechange=null,x.parentNode.removeChild(x),x=null},o.document.documentElement.appendChild(x)}:l=function(){setTimeout(O,0)};var f,m=[];function O(){f=!0;for(var x,D,M=m.length;M;){for(D=m,m=[],x=-1;++x<M;)D[x]();M=m.length}f=!1}i.exports=S;function S(x){m.push(x)===1&&!f&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(r,i,s){"use strict";var o=r(1);function a(){}var l={},c=["REJECTED"],d=["FULFILLED"],h=["PENDING"];i.exports=u;function u(w){if(typeof w!="function")throw new TypeError("resolver must be a function");this.state=h,this.queue=[],this.outcome=void 0,w!==a&&S(this,w)}u.prototype.catch=function(w){return this.then(null,w)},u.prototype.then=function(w,R){if(typeof w!="function"&&this.state===d||typeof R!="function"&&this.state===c)return this;var X=new this.constructor(a);if(this.state!==h){var W=this.state===d?w:R;m(X,W,this.outcome)}else this.queue.push(new f(X,w,R));return X};function f(w,R,X){this.promise=w,typeof R=="function"&&(this.onFulfilled=R,this.callFulfilled=this.otherCallFulfilled),typeof X=="function"&&(this.onRejected=X,this.callRejected=this.otherCallRejected)}f.prototype.callFulfilled=function(w){l.resolve(this.promise,w)},f.prototype.otherCallFulfilled=function(w){m(this.promise,this.onFulfilled,w)},f.prototype.callRejected=function(w){l.reject(this.promise,w)},f.prototype.otherCallRejected=function(w){m(this.promise,this.onRejected,w)};function m(w,R,X){o(function(){var W;try{W=R(X)}catch(ne){return l.reject(w,ne)}W===w?l.reject(w,new TypeError("Cannot resolve promise with itself")):l.resolve(w,W)})}l.resolve=function(w,R){var X=x(O,R);if(X.status==="error")return l.reject(w,X.value);var W=X.value;if(W)S(w,W);else{w.state=d,w.outcome=R;for(var ne=-1,de=w.queue.length;++ne<de;)w.queue[ne].callFulfilled(R)}return w},l.reject=function(w,R){w.state=c,w.outcome=R;for(var X=-1,W=w.queue.length;++X<W;)w.queue[X].callRejected(R);return w};function O(w){var R=w&&w.then;if(w&&(typeof w=="object"||typeof w=="function")&&typeof R=="function")return function(){R.apply(w,arguments)}}function S(w,R){var X=!1;function W(pe){X||(X=!0,l.reject(w,pe))}function ne(pe){X||(X=!0,l.resolve(w,pe))}function de(){R(ne,W)}var q=x(de);q.status==="error"&&W(q.value)}function x(w,R){var X={};try{X.value=w(R),X.status="success"}catch(W){X.status="error",X.value=W}return X}u.resolve=D;function D(w){return w instanceof this?w:l.resolve(new this(a),w)}u.reject=M;function M(w){var R=new this(a);return l.reject(R,w)}u.all=Z;function Z(w){var R=this;if(Object.prototype.toString.call(w)!=="[object Array]")return this.reject(new TypeError("must be an array"));var X=w.length,W=!1;if(!X)return this.resolve([]);for(var ne=new Array(X),de=0,q=-1,pe=new this(a);++q<X;)ve(w[q],q);return pe;function ve(we,B){R.resolve(we).then(ue,function(G){W||(W=!0,l.reject(pe,G))});function ue(G){ne[B]=G,++de===X&&!W&&(W=!0,l.resolve(pe,ne))}}}u.race=k;function k(w){var R=this;if(Object.prototype.toString.call(w)!=="[object Array]")return this.reject(new TypeError("must be an array"));var X=w.length,W=!1;if(!X)return this.resolve([]);for(var ne=-1,de=new this(a);++ne<X;)q(w[ne]);return de;function q(pe){R.resolve(pe).then(function(ve){W||(W=!0,l.resolve(de,ve))},function(ve){W||(W=!0,l.reject(de,ve))})}}},{1:1}],3:[function(r,i,s){(function(o){"use strict";typeof o.Promise!="function"&&(o.Promise=r(2))}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{2:2}],4:[function(r,i,s){"use strict";var o=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(y){return typeof y}:function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y};function a(y,Q){if(!(y instanceof Q))throw new TypeError("Cannot call a class as a function")}function l(){try{if(typeof indexedDB!="undefined")return indexedDB;if(typeof webkitIndexedDB!="undefined")return webkitIndexedDB;if(typeof mozIndexedDB!="undefined")return mozIndexedDB;if(typeof OIndexedDB!="undefined")return OIndexedDB;if(typeof msIndexedDB!="undefined")return msIndexedDB}catch(y){return}}var c=l();function d(){try{if(!c||!c.open)return!1;var y=typeof openDatabase!="undefined"&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),Q=typeof fetch=="function"&&fetch.toString().indexOf("[native code")!==-1;return(!y||Q)&&typeof indexedDB!="undefined"&&typeof IDBKeyRange!="undefined"}catch(v){return!1}}function h(y,Q){y=y||[],Q=Q||{};try{return new Blob(y,Q)}catch(A){if(A.name!=="TypeError")throw A;for(var v=typeof BlobBuilder!="undefined"?BlobBuilder:typeof MSBlobBuilder!="undefined"?MSBlobBuilder:typeof MozBlobBuilder!="undefined"?MozBlobBuilder:WebKitBlobBuilder,C=new v,E=0;E<y.length;E+=1)C.append(y[E]);return C.getBlob(Q.type)}}typeof Promise=="undefined"&&r(3);var u=Promise;function f(y,Q){Q&&y.then(function(v){Q(null,v)},function(v){Q(v)})}function m(y,Q,v){typeof Q=="function"&&y.then(Q),typeof v=="function"&&y.catch(v)}function O(y){return typeof y!="string"&&(console.warn(y+" used as a key, but it is not a string."),y=String(y)),y}function S(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var x="local-forage-detect-blob-support",D=void 0,M={},Z=Object.prototype.toString,k="readonly",w="readwrite";function R(y){for(var Q=y.length,v=new ArrayBuffer(Q),C=new Uint8Array(v),E=0;E<Q;E++)C[E]=y.charCodeAt(E);return v}function X(y){return new u(function(Q){var v=y.transaction(x,w),C=h([""]);v.objectStore(x).put(C,"key"),v.onabort=function(E){E.preventDefault(),E.stopPropagation(),Q(!1)},v.oncomplete=function(){var E=navigator.userAgent.match(/Chrome\/(\d+)/),A=navigator.userAgent.match(/Edge\//);Q(A||!E||parseInt(E[1],10)>=43)}}).catch(function(){return!1})}function W(y){return typeof D=="boolean"?u.resolve(D):X(y).then(function(Q){return D=Q,D})}function ne(y){var Q=M[y.name],v={};v.promise=new u(function(C,E){v.resolve=C,v.reject=E}),Q.deferredOperations.push(v),Q.dbReady?Q.dbReady=Q.dbReady.then(function(){return v.promise}):Q.dbReady=v.promise}function de(y){var Q=M[y.name],v=Q.deferredOperations.pop();if(v)return v.resolve(),v.promise}function q(y,Q){var v=M[y.name],C=v.deferredOperations.pop();if(C)return C.reject(Q),C.promise}function pe(y,Q){return new u(function(v,C){if(M[y.name]=M[y.name]||Ot(),y.db)if(Q)ne(y),y.db.close();else return v(y.db);var E=[y.name];Q&&E.push(y.version);var A=c.open.apply(c,E);Q&&(A.onupgradeneeded=function(I){var j=A.result;try{j.createObjectStore(y.storeName),I.oldVersion<=1&&j.createObjectStore(x)}catch(U){if(U.name==="ConstraintError")console.warn('The database "'+y.name+'" has been upgraded from version '+I.oldVersion+" to version "+I.newVersion+', but the storage "'+y.storeName+'" already exists.');else throw U}}),A.onerror=function(I){I.preventDefault(),C(A.error)},A.onsuccess=function(){var I=A.result;I.onversionchange=function(j){j.target.close()},v(I),de(y)}})}function ve(y){return pe(y,!1)}function we(y){return pe(y,!0)}function B(y,Q){if(!y.db)return!0;var v=!y.db.objectStoreNames.contains(y.storeName),C=y.version<y.db.version,E=y.version>y.db.version;if(C&&(y.version!==Q&&console.warn('The database "'+y.name+`" can't be downgraded from version `+y.db.version+" to version "+y.version+"."),y.version=y.db.version),E||v){if(v){var A=y.db.version+1;A>y.version&&(y.version=A)}return!0}return!1}function ue(y){return new u(function(Q,v){var C=new FileReader;C.onerror=v,C.onloadend=function(E){var A=btoa(E.target.result||"");Q({__local_forage_encoded_blob:!0,data:A,type:y.type})},C.readAsBinaryString(y)})}function G(y){var Q=R(atob(y.data));return h([Q],{type:y.type})}function Pe(y){return y&&y.__local_forage_encoded_blob}function Qe(y){var Q=this,v=Q._initReady().then(function(){var C=M[Q._dbInfo.name];if(C&&C.dbReady)return C.dbReady});return m(v,y,y),v}function Ge(y){ne(y);for(var Q=M[y.name],v=Q.forages,C=0;C<v.length;C++){var E=v[C];E._dbInfo.db&&(E._dbInfo.db.close(),E._dbInfo.db=null)}return y.db=null,ve(y).then(function(A){return y.db=A,B(y)?we(y):A}).then(function(A){y.db=Q.db=A;for(var I=0;I<v.length;I++)v[I]._dbInfo.db=A}).catch(function(A){throw q(y,A),A})}function He(y,Q,v,C){C===void 0&&(C=1);try{var E=y.db.transaction(y.storeName,Q);v(null,E)}catch(A){if(C>0&&(!y.db||A.name==="InvalidStateError"||A.name==="NotFoundError"))return u.resolve().then(function(){if(!y.db||A.name==="NotFoundError"&&!y.db.objectStoreNames.contains(y.storeName)&&y.version<=y.db.version)return y.db&&(y.version=y.db.version+1),we(y)}).then(function(){return Ge(y).then(function(){He(y,Q,v,C-1)})}).catch(v);v(A)}}function Ot(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function me(y){var Q=this,v={db:null};if(y)for(var C in y)v[C]=y[C];var E=M[v.name];E||(E=Ot(),M[v.name]=E),E.forages.push(Q),Q._initReady||(Q._initReady=Q.ready,Q.ready=Qe);var A=[];function I(){return u.resolve()}for(var j=0;j<E.forages.length;j++){var U=E.forages[j];U!==Q&&A.push(U._initReady().catch(I))}var H=E.forages.slice(0);return u.all(A).then(function(){return v.db=E.db,ve(v)}).then(function(K){return v.db=K,B(v,Q._defaultConfig.version)?we(v):K}).then(function(K){v.db=E.db=K,Q._dbInfo=v;for(var ce=0;ce<H.length;ce++){var Ce=H[ce];Ce!==Q&&(Ce._dbInfo.db=v.db,Ce._dbInfo.version=v.version)}})}function nn(y,Q){var v=this;y=O(y);var C=new u(function(E,A){v.ready().then(function(){He(v._dbInfo,k,function(I,j){if(I)return A(I);try{var U=j.objectStore(v._dbInfo.storeName),H=U.get(y);H.onsuccess=function(){var K=H.result;K===void 0&&(K=null),Pe(K)&&(K=G(K)),E(K)},H.onerror=function(){A(H.error)}}catch(K){A(K)}})}).catch(A)});return f(C,Q),C}function ir(y,Q){var v=this,C=new u(function(E,A){v.ready().then(function(){He(v._dbInfo,k,function(I,j){if(I)return A(I);try{var U=j.objectStore(v._dbInfo.storeName),H=U.openCursor(),K=1;H.onsuccess=function(){var ce=H.result;if(ce){var Ce=ce.value;Pe(Ce)&&(Ce=G(Ce));var Ie=y(Ce,ce.key,K++);Ie!==void 0?E(Ie):ce.continue()}else E()},H.onerror=function(){A(H.error)}}catch(ce){A(ce)}})}).catch(A)});return f(C,Q),C}function sr(y,Q,v){var C=this;y=O(y);var E=new u(function(A,I){var j;C.ready().then(function(){return j=C._dbInfo,Z.call(Q)==="[object Blob]"?W(j.db).then(function(U){return U?Q:ue(Q)}):Q}).then(function(U){He(C._dbInfo,w,function(H,K){if(H)return I(H);try{var ce=K.objectStore(C._dbInfo.storeName);U===null&&(U=void 0);var Ce=ce.put(U,y);K.oncomplete=function(){U===void 0&&(U=null),A(U)},K.onabort=K.onerror=function(){var Ie=Ce.error?Ce.error:Ce.transaction.error;I(Ie)}}catch(Ie){I(Ie)}})}).catch(I)});return f(E,v),E}function or(y,Q){var v=this;y=O(y);var C=new u(function(E,A){v.ready().then(function(){He(v._dbInfo,w,function(I,j){if(I)return A(I);try{var U=j.objectStore(v._dbInfo.storeName),H=U.delete(y);j.oncomplete=function(){E()},j.onerror=function(){A(H.error)},j.onabort=function(){var K=H.error?H.error:H.transaction.error;A(K)}}catch(K){A(K)}})}).catch(A)});return f(C,Q),C}function di(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){He(Q._dbInfo,w,function(A,I){if(A)return E(A);try{var j=I.objectStore(Q._dbInfo.storeName),U=j.clear();I.oncomplete=function(){C()},I.onabort=I.onerror=function(){var H=U.error?U.error:U.transaction.error;E(H)}}catch(H){E(H)}})}).catch(E)});return f(v,y),v}function bs(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){He(Q._dbInfo,k,function(A,I){if(A)return E(A);try{var j=I.objectStore(Q._dbInfo.storeName),U=j.count();U.onsuccess=function(){C(U.result)},U.onerror=function(){E(U.error)}}catch(H){E(H)}})}).catch(E)});return f(v,y),v}function qr(y,Q){var v=this,C=new u(function(E,A){if(y<0){E(null);return}v.ready().then(function(){He(v._dbInfo,k,function(I,j){if(I)return A(I);try{var U=j.objectStore(v._dbInfo.storeName),H=!1,K=U.openKeyCursor();K.onsuccess=function(){var ce=K.result;if(!ce){E(null);return}y===0||H?E(ce.key):(H=!0,ce.advance(y))},K.onerror=function(){A(K.error)}}catch(ce){A(ce)}})}).catch(A)});return f(C,Q),C}function ys(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){He(Q._dbInfo,k,function(A,I){if(A)return E(A);try{var j=I.objectStore(Q._dbInfo.storeName),U=j.openKeyCursor(),H=[];U.onsuccess=function(){var K=U.result;if(!K){C(H);return}H.push(K.key),K.continue()},U.onerror=function(){E(U.error)}}catch(K){E(K)}})}).catch(E)});return f(v,y),v}function Dn(y,Q){Q=S.apply(this,arguments);var v=this.config();y=typeof y!="function"&&y||{},y.name||(y.name=y.name||v.name,y.storeName=y.storeName||v.storeName);var C=this,E;if(!y.name)E=u.reject("Invalid arguments");else{var A=y.name===v.name&&C._dbInfo.db,I=A?u.resolve(C._dbInfo.db):ve(y).then(function(j){var U=M[y.name],H=U.forages;U.db=j;for(var K=0;K<H.length;K++)H[K]._dbInfo.db=j;return j});y.storeName?E=I.then(function(j){if(j.objectStoreNames.contains(y.storeName)){var U=j.version+1;ne(y);var H=M[y.name],K=H.forages;j.close();for(var ce=0;ce<K.length;ce++){var Ce=K[ce];Ce._dbInfo.db=null,Ce._dbInfo.version=U}var Ie=new u(function(Be,at){var dt=c.open(y.name,U);dt.onerror=function(sn){var Rr=dt.result;Rr.close(),at(sn)},dt.onupgradeneeded=function(){var sn=dt.result;sn.deleteObjectStore(y.storeName)},dt.onsuccess=function(){var sn=dt.result;sn.close(),Be(sn)}});return Ie.then(function(Be){H.db=Be;for(var at=0;at<K.length;at++){var dt=K[at];dt._dbInfo.db=Be,de(dt._dbInfo)}}).catch(function(Be){throw(q(y,Be)||u.resolve()).catch(function(){}),Be})}}):E=I.then(function(j){ne(y);var U=M[y.name],H=U.forages;j.close();for(var K=0;K<H.length;K++){var ce=H[K];ce._dbInfo.db=null}var Ce=new u(function(Ie,Be){var at=c.deleteDatabase(y.name);at.onerror=function(){var dt=at.result;dt&&dt.close(),Be(at.error)},at.onblocked=function(){console.warn('dropInstance blocked for database "'+y.name+'" until all open connections are closed')},at.onsuccess=function(){var dt=at.result;dt&&dt.close(),Ie(dt)}});return Ce.then(function(Ie){U.db=Ie;for(var Be=0;Be<H.length;Be++){var at=H[Be];de(at._dbInfo)}}).catch(function(Ie){throw(q(y,Ie)||u.resolve()).catch(function(){}),Ie})})}return f(E,Q),E}var ke={_driver:"asyncStorage",_initStorage:me,_support:d(),iterate:ir,getItem:nn,setItem:sr,removeItem:or,clear:di,length:bs,key:qr,keys:ys,dropInstance:Dn};function kn(){return typeof openDatabase=="function"}var be="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ar="~~local_forage_type~",st=/^~~local_forage_type~([^~]+)~/,Lt="__lfsc__:",Qr=Lt.length,ft="arbf",Tr="blob",lr="si08",rn="ui08",Ar="uic8",vt="si16",Qt="si32",ie="ur16",Y="ui32",te="fl32",ge="fl64",Ke=Qr+ft.length,Le=Object.prototype.toString;function ot(y){var Q=y.length*.75,v=y.length,C,E=0,A,I,j,U;y[y.length-1]==="="&&(Q--,y[y.length-2]==="="&&Q--);var H=new ArrayBuffer(Q),K=new Uint8Array(H);for(C=0;C<v;C+=4)A=be.indexOf(y[C]),I=be.indexOf(y[C+1]),j=be.indexOf(y[C+2]),U=be.indexOf(y[C+3]),K[E++]=A<<2|I>>4,K[E++]=(I&15)<<4|j>>2,K[E++]=(j&3)<<6|U&63;return H}function xt(y){var Q=new Uint8Array(y),v="",C;for(C=0;C<Q.length;C+=3)v+=be[Q[C]>>2],v+=be[(Q[C]&3)<<4|Q[C+1]>>4],v+=be[(Q[C+1]&15)<<2|Q[C+2]>>6],v+=be[Q[C+2]&63];return Q.length%3===2?v=v.substring(0,v.length-1)+"=":Q.length%3===1&&(v=v.substring(0,v.length-2)+"=="),v}function cr(y,Q){var v="";if(y&&(v=Le.call(y)),y&&(v==="[object ArrayBuffer]"||y.buffer&&Le.call(y.buffer)==="[object ArrayBuffer]")){var C,E=Lt;y instanceof ArrayBuffer?(C=y,E+=ft):(C=y.buffer,v==="[object Int8Array]"?E+=lr:v==="[object Uint8Array]"?E+=rn:v==="[object Uint8ClampedArray]"?E+=Ar:v==="[object Int16Array]"?E+=vt:v==="[object Uint16Array]"?E+=ie:v==="[object Int32Array]"?E+=Qt:v==="[object Uint32Array]"?E+=Y:v==="[object Float32Array]"?E+=te:v==="[object Float64Array]"?E+=ge:Q(new Error("Failed to get type for BinaryArray"))),Q(E+xt(C))}else if(v==="[object Blob]"){var A=new FileReader;A.onload=function(){var I=ar+y.type+"~"+xt(this.result);Q(Lt+Tr+I)},A.readAsArrayBuffer(y)}else try{Q(JSON.stringify(y))}catch(I){console.error("Couldn't convert value into a JSON string: ",y),Q(null,I)}}function dr(y){if(y.substring(0,Qr)!==Lt)return JSON.parse(y);var Q=y.substring(Ke),v=y.substring(Qr,Ke),C;if(v===Tr&&st.test(Q)){var E=Q.match(st);C=E[1],Q=Q.substring(E[0].length)}var A=ot(Q);switch(v){case ft:return A;case Tr:return h([A],{type:C});case lr:return new Int8Array(A);case rn:return new Uint8Array(A);case Ar:return new Uint8ClampedArray(A);case vt:return new Int16Array(A);case ie:return new Uint16Array(A);case Qt:return new Int32Array(A);case Y:return new Uint32Array(A);case te:return new Float32Array(A);case ge:return new Float64Array(A);default:throw new Error("Unkown type: "+v)}}var hi={serialize:cr,deserialize:dr,stringToBuffer:ot,bufferToString:xt};function Gr(y,Q,v,C){y.executeSql("CREATE TABLE IF NOT EXISTS "+Q.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],v,C)}function ui(y){var Q=this,v={db:null};if(y)for(var C in y)v[C]=typeof y[C]!="string"?y[C].toString():y[C];var E=new u(function(A,I){try{v.db=openDatabase(v.name,String(v.version),v.description,v.size)}catch(j){return I(j)}v.db.transaction(function(j){Gr(j,v,function(){Q._dbInfo=v,A()},function(U,H){I(H)})},I)});return v.serializer=hi,E}function wt(y,Q,v,C,E,A){y.executeSql(v,C,E,function(I,j){j.code===j.SYNTAX_ERR?I.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[Q.storeName],function(U,H){H.rows.length?A(U,j):Gr(U,Q,function(){U.executeSql(v,C,E,A)},A)},A):A(I,j)},A)}function pn(y,Q){var v=this;y=O(y);var C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"SELECT * FROM "+I.storeName+" WHERE key = ? LIMIT 1",[y],function(U,H){var K=H.rows.length?H.rows.item(0).value:null;K&&(K=I.serializer.deserialize(K)),E(K)},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function Ss(y,Q){var v=this,C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"SELECT * FROM "+I.storeName,[],function(U,H){for(var K=H.rows,ce=K.length,Ce=0;Ce<ce;Ce++){var Ie=K.item(Ce),Be=Ie.value;if(Be&&(Be=I.serializer.deserialize(Be)),Be=y(Be,Ie.key,Ce+1),Be!==void 0){E(Be);return}}E()},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function Ii(y,Q,v,C){var E=this;y=O(y);var A=new u(function(I,j){E.ready().then(function(){Q===void 0&&(Q=null);var U=Q,H=E._dbInfo;H.serializer.serialize(Q,function(K,ce){ce?j(ce):H.db.transaction(function(Ce){wt(Ce,H,"INSERT OR REPLACE INTO "+H.storeName+" (key, value) VALUES (?, ?)",[y,K],function(){I(U)},function(Ie,Be){j(Be)})},function(Ce){if(Ce.code===Ce.QUOTA_ERR){if(C>0){I(Ii.apply(E,[y,U,v,C-1]));return}j(Ce)}})})}).catch(j)});return f(A,v),A}function vs(y,Q,v){return Ii.apply(this,[y,Q,v,1])}function ws(y,Q){var v=this;y=O(y);var C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"DELETE FROM "+I.storeName+" WHERE key = ?",[y],function(){E()},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function xs(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){var A=Q._dbInfo;A.db.transaction(function(I){wt(I,A,"DELETE FROM "+A.storeName,[],function(){C()},function(j,U){E(U)})})}).catch(E)});return f(v,y),v}function Cr(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){var A=Q._dbInfo;A.db.transaction(function(I){wt(I,A,"SELECT COUNT(key) as c FROM "+A.storeName,[],function(j,U){var H=U.rows.item(0).c;C(H)},function(j,U){E(U)})})}).catch(E)});return f(v,y),v}function _r(y,Q){var v=this,C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"SELECT key FROM "+I.storeName+" WHERE id = ? LIMIT 1",[y+1],function(U,H){var K=H.rows.length?H.rows.item(0).key:null;E(K)},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function bt(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){var A=Q._dbInfo;A.db.transaction(function(I){wt(I,A,"SELECT key FROM "+A.storeName,[],function(j,U){for(var H=[],K=0;K<U.rows.length;K++)H.push(U.rows.item(K).key);C(H)},function(j,U){E(U)})})}).catch(E)});return f(v,y),v}function mn(y){return new u(function(Q,v){y.transaction(function(C){C.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(E,A){for(var I=[],j=0;j<A.rows.length;j++)I.push(A.rows.item(j).name);Q({db:y,storeNames:I})},function(E,A){v(A)})},function(C){v(C)})})}function fi(y,Q){Q=S.apply(this,arguments);var v=this.config();y=typeof y!="function"&&y||{},y.name||(y.name=y.name||v.name,y.storeName=y.storeName||v.storeName);var C=this,E;return y.name?E=new u(function(A){var I;y.name===v.name?I=C._dbInfo.db:I=openDatabase(y.name,"","",0),y.storeName?A({db:I,storeNames:[y.storeName]}):A(mn(I))}).then(function(A){return new u(function(I,j){A.db.transaction(function(U){function H(Ie){return new u(function(Be,at){U.executeSql("DROP TABLE IF EXISTS "+Ie,[],function(){Be()},function(dt,sn){at(sn)})})}for(var K=[],ce=0,Ce=A.storeNames.length;ce<Ce;ce++)K.push(H(A.storeNames[ce]));u.all(K).then(function(){I()}).catch(function(Ie){j(Ie)})},function(U){j(U)})})}):E=u.reject("Invalid arguments"),f(E,Q),E}var pi={_driver:"webSQLStorage",_initStorage:ui,_support:kn(),iterate:Ss,getItem:pn,setItem:vs,removeItem:ws,clear:xs,length:Cr,key:_r,keys:bt,dropInstance:fi};function ka(){try{return typeof localStorage!="undefined"&&"setItem"in localStorage&&!!localStorage.setItem}catch(y){return!1}}function Xi(y,Q){var v=y.name+"/";return y.storeName!==Q.storeName&&(v+=y.storeName+"/"),v}function mi(){var y="_localforage_support_test";try{return localStorage.setItem(y,!0),localStorage.removeItem(y),!1}catch(Q){return!0}}function Ps(){return!mi()||localStorage.length>0}function gi(y){var Q=this,v={};if(y)for(var C in y)v[C]=y[C];return v.keyPrefix=Xi(y,Q._defaultConfig),Ps()?(Q._dbInfo=v,v.serializer=hi,u.resolve()):u.reject()}function $a(y){var Q=this,v=Q.ready().then(function(){for(var C=Q._dbInfo.keyPrefix,E=localStorage.length-1;E>=0;E--){var A=localStorage.key(E);A.indexOf(C)===0&&localStorage.removeItem(A)}});return f(v,y),v}function Zn(y,Q){var v=this;y=O(y);var C=v.ready().then(function(){var E=v._dbInfo,A=localStorage.getItem(E.keyPrefix+y);return A&&(A=E.serializer.deserialize(A)),A});return f(C,Q),C}function Qa(y,Q){var v=this,C=v.ready().then(function(){for(var E=v._dbInfo,A=E.keyPrefix,I=A.length,j=localStorage.length,U=1,H=0;H<j;H++){var K=localStorage.key(H);if(K.indexOf(A)===0){var ce=localStorage.getItem(K);if(ce&&(ce=E.serializer.deserialize(ce)),ce=y(ce,K.substring(I),U++),ce!==void 0)return ce}}});return f(C,Q),C}function Ta(y,Q){var v=this,C=v.ready().then(function(){var E=v._dbInfo,A;try{A=localStorage.key(y)}catch(I){A=null}return A&&(A=A.substring(E.keyPrefix.length)),A});return f(C,Q),C}function Te(y){var Q=this,v=Q.ready().then(function(){for(var C=Q._dbInfo,E=localStorage.length,A=[],I=0;I<E;I++){var j=localStorage.key(I);j.indexOf(C.keyPrefix)===0&&A.push(j.substring(C.keyPrefix.length))}return A});return f(v,y),v}function gn(y){var Q=this,v=Q.keys().then(function(C){return C.length});return f(v,y),v}function Aa(y,Q){var v=this;y=O(y);var C=v.ready().then(function(){var E=v._dbInfo;localStorage.removeItem(E.keyPrefix+y)});return f(C,Q),C}function ks(y,Q,v){var C=this;y=O(y);var E=C.ready().then(function(){Q===void 0&&(Q=null);var A=Q;return new u(function(I,j){var U=C._dbInfo;U.serializer.serialize(Q,function(H,K){if(K)j(K);else try{localStorage.setItem(U.keyPrefix+y,H),I(A)}catch(ce){(ce.name==="QuotaExceededError"||ce.name==="NS_ERROR_DOM_QUOTA_REACHED")&&j(ce),j(ce)}})})});return f(E,v),E}function Oi(y,Q){if(Q=S.apply(this,arguments),y=typeof y!="function"&&y||{},!y.name){var v=this.config();y.name=y.name||v.name,y.storeName=y.storeName||v.storeName}var C=this,E;return y.name?E=new u(function(A){y.storeName?A(Xi(y,C._defaultConfig)):A(y.name+"/")}).then(function(A){for(var I=localStorage.length-1;I>=0;I--){var j=localStorage.key(I);j.indexOf(A)===0&&localStorage.removeItem(j)}}):E=u.reject("Invalid arguments"),f(E,Q),E}var $s={_driver:"localStorageWrapper",_initStorage:gi,_support:ka(),iterate:Qa,getItem:Zn,setItem:ks,removeItem:Aa,clear:$a,length:gn,key:Ta,keys:Te,dropInstance:Oi},Qs=function(Q,v){return Q===v||typeof Q=="number"&&typeof v=="number"&&isNaN(Q)&&isNaN(v)},Ca=function(Q,v){for(var C=Q.length,E=0;E<C;){if(Qs(Q[E],v))return!0;E++}return!1},bo=Array.isArray||function(y){return Object.prototype.toString.call(y)==="[object Array]"},bi={},yo={},pt={INDEXEDDB:ke,WEBSQL:pi,LOCALSTORAGE:$s},Ts=[pt.INDEXEDDB._driver,pt.WEBSQL._driver,pt.LOCALSTORAGE._driver],$n=["dropInstance"],Dt=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat($n),_a={description:"",driver:Ts.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function Er(y,Q){y[Q]=function(){var v=arguments;return y.ready().then(function(){return y[Q].apply(y,v)})}}function yi(){for(var y=1;y<arguments.length;y++){var Q=arguments[y];if(Q)for(var v in Q)Q.hasOwnProperty(v)&&(bo(Q[v])?arguments[0][v]=Q[v].slice():arguments[0][v]=Q[v])}return arguments[0]}var Ea=(function(){function y(Q){a(this,y);for(var v in pt)if(pt.hasOwnProperty(v)){var C=pt[v],E=C._driver;this[v]=E,bi[E]||this.defineDriver(C)}this._defaultConfig=yi({},_a),this._config=yi({},this._defaultConfig,Q),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch(function(){})}return y.prototype.config=function(v){if((typeof v=="undefined"?"undefined":o(v))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var C in v){if(C==="storeName"&&(v[C]=v[C].replace(/\W/g,"_")),C==="version"&&typeof v[C]!="number")return new Error("Database version must be a number.");this._config[C]=v[C]}return"driver"in v&&v.driver?this.setDriver(this._config.driver):!0}else return typeof v=="string"?this._config[v]:this._config},y.prototype.defineDriver=function(v,C,E){var A=new u(function(I,j){try{var U=v._driver,H=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!v._driver){j(H);return}for(var K=Dt.concat("_initStorage"),ce=0,Ce=K.length;ce<Ce;ce++){var Ie=K[ce],Be=!Ca($n,Ie);if((Be||v[Ie])&&typeof v[Ie]!="function"){j(H);return}}var at=function(){for(var Rr=function(b){return function(){var T=new Error("Method "+b+" is not implemented by the current driver"),L=u.reject(T);return f(L,arguments[arguments.length-1]),L}},In=0,Si=$n.length;In<Si;In++){var _=$n[In];v[_]||(v[_]=Rr(_))}};at();var dt=function(Rr){bi[U]&&console.info("Redefining LocalForage driver: "+U),bi[U]=v,yo[U]=Rr,I()};"_support"in v?v._support&&typeof v._support=="function"?v._support().then(dt,j):dt(!!v._support):dt(!0)}catch(sn){j(sn)}});return m(A,C,E),A},y.prototype.driver=function(){return this._driver||null},y.prototype.getDriver=function(v,C,E){var A=bi[v]?u.resolve(bi[v]):u.reject(new Error("Driver not found."));return m(A,C,E),A},y.prototype.getSerializer=function(v){var C=u.resolve(hi);return m(C,v),C},y.prototype.ready=function(v){var C=this,E=C._driverSet.then(function(){return C._ready===null&&(C._ready=C._initDriver()),C._ready});return m(E,v,v),E},y.prototype.setDriver=function(v,C,E){var A=this;bo(v)||(v=[v]);var I=this._getSupportedDrivers(v);function j(){A._config.driver=A.driver()}function U(ce){return A._extend(ce),j(),A._ready=A._initStorage(A._config),A._ready}function H(ce){return function(){var Ce=0;function Ie(){for(;Ce<ce.length;){var Be=ce[Ce];return Ce++,A._dbInfo=null,A._ready=null,A.getDriver(Be).then(U).catch(Ie)}j();var at=new Error("No available storage method found.");return A._driverSet=u.reject(at),A._driverSet}return Ie()}}var K=this._driverSet!==null?this._driverSet.catch(function(){return u.resolve()}):u.resolve();return this._driverSet=K.then(function(){var ce=I[0];return A._dbInfo=null,A._ready=null,A.getDriver(ce).then(function(Ce){A._driver=Ce._driver,j(),A._wrapLibraryMethodsWithReady(),A._initDriver=H(I)})}).catch(function(){j();var ce=new Error("No available storage method found.");return A._driverSet=u.reject(ce),A._driverSet}),m(this._driverSet,C,E),this._driverSet},y.prototype.supports=function(v){return!!yo[v]},y.prototype._extend=function(v){yi(this,v)},y.prototype._getSupportedDrivers=function(v){for(var C=[],E=0,A=v.length;E<A;E++){var I=v[E];this.supports(I)&&C.push(I)}return C},y.prototype._wrapLibraryMethodsWithReady=function(){for(var v=0,C=Dt.length;v<C;v++)Er(this,Dt[v])},y.prototype.createInstance=function(v){return new y(v)},y})(),As=new Ea;i.exports=As},{3:3}]},{},[4])(4)})});var Yf=gf((Vf,Ff)=>{(function(n,e){typeof Vf=="object"&&typeof Ff!="undefined"?Ff.exports=e():typeof define=="function"&&define.amd?define(e):(n=typeof globalThis!="undefined"?globalThis:n||self,n.Split=e())})(Vf,(function(){"use strict";var n=typeof window!="undefined"?window:null,e=n===null,t=e?void 0:n.document,r="addEventListener",i="removeEventListener",s="getBoundingClientRect",o="_a",a="_b",l="_c",c="horizontal",d=function(){return!1},h=e?"calc":["","-webkit-","-moz-","-o-"].filter(function(Z){var k=t.createElement("div");return k.style.cssText="width:"+Z+"calc(9px)",!!k.style.length}).shift()+"calc",u=function(Z){return typeof Z=="string"||Z instanceof String},f=function(Z){if(u(Z)){var k=t.querySelector(Z);if(!k)throw new Error("Selector "+Z+" did not match a DOM element");return k}return Z},m=function(Z,k,w){var R=Z[k];return R!==void 0?R:w},O=function(Z,k,w,R){if(k){if(R==="end")return 0;if(R==="center")return Z/2}else if(w){if(R==="start")return 0;if(R==="center")return Z/2}return Z},S=function(Z,k){var w=t.createElement("div");return w.className="gutter gutter-"+k,w},x=function(Z,k,w){var R={};return u(k)?R[Z]=k:R[Z]=h+"("+k+"% - "+w+"px)",R},D=function(Z,k){var w;return w={},w[Z]=k+"px",w},M=function(Z,k){if(k===void 0&&(k={}),e)return{};var w=Z,R,X,W,ne,de,q;Array.from&&(w=Array.from(w));var pe=f(w[0]),ve=pe.parentNode,we=getComputedStyle?getComputedStyle(ve):null,B=we?we.flexDirection:null,ue=m(k,"sizes")||w.map(function(){return 100/w.length}),G=m(k,"minSize",100),Pe=Array.isArray(G)?G:w.map(function(){return G}),Qe=m(k,"maxSize",1/0),Ge=Array.isArray(Qe)?Qe:w.map(function(){return Qe}),He=m(k,"expandToMin",!1),Ot=m(k,"gutterSize",10),me=m(k,"gutterAlign","center"),nn=m(k,"snapOffset",30),ir=Array.isArray(nn)?nn:w.map(function(){return nn}),sr=m(k,"dragInterval",1),or=m(k,"direction",c),di=m(k,"cursor",or===c?"col-resize":"row-resize"),bs=m(k,"gutter",S),qr=m(k,"elementStyle",x),ys=m(k,"gutterStyle",D);or===c?(R="width",X="clientX",W="left",ne="right",de="clientWidth"):or==="vertical"&&(R="height",X="clientY",W="top",ne="bottom",de="clientHeight");function Dn(ie,Y,te,ge){var Ke=qr(R,Y,te,ge);Object.keys(Ke).forEach(function(Le){ie.style[Le]=Ke[Le]})}function ke(ie,Y,te){var ge=ys(R,Y,te);Object.keys(ge).forEach(function(Ke){ie.style[Ke]=ge[Ke]})}function kn(){return q.map(function(ie){return ie.size})}function be(ie){return"touches"in ie?ie.touches[0][X]:ie[X]}function ar(ie){var Y=q[this.a],te=q[this.b],ge=Y.size+te.size;Y.size=ie/this.size*ge,te.size=ge-ie/this.size*ge,Dn(Y.element,Y.size,this[a],Y.i),Dn(te.element,te.size,this[l],te.i)}function st(ie){var Y,te=q[this.a],ge=q[this.b];this.dragging&&(Y=be(ie)-this.start+(this[a]-this.dragOffset),sr>1&&(Y=Math.round(Y/sr)*sr),Y<=te.minSize+te.snapOffset+this[a]?Y=te.minSize+this[a]:Y>=this.size-(ge.minSize+ge.snapOffset+this[l])&&(Y=this.size-(ge.minSize+this[l])),Y>=te.maxSize-te.snapOffset+this[a]?Y=te.maxSize+this[a]:Y<=this.size-(ge.maxSize-ge.snapOffset+this[l])&&(Y=this.size-(ge.maxSize+this[l])),ar.call(this,Y),m(k,"onDrag",d)(kn()))}function Lt(){var ie=q[this.a].element,Y=q[this.b].element,te=ie[s](),ge=Y[s]();this.size=te[R]+ge[R]+this[a]+this[l],this.start=te[W],this.end=te[ne]}function Qr(ie){if(!getComputedStyle)return null;var Y=getComputedStyle(ie);if(!Y)return null;var te=ie[de];return te===0?null:(or===c?te-=parseFloat(Y.paddingLeft)+parseFloat(Y.paddingRight):te-=parseFloat(Y.paddingTop)+parseFloat(Y.paddingBottom),te)}function ft(ie){var Y=Qr(ve);if(Y===null||Pe.reduce(function(Le,ot){return Le+ot},0)>Y)return ie;var te=0,ge=[],Ke=ie.map(function(Le,ot){var xt=Y*Le/100,cr=O(Ot,ot===0,ot===ie.length-1,me),dr=Pe[ot]+cr;return xt<dr?(te+=dr-xt,ge.push(0),dr):(ge.push(xt-dr),xt)});return te===0?ie:Ke.map(function(Le,ot){var xt=Le;if(te>0&&ge[ot]-te>0){var cr=Math.min(te,ge[ot]-te);te-=cr,xt=Le-cr}return xt/Y*100})}function Tr(){var ie=this,Y=q[ie.a].element,te=q[ie.b].element;ie.dragging&&m(k,"onDragEnd",d)(kn()),ie.dragging=!1,n[i]("mouseup",ie.stop),n[i]("touchend",ie.stop),n[i]("touchcancel",ie.stop),n[i]("mousemove",ie.move),n[i]("touchmove",ie.move),ie.stop=null,ie.move=null,Y[i]("selectstart",d),Y[i]("dragstart",d),te[i]("selectstart",d),te[i]("dragstart",d),Y.style.userSelect="",Y.style.webkitUserSelect="",Y.style.MozUserSelect="",Y.style.pointerEvents="",te.style.userSelect="",te.style.webkitUserSelect="",te.style.MozUserSelect="",te.style.pointerEvents="",ie.gutter.style.cursor="",ie.parent.style.cursor="",t.body.style.cursor=""}function lr(ie){if(!("button"in ie&&ie.button!==0)){var Y=this,te=q[Y.a].element,ge=q[Y.b].element;Y.dragging||m(k,"onDragStart",d)(kn()),ie.preventDefault(),Y.dragging=!0,Y.move=st.bind(Y),Y.stop=Tr.bind(Y),n[r]("mouseup",Y.stop),n[r]("touchend",Y.stop),n[r]("touchcancel",Y.stop),n[r]("mousemove",Y.move),n[r]("touchmove",Y.move),te[r]("selectstart",d),te[r]("dragstart",d),ge[r]("selectstart",d),ge[r]("dragstart",d),te.style.userSelect="none",te.style.webkitUserSelect="none",te.style.MozUserSelect="none",te.style.pointerEvents="none",ge.style.userSelect="none",ge.style.webkitUserSelect="none",ge.style.MozUserSelect="none",ge.style.pointerEvents="none",Y.gutter.style.cursor=di,Y.parent.style.cursor=di,t.body.style.cursor=di,Lt.call(Y),Y.dragOffset=be(ie)-Y.end}}ue=ft(ue);var rn=[];q=w.map(function(ie,Y){var te={element:f(ie),size:ue[Y],minSize:Pe[Y],maxSize:Ge[Y],snapOffset:ir[Y],i:Y},ge;if(Y>0&&(ge={a:Y-1,b:Y,dragging:!1,direction:or,parent:ve},ge[a]=O(Ot,Y-1===0,!1,me),ge[l]=O(Ot,!1,Y===w.length-1,me),B==="row-reverse"||B==="column-reverse")){var Ke=ge.a;ge.a=ge.b,ge.b=Ke}if(Y>0){var Le=bs(Y,or,te.element);ke(Le,Ot,Y),ge[o]=lr.bind(ge),Le[r]("mousedown",ge[o]),Le[r]("touchstart",ge[o]),ve.insertBefore(Le,te.element),ge.gutter=Le}return Dn(te.element,te.size,O(Ot,Y===0,Y===w.length-1,me),Y),Y>0&&rn.push(ge),te});function Ar(ie){var Y=ie.i===rn.length,te=Y?rn[ie.i-1]:rn[ie.i];Lt.call(te);var ge=Y?te.size-ie.minSize-te[l]:ie.minSize+te[a];ar.call(te,ge)}q.forEach(function(ie){var Y=ie.element[s]()[R];Y<ie.minSize&&(He?Ar(ie):ie.minSize=Y)});function vt(ie){var Y=ft(ie);Y.forEach(function(te,ge){if(ge>0){var Ke=rn[ge-1],Le=q[Ke.a],ot=q[Ke.b];Le.size=Y[ge-1],ot.size=te,Dn(Le.element,Le.size,Ke[a],Le.i),Dn(ot.element,ot.size,Ke[l],ot.i)}})}function Qt(ie,Y){rn.forEach(function(te){if(Y!==!0?te.parent.removeChild(te.gutter):(te.gutter[i]("mousedown",te[o]),te.gutter[i]("touchstart",te[o])),ie!==!0){var ge=qr(R,te.a.size,te[a]);Object.keys(ge).forEach(function(Ke){q[te.a].element.style[Ke]="",q[te.b].element.style[Ke]=""})}})}return{setSizes:vt,getSizes:kn,collapse:function(Y){Ar(q[Y])},destroy:Qt,parent:ve,pairs:rn}};return M}))});var o0=gf((WY,FT)=>{"use strict";function cz(n,e){this.v=n,this.k=e}function $T(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t<e;t++)r[t]=n[t];return r}function dz(n){if(Array.isArray(n))return n}function hz(n,e){var t=n==null?null:typeof Symbol!="undefined"&&n[Symbol.iterator]||n["@@iterator"];if(t!=null){var r,i,s,o,a=[],l=!0,c=!1;try{if(s=(t=t.call(n)).next,e===0){if(Object(t)!==t)return;l=!1}else for(;!(l=(r=s.call(t)).done)&&(a.push(r.value),a.length!==e);l=!0);}catch(d){c=!0,i=d}finally{try{if(!l&&t.return!=null&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw i}}return a}}function uz(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function fz(n,e){return dz(n)||hz(n,e)||pz(n,e)||uz()}function pz(n,e){if(n){if(typeof n=="string")return $T(n,e);var t={}.toString.call(n).slice(8,-1);return t==="Object"&&n.constructor&&(t=n.constructor.name),t==="Map"||t==="Set"?Array.from(n):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?$T(n,e):void 0}}function Vu(n){var e,t;function r(s,o){try{var a=n[s](o),l=a.value,c=l instanceof cz;Promise.resolve(c?l.v:l).then(function(d){if(c){var h=s==="return"&&l.k?s:"next";if(!l.k||d.done)return r(h,d);d=n[h](d).value}i(!!a.done,d)},function(d){r("throw",d)})}catch(d){i(2,d)}}function i(s,o){s===2?e.reject(o):e.resolve({value:o,done:s}),(e=e.next)?r(e.key,e.arg):t=null}this._invoke=function(s,o){return new Promise(function(a,l){var c={key:s,arg:o,resolve:a,reject:l,next:null};t?t=t.next=c:(e=t=c,r(s,o))})},typeof n.return!="function"&&(this.return=void 0)}Vu.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},Vu.prototype.next=function(n){return this._invoke("next",n)},Vu.prototype.throw=function(n){return this._invoke("throw",n)},Vu.prototype.return=function(n){return this._invoke("return",n)};var WT=Object.entries,QT=Object.setPrototypeOf,mz=Object.isFrozen,gz=Object.getPrototypeOf,Oz=Object.getOwnPropertyDescriptor,Wt=Object.freeze,jt=Object.seal,ya=Object.create,NT=typeof Reflect!="undefined"&&Reflect,i0=NT.apply,s0=NT.construct;Wt||(Wt=function(e){return e});jt||(jt=function(e){return e});i0||(i0=function(e,t){for(var r=arguments.length,i=new Array(r>2?r-2:0),s=2;s<r;s++)i[s-2]=arguments[s];return e.apply(t,i)});s0||(s0=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return new e(...r)});var fo=Mt(Array.prototype.forEach);Array.prototype.indexOf;var bz=Mt(Array.prototype.lastIndexOf),TT=Mt(Array.prototype.pop),ic=Mt(Array.prototype.push);Array.prototype.slice;var yz=Mt(Array.prototype.splice),Sa=Array.isArray,ac=Mt(String.prototype.toLowerCase),Kb=Mt(String.prototype.toString),AT=Mt(String.prototype.match),sc=Mt(String.prototype.replace),CT=Mt(String.prototype.indexOf),Sz=Mt(String.prototype.trim),vz=Mt(Number.prototype.toString),wz=Mt(Boolean.prototype.toString),_T=typeof BigInt=="undefined"?null:Mt(BigInt.prototype.toString),ET=typeof Symbol=="undefined"?null:Mt(Symbol.prototype.toString),Ln=Mt(Object.prototype.hasOwnProperty),oc=Mt(Object.prototype.toString),fn=Mt(RegExp.prototype.test),ps=xz(TypeError);function Mt(n){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return i0(n,e,r)}}function xz(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return s0(n,t)}}function Fe(n,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ac;if(QT&&QT(n,null),!Sa(e))return n;let r=e.length;for(;r--;){let i=e[r];if(typeof i=="string"){let s=t(i);s!==i&&(mz(e)||(e[r]=s),i=s)}n[i]=!0}return n}function Pz(n){for(let e=0;e<n.length;e++)Ln(n,e)||(n[e]=null);return n}function tr(n){let e=ya(null);for(let r of WT(n)){var t=fz(r,2);let i=t[0],s=t[1];Ln(n,i)&&(Sa(s)?e[i]=Pz(s):s&&typeof s=="object"&&s.constructor===Object?e[i]=tr(s):e[i]=s)}return e}function kz(n){switch(typeof n){case"string":return n;case"number":return vz(n);case"boolean":return wz(n);case"bigint":return _T?_T(n):"0";case"symbol":return ET?ET(n):"Symbol()";case"undefined":return oc(n);case"function":case"object":{if(n===null)return oc(n);let e=n,t=kr(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:oc(r)}return oc(n)}default:return oc(n)}}function kr(n,e){for(;n!==null;){let r=Oz(n,e);if(r){if(r.get)return Mt(r.get);if(typeof r.value=="function")return Mt(r.value)}n=gz(n)}function t(){return null}return t}function $z(n){try{return fn(n,""),!0}catch(e){return!1}}var RT=Wt(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Jb=Wt(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),e0=Wt(["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"]),Qz=Wt(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),t0=Wt(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Tz=Wt(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),MT=Wt(["#text"]),LT=Wt(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),n0=Wt(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),DT=Wt(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Fu=Wt(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Az=jt(/{{[\w\W]*|^[\w\W]*}}/g),Cz=jt(/<%[\w\W]*|^[\w\W]*%>/g),_z=jt(/\${[\w\W]*/g),Ez=jt(/^data-[\-\w.\u00B7-\uFFFF]+$/),Rz=jt(/^aria-[\-\w]+$/),ZT=jt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Mz=jt(/^(?:\w+script|data):/i),Lz=jt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Dz=jt(/^html$/i),Zz=jt(/^[a-z][.\w]*(-[.\w]+)+$/i),IT=jt(/<[/\w!]/g),XT=jt(/<[/\w]/g),Iz=jt(/<\/no(script|embed|frames)/i),Xz=jt(/\/>/i),er={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},BT=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],zz=Wt(Fe({},BT)),Wz=(function(){let n={};return fo(BT,e=>{n[e]=jt(new RegExp("</"+e+"(?=[\\t\\n\\f\\r />])","i"))}),Wt(n)})(),Nz=function(){return typeof window=="undefined"?null:window},Bz=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null,i="data-tt-policy-suffix";t&&t.hasAttribute(i)&&(r=t.getAttribute(i));let s="dompurify"+(r?"#"+r:"");try{return e.createPolicy(s,{createHTML(o){return o},createScriptURL(o){return o}})}catch(o){return console.warn("TrustedTypes policy "+s+" could not be created."),null}},zT=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},ms=function(e,t,r,i){return Ln(e,t)&&Sa(e[t])?Fe(i.base?tr(i.base):{},e[t],i.transform):r},r0=function(e,t,r){let i=Ln(e,t)?e[t]:void 0;return i&&typeof i=="object"?tr(i):r()};function VT(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Nz(),e=_=>VT(_);if(e.version="3.4.16",e.removed=[],!n||!n.document||n.document.nodeType!==er.document||!n.Element)return e.isSupported=!1,e;let t=n.document,r=t,i=r.currentScript;n.DocumentFragment;let s=n.HTMLTemplateElement,o=n.Node,a=n.Element,l=n.NodeFilter;n.NamedNodeMap===void 0&&(n.NamedNodeMap||n.MozNamedAttrMap),n.HTMLFormElement;let c=n.DOMParser,d=n.trustedTypes,h=a.prototype,u=kr(h,"cloneNode"),f=kr(h,"remove"),m=kr(h,"removeAttributeNode"),O=kr(h,"nextSibling"),S=kr(h,"childNodes"),x=kr(h,"parentNode"),D=kr(h,"shadowRoot"),M=kr(h,"attributes"),Z=o&&o.prototype?kr(o.prototype,"nodeType"):null,k=o&&o.prototype?kr(o.prototype,"nodeName"):null,w=o&&o.prototype?kr(o.prototype,"ownerDocument"):null,R=function(p){return Z?Z(p):p.nodeType},X=function(p){return k?k(p):p.nodeName};if(typeof s=="function"){let _=t.createElement("template");_.content&&_.content.ownerDocument&&(t=_.content.ownerDocument)}let W,ne="",de,q=!1,pe=0,ve=function(){if(pe>0)throw ps('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},we=function(p){ve(),pe++;try{return W.createHTML(p)}finally{pe--}},B=function(p){ve(),pe++;try{return W.createScriptURL(p)}finally{pe--}},ue=function(){return q||(de=Bz(d,i),q=!0),de},G=t,Pe=G.implementation,Qe=G.createNodeIterator,Ge=G.createDocumentFragment,He=G.getElementsByTagName,Ot=r.importNode,me=zT();e.isSupported=typeof WT=="function"&&typeof x=="function"&&Pe&&Pe.createHTMLDocument!==void 0;let nn=Az,ir=Cz,sr=_z,or=Ez,di=Rz,bs=Mz,qr=Lz,ys=Zz,Dn=ZT,ke=null,kn=Fe({},[...RT,...Jb,...e0,...t0,...MT]),be=null,ar=Fe({},[...LT,...n0,...DT,...Fu]),st=Object.seal(ya(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Lt=null,Qr=null,ft=Object.seal(ya(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Tr=!0,lr=!0,rn=!1,Ar=!0,vt=!1,Qt=!0,ie=!1,Y=!1,te=null,ge=null,Ke=!1,Le=!1,ot=!1,xt=!1,cr=!0,dr=!1,hi="user-content-",Gr=!0,ui=!1,wt={},pn=null,Ss=Fe({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),Ii=null,vs=Fe({},["audio","video","img","source","image","track"]),ws=null,xs=Fe({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cr="http://www.w3.org/1998/Math/MathML",_r="http://www.w3.org/2000/svg",bt="http://www.w3.org/1999/xhtml",mn=bt,fi=!1,pi=null,ka=Fe({},[Cr,_r,bt],Kb),Xi=Wt(["mi","mo","mn","ms","mtext"]),mi=Fe({},Xi),Ps=Wt(["annotation-xml"]),gi=Fe({},Ps),$a=Fe({},["title","style","font","a","script"]),Zn=null,Qa=["application/xhtml+xml","text/html"],Ta="text/html",Te=null,gn=null,Aa=t.createElement("form"),ks=function(p){return p instanceof RegExp||p instanceof Function},Oi=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(gn&&gn===p)return;(!p||typeof p!="object")&&(p={}),p=tr(p),Zn=Qa.indexOf(p.PARSER_MEDIA_TYPE)===-1?Ta:p.PARSER_MEDIA_TYPE,Te=Zn==="application/xhtml+xml"?Kb:ac,ke=ms(p,"ALLOWED_TAGS",kn,{transform:Te}),be=ms(p,"ALLOWED_ATTR",ar,{transform:Te}),pi=ms(p,"ALLOWED_NAMESPACES",ka,{transform:Kb}),ws=ms(p,"ADD_URI_SAFE_ATTR",xs,{transform:Te,base:xs}),Ii=ms(p,"ADD_DATA_URI_TAGS",vs,{transform:Te,base:vs}),pn=ms(p,"FORBID_CONTENTS",Ss,{transform:Te}),Lt=ms(p,"FORBID_TAGS",tr({}),{transform:Te}),Qr=ms(p,"FORBID_ATTR",tr({}),{transform:Te}),wt=Ln(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?tr(p.USE_PROFILES):p.USE_PROFILES:!1,Tr=p.ALLOW_ARIA_ATTR!==!1,lr=p.ALLOW_DATA_ATTR!==!1,rn=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Ar=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,vt=p.SAFE_FOR_TEMPLATES||!1,Qt=p.SAFE_FOR_XML!==!1,ie=p.WHOLE_DOCUMENT||!1,Le=p.RETURN_DOM||!1,ot=p.RETURN_DOM_FRAGMENT||!1,xt=p.RETURN_TRUSTED_TYPE||!1,Ke=p.FORCE_BODY||!1,cr=p.SANITIZE_DOM!==!1,dr=p.SANITIZE_NAMED_PROPS||!1,Gr=p.KEEP_CONTENT!==!1,ui=p.IN_PLACE||!1,Dn=$z(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:ZT,mn=typeof p.NAMESPACE=="string"?p.NAMESPACE:bt,mi=r0(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Fe({},Xi)),gi=r0(p,"HTML_INTEGRATION_POINTS",()=>Fe({},Ps));let b=r0(p,"CUSTOM_ELEMENT_HANDLING",()=>ya(null));if(st=ya(null),Ln(b,"tagNameCheck")&&ks(b.tagNameCheck)&&(st.tagNameCheck=b.tagNameCheck),Ln(b,"attributeNameCheck")&&ks(b.attributeNameCheck)&&(st.attributeNameCheck=b.attributeNameCheck),Ln(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),jt(st),vt&&(lr=!1),ot&&(Le=!0),wt&&(ke=Fe({},MT),be=ya(null),wt.html===!0&&(Fe(ke,RT),Fe(be,LT)),wt.svg===!0&&(Fe(ke,Jb),Fe(be,n0),Fe(be,Fu)),wt.svgFilters===!0&&(Fe(ke,e0),Fe(be,n0),Fe(be,Fu)),wt.mathMl===!0&&(Fe(ke,t0),Fe(be,DT),Fe(be,Fu))),ft.tagCheck=null,ft.attributeCheck=null,Ln(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?ft.tagCheck=p.ADD_TAGS:Sa(p.ADD_TAGS)&&(ke===kn&&(ke=tr(ke)),Fe(ke,p.ADD_TAGS,Te))),Ln(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?ft.attributeCheck=p.ADD_ATTR:Sa(p.ADD_ATTR)&&(be===ar&&(be=tr(be)),Fe(be,p.ADD_ATTR,Te))),Ln(p,"ADD_FORBID_CONTENTS")&&Sa(p.ADD_FORBID_CONTENTS)&&(pn===Ss&&(pn=tr(pn)),Fe(pn,p.ADD_FORBID_CONTENTS,Te)),Gr&&(ke["#text"]=!0),ie&&Fe(ke,["html","head","body"]),ke.table&&(Fe(ke,["tbody"]),delete Lt.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw ps('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw ps('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let T=W;W=p.TRUSTED_TYPES_POLICY;try{ne=we("")}catch(L){throw W=T,L}}else p.TRUSTED_TYPES_POLICY===null?(W=void 0,ne=""):(W===void 0&&(W=ue()),W&&typeof ne=="string"&&(ne=we("")));Wt&&Wt(p),gn=p},$s=Fe({},[...Jb,...e0,...Qz]),Qs=Fe({},[...t0,...Tz]),Ca=function(p,b,T){return b.namespaceURI===bt?p==="svg":b.namespaceURI===Cr?p==="svg"&&(T==="annotation-xml"||mi[T]):!!$s[p]},bo=function(p,b,T){return b.namespaceURI===bt?p==="math":b.namespaceURI===_r?p==="math"&&gi[T]:!!Qs[p]},bi=function(p,b,T){return b.namespaceURI===_r&&!gi[T]||b.namespaceURI===Cr&&!mi[T]?!1:!Qs[p]&&($a[p]||!$s[p])},yo=function(p){let b=x(p);(!b||!b.tagName)&&(b={namespaceURI:mn,tagName:"template"});let T=ac(p.tagName),L=ac(b.tagName);return pi[p.namespaceURI]?p.namespaceURI===_r?Ca(T,b,L):p.namespaceURI===Cr?bo(T,b,L):p.namespaceURI===bt?bi(T,b,L):!!(Zn==="application/xhtml+xml"&&pi[p.namespaceURI]):!1},pt=function(p){ic(e.removed,{element:p});try{x(p).removeChild(p)}catch(b){if(f(p),!x(p))throw ps("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Ts=function(p,b,T){try{m(p,b)}catch(L){try{p.removeAttribute(T)}catch(V){}}},$n=function(p){Er(p);let b=S(p);if(b){let L=[];fo(b,V=>{ic(L,V)}),fo(L,V=>{try{f(V)}catch(le){}})}let T=M(p);if(T)for(let L=T.length-1;L>=0;--L){let V=T[L],le=V&&V.name;typeof le=="string"&&Ts(p,V,le)}},Dt=function(p,b,T){if(!T)try{T=b.getAttributeNode(p)}catch(L){T=null}ic(e.removed,{attribute:T||null,from:b});try{T?m(b,T):b.removeAttribute(p)}catch(L){try{b.removeAttribute(p)}catch(V){}}if(p==="is")if(Le||ot)try{pt(b)}catch(L){}else try{b.setAttribute(p,"")}catch(L){}},_a=function(p){let b=M(p);if(b)for(let T=b.length-1;T>=0;--T){let L=b[T],V=L&&L.name;typeof V!="string"||be[Te(V)]||Ts(p,L,V)}},Er=function(p){let b=[p];for(;b.length>0;){let T=b.pop();R(T)===er.element&&_a(T);let L=S(T);if(L)for(let V=L.length-1;V>=0;--V)b.push(L[V])}},yi=function(p,b){return Qt?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},Ea=function(p){if(!Qt)return;let b=[p];for(;b.length>0;){let T=b.pop(),L=R(T);if(L===er.processingInstruction||L===er.comment&&fn(XT,T.data)){try{f(T)}catch(le){}continue}if(L===er.element){let le=T,fe=Te(X(T));try{le.hasAttribute&&le.hasAttribute("patchsrc")&&le.removeAttribute("patchsrc"),le.hasAttribute&&le.hasAttribute("for")&&yi("for",fe)&&le.removeAttribute("for")}catch(Ae){}}let V=S(T);if(V)for(let le=V.length-1;le>=0;--le)b.push(V[le])}},As=function(p){let b=null,T=null;if(Ke)p="<remove></remove>"+p;else{let le=AT(p,/^[\r\n\t ]+/);T=le&&le[0]}Zn==="application/xhtml+xml"&&mn===bt&&(p='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+p+"</body></html>");let L=W?we(p):p;if(mn===bt)try{b=new c().parseFromString(L,Zn)}catch(le){}if(!b||!b.documentElement){b=Pe.createDocument(mn,"template",null);try{b.documentElement.innerHTML=fi?ne:L}catch(le){}}let V=b.body||b.documentElement;return p&&T&&V.insertBefore(t.createTextNode(T),V.childNodes[0]||null),mn===bt?He.call(b,ie?"html":"body")[0]:ie?b.documentElement:V},y=function(p){let b=w?w(p):p.ownerDocument;return Qe.call(b||p,p,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Q=function(p){return p=sc(p,nn," "),p=sc(p,ir," "),p=sc(p,sr," "),p},v=function(p){var b;p.normalize();let T=w?w(p):p.ownerDocument,L=Qe.call(T||p,p,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),V=L.nextNode();for(;V;)V.data=Q(V.data),V=L.nextNode();let le=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");le&&fo(le,fe=>{E(fe.content)&&v(fe.content)})},C=function(p){let b=k?k(p):null;return typeof b!="string"||Te(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==M(p)||typeof p.removeAttribute!="function"||typeof p.removeAttributeNode!="function"||typeof p.getAttributeNode!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function"||p.nodeType!==Z(p)||p.childNodes!==S(p)},E=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return Z(p)===er.documentFragment}catch(b){return!1}},A=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return typeof Z(p)=="number"}catch(b){return!1}};function I(_,p,b){_.length!==0&&fo(_,T=>{T.call(e,p,b,gn)})}let j=function(p,b){return!!(Qt&&p.hasChildNodes()&&!A(p.firstElementChild)&&fn(IT,p.textContent)&&fn(IT,p.innerHTML)||Qt&&p.namespaceURI===bt&&zz[b]&&(A(p.firstElementChild)||typeof p.textContent=="string"&&fn(Wz[b],p.textContent))||p.nodeType===er.processingInstruction||Qt&&p.nodeType===er.comment&&fn(XT,p.data))},U=function(p,b){if(p instanceof RegExp)return fn(p,b);if(p instanceof Function){for(var T=arguments.length,L=new Array(T>2?T-2:0),V=2;V<T;V++)L[V-2]=arguments[V];return!!p(b,...L)}return!1},H=function(p,b,T){if(!Lt[b]&&at(b)&&U(st.tagNameCheck,b))return!1;if(Gr&&!pn[b]){let L=x(p),V=S(p);if(V&&L){let le=V.length;for(let fe=le-1;fe>=0;--fe){let Ae=p===T?u(V[fe],!0):V[fe];L.insertBefore(Ae,O(p))}}}return pt(p),!0},K=function(p,b,T,L){return p.length===0?b:b===T||b===L?tr(b):b},ce=function(p,b){return p===b||x(p)!==null?!1:(ui&&Er(p),!0)},Ce=function(p,b){if(I(me.beforeSanitizeElements,p,null),ce(p,b))return!0;if(C(p))return pt(p),!0;let T=Te(X(p));if(ke=K(me.uponSanitizeElement,ke,kn,te),I(me.uponSanitizeElement,p,{tagName:T,allowedTags:ke}),ce(p,b))return!0;if(j(p,T))return pt(p),!0;if(Lt[T]||!(ft.tagCheck instanceof Function&&ft.tagCheck(T))&&!ke[T]){let L=H(p,T,b);return L===!1&&(I(me.afterSanitizeElements,p,null),ce(p,b))?!0:L}if(R(p)===er.element&&!yo(p)||(T==="noscript"||T==="noembed"||T==="noframes")&&fn(Iz,p.innerHTML))return pt(p),!0;if(vt&&p.nodeType===er.text){let L=Q(p.textContent);p.textContent!==L&&(ic(e.removed,{element:p.cloneNode()}),p.textContent=L)}return I(me.afterSanitizeElements,p,null),ce(p,b)},Ie=function(p,b,T){if(Qr[b]||yi(b,p)||cr&&(b==="id"||b==="name")&&(T in t||T in Aa))return!1;let L=be[b]||ft.attributeCheck instanceof Function&&ft.attributeCheck(b,p);return lr&&fn(or,b)||Tr&&fn(di,b)?!0:L?ws[b]||fn(Dn,sc(T,qr,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&CT(T,"data:")===0&&Ii[p]||rn&&!fn(bs,sc(T,qr,""))?!0:!T:at(p)&&U(st.tagNameCheck,p)&&U(st.attributeNameCheck,b,p)||b==="is"&&st.allowCustomizedBuiltInElements&&U(st.tagNameCheck,T)},Be=Fe({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),at=function(p){return!Be[ac(p)]&&fn(ys,p)},dt=function(p,b,T,L){if(W&&typeof d=="object"&&typeof d.getAttributeType=="function"&&!T)switch(d.getAttributeType(p,b)){case"TrustedHTML":return we(L);case"TrustedScriptURL":return B(L)}return L},sn=function(p,b,T,L){try{return T?p.setAttributeNS(T,b,L):p.setAttribute(b,L),C(p)?(pt(p),!1):!0}catch(V){return Dt(b,p),!1}},Rr=function(p,b){if(I(me.beforeSanitizeAttributes,p,null),ce(p,b))return;let T=p.attributes;if(!T||C(p))return;be=K(me.uponSanitizeAttribute,be,ar,ge);let L={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be,forceKeepAttr:void 0},V=T.length,le=Te(p.nodeName);for(;V--;){let fe=T[V],Ae=fe.name,ht=fe.namespaceURI,tt=fe.value,Xn=Te(Ae),Cs=tt,je=Ae==="value"?Cs:Sz(Cs),Ra=!1;if(L.attrName=Xn,L.attrValue=je,L.keepAttr=!0,L.forceKeepAttr=void 0,I(me.uponSanitizeAttribute,p,L),je=L.attrValue,dr&&(Xn==="id"||Xn==="name")&&CT(je,hi)!==0&&(Dt(Ae,p,fe),je=hi+je,Ra=!0),Qt&&fn(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,je)){Dt(Ae,p,fe);continue}if(Xn==="attributename"&&AT(je,"href")){Dt(Ae,p,fe);continue}if(!L.forceKeepAttr){if(!L.keepAttr){Dt(Ae,p,fe);continue}if(!Ar&&fn(Xz,je)){Dt(Ae,p,fe);continue}if(vt&&(je=Q(je)),!Ie(le,Xn,je)){Dt(Ae,p,fe);continue}je=dt(le,Xn,ht,je),je!==Cs&&sn(p,Ae,ht,je)&&Ra&&TT(e.removed)}}I(me.afterSanitizeAttributes,p,null),ce(p,b)},In=function(p){let b=null,T=y(p);for(I(me.beforeSanitizeShadowDOM,p,null);b=T.nextNode();)if(I(me.uponSanitizeShadowNode,b,null),Ce(b,p),Rr(b,p),E(b.content)&&In(b.content),R(b)===er.element){let L=D(b);E(L)&&(Si(L),In(L))}I(me.afterSanitizeShadowDOM,p,null)},Si=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let T=b.pop();if(T.shadow){In(T.shadow);continue}let L=T.node,V=R(L)===er.element,le=S(L);if(le)for(let fe=le.length-1;fe>=0;--fe)b.push({node:le[fe],shadow:null});if(V){let fe=k?k(L):null;if(typeof fe=="string"&&Te(fe)==="template"){let Ae=L.content;E(Ae)&&b.push({node:Ae,shadow:null})}}if(V){let fe=D(L);E(fe)&&b.push({node:null,shadow:fe},{node:fe,shadow:null})}}};return e.sanitize=function(_){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,T=null,L=null,V=null;if(fi=!_,fi&&(_="<!-->"),typeof _!="string"&&!A(_)&&(_=kz(_),typeof _!="string"))throw ps("dirty is not a string, aborting");if(!e.isSupported)return _;Y?(ke=te,be=ge):Oi(p),(me.uponSanitizeElement.length>0||me.uponSanitizeAttribute.length>0)&&(ke=tr(ke)),me.uponSanitizeAttribute.length>0&&(be=tr(be)),e.removed=[];let le=ui&&typeof _!="string"&&A(_);if(le){Ea(_);let ht=X(_);if(typeof ht=="string"){let tt=Te(ht);if(!ke[tt]||Lt[tt])throw $n(_),ps("root node is forbidden and cannot be sanitized in-place")}if(C(_))throw $n(_),ps("root node is clobbered and cannot be sanitized in-place");try{Si(_)}catch(tt){throw $n(_),tt}}else if(A(_))b=As("<!---->"),T=b.ownerDocument.importNode(_,!0),T.nodeType===er.element&&T.nodeName==="BODY"||T.nodeName==="HTML"?b=T:b.appendChild(T),Si(b);else{if(!Le&&!vt&&!ie&&_.indexOf("<")===-1)return W&&xt?we(_):_;if(b=As(_),!b)return Le?null:xt?ne:""}b&&Ke&&pt(b.firstChild);let fe=le?_:b;try{let ht=y(fe);for(;L=ht.nextNode();)Ce(L,fe),Rr(L,fe),E(L.content)&&In(L.content)}catch(ht){throw le&&($n(_),fo(e.removed,tt=>{tt.element&&Er(tt.element)})),ht}if(le){let ht=!1;if(fo(e.removed,tt=>{tt.element&&(tt.element===_&&(ht=!0),Er(tt.element))}),ht)throw ps("a node selected for removal could not be safely returned; refusing to sanitize in place");return vt&&v(_),_}if(Le){if(vt&&v(b),ot)for(V=Ge.call(b.ownerDocument);b.firstChild;)V.appendChild(b.firstChild);else V=b;return(be.shadowroot||be.shadowrootmode)&&(V=Ot.call(r,V,!0)),V}let Ae=ie?b.outerHTML:b.innerHTML;return ie&&ke["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&fn(Dz,b.ownerDocument.doctype.name)&&(Ae="<!DOCTYPE "+b.ownerDocument.doctype.name+`>
`+Ae),vt&&(Ae=Q(Ae)),W&&xt?we(Ae):Ae},e.setConfig=function(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Oi(_),Y=!0,te=ke,ge=be},e.clearConfig=function(){gn=null,Y=!1,te=null,ge=null,W=de,ne=""},e.isValidAttribute=function(_,p,b){gn||Oi({});let T=Te(_),L=Te(p);return Ie(T,L,b)},e.addHook=function(_,p){typeof p=="function"&&Ln(me,_)&&ic(me[_],p)},e.removeHook=function(_,p){if(Ln(me,_)){if(p!==void 0){let b=bz(me[_],p);return b===-1?void 0:yz(me[_],b,1)[0]}return TT(me[_])}},e.removeHooks=function(_){Ln(me,_)&&(me[_]=[])},e.removeAllHooks=function(){me=zT()},e}var Vz=VT();FT.exports=Vz});var y0=Of(Qf());var $c=[{id:"vcs",title:"Making Games For The Atari 2600",url:"https://www.amazon.com/dp/1541021304",image:"book_a2600.png",platforms:["vcs"]},{id:"arcade",title:"Making 8-bit Arcade Games in C",url:"https://www.amazon.com/dp/1545484759",image:"book_arcade.png",platforms:["mw8080bw","vicdual","galaxian","galaxian-scramble","vector-z80color","williams-z80"]},{id:"verilog",title:"Designing Video Game Hardware in Verilog",url:"https://www.amazon.com/dp/1728619440",image:"book_verilog.png",platforms:["verilog"]},{id:"nes",title:"Making Games for the NES",url:"https://www.amazon.com/dp/1075952727",image:"book_nes.png",platforms:["nes"]},{id:"c64",title:"Making Games for the C-64",url:"https://www.amazon.com/dp/B0DMKH8NGL",image:"book_c64.png",platforms:["c64"]}];function V0(n){var e=Nt(n),t=Mr(n);return $c.find(r=>r.platforms.includes(e))||$c.find(r=>r.platforms.includes(t))}var _s="\u2190\u2191\u2193\u2192";var Tc=[{keys:[_s],action:"Joypad"},{keys:["Space"],action:"Button A"},{keys:["Shift"],action:"Button B"}],Tf=[{keys:[_s],action:"Joystick"},{keys:["Space"],action:"Button 1"},{keys:["Shift"],action:"Button 2"},{keys:["\\"],action:"Coin"},{keys:["Enter"],action:"Start"}],Qc=[...Tc,{keys:["\\"],action:"Select"},{keys:["Enter"],action:"Start"}],F0=[{keys:[_s],action:"Joystick"},{keys:["Space"],action:"Button"}],Y0={vcs:F0,c64:F0,apple2:[{keys:["Mouse"],action:"Paddles/Joystick"},{keys:["Click"],action:"Button 1"},{keys:["SHIFT-Click"],action:"Button 2"},{keys:["ALT-Click"],action:"Button 3"}],nes:Qc,atari7800:Qc,pce:Qc,gb:Qc,msx:Tc,coleco:Tc,sms:[...Tc,{keys:["Enter"],action:"Start"}],vicdual:Tf,galaxian:Tf,vector:Tf,mw8080bw:[{keys:["\u2190\xA0\u2192"],action:"Joystick"},{keys:["Space"],action:"Fire"}],williams:[{keys:["A W S D"],action:"Move"},{keys:[_s],action:"Fire"},{keys:["\\"],action:"Coin"},{keys:["Enter"],action:"Start"},{keys:["6 7 8 9"],action:"Extra"}],astrocade:[{keys:[_s],action:"Joystick"},{keys:["Space"],action:"Trigger"},{keys:["Mouse X"],action:"Knob"},{keys:[`U I O P
J K L /
7 8 9 X
4 5 6 -
1 2 3 ,
\\ 0 . =`],action:"Keypad"}],vectrex:[{keys:[_s],action:"Joystick"},{keys:["Z X C V"],action:"Buttons"}],atari8:[{keys:[_s],action:"Joystick"},{keys:["Shift"],action:"Button"},{keys:["F1"],action:"Start"},{keys:["F2"],action:"Select"},{keys:["F3"],action:"Option"}],pacman:[{keys:["\u2190\xA0\u2192"],action:"Joystick"},{keys:["Space"],action:"Fire"},{keys:["5","6"],action:"Coin"},{keys:["Enter","2"],action:"Start"}]};var XA={left:"arrowleft",right:"arrowright",up:"arrowup",down:"arrowdown"},Af=null;function Po(){if(Af===null){var n=typeof navigator!="undefined"?navigator:null;Af=!!n&&/mac|iphone|ipad|ipod/i.test(n.platform||n.userAgent||"")}return Af}function _f(n){var e=n.toLowerCase().split("+"),t=e.pop(),r={mod:!1,shift:!1,key:""};for(var i of e)if(i=="mod"||i=="ctrl"||i=="meta"||i=="cmd")r.mod=!0;else if(i=="shift")r.shift=!0;else return console.warn('Keyboard shortcut "'+n+'": unsupported modifier "'+i+'" (alt is layout-dependent), skipping'),null;t=XA[t]||t;var s=/^[a-z]$/.test(t),o=/^f([1-9]|1[0-2])$/.test(t);return!s&&!o&&!/^[0-9]$/.test(t)&&!/^arrow/.test(t)?(console.warn('Keyboard shortcut "'+n+'": key "'+t+'" is layout-dependent (use a-z, 0-9, f1-f12), skipping'),null):r.shift&&!s&&!/^arrow/.test(t)?(console.warn('Keyboard shortcut "'+n+'": shift is only allowed with letters and arrows, skipping'),null):(r.key=t,r)}function zA(n,e){if(e.altKey)return!1;var t=Po(),r=t?e.metaKey:e.ctrlKey,i=t?e.ctrlKey:e.metaKey;return n.mod!==r||i||n.shift!==e.shiftKey?!1:(e.key||"").toLowerCase()===n.key}var Ac=class{constructor(){this.bindings=[];this.handler=e=>{if(!e.defaultPrevented)for(var t=0;t<this.bindings.length;t++){var r=this.bindings[t];if(zA(r.binding,e)){e.preventDefault(),e.stopPropagation(),r.fn(e);return}}}}bind(e,t){var r=_f(e);r&&this.bindings.push({binding:r,fn:t})}unbindAll(){this.bindings=[]}attach(){window.addEventListener("keydown",this.handler)}detach(){window.removeEventListener("keydown",this.handler)}},WA={mod:"Mod",cmd:"Mod",meta:"Mod",ctrl:"Ctrl",control:"Ctrl",shift:"Shift",alt:"Alt",option:"Alt"},Cf=null;function NA(){if(Cf===null){var n=typeof navigator!="undefined"?navigator:null;Cf=!!n&&/win/i.test(n.platform||n.userAgent||"")}return Cf}function j0(n){var e=n.split("-"),t=e.pop();t===""&&(t="-");var r=[];for(var i of e)if(i!==""){var s=WA[i.toLowerCase()]||i;s=="Ctrl"&&!Po()&&(s="Mod"),r.indexOf(s)<0&&r.push(s)}return r.sort(),r.concat([t.toLowerCase()]).join("-")}function BA(n){var e=Po()?n.mac:NA()?n.win:n.linux;return e||n.key}var Ef=["Mod-Shift-a","Mod-Shift-d","Mod-Shift-e","Mod-Shift-f","Mod-Shift-g","Mod-Shift-h","Mod-Shift-i","Mod-Shift-j","Mod-Shift-k","Mod-Shift-l","Mod-Shift-r","Mod-Shift-x","Mod-Shift-y"];function Rf(n,e){var t=e.map(j0);return n.filter(function(r){var i=BA(r);return!i||t.indexOf(j0(i))<0})}var VA={shift:"\u21E7",ctrl:"\u2303",alt:"\u2325",meta:"\u2318",mod:"\u2318",cmd:"\u2318"},FA={shift:"Shift",ctrl:"Ctrl",alt:"Alt",meta:"Win",mod:"Ctrl",cmd:"Cmd"},YA={arrowleft:"\u2190",arrowright:"\u2192",arrowup:"\u2191",arrowdown:"\u2193",backspace:"\u232B",enter:"\u21A9",tab:"\u21E5",escape:"\u238B",space:"\u2423"};function Lf(n){var e=n.toLowerCase().split("+"),t=e.pop(),r=Po(),i=r?["shift","ctrl","alt","meta","mod","cmd"]:["mod","ctrl","shift","alt","meta","cmd"],s=i.filter(c=>e.indexOf(c)>=0);for(var o of e)s.indexOf(o)<0&&s.push(o);var a=s.map(c=>r?VA[c]||c:FA[c]||c).join(r?"":"+"),l=/^[a-z][0-9]?$/.test(t)?t.toUpperCase():YA[t]||(r?t:t.charAt(0).toUpperCase()+t.slice(1));return(a?a+(r?"":"+"):"")+l}var Mf=class{constructor(e){this.shortcutsSig="";this.status={};this.visible=!0;this.pendingShortcuts=!1;this.pendingStatus=!1;this.div=e,this.shortcutsZone=$(document.createElement("span")).addClass("shortcuts_zone"),this.statusZone=$(document.createElement("span")).addClass("status_zone"),$(e).append(this.shortcutsZone).append(this.statusZone)}setShortcuts(e){if(this.visible){var t=e.map(s=>s.key+""+s.label).join("");if(t!==this.shortcutsSig){if(Za){this.pendingShortcuts=!0;return}this.shortcutsSig=t,this.shortcutsZone.empty();for(var r of e){var i=$(document.createElement("span")).addClass("shortcut");i.append($(document.createElement("kbd")).text(Lf(r.key))),i.append(document.createTextNode(" "+r.label)),r.fn&&U0(i,r.fn),this.shortcutsZone.append(i)}}}}setStatus(e,t){t?this.status[e]=t:delete this.status[e],this.renderStatus()}renderStatus(){if(this.visible){if(Za){this.pendingStatus=!0;return}this.statusZone.empty();for(var e of Object.keys(this.status)){var t=this.status[e],r=$(document.createElement("span")).addClass("status_item");t.cls&&r.addClass(t.cls),t.title&&r.prop("title",t.title),r.text(t.text),t.fn&&U0(r,t.fn),this.statusZone.append(r)}}}};function U0(n,e){n.addClass("clickable"),n.mousedown(t=>t.preventDefault()),n.click(e)}var Za=!1;function q0(){zn&&(zn.pendingShortcuts&&(zn.pendingShortcuts=!1,Wn()),zn.pendingStatus&&(zn.pendingStatus=!1,zn.renderStatus()))}function jA(){$(document).on("mousedown.shortcutbar",()=>{Za=!0}),$(document).on("mouseup.shortcutbar",()=>{Za=!1,q0()}),$(window).on("blur.shortcutbar",()=>{Za=!1,q0()})}var zn=null;function G0(n){zn=new Mf(n),jA()}var H0=()=>[],K0=()=>[];function J0(n){H0=n}function ey(n){K0=n}function Cc(n){$(document.body).toggleClass("statusbar-hidden",!n),zn&&(zn.visible=n,n&&(zn.shortcutsSig="",zn.renderStatus(),Wn()))}function Wn(){if(zn){var n=[...H0(),...K0()],e=document.activeElement;for(var t of ty)e&&t.div.contains(e)&&(n=n.concat(t.fn()));zn.setShortcuts(n.filter(r=>!UA(r.key)))}}var ty=[];function ny(n,e){ty.push({div:n,fn:e})}function UA(n){var e=n.toLowerCase();return!Po()&&(e=="mod+shift+i"||e=="mod+shift+j"||e=="mod+shift+k"||e=="ctrl+alt+t"||e=="ctrl+alt+l")}function qA(){return z0()}function GA(n){if(n._8bwPatched)return n;var e=n.stopCallback;return n.stopCallback=function(t,r,i,s){return t&&(t.ctrlKey||t.altKey||t.metaKey)?t.getModifierState&&t.getModifierState("AltGraph")?e.call(this,t,r,i,s):!1:e.call(this,t,r,i,s)},n._8bwPatched=!0,n}var Wi=class{constructor(e,t){this.boundkeys=[];let r=GA(qA());this.focusDiv=t,this.keybinder=new Ac,this.keybinder.attach(),this.mousetrap=t?new r(t):r,this.span=$(document.createElement("span")).addClass("btn_toolbar"),e.appendChild(this.span[0]),this.newGroup()}destroy(){if(this.span&&(this.span.remove(),this.span=null),this.keybinder&&(this.keybinder.detach(),this.keybinder.unbindAll(),this.keybinder=null),this.mousetrap){for(var e of this.boundkeys)this.mousetrap.unbind(e);this.mousetrap=null}}newGroup(){return this.grp=$(document.createElement("span")).addClass("btn_group").appendTo(this.span).hide()}add(e,t,r,i){var s=null;return r&&(s=$(document.createElement("button")).addClass("btn"),r.startsWith("glyphicon")&&(r='<span class="glyphicon '+r+'" aria-hidden="true"></span>'),s.html(r),s.prop("title",e?t+" ("+Lf(e)+")":t),s.click(i),this.grp.append(s).show()),e&&(!this.focusDiv&&_f(e)?this.keybinder.bind(e,i):(this.mousetrap.bind(e,(o,a)=>(i(o,a),!1)),this.boundkeys.push(e))),s}};var ry=[];function iy(n,e){ry.push({div:n,id:e})}function sy(){let n=document.activeElement;if(!n)return null;for(let e of ry)if(e.div.contains(n))return e.id;return null}function Nn(n){var e=n&&n.w+"px"||"100%",t=n&&n.h+"px"||"100%",r=this.itemHeight=n.itemHeight;this.items=n.items,this.generatorFn=n.generatorFn,this.totalRows=n.totalRows||n.items&&n.items.length;var i=Nn.createScroller(r*this.totalRows);this.container=Nn.createContainer(e,t),this.container.appendChild(i);var s=Math.ceil(n.h/r);this.cachedItemsLen=s*3,this._renderChunk(this.container,0);var o=this,a,l=s*r,c=0;this.rmNodeInterval=setInterval(function(){if(Date.now()-c>100)for(var h=document.querySelectorAll('[data-rm="1"]'),u=0,f=h.length;u<f;u++)try{o.container.removeChild(h[u])}catch(m){}},300);function d(h){var u=h.target.scrollTop;if(!a||Math.abs(u-a)>l){var f=Math.floor(u/r)-s;o._renderChunk(o.container,f<0?0:f),a=u}c=Date.now(),h.preventDefault&&h.preventDefault()}this.container.addEventListener("scroll",d)}Nn.prototype.createRow=function(n){var e;if(this.generatorFn)e=this.generatorFn(n);else if(this.items)if(typeof this.items[n]=="string"){var t=document.createTextNode(this.items[n]);e=document.createElement("div"),e.style.height=this.itemHeight+"px",e.appendChild(t)}else e=this.items[n];return e.classList.add("vrow"),e.setAttribute("data-index",""+n),e.style.position="absolute",e.style.top=n*this.itemHeight+"px",e};Nn.prototype._renderChunk=function(n,e){var t=e+this.cachedItemsLen;t>this.totalRows&&(t=this.totalRows);for(var r=document.createDocumentFragment(),i=e;i<t;i++)r.appendChild(this.createRow(i));for(var s=1,o=n.childNodes.length;s<o;s++)n.childNodes[s].style.display="none",n.childNodes[s].setAttribute("data-rm","1");n.appendChild(r)};Nn.createContainer=function(n,e){var t=document.createElement("div");return t.classList.add("vlist"),t.style.width=n,t.style.height=e,t.style.overflow="auto",t.style.position="relative",t.style.padding="0",t.style.border="1px solid black",t};Nn.createScroller=function(n){var e=document.createElement("div");return e.style.opacity="0",e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="1px",e.style.height=n+"px",e};Nn.prototype.scrollToItem=function(n){this.container.scrollTop=this.itemHeight*n};var HA=["clk","reset"],_c=class{constructor(e){this.lines=[];this.zoom=8;this.t0=0;this.tsel=-1;this.tnow=-1;this.hexformat=!0;this.wfp=e}selectionChanged(){}getActions(){return[{key:"=",label:"Zoom In",icon:"glyphicon-zoom-in",fn:()=>this.setZoom(this.zoom*2)},{key:"-",label:"Zoom Out",icon:"glyphicon-zoom-out",fn:()=>this.setZoom(this.zoom/2)},{key:"ctrl+shift+left",label:"To Start",icon:"glyphicon-backward",fn:()=>{this.setSelTime(0),this.setOrgTime(0)}},{key:"shift+left",label:"Page Left",icon:"glyphicon-fast-backward",fn:()=>this.setSelTime(this.tsel-this.clocksPerPage/4)},{key:"left",label:"Left",icon:"glyphicon-step-backward",fn:()=>this.setSelTime(this.tsel-1)},{key:"right",label:"Right",icon:"glyphicon-step-forward",fn:()=>this.setSelTime(this.tsel+1)},{key:"shift+right",label:"Page Right",icon:"glyphicon-fast-forward",fn:()=>this.setSelTime(this.tsel+this.clocksPerPage/4)},{key:"space",label:"Go To Current",icon:"glyphicon-flash",fn:()=>{this.setOrgTime(this.tnow),this.setSelTime(this.tnow)}},{key:"h",label:"Hex/Dec",icon:"glyphicon-barcode",fn:()=>{this.hexformat=!this.hexformat,this.refresh()}}]}roundT(e){return e=Math.round(e),e=Math.max(0,e),e=Math.min(this.clockMax+this.clocksPerPage/2,e),e}setOrgTime(e){this.t0=this.roundT(e),this.refresh()}setCurrentTime(e){this.tnow=this.roundT(e),this.refresh()}setSelTime(e){e=this.roundT(e),e>=this.t0+this.clocksPerPage-1&&(this.t0+=this.clocksPerPage/4),e<=this.t0+2&&(this.t0-=this.clocksPerPage/4),this.tsel=e,this.setOrgTime(this.t0),this.selectionChanged()}setClocksPerPage(){this.clocksPerPage=Math.floor(this.pageWidth/this.zoom)-1}setZoom(e){this.zoom=Math.max(1/16,Math.min(64,e)),this.setClocksPerPage(),this.t0=Math.max(0,Math.round(this.tsel-this.clocksPerPage/2)),this.refresh()}refresh(){if(this.meta||this.recreate(),!!this.meta)for(var e=0;e<this.meta.length;e++)this.refreshRow(e)}value2str(e,t){var r=this.hexformat?16:10,i=e.toString(r);return r==16&&t&&t.len>3&&(i=`${t.len}'h${i}`),i}isEditable(e){return e&&e.input&&HA.indexOf(e.label)<0}refreshRow(e){var t=this.lines[e],r=this.meta[e];if(!t||!r)return;var i=r.label=="clk",s=t.width,o=t.height,a=t.getContext("2d"),l="14px Andale Mono, Lucida Console, monospace",c="10px Andale Mono, Lucida Console, monospace";a.font=l,a.clearRect(0,0,t.width,t.height);var d=[];this.isEditable(r)&&d.push("input");var h=12,u=h+4,f=4,m=o-u-f,O=r.len==32?4294967296:(1<<r.len)-1||0,S=this.wfp.getSignalData(e,this.t0,Math.ceil(s/this.zoom));this.clockMax=Math.max(this.clockMax,this.t0+S.length);var x=r.len>1&&this.zoom>=32,D=u+m-4;a.fillStyle="#336633",a.fillRect(0,h/2,3,u+m-h/2);let M=a.strokeStyle="#33dd33",Z=a.fillStyle="#66ffff",k="#dddddd";a.beginPath();for(var w=0,R=0,X=-1,W=0;W<S.length;W++){var ne=S[W];if(x&&ne!=X&&w<s-100){var de=D,q=this.value2str(ne,null);q.length>4&&(a.font=c),a.fillText(q,w+this.zoom/4,de)}W>0&&a.lineTo(w,R),R=u+(1-ne/O)*m,i||(w+=this.zoom*(1/8)),W==0?a.moveTo(w,R):a.lineTo(w,R),this.zoom>.75&&X!=ne&&Math.abs(X-ne)<O*.1&&a.fillRect(w,R,1+this.zoom/4,1),i?w+=this.zoom:w+=this.zoom*(7/8),X=ne}if(a.stroke(),a.font=l,this.tsel>=this.t0){a.strokeStyle=a.fillStyle="#ff66ff",a.beginPath(),w=(this.tsel-this.t0)*this.zoom+this.zoom/2,a.moveTo(w,0),a.lineTo(w,o),a.stroke();var ne=S[this.tsel-this.t0];if(a.textAlign="right",ne!==void 0){var pe=this.value2str(ne,r),w=s-h,ve=a.measureText(pe);a.fillStyle="black",a.fillRect(w-ve.width-2,D-13,ve.width+4,17),a.fillStyle="#ff66ff",a.fillText(pe,w,D)}}this.tnow>=this.t0&&(a.strokeStyle=a.fillStyle="#6666cc",a.beginPath(),w=(this.tnow-this.t0)*this.zoom+this.zoom/2,a.moveTo(w,0),a.lineTo(w,o),a.stroke()),a.fillStyle=k,a.textAlign="left";var we=r.label;d.length>0&&(we+=" ("+d.join(", ")+")"),a.fillText(we,5,h)}changeInputValue(e){var t=this.meta[e];if(t){var r=this.wfp.getSignalData(e,this.t0,1),i=r[0]||0,s=0,o=(1<<t.len)-1;o==1?this.wfp.setSignalValue(e,i>0?0:1):this.promptValue(t,i,s,o).then(a=>{a!=null&&a>=s&&a<=o&&this.wfp.setSignalValue(e,a)})}}};function KA(n,e){this.v=n,this.k=e}function oy(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t<e;t++)r[t]=n[t];return r}function JA(n){if(Array.isArray(n))return n}function eC(n,e){var t=n==null?null:typeof Symbol!="undefined"&&n[Symbol.iterator]||n["@@iterator"];if(t!=null){var r,i,s,o,a=[],l=!0,c=!1;try{if(s=(t=t.call(n)).next,e===0){if(Object(t)!==t)return;l=!1}else for(;!(l=(r=s.call(t)).done)&&(a.push(r.value),a.length!==e);l=!0);}catch(d){c=!0,i=d}finally{try{if(!l&&t.return!=null&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw i}}return a}}function tC(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function nC(n,e){return JA(n)||eC(n,e)||rC(n,e)||tC()}function rC(n,e){if(n){if(typeof n=="string")return oy(n,e);var t={}.toString.call(n).slice(8,-1);return t==="Object"&&n.constructor&&(t=n.constructor.name),t==="Map"||t==="Set"?Array.from(n):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?oy(n,e):void 0}}function Ec(n){var e,t;function r(s,o){try{var a=n[s](o),l=a.value,c=l instanceof KA;Promise.resolve(c?l.v:l).then(function(d){if(c){var h=s==="return"&&l.k?s:"next";if(!l.k||d.done)return r(h,d);d=n[h](d).value}i(!!a.done,d)},function(d){r("throw",d)})}catch(d){i(2,d)}}function i(s,o){s===2?e.reject(o):e.resolve({value:o,done:s}),(e=e.next)?r(e.key,e.arg):t=null}this._invoke=function(s,o){return new Promise(function(a,l){var c={key:s,arg:o,resolve:a,reject:l,next:null};t?t=t.next=c:(e=t=c,r(s,o))})},typeof n.return!="function"&&(this.return=void 0)}Ec.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},Ec.prototype.next=function(n){return this._invoke("next",n)},Ec.prototype.throw=function(n){return this._invoke("throw",n)},Ec.prototype.return=function(n){return this._invoke("return",n)};var vy=Object.entries,ay=Object.setPrototypeOf,iC=Object.isFrozen,sC=Object.getPrototypeOf,oC=Object.getOwnPropertyDescriptor,It=Object.freeze,Bt=Object.seal,ko=Object.create,wy=typeof Reflect!="undefined"&&Reflect,Nf=wy.apply,Bf=wy.construct;It||(It=function(e){return e});Bt||(Bt=function(e){return e});Nf||(Nf=function(e,t){for(var r=arguments.length,i=new Array(r>2?r-2:0),s=2;s<r;s++)i[s-2]=arguments[s];return e.apply(t,i)});Bf||(Bf=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return new e(...r)});var Es=Tt(Array.prototype.forEach);Array.prototype.indexOf;var aC=Tt(Array.prototype.lastIndexOf),ly=Tt(Array.prototype.pop),Ia=Tt(Array.prototype.push);Array.prototype.slice;var lC=Tt(Array.prototype.splice),$o=Array.isArray,Wa=Tt(String.prototype.toLowerCase),Df=Tt(String.prototype.toString),cy=Tt(String.prototype.match),Xa=Tt(String.prototype.replace),dy=Tt(String.prototype.indexOf),cC=Tt(String.prototype.trim),dC=Tt(Number.prototype.toString),hC=Tt(Boolean.prototype.toString),hy=typeof BigInt=="undefined"?null:Tt(BigInt.prototype.toString),uy=typeof Symbol=="undefined"?null:Tt(Symbol.prototype.toString),Qn=Tt(Object.prototype.hasOwnProperty),za=Tt(Object.prototype.toString),on=Tt(RegExp.prototype.test),Ni=uC(TypeError);function Tt(n){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return Nf(n,e,r)}}function uC(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return Bf(n,t)}}function Ve(n,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Wa;if(ay&&ay(n,null),!$o(e))return n;let r=e.length;for(;r--;){let i=e[r];if(typeof i=="string"){let s=t(i);s!==i&&(iC(e)||(e[r]=s),i=s)}n[i]=!0}return n}function fC(n){for(let e=0;e<n.length;e++)Qn(n,e)||(n[e]=null);return n}function Vn(n){let e=ko(null);for(let r of vy(n)){var t=nC(r,2);let i=t[0],s=t[1];Qn(n,i)&&($o(s)?e[i]=fC(s):s&&typeof s=="object"&&s.constructor===Object?e[i]=Vn(s):e[i]=s)}return e}function pC(n){switch(typeof n){case"string":return n;case"number":return dC(n);case"boolean":return hC(n);case"bigint":return hy?hy(n):"0";case"symbol":return uy?uy(n):"Symbol()";case"undefined":return za(n);case"function":case"object":{if(n===null)return za(n);let e=n,t=ur(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:za(r)}return za(n)}default:return za(n)}}function ur(n,e){for(;n!==null;){let r=oC(n,e);if(r){if(r.get)return Tt(r.get);if(typeof r.value=="function")return Tt(r.value)}n=sC(n)}function t(){return null}return t}function mC(n){try{return on(n,""),!0}catch(e){return!1}}var fy=It(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Zf=It(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),If=It(["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"]),gC=It(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Xf=It(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),OC=It(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),py=It(["#text"]),my=It(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),zf=It(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),gy=It(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Rc=It(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),bC=Bt(/{{[\w\W]*|^[\w\W]*}}/g),yC=Bt(/<%[\w\W]*|^[\w\W]*%>/g),SC=Bt(/\${[\w\W]*/g),vC=Bt(/^data-[\-\w.\u00B7-\uFFFF]+$/),wC=Bt(/^aria-[\-\w]+$/),Oy=Bt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),xC=Bt(/^(?:\w+script|data):/i),PC=Bt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),kC=Bt(/^html$/i),$C=Bt(/^[a-z][.\w]*(-[.\w]+)+$/i),by=Bt(/<[/\w!]/g),yy=Bt(/<[/\w]/g),QC=Bt(/<\/no(script|embed|frames)/i),TC=Bt(/\/>/i),Bn={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},xy=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],AC=It(Ve({},xy)),CC=(function(){let n={};return Es(xy,e=>{n[e]=Bt(new RegExp("</"+e+"(?=[\\t\\n\\f\\r />])","i"))}),It(n)})(),_C=function(){return typeof window=="undefined"?null:window},EC=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null,i="data-tt-policy-suffix";t&&t.hasAttribute(i)&&(r=t.getAttribute(i));let s="dompurify"+(r?"#"+r:"");try{return e.createPolicy(s,{createHTML(o){return o},createScriptURL(o){return o}})}catch(o){return console.warn("TrustedTypes policy "+s+" could not be created."),null}},Sy=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Bi=function(e,t,r,i){return Qn(e,t)&&$o(e[t])?Ve(i.base?Vn(i.base):{},e[t],i.transform):r},Wf=function(e,t,r){let i=Qn(e,t)?e[t]:void 0;return i&&typeof i=="object"?Vn(i):r()};function Py(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_C(),e=_=>Py(_);if(e.version="3.4.16",e.removed=[],!n||!n.document||n.document.nodeType!==Bn.document||!n.Element)return e.isSupported=!1,e;let t=n.document,r=t,i=r.currentScript;n.DocumentFragment;let s=n.HTMLTemplateElement,o=n.Node,a=n.Element,l=n.NodeFilter;n.NamedNodeMap===void 0&&(n.NamedNodeMap||n.MozNamedAttrMap),n.HTMLFormElement;let c=n.DOMParser,d=n.trustedTypes,h=a.prototype,u=ur(h,"cloneNode"),f=ur(h,"remove"),m=ur(h,"removeAttributeNode"),O=ur(h,"nextSibling"),S=ur(h,"childNodes"),x=ur(h,"parentNode"),D=ur(h,"shadowRoot"),M=ur(h,"attributes"),Z=o&&o.prototype?ur(o.prototype,"nodeType"):null,k=o&&o.prototype?ur(o.prototype,"nodeName"):null,w=o&&o.prototype?ur(o.prototype,"ownerDocument"):null,R=function(p){return Z?Z(p):p.nodeType},X=function(p){return k?k(p):p.nodeName};if(typeof s=="function"){let _=t.createElement("template");_.content&&_.content.ownerDocument&&(t=_.content.ownerDocument)}let W,ne="",de,q=!1,pe=0,ve=function(){if(pe>0)throw Ni('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},we=function(p){ve(),pe++;try{return W.createHTML(p)}finally{pe--}},B=function(p){ve(),pe++;try{return W.createScriptURL(p)}finally{pe--}},ue=function(){return q||(de=EC(d,i),q=!0),de},G=t,Pe=G.implementation,Qe=G.createNodeIterator,Ge=G.createDocumentFragment,He=G.getElementsByTagName,Ot=r.importNode,me=Sy();e.isSupported=typeof vy=="function"&&typeof x=="function"&&Pe&&Pe.createHTMLDocument!==void 0;let nn=bC,ir=yC,sr=SC,or=vC,di=wC,bs=xC,qr=PC,ys=$C,Dn=Oy,ke=null,kn=Ve({},[...fy,...Zf,...If,...Xf,...py]),be=null,ar=Ve({},[...my,...zf,...gy,...Rc]),st=Object.seal(ko(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Lt=null,Qr=null,ft=Object.seal(ko(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Tr=!0,lr=!0,rn=!1,Ar=!0,vt=!1,Qt=!0,ie=!1,Y=!1,te=null,ge=null,Ke=!1,Le=!1,ot=!1,xt=!1,cr=!0,dr=!1,hi="user-content-",Gr=!0,ui=!1,wt={},pn=null,Ss=Ve({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),Ii=null,vs=Ve({},["audio","video","img","source","image","track"]),ws=null,xs=Ve({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cr="http://www.w3.org/1998/Math/MathML",_r="http://www.w3.org/2000/svg",bt="http://www.w3.org/1999/xhtml",mn=bt,fi=!1,pi=null,ka=Ve({},[Cr,_r,bt],Df),Xi=It(["mi","mo","mn","ms","mtext"]),mi=Ve({},Xi),Ps=It(["annotation-xml"]),gi=Ve({},Ps),$a=Ve({},["title","style","font","a","script"]),Zn=null,Qa=["application/xhtml+xml","text/html"],Ta="text/html",Te=null,gn=null,Aa=t.createElement("form"),ks=function(p){return p instanceof RegExp||p instanceof Function},Oi=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(gn&&gn===p)return;(!p||typeof p!="object")&&(p={}),p=Vn(p),Zn=Qa.indexOf(p.PARSER_MEDIA_TYPE)===-1?Ta:p.PARSER_MEDIA_TYPE,Te=Zn==="application/xhtml+xml"?Df:Wa,ke=Bi(p,"ALLOWED_TAGS",kn,{transform:Te}),be=Bi(p,"ALLOWED_ATTR",ar,{transform:Te}),pi=Bi(p,"ALLOWED_NAMESPACES",ka,{transform:Df}),ws=Bi(p,"ADD_URI_SAFE_ATTR",xs,{transform:Te,base:xs}),Ii=Bi(p,"ADD_DATA_URI_TAGS",vs,{transform:Te,base:vs}),pn=Bi(p,"FORBID_CONTENTS",Ss,{transform:Te}),Lt=Bi(p,"FORBID_TAGS",Vn({}),{transform:Te}),Qr=Bi(p,"FORBID_ATTR",Vn({}),{transform:Te}),wt=Qn(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?Vn(p.USE_PROFILES):p.USE_PROFILES:!1,Tr=p.ALLOW_ARIA_ATTR!==!1,lr=p.ALLOW_DATA_ATTR!==!1,rn=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Ar=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,vt=p.SAFE_FOR_TEMPLATES||!1,Qt=p.SAFE_FOR_XML!==!1,ie=p.WHOLE_DOCUMENT||!1,Le=p.RETURN_DOM||!1,ot=p.RETURN_DOM_FRAGMENT||!1,xt=p.RETURN_TRUSTED_TYPE||!1,Ke=p.FORCE_BODY||!1,cr=p.SANITIZE_DOM!==!1,dr=p.SANITIZE_NAMED_PROPS||!1,Gr=p.KEEP_CONTENT!==!1,ui=p.IN_PLACE||!1,Dn=mC(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:Oy,mn=typeof p.NAMESPACE=="string"?p.NAMESPACE:bt,mi=Wf(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Ve({},Xi)),gi=Wf(p,"HTML_INTEGRATION_POINTS",()=>Ve({},Ps));let b=Wf(p,"CUSTOM_ELEMENT_HANDLING",()=>ko(null));if(st=ko(null),Qn(b,"tagNameCheck")&&ks(b.tagNameCheck)&&(st.tagNameCheck=b.tagNameCheck),Qn(b,"attributeNameCheck")&&ks(b.attributeNameCheck)&&(st.attributeNameCheck=b.attributeNameCheck),Qn(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),Bt(st),vt&&(lr=!1),ot&&(Le=!0),wt&&(ke=Ve({},py),be=ko(null),wt.html===!0&&(Ve(ke,fy),Ve(be,my)),wt.svg===!0&&(Ve(ke,Zf),Ve(be,zf),Ve(be,Rc)),wt.svgFilters===!0&&(Ve(ke,If),Ve(be,zf),Ve(be,Rc)),wt.mathMl===!0&&(Ve(ke,Xf),Ve(be,gy),Ve(be,Rc))),ft.tagCheck=null,ft.attributeCheck=null,Qn(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?ft.tagCheck=p.ADD_TAGS:$o(p.ADD_TAGS)&&(ke===kn&&(ke=Vn(ke)),Ve(ke,p.ADD_TAGS,Te))),Qn(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?ft.attributeCheck=p.ADD_ATTR:$o(p.ADD_ATTR)&&(be===ar&&(be=Vn(be)),Ve(be,p.ADD_ATTR,Te))),Qn(p,"ADD_FORBID_CONTENTS")&&$o(p.ADD_FORBID_CONTENTS)&&(pn===Ss&&(pn=Vn(pn)),Ve(pn,p.ADD_FORBID_CONTENTS,Te)),Gr&&(ke["#text"]=!0),ie&&Ve(ke,["html","head","body"]),ke.table&&(Ve(ke,["tbody"]),delete Lt.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ni('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ni('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let T=W;W=p.TRUSTED_TYPES_POLICY;try{ne=we("")}catch(L){throw W=T,L}}else p.TRUSTED_TYPES_POLICY===null?(W=void 0,ne=""):(W===void 0&&(W=ue()),W&&typeof ne=="string"&&(ne=we("")));It&&It(p),gn=p},$s=Ve({},[...Zf,...If,...gC]),Qs=Ve({},[...Xf,...OC]),Ca=function(p,b,T){return b.namespaceURI===bt?p==="svg":b.namespaceURI===Cr?p==="svg"&&(T==="annotation-xml"||mi[T]):!!$s[p]},bo=function(p,b,T){return b.namespaceURI===bt?p==="math":b.namespaceURI===_r?p==="math"&&gi[T]:!!Qs[p]},bi=function(p,b,T){return b.namespaceURI===_r&&!gi[T]||b.namespaceURI===Cr&&!mi[T]?!1:!Qs[p]&&($a[p]||!$s[p])},yo=function(p){let b=x(p);(!b||!b.tagName)&&(b={namespaceURI:mn,tagName:"template"});let T=Wa(p.tagName),L=Wa(b.tagName);return pi[p.namespaceURI]?p.namespaceURI===_r?Ca(T,b,L):p.namespaceURI===Cr?bo(T,b,L):p.namespaceURI===bt?bi(T,b,L):!!(Zn==="application/xhtml+xml"&&pi[p.namespaceURI]):!1},pt=function(p){Ia(e.removed,{element:p});try{x(p).removeChild(p)}catch(b){if(f(p),!x(p))throw Ni("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Ts=function(p,b,T){try{m(p,b)}catch(L){try{p.removeAttribute(T)}catch(V){}}},$n=function(p){Er(p);let b=S(p);if(b){let L=[];Es(b,V=>{Ia(L,V)}),Es(L,V=>{try{f(V)}catch(le){}})}let T=M(p);if(T)for(let L=T.length-1;L>=0;--L){let V=T[L],le=V&&V.name;typeof le=="string"&&Ts(p,V,le)}},Dt=function(p,b,T){if(!T)try{T=b.getAttributeNode(p)}catch(L){T=null}Ia(e.removed,{attribute:T||null,from:b});try{T?m(b,T):b.removeAttribute(p)}catch(L){try{b.removeAttribute(p)}catch(V){}}if(p==="is")if(Le||ot)try{pt(b)}catch(L){}else try{b.setAttribute(p,"")}catch(L){}},_a=function(p){let b=M(p);if(b)for(let T=b.length-1;T>=0;--T){let L=b[T],V=L&&L.name;typeof V!="string"||be[Te(V)]||Ts(p,L,V)}},Er=function(p){let b=[p];for(;b.length>0;){let T=b.pop();R(T)===Bn.element&&_a(T);let L=S(T);if(L)for(let V=L.length-1;V>=0;--V)b.push(L[V])}},yi=function(p,b){return Qt?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},Ea=function(p){if(!Qt)return;let b=[p];for(;b.length>0;){let T=b.pop(),L=R(T);if(L===Bn.processingInstruction||L===Bn.comment&&on(yy,T.data)){try{f(T)}catch(le){}continue}if(L===Bn.element){let le=T,fe=Te(X(T));try{le.hasAttribute&&le.hasAttribute("patchsrc")&&le.removeAttribute("patchsrc"),le.hasAttribute&&le.hasAttribute("for")&&yi("for",fe)&&le.removeAttribute("for")}catch(Ae){}}let V=S(T);if(V)for(let le=V.length-1;le>=0;--le)b.push(V[le])}},As=function(p){let b=null,T=null;if(Ke)p="<remove></remove>"+p;else{let le=cy(p,/^[\r\n\t ]+/);T=le&&le[0]}Zn==="application/xhtml+xml"&&mn===bt&&(p='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+p+"</body></html>");let L=W?we(p):p;if(mn===bt)try{b=new c().parseFromString(L,Zn)}catch(le){}if(!b||!b.documentElement){b=Pe.createDocument(mn,"template",null);try{b.documentElement.innerHTML=fi?ne:L}catch(le){}}let V=b.body||b.documentElement;return p&&T&&V.insertBefore(t.createTextNode(T),V.childNodes[0]||null),mn===bt?He.call(b,ie?"html":"body")[0]:ie?b.documentElement:V},y=function(p){let b=w?w(p):p.ownerDocument;return Qe.call(b||p,p,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Q=function(p){return p=Xa(p,nn," "),p=Xa(p,ir," "),p=Xa(p,sr," "),p},v=function(p){var b;p.normalize();let T=w?w(p):p.ownerDocument,L=Qe.call(T||p,p,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),V=L.nextNode();for(;V;)V.data=Q(V.data),V=L.nextNode();let le=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");le&&Es(le,fe=>{E(fe.content)&&v(fe.content)})},C=function(p){let b=k?k(p):null;return typeof b!="string"||Te(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==M(p)||typeof p.removeAttribute!="function"||typeof p.removeAttributeNode!="function"||typeof p.getAttributeNode!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function"||p.nodeType!==Z(p)||p.childNodes!==S(p)},E=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return Z(p)===Bn.documentFragment}catch(b){return!1}},A=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return typeof Z(p)=="number"}catch(b){return!1}};function I(_,p,b){_.length!==0&&Es(_,T=>{T.call(e,p,b,gn)})}let j=function(p,b){return!!(Qt&&p.hasChildNodes()&&!A(p.firstElementChild)&&on(by,p.textContent)&&on(by,p.innerHTML)||Qt&&p.namespaceURI===bt&&AC[b]&&(A(p.firstElementChild)||typeof p.textContent=="string"&&on(CC[b],p.textContent))||p.nodeType===Bn.processingInstruction||Qt&&p.nodeType===Bn.comment&&on(yy,p.data))},U=function(p,b){if(p instanceof RegExp)return on(p,b);if(p instanceof Function){for(var T=arguments.length,L=new Array(T>2?T-2:0),V=2;V<T;V++)L[V-2]=arguments[V];return!!p(b,...L)}return!1},H=function(p,b,T){if(!Lt[b]&&at(b)&&U(st.tagNameCheck,b))return!1;if(Gr&&!pn[b]){let L=x(p),V=S(p);if(V&&L){let le=V.length;for(let fe=le-1;fe>=0;--fe){let Ae=p===T?u(V[fe],!0):V[fe];L.insertBefore(Ae,O(p))}}}return pt(p),!0},K=function(p,b,T,L){return p.length===0?b:b===T||b===L?Vn(b):b},ce=function(p,b){return p===b||x(p)!==null?!1:(ui&&Er(p),!0)},Ce=function(p,b){if(I(me.beforeSanitizeElements,p,null),ce(p,b))return!0;if(C(p))return pt(p),!0;let T=Te(X(p));if(ke=K(me.uponSanitizeElement,ke,kn,te),I(me.uponSanitizeElement,p,{tagName:T,allowedTags:ke}),ce(p,b))return!0;if(j(p,T))return pt(p),!0;if(Lt[T]||!(ft.tagCheck instanceof Function&&ft.tagCheck(T))&&!ke[T]){let L=H(p,T,b);return L===!1&&(I(me.afterSanitizeElements,p,null),ce(p,b))?!0:L}if(R(p)===Bn.element&&!yo(p)||(T==="noscript"||T==="noembed"||T==="noframes")&&on(QC,p.innerHTML))return pt(p),!0;if(vt&&p.nodeType===Bn.text){let L=Q(p.textContent);p.textContent!==L&&(Ia(e.removed,{element:p.cloneNode()}),p.textContent=L)}return I(me.afterSanitizeElements,p,null),ce(p,b)},Ie=function(p,b,T){if(Qr[b]||yi(b,p)||cr&&(b==="id"||b==="name")&&(T in t||T in Aa))return!1;let L=be[b]||ft.attributeCheck instanceof Function&&ft.attributeCheck(b,p);return lr&&on(or,b)||Tr&&on(di,b)?!0:L?ws[b]||on(Dn,Xa(T,qr,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&dy(T,"data:")===0&&Ii[p]||rn&&!on(bs,Xa(T,qr,""))?!0:!T:at(p)&&U(st.tagNameCheck,p)&&U(st.attributeNameCheck,b,p)||b==="is"&&st.allowCustomizedBuiltInElements&&U(st.tagNameCheck,T)},Be=Ve({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),at=function(p){return!Be[Wa(p)]&&on(ys,p)},dt=function(p,b,T,L){if(W&&typeof d=="object"&&typeof d.getAttributeType=="function"&&!T)switch(d.getAttributeType(p,b)){case"TrustedHTML":return we(L);case"TrustedScriptURL":return B(L)}return L},sn=function(p,b,T,L){try{return T?p.setAttributeNS(T,b,L):p.setAttribute(b,L),C(p)?(pt(p),!1):!0}catch(V){return Dt(b,p),!1}},Rr=function(p,b){if(I(me.beforeSanitizeAttributes,p,null),ce(p,b))return;let T=p.attributes;if(!T||C(p))return;be=K(me.uponSanitizeAttribute,be,ar,ge);let L={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be,forceKeepAttr:void 0},V=T.length,le=Te(p.nodeName);for(;V--;){let fe=T[V],Ae=fe.name,ht=fe.namespaceURI,tt=fe.value,Xn=Te(Ae),Cs=tt,je=Ae==="value"?Cs:cC(Cs),Ra=!1;if(L.attrName=Xn,L.attrValue=je,L.keepAttr=!0,L.forceKeepAttr=void 0,I(me.uponSanitizeAttribute,p,L),je=L.attrValue,dr&&(Xn==="id"||Xn==="name")&&dy(je,hi)!==0&&(Dt(Ae,p,fe),je=hi+je,Ra=!0),Qt&&on(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,je)){Dt(Ae,p,fe);continue}if(Xn==="attributename"&&cy(je,"href")){Dt(Ae,p,fe);continue}if(!L.forceKeepAttr){if(!L.keepAttr){Dt(Ae,p,fe);continue}if(!Ar&&on(TC,je)){Dt(Ae,p,fe);continue}if(vt&&(je=Q(je)),!Ie(le,Xn,je)){Dt(Ae,p,fe);continue}je=dt(le,Xn,ht,je),je!==Cs&&sn(p,Ae,ht,je)&&Ra&&ly(e.removed)}}I(me.afterSanitizeAttributes,p,null),ce(p,b)},In=function(p){let b=null,T=y(p);for(I(me.beforeSanitizeShadowDOM,p,null);b=T.nextNode();)if(I(me.uponSanitizeShadowNode,b,null),Ce(b,p),Rr(b,p),E(b.content)&&In(b.content),R(b)===Bn.element){let L=D(b);E(L)&&(Si(L),In(L))}I(me.afterSanitizeShadowDOM,p,null)},Si=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let T=b.pop();if(T.shadow){In(T.shadow);continue}let L=T.node,V=R(L)===Bn.element,le=S(L);if(le)for(let fe=le.length-1;fe>=0;--fe)b.push({node:le[fe],shadow:null});if(V){let fe=k?k(L):null;if(typeof fe=="string"&&Te(fe)==="template"){let Ae=L.content;E(Ae)&&b.push({node:Ae,shadow:null})}}if(V){let fe=D(L);E(fe)&&b.push({node:null,shadow:fe},{node:fe,shadow:null})}}};return e.sanitize=function(_){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,T=null,L=null,V=null;if(fi=!_,fi&&(_="<!-->"),typeof _!="string"&&!A(_)&&(_=pC(_),typeof _!="string"))throw Ni("dirty is not a string, aborting");if(!e.isSupported)return _;Y?(ke=te,be=ge):Oi(p),(me.uponSanitizeElement.length>0||me.uponSanitizeAttribute.length>0)&&(ke=Vn(ke)),me.uponSanitizeAttribute.length>0&&(be=Vn(be)),e.removed=[];let le=ui&&typeof _!="string"&&A(_);if(le){Ea(_);let ht=X(_);if(typeof ht=="string"){let tt=Te(ht);if(!ke[tt]||Lt[tt])throw $n(_),Ni("root node is forbidden and cannot be sanitized in-place")}if(C(_))throw $n(_),Ni("root node is clobbered and cannot be sanitized in-place");try{Si(_)}catch(tt){throw $n(_),tt}}else if(A(_))b=As("<!---->"),T=b.ownerDocument.importNode(_,!0),T.nodeType===Bn.element&&T.nodeName==="BODY"||T.nodeName==="HTML"?b=T:b.appendChild(T),Si(b);else{if(!Le&&!vt&&!ie&&_.indexOf("<")===-1)return W&&xt?we(_):_;if(b=As(_),!b)return Le?null:xt?ne:""}b&&Ke&&pt(b.firstChild);let fe=le?_:b;try{let ht=y(fe);for(;L=ht.nextNode();)Ce(L,fe),Rr(L,fe),E(L.content)&&In(L.content)}catch(ht){throw le&&($n(_),Es(e.removed,tt=>{tt.element&&Er(tt.element)})),ht}if(le){let ht=!1;if(Es(e.removed,tt=>{tt.element&&(tt.element===_&&(ht=!0),Er(tt.element))}),ht)throw Ni("a node selected for removal could not be safely returned; refusing to sanitize in place");return vt&&v(_),_}if(Le){if(vt&&v(b),ot)for(V=Ge.call(b.ownerDocument);b.firstChild;)V.appendChild(b.firstChild);else V=b;return(be.shadowroot||be.shadowrootmode)&&(V=Ot.call(r,V,!0)),V}let Ae=ie?b.outerHTML:b.innerHTML;return ie&&ke["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&on(kC,b.ownerDocument.doctype.name)&&(Ae="<!DOCTYPE "+b.ownerDocument.doctype.name+`>
`+Ae),vt&&(Ae=Q(Ae)),W&&xt?we(Ae):Ae},e.setConfig=function(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Oi(_),Y=!0,te=ke,ge=be},e.clearConfig=function(){gn=null,Y=!1,te=null,ge=null,W=de,ne=""},e.isValidAttribute=function(_,p,b){gn||Oi({});let T=Te(_),L=Te(p);return Ie(T,L,b)},e.addHook=function(_,p){typeof p=="function"&&Qn(me,_)&&Ia(me[_],p)},e.removeHook=function(_,p){if(Qn(me,_)){if(p!==void 0){let b=aC(me[_],p);return b===-1?void 0:lC(me[_],b,1)[0]}return ly(me[_])}},e.removeHooks=function(_){Qn(me,_)&&(me[_]=[])},e.removeAllHooks=function(){me=Sy()},e}var Vi=Py();var RC=Yf(),jf=class extends _c{constructor(t,r){super(r);this.scrollbarWidth=12;this.parent=t,this.parent.setAttribute("tabindex","-1"),this.parent.addEventListener("mousedown",i=>{i.preventDefault(),this.parent.focus()}),ny(this.parent,()=>this.getShortcuts()),iy(this.parent,"verilog-waveform"),this.recreate()}getShortcuts(){return this.getActions()}recreate(){clearTimeout(this.wtimer),this.wtimer=setTimeout(()=>{this.destroy(),this._recreate()},0)}destroy(){this.wavelist&&($(this.wavelist.container).remove(),this.wavelist=null),this.toolbar&&(this.toolbar.destroy(),this.toolbar=null),this.clklabel&&(this.clklabel.remove(),this.clklabel=null)}_recreate(){if(this.meta=this.wfp.getSignalMetadata(),!!this.meta){var t=$(this.parent).width();this.pageWidth=t-this.scrollbarWidth;var r=40;this.setClocksPerPage(),this.clockMax=0,this.wavelist=new Nn({w:t,h:$(this.parent).height(),itemHeight:r,totalRows:this.meta.length+1,generatorFn:a=>{var l=this.meta[a];let c=document.createElement("div"),d=document.createElement("canvas");return d.width=t-12,d.height=r,c.appendChild(d),c.classList.add("waverow"),this.lines[a]=d,this.refreshRow(a),this.isEditable(l)&&(c.onmousedown=h=>{var u=this.meta[a];u&&u.input&&this.changeInputValue(a)},c.classList.add("editable"),c.style.cursor="grab"),c}});var i=this.wavelist.container;i.tabIndex=-1,this.toolbar=new Wi(this.parent,this.parent),this.toolbar.span.css("display","inline-block"),this.clklabel=document.createElement("span"),this.clklabel.innerText="-",$(this.parent).append(this.clklabel),$(this.parent).append(i);var s=!1,o=a=>{this.setSelTime(a.offsetX/this.zoom+this.t0-.5)};$(i).mousedown(a=>{s=!0,o(a)}),$(i).mousemove(a=>{s&&o(a)}),$(i).mouseup(a=>{s=!1}),$(i).on("wheel",a=>{if(Math.abs(a.originalEvent.deltaX)>Math.abs(a.originalEvent.deltaY)){var l=Math.max(-1e3,Math.min(1e3,a.originalEvent.deltaX));l&&this.setOrgTime(this.t0+l)}});for(let a of this.getActions())this.toolbar.add(a.key,a.label,a.icon,a.fn);this.toolbar.add("+","Zoom In",null,()=>this.setZoom(this.zoom*2)),$(window).resize(()=>{this.recreate()})}}selectionChanged(){this.clklabel.innerText=" clk "+this.tsel}promptValue(t,r,i,s){return new Promise(o=>{bootbox.prompt({value:r+"",inputType:"number",title:`Enter new value for "${Vi.sanitize(t.label)}" (${i} to ${s}):`,callback:a=>o(a!=null?parseInt(a):null)})})}},Mc=class{constructor(e,t){this.provider=t;var r=$("#emuoverlay").show();this.topdiv=$('<div class="emuspacer">').appendTo(r)[0],this.topdiv.appendChild(e),this.wavediv=$('<div class="emuscope">').appendTo(r)[0],this.split=RC([this.topdiv,this.wavediv],{minSize:[0,0],sizes:[99,1],direction:"vertical",gutterSize:16,onDrag:()=>this.resize()})}isVisible(){return this.split.getSizes()[1]>2}show(){this.split.setSizes([0,100])}setCurrentTime(e){this.waveview&&this.waveview.setCurrentTime(e)}update(){this.isVisible()&&(this.waveview?this.waveview.refresh():this.waveview=new jf(this.wavediv,this.provider))}resize(){this.waveview&&this.waveview.recreate()}};function ky(){X0({createScope:(n,e)=>new Mc(n,e),showVideoControls(n){$("#speed_bar, #run_bar, #dbg_record").toggle(n)},showSettleCount(n){n==null?$("#verilog_bar").hide():($("#verilog_bar").show(),$("#settle_label").text(n+""))}})}var nt=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],MC=[...nt,/^\s*[.]?(include|incbin)\s+([^\s;"]+)/gmi],LC=[...nt,/^\s*#pragma\s+compile\s*\(\s*"([^"]+)"\s*\)/gmi],lt=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],Na=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],DC=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function Ty(n){let e=n&&qt(n);return e&&e.includeDirs&&e.includeDirs.length?DC:[]}var $y=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],ZC=[/^[!]src\s+"(.+?)"/gmi],IC=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],XC=[/^\s*(import)\s*"(.+?)"/gmi],zC=[/^\s*%%\s*#include\s+"(.+?)"/gm],WC={cc65:{apple2:"https://cc65.github.io/doc/apple2.html",atari8:"https://cc65.github.io/doc/atari.html",c64:"https://cc65.github.io/doc/c64.html",nes:"https://cc65.github.io/doc/nes.html",pce:"https://cc65.github.io/doc/pce.html",vic20:"https://cc65.github.io/doc/vic20.html",lynx:"https://cc65.github.io/doc/lynx.html"}},qf=3,Uf={default:qf===3?{preloadFS:"sdcc",wasiFSZip:"sdcc-fs.zip"}:{wasiFSZip:"sdcc-fs.zip"},coleco:{preloadFS:"sdcc"},"msx-libcv":{preloadFS:"sdcc"},sms:{preloadFS:"sdcc"},gb:{preloadFS:"sdcc"},cpc:{preloadFS:"sdcc"}},Qy={apple2:{wasiFSZip:"cc65-fs-apple2.zip"},c64:{wasiFSZip:"cc65-fs-c64.zip"},vic20:{wasiFSZip:"cc65-fs-vic20.zip"},nes:{wasiFSZip:"cc65-fs-nes.zip"},atari8:{wasiFSZip:"cc65-fs-atari8.zip"},vector:{wasiFSZip:"cc65-fs-none.zip"},atari7800:{wasiFSZip:"cc65-fs-none.zip"},devel:{wasiFSZip:"cc65-fs-none.zip"},vcs:{wasiFSZip:"cc65-fs-atari2600.zip"},pce:{wasiFSZip:"cc65-fs-pce.zip"},exidy:{wasiFSZip:"cc65-fs-none.zip"}},Qo={dasm:{id:"dasm",name:"DASM",kind:"assembler",arch:"6502",extensions:[".dasm"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/dasm-assembler/dasm/refs/tags/v2.20.17/docs/dasm.txt",wasmModule:"dasm-wasisdk",version:"2.20.17",includePatterns:MC,linkPatterns:lt},acme:{id:"acme",name:"ACME",kind:"assembler",arch:"6502",extensions:[".acme"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/8bitworkshop/acme/main/docs/QuickRef.txt",wasmModule:"acme",version:"0.97.1",includePatterns:[...nt,...ZC],linkPatterns:lt},xa:{id:"xa",name:"XA",kind:"assembler",arch:"6502",extensions:[".xa"],editorStyle:"6502",helpURL:"https://www.floodgap.com/retrotech/xa/",wasmModule:"xa",version:"2.4.1",includePatterns:nt,linkPatterns:lt},nesasm:{id:"nesasm",name:"NESASM",kind:"assembler",arch:"6502",extensions:[".nesasm"],editorStyle:"6502",helpURL:"https://github.com/camsaul/nesasm",wasmModule:"nesasm",version:"3.1",includePatterns:nt,linkPatterns:lt},merlin32:{id:"merlin32",name:"Merlin 32",kind:"assembler",arch:"6502",extensions:[".lnk"],editorStyle:"6502",helpURL:"https://github.com/apple2accumulator/merlin32",wasmModule:"merlin32",version:"1.1.1",includePatterns:[...nt,...$y],linkPatterns:lt},cc65:{id:"cc65",name:"cc65",kind:"compiler",arch:"6502",extensions:[".c",".h"],includeDirs:["/share/cc65/include","/share/cc65/asminc"],editorStyle:"text/x-csrc",helpURL:"https://cc65.github.io/doc/cc65.html",wasmModule:"cc65",version:"2.19",defineFlag:"-D",defineInline:!0,platforms:Qy,includePatterns:nt,linkPatterns:lt},ca65:{id:"ca65",name:"ca65",kind:"assembler",arch:"6502",extensions:[".s",".ca65",".inc"],includeDirs:["/share/cc65/include","/share/cc65/asminc"],editorStyle:"6502",helpURL:"https://cc65.github.io/doc/ca65.html",wasmModule:"ca65",version:"2.19",defineFlag:"-D",defineInline:!1,platforms:Qy,includePatterns:nt,linkPatterns:lt},ld65:{id:"ld65",name:"ld65",kind:"linker",arch:"6502",extensions:[],wasmModule:"ld65",version:"2.19",linkSymbolFlag:"-D",linkSymbolInline:!1},sdcc:{id:"sdcc",name:"SDCC",kind:"compiler",arch:"z80",extensions:[".c",".h",".sdcc"],includeDirs:["/share/sdcc/include","/include"],editorStyle:"text/x-csrc",helpURL:"http://sdcc.sourceforge.net/doc/sdccman.pdf",wasmModule:"sdcc4",version:qf===3?"3.6.5":"4.6.0",versionAlt:qf===3?"4.6.0":"3.6.5",defineFlag:"-D",defineInline:!0,platforms:Uf,includePatterns:nt,linkPatterns:lt},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],includeDirs:["/share/sdcc/include","/include"],editorStyle:"z80",wasmModule:"sdasz80-4",version:"05.50.4+",platforms:Uf,includePatterns:nt,linkPatterns:lt},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:nt,linkPatterns:lt},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdld4",version:"05.50.4-",linkSymbolFlag:"-g",linkSymbolInline:!1},sdas6500:{id:"sdas6500",name:"sdas6500",kind:"assembler",arch:"6502",extensions:[],wasmModule:"sdas6500",version:"05.50.4+",platforms:Uf},sdld6808:{id:"sdld6808",name:"sdld6808",kind:"linker",arch:"6502",extensions:[],wasmModule:"sdld4",version:"05.50.4-",linkSymbolFlag:"-g",linkSymbolInline:!1},sccz80:{id:"sccz80",name:"sccz80",kind:"compiler",arch:"z80",extensions:[".scc"],platforms:{default:{preloadFS:"sccz80"}},noWorkerBuild:!0},naken:{id:"naken",name:"Naken",kind:"assembler",extensions:[".ns"],helpURL:"https://github.com/mikeakohn/naken_asm",noWorkerBuild:!0},zmac:{id:"zmac",name:"zmac",kind:"assembler",arch:"z80",extensions:[".z"],editorStyle:"z80",helpURL:"https://raw.githubusercontent.com/8bitworkshop/zmac/master/doc.txt",wasmModule:"zmac",version:"28jul2018",includePatterns:nt,linkPatterns:lt},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:Na,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...nt,...$y],linkPatterns:lt},cmoc:{id:"cmoc",name:"CMOC",kind:"compiler",arch:"6809",extensions:[".c",".h"],editorStyle:"text/x-csrc",helpURL:"https://github.com/stahta01/cmoc/",wasmModule:"cmoc",version:"0.1.67",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},lwasm:{id:"lwasm",name:"LWASM",kind:"assembler",arch:"6809",extensions:[".lwasm"],editorStyle:"6809",wasmModule:"lwasm",version:"4.17",includePatterns:nt,linkPatterns:lt},lwlink:{id:"lwlink",name:"LWLINK",kind:"linker",arch:"6809",extensions:[],wasmModule:"lwlink",version:"4.17"},vasmarm:{id:"vasmarm",name:"vasm (ARM)",kind:"assembler",arch:"arm32",extensions:[".vasm"],editorStyle:"vasm",wasmModule:"vasmarm_std",version:"1.8k",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},armips:{id:"armips",name:"armips",kind:"assembler",arch:"arm32",extensions:[".armips"],editorStyle:"vasm",wasmModule:"armips",version:"0.11.0",includePatterns:nt,linkPatterns:lt},armtcc:{id:"armtcc",name:"TCC (ARM)",kind:"compiler",arch:"arm32",extensions:[".c",".s"],includeDirs:["/include"],wasiFSZip:"arm32-fs.zip",editorStyle:"text/x-csrc",wasmModule:"arm-tcc",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},armtcclink:{id:"armtcclink",name:"TCC (ARM) link",kind:"linker",arch:"arm32",extensions:[],wasmModule:"arm-tcc"},smlrc:{id:"smlrc",name:"SmallerC",kind:"compiler",arch:"x86",extensions:[".c"],helpURL:"https://github.com/alexfru/SmallerC/blob/master/v0100/doc/smlrc.md",editorStyle:"text/x-csrc",wasmModule:"smlrc",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},yasm:{id:"yasm",name:"YASM",kind:"assembler",arch:"x86",extensions:[".asm"],editorStyle:"gas",helpURL:"https://www.tortall.net/projects/yasm/manual/html/manual.html",wasmModule:"yasm",version:"1.3.0",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},oscar64:{id:"oscar64",name:"Oscar64",kind:"compiler",arch:"6502",extensions:[".c",".cpp",".cc",".o64"],includeDirs:["/include"],wasiFSZip:"oscar64-fs.zip",editorStyle:"text/x-csrc",helpURL:"https://github.com/drmortalwombat/oscar64/blob/v1.32.266/oscar64.md",defineFlag:"-d",defineInline:!0,wasmModule:"oscar64",version:"1.32.266",includePatterns:LC,linkPatterns:lt,compileLinkedSources:!0,platforms:{c64:{},atari8:{buildArgs:{compiler:["-tm=atari"]}},nes:{buildArgs:{compiler:["-tm=nes"]}}}},bataribasic:{id:"bataribasic",name:"batari Basic",kind:"compiler",arch:"6502",extensions:[".bb",".bas"],includeDirs:["/includes"],editorStyle:"bataribasic",helpURL:"help/bataribasic/manual.html",wasiFSZip:"bb-fs.zip",platforms:{default:{}},includePatterns:nt,linkPatterns:lt},fastbasic:{id:"fastbasic",name:"FastBasic",kind:"compiler",arch:"6502",extensions:[".bas",".fb",".fbi"],editorStyle:"fastbasic",helpURL:"https://github.com/dmsc/fastbasic/blob/v4.4/manual.md",wasmModule:"fastbasic-int",version:"4.4",platforms:{default:{wasiFSZip:"cc65-fs-atari8.zip"}},includePatterns:nt,linkPatterns:lt},cc2600:{id:"cc2600",name:"CC2600",kind:"compiler",arch:"6502",extensions:[".cc2600"],editorStyle:"text/x-csrc",helpURL:"https://github.com/steux/cc2600",wasmModule:"cc2600",version:"0.4.5",wasiFSZip:"cc2600-fs.zip",includeDirs:["/headers"],includePatterns:nt,linkPatterns:lt},cc7800:{id:"cc7800",name:"CC7800",kind:"compiler",arch:"6502",extensions:[".cc7800",".c78"],editorStyle:"text/x-csrc",helpURL:"https://github.com/steux/cc7800",wasmModule:"cc7800",version:"0.2.28",wasiFSZip:"cc7800-fs.zip",includeDirs:["/headers"],includePatterns:nt,linkPatterns:lt},basic:{id:"basic",name:"BASIC",kind:"interpreter",extensions:[".bas"],editorStyle:"basic"},wiz:{id:"wiz",name:"wiz",kind:"compiler",extensions:[".wiz"],includeDirs:["/common/$platform"],editorStyle:"text/x-wiz",helpURL:"https://github.com/wiz-lang/wiz/blob/master/readme.md#wiz",wasmModule:"wiz",version:"0.1.2",platforms:{default:{preloadFS:"wiz"}},includePatterns:IC},ecs:{id:"ecs",name:"ECS",kind:"assembler",arch:"6502",extensions:[".ecs"],editorStyle:"ecs",platforms:{vcs:{wasiFSZip:"cc65-fs-atari2600.zip"},nes:{wasiFSZip:"cc65-fs-nes.zip"},c64:{wasiFSZip:"cc65-fs-c64.zip"}},includePatterns:[...nt,...XC]},inform6:{id:"inform6",name:"Inform 6",kind:"compiler",arch:"zmachine",extensions:[".inf"],editorStyle:"inform6",wasmModule:"inform",version:"6.34",platforms:{default:{preloadFS:"inform"}}},dialog:{id:"dialog",name:"Dialog",kind:"compiler",arch:"zmachine",extensions:[".dg"],editorStyle:"dialog",helpURL:"https://linusakesson.net/dialog/docs/",wasmModule:"dialogc",version:"1c/03-dev",wasiFSZip:"dialog-fs.zip",includeDirs:["/"],includePatterns:zC},verilator:{id:"verilator",name:"Verilator",kind:"hdl",arch:"verilog",extensions:[".v"],editorStyle:"verilog",helpURL:"https://verilator.org/guide/4.205/",wasmModule:"verilator_bin",version:"4.205",includePatterns:Na,linkPatterns:[]},yosys:{id:"yosys",name:"Yosys",kind:"hdl",arch:"verilog",extensions:[],wasmModule:"yosys",includePatterns:Na,linkPatterns:[]},silice:{id:"silice",name:"Silice",kind:"hdl",arch:"verilog",extensions:[".ice"],editorStyle:"verilog",helpURL:"https://github.com/sylefeb/Silice",wasmModule:"silice",version:"0.1",platforms:{default:{preloadFS:"Silice"}},includePatterns:Na,linkPatterns:[]},"llvm-mos":{id:"llvm-mos",name:"LLVM-MOS",kind:"compiler",arch:"6502",extensions:[".c",".cpp",".s",".S",".C"],editorStyle:"text/x-csrc",helpURL:"https://llvm-mos.org/wiki/Welcome",remote:!0,includePatterns:nt,linkPatterns:lt,server:{version:"latest",platforms:["atari8","c64","nes","pce","vcs"],binpath:"llvm-mos/bin",command:"mos-clang",args:["-Os","-g","-D","__8BITWORKSHOP__","-o","$OUTFILE","$INFILES"]}},remote:{id:"remote",name:"Remote build",kind:"remote",extensions:[],remote:!0}};function qt(n){return Qo[n.replace(/^remote:/,"")]}function Ay(n,e){let t=qt(n);if(!t||!e)return;let r=WC[t.id];if(!r)return;let i=r[e];if(!i){let s=Mr(e);s&&s!==e&&(i=r[s])}return i}function Cy(n){let e=[];for(let t in Qo){let r=Qo[t];for(let i of r.extensions)if(i&&n.endsWith(i)){e.push({meta:r,len:i.length});break}}return e.sort((t,r)=>r.len-t.len).map(t=>t.meta)}function NC(n,e){let t=n&&qt(n);if(!(!t||!t.platforms)){if(e){let r=t.platforms[e];if(r)return r;let i=Mr(e);if(i&&i!==e&&t.platforms[i])return t.platforms[i]}return t.platforms.default}}function BC(n,e){let t=qt(n);if(t&&t.platforms){if(e){let i=t.platforms[e];if(i&&i.preloadFS)return i.preloadFS;let s=Mr(e);if(s&&s!==e){let o=t.platforms[s];if(o&&o.preloadFS)return o.preloadFS}}let r=t.platforms.default;if(r&&r.preloadFS)return r.preloadFS}}function Gf(n){let e=qt(n);return e&&e.skeleton?e.skeleton:n.replace(/^remote:/,"")}function _y(n){return!n||!n.version?"\u2014":n.versionAlt?n.version+" (default) / "+n.versionAlt:n.version}function Lc(n,e){let t=n&&qt(n);return t&&t.includePatterns?t.includePatterns:e&&e.startsWith("verilog")?Na:nt}function Dc(n,e){let t=n&&qt(n);return t&&t.linkPatterns?t.linkPatterns:e&&e.startsWith("verilog")?[]:lt}function Ey(n){let e=n&&qt(n);return!!(e&&e.compileLinkedSources)}function Zc(n,e){e=e&&Mr(e);let t=n&&qt(n),r=t&&t.includeDirs||[];return r=r.map(i=>i.replace("$platform",e)),r}function Ic(n,e){var t=BC(n,e);if(t)return t;let r=NC(n,e);if(r&&r.wasiFSZip)return"wasi:"+r.wasiFSZip;let i=n&&qt(n);return i&&i.wasiFSZip?"wasi:"+i.wasiFSZip:void 0}function Ry(n,e){let t=[],r=n.split(`
`);for(let i of e||[]){let s=i instanceof RegExp?{re:i}:i;for(let o of r){let a;for(s.re.lastIndex=0;a=s.re.exec(o);){let l=a[s.group!=null?s.group:a.length-1];l&&t.push(s.suffix?l+s.suffix:l)}}}return t}var Lr={vcs:{arch:"6502",code_start:4096,code_size:61440,data_start:128,data_size:128,wiz_rom_ext:".a26",wiz_inc_dir:"2600",cfgfile:"atari2600.cfg",libargs:["crt0.o","atari2600.lib"],extra_link_files:["crt0.o","atari2600.cfg"],asm_cfgfile:"atari2600-asm.cfg",asm_libargs:[],asm_extra_link_files:["atari2600-asm.cfg"],extra_compile_files:["vcs.h","macro.h"],define:["__ATARI2600__"]},mw8080bw:{arch:"z80",code_start:0,rom_size:8192,data_start:8192,data_size:1024,stack_end:9216},vicdual:{arch:"z80",code_start:0,rom_size:16416,data_start:58368,data_size:1024,stack_end:59392},galaxian:{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:18432},"galaxian-scramble":{arch:"z80",code_start:0,rom_size:20512,data_start:16384,data_size:1024,stack_end:18432},pacman:{arch:"z80",code_start:0,codeseg_start:202,rom_size:32768,data_start:19456,data_size:652,stack_end:20416},williams:{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152,set_stack_end:49152,extra_link_files:["williams.scr","libcmoc-crt-vec.a","libcmoc-std-vec.a"],extra_link_args:["-swilliams.scr","-lcmoc-crt-vec","-lcmoc-std-vec"],extra_compile_files:["assert.h","cmoc.h","stdarg.h","stdlib.h"]},"williams-defender":{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152},"williams-z80":{arch:"z80",code_start:0,rom_size:38912,data_start:38912,data_size:10240,stack_end:49152},"vector-z80color":{arch:"z80",code_start:0,rom_size:32768,data_start:57344,data_size:8192,stack_end:0},"vector-ataricolor":{arch:"6502",define:["__VECTOR__"],cfgfile:"vector-color.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","vector-color.cfg"]},"sound_williams-z80":{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:32768},base_z80:{arch:"z80",code_start:0,rom_size:32768,data_start:32768,data_size:32768,stack_end:0},coleco:{arch:"z80",rom_start:32768,code_start:33024,rom_size:32768,data_start:28672,data_size:1024,stack_end:32768,extra_preproc_args:["-I","/share/include/coleco","-D","CV_CV"],extra_link_args:["-k","/share/lib/coleco","-l","libcv","-l","libcvu","crt0.rel"]},msx:{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_link_args:["crt0-msx.rel"],extra_link_files:["crt0-msx.rel","crt0-msx.lst"],wiz_sys_type:"z80",wiz_inc_dir:"msx"},"msx-libcv":{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_preproc_args:["-I",".","-D","CV_MSX"],extra_link_args:["-k",".","-l","libcv-msx","-l","libcvu-msx","crt0-msx.rel"],extra_link_files:["libcv-msx.lib","libcvu-msx.lib","crt0-msx.rel","crt0-msx.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},"sms-sg1000-libcv":{arch:"z80",rom_start:0,code_start:256,rom_size:49152,data_start:49152,data_size:1024,stack_end:57344,extra_preproc_args:["-I",".","-D","CV_SMS"],extra_link_args:["-k",".","-l","libcv-sms","-l","libcvu-sms","crt0-sms.rel"],extra_link_files:["libcv-sms.lib","libcvu-sms.lib","crt0-sms.rel","crt0-sms.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},nes:{arch:"6502",define:["__NES__"],cfgfile:"neslib2.cfg",libargs:["crt0.o","nes.lib","neslib2.lib","-D","NES_MAPPER=0","-D","NES_PRG_BANKS=2","-D","NES_CHR_BANKS=1","-D","NES_MIRRORING=0"],extra_link_files:["crt0.o","neslib2.lib","neslib2.cfg","nesbanked.cfg"],extra_compile_files:["neslib.h"],symbolConfigs:{NES_MAPPER:{4:"nesbanked.cfg"}},ignore_segments:["HEADER","CHARS"],wiz_rom_ext:".nes"},apple2:{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["--lib-path","/share/target/apple2/drv","apple2.lib"],__CODE_RUN__:16384,code_start:2051,rom_size:35837,data_start:37888,zp_start:96,load_header:"dos33",acmeargs:["-f","apple"]},"apple2-e":{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["apple2.lib"],acmeargs:["-f","apple"]},"atari8-800xl.disk":{arch:"6502",define:["__ATARI__"],cfgfile:"atari.cfg",libargs:["atari.lib"],fastbasic_cfgfile:"fastbasic-cart.cfg",ignore_segments:["EXEHDR","SYSCHKHDR","SYSCHKTRL","MAINHDR","AUTOSTRT"]},"atari8-800xl":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-800":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-5200":{arch:"6502",define:["__ATARI5200__"],cfgfile:"atari5200.cfg",libargs:["atari5200.lib","-D","__CARTFLAGS__=255"],fastbasic_cfgfile:"fastbasic-cart.cfg"},verilog:{arch:"verilog",extra_compile_files:["8bitworkshop.v"]},astrocade:{arch:"z80",code_start:8192,rom_size:8192,data_start:19984,data_size:496,stack_end:20480},"astrocade-arcade":{arch:"z80",code_start:0,rom_size:16384,data_start:32224,data_size:544,stack_end:32768},"astrocade-bios":{arch:"z80",code_start:0,rom_size:8192,data_start:20430,data_size:50,stack_end:20430},atari7800:{arch:"6502",define:["__ATARI7800__"],cfgfile:"atari7800.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","atari7800.cfg"]},c64:{arch:"6502",define:["__CBM__","__C64__"],cfgfile:"c64.cfg",libargs:["openroms-compat.o","c64.lib"],extra_link_files:["openroms-compat.o"],code_start:2061,rom_size:38899,data_start:49152,zp_start:2,load_header:"prg",acmeargs:["-f","cbm"]},vic20:{arch:"6502",define:["__CBM__","__VIC20__"],cfgfile:"vic20.cfg",libargs:["vic20.lib"],acmeargs:["-f","cbm"]},kim1:{arch:"6502"},vectrex:{arch:"6809",code_start:0,rom_size:32768,data_start:51328,data_size:896,stack_end:52224,extra_compile_files:["assert.h","cmoc.h","stdarg.h","vectrex.h","stdlib.h","bios.h"],extra_link_files:["vectrex.scr","libcmoc-crt-vec.a","libcmoc-std-vec.a"],extra_compile_args:["--vectrex"],extra_link_args:["-svectrex.scr","-lcmoc-crt-vec","-lcmoc-std-vec"]},x86:{arch:"x86"},zx:{arch:"z80",code_start:23755,rom_size:41613,data_start:61440,data_size:3584,stack_end:65368,extra_link_args:["crt0-zx.rel"],extra_link_files:["crt0-zx.rel","crt0-zx.lst"]},"devel-6502":{arch:"6502",cfgfile:"devel-6502.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","devel-6502.cfg"],code_start:32768,rom_size:32768,data_start:512},"cpc.rslib":{arch:"z80",code_start:16384,rom_size:28928,data_start:45312,data_size:-3840,stack_end:49152,extra_compile_files:["cpcrslib.h"],extra_link_args:["crt0-cpc.rel","cpcrslib.lib"],extra_link_files:["crt0-cpc.rel","crt0-cpc.lst","cpcrslib.lib","cpcrslib.lst"]},cpc:{arch:"z80",code_start:16384,rom_size:28928,data_start:45312,data_size:-3840,stack_end:49152,extra_compile_files:["cpctelera.h"],extra_link_args:["crt0-cpc.rel","cpctelera.lib"],extra_link_files:["crt0-cpc.rel","crt0-cpc.lst","cpctelera.lib","cpctelera.lst"]},pce:{arch:"huc6280",define:["__PCE__"],cfgfile:"pce.cfg",libargs:["pce.lib","-D","__CARTSIZE__=0x8000"]},exidy:{define:["__EXIDY__"],cfgfile:"exidy.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","exidy.cfg"]},arm32:{arch:"arm32",define:["__ARM__","DISABLE_UNIMPLEMENTED_LIBC_APIS","PRINTF_ALIAS_STANDARD_FUNCTION_NAMES_SOFT"],extra_compile_args:["-I./arch/arm/include","-I./openlibm/include","-I./openlibm/src","-I./printf/src"],extra_link_files:["crt0.c","libc.a"],extra_link_args:["crt0.c","-lc"]},gb:{arch:"gbz80",code_start:0,codeseg_start:512,rom_size:32768,rom_banking:{size:16384,window:16384},data_start:49312,data_size:8032,stack_end:57344,extra_link_files:["gbz80.lib","gb.lib","sfr.rel","sfr.lst","crt0.rel","crt0.lst"],startup_objs:["sfr.rel","crt0.rel"],asm_startup_objs:[],extra_compile_files:["gb/bgb_emu.h","gb/cgb.h","gb/crash_handler.h","gb/drawing.h","gb/emu_debug.h","gb/gb.h","gb/gbdecompress.h","gb/hardware.h","gb/isr.h","gb/metasprites.h","gb/sgb.h","gb/types.h"],extra_link_args:["-l","gb","-g","_shadow_OAM=0xC000","-g",".STACK=0xE000","-g",".refresh_OAM=0xFF80","-g","GB_MAPPER=0x0","-g","GB_ROM_SIZE=0x0","-g","GB_RAM_SIZE=0x0","-g","GB_CGB_FLAGS=0x0"],wiz_sys_type:"gb",wiz_inc_dir:"gb"},mcr:{arch:"z80",code_start:0,rom_size:106496,data_start:57344,data_size:2048,stack_end:59392}};Lr["sms-sms-libcv"]=zi(Ue({},Lr["sms-sg1000-libcv"]),{extra_preproc_args:["-I",".","-D","CV_SMS","-D","CV_MODE4"]});Lr["sms-gg-libcv"]=Lr["sms-sms-libcv"];Lr["gb.color"]=zi(Ue({},Lr.gb),{extra_link_args:Lr.gb.extra_link_args.map(n=>n==="GB_CGB_FLAGS=0x0"?"GB_CGB_FLAGS=0x80":n)});function VC(n){return n.severity==="warning"}function My(n){return n.some(e=>!VC(e))}var Rs=class{constructor(e,t){e=e||[],this.lines=e,this.text=t,this.offset2loc=new Map,this.line2offset=new Map;for(var r of e)r.offset>=0&&(this.offset2loc.has(r.offset)||this.offset2loc.set(r.offset,r),this.line2offset.has(r.line)||this.line2offset.set(r.line,r.offset));this.sortedOffsets=Array.from(this.offset2loc.keys()).sort((i,s)=>i-s)}findLineForOffset(e,t,r){let i=this.sortedOffsets;for(var s=0,o=i.length-1,a=-1;s<=o;){var l=s+o>>1;i[l]<=e?(a=l,s=l+1):o=l-1}if(a<0)return null;var c=i[a];if(r!=null&&c<r){var d=this.firstOffsetAtOrAfter(r,i);return d!=null&&d-e<=t?this.offset2loc.get(d):null}return e-c>t?null:this.offset2loc.get(c)}firstOffsetAtOrAfter(e,t){for(var r=0,i=t.length-1,s=-1;r<=i;){var o=r+i>>1;t[o]>=e?(s=o,i=o-1):r=o+1}return s<0?null:t[s]}lineCount(){return this.lines.length}};function Xc(n){return"errors"in n}function Ly(n){return"output"in n}function Hf(n,e){if(n==null)return"";try{var t=typeof n=="string"?n:typeof n=="object"?JSON.stringify(n):n+"";return t.substring(0,e)}catch(r){return"<unserializable: "+r+">"}}var FC=/bot\b|bot\/|crawl|spider|slurp|headless|lighthouse|facebookexternalhit|preview|inspectiontool|pingdom|python-requests|\bcurl\/|\bwget\//i;function Dy(n){return!!n&&FC.test(n)}function YC(n){return{msg:String(n&&n.message||n),stack:n&&n.stack}}var zc=class{constructor(e,t,r={}){this.source=e;this.send=t;this.common=r;this.sent=0;this.seen=new Set}report(e,t,r,i){i=i||this.source;var s=[i,r&&r.tool,e].join("|");if(this.sent>=10||this.seen.has(s))return!1;this.seen.add(s),this.sent++;var o={source:i,msg:Hf(e,500),stack:Hf(t,2e3),clientTime:new Date().toISOString()},a=Ue(Ue({},this.common),r);for(var l in a)!(l in o)&&a[l]!=null&&(o[l]=Hf(a[l],2e3));return this.send(o),!0}reportError(e,t,r){var i=YC(e);return this.report(i.msg,i.stack,t,r)}};var Zy="/error.php",jC=typeof navigator!="undefined"&&(navigator.webdriver||Dy(navigator.userAgent));function UC(n){if(!jC){n.url=window.location.href.substring(0,500),n.userAgent=navigator.userAgent.substring(0,500),n.language=navigator.language;var e=JSON.stringify(n);navigator.sendBeacon?navigator.sendBeacon(Zy,new Blob([e],{type:"application/json"})):fetch(Zy,{method:"POST",headers:{"Content-Type":"application/json"},body:e,keepalive:!0}).catch(t=>console.log("error report failed",t))}}var Iy=new zc("ide",UC);function Xy(n,e,t,r){try{Iy.report(n,e&&e.stack,t,r)}catch(i){console.log("error report failed",i)}}function zy(n,e,t){try{Iy.report(e.msg,e.stack,t,n)}catch(r){console.log("error report failed",r)}}function Je(n){n?(Dr(0),$("#pleaseWaitModal").modal("show")):(Dr(1),$("#pleaseWaitModal").modal("hide"))}function Dr(n){$("#pleaseWaitProgressBar").css("width",n*100+"%").show()}function Re(n){Je(!1),bootbox.alert({title:'<span class="glyphicon glyphicon-alert" aria-hidden="true"></span> Alert',message:Vi.sanitize(n)})}function an(n){Je(!1),bootbox.alert(Vi.sanitize(n))}function Wy(n){throw Re(n),new Error(n)}var Jf=[],Fy=[];(()=>{let n="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(e=>e?parseInt(e,36):1);for(let e=0,t=0;e<n.length;e++)(e%2?Fy:Jf).push(t=t+n[e])})();function qC(n){if(n<768)return!1;for(let e=0,t=Jf.length;;){let r=e+t>>1;if(n<Jf[r])t=r;else if(n>=Fy[r])e=r+1;else return!0;if(e==t)return!1}}function Ny(n){return n>=127462&&n<=127487}var By=8205;function Yy(n,e,t=!0,r=!0){return(t?jy:GC)(n,e,r)}function jy(n,e,t){if(e==n.length)return e;e&&Uy(n.charCodeAt(e))&&qy(n.charCodeAt(e-1))&&e--;let r=Kf(n,e);for(e+=Vy(r);e<n.length;){let i=Kf(n,e);if(r==By||i==By||t&&qC(i))e+=Vy(i),r=i;else if(Ny(i)){let s=0,o=e-2;for(;o>=0&&Ny(Kf(n,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}function GC(n,e,t){for(;e>1;){let r=jy(n,e-2,t);if(r<e)return r;e--}return 0}function Kf(n,e){let t=n.charCodeAt(e);if(!qy(t)||e+1==n.length)return t;let r=n.charCodeAt(e+1);return Uy(r)?(t-55296<<10)+(r-56320)+65536:t}function Uy(n){return n>=56320&&n<57344}function qy(n){return n>=55296&&n<56320}function Vy(n){return n<65536?1:2}var De=class n{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,r){[e,t]=_o(this,e,t);let i=[];return this.decompose(0,e,i,2),r.length&&r.decompose(0,r.length,i,3),this.decompose(t,this.length,i,1),To.from(i,this.length-(t-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=_o(this,e,t);let r=[];return this.decompose(e,t,r,0),To.from(r,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),i=new Zs(this),s=new Zs(e);for(let o=t,a=t;;){if(i.next(o),s.next(o),o=0,i.lineBreak!=s.lineBreak||i.done!=s.done||i.value!=s.value)return!1;if(a+=i.value.length,i.done||a>=r)return!0}}iter(e=1){return new Zs(this,e)}iterRange(e,t=this.length){return new Fc(this,e,t)}iterLines(e,t){let r;if(e==null)r=this.iter();else{t==null&&(t=this.lines+1);let i=this.line(e).from;r=this.iterRange(i,Math.max(i,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Yc(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?n.empty:e.length<=32?new Fn(e):To.from(Fn.split(e,[]))}},Fn=class n extends De{constructor(e,t=HC(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,r,i){for(let s=0;;s++){let o=this.text[s],a=i+o.length;if((t?r:a)>=e)return new tp(i,a,r,o);i=a+1,r++}}decompose(e,t,r,i){let s=e<=0&&t>=this.length?this:new n(Gy(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(i&1){let o=r.pop(),a=Vc(s.text,o.text.slice(),0,s.length);if(a.length<=32)r.push(new n(a,o.length+s.length));else{let l=a.length>>1;r.push(new n(a.slice(0,l)),new n(a.slice(l)))}}else r.push(s)}replace(e,t,r){if(!(r instanceof n))return super.replace(e,t,r);[e,t]=_o(this,e,t);let i=Vc(this.text,Vc(r.text,Gy(this.text,0,e)),t),s=this.length+r.length-(t-e);return i.length<=32?new n(i,s):To.from(n.split(i,[]),s)}sliceString(e,t=this.length,r=`
`){[e,t]=_o(this,e,t);let i="";for(let s=0,o=0;s<=t&&o<this.text.length;o++){let a=this.text[o],l=s+a.length;s>e&&o&&(i+=r),e<l&&t>s&&(i+=a.slice(Math.max(0,e-s),t-s)),s=l+1}return i}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let r=[],i=-1;for(let s of e)r.push(s),i+=s.length+1,r.length==32&&(t.push(new n(r,i)),r=[],i=-1);return i>-1&&t.push(new n(r,i)),t}},To=class n extends De{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,t,r,i){for(let s=0;;s++){let o=this.children[s],a=i+o.length,l=r+o.lines-1;if((t?l:a)>=e)return o.lineInner(e,t,r,i);i=a+1,r=l+1}}decompose(e,t,r,i){for(let s=0,o=0;o<=t&&s<this.children.length;s++){let a=this.children[s],l=o+a.length;if(e<=l&&t>=o){let c=i&((o<=e?1:0)|(l>=t?2:0));o>=e&&l<=t&&!c?r.push(a):a.decompose(e-o,t-o,r,c)}o=l+1}}replace(e,t,r){if([e,t]=_o(this,e,t),r.lines<this.lines)for(let i=0,s=0;i<this.children.length;i++){let o=this.children[i],a=s+o.length;if(e>=s&&t<=a){let l=o.replace(e-s,t-s,r),c=this.lines-o.lines+l.lines;if(l.lines<c>>4&&l.lines>c>>6){let d=this.children.slice();return d[i]=l,new n(d,this.length-(t-e)+r.length)}return super.replace(s,a,l)}s=a+1}return super.replace(e,t,r)}sliceString(e,t=this.length,r=`
`){[e,t]=_o(this,e,t);let i="";for(let s=0,o=0;s<this.children.length&&o<=t;s++){let a=this.children[s],l=o+a.length;o>e&&s&&(i+=r),e<l&&t>o&&(i+=a.sliceString(e-o,t-o,r)),o=l+1}return i}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof n))return 0;let r=0,[i,s,o,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;i+=t,s+=t){if(i==o||s==a)return r;let l=this.children[i],c=e.children[s];if(l!=c)return r+l.scanIdentical(c,t);r+=l.length+1}}static from(e,t=e.reduce((r,i)=>r+i.length+1,-1)){let r=0;for(let f of e)r+=f.lines;if(r<32){let f=[];for(let m of e)m.flatten(f);return new Fn(f,t)}let i=Math.max(32,r>>5),s=i<<1,o=i>>1,a=[],l=0,c=-1,d=[];function h(f){let m;if(f.lines>s&&f instanceof n)for(let O of f.children)h(O);else f.lines>o&&(l>o||!l)?(u(),a.push(f)):f instanceof Fn&&l&&(m=d[d.length-1])instanceof Fn&&f.lines+m.lines<=32?(l+=f.lines,c+=f.length+1,d[d.length-1]=new Fn(m.text.concat(f.text),m.length+1+f.length)):(l+f.lines>i&&u(),l+=f.lines,c+=f.length+1,d.push(f))}function u(){l!=0&&(a.push(d.length==1?d[0]:n.from(d,c)),c=-1,l=d.length=0)}for(let f of e)h(f);return u(),a.length==1?a[0]:new n(a,t)}};De.empty=new Fn([""],0);function HC(n){let e=-1;for(let t of n)e+=t.length+1;return e}function Vc(n,e,t=0,r=1e9){for(let i=0,s=0,o=!0;s<n.length&&i<=r;s++){let a=n[s],l=i+a.length;l>=t&&(l>r&&(a=a.slice(0,r-i)),i<t&&(a=a.slice(t-i)),o?(e[e.length-1]+=a,o=!1):e.push(a)),i=l+1}return e}function Gy(n,e,t){return Vc(n,[""],e,t)}var Zs=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof Fn?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,i=this.nodes[r],s=this.offsets[r],o=s>>1,a=i instanceof Fn?i.text.length:i.children.length;if(o==(t>0?a:0)){if(r==0)return this.done=!0,this.value="",this;t>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[r]+=t,e==0)return this.lineBreak=!0,this.value=`
`,this;e--}else if(i instanceof Fn){let l=i.text[o+(t<0?-1:0)];if(this.offsets[r]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=i.children[o+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[r]+=t):(t<0&&this.offsets[r]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof Fn?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Fc=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new Zs(e,t>r?-1:1),this.pos=t>r?e.length:0,this.from=Math.min(t,r),this.to=Math.max(t,r)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let r=t<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:i}=this.cursor.next(e);return this.pos+=(i.length+e)*t,this.value=i.length<=r?i:t<0?i.slice(i.length-r):i.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Yc=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:r,value:i}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=i,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&(De.prototype[Symbol.iterator]=function(){return this.iter()},Zs.prototype[Symbol.iterator]=Fc.prototype[Symbol.iterator]=Yc.prototype[Symbol.iterator]=function(){return this});var tp=class{constructor(e,t,r,i){this.from=e,this.to=t,this.number=r,this.text=i}get length(){return this.to-this.from}};function _o(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}function Pt(n,e,t=!0,r=!0){return Yy(n,e,t,r)}function KC(n){return n>=56320&&n<57344}function JC(n){return n>=55296&&n<56320}function Ir(n,e){let t=n.charCodeAt(e);if(!JC(t)||e+1==n.length)return t;let r=n.charCodeAt(e+1);return KC(r)?(t-55296<<10)+(r-56320)+65536:t}function Hc(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}function Yi(n){return n<65536?1:2}var np=/\r\n?|\n/,Xt=(function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n})(Xt||(Xt={})),vi=class n{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let r=this.sections[t+1];e+=r<0?this.sections[t]:r}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,r=0,i=0;t<this.sections.length;){let s=this.sections[t++],o=this.sections[t++];o<0?(e(r,i,s),i+=s):i+=o,r+=s}}iterChangedRanges(e,t=!1){rp(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let r=this.sections[t++],i=this.sections[t++];i<0?e.push(r,i):e.push(i,r)}return new n(e)}composeDesc(e){return this.empty?e:e.empty?this:tS(this,e)}mapDesc(e,t=!1){return e.empty?this:ip(this,e,t)}mapPos(e,t=-1,r=Xt.Simple){let i=0,s=0;for(let o=0;o<this.sections.length;){let a=this.sections[o++],l=this.sections[o++],c=i+a;if(l<0){if(c>e)return s+(e-i);s+=a}else{if(r!=Xt.Simple&&c>=e&&(r==Xt.TrackDel&&i<e&&c>e||r==Xt.TrackBefore&&i<e||r==Xt.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!a)return e==i||t<0?s:s+l;s+=l}i=c}if(e>i)throw new RangeError(`Position ${e} is out of range for changeset of length ${i}`);return s}touchesRange(e,t=e){for(let r=0,i=0;r<this.sections.length&&i<=t;){let s=this.sections[r++],o=this.sections[r++],a=i+s;if(o>=0&&i<=t&&a>=e)return i<e&&a>t?"cover":!0;i=a}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let r=this.sections[t++],i=this.sections[t++];e+=(e?" ":"")+r+(i>=0?":"+i:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(e)}static create(e){return new n(e)}},On=class n extends vi{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return rp(this,(t,r,i,s,o)=>e=e.replace(i,i+(r-t),o),!1),e}mapDesc(e,t=!1){return ip(this,e,t,!0)}invert(e){let t=this.sections.slice(),r=[];for(let i=0,s=0;i<t.length;i+=2){let o=t[i],a=t[i+1];if(a>=0){t[i]=a,t[i+1]=o;let l=i>>1;for(;r.length<l;)r.push(De.empty);r.push(o?e.slice(s,s+o):De.empty)}s+=o}return new n(t,r)}compose(e){return this.empty?e:e.empty?this:tS(this,e,!0)}map(e,t=!1){return e.empty?this:ip(this,e,t,!0)}iterChanges(e,t=!1){rp(this,e,t)}get desc(){return vi.create(this.sections)}filter(e){let t=[],r=[],i=[],s=new Is(this);e:for(let o=0,a=0;;){let l=o==e.length?1e9:e[o++];for(;a<l||a==l&&s.len==0;){if(s.done)break e;let d=Math.min(s.len,l-a);ln(i,d,-1);let h=s.ins==-1?-1:s.off==0?s.ins:0;ln(t,d,h),h>0&&Fi(r,t,s.text),s.forward(d),a+=d}let c=e[o++];for(;a<c;){if(s.done)break e;let d=Math.min(s.len,c-a);ln(t,d,-1),ln(i,d,s.ins==-1?-1:s.off==0?s.ins:0),s.forward(d),a+=d}}return{changes:new n(t,r),filtered:vi.create(i)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let r=this.sections[t],i=this.sections[t+1];i<0?e.push(r):i==0?e.push([r]):e.push([r].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,r){let i=[],s=[],o=0,a=null;function l(d=!1){if(!d&&!i.length)return;o<t&&ln(i,t-o,-1);let h=new n(i,s);a=a?a.compose(h.map(a)):h,i=[],s=[],o=0}function c(d){if(Array.isArray(d))for(let h of d)c(h);else if(d instanceof n){if(d.length!=t)throw new RangeError(`Mismatched change set length (got ${d.length}, expected ${t})`);l(),a=a?a.compose(d.map(a)):d}else{let{from:h,to:u=h,insert:f}=d;if(h>u||h<0||u>t)throw new RangeError(`Invalid change range ${h} to ${u} (in doc of length ${t})`);let m=f?typeof f=="string"?De.of(f.split(r||np)):f:De.empty,O=m.length;if(h==u&&O==0)return;h<o&&l(),h>o&&ln(i,h-o,-1),ln(i,u-h,O),Fi(s,i,m),o=u}}return c(e),l(!a),a}static empty(e){return new n(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],r=[];for(let i=0;i<e.length;i++){let s=e[i];if(typeof s=="number")t.push(s,-1);else{if(!Array.isArray(s)||typeof s[0]!="number"||s.some((o,a)=>a&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{for(;r.length<i;)r.push(De.empty);r[i]=De.of(s.slice(1)),t.push(s[0],r[i].length)}}}return new n(t,r)}static createSet(e,t){return new n(e,t)}};function ln(n,e,t,r=!1){if(e==0&&t<=0)return;let i=n.length-2;i>=0&&t<=0&&t==n[i+1]?n[i]+=e:i>=0&&e==0&&n[i]==0?n[i+1]+=t:r?(n[i]+=e,n[i+1]+=t):n.push(e,t)}function Fi(n,e,t){if(t.length==0)return;let r=e.length-2>>1;if(r<n.length)n[n.length-1]=n[n.length-1].append(t);else{for(;n.length<r;)n.push(De.empty);n.push(t)}}function rp(n,e,t){let r=n.inserted;for(let i=0,s=0,o=0;o<n.sections.length;){let a=n.sections[o++],l=n.sections[o++];if(l<0)i+=a,s+=a;else{let c=i,d=s,h=De.empty;for(;c+=a,d+=l,l&&r&&(h=h.append(r[o-2>>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)a=n.sections[o++],l=n.sections[o++];e(i,c,s,d,h),i=c,s=d}}}function ip(n,e,t,r=!1){let i=[],s=r?[]:null,o=new Is(n),a=new Is(e);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 c=Math.min(o.len,a.len);ln(i,c,-1),o.forward(c),a.forward(c)}else if(a.ins>=0&&(o.ins<0||l==o.i||o.off==0&&(a.len<o.len||a.len==o.len&&!t))){let c=a.len;for(ln(i,a.ins,-1);c;){let d=Math.min(o.len,c);o.ins>=0&&l<o.i&&o.len<=d&&(ln(i,0,o.ins),s&&Fi(s,i,o.text),l=o.i),o.forward(d),c-=d}a.next()}else if(o.ins>=0){let c=0,d=o.len;for(;d;)if(a.ins==-1){let h=Math.min(d,a.len);c+=h,d-=h,a.forward(h)}else if(a.ins==0&&a.len<d)d-=a.len,a.next();else break;ln(i,c,l<o.i?o.ins:0),s&&l<o.i&&Fi(s,i,o.text),l=o.i,o.forward(o.len-d)}else{if(o.done&&a.done)return s?On.createSet(i,s):vi.create(i);throw new Error("Mismatched change set lengths")}}}function tS(n,e,t=!1){let r=[],i=t?[]:null,s=new Is(n),o=new Is(e);for(let a=!1;;){if(s.done&&o.done)return i?On.createSet(r,i):vi.create(r);if(s.ins==0)ln(r,s.len,0,a),s.next();else if(o.len==0&&!o.done)ln(r,0,o.ins,a),i&&Fi(i,r,o.text),o.next();else{if(s.done||o.done)throw new Error("Mismatched change set lengths");{let l=Math.min(s.len2,o.len),c=r.length;if(s.ins==-1){let d=o.ins==-1?-1:o.off?0:o.ins;ln(r,l,d,a),i&&d&&Fi(i,r,o.text)}else o.ins==-1?(ln(r,s.off?0:s.len,l,a),i&&Fi(i,r,s.textBit(l))):(ln(r,s.off?0:s.len,o.off?0:o.ins,a),i&&!o.off&&Fi(i,r,o.text));a=(s.ins>l||o.ins>=0&&o.len>l)&&(a||r.length>c),s.forward2(l),o.forward(l)}}}}var Is=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[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:e}=this.set,t=this.i-2>>1;return t>=e.length?De.empty:e[t]}textBit(e){let{inserted:t}=this.set,r=this.i-2>>1;return r>=t.length&&!e?De.empty:t[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},Ms=class n{constructor(e,t,r,i){this.from=e,this.to=t,this.flags=r,this.goalColumn=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 undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(e,t=-1){let r,i;return this.empty?r=i=e.mapPos(this.from,t):(r=e.mapPos(this.from,1),i=e.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new n(r,i,this.flags,this.goalColumn)}extend(e,t=e,r=0){if(e<=this.anchor&&t>=this.anchor)return z.range(e,t,void 0,void 0,r);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return z.range(this.anchor,i,void 0,void 0,r)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return z.range(e.anchor,e.head)}static create(e,t,r,i){return new n(e,t,r,i)}},z=class n{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:n.create(this.ranges.map(r=>r.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;r<this.ranges.length;r++)if(!this.ranges[r].eq(e.ranges[r],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new n([this.main],0)}addRange(e,t=!0){return n.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let r=this.ranges.slice();return r[t]=e,n.create(r,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(e.ranges.map(t=>Ms.fromJSON(t)),e.main)}static single(e,t=e){return new n([n.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,i=0;i<e.length;i++){let s=e[i];if(s.empty?s.from<=r:s.from<r)return n.normalized(e.slice(),t);r=s.to}return new n(e,t)}static cursor(e,t=0,r,i){return Ms.create(e,e,(t==0?0:t<0?8:16)|(r==null?7:Math.min(6,r)),i)}static range(e,t,r,i,s){let o=i==null?7:Math.min(6,i);return!s&&e!=t&&(s=t<e?1:-1),s&&(o|=s<0?8:16),t<e?Ms.create(t,e,o|32,r):Ms.create(e,t,o,r)}static undirectionalRange(e,t){return Ms.create(e,t,64,void 0)}static normalized(e,t=0){let r=e[t];e.sort((i,s)=>i.from-s.from),t=e.indexOf(r);for(let i=1;i<e.length;i++){let s=e[i],o=e[i-1];if(s.empty?s.from<=o.to:s.from<o.to){let a=o.from,l=Math.max(s.to,o.to);i<=t&&t--,e.splice(--i,2,s.anchor>s.head?n.range(l,a):n.range(a,l))}}return new n(e,t)}};function nS(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var pp=0,oe=class n{constructor(e,t,r,i,s){this.combine=e,this.compareInput=t,this.compare=r,this.isStatic=i,this.id=pp++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new n(e.combine||(t=>t),e.compareInput||((t,r)=>t===r),e.compare||(e.combine?(t,r)=>t===r:mp),!!e.static,e.enables)}of(e){return new Ao([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Ao(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Ao(e,this,2,t)}from(e,t){return t||(t=r=>r),this.compute([e],r=>t(r.field(e)))}};function mp(n,e){return n==e||n.length==e.length&&n.every((t,r)=>t===e[r])}var Ao=class{constructor(e,t,r,i){this.dependencies=e,this.facet=t,this.type=r,this.value=i,this.id=pp++}dynamicSlot(e){var t;let r=this.value,i=this.facet.compareInput,s=this.id,o=e[s]>>1,a=this.type==2,l=!1,c=!1,d=[];for(let h of this.dependencies)h=="doc"?l=!0:h=="selection"?c=!0:(((t=e[h.id])!==null&&t!==void 0?t:1)&1)==0&&d.push(e[h.id]);return{create(h){return h.values[o]=r(h),1},update(h,u){if(l&&u.docChanged||c&&(u.docChanged||u.selection)||sp(h,d)){let f=r(h);if(a?!Hy(f,h.values[o],i):!i(f,h.values[o]))return h.values[o]=f,1}return 0},reconfigure:(h,u)=>{let f,m=u.config.address[s];if(m!=null){let O=qc(u,m);if(this.dependencies.every(S=>S instanceof oe?u.facet(S)===h.facet(S):S instanceof Xe?u.field(S,!1)==h.field(S,!1):!0)||(a?Hy(f=r(h),O,i):i(f=r(h),O)))return h.values[o]=O,0}else f=r(h);return h.values[o]=f,1}}}get extension(){return this}};function Hy(n,e,t){if(n.length!=e.length)return!1;for(let r=0;r<n.length;r++)if(!t(n[r],e[r]))return!1;return!0}function sp(n,e){let t=!1;for(let r of e)Va(n,r)&1&&(t=!0);return t}function e_(n,e,t){let r=t.map(l=>n[l.id]),i=t.map(l=>l.type),s=r.filter(l=>!(l&1)),o=n[e.id]>>1;function a(l){let c=[];for(let d=0;d<r.length;d++){let h=qc(l,r[d]);if(i[d]==2)for(let u of h)c.push(u);else c.push(h)}return e.combine(c)}return{create(l){for(let c of r)Va(l,c);return l.values[o]=a(l),1},update(l,c){if(!sp(l,s))return 0;let d=a(l);return e.compare(d,l.values[o])?0:(l.values[o]=d,1)},reconfigure(l,c){let d=sp(l,r),h=c.config.facets[e.id],u=c.facet(e);if(h&&!d&&mp(t,h))return l.values[o]=u,0;let f=a(l);return e.compare(f,u)?(l.values[o]=u,0):(l.values[o]=f,1)}}}var Wc=oe.define({static:!0}),Xe=class n{constructor(e,t,r,i,s){this.id=e,this.createF=t,this.updateF=r,this.compareF=i,this.spec=s,this.provides=void 0}static define(e){let t=new n(pp++,e.create,e.update,e.compare||((r,i)=>r===i),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Wc).find(r=>r.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:r=>(r.values[t]=this.create(r),1),update:(r,i)=>{let s=r.values[t],o=this.updateF(s,i);return this.compareF(s,o)?0:(r.values[t]=o,1)},reconfigure:(r,i)=>{let s=r.facet(Wc),o=i.facet(Wc),a;return(a=s.find(l=>l.field==this))&&a!=o.find(l=>l.field==this)?(r.values[t]=a.create(r),1):i.config.address[this.id]!=null?(r.values[t]=i.field(this),0):(r.values[t]=this.create(r),1)}}}init(e){return[this,Wc.of({field:this,create:e})]}get extension(){return this}},Ls={lowest:4,low:3,default:2,high:1,highest:0};function Ba(n){return e=>new jc(e,n)}var pr={highest:Ba(Ls.highest),high:Ba(Ls.high),default:Ba(Ls.default),low:Ba(Ls.low),lowest:Ba(Ls.lowest)},jc=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Vt=class n{of(e){return new Fa(this,e)}reconfigure(e){return n.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},Fa=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},Uc=class n{constructor(e,t,r,i,s,o){for(this.base=e,this.compartments=t,this.dynamicSlots=r,this.address=i,this.staticValues=s,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<r.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(e,t,r){let i=[],s=Object.create(null),o=new Map;for(let u of t_(e,t,o))u instanceof Xe?i.push(u):(s[u.facet.id]||(s[u.facet.id]=[])).push(u);let a=Object.create(null),l=[],c=[];for(let u of i)a[u.id]=c.length<<1,c.push(f=>u.slot(f));let d=r==null?void 0:r.config.facets;for(let u in s){let f=s[u],m=f[0].facet,O=d&&d[u]||[];if(f.every(S=>S.type==0))if(a[m.id]=l.length<<1|1,mp(O,f))l.push(r.facet(m));else{let S=m.combine(f.map(x=>x.value));l.push(r&&m.compare(S,r.facet(m))?r.facet(m):S)}else{for(let S of f)S.type==0?(a[S.id]=l.length<<1|1,l.push(S.value)):(a[S.id]=c.length<<1,c.push(x=>S.dynamicSlot(x)));a[m.id]=c.length<<1,c.push(S=>e_(S,m,f))}}let h=c.map(u=>u(a));return new n(e,o,h,a,l,s)}};function t_(n,e,t){let r=[[],[],[],[],[]],i=new Map;function s(o,a){let l=i.get(o);if(l!=null){if(l<=a)return;let c=r[l].indexOf(o);c>-1&&r[l].splice(c,1),o instanceof Fa&&t.delete(o.compartment)}if(i.set(o,a),Array.isArray(o))for(let c of o)s(c,a);else if(o instanceof Fa){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let c=e.get(o.compartment)||o.inner;t.set(o.compartment,c),s(c,a)}else if(o instanceof jc)s(o.inner,o.prec);else if(o instanceof Xe)r[a].push(o),o.provides&&s(o.provides,a);else if(o instanceof Ao)r[a].push(o),o.facet.extensions&&s(o.facet.extensions,Ls.default);else{let c=o.extension;if(!c)throw new Error(`Unrecognized extension value in extension set (${o}).`);if(c==o)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(c,a)}}return s(n,Ls.default),r.reduce((o,a)=>o.concat(a))}function Va(n,e){if(e&1)return 2;let t=e>>1,r=n.status[t];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;n.status[t]=4;let i=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|i}function qc(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}var rS=oe.define(),op=oe.define({combine:n=>n.some(e=>e),static:!0}),iS=oe.define({combine:n=>n.length?n[0]:void 0,static:!0}),sS=oe.define(),oS=oe.define(),aS=oe.define(),lS=oe.define({combine:n=>n.length?n[0]:!1}),Tn=class{constructor(e,t){this.type=e,this.value=t}static define(){return new ap}},ap=class{of(e){return new Tn(this,e)}},lp=class{constructor(e){this.map=e}of(e){return new ye(this,e)}},ye=class n{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new n(this.type,t)}is(e){return this.type==e}static define(e={}){return new lp(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let r=[];for(let i of e){let s=i.map(t);s&&r.push(s)}return r}};ye.reconfigure=ye.define();ye.appendConfig=ye.define();var ut=class n{constructor(e,t,r,i,s,o){this.startState=e,this.changes=t,this.selection=r,this.effects=i,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,r&&nS(r,t.newLength),s.some(a=>a.type==n.time)||(this.annotations=s.concat(n.time.of(Date.now())))}static create(e,t,r,i,s,o){return new n(e,t,r,i,s,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(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(n.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};ut.time=Tn.define();ut.userEvent=Tn.define();ut.addToHistory=Tn.define();ut.remote=Tn.define();function n_(n,e){let t=[];for(let r=0,i=0;;){let s,o;if(r<n.length&&(i==e.length||e[i]>=n[r]))s=n[r++],o=n[r++];else if(i<e.length)s=e[i++],o=e[i++];else return t;!t.length||t[t.length-1]<s?t.push(s,o):t[t.length-1]<o&&(t[t.length-1]=o)}}function cS(n,e,t){var r;let i,s,o;return t?(i=e.changes,s=On.empty(e.changes.length),o=n.changes.compose(e.changes)):(i=e.changes.map(n.changes),s=n.changes.mapDesc(e.changes,!0),o=n.changes.compose(i)),{changes:o,selection:e.selection?e.selection.map(s):(r=n.selection)===null||r===void 0?void 0:r.map(i),effects:ye.mapEffects(n.effects,i).concat(ye.mapEffects(e.effects,s)),annotations:n.annotations.length?n.annotations.concat(e.annotations):e.annotations,scrollIntoView:n.scrollIntoView||e.scrollIntoView}}function cp(n,e,t){let r=e.selection,i=Co(e.annotations);return e.userEvent&&(i=i.concat(ut.userEvent.of(e.userEvent))),{changes:e.changes instanceof On?e.changes:On.of(e.changes||[],t,n.facet(iS)),selection:r&&(r instanceof z?r:z.single(r.anchor,r.head)),effects:Co(e.effects),annotations:i,scrollIntoView:!!e.scrollIntoView}}function dS(n,e,t){let r=cp(n,e.length?e[0]:{},n.doc.length);e.length&&e[0].filter===!1&&(t=!1);for(let s=1;s<e.length;s++){e[s].filter===!1&&(t=!1);let o=!!e[s].sequential;r=cS(r,cp(n,e[s],o?r.changes.newLength:n.doc.length),o)}let i=ut.create(n,r.changes,r.selection,r.effects,r.annotations,r.scrollIntoView);return i_(t?r_(i):i)}function r_(n){let e=n.startState,t=!0;for(let i of e.facet(sS)){let s=i(n);if(s===!1){t=!1;break}Array.isArray(s)&&(t=t===!0?s:n_(t,s))}if(t!==!0){let i,s;if(t===!1)s=n.changes.invertedDesc,i=On.empty(e.doc.length);else{let o=n.changes.filter(t);i=o.changes,s=o.filtered.mapDesc(o.changes).invertedDesc}n=ut.create(e,i,n.selection&&n.selection.map(s),ye.mapEffects(n.effects,s),n.annotations,n.scrollIntoView)}let r=e.facet(oS);for(let i=r.length-1;i>=0;i--){let s=r[i](n);s instanceof ut?n=s:Array.isArray(s)&&s.length==1&&s[0]instanceof ut?n=s[0]:n=dS(e,Co(s),!1)}return n}function i_(n){let e=n.startState,t=e.facet(aS),r=n;for(let i=t.length-1;i>=0;i--){let s=t[i](n);s&&Object.keys(s).length&&(r=cS(r,cp(e,s,n.changes.newLength),!0))}return r==n?n:ut.create(e,n.changes,n.selection,r.effects,r.annotations,r.scrollIntoView)}var s_=[];function Co(n){return n==null?s_:Array.isArray(n)?n:[n]}var et=(function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n})(et||(et={})),o_=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,dp;try{dp=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(n){}function a_(n){if(dp)return dp.test(n);for(let e=0;e<n.length;e++){let t=n[e];if(/\w/.test(t)||t>"\x80"&&(t.toUpperCase()!=t.toLowerCase()||o_.test(t)))return!0}return!1}function l_(n){return e=>{if(!/\S/.test(e))return et.Space;if(a_(e))return et.Word;for(let t=0;t<n.length;t++)if(e.indexOf(n[t])>-1)return et.Word;return et.Other}}var Me=class n{constructor(e,t,r,i,s,o){this.config=e,this.doc=t,this.selection=r,this.values=i,this.status=e.statusTemplate.slice(),this.computeSlot=s,o&&(o._state=this);for(let a=0;a<this.config.dynamicSlots.length;a++)Va(this,a<<1);this.computeSlot=null}field(e,t=!0){let r=this.config.address[e.id];if(r==null){if(t)throw new RangeError("Field is not present in this state");return}return Va(this,r),qc(this,r)}update(...e){return dS(this,e,!0)}applyTransaction(e){let t=this.config,{base:r,compartments:i}=t;for(let a of e.effects)a.is(Vt.reconfigure)?(t&&(i=new Map,t.compartments.forEach((l,c)=>i.set(c,l)),t=null),i.set(a.value.compartment,a.value.extension)):a.is(ye.reconfigure)?(t=null,r=a.value):a.is(ye.appendConfig)&&(t=null,r=Co(r).concat(a.value));let s;t?s=e.startState.values.slice():(t=Uc.resolve(r,i,this),s=new n(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,c)=>c.reconfigure(l,this),null).values);let o=e.startState.facet(op)?e.newSelection:e.newSelection.asSingle();new n(t,e.newDoc,o,s,(a,l)=>l.update(a,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:z.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,r=e(t.ranges[0]),i=this.changes(r.changes),s=[r.range],o=Co(r.effects);for(let a=1;a<t.ranges.length;a++){let l=e(t.ranges[a]),c=this.changes(l.changes),d=c.map(i);for(let u=0;u<a;u++)s[u]=s[u].map(d);let h=i.mapDesc(c,!0);s.push(l.range.map(h)),i=i.compose(d),o=ye.mapEffects(o,d).concat(ye.mapEffects(Co(l.effects),h))}return{changes:i,selection:z.create(s,t.mainIndex),effects:o}}changes(e=[]){return e instanceof On?e:On.of(e,this.doc.length,this.facet(n.lineSeparator))}toText(e){return De.of(e.split(this.facet(n.lineSeparator)||np))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(Va(this,t),qc(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let r in e){let i=e[r];i instanceof Xe&&this.config.address[i.id]!=null&&(t[r]=i.spec.toJSON(this.field(e[r]),this))}return t}static fromJSON(e,t={},r){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let i=[];if(r){for(let s in r)if(Object.prototype.hasOwnProperty.call(e,s)){let o=r[s],a=e[s];i.push(o.init(l=>o.spec.fromJSON(a,l)))}}return n.create({doc:e.doc,selection:z.fromJSON(e.selection),extensions:t.extensions?i.concat([t.extensions]):i})}static create(e={}){let t=Uc.resolve(e.extensions||[],new Map),r=e.doc instanceof De?e.doc:De.of((e.doc||"").split(t.staticFacet(n.lineSeparator)||np)),i=e.selection?e.selection instanceof z?e.selection:z.single(e.selection.anchor,e.selection.head):z.single(0);return nS(i,r.length),t.staticFacet(op)||(i=i.asSingle()),new n(t,r,i,t.dynamicSlots.map(()=>null),(s,o)=>o.create(s),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||`
`}get readOnly(){return this.facet(lS)}phrase(e,...t){for(let r of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(r,i)=>{if(i=="$")return"$";let s=+(i||1);return!s||s>t.length?r:t[s-1]})),e}languageDataAt(e,t,r=-1){let i=[];for(let s of this.facet(rS))for(let o of s(this,t,r))Object.prototype.hasOwnProperty.call(o,e)&&i.push(o[e]);return i}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return l_(t.length?t[0]:"")}wordAt(e){let{text:t,from:r,length:i}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-r,a=e-r;for(;o>0;){let l=Pt(t,o,!1);if(s(t.slice(l,o))!=et.Word)break;o=l}for(;a<i;){let l=Pt(t,a);if(s(t.slice(a,l))!=et.Word)break;a=l}return o==a?null:z.range(o+r,a+r)}};Me.allowMultipleSelections=op;Me.tabSize=oe.define({combine:n=>n.length?n[0]:4});Me.lineSeparator=iS;Me.readOnly=lS;Me.phrases=oe.define({compare(n,e){let t=Object.keys(n),r=Object.keys(e);return t.length==r.length&&t.every(i=>n[i]==e[i])}});Me.languageData=rS;Me.changeFilter=sS;Me.transactionFilter=oS;Me.transactionExtender=aS;Vt.reconfigure=ye.define();function Yn(n,e,t={}){let r={};for(let i of n)for(let s of Object.keys(i)){let o=i[s],a=r[s];if(a===void 0)r[s]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,s))r[s]=t[s](a,o);else throw new Error("Config merge conflict for field "+s)}for(let i in e)r[i]===void 0&&(r[i]=e[i]);return r}var fr=class{eq(e){return this==e}range(e,t=e){return Ya.create(e,t,this)}};fr.prototype.startSide=fr.prototype.endSide=0;fr.prototype.point=!1;fr.prototype.mapMode=Xt.TrackDel;function gp(n,e){return n==e||n.constructor==e.constructor&&n.eq(e)}var Ya=class n{constructor(e,t,r){this.from=e,this.to=t,this.value=r}static create(e,t,r){return new n(e,t,r)}};function hp(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}var up=class n{constructor(e,t,r,i){this.from=e,this.to=t,this.value=r,this.maxPoint=i}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,i=0){let s=r?this.to:this.from;for(let o=i,a=s.length;;){if(o==a)return o;let l=o+a>>1,c=s[l]-e||(r?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,r,i){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);s<o;s++)if(i(this.from[s]+e,this.to[s]+e,this.value[s])===!1)return!1}map(e,t){let r=[],i=[],s=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let c=this.value[l],d=this.from[l]+e,h=this.to[l]+e,u,f;if(d==h){let m=t.mapPos(d,c.startSide,c.mapMode);if(m==null||(u=f=m,c.startSide!=c.endSide&&(f=t.mapPos(d,c.endSide),f<u)))continue}else if(u=t.mapPos(d,c.startSide),f=t.mapPos(h,c.endSide),u>f||u==f&&c.startSide>0&&c.endSide<=0)continue;(f-u||c.endSide-c.startSide)<0||(o<0&&(o=u),c.point&&(a=Math.max(a,f-u)),r.push(c),i.push(u-o),s.push(f-o))}return{mapped:r.length?new n(i,s,r,a):null,pos:o}}},$e=class n{constructor(e,t,r,i){this.chunkPos=e,this.chunk=t,this.nextLayer=r,this.maxPoint=i}static create(e,t,r,i){return new n(e,t,r,i)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:r=!1,filterFrom:i=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(r&&(t=t.slice().sort(hp)),this.isEmpty)return t.length?n.of(t):this;let a=new Gc(this,null,-1).goto(0),l=0,c=[],d=new Zr;for(;a.value||l<t.length;)if(l<t.length&&(a.from-t[l].from||a.startSide-t[l].value.startSide)>=0){let h=t[l++];d.addInner(h.from,h.to,h.value)||c.push(h)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==t.length||this.chunkEnd(a.chunkIndex)<t[l].from)&&(!o||i>this.chunkEnd(a.chunkIndex)||s<this.chunkPos[a.chunkIndex])&&d.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||i>a.to||s<a.from||o(a.from,a.to,a.value))&&(d.addInner(a.from,a.to,a.value)||c.push(Ya.create(a.from,a.to,a.value))),a.next());return d.finishInner(this.nextLayer.isEmpty&&!c.length?n.empty:this.nextLayer.update({add:c,filter:o,filterFrom:i,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],r=[],i=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],c=e.touchesRange(a,a+l.length);if(c===!1)i=Math.max(i,l.maxPoint),t.push(l),r.push(e.mapPos(a));else if(c===!0){let{mapped:d,pos:h}=l.map(a,e);d&&(i=Math.max(i,d.maxPoint),t.push(d),r.push(h))}}let s=this.nextLayer.map(e);return t.length==0?s:new n(r,t,s||n.empty,i)}between(e,t,r){if(!this.isEmpty){for(let i=0;i<this.chunk.length;i++){let s=this.chunkPos[i],o=this.chunk[i];if(t>=s&&e<=s+o.length&&o.between(s,e-s,t-s,r)===!1)return}this.nextLayer.between(e,t,r)}}iter(e=0){return ja.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return ja.from(e).goto(t)}static compare(e,t,r,i,s=-1){let o=e.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=s),a=t.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=s),l=Ky(o,a,r),c=new Ds(o,l,s),d=new Ds(a,l,s);r.iterGaps((h,u,f)=>Jy(c,h,d,u,f,i)),r.empty&&r.length==0&&Jy(c,0,d,0,0,i)}static eq(e,t,r=0,i){i==null&&(i=999999999);let s=e.filter(d=>!d.isEmpty&&t.indexOf(d)<0),o=t.filter(d=>!d.isEmpty&&e.indexOf(d)<0);if(s.length!=o.length)return!1;if(!s.length)return!0;let a=Ky(s,o),l=new Ds(s,a,0).goto(r),c=new Ds(o,a,0).goto(r);for(;;){if(l.to!=c.to||!fp(l.active,c.active)||l.point&&(!c.point||!gp(l.point,c.point)))return!1;if(l.to>i)return!0;l.next(),c.next()}}static spans(e,t,r,i,s=-1){let o=new Ds(e,null,s).goto(t),a=t,l=o.openStart;for(;;){let c=Math.min(o.to,r);if(o.point){let d=o.activeForPoint(o.to),h=o.pointFrom<t?d.length+1:o.point.startSide<0?d.length:Math.min(d.length,l);i.point(a,c,o.point,d,h,o.pointRank),l=Math.min(o.openEnd(c),d.length)}else c>a&&(i.span(a,c,o.active,l),l=o.openEnd(c));if(o.to>r)return l+(o.point&&o.to>r?1:0);a=o.to,o.next()}}static of(e,t=!1){let r=new Zr;for(let i of e instanceof Ya?[e]:t?c_(e):e)r.add(i.from,i.to,i.value);return r.finish()}static join(e){if(!e.length)return n.empty;let t=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let i=e[r];i!=n.empty;i=i.nextLayer)t=new n(i.chunkPos,i.chunk,t,Math.max(i.maxPoint,t.maxPoint));return t}};$e.empty=new $e([],[],null,-1);function c_(n){if(n.length>1)for(let e=n[0],t=1;t<n.length;t++){let r=n[t];if(hp(e,r)>0)return n.slice().sort(hp);e=r}return n}$e.empty.nextLayer=$e.empty;var Zr=class n{finishChunk(e){this.chunks.push(new up(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,e&&(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(e,t,r){this.addInner(e,t,r)||(this.nextLayer||(this.nextLayer=new n)).add(e,t,r)}addInner(e,t,r){let i=e-this.lastTo||r.startSide-this.last.endSide;if(i<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return i<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=t,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let r=t.value.length-1;return this.last=t.value[r],this.lastFrom=t.from[r]+e,this.lastTo=t.to[r]+e,!0}finish(){return this.finishInner($e.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=$e.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function Ky(n,e,t){let r=new Map;for(let s of n)for(let o=0;o<s.chunk.length;o++)s.chunk[o].maxPoint<=0&&r.set(s.chunk[o],s.chunkPos[o]);let i=new Set;for(let s of e)for(let o=0;o<s.chunk.length;o++){let a=r.get(s.chunk[o]);a!=null&&(t?t.mapPos(a):a)==s.chunkPos[o]&&!(t!=null&&t.touchesRange(a,a+s.chunk[o].length))&&i.add(s.chunk[o])}return i}var Gc=class{constructor(e,t,r,i=0){this.layer=e,this.skip=t,this.minPoint=r,this.rank=i}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,t=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,t,!1),this}gotoInner(e,t,r){for(;this.chunkIndex<this.layer.chunk.length;){let i=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(i)||this.layer.chunkEnd(this.chunkIndex)<e||i.maxPoint<this.minPoint))break;this.chunkIndex++,r=!1}if(this.chunkIndex<this.layer.chunk.length){let i=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0);(!r||this.rangeIndex<i)&&this.setRangeIndex(i)}this.next()}forward(e,t){(this.to-e||this.endSide-t)<0&&this.gotoInner(e,t,!0)}next(){for(;;)if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}else{let e=this.layer.chunkPos[this.chunkIndex],t=this.layer.chunk[this.chunkIndex],r=e+t.from[this.rangeIndex];if(this.from=r,this.to=e+t.to[this.rangeIndex],this.value=t.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==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=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}},ja=class n{constructor(e){this.heap=e}static from(e,t=null,r=-1){let i=[];for(let s=0;s<e.length;s++)for(let o=e[s];!o.isEmpty;o=o.nextLayer)o.maxPoint>=r&&i.push(new Gc(o,t,r,s));return i.length==1?i[0]:new n(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let r of this.heap)r.goto(e,t);for(let r=this.heap.length>>1;r>=0;r--)ep(this.heap,r);return this.next(),this}forward(e,t){for(let r of this.heap)r.forward(e,t);for(let r=this.heap.length>>1;r>=0;r--)ep(this.heap,r);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),ep(this.heap,0)}}};function ep(n,e){for(let t=n[e];;){let r=(e<<1)+1;if(r>=n.length)break;let i=n[r];if(r+1<n.length&&i.compare(n[r+1])>=0&&(i=n[r+1],r++),t.compare(i)<0)break;n[r]=t,n[e]=i,e=r}}var Ds=class{constructor(e,t,r){this.minPoint=r,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=ja.from(e,t,r)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Nc(this.active,e),Nc(this.activeTo,e),Nc(this.activeRank,e),this.minActive=eS(this.active,this.activeTo)}addActive(e){let t=0,{value:r,to:i,rank:s}=this.cursor;for(;t<this.activeRank.length&&(s-this.activeRank[t]||i-this.activeTo[t])>0;)t++;Bc(this.active,t,r),Bc(this.activeTo,t,i),Bc(this.activeRank,t,s),e&&Bc(e,t,this.cursor.from),this.minActive=eS(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let i=this.minActive;if(i>-1&&(this.activeTo[i]-this.cursor.from||this.active[i].endSide-this.cursor.startSide)<0){if(this.activeTo[i]>e){this.to=this.activeTo[i],this.endSide=this.active[i].endSide;break}this.removeActive(i),r&&Nc(r,i)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.point)this.addActive(r),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)this.cursor.next();else{this.point=s,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=s.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else{this.to=this.endSide=1e9;break}}if(r){this.openStart=0;for(let i=r.length-1;i>=0&&r[i]<e;i--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let t=[];for(let r=this.active.length-1;r>=0&&!(this.activeRank[r]<this.pointRank);r--)(this.activeTo[r]>e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&t.push(this.active[r]);return t.reverse()}openEnd(e){let t=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)t++;return t}};function Jy(n,e,t,r,i,s){n.goto(e),t.goto(r);let o=r+i,a=r,l=r-e,c=!!s.boundChange;for(let d=!1;;){let h=n.to+l-t.to,u=h||n.endSide-t.endSide,f=u<0?n.to+l:t.to,m=Math.min(f,o);if(n.point||t.point?(n.point&&t.point&&gp(n.point,t.point)&&fp(n.activeForPoint(n.to),t.activeForPoint(t.to))||s.comparePoint(a,m,n.point,t.point),d=!1):(d&&s.boundChange(a),m>a&&!fp(n.active,t.active)&&s.compareRange(a,m,n.active,t.active),c&&m<o&&(h||n.openEnd(f)!=t.openEnd(f))&&(d=!0)),f>o)break;a=f,u<=0&&n.next(),u>=0&&t.next()}}function fp(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!=e[t]&&!gp(n[t],e[t]))return!1;return!0}function Nc(n,e){for(let t=e,r=n.length-1;t<r;t++)n[t]=n[t+1];n.pop()}function Bc(n,e,t){for(let r=n.length-1;r>=e;r--)n[r+1]=n[r];n[e]=t}function eS(n,e){let t=-1,r=1e9;for(let i=0;i<e.length;i++)(e[i]-r||n[i].endSide-n[t].endSide)<0&&(t=i,r=e[i]);return t}function Gt(n,e,t=n.length){let r=0;for(let i=0;i<t&&i<n.length;)n.charCodeAt(i)==9?(r+=e-r%e,i++):(r++,i=Pt(n,i));return r}function Kc(n,e,t,r){for(let i=0,s=0;;){if(s>=e)return i;if(i==n.length)break;s+=n.charCodeAt(i)==9?t-s%t:1,i=Pt(n,i)}return r===!0?-1:n.length}var hS=typeof Symbol=="undefined"?"__\u037C":Symbol.for("\u037C"),Op=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),uS=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{},mr=class{constructor(e,t){this.rules=[];let{finish:r}=t||{};function i(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function s(o,a,l,c){let d=[],h=/^@(\w+)\b/.exec(o[0]),u=h&&h[1]=="keyframes";if(h&&a==null)return l.push(o[0]+";");for(let f in a){let m=a[f];if(/&/.test(f))s(f.split(/,\s*/).map(O=>o.map(S=>O.replace(/&/,S))).reduce((O,S)=>O.concat(S)),m,l);else if(m&&typeof m=="object"){if(!h)throw new RangeError("The value of a property ("+f+") should be a primitive value.");s(i(f),m,d,u)}else m!=null&&d.push(f.replace(/_.*/,"").replace(/[A-Z]/g,O=>"-"+O.toLowerCase())+": "+m+";")}(d.length||u)&&l.push((r&&!h&&!c?o.map(r):o).join(", ")+" {"+d.join(" ")+"}")}for(let o in e)s(i(o),e[o],this.rules)}getRules(){return this.rules.join(`
`)}static newName(){let e=uS[hS]||1;return uS[hS]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let i=e[Op],s=r&&r.nonce;i?s&&i.setNonce(s):i=new bp(e,s),i.mount(Array.isArray(t)?t:[t],e)}},fS=new Map,bp=class{constructor(e,t){let r=e.ownerDocument||e,i=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&i.CSSStyleSheet){let s=fS.get(r);if(s)return e[Op]=s;this.sheet=new i.CSSStyleSheet,fS.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Op]=this}mount(e,t){let r=this.sheet,i=0,s=0;for(let o=0;o<e.length;o++){let a=e[o],l=this.modules.indexOf(a);if(l<s&&l>-1&&(this.modules.splice(l,1),s--,l=-1),l==-1){if(this.modules.splice(s++,0,a),r)for(let c=0;c<a.rules.length;c++)r.insertRule(a.rules[c],i++)}else{for(;s<l;)i+=this.modules[s++].rules.length;i+=a.rules.length,s++}}if(r)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets]);else{let o="";for(let l=0;l<this.modules.length;l++)o+=this.modules[l].getRules()+`
`;this.styleTag.textContent=o;let a=t.head||t;this.styleTag.parentNode!=a&&a.insertBefore(this.styleTag,a.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}};var wi={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:"'"},Eo={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},d_=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),h_=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(At=0;At<10;At++)wi[48+At]=wi[96+At]=String(At);var At;for(At=1;At<=24;At++)wi[At+111]="F"+At;var At;for(At=65;At<=90;At++)wi[At]=String.fromCharCode(At+32),Eo[At]=String.fromCharCode(At);var At;for(Jc in wi)Eo.hasOwnProperty(Jc)||(Eo[Jc]=wi[Jc]);var Jc;function pS(n){var e=d_&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||h_&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?Eo:wi)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function kt(){var n=arguments[0];typeof n=="string"&&(n=document.createElement(n));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var i=t[r];typeof i=="string"?n.setAttribute(r,i):i!=null&&(n[r]=i)}e++}for(;e<arguments.length;e++)mS(n,arguments[e]);return n}function mS(n,e){if(typeof e=="string")n.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)n.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)mS(n,e[t]);else throw new RangeError("Unsupported child node: "+e)}var bn=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},Tp=typeof document!="undefined"?document:{documentElement:{style:{}}},Ap=/Edge\/(\d+)/.exec(bn.userAgent),ev=/MSIE \d/.test(bn.userAgent),Cp=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(bn.userAgent),Ed=!!(ev||Cp||Ap),gS=!Ed&&/gecko\/(\d+)/i.test(bn.userAgent),yp=!Ed&&/Chrome\/(\d+)/.exec(bn.userAgent),OS="webkitFontSmoothing"in Tp.documentElement.style,_p=!Ed&&/Apple Computer/.test(bn.vendor),bS=_p&&(/Mobile\/\w+/.test(bn.userAgent)||bn.maxTouchPoints>2),ae={mac:bS||/Mac/.test(bn.platform),windows:/Win/.test(bn.platform),linux:/Linux|X11/.test(bn.platform),ie:Ed,ie_version:ev?Tp.documentMode||6:Cp?+Cp[1]:Ap?+Ap[1]:0,gecko:gS,gecko_version:gS?+(/Firefox\/(\d+)/.exec(bn.userAgent)||[0,0])[1]:0,chrome:!!yp,chrome_version:yp?+yp[1]:0,ios:bS,android:/Android\b/.test(bn.userAgent),webkit:OS,webkit_version:OS?+(/\bAppleWebKit\/(\d+)/.exec(bn.userAgent)||[0,0])[1]:0,safari:_p,safari_version:_p?+(/\bVersion\/(\d+(\.\d+)?)/.exec(bn.userAgent)||[0,0])[1]:0,tabSize:Tp.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function wm(n,e){for(let t in n)t=="class"&&e.class?e.class+=" "+n.class:t=="style"&&e.style?e.style+=";"+n.style:e[t]=n[t];return e}var pd=Object.create(null);function xm(n,e,t){if(n==e)return!0;n||(n=pd),e||(e=pd);let r=Object.keys(n),i=Object.keys(e);if(r.length-(t&&r.indexOf(t)>-1?1:0)!=i.length-(t&&i.indexOf(t)>-1?1:0))return!1;for(let s of r)if(s!=t&&(i.indexOf(s)==-1||n[s]!==e[s]))return!1;return!0}function u_(n,e){for(let t=n.attributes.length-1;t>=0;t--){let r=n.attributes[t].name;e[r]==null&&n.removeAttribute(r)}for(let t in e){let r=e[t];t=="style"?n.style.cssText=r:n.getAttribute(t)!=r&&n.setAttribute(t,r)}}function yS(n,e,t){let r=!1;if(e)for(let i in e)t&&i in t||(r=!0,i=="style"?n.style.cssText="":n.removeAttribute(i));if(t)for(let i in t)e&&e[i]==t[i]||(r=!0,i=="style"?n.style.cssText=t[i]:n.setAttribute(i,t[i]));return r}function f_(n){let e=Object.create(null);for(let t=0;t<n.attributes.length;t++){let r=n.attributes[t];e[r.name]=r.value}return e}var Ct=class{eq(e){return!1}updateDOM(e,t,r){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,r){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}},Ht=(function(n){return n[n.Text=0]="Text",n[n.WidgetBefore=1]="WidgetBefore",n[n.WidgetAfter=2]="WidgetAfter",n[n.WidgetRange=3]="WidgetRange",n})(Ht||(Ht={})),J=class extends fr{constructor(e,t,r,i){super(),this.startSide=e,this.endSide=t,this.widget=r,this.spec=i}get heightRelevant(){return!1}static mark(e){return new ol(e)}static widget(e){let t=Math.max(-1e4,Math.min(1e4,e.side||0)),r=!!e.block;return t+=r&&!e.inlineOrder?t>0?3e8:-4e8:t>0?1e8:-1e8,new Ns(e,t,t,r,e.widget||null,!1)}static replace(e){let t=!!e.block,r,i;if(e.isBlockGap)r=-5e8,i=4e8;else{let{start:s,end:o}=tv(e,t);r=(s?t?-3e8:-1:5e8)-1,i=(o?t?2e8:1:-6e8)+1}return new Ns(e,r,i,t,e.widget||null,!0)}static line(e){return new al(e)}static set(e,t=!1){return $e.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};J.none=$e.empty;var ol=class n extends J{constructor(e){let{start:t,end:r}=tv(e);super(t?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?wm(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||pd}eq(e){return this==e||e instanceof n&&this.tagName==e.tagName&&xm(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};ol.prototype.point=!1;var al=class n extends J{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof n&&this.spec.class==e.spec.class&&xm(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};al.prototype.mapMode=Xt.TrackBefore;al.prototype.point=!0;var Ns=class n extends J{constructor(e,t,r,i,s,o){super(t,r,s,e),this.block=i,this.isReplace=o,this.mapMode=i?t<=0?Xt.TrackBefore:Xt.TrackAfter:Xt.TrackDel}get type(){return this.startSide!=this.endSide?Ht.WidgetRange:this.startSide<=0?Ht.WidgetBefore:Ht.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof n&&p_(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};Ns.prototype.point=!0;function tv(n,e=!1){let{inclusiveStart:t,inclusiveEnd:r}=n;return t==null&&(t=n.inclusive),r==null&&(r=n.inclusive),{start:t!=null?t:e,end:r!=null?r:e}}function p_(n,e){return n==e||!!(n&&e&&n.compare(e))}function Io(n,e,t,r=0){let i=t.length-1;i>=0&&t[i]+r>=n?t[i]=Math.max(t[i],e):t.push(n,e)}var md=class n extends fr{constructor(e,t,r){super(),this.tagName=e,this.attributes=t,this.rank=r}eq(e){return e==this||e instanceof n&&this.tagName==e.tagName&&xm(this.attributes,e.attributes)}static create(e){return new n(e.tagName,e.attributes||pd,e.rank==null?50:Math.max(0,Math.min(e.rank,100)))}static set(e,t=!1){return $e.of(e,t)}};md.prototype.startSide=md.prototype.endSide=-1;function ll(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}function Ep(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}function Ha(n,e){if(!e.anchorNode)return!1;try{return Ep(n,e.anchorNode)}catch(t){return!1}}function cd(n){return n.nodeType==3?cl(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function Ka(n,e,t,r){return t?SS(n,e,t,r,-1)||SS(n,e,t,r,1):!1}function qi(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}function gd(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function SS(n,e,t,r,i){for(;;){if(n==t&&e==r)return!0;if(e==(i<0?0:ki(n))){if(n.nodeName=="DIV")return!1;let s=n.parentNode;if(!s||s.nodeType!=1)return!1;e=qi(n)+(i<0?0:1),n=s}else if(n.nodeType==1){if(n=n.childNodes[e+(i<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=i<0?ki(n):0}else return!1}}function ki(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function Od(n,e){let{left:t,right:r}=n;if(t==r)return n;let i=e?t:r;return{left:i,right:i,top:n.top,bottom:n.bottom}}function m_(n){let e=n.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function nv(n,e){let t=e.width/n.offsetWidth,r=e.height/n.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-n.offsetWidth)<1)&&(t=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-n.offsetHeight)<1)&&(r=1),{scaleX:t,scaleY:r}}function g_(n,e,t,r,i,s,o,a){let l=n.ownerDocument,c=l.defaultView||window;for(let d=n,h=!1;d&&!h;)if(d.nodeType==1){let u,f=d==l.body,m=1,O=1;if(f)u=m_(c);else{if(/^(fixed|sticky)$/.test(getComputedStyle(d).position)&&(h=!0),d.scrollHeight<=d.clientHeight&&d.scrollWidth<=d.clientWidth){d=d.assignedSlot||d.parentNode;continue}let D=d.getBoundingClientRect();({scaleX:m,scaleY:O}=nv(d,D)),u={left:D.left,right:D.left+d.clientWidth*m,top:D.top,bottom:D.top+d.clientHeight*O}}let S=0,x=0;if(i=="nearest")e.top<u.top+o?(x=e.top-(u.top+o),t>0&&e.bottom>u.bottom+x&&(x=e.bottom-u.bottom+o)):e.bottom>u.bottom-o&&(x=e.bottom-u.bottom+o,t<0&&e.top-x<u.top&&(x=e.top-(u.top+o)));else{let D=e.bottom-e.top,M=u.bottom-u.top;x=(i=="center"&&D<=M?e.top+D/2-M/2:i=="start"||i=="center"&&t<0?e.top-o:e.bottom-M+o)-u.top}if(r=="nearest"?e.left<u.left+s?(S=e.left-(u.left+s),t>0&&e.right>u.right+S&&(S=e.right-u.right+s)):e.right>u.right-s&&(S=e.right-u.right+s,t<0&&e.left<u.left+S&&(S=e.left-(u.left+s))):S=(r=="center"?e.left+(e.right-e.left)/2-(u.right-u.left)/2:r=="start"==a?e.left-s:e.right-(u.right-u.left)+s)-u.left,S||x)if(f)c.scrollBy(S,x);else{let D=0,M=0;if(x){let Z=d.scrollTop;d.scrollTop+=x/O,M=(d.scrollTop-Z)*O}if(S){let Z=d.scrollLeft;d.scrollLeft+=S/m,D=(d.scrollLeft-Z)*m}e={left:e.left-D,top:e.top-M,right:e.right-D,bottom:e.bottom-M},D&&Math.abs(D-S)<1&&(r="nearest"),M&&Math.abs(M-x)<1&&(i="nearest")}if(f)break;(e.top<u.top||e.bottom>u.bottom||e.left<u.left||e.right>u.right)&&(e={left:Math.max(e.left,u.left),right:Math.min(e.right,u.right),top:Math.max(e.top,u.top),bottom:Math.min(e.bottom,u.bottom)}),d=d.assignedSlot||d.parentNode}else if(d.nodeType==11)d=d.host;else break}function rv(n,e=!0){let t=n.ownerDocument,r=null,i=null;for(let s=n.parentNode;s&&!(s==t.body||(!e||r)&&i);)if(s.nodeType==1)!i&&s.scrollHeight>s.clientHeight&&(i=s),e&&!r&&s.scrollWidth>s.clientWidth&&(r=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:r,y:i}}var Rp=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:r}=e;this.set(t,Math.min(e.anchorOffset,t?ki(t):0),r,Math.min(e.focusOffset,r?ki(r):0))}set(e,t,r,i){this.anchorNode=e,this.anchorOffset=t,this.focusNode=r,this.focusOffset=i}};function iv(n){let e=[];for(let t=n;t;t=t.nodeType==11?t.host:t.parentNode)t.nodeType==1&&e.push({node:t,left:t.scrollLeft,top:t.scrollTop});return e}function sv(n,e=!0){for(let{node:t,left:r,top:i}of n)e&&t.scrollTop!=i&&(t.scrollTop=i),t.scrollLeft!=r&&(t.scrollLeft=r)}var Xs=null;ae.safari&&ae.safari_version>=26&&(Xs=!1);function ov(n){if(n.setActive)return n.setActive();if(Xs)return n.focus(Xs);let e=iv(n);n.focus(Xs==null?{get preventScroll(){return Xs={preventScroll:!0},!0}}:void 0),Xs||(Xs=!1,sv(e))}var vS;function cl(n,e,t=e){let r=vS||(vS=document.createRange());return r.setEnd(n,t),r.setStart(n,e),r}function Xo(n,e,t,r){let i={key:e,code:e,keyCode:t,which:t,cancelable:!0};r&&({altKey:i.altKey,ctrlKey:i.ctrlKey,shiftKey:i.shiftKey,metaKey:i.metaKey}=r);let s=new KeyboardEvent("keydown",i);s.synthetic=!0,n.dispatchEvent(s);let o=new KeyboardEvent("keyup",i);return o.synthetic=!0,n.dispatchEvent(o),s.defaultPrevented||o.defaultPrevented}function O_(n){for(;n;){if(n&&(n.nodeType==9||n.nodeType==11&&n.host))return n;n=n.assignedSlot||n.parentNode}return null}function b_(n,e){let t=e.focusNode,r=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=r)return!1;for(r=Math.min(r,ki(t));;)if(r){if(t.nodeType!=1)return!1;let i=t.childNodes[r-1];i.contentEditable=="false"?r--:(t=i,r=ki(t))}else{if(t==n)return!0;r=qi(t),t=t.parentNode}}function av(n){return n instanceof Window?n.pageYOffset>Math.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function lv(n,e){for(let t=n,r=e;;){if(t.nodeType==3&&r>0)return{node:t,offset:r};if(t.nodeType==1&&r>0){if(t.contentEditable=="false")return null;t=t.childNodes[r-1],r=ki(t)}else if(t.parentNode&&!gd(t))r=qi(t),t=t.parentNode;else return null}}function cv(n,e){for(let t=n,r=e;;){if(t.nodeType==3&&r<t.nodeValue.length)return{node:t,offset:r};if(t.nodeType==1&&r<t.childNodes.length){if(t.contentEditable=="false")return null;t=t.childNodes[r],r=0}else if(t.parentNode&&!gd(t))r=qi(t)+1,t=t.parentNode;else return null}}var Jr=class n{constructor(e,t,r=!0){this.node=e,this.offset=t,this.precise=r}static before(e,t){return new n(e.parentNode,qi(e),t)}static after(e,t){return new n(e.parentNode,qi(e)+1,t)}},qe=(function(n){return n[n.LTR=0]="LTR",n[n.RTL=1]="RTL",n})(qe||(qe={})),Bs=qe.LTR,Pm=qe.RTL;function dv(n){let e=[];for(let t=0;t<n.length;t++)e.push(1<<+n[t]);return e}var y_=dv("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),S_=dv("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),Mp=Object.create(null),Kr=[];for(let n of["()","[]","{}"]){let e=n.charCodeAt(0),t=n.charCodeAt(1);Mp[e]=t,Mp[t]=-e}function hv(n){return n<=247?y_[n]:1424<=n&&n<=1524?2:1536<=n&&n<=1785?S_[n-1536]:1774<=n&&n<=2220?4:8192<=n&&n<=8204?256:64336<=n&&n<=65023?4:1}var v_=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/,br=class{get dir(){return this.level%2?Pm:Bs}constructor(e,t,r){this.from=e,this.to=t,this.level=r}side(e,t){return this.dir==t==e?this.to:this.from}forward(e,t){return e==(this.dir==t)}static find(e,t,r,i){let s=-1;for(let o=0;o<e.length;o++){let a=e[o];if(a.from<=t&&a.to>=t){if(a.level==r)return o;(s<0||(i!=0?i<0?a.from<t:a.to>t:e[s].level>a.level))&&(s=o)}}if(s<0)throw new RangeError("Index out of range");return s}};function uv(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++){let r=n[t],i=e[t];if(r.from!=i.from||r.to!=i.to||r.direction!=i.direction||!uv(r.inner,i.inner))return!1}return!0}var rt=[];function w_(n,e,t,r,i){for(let s=0;s<=r.length;s++){let o=s?r[s-1].to:e,a=s<r.length?r[s].from:t,l=s?256:i;for(let c=o,d=l,h=l;c<a;c++){let u=hv(n.charCodeAt(c));u==512?u=d:u==8&&h==4&&(u=16),rt[c]=u==4?2:u,u&7&&(h=u),d=u}for(let c=o,d=l,h=l;c<a;c++){let u=rt[c];if(u==128)c<a-1&&d==rt[c+1]&&d&24?u=rt[c]=d:rt[c]=256;else if(u==64){let f=c+1;for(;f<a&&rt[f]==64;)f++;let m=c&&d==8||f<t&&rt[f]==8?h==1?1:8:256;for(let O=c;O<f;O++)rt[O]=m;c=f-1}else u==8&&h==1&&(rt[c]=1);d=u,u&7&&(h=u)}}}function x_(n,e,t,r,i){let s=i==1?2:1;for(let o=0,a=0,l=0;o<=r.length;o++){let c=o?r[o-1].to:e,d=o<r.length?r[o].from:t;for(let h=c,u,f,m;h<d;h++)if(f=Mp[u=n.charCodeAt(h)])if(f<0){for(let O=a-3;O>=0;O-=3)if(Kr[O+1]==-f){let S=Kr[O+2],x=S&2?i:S&4?S&1?s:i:0;x&&(rt[h]=rt[Kr[O]]=x),a=O;break}}else{if(Kr.length==189)break;Kr[a++]=h,Kr[a++]=u,Kr[a++]=l}else if((m=rt[h])==2||m==1){let O=m==i;l=O?0:1;for(let S=a-3;S>=0;S-=3){let x=Kr[S+2];if(x&2)break;if(O)Kr[S+2]|=2;else{if(x&4)break;Kr[S+2]|=4}}}}}function P_(n,e,t,r){for(let i=0,s=r;i<=t.length;i++){let o=i?t[i-1].to:n,a=i<t.length?t[i].from:e;for(let l=o;l<a;){let c=rt[l];if(c==256){let d=l+1;for(;;)if(d==a){if(i==t.length)break;d=t[i++].to,a=i<t.length?t[i].from:e}else if(rt[d]==256)d++;else break;let h=s==1,u=(d<e?rt[d]:r)==1,f=h==u?h?1:2:r;for(let m=d,O=i,S=O?t[O-1].to:n;m>l;)m==S&&(m=t[--O].from,S=O?t[O-1].to:n),rt[--m]=f;l=d}else s=c,l++}}}function Lp(n,e,t,r,i,s,o){let a=r%2?2:1;if(r%2==i%2)for(let l=e,c=0;l<t;){let d=!0,h=!1;if(c==s.length||l<s[c].from){let O=rt[l];O!=a&&(d=!1,h=O==16)}let u=!d&&a==1?[]:null,f=d?r:r+1,m=l;e:for(;;)if(c<s.length&&m==s[c].from){if(h)break e;let O=s[c];if(!d)for(let S=O.to,x=c+1;;){if(S==t)break e;if(x<s.length&&s[x].from==S)S=s[x++].to;else{if(rt[S]==a)break e;break}}if(c++,u)u.push(O);else{O.from>l&&o.push(new br(l,O.from,f));let S=O.direction==Bs!=!(f%2);Dp(n,S?r+1:r,i,O.inner,O.from,O.to,o),l=O.to}m=O.to}else{if(m==t||(d?rt[m]!=a:rt[m]==a))break;m++}u?Lp(n,l,m,r+1,i,u,o):l<m&&o.push(new br(l,m,f)),l=m}else for(let l=t,c=s.length;l>e;){let d=!0,h=!1;if(!c||l>s[c-1].to){let O=rt[l-1];O!=a&&(d=!1,h=O==16)}let u=!d&&a==1?[]:null,f=d?r:r+1,m=l;e:for(;;)if(c&&m==s[c-1].to){if(h)break e;let O=s[--c];if(!d)for(let S=O.from,x=c;;){if(S==e)break e;if(x&&s[x-1].to==S)S=s[--x].from;else{if(rt[S-1]==a)break e;break}}if(u)u.push(O);else{O.to<l&&o.push(new br(O.to,l,f));let S=O.direction==Bs!=!(f%2);Dp(n,S?r+1:r,i,O.inner,O.from,O.to,o),l=O.from}m=O.from}else{if(m==e||(d?rt[m-1]!=a:rt[m-1]==a))break;m--}u?Lp(n,m,l,r+1,i,u,o):m<l&&o.push(new br(m,l,f)),l=m}}function Dp(n,e,t,r,i,s,o){let a=e%2?2:1;w_(n,i,s,r,a),x_(n,i,s,r,a),P_(i,s,r,a),Lp(n,i,s,e,t,r,o)}function k_(n,e,t){if(!n)return[new br(0,0,e==Pm?1:0)];if(e==Bs&&!t.length&&!v_.test(n))return fv(n.length);if(t.length)for(;n.length>rt.length;)rt[rt.length]=256;let r=[],i=e==Bs?0:1;return Dp(n,i,i,t,0,n.length,r),r}function fv(n){return[new br(0,n,0)]}var pv="";function $_(n,e,t,r,i){var s;let o=r.head-n.from,a=br.find(e,o,(s=r.bidiLevel)!==null&&s!==void 0?s:-1,r.assoc),l=e[a],c=l.side(i,t);if(o==c){let u=a+=i?1:-1;if(u<0||u>=e.length)return null;l=e[a=u],o=l.side(!i,t),c=l.side(i,t)}let d=Pt(n.text,o,l.forward(i,t));(d<l.from||d>l.to)&&(d=c),pv=n.text.slice(Math.min(o,d),Math.max(o,d));let h=a==(i?e.length-1:0)?null:e[a+(i?1:-1)];return h&&d==c&&h.level+(i?0:1)<l.level?z.cursor(h.side(!i,t)+n.from,h.forward(i,t)?1:-1,h.level):z.cursor(d+n.from,l.forward(i,t)?-1:1,l.level)}function Q_(n,e,t){for(let r=e;r<t;r++){let i=hv(n.charCodeAt(r));if(i==1)return Bs;if(i==2||i==4)return Pm}return Bs}var mv=oe.define(),gv=oe.define(),Ov=oe.define(),bv=oe.define(),Zp=oe.define(),yv=oe.define(),Sv=oe.define(),km=oe.define(),$m=oe.define(),vv=oe.define({combine:n=>n.some(e=>e)}),wv=oe.define({combine:n=>n.some(e=>e)}),xv=oe.define(),Ja=class n{constructor(e,t,r,i,s,o=!1){this.range=e,this.y=t,this.x=r,this.yMargin=i,this.xMargin=s,this.isSnapshot=o}map(e){return e.empty?this:new n(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new n(z.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},ed=ye.define({map:(n,e)=>n.map(e)}),Pv=ye.define();function jn(n,e,t){let r=n.facet(bv);r.length?r[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}var xi=oe.define({combine:n=>n.length?n[0]:!0}),T_=0,Mo=oe.define({combine(n){return n.filter((e,t)=>{for(let r=0;r<t;r++)if(n[r].plugin==e.plugin)return!1;return!0})}}),it=class n{constructor(e,t,r,i,s){this.id=e,this.create=t,this.domEventHandlers=r,this.domEventObservers=i,this.baseExtensions=s(this),this.extension=this.baseExtensions.concat(Mo.of({plugin:this,arg:void 0}))}of(e){return this.baseExtensions.concat(Mo.of({plugin:this,arg:e}))}static define(e,t){let{eventHandlers:r,eventObservers:i,provide:s,decorations:o}=t||{};return new n(T_++,e,r,i,a=>{let l=[];return o&&l.push(Rd.of(c=>{let d=c.plugin(a);return d?o(d):J.none})),s&&l.push(s(a)),l})}static fromClass(e,t){return n.define((r,i)=>new e(r,i),t)}},el=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(r){if(jn(t.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(i){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){jn(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(r){jn(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},kv=oe.define(),Qm=oe.define(),Rd=oe.define(),$v=oe.define(),Tm=oe.define(),ul=oe.define(),Qv=oe.define();function wS(n,e){let t=n.state.facet(Qv);if(!t.length)return t;let r=t.map(s=>s instanceof Function?s(n):s),i=[];return $e.spans(r,e.from,e.to,{point(){},span(s,o,a,l){let c=s-e.from,d=o-e.from,h=i;for(let u=a.length-1;u>=0;u--,l--){let f=a[u].spec.bidiIsolate,m;if(f==null&&(f=Q_(e.text,c,d)),l>0&&h.length&&(m=h[h.length-1]).to==c&&m.direction==f)m.to=d,h=m.inner;else{let O={from:c,to:d,direction:f,inner:[]};h.push(O),h=O.inner}}}}),i}var Tv=oe.define();function Am(n){let e=0,t=0,r=0,i=0;for(let s of n.state.facet(Tv)){let o=s(n);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(r=Math.max(r,o.top)),o.bottom!=null&&(i=Math.max(i,o.bottom)))}return{left:e,right:t,top:r,bottom:i}}var Ua=oe.define(),zr=class n{constructor(e,t,r,i){this.fromA=e,this.toA=t,this.fromB=r,this.toB=i}join(e){return new n(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,r=this;for(;t>0;t--){let i=e[t-1];if(!(i.fromA>r.toA)){if(i.toA<r.fromA)break;r=r.join(i),e.splice(t-1,1)}}return e.splice(t,0,r),e}static extendWithRanges(e,t){if(t.length==0)return e;let r=[];for(let i=0,s=0,o=0;;){let a=i<e.length?e[i].fromB:1e9,l=s<t.length?t[s]:1e9,c=Math.min(a,l);if(c==1e9)break;let d=c+o,h=c,u=d;for(;;)if(s<t.length&&t[s]<=h){let f=t[s+1];s+=2,h=Math.max(h,f);for(let m=i;m<e.length&&e[m].fromB<=h;m++)o=e[m].toA-e[m].toB;u=Math.max(u,f+o)}else if(i<e.length&&e[i].fromB<=h){let f=e[i++];h=Math.max(h,f.toB),u=Math.max(u,f.toA),o=f.toA-f.toB}else break;r.push(new n(d,u,c,h))}return r}},bd=class n{constructor(e,t,r){this.view=e,this.state=t,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=On.empty(this.startState.doc.length);for(let s of r)this.changes=this.changes.compose(s.changes);let i=[];this.changes.iterChangedRanges((s,o,a,l)=>i.push(new zr(s,o,a,l))),this.changedRanges=i}static create(e,t,r){return new n(e,t,r)}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(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},A_=[],mt=class{constructor(e,t,r=0){this.dom=e,this.length=t,this.flags=r,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return A_}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&u_(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let r=t;for(let i of this.children){if(i==e)return r;r+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t,r){return null}domPosFor(e,t){let r=qi(this.dom),i=this.length?e>0:t>0;return new Jr(this.parent.dom,r+(i?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof Wo)return e;return null}static get(e){return e.cmTile}},zo=class extends mt{constructor(e){super(e,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(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,r=null,i,s=(e==null?void 0:e.node)==t?e:null,o=0;for(let a of this.children){if(a.sync(e),o+=a.length+a.breakAfter,i=r?r.nextSibling:t.firstChild,s&&i!=a.dom&&(s.written=!0),a.dom.parentNode==t)for(;i&&i!=a.dom;)i=xS(i);else t.insertBefore(a.dom,i);r=a.dom}for(i=r?r.nextSibling:t.firstChild,s&&i&&(s.written=!0);i;)i=xS(i);this.length=o}};function xS(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}var Wo=class extends zo{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=mt.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],r=this,i=0,s=0;;)if(i==r.children.length){if(!t.length)return;r=r.parent,r.breakAfter&&s++,i=t.pop()}else{let o=r.children[i++];if(o instanceof Pi)t.push(i),r=o,i=0;else{let a=s+o.length,l=e(o,s);if(l!==void 0)return l;s=a+o.breakAfter}}}resolveBlock(e,t){let r,i=-1,s,o=-1;if(this.blockTiles((a,l)=>{let c=l+a.length;if(e>=l&&e<=c){if(a.isWidget()&&t>=-1&&t<=1){if(a.flags&32)return!0;a.flags&16&&(r=void 0)}(l<e||e==c&&(t<-1?a.length:a.covers(1)))&&(!r||!a.isWidget()&&r.isWidget())&&(r=a,i=e-l),(c>e||e==l&&(t>1?a.length:a.covers(-1)))&&(!s||!a.isWidget()&&s.isWidget())&&(s=a,o=e-l)}}),!r&&!s)throw new Error("No tile at position "+e);return r&&t<0||!s?{tile:r,offset:i}:{tile:s,offset:o}}},Pi=class n extends zo{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let r=new n(t||document.createElement(e.tagName),e);return t||(r.flags|=4),r}},No=class n extends zo{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,r){let i=new n(t||document.createElement("div"),e);return(!t||!r)&&(i.flags|=4),i}get domAttrs(){return this.attrs}resolveInline(e,t,r){let i=null,s=-1,o=null,a=-1;function l(d,h){for(let u=0,f=0;u<d.children.length&&f<=h;u++){let m=d.children[u],O=f+m.length;O>=h&&(m.isComposite()?l(m,h-f):(!o||o.isHidden&&(t>0&&!(o.flags&32)||r&&__(o,m)))&&(O>h||m.flags&32&&t<=1)?(o=m,a=h-f):(f<h||m.flags&16&&!m.isHidden&&t>=-1)&&(i=m,s=h-f)),f=O}}l(this,e);let c=(t<0?i:o)||i||o;return c?{tile:c,offset:c==i?s:a}:null}coordsIn(e,t,r){let i=this.resolveInline(e,t,!0);return i?i.tile.coordsIn(Math.max(0,i.offset),t,r):C_(this)}domIn(e,t){let r=this.resolveInline(e,t);if(r){let{tile:i,offset:s}=r;if(this.dom.contains(i.dom))return i.isText()?new Jr(i.dom,Math.min(i.dom.nodeValue.length,s)):i.domPosFor(s,i.flags&16?1:i.flags&32?-1:t);let o=r.tile.parent,a=!1;for(let l of o.children){if(a)return new Jr(l.dom,0);l==r.tile&&(a=!0)}}return new Jr(this.dom,0)}};function C_(n){let e=n.dom.lastChild;if(!e)return n.dom.getBoundingClientRect();let t=cd(e);return t[t.length-1]||null}function __(n,e){let t=n.coordsIn(0,1),r=e.coordsIn(0,1);return t&&r&&r.top<t.bottom}var An=class n extends zo{constructor(e,t){super(e),this.mark=t}get domAttrs(){return this.mark.attrs}static of(e,t){let r=new n(t||document.createElement(e.tagName),e);return t||(r.flags|=4),r}},zs=class n extends mt{constructor(e,t){super(e,t.length),this.text=t}sync(e){this.flags&2||(super.sync(e),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text))}isText(){return!0}toString(){return JSON.stringify(this.text)}coordsIn(e,t,r){let i=this.dom.nodeValue.length;e>i&&(e=i);let s=e,o=e,a=0;e==0&&t<0||e==i&&t>=0?ae.chrome||ae.gecko||(e?(s--,a=1):o<i&&(o++,a=-1)):t<0?s--:o<i&&o++;let l=cl(this.dom,s,o).getClientRects();if(!l.length)return null;let c=l[(a?a<0:t>=0)?0:l.length-1];return ae.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),r==null?c:Od(c,(a?a>0:t<0)==r)}static of(e,t){let r=new n(t||document.createTextNode(e),e);return t||(r.flags|=2),r}},Vs=class n extends mt{constructor(e,t,r,i){super(e,t,i),this.widget=r}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,r){let i=this.widget.coordsAt(this.dom,e,t);if(i)return i;if(r)return Od(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let s=this.dom.getClientRects(),o=null;if(!s.length)return null;let a=this.flags&16?!0:this.flags&32?!1:e>0;for(let l=a?s.length-1:0;o=s[l],!(e>0?l==0:l==s.length-1||o.top<o.bottom);l+=a?-1:1);return Od(o,!a)}}get overrideDOMText(){if(!this.length)return De.empty;let{root:e}=this;if(!e)return De.empty;let t=this.posAtStart;return e.view.state.doc.slice(t,t+this.length)}destroy(){super.destroy(),this.widget.destroy(this.dom)}static of(e,t,r,i,s){return s||(s=e.toDOM(t),e.editable||(s.contentEditable="false")),new n(s,r,e,i)}},Bo=class extends mt{constructor(e){let t=document.createElement("img");t.className="cm-widgetBuffer",t.setAttribute("aria-hidden","true"),super(t,0,e)}get isHidden(){return!0}get overrideDOMText(){return De.empty}coordsIn(e,t,r){let i=this.dom.getBoundingClientRect();return r==null?i:Od(i,t>0==r)}},Ip=class{constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,r){let{tile:i,index:s,beforeBreak:o,parents:a}=this;for(;e||t>0;)if(i.isComposite())if(o){if(!e)break;r&&r.break(),e--,o=!1}else if(s==i.children.length){if(!e&&!a.length)break;r&&r.leave(i),o=!!i.breakAfter,{tile:i,index:s}=a.pop(),s++}else{let l=i.children[s],c=l.breakAfter;(t>0?l.length<=e:l.length<e)&&(!r||r.skip(l,0,l.length)!==!1||!l.isComposite)?(o=!!c,s++,e-=l.length):(a.push({tile:i,index:s}),i=l,s=0,r&&l.isComposite()&&r.enter(l))}else{let l=i.length;if(s<l&&e){let c=Math.min(e,l-s);r&&r.skip(i,s,s+c),e-=c,s+=c}if(s==l)o=!!i.breakAfter,{tile:i,index:s}=a.pop(),s++;else if(!e)break}return this.tile=i,this.index=s,this.beforeBreak=o,this}get root(){return this.parents.length?this.parents[0].tile:this.tile}},Xp=class{constructor(e,t,r,i){this.from=e,this.to=t,this.wrapper=r,this.rank=i}},zp=class{constructor(e,t,r){this.cache=e,this.root=t,this.blockWrappers=r,this.curLine=null,this.lastBlock=null,this.afterWidget=null,this.pos=0,this.wrappers=[],this.wrapperPos=0}addText(e,t,r,i){var s;this.flushBuffer();let o=this.ensureMarks(t,r),a=o.lastChild;if(a&&a.isText()&&!(a.flags&8)&&a.length+e.length<512){this.cache.reused.set(a,2);let l=o.children[o.children.length-1]=new zs(a.dom,a.text+e);l.parent=o}else o.append(i||zs.of(e,(s=this.cache.find(zs))===null||s===void 0?void 0:s.dom));this.pos+=e.length,this.afterWidget=null}addComposition(e,t){let r=this.curLine;r.dom!=t.line.dom&&(r.setDOM(this.cache.reused.has(t.line)?Sp(t.line.dom):t.line.dom),this.cache.reused.set(t.line,2));let i=r;for(let a=t.marks.length-1;a>=0;a--){let l=t.marks[a],c=i.lastChild;if(c instanceof An&&c.mark.eq(l.mark))c.dom!=l.dom&&c.setDOM(Sp(l.dom)),i=c;else{if(this.cache.reused.get(l)){let h=mt.get(l.dom);h&&h.setDOM(Sp(l.dom))}let d=An.of(l.mark,l.dom);i.append(d),i=d}this.cache.reused.set(l,2)}let s=mt.get(e.text);s&&this.cache.reused.set(s,2);let o=new zs(e.text,e.text.nodeValue);o.flags|=8,this.pos=e.range.toB,i.append(o)}addInlineWidget(e,t,r){let i=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);i||this.flushBuffer();let s=this.ensureMarks(t,r);!i&&!(e.flags&16)&&s.append(this.getBuffer(1)),s.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,r){this.flushBuffer(),this.ensureMarks(t,r).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var r;e||(e=Av);let i=No.start(e,t||((r=this.cache.find(No))===null||r===void 0?void 0:r.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=i)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var r;let i=this.curLine;for(let s=e.length-1;s>=0;s--){let o=e[s],a;if(t>0&&(a=i.lastChild)&&a instanceof An&&a.mark.eq(o))i=a,t--;else{let l=An.of(o,(r=this.cache.find(An,c=>c.mark.eq(o)))===null||r===void 0?void 0:r.dom);i.append(l),i=l,t=0}}return i}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!PS(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(ae.ios&&PS(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(vp,0,32)||new Vs(vp.toDOM(),0,vp,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to<this.pos&&this.wrappers.splice(e,1);for(let e=this.blockWrappers;e.value&&e.from<=this.pos;e.next())if(e.to>=this.pos){let t=e.rank*102+e.value.rank,r=new Xp(e.from,e.to,e.value,t),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-r.rank||this.wrappers[i-1].to-r.to)<0;)i--;this.wrappers.splice(i,0,r)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let r of this.wrappers){let i=t.lastChild;if(r.from<this.pos&&i instanceof Pi&&i.wrapper.eq(r.wrapper))t=i;else{let s=Pi.of(r.wrapper,(e=this.cache.find(Pi,o=>o.wrapper.eq(r.wrapper)))===null||e===void 0?void 0:e.dom);t.append(s),t=s}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),r=this.cache.find(Bo,void 0,1);return r&&(r.flags=t),r||new Bo(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Wp=class{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:i,lineBreak:s,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=i;let a=this.textOff=Math.min(e,i.length);return s?null:i.slice(0,a)}let t=Math.min(this.text.length,this.textOff+e),r=this.text.slice(this.textOff,t);return this.textOff=t,r}},yd=[Vs,No,zs,An,Bo,Pi,Wo];for(let n=0;n<yd.length;n++)yd[n].bucket=n;var Np=class{constructor(e){this.view=e,this.buckets=yd.map(()=>[]),this.index=yd.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,r=this.buckets[t];r.length<6?r.push(e):r[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,r=2){let i=e.bucket,s=this.buckets[i],o=this.index[i];for(let a=0;a<s.length;a++){let l=(a+o)%s.length,c=s[l];if((!t||t(c))&&!this.reused.has(c))return s.splice(l,1),l<o&&this.index[i]--,this.reused.set(c,r),c}return null}findWidget(e,t,r){let i=this.buckets[0];if(i.length)for(let s=0,o=0;;s++){if(s==i.length){if(o)return null;o=1,s=0}let a=i[s];if(!this.reused.has(a)&&(o==0?a.widget.compare(e):a.widget.constructor==e.constructor&&e.updateDOM(a.dom,this.view,a.widget)))return i.splice(s,1),s<this.index[0]&&this.index[0]--,a.widget==e&&a.length==t&&(a.flags&497)==r?(this.reused.set(a,1),a):(this.reused.set(a,2),new Vs(a.dom,t,e,a.flags&-498|r))}}reuse(e){return this.reused.set(e,1),e}maybeReuse(e,t=2){if(!this.reused.has(e))return this.reused.set(e,t),e.dom}clear(){for(let e=0;e<this.buckets.length;e++)this.buckets[e].length=this.index[e]=0}},Bp=class{constructor(e,t,r,i,s){this.view=e,this.decorations=i,this.disallowBlockEffectsFor=s,this.openWidget=!1,this.openMarks=0,this.cache=new Np(e),this.text=new Wp(e.state.doc),this.builder=new zp(this.cache,new Wo(e,e.contentDOM),$e.iter(r)),this.cache.reused.set(t,2),this.old=new Ip(t),this.reuseWalker={skip:(o,a,l)=>{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,t){let r=t&&this.getCompositionContext(t.text);for(let i=0,s=0,o=0;;){let a=o<e.length?e[o++]:null,l=a?a.fromA:this.old.root.length;if(l>i){let c=l-i;this.preserve(c,!o,!a),i=l,s+=c}if(!a)break;t&&a.fromA<=t.range.fromA&&a.toA>=t.range.toA?(this.forward(a.fromA,t.range.fromA,t.range.fromA<t.range.toA?1:-1),this.emit(s,t.range.fromB),this.builder.flushBuffer(),this.cache.clear(),this.builder.addComposition(t,r),this.text.skip(t.range.toB-t.range.fromB),this.forward(t.range.fromA,a.toA),this.emit(t.range.toB,a.toB)):(this.forward(a.fromA,a.toA),this.emit(s,a.toB)),s=a.toB,i=a.toA}return this.builder.curLine&&this.builder.endLine(),this.builder.root}preserve(e,t,r){let i=M_(this.old),s=this.openMarks;this.old.advance(e,r?1:-1,{skip:(o,a,l)=>{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(l-a);else{let c=l>0||a<o.length?Vs.of(o.widget,this.view,l-a,o.flags&496,this.cache.maybeReuse(o)):this.cache.reuse(o);c.flags&256?(c.flags&=-2,this.builder.addBlockWidget(c)):(this.builder.ensureLine(null),this.builder.addInlineWidget(c,i,s),s=i.length)}else if(o.isText())this.builder.ensureLine(null),!a&&l==o.length&&!this.cache.reused.has(o)?this.builder.addText(o.text,i,s,this.cache.reuse(o)):(this.cache.add(o),this.builder.addText(o.text.slice(a,l),i,s)),s=i.length;else if(o.isLine())o.flags&=-2,this.cache.reused.set(o,1),this.builder.addLine(o);else if(o instanceof Bo)this.cache.add(o);else if(o instanceof An)this.builder.ensureLine(null),this.builder.addMark(o,i,s),this.cache.reused.set(o,1),s=i.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 An&&i.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?i.length&&(i.length=s=0):o instanceof An&&(i.shift(),s=Math.min(s,i.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let r=null,i=this.builder,s=-1,o=$e.spans(this.decorations,e,t,{point:(a,l,c,d,h,u)=>{if(c instanceof Ns){if(this.disallowBlockEffectsFor[u]){if(c.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(s=d.length,h>d.length)i.continueWidget(l-a);else{let f=c.widget||(c.block?Gi.block:Gi.inline),m=E_(c),O=this.cache.findWidget(f,l-a,m)||Vs.of(f,this.view,l-a,m);c.block?(c.startSide>0&&i.addLineStartIfNotCovered(r),i.addBlockWidget(O)):(i.ensureLine(r),i.addInlineWidget(O,d,h))}r=null}else r=R_(r,c);l>a&&this.text.skip(l-a)},span:(a,l,c,d)=>{for(let h=a;h<l;){let u=this.text.next(Math.min(512,l-h));u==null?(i.addLineStartIfNotCovered(r),i.addBreak(),h++):(i.ensureLine(r),i.addText(u,c,h==a?d:c.length),h+=u.length),r=null}s=c.length}});s>-1&&(this.openWidget=o>s),this.openWidget||i.addLineStartIfNotCovered(r),this.openMarks=o}forward(e,t,r=1){t-e<=10?this.old.advance(t-e,r,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,r,this.reuseWalker))}getCompositionContext(e){let t=[],r=null;for(let i=e.parentNode;;i=i.parentNode){let s=mt.get(i);if(i==this.view.contentDOM)break;s instanceof An?t.push(s):s!=null&&s.isLine()?r=s:s instanceof Pi||(i.nodeName=="DIV"&&!r&&i!=this.view.contentDOM?r=new No(i,Av):r||t.push(An.of(new ol({tagName:i.nodeName.toLowerCase(),attributes:f_(i)}),i)))}return{line:r,marks:t}}};function PS(n,e){let t=r=>{for(let i of r.children)if((e?i.isText():i.length)||t(i))return!0;return!1};return t(n)}function E_(n){let e=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(e|=256),e}var Av={class:"cm-line"};function R_(n,e){let t=e.spec.attributes,r=e.spec.class;return!t&&!r||(n||(n={class:"cm-line"}),t&&wm(t,n),r&&(n.class+=" "+r)),n}function M_(n){let e=[];for(let t=n.parents.length;t>1;t--){let r=t==n.parents.length?n.tile:n.parents[t].tile;r instanceof An&&e.push(r.mark)}return e}function Sp(n){let e=mt.get(n);return e&&e.setDOM(n.cloneNode()),n}var Gi=class extends Ct{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};Gi.inline=new Gi("span");Gi.block=new Gi("div");var vp=new class extends Ct{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},Sd=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=J.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 Wo(e,e.contentDOM),this.updateInner([new zr(0,0,0,e.state.doc.length)],null)}update(e){var t;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:d,toA:h})=>h<this.minWidthFrom||d>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let i=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?i=this.domChanged.newSel.head:!N_(e.changes,this.hasComposition)&&!e.selectionSet&&(i=e.state.selection.main.head));let s=i>-1?D_(this.view,e.changes,i):null;if(this.domChanged=null,this.hasComposition){let{from:d,to:h}=this.hasComposition;r=new zr(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(ae.ie||ae.chrome)&&!s&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,a=this.blockWrappers;this.updateDeco();let l=X_(o,this.decorations,e.changes);l.length&&(r=zr.extendWithRanges(r,l));let c=z_(a,this.blockWrappers,e.changes);return c.length&&(r=zr.extendWithRanges(r,c)),s&&!r.some(d=>d.fromA<=s.range.fromA&&d.toA>=s.range.toA)&&(r=s.range.addToSet(r.slice())),this.tile.flags&2&&r.length==0?!1:(this.updateInner(r,s),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:r}=this.view;r.ignore(()=>{if(t||e.length){let o=this.tile,a=new Bp(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&mt.get(t.text)&&a.cache.reused.set(mt.get(t.text),2),this.tile=a.run(e,t),Vp(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 s=ae.chrome||ae.ios?{node:r.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(s),s&&(s.written||r.selectionRange.focusNode!=s.node||!this.tile.dom.contains(s.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let i=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let s of this.tile.children)s.isWidget()&&s.widget instanceof tl&&i.push(s.dom);r.updateGaps(i)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let r of t.effects)r.is(Pv)&&(this.editContextFormatting=r.value)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let{dom:r}=this.tile,i=this.view.root.activeElement,s=i==r,o=!s&&!(this.view.state.facet(xi)||r.tabIndex>-1)&&Ha(r,this.view.observer.selectionRange)&&!(i&&r.contains(i));if(!(s||t||o))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c,d;if(l.empty?d=c=this.inlineDOMNearPos(l.anchor,l.assoc||1):(d=this.inlineDOMNearPos(l.head,l.head==l.from?1:-1),c=this.inlineDOMNearPos(l.anchor,l.anchor==l.from?1:-1)),ae.gecko&&l.empty&&!this.hasComposition&&L_(c)){let u=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(u,c.node.childNodes[c.offset]||null)),c=d=new Jr(u,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!Ka(c.node,c.offset,h.anchorNode,h.anchorOffset)||!Ka(d.node,d.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{ae.android&&ae.chrome&&r.contains(h.focusNode)&&W_(h.focusNode,r)&&(r.blur(),r.focus({preventScroll:!0}));let u=ll(this.view.root);if(u)if(l.empty){if(ae.gecko){let f=Z_(c.node,c.offset);if(f&&f!=3){let m=(f==1?lv:cv)(c.node,c.offset);m&&(c=new Jr(m.node,m.offset))}}u.collapse(c.node,c.offset),l.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=l.bidiLevel)}else if(u.extend){u.collapse(c.node,c.offset);try{u.extend(d.node,d.offset)}catch(f){}}else{let f=document.createRange();l.anchor>l.head&&([c,d]=[d,c]),f.setEnd(d.node,d.offset),f.setStart(c.node,c.offset),u.removeAllRanges(),u.addRange(f)}o&&this.view.root.activeElement==r&&(r.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Jr(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Jr(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&Ka(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,r=ll(e.root),{anchorNode:i,anchorOffset:s}=e.observer.selectionRange;if(!r||!t.empty||!t.assoc||!r.modify)return;let o=this.lineAt(t.head,t.assoc);if(!o)return;let a=o.posAtStart;if(t.head==a||t.head==a+o.length)return;let l=this.coordsAt(t.head,-1),c=this.coordsAt(t.head,1);if(!l||!c||l.bottom>c.top)return;let d=this.domAtPos(t.head+t.assoc,t.assoc);r.collapse(d.node,d.offset),r.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let h=e.observer.selectionRange;e.docView.posFromDOM(h.anchorNode,h.anchorOffset)!=t.from&&r.collapse(i,s)}posFromDOM(e,t){let r=this.tile.nearest(e);if(!r)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let i=r.posAtStart;if(r.isComposite()){let s;if(e==r.dom)s=r.dom.childNodes[t];else{let o=ki(e)==0?0:t==0?-1:1;for(;;){let a=e.parentNode;if(a==r.dom)break;o==0&&a.firstChild!=a.lastChild&&(e==a.firstChild?o=-1:o=1),e=a}o<0?s=e:s=e.nextSibling}if(s==r.dom.firstChild)return i;for(;s&&!mt.get(s);)s=s.nextSibling;if(!s)return i+r.length;for(let o=0,a=i;;o++){let l=r.children[o];if(l.dom==s)return a;a+=l.length+l.breakAfter}}else return r.isText()?e==r.dom?i+t:i+(t?r.length:0):i}domAtPos(e,t){let{tile:r,offset:i}=this.tile.resolveBlock(e,t);return r.isWidget()?r.domPosFor(i,t):r.domIn(i,t)}inlineDOMNearPos(e,t){let r,i=-1,s=!1,o,a=-1,l=!1;return this.tile.blockTiles((c,d)=>{if(c.isWidget()){if(c.flags&32&&d>=e)return!0;c.flags&16&&(s=!0)}else{let h=d+c.length;if(d<=e&&(r=c,i=e-d,s=h<e),h>=e&&!o&&(o=c,a=e-d,l=d>e),d>e&&o)return!0}}),!r&&!o?this.domAtPos(e,t):(s&&o?r=null:l&&r&&(o=null),r&&t<0||!o?r.domIn(i,t):o.domIn(a,t))}coordsAt(e,t,r){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.widget instanceof tl?null:i.coordsInWidget(s,t,!0):i.coordsIn(s,t,r)}lineAt(e,t){let{tile:r}=this.tile.resolveBlock(e,t);return r.isLine()?r:null}coordsForChar(e){let{tile:t,offset:r}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function i(s,o){if(s.isComposite())for(let a of s.children){if(a.length>=o){let l=i(a,o);if(l)return l}if(o-=a.length,o<0)break}else if(s.isText()&&o<s.length){let a=Pt(s.text,o);if(a==o)return null;let l=cl(s.dom,o,a).getClientRects();for(let c=0;c<l.length;c++){let d=l[c];if(c==l.length-1||d.top<d.bottom&&d.left<d.right)return d}}return null}return i(t,r)}measureVisibleLineHeights(e){let t=[],{from:r,to:i}=e,s=this.view.contentDOM.clientWidth,o=s>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,a=-1,l=this.view.textDirection==qe.LTR,c=0,d=(h,u,f)=>{for(let m=0;m<h.children.length&&!(u>i);m++){let O=h.children[m],S=u+O.length,x=O.dom.getBoundingClientRect(),{height:D}=x;if(f&&!m&&(c+=x.top-f.top),O instanceof Pi)S>r&&d(O,u,x);else if(u>=r&&(c>0&&t.push(-c),t.push(D+c),c=0,o)){let M=O.dom.lastChild,Z=M?cd(M):[];if(Z.length){let k=Z[Z.length-1],w=l?k.right-x.left:x.right-k.left;w>a&&(a=w,this.minWidth=s,this.minWidthFrom=u,this.minWidthTo=S)}}f&&m==h.children.length-1&&(c+=f.bottom-x.bottom),u=S+O.breakAfter}};return d(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?qe.RTL:qe.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let a=0,l;for(let c of o.children){if(!c.isText()||/[^ -~]/.test(c.text))return;let d=cd(c.dom);if(d.length!=1)return;a+=d[0].width,l=d[0].height}if(a)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:a/o.length,textHeight:l}}});if(e)return e;let t=document.createElement("div"),r,i,s;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let o=cd(t.firstChild)[0];r=t.getBoundingClientRect().height,i=o&&o.width?o.width/27:7,s=o&&o.height?o.height:r,t.remove()}),{lineHeight:r,charWidth:i,textHeight:s}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let r=0,i=0;;i++){let s=i==t.viewports.length?null:t.viewports[i],o=s?s.from-1:this.view.state.doc.length;if(o>r){let a=(t.lineBlockAt(o).bottom-t.lineBlockAt(r).top)/this.view.scaleY;e.push(J.replace({widget:new tl(a),block:!0,inclusive:!0,isBlockGap:!0}).range(r,o))}if(!s)break;r=s.to+1}return J.set(e)}updateDeco(){let e=1,t=this.view.state.facet(Rd).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),r=!1,i=this.view.state.facet(Tm).map((s,o)=>{let a=typeof s=="function";return a&&(r=!0),a?s(this.view):s});for(i.length&&(this.dynamicDecorationMap[e++]=r,t.push($e.join(i))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];e<this.decorations.length;)this.dynamicDecorationMap[e++]=!1;this.blockWrappers=this.view.state.facet($v).map(s=>typeof s=="function"?s(this.view):s)}scrollIntoView(e){if(e.isSnapshot){let c=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=c.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let c of this.view.state.facet(xv))try{if(c(this.view,e.range,e))return!0}catch(d){jn(this.view.state,d,"scroll handler")}let{range:t}=e,r=this.coordsAt(t.head,t.assoc||(t.head>t.anchor?-1:1)),i;if(!r)return;!t.empty&&(i=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(r={left:Math.min(r.left,i.left),top:Math.min(r.top,i.top),right:Math.max(r.right,i.right),bottom:Math.max(r.bottom,i.bottom)});let s=Am(this.view),o={left:r.left-s.left,top:r.top-s.top,right:r.right+s.right,bottom:r.bottom+s.bottom},{offsetWidth:a,offsetHeight:l}=this.view.scrollDOM;if(g_(this.view.scrollDOM,o,t.head<t.anchor?-1:1,e.x,e.y,Math.max(Math.min(e.xMargin,a),-a),Math.max(Math.min(e.yMargin,l),-l),this.view.textDirection==qe.LTR),window.visualViewport&&window.innerHeight-window.visualViewport.height>1&&(r.top>window.visualViewport.offsetTop+window.visualViewport.height||r.bottom<window.visualViewport.offsetTop)){let c=this.view.docView.lineAt(t.head,1);if(c){let d=iv(c.dom);c.dom.scrollIntoView({block:"nearest"}),sv(d,!1)}}}lineHasWidget(e){let t=r=>r.isWidget()||r.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){Vp(this.tile)}};function Vp(n,e){let t=e==null?void 0:e.get(n);if(t!=1){t==null&&n.destroy();for(let r of n.children)Vp(r,e)}}function L_(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Cv(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let r=lv(t.focusNode,t.focusOffset),i=cv(t.focusNode,t.focusOffset),s=r||i;if(i&&r&&i.node!=r.node){let a=mt.get(i.node);if(!a||a.isText()&&a.text!=i.node.nodeValue)s=i;else if(n.docView.lastCompositionAfterCursor){let l=mt.get(r.node);!l||l.isText()&&l.text!=r.node.nodeValue||(s=i)}}if(n.docView.lastCompositionAfterCursor=s!=r,!s)return null;let o=e-s.offset;return{from:o,to:o+s.node.nodeValue.length,node:s.node}}function D_(n,e,t){let r=Cv(n,t);if(!r)return null;let{node:i,from:s,to:o}=r,a=i.nodeValue;if(/[\n\r]/.test(a)||n.state.doc.sliceString(r.from,r.to)!=a)return null;let l=e.invertedDesc;return{range:new zr(l.mapPos(s),l.mapPos(o),s,o),text:i}}function Z_(n,e){return n.nodeType!=1?0:(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e<n.childNodes.length&&n.childNodes[e].contentEditable=="false"?2:0)}var I_=class{constructor(){this.changes=[]}compareRange(e,t){Io(e,t,this.changes)}comparePoint(e,t){Io(e,t,this.changes)}boundChange(e){Io(e,e,this.changes)}};function X_(n,e,t){let r=new I_;return $e.compare(n,e,t,r),r.changes}var Fp=class{constructor(){this.changes=[]}compareRange(e,t){Io(e,t,this.changes)}comparePoint(){}boundChange(e){Io(e,e,this.changes)}};function z_(n,e,t){let r=new Fp;return $e.compare(n,e,t,r),r.changes}function W_(n,e){for(let t=n;t&&t!=e;t=t.assignedSlot||t.parentNode)if(t.nodeType==1&&t.contentEditable=="false")return!0;return!1}function N_(n,e){let t=!1;return e&&n.iterChangedRanges((r,i)=>{r<e.to&&i>e.from&&(t=!0)}),t}var tl=class extends Ct{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function B_(n,e,t=1){let r=n.charCategorizer(e),i=n.doc.lineAt(e),s=e-i.from;if(i.length==0)return z.cursor(e);s==0?t=1:s==i.length&&(t=-1);let o=s,a=s;t<0?o=Pt(i.text,s,!1):a=Pt(i.text,s);let l=r(i.text.slice(o,a));for(;o>0;){let c=Pt(i.text,o,!1);if(r(i.text.slice(c,o))!=l)break;o=c}for(;a<i.length;){let c=Pt(i.text,a);if(r(i.text.slice(a,c))!=l)break;a=c}return z.undirectionalRange(o+i.from,a+i.from)}function V_(n,e,t,r,i){let s=Math.round((r-e.left)*n.defaultCharacterWidth);if(n.lineWrapping&&t.height>n.defaultLineHeight*1.5){let a=n.viewState.heightOracle.textHeight,l=Math.floor((i-t.top-(n.defaultLineHeight-a)*.5)/a);s+=l*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+Kc(o,s,n.state.tabSize)}function Yp(n,e,t){let r=n.lineBlockAt(e);if(Array.isArray(r.type)){let i;for(let s of r.type){if(s.from>e)break;if(!(s.to<e)){if(s.from<e&&s.to>e)return s;(!i||s.type==Ht.Text&&(i.type!=s.type||(t<0?s.from<e:s.to>e)))&&(i=s)}}return i||r}return r}function F_(n,e,t,r){let i=Yp(n,e.head,e.assoc||-1),s=!r||i.type!=Ht.Text||!(n.lineWrapping||i.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>i.from?e.head-1:e.head);if(s){let o=n.dom.getBoundingClientRect(),a=n.textDirectionAt(i.from),l=n.posAtCoords({x:t==(a==qe.LTR)?o.right-1:o.left+1,y:(s.top+s.bottom)/2});if(l!=null)return z.cursor(l,t?-1:1)}return z.cursor(t?i.to:i.from,t?-1:1)}function kS(n,e,t,r){let i=n.state.doc.lineAt(e.head),s=n.bidiSpans(i),o=n.textDirectionAt(i.from);for(let a=e,l=null;;){let c=$_(i,s,o,a,t),d=pv;if(!c){if(i.number==(t?n.state.doc.lines:1))return a;d=`
`,i=n.state.doc.line(i.number+(t?1:-1)),s=n.bidiSpans(i),c=n.visualLineSide(i,!t)}if(l){if(!l(d))return a}else{if(!r)return c;l=r(d)}a=c}}function Y_(n,e,t){let r=n.state.charCategorizer(e),i=r(t);return s=>{let o=r(s);return i==et.Space&&(i=o),i==o}}function j_(n,e,t,r){let i=e.head,s=t?1:-1;if(i==(t?n.state.doc.length:0))return z.cursor(i,e.assoc);let o=e.goalColumn,a,l=n.contentDOM.getBoundingClientRect(),c=n.coordsAtPos(i,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),d=n.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let m=n.viewState.lineBlockAt(i);o==null&&(o=Math.min(l.right-l.left,n.defaultCharacterWidth*(i-m.from))),a=(s<0?m.top:m.bottom)+d}let h=l.left+o,u=n.viewState.heightOracle.textHeight>>1,f=r!=null?r:u;for(let m=0;;m+=u){let O=a+(f+m)*s,S=jp(n,{x:h,y:O},!1,s);if(t?O>l.bottom:O<l.top)return z.cursor(S.pos,S.assoc);let x=n.coordsAtPos(S.pos,S.assoc),D=x?(x.top+x.bottom)/2:0;if(!x||(t?D>a:D<a))return z.cursor(S.pos,S.assoc,void 0,o)}}function nl(n,e,t){for(;;){let r=0;for(let i of n)i.between(e-1,e+1,(s,o,a)=>{if(e>s&&e<o){let l=r||t||(e-s<o-e?-1:1);e=l<0?s:o,r=l}});if(!r)return e}}function _v(n,e){let t=null;for(let r=0;r<e.ranges.length;r++){let i=e.ranges[r],s=null;if(i.empty){let o=nl(n,i.from,0);o!=i.from&&(s=z.cursor(o,-1))}else{let o=nl(n,i.from,-1),a=nl(n,i.to,1);(o!=i.from||a!=i.to)&&(i.undirectional?s=z.undirectionalRange(i.from,i.to):s=z.range(i.from==i.anchor?o:a,i.from==i.head?o:a))}s&&(t||(t=e.ranges.slice()),t[r]=s)}return t?z.create(t,e.mainIndex):e}function wp(n,e,t){let r=nl(n.state.facet(ul).map(i=>i(n)),t.from,e.head>t.from?-1:1);return r==t.from?t:z.cursor(r,r<t.from?1:-1)}var Or=class{constructor(e,t){this.pos=e,this.assoc=t}};function jp(n,e,t,r){let i=n.contentDOM.getBoundingClientRect(),s=i.top+n.viewState.paddingTop,{x:o,y:a}=e,l=a-s,c;for(;;){if(l<0)return new Or(0,1);if(l>n.viewState.docHeight)return new Or(n.state.doc.length,-1);if(c=n.elementAtHeight(l),r==null)break;if(c.type==Ht.Text){if(r<0?c.to<n.viewport.from:c.from>n.viewport.to)break;let u=n.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(u&&(r<0?u.top<=l+s:u.bottom>=l+s))break}let h=n.viewState.heightOracle.textHeight/2;l=r>0?c.bottom+h:c.top-h}if(n.viewport.from>=c.to||n.viewport.to<=c.from){if(t)return null;if(c.type==Ht.Text){let h=V_(n,i,c,o,a);return new Or(h,h==c.from?1:-1)}}if(c.type!=Ht.Text)return l<(c.top+c.bottom)/2?new Or(c.from,1):new Or(c.to,-1);let d=n.docView.lineAt(c.from,2);return(!d||d.length!=c.length)&&(d=n.docView.lineAt(c.from,-2)),new Up(n,o,a,n.textDirectionAt(c.from)).scanTile(d,c.from)}var Up=class{constructor(e,t,r,i){this.view=e,this.x=t,this.y=r,this.baseDir=i,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to<e)&&(this.line=this.view.state.doc.lineAt(e),this.spans=this.view.bidiSpans(this.line)),this}baseDirAt(e,t){let{line:r,spans:i}=this.bidiSpansAt(e);return i[br.find(i,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:i}=this.bidiSpansAt(e);return i[br.find(i,e-r.from,-1,t)].dir}bidiIn(e,t){let{spans:r,line:i}=this.bidiSpansAt(e);return r.length>1||r.length&&(r[0].level!=this.baseDir||r[0].to+i.from<t)}scan(e,t,r=!1){let i=0,s=e.length-1,o=new Set,a=this.bidiIn(e[0],e[s]),l,c,d=-1,h=1e9,u;e:for(;i<s;){let m=s-i,O=i+s>>1;t:if(o.has(O)){for(let D=1;D<m;D++){let M=O+D;if(M>=s&&(M-=m),!o.has(M)){O=M;break t}}break e}o.add(O);let S=t(O),x=0;if(S)for(let D=0;D<S.length;D++){let M=S[D];if(!(M.width==0&&S.length>1))if(M.bottom<this.y)(!l||l.bottom<M.bottom)&&(l=M),x=1;else if(M.top>this.y)(!c||c.top>M.top)&&(c=M),x=-1;else{let Z=M.left>this.x?this.x-M.left:M.right<this.x?this.x-M.right:0,k=Math.abs(Z);k<h&&(d=O,h=k,u=M),Z&&(x=Z<0==(this.baseDir==qe.LTR)?-1:1)}}x==-1&&(!a||this.baseDirAt(e[O],1))?s=O:x==1&&(!a||this.baseDirAt(e[O+1],-1))&&(i=O+1)}if(!u){if(!c&&!l)return{i:0,after:!1};let m=l&&(!c||this.y-l.bottom<c.top-this.y)?l:c;return this.y=(m.top+m.bottom)/2,this.scan(e,t,!0)}if(h&&!r){let{top:m,bottom:O}=u;if(l&&l.bottom>(m+m+O)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(m+O+O)/3)return this.y=c.top+1,this.scan(e,t,!0)}let f=(a?this.dirAt(e[d],1):this.baseDir)==qe.LTR;return{i:d,after:this.x>(u.left+u.right)/2==f}}scanText(e,t){let r=[];for(let s=0;s<e.length;s=Pt(e.text,s))r.push(t+s);r.push(t+e.length);let i=this.scan(r,s=>{let o=r[s]-t,a=r[s+1]-t;return cl(e.dom,o,a).getClientRects()});return i.after?new Or(r[i.i+1],-1):new Or(r[i.i],1)}scanTile(e,t){if(!e.length)return new Or(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let r=[t];for(let a=0,l=t;a<e.children.length;a++)r.push(l+=e.children[a].length);let i=this.scan(r,a=>{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:cl(l.dom,0,l.length)).getClientRects()}),s=e.children[i.i],o=r[i.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):i.after?new Or(r[i.i+1],-1):new Or(o,1)}},Ro="\uFFFF",qp=class{constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(Me.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Ro}readRange(e,t){if(!e)return this;let r=e.parentNode;for(let i=e;;){this.findPointBefore(r,i);let s=this.text.length;this.readNode(i);let o=mt.get(i),a=i.nextSibling;if(a==t){o!=null&&o.breakAfter&&!a&&r!=this.view.contentDOM&&this.lineBreak();break}let l=mt.get(a);(o&&l?o.breakAfter:(o?o.breakAfter:gd(i))||gd(a)&&(i.nodeName!="BR"||o!=null&&o.isWidget())&&this.text.length>s)&&!q_(a,t)&&this.lineBreak(),i=a}return this.findPointBefore(r,t),this}readTextNode(e){let t=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,t.length));for(let r=0,i=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,o=1,a;if(this.lineSeparator?(s=t.indexOf(this.lineSeparator,r),o=this.lineSeparator.length):(a=i.exec(t))&&(s=a.index,o=a[0].length),this.append(t.slice(r,s<0?t.length:s)),s<0)break;if(this.lineBreak(),o>1)for(let l of this.points)l.node==e&&l.pos>this.text.length&&(l.pos-=o-1);r=s+o}}readNode(e){let t=mt.get(e),r=t&&t.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let i=r.iter();!i.next().done;)i.lineBreak?this.lineBreak():this.append(i.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==t&&(r.pos=this.text.length)}findPointInside(e,t){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(U_(e,r.node,r.offset)?t:0))}};function U_(n,e,t){for(;;){if(!e||t<ki(e))return!1;if(e==n)return!0;t=qi(e)+1,e=e.parentNode}}function q_(n,e){let t;for(;!(n==e||!n);n=n.nextSibling){let r=mt.get(n);if(!(r!=null&&r.isWidget()))return!1;r&&(t||(t=[])).push(r)}if(t)for(let r of t){let i=r.overrideDOMText;if(i!=null&&i.length)return!1}return!0}var vd=class{constructor(e,t){this.node=e,this.offset=t,this.pos=-1}},Gp=class{constructor(e,t,r,i){this.typeOver=i,this.bounds=null,this.text="",this.domChanged=t>-1;let{impreciseHead:s,impreciseAnchor:o}=e.docView,a=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=Ev(e.docView.tile,t,r,0))){let l=s||o?[]:H_(e),c=new qp(l,e);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=K_(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=s&&s.node==l.focusNode&&s.offset==l.focusOffset||!Ep(e.contentDOM,l.focusNode)?a.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!Ep(e.contentDOM,l.anchorNode)?a.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((ae.ios||ae.chrome)&&c!=d&&Math.min(c,d)<=a.main.from&&Math.max(c,d)>=a.main.to&&(h.from>0||h.to<e.state.doc.length)){let u=Math.min(c,d),f=Math.max(c,d),m=h.from-u,O=h.to-f;(m==0||m==1||u==0)&&(O==0||O==-1||f==e.state.doc.length)&&(c=0,d=e.state.doc.length)}if(e.inputState.composing>-1&&a.ranges.length>1)this.newSel=a.replaceRange(z.range(d,c));else if(e.lineWrapping&&d==c&&!(a.main.empty&&a.main.head==c)&&e.inputState.lastTouchTime>Date.now()-100){let u=e.coordsAtPos(c,-1),f=0;u&&(f=e.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=z.create([z.cursor(c,f)])}else this.newSel=z.single(d,c)}}};function Ev(n,e,t,r){if(n.isComposite()){let i=-1,s=-1,o=-1,a=-1;for(let l=0,c=r,d=r;l<n.children.length;l++){let h=n.children[l],u=c+h.length;if(c<e&&u>t)return Ev(h,e,t,c);if(u>=e&&i==-1&&(i=l,s=c),c>t&&h.dom.parentNode==n.dom){o=l,a=d;break}d=u,c=u+h.breakAfter}return{from:s,to:a<0?r+n.length:a,startDOM:(i?n.children[i-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o<n.children.length&&o>=0?n.children[o].dom:null}}else return n.isText()?{from:r,to:r+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Rv(n,e){let t,{newSel:r}=e,{state:i}=n,s=i.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(o===8||ae.android&&e.text.length<l-a)&&(c=s.to,d="end");let h=i.doc.sliceString(a,l,Ro),u,f;!s.empty&&s.from>=a&&s.to<=l&&(e.typeOver||h!=e.text)&&h.slice(0,s.from-a)==e.text.slice(0,s.from-a)&&h.slice(s.to-a)==e.text.slice(u=e.text.length-(h.length-(s.to-a)))?t={from:s.from,to:s.to,insert:De.of(e.text.slice(s.from-a,u).split(Ro))}:(f=Mv(h,e.text,c-a,d))&&(ae.chrome&&o==13&&f.toB==f.from+2&&e.text.slice(f.from,f.toB)==Ro+Ro&&f.toB--,t={from:a+f.from,to:a+f.toA,insert:De.of(e.text.slice(f.from,f.toB).split(Ro))})}else r&&(!n.hasFocus&&i.facet(xi)||wd(r,s))&&(r=null);if(!t&&!r)return!1;if((ae.mac||ae.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(r&&t.insert.length==2&&(r=z.single(r.main.anchor-1,r.main.head-1)),t={from:t.from,to:t.to,insert:De.of([t.insert.toString().replace("."," ")])}):i.doc.lineAt(s.from).to<s.to&&n.docView.lineHasWidget(s.to)&&n.inputState.insertingTextAt>Date.now()-50?t={from:s.from,to:s.to,insert:i.toText(n.inputState.insertingText)}:ae.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==`
`&&n.lineWrapping&&(r&&(r=z.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:De.of([" "])}),t)return Cm(n,t,r,o);if(r&&!wd(r,s)){let a=!1,l="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(a=!0),l=n.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=_v(i.facet(ul).map(c=>c(n)),r))),n.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function Cm(n,e,t,r=-1){if(ae.ios&&n.inputState.flushIOSKey(e))return!0;let i=n.state.selection.main;if(ae.android&&(e.to==i.to&&(e.from==i.from||e.from==i.from-1&&n.state.sliceDoc(e.from,i.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Xo(n.contentDOM,"Enter",13)||(e.from==i.from-1&&e.to==i.to&&e.insert.length==0||r==8&&e.insert.length<e.to-e.from&&e.to>i.head)&&Xo(n.contentDOM,"Backspace",8)||e.from==i.from&&e.to==i.to+1&&e.insert.length==0&&Xo(n.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,a=()=>o||(o=G_(n,e,t));return n.state.facet(yv).some(l=>l(n,e.from,e.to,s,a))||n.dispatch(a()),!0}function G_(n,e,t){let r,i=n.state,s=i.selection.main,o=-1;if(e.from==e.to&&e.from<s.from||e.from>s.to){let l=e.from<s.from?-1:1,c=l<0?s.from:s.to,d=nl(i.facet(ul).map(h=>h(n)),c,l);e.from==d&&(o=d)}if(o>-1)r={changes:e,selection:z.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let l=s.from<e.from?i.sliceDoc(s.from,e.from):"",c=s.to>e.to?i.sliceDoc(e.to,s.to):"";r=i.replaceSelection(n.state.toText(l+e.insert.sliceString(0,void 0,n.state.lineBreak)+c))}else{let l=i.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(i.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let d=n.state.sliceDoc(e.from,e.to),h,u=t&&Cv(n,t.main.head);if(u){let m=e.insert.length-(e.to-e.from);h={from:u.from,to:u.to-m}}else h=n.state.doc.lineAt(s.head);let f=s.to-e.to;r=i.changeByRange(m=>{if(m.from==s.from&&m.to==s.to)return{changes:l,range:c||m.map(l)};let O=m.to-f,S=O-d.length;if(n.state.sliceDoc(S,O)!=d||O>=h.from&&S<=h.to)return{range:m};let x=i.changes({from:S,to:O,insert:e.insert}),D=m.to-s.to;return{changes:x,range:c?z.range(Math.max(0,c.anchor+D),Math.max(0,c.head+D)):m.map(x)}})}else r={changes:l,selection:c&&i.selection.replaceRange(c)}}let a="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,a+=".compose",n.inputState.compositionFirstChange&&(a+=".start",n.inputState.compositionFirstChange=!1)),i.update(r,{userEvent:a,scrollIntoView:!0})}function Mv(n,e,t,r){let i=Math.min(n.length,e.length),s=0;for(;s<i&&n.charCodeAt(s)==e.charCodeAt(s);)s++;if(s==i&&n.length==e.length)return null;let o=n.length,a=e.length;for(;o>0&&a>0&&n.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(r=="end"){let l=Math.max(0,s-Math.min(o,a));t-=o+l-s}if(o<s&&n.length<e.length){let l=t<=s&&t>=o?s-t:0;s-=l,a=s+(a-o),o=s}else if(a<s){let l=t<=s&&t>=a?s-t:0;s-=l,o=s+(o-a),a=s}return{from:s,toA:o,toB:a}}function H_(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:r,focusNode:i,focusOffset:s}=n.observer.selectionRange;return t&&(e.push(new vd(t,r)),(i!=t||s!=r)&&e.push(new vd(i,s))),e}function K_(n,e){if(n.length==0)return null;let t=n[0].pos,r=n.length==2?n[1].pos:t;return t>-1&&r>-1?z.single(t+e,r+e):null}function wd(n,e){return e.head==n.main.head&&e.anchor==n.main.anchor}var Hp=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,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.lastIOSMomentumScroll=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=e.hasFocus,ae.safari&&e.contentDOM.addEventListener("input",()=>null),ae.gecko&&f2(e.contentDOM.ownerDocument)}handleEvent(e){!o2(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let r=this.handlers[e];if(r){for(let i of r.observers)i(this.view,t);for(let i of r.handlers){if(t.defaultPrevented)break;if(i(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=e2(e),r=this.handlers,i=this.view.contentDOM;for(let s in t)if(s!="scroll"){let o=!t[s].handlers.length,a=r[s];a&&o!=!a.handlers.length&&(i.removeEventListener(s,this.handleEvent),a=null),a||i.addEventListener(s,this.handleEvent,{passive:o})}for(let s in r)s!="scroll"&&!t[s]&&i.removeEventListener(s,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&Dv.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),ae.android&&ae.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;if(ae.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&(Lv.some(t=>t.keyCode==e.keyCode)&&!e.ctrlKey||t2.indexOf(e.key)>-1&&e.ctrlKey)){let t={ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey,shiftKey:e.shiftKey};return t.shiftKey&&ae.ios&&!/^(off|none)$/.test(this.view.contentDOM.autocapitalize)&&J_(this.view.win)&&(t.shiftKey=!1),this.pendingIOSKey={key:e.key,keyCode:e.keyCode,mods:t},setTimeout(()=>this.flushIOSKey(),50),!0}return e.keyCode!=229&&this.view.observer.forceFlush(),!1}flushIOSKey(e){let t=this.pendingIOSKey;return!t||this.view.observer.pendingRecords().length||t.key=="Enter"&&e&&e.from<e.to&&/^\S+$/.test(e.insert.toString())?!1:(this.pendingIOSKey=void 0,Xo(this.view.contentDOM,t.key,t.keyCode,t.mods))}ignoreDuringComposition(e){return!/^key/.test(e.type)||e.synthetic?!1:this.composing>0?!0:ae.safari&&!ae.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function J_(n){return n.visualViewport?n.visualViewport.height*n.visualViewport.scale/n.document.documentElement.clientHeight<.85:!1}function $S(n,e){return(t,r)=>{try{return e.call(n,r,t)}catch(i){jn(t.state,i)}}}function e2(n){let e=Object.create(null);function t(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of n){let i=r.spec,s=i&&i.plugin.domEventHandlers,o=i&&i.plugin.domEventObservers;if(s)for(let a in s){let l=s[a];l&&t(a).handlers.push($S(r.value,l))}if(o)for(let a in o){let l=o[a];l&&t(a).observers.push($S(r.value,l))}}for(let r in Wr)t(r).handlers.push(Wr[r]);for(let r in yn)t(r).observers.push(yn[r]);return e}var Lv=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],t2="dthko",Dv=[16,17,18,20,91,92,224,225],td=6;function nd(n){return Math.max(0,n)*.7+8}function n2(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}var Kp=class{constructor(e,t,r,i){this.view=e,this.startEvent=t,this.style=r,this.mustSelect=i,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=rv(e.contentDOM),this.atoms=e.state.facet(ul).map(o=>o(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(Me.allowMultipleSelections)&&r2(e,t),this.dragging=s2(e,t)&&Xv(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&n2(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,r=0,i=0,s=0,o=this.view.win.innerWidth,a=this.view.win.innerHeight;this.scrollParents.x&&({left:i,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:s,bottom:a}=this.scrollParents.y.getBoundingClientRect());let l=Am(this.view);e.clientX-l.left<=i+td?t=-nd(i-e.clientX):e.clientX+l.right>=o-td&&(t=nd(e.clientX-o)),e.clientY-l.top<=s+td?r=-nd(s-e.clientY):e.clientY+l.bottom>=a-td&&(r=nd(e.clientY-a)),this.setScrollSpeed(t,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,r=_v(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function r2(n,e){let t=n.state.facet(mv);return t.length?t[0](e):ae.mac?e.metaKey:e.ctrlKey}function i2(n,e){let t=n.state.facet(gv);return t.length?t[0](e):ae.mac?!e.altKey:!e.ctrlKey}function s2(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let r=ll(n.root);if(!r||r.rangeCount==0)return!0;let i=r.getRangeAt(0).getClientRects();for(let s=0;s<i.length;s++){let o=i[s];if(o.left<=e.clientX&&o.right>=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function o2(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,r;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(r=mt.get(t))&&r.isWidget()&&!r.isHidden&&r.widget.ignoreEvent(e))return!1;return!0}var Wr=Object.create(null),yn=Object.create(null),Zv=ae.ie&&ae.ie_version<15||ae.ios&&ae.webkit_version<604;function a2(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),Iv(n,t.value)},50)}function Md(n,e,t){for(let r of n.facet(e))t=r(t,n);return t}function Iv(n,e){e=Md(n.state,km,e);let{state:t}=n,r,i=1,s=t.toText(e),o=s.lines==t.selection.ranges.length;if(Jp!=null&&t.selection.ranges.every(l=>l.empty)&&Jp==s.toString()){let l=-1;r=t.changeByRange(c=>{let d=t.doc.lineAt(c.from);if(d.from==l)return{range:c};l=d.from;let h=t.toText((o?s.line(i++).text:e)+t.lineBreak);return{changes:{from:d.from,insert:h},range:z.cursor(c.from+h.length)}})}else o?r=t.changeByRange(l=>{let c=s.line(i++);return{changes:{from:l.from,to:l.to,insert:c.text},range:z.cursor(l.from+c.length)}}):r=t.replaceSelection(s);n.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}yn.scroll=n=>{let e=n.inputState;e.lastScrollTop=n.scrollDOM.scrollTop,e.lastScrollLeft=n.scrollDOM.scrollLeft,ae.ios&&!e.touchActive&&(e.lastIOSMomentumScroll=Date.now())};yn.wheel=yn.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Wr.keydown=(n,e)=>(n.inputState.setSelectionOrigin("select"),e.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);yn.touchstart=(n,e)=>{let t=n.inputState,r=e.targetTouches[0];t.touchActive=!0,t.lastTouchTime=Date.now(),r&&(t.lastTouchX=r.clientX,t.lastTouchY=r.clientY),t.setSelectionOrigin("select.pointer")};yn.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};yn.touchend=(n,e)=>{n.inputState.touchActive=!1};Wr.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let r of n.state.facet(Ov))if(t=r(n,e),t)break;if(!t&&e.button==0&&(t=c2(n,e)),t){let r=!n.hasFocus;n.inputState.startMouseSelection(new Kp(n,e,t,r)),r&&n.observer.ignore(()=>{ov(n.contentDOM);let s=n.root.activeElement;s&&!s.contains(n.contentDOM)&&s.blur()});let i=n.inputState.mouseSelection;if(i)return i.start(e),i.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function QS(n,e,t,r){if(r==1)return z.cursor(e,t);if(r==2)return B_(n.state,e,t);{let i=n.docView.lineAt(e,t),s=n.state.doc.lineAt(i?i.posAtEnd:e),o=i?i.posAtStart:s.from,a=i?i.posAtEnd:s.to;return a<n.state.doc.length&&a==s.to&&a++,z.undirectionalRange(o,a)}}var l2=ae.ie&&ae.ie_version<=11,TS=null,AS=0,CS=0;function Xv(n){if(!l2)return n.detail;let e=TS,t=CS;return TS=n,CS=Date.now(),AS=!e||t>Date.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(AS+1)%3:1}function c2(n,e){let t=n.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),r=Xv(e),i=n.state.selection;return{update(s){s.docChanged&&(t.pos=s.changes.mapPos(t.pos),i=i.map(s.changes))},get(s,o,a){let l=n.posAndSideAtCoords({x:s.clientX,y:s.clientY},!1),c,d=QS(n,l.pos,l.assoc,r);if(t.pos!=l.pos&&!o){let h=QS(n,t.pos,t.assoc,r),u=Math.min(h.from,d.from),f=Math.max(h.to,d.to);d=u<d.from?z.range(u,f,d.assoc):z.range(f,u,d.assoc)}return o?i.replaceRange(i.main.extend(d.from,d.to,d.assoc)):a&&r==1&&i.ranges.length>1&&(c=d2(i,l.pos))?c:a?i.addRange(d):z.create([d])}}}function d2(n,e){for(let t=0;t<n.ranges.length;t++){let{from:r,to:i}=n.ranges[t];if(r<=e&&i>=e)return z.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}return null}Wr.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let i=n.docView.tile.nearest(e.target);if(i&&i.isWidget()){let s=i.posAtStart,o=s+i.length;(s>=t.to||o<=t.from)&&(t=z.undirectionalRange(s,o))}}let{inputState:r}=n;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",Md(n.state,$m,n.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Wr.dragend=n=>(n.inputState.draggedContent=null,!1);function _S(n,e,t,r){if(t=Md(n.state,km,t),!t)return;let i=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=n.inputState,o=r&&s&&i2(n,e)?{from:s.from,to:s.to}:null,a={from:i,insert:t},l=n.state.changes(o?[o,a]:a);n.focus(),n.dispatch({changes:l,selection:{anchor:l.mapPos(i,-1),head:l.mapPos(i,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Wr.drop=(n,e)=>{if(!e.dataTransfer)return!1;if(n.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let r=Array(t.length),i=0,s=()=>{++i==t.length&&_S(n,e,r.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o<t.length;o++){let a=new FileReader;a.onerror=s,a.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(a.result)||(r[o]=a.result),s()},a.readAsText(t[o])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return _S(n,e,r,!0),!0}return!1};Wr.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=Zv?null:e.clipboardData;return t?(Iv(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(a2(n),!1)};function h2(n,e){let t=n.dom.parentNode;if(!t)return;let r=t.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),n.focus()},50)}function u2(n){let e=[],t=[],r=!1;for(let i of n.selection.ranges)i.empty||(e.push(n.sliceDoc(i.from,i.to)),t.push(i));if(!e.length){let i=-1;for(let{from:s}of n.selection.ranges){let o=n.doc.lineAt(s);o.number>i&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),i=o.number}r=!0}return{text:Md(n,$m,e.join(n.lineBreak)),ranges:t,linewise:r}}var Jp=null;Wr.copy=Wr.cut=(n,e)=>{if(!Ha(n.contentDOM,n.observer.selectionRange))return!1;let{text:t,ranges:r,linewise:i}=u2(n.state);if(!t&&!i)return!1;Jp=i?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let s=Zv?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",t),!0):(h2(n,t),!1)};var zv=Tn.define();function Wv(n,e){let t=[];for(let r of n.facet(Sv)){let i=r(n,e);i&&t.push(i)}return t.length?n.update({effects:t,annotations:zv.of(!0)}):null}function Nv(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=Wv(n.state,e);t?n.dispatch(t):n.update([])}},10)}yn.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Nv(n)};yn.blur=n=>{n.observer.clearSelectionRange(),Nv(n)};yn.compositionstart=yn.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};yn.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,ae.chrome&&ae.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};yn.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Wr.beforeinput=(n,e)=>{var t,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(n.inputState.insertingText=e.data,n.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&n.observer.editContext){let s=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(s&&o.length){let a=o[0],l=n.posAtDOM(a.startContainer,a.startOffset),c=n.posAtDOM(a.endContainer,a.endOffset);return Cm(n,{from:l,to:c,insert:n.state.toText(s)},null),!0}}let i;if(ae.chrome&&ae.android&&(i=Lv.find(s=>s.inputType==e.inputType))&&(n.observer.delayAndroidKey(i.key,i.keyCode),i.key=="Backspace"||i.key=="Delete")){let s=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>s+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return ae.ios&&e.inputType=="deleteContentForward"&&n.observer.flushSoon(),ae.safari&&e.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>yn.compositionend(n,e),20),!1};var ES=new Set;function f2(n){ES.has(n)||(ES.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var RS=["pre-wrap","normal","pre-line","break-spaces"],Vo=!1;function MS(){Vo=!1}var em=class{constructor(e){this.lineWrapping=e,this.doc=De.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let r=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((t-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return RS.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let r=0;r<e.length;r++){let i=e[r];i<0?r++:this.heightSamples[Math.floor(i*10)]||(t=!0,this.heightSamples[Math.floor(i*10)]=!0)}return t}refresh(e,t,r,i,s,o){let a=RS.indexOf(e)>-1,l=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=a;if(this.lineWrapping=a,this.lineHeight=t,this.charWidth=r,this.textHeight=i,this.lineLength=s,l){this.heightSamples={};for(let c=0;c<o.length;c++){let d=o[c];d<0?c++:this.heightSamples[Math.floor(d*10)]=!0}}return l}},tm=class{constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index<this.heights.length}},Xr=class n{constructor(e,t,r,i,s){this.from=e,this.length=t,this.top=r,this.height=i,this._content=s}get type(){return typeof this._content=="number"?Ht.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 Ns?this._content.widget:null}get widgetLineBreaks(){return typeof this._content=="number"?this._content:0}join(e){let t=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new n(this.from,this.length+e.length,this.top,this.height+e.height,t)}},ct=(function(n){return n[n.ByPos=0]="ByPos",n[n.ByHeight=1]="ByHeight",n[n.ByPosNoHeight=2]="ByPosNoHeight",n})(ct||(ct={})),dd=.001,Un=class n{constructor(e,t,r=2){this.length=e,this.height=t,this.flags=r}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>dd&&(Vo=!0),this.height=e)}replace(e,t,r){return n.of(r)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,r,i){let s=this,o=r.doc;for(let a=i.length-1;a>=0;a--){let{fromA:l,toA:c,fromB:d,toB:h}=i[a],u=s.lineAt(l,ct.ByPosNoHeight,r.setDoc(t),0,0),f=u.to>=c?u:s.lineAt(c,ct.ByPosNoHeight,r,0,0);for(h+=f.to-c,c=f.to;a>0&&u.from<=i[a-1].toA;)l=i[a-1].fromA,d=i[a-1].fromB,a--,l<u.from&&(u=s.lineAt(l,ct.ByPosNoHeight,r,0,0));d+=u.from-l,l=u.from;let m=rm.build(r.setDoc(o),e,d,h);s=xd(s,s.replace(l,c,m))}return s.updateHeight(r,0)}static empty(){return new gr(0,0,0)}static of(e){if(e.length==1)return e[0];let t=0,r=e.length,i=0,s=0;for(;;)if(t==r)if(i>s*2){let a=e[t-1];a.break?e.splice(--t,1,a.left,null,a.right):e.splice(--t,1,a.left,a.right),r+=1+a.break,i-=a.size}else if(s>i*2){let a=e[r];a.break?e.splice(r,1,a.left,null,a.right):e.splice(r,1,a.left,a.right),r+=2+a.break,s-=a.size}else break;else if(i<s){let a=e[t++];a&&(i+=a.size)}else{let a=e[--r];a&&(s+=a.size)}let o=0;return e[t-1]==null?(o=1,t--):e[t]==null&&(o=1,r++),new nm(n.of(e.slice(0,t)),o,n.of(e.slice(r)))}};function xd(n,e){return n==e?n:(n.constructor!=e.constructor&&(Vo=!0),e)}Un.prototype.size=1;var p2=J.replace({}),Pd=class extends Un{constructor(e,t,r){super(e,t),this.deco=r,this.spaceAbove=0}mainBlock(e,t){return new Xr(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.deco||0)}blockAt(e,t,r,i){return this.spaceAbove&&e<r+this.spaceAbove?new Xr(i,0,r,this.spaceAbove,p2):this.mainBlock(r,i)}lineAt(e,t,r,i,s){let o=this.mainBlock(i,s);return this.spaceAbove?this.blockAt(0,r,i,s).join(o):o}forEachLine(e,t,r,i,s,o){e<=s+this.length&&t>=s&&o(this.lineAt(0,ct.ByPos,r,i,s))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,r=!1,i){return i&&i.from<=t&&i.more&&this.setMeasuredHeight(i),this.outdated=!1,this}toString(){return`block(${this.length})`}},gr=class n extends Pd{constructor(e,t,r){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=r}mainBlock(e,t){return new Xr(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,r){let i=r[0];return r.length==1&&(i instanceof n||i instanceof Ui&&i.flags&4)&&Math.abs(this.length-i.length)<10?(i instanceof Ui?i=new n(i.length,this.height,this.spaceAbove):i.height=this.height,this.outdated||(i.outdated=!1),i):Un.of(r)}updateHeight(e,t=0,r=!1,i){return i&&i.from<=t&&i.more?this.setMeasuredHeight(i):(r||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},Ui=class n extends Un{constructor(e){super(e,0)}heightMetrics(e,t){let r=e.doc.lineAt(t).number,i=e.doc.lineAt(t+this.length).number,s=i-r+1,o,a=0;if(e.lineWrapping){let l=Math.min(this.height,e.lineHeight*s);o=l/s,this.length>s+1&&(a=(this.height-l)/(this.length-s-1))}else o=this.height/s;return{firstLine:r,lastLine:i,perLine:o,perChar:a}}blockAt(e,t,r,i){let{firstLine:s,lastLine:o,perLine:a,perChar:l}=this.heightMetrics(t,i);if(t.lineWrapping){let c=i+(e<t.lineHeight?0:Math.round(Math.max(0,Math.min(1,(e-r)/this.height))*this.length)),d=t.doc.lineAt(c),h=a+d.length*l,u=Math.max(r,e-h/2);return new Xr(d.from,d.length,u,h,0)}else{let c=Math.max(0,Math.min(o-s,Math.floor((e-r)/a))),{from:d,length:h}=t.doc.line(s+c);return new Xr(d,h,r+a*c,a,0)}}lineAt(e,t,r,i,s){if(t==ct.ByHeight)return this.blockAt(e,r,i,s);if(t==ct.ByPosNoHeight){let{from:f,to:m}=r.doc.lineAt(e);return new Xr(f,m-f,0,0,0)}let{firstLine:o,perLine:a,perChar:l}=this.heightMetrics(r,s),c=r.doc.lineAt(e),d=a+c.length*l,h=c.number-o,u=i+a*h+l*(c.from-s-h);return new Xr(c.from,c.length,Math.max(i,Math.min(u,i+this.height-d)),d,0)}forEachLine(e,t,r,i,s,o){e=Math.max(e,s),t=Math.min(t,s+this.length);let{firstLine:a,perLine:l,perChar:c}=this.heightMetrics(r,s);for(let d=e,h=i;d<=t;){let u=r.doc.lineAt(d);if(d==e){let m=u.number-a;h+=l*m+c*(e-s-m)}let f=l+c*u.length;o(new Xr(u.from,u.length,h,f,0)),h+=f,d=u.to+1}}replace(e,t,r){let i=this.length-t;if(i>0){let s=r[r.length-1];s instanceof n?r[r.length-1]=new n(s.length+i):r.push(null,new n(i-1))}if(e>0){let s=r[0];s instanceof n?r[0]=new n(e+s.length):r.unshift(new n(e-1),null)}return Un.of(r)}decomposeLeft(e,t){t.push(new n(e-1),null)}decomposeRight(e,t){t.push(null,new n(this.length-e-1))}updateHeight(e,t=0,r=!1,i){let s=t+this.length;if(i&&i.from<=t+this.length&&i.more){let o=[],a=Math.max(t,i.from),l=-1;for(i.from>t&&o.push(new n(i.from-t-1).updateHeight(e,t));a<=s&&i.more;){let d=e.doc.lineAt(a).length;o.length&&o.push(null);let h=i.heights[i.index++],u=0;h<0&&(u=-h,h=i.heights[i.index++]),l==-1?l=h:Math.abs(h-l)>=dd&&(l=-2);let f=new gr(d,h,u);f.outdated=!1,o.push(f),a+=d+1}a<=s&&o.push(null,new n(s-a).updateHeight(e,a));let c=Un.of(o);return(l<0||Math.abs(c.height-this.height)>=dd||Math.abs(l-this.heightMetrics(e,t).perLine)>=dd)&&(Vo=!0),xd(this,c)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},nm=class extends Un{constructor(e,t,r){super(e.length+t+r.length,e.height+r.height,t|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,t,r,i){let s=r+this.left.height;return e<s?this.left.blockAt(e,t,r,i):this.right.blockAt(e,t,s,i+this.left.length+this.break)}lineAt(e,t,r,i,s){let o=i+this.left.height,a=s+this.left.length+this.break,l=t==ct.ByHeight?e<o:e<a,c=l?this.left.lineAt(e,t,r,i,s):this.right.lineAt(e,t,r,o,a);if(this.break||(l?c.to<a:c.from>a))return c;let d=t==ct.ByPosNoHeight?ct.ByPosNoHeight:ct.ByPos;return l?c.join(this.right.lineAt(a,d,r,o,a)):this.left.lineAt(a,d,r,i,s).join(c)}forEachLine(e,t,r,i,s,o){let a=i+this.left.height,l=s+this.left.length+this.break;if(this.break)e<l&&this.left.forEachLine(e,t,r,i,s,o),t>=l&&this.right.forEachLine(e,t,r,a,l,o);else{let c=this.lineAt(l,ct.ByPos,r,i,s);e<c.from&&this.left.forEachLine(e,c.from-1,r,i,s,o),c.to>=e&&c.from<=t&&o(c),t>c.to&&this.right.forEachLine(c.to+1,t,r,a,l,o)}}replace(e,t,r){let i=this.left.length+this.break;if(t<i)return this.balanced(this.left.replace(e,t,r),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-i,t-i,r));let s=[];e>0&&this.decomposeLeft(e,s);let o=s.length;for(let a of r)s.push(a);if(e>0&&LS(s,o-1),t<this.length){let a=s.length;this.decomposeRight(t,s),LS(s,a)}return Un.of(s)}decomposeLeft(e,t){let r=this.left.length;if(e<=r)return this.left.decomposeLeft(e,t);t.push(this.left),this.break&&(r++,e>=r&&t.push(null)),e>r&&this.right.decomposeLeft(e-r,t)}decomposeRight(e,t){let r=this.left.length,i=r+this.break;if(e>=i)return this.right.decomposeRight(e-i,t);e<r&&this.left.decomposeRight(e,t),this.break&&e<i&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?Un.of(this.break?[e,null,t]:[e,t]):(this.left=xd(this.left,e),this.right=xd(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,r=!1,i){let{left:s,right:o}=this,a=t+s.length+this.break,l=null;return i&&i.from<=t+s.length&&i.more?l=s=s.updateHeight(e,t,r,i):s.updateHeight(e,t,r),i&&i.from<=a+o.length&&i.more?l=o=o.updateHeight(e,a,r,i):o.updateHeight(e,a,r),l?this.balanced(s,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function LS(n,e){let t,r;n[e]==null&&(t=n[e-1])instanceof Ui&&(r=n[e+1])instanceof Ui&&n.splice(e-1,3,new Ui(t.length+1+r.length))}var m2=5,rm=class n{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let r=Math.min(t,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof gr?i.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new gr(r-this.pos,-1,0)),this.writtenTo=r,t>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,r){if(e<t||r.heightRelevant){let i=r.widget?r.widget.estimatedHeight:0,s=r.widget?r.widget.lineBreaks:0;i<0&&(i=this.oracle.lineHeight);let o=t-e;r.block?this.addBlock(new Pd(o,i,r)):(o||s||i>=m2)&&this.addLineDeco(i,s,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenTo<e&&((this.writtenTo<e-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new gr(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let r=new Ui(t-e);return this.oracle.doc.lineAt(e).to==t&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof gr)return e;let t=new gr(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,r){let i=this.ensureLine();i.length+=r,i.collapsed+=r,i.widgetHeight=Math.max(i.widgetHeight,e),i.breaks+=t,this.writtenTo=this.pos=this.pos+r}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof gr)&&!this.isCovered?this.nodes.push(new gr(0,-1,0)):(this.writtenTo<this.pos||t==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let r=e;for(let i of this.nodes)i instanceof gr&&i.updateHeight(this.oracle,r),r+=i?i.length:1;return this.nodes}static build(e,t,r,i){let s=new n(r,e);return $e.spans(t,r,i,s,0),s.finish(r)}};function g2(n,e,t){let r=new im;return $e.compare(n,e,t,r,0),r.changes}var im=class{constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,r,i){(e<t||r&&r.heightRelevant||i&&i.heightRelevant)&&Io(e,t,this.changes,5)}};function O2(n,e){let t=n.getBoundingClientRect(),r=n.ownerDocument,i=r.defaultView||window,s=Math.max(0,t.left),o=Math.min(i.innerWidth,t.right),a=Math.max(0,t.top),l=Math.min(i.innerHeight,t.bottom);for(let c=n.parentNode;c&&c!=r.body;)if(c.nodeType==1){let d=c,h=window.getComputedStyle(d);if((d.scrollHeight>d.clientHeight||d.scrollWidth>d.clientWidth)&&h.overflow!="visible"){let u=d.getBoundingClientRect();s=Math.max(s,u.left),o=Math.min(o,u.right),a=Math.max(a,u.top),l=Math.min(c==n.parentNode?i.innerHeight:l,u.bottom)}c=h.position=="absolute"||h.position=="fixed"?d.offsetParent:d.parentNode}else if(c.nodeType==11)c=c.host;else break;return{left:s-t.left,right:Math.max(s,o)-t.left,top:a-(t.top+e),bottom:Math.max(a,l)-(t.top+e)}}function b2(n){let e=n.getBoundingClientRect(),t=n.ownerDocument.defaultView||window;return e.left<t.innerWidth&&e.right>0&&e.top<t.innerHeight&&e.bottom>0}function y2(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var rl=class{constructor(e,t,r,i){this.from=e,this.to=t,this.size=r,this.displaySize=i}static same(e,t){if(e.length!=t.length)return!1;for(let r=0;r<e.length;r++){let i=e[r],s=t[r];if(i.from!=s.from||i.to!=s.to||i.size!=s.size)return!1}return!0}draw(e,t){return J.replace({widget:new sm(this.displaySize*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}},sm=class extends Ct{constructor(e,t){super(),this.size=e,this.vertical=t}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){let e=document.createElement("div");return this.vertical?e.style.height=this.size+"px":(e.style.width=this.size+"px",e.style.height="2px",e.style.display="inline-block"),e}get estimatedHeight(){return this.vertical?this.size:-1}},kd=class{constructor(e,t){this.view=e,this.state=t,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=DS,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=qe.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let r=t.facet(Qm).some(i=>typeof i!="function"&&i.class=="cm-lineWrapping");this.heightOracle=new em(r),this.stateDeco=ZS(t),this.heightMap=Un.empty().applyChanges(this.stateDeco,De.empty,this.heightOracle.setDoc(t.doc),[new zr(0,0,0,t.doc.length)]);for(let i=0;i<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());i++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=J.set(this.lineGaps.map(i=>i.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let r=0;r<=1;r++){let i=r?t.head:t.anchor;if(!e.some(({from:s,to:o})=>i>=s&&i<=o)){let{from:s,to:o}=this.lineBlockAt(i);e.push(new Lo(s,o))}}return this.viewports=e.sort((r,i)=>r.from-i.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?DS:new om(this.heightOracle,this.heightMap,this.viewports),e.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,e=>{this.viewportLines.push(qa(e,this.scaler))})}update(e,t=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=ZS(this.state);let i=e.changedRanges,s=zr.extendWithRanges(i,g2(r,this.stateDeco,e?e.changes:On.empty(this.state.doc.length))),o=this.heightMap.height,a=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);MS(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(this.heightMap.height!=o||Vo)&&(e.flags|=2),a?(this.scrollAnchorPos=e.changes.mapPos(a.from,-1),this.scrollAnchorHeight=a.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let l=s.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.head<l.from||t.range.head>l.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,t));let c=l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,e.flags|=this.updateForViewport(),(c||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(wv)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,r=window.getComputedStyle(t),i=this.heightOracle,s=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?qe.RTL:qe.LTR;let o=this.heightOracle.mustRefreshForWrapping(s)||this.mustMeasureContent==="refresh",a=t.getBoundingClientRect(),l=o||this.mustMeasureContent||this.contentDOMHeight!=a.height;this.contentDOMHeight=a.height,this.mustMeasureContent=!1;let c=0,d=0;if(a.width&&a.height){let{scaleX:k,scaleY:w}=nv(t,a);(k>.005&&Math.abs(this.scaleX-k)>.005||w>.005&&Math.abs(this.scaleY-w)>.005)&&(this.scaleX=k,this.scaleY=w,c|=16,o=l=!0)}let h=(parseInt(r.paddingTop)||0)*this.scaleY,u=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=h||this.paddingBottom!=u)&&(this.paddingTop=h,this.paddingBottom=u,c|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(i.lineWrapping&&(l=!0),this.editorWidth=e.scrollDOM.clientWidth,c|=16);let f=rv(this.view.contentDOM,!1).y;f!=this.scrollParent&&(this.scrollParent=f,this.scrollAnchorHeight=-1,this.scrollOffset=0);let m=this.getScrollOffset();this.scrollOffset!=m&&(this.scrollAnchorHeight=-1,this.scrollOffset=m),this.scrolledToBottom=av(this.scrollParent||e.win);let O=(this.printing?y2:O2)(t,this.paddingTop),S=O.top-this.pixelViewport.top,x=O.bottom-this.pixelViewport.bottom;this.pixelViewport=O;let D=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(D!=this.inView&&(this.inView=D,D&&(l=!0)),!this.inView&&!this.scrollTarget&&!b2(e.dom))return 0;let M=a.width;if((this.contentDOMWidth!=M||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=a.width,this.editorHeight=e.scrollDOM.clientHeight,c|=16),l){let k=e.docView.measureVisibleLineHeights(this.viewport);if(i.mustRefreshForHeights(k)&&(o=!0),o||i.lineWrapping&&Math.abs(M-this.contentDOMWidth)>i.charWidth){let{lineHeight:w,charWidth:R,textHeight:X}=e.docView.measureTextSize();o=w>0&&i.refresh(s,w,R,X,Math.max(5,M/R),k),o&&(e.docView.minWidth=0,c|=16)}S>0&&x>0?d=Math.max(S,x):S<0&&x<0&&(d=Math.min(S,x)),MS();for(let w of this.viewports){let R=w.from==this.viewport.from?k:e.docView.measureVisibleLineHeights(w);this.heightMap=(o?Un.empty().applyChanges(this.stateDeco,De.empty,this.heightOracle,[new zr(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(i,0,o,new tm(w.from,R))}Vo&&(c|=2)}let Z=!this.viewportIsAppropriate(this.viewport,d)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return Z&&(c&2&&(c|=this.updateScaler()),this.viewport=this.getViewport(d,this.scrollTarget),c|=this.updateForViewport()),(c&2||Z)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),c|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),c}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),i=this.heightMap,s=this.heightOracle,{visibleTop:o,visibleBottom:a}=this,l=new Lo(i.lineAt(o-r*1e3,ct.ByHeight,s,0,0).from,i.lineAt(a+(1-r)*1e3,ct.ByHeight,s,0,0).to);if(t){let{head:c}=t.range;if(c<l.from||c>l.to){let d=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),h=i.lineAt(c,ct.ByPos,s,0,0),u;t.y=="center"?u=(h.top+h.bottom)/2-d/2:t.y=="start"||t.y=="nearest"&&c<l.from?u=h.top:u=h.bottom-d,l=new Lo(i.lineAt(u-1e3/2,ct.ByHeight,s,0,0).from,i.lineAt(u+d+1e3/2,ct.ByHeight,s,0,0).to)}}return l}mapViewport(e,t){let r=t.mapPos(e.from,-1),i=t.mapPos(e.to,1);return new Lo(this.heightMap.lineAt(r,ct.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(i,ct.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},r=0){if(!this.inView)return!0;let{top:i}=this.heightMap.lineAt(e,ct.ByPos,this.heightOracle,0,0),{bottom:s}=this.heightMap.lineAt(t,ct.ByPos,this.heightOracle,0,0),{visibleTop:o,visibleBottom:a}=this;return(e==0||i<=o-Math.max(10,Math.min(-r,250)))&&(t==this.state.doc.length||s>=a+Math.max(10,Math.min(r,250)))&&i>o-2*1e3&&s<a+2*1e3}mapLineGaps(e,t){if(!e.length||t.empty)return e;let r=[];for(let i of e)t.touchesRange(i.from,i.to)||r.push(new rl(t.mapPos(i.from),t.mapPos(i.to),i.size,i.displaySize));return r}ensureLineGaps(e,t){let r=this.heightOracle.lineWrapping,i=r?1e4:2e3,s=i>>1,o=i<<1;if(this.defaultTextDirection!=qe.LTR&&!r)return[];let a=[],l=(d,h,u,f)=>{if(h-d<s)return;let m=this.state.selection.main,O=[m.from];m.empty||O.push(m.to);for(let x of O)if(x>d&&x<h){l(d,x-10,u,f),l(x+10,h,u,f);return}let S=v2(e,x=>x.from>=u.from&&x.to<=u.to&&Math.abs(x.from-d)<s&&Math.abs(x.to-h)<s&&!O.some(D=>x.from<D&&x.to>D));if(!S){if(h<u.to&&t&&r&&t.visibleRanges.some(M=>M.from<=h&&M.to>=h)){let M=t.moveToLineBoundary(z.cursor(h),!1,!0).head;M>d&&(h=M)}let x=this.gapSize(u,d,h,f),D=r||x<2e6?x:2e6;S=new rl(d,h,x,D)}a.push(S)},c=d=>{if(d.length<o||d.type!=Ht.Text)return;let h=S2(d.from,d.to,this.stateDeco);if(h.total<o)return;let u=this.scrollTarget?this.scrollTarget.range.head:null,f,m;if(r){let O=i/this.heightOracle.lineLength*this.heightOracle.lineHeight,S,x;if(u!=null){let D=id(h,u),M=((this.visibleBottom-this.visibleTop)/2+O)/d.height;S=D-M,x=D+M}else S=(this.visibleTop-d.top-O)/d.height,x=(this.visibleBottom-d.top+O)/d.height;f=rd(h,S),m=rd(h,x)}else{let O=h.total*this.heightOracle.charWidth,S=i*this.heightOracle.charWidth,x=0;if(O>2e6)for(let w of e)w.from>=d.from&&w.from<d.to&&w.size!=w.displaySize&&w.from*this.heightOracle.charWidth+x<this.pixelViewport.left&&(x=w.size-w.displaySize);let D=this.pixelViewport.left+x,M=this.pixelViewport.right+x,Z,k;if(u!=null){let w=id(h,u),R=((M-D)/2+S)/O;Z=w-R,k=w+R}else Z=(D-S)/O,k=(M+S)/O;f=rd(h,Z),m=rd(h,k)}f>d.from&&l(d.from,f,d,h),m<d.to&&l(m,d.to,d,h)};for(let d of this.viewportLines)Array.isArray(d.type)?d.type.forEach(c):c(d);return a}gapSize(e,t,r,i){let s=id(i,r)-id(i,t);return this.heightOracle.lineWrapping?e.height*s:i.total*this.heightOracle.charWidth*s}updateLineGaps(e){rl.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=J.set(e.map(t=>t.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let r=[];$e.spans(t,this.viewport.from,this.viewport.to,{span(s,o){r.push({from:s,to:o})},point(){}},20);let i=0;if(r.length!=this.visibleRanges.length)i=12;else for(let s=0;s<r.length&&!(i&8);s++){let o=this.visibleRanges[s],a=r[s];(o.from!=a.from||o.to!=a.to)&&(i|=4,e&&e.mapPos(o.from,-1)==a.from&&e.mapPos(o.to,1)==a.to||(i|=8))}return this.visibleRanges=r,i}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||qa(this.heightMap.lineAt(e,ct.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||qa(this.heightMap.lineAt(this.scaler.fromDOM(e),ct.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop*this.scaleY:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return qa(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},Lo=class{constructor(e,t){this.from=e,this.to=t}};function S2(n,e,t){let r=[],i=n,s=0;return $e.spans(t,n,e,{span(){},point(o,a){o>i&&(r.push({from:i,to:o}),s+=o-i),i=a}},20),i<e&&(r.push({from:i,to:e}),s+=e-i),{total:s,ranges:r}}function rd({total:n,ranges:e},t){if(t<=0)return e[0].from;if(t>=1)return e[e.length-1].to;let r=Math.floor(n*t);for(let i=0;;i++){let{from:s,to:o}=e[i],a=o-s;if(r<=a)return s+r;r-=a}}function id(n,e){let t=0;for(let{from:r,to:i}of n.ranges){if(e<=i){t+=e-r;break}t+=i-r}return t/n.total}function v2(n,e){for(let t of n)if(e(t))return t}var DS={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function ZS(n){let e=n.facet(Rd).filter(r=>typeof r!="function"),t=n.facet(Tm).filter(r=>typeof r!="function");return t.length&&e.push($e.join(t)),e}var om=class n{constructor(e,t,r){let i=0,s=0,o=0;this.viewports=r.map(({from:a,to:l})=>{let c=t.lineAt(a,ct.ByPos,e,0,0).top,d=t.lineAt(l,ct.ByPos,e,0,0).bottom;return i+=d-c,{from:a,to:l,top:c,bottom:d,domTop:0,domBottom:0}}),this.scale=(7e6-i)/(t.height-i);for(let a of this.viewports)a.domTop=o+(a.top-s)*this.scale,o=a.domBottom=a.domTop+(a.bottom-a.top),s=a.bottom}toDOM(e){for(let t=0,r=0,i=0;;t++){let s=t<this.viewports.length?this.viewports[t]:null;if(!s||e<s.top)return i+(e-r)*this.scale;if(e<=s.bottom)return s.domTop+(e-s.top);r=s.bottom,i=s.domBottom}}fromDOM(e){for(let t=0,r=0,i=0;;t++){let s=t<this.viewports.length?this.viewports[t]:null;if(!s||e<s.domTop)return r+(e-i)/this.scale;if(e<=s.domBottom)return s.top+(e-s.domTop);r=s.bottom,i=s.domBottom}}eq(e){return e instanceof n?this.scale==e.scale&&this.viewports.length==e.viewports.length&&this.viewports.every((t,r)=>t.from==e.viewports[r].from&&t.to==e.viewports[r].to):!1}};function qa(n,e){if(e.scale==1)return n;let t=e.toDOM(n.top),r=e.toDOM(n.bottom);return new Xr(n.from,n.length,t,r-t,Array.isArray(n._content)?n._content.map(i=>qa(i,e)):n._content)}var sd=oe.define({combine:n=>n.join(" ")}),am=oe.define({combine:n=>n.indexOf(!0)>-1}),lm=mr.newName(),Bv=mr.newName(),Vv=mr.newName(),Fv={"&light":"."+Bv,"&dark":"."+Vv};function cm(n,e,t){return new mr(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,i=>{if(i=="&")return n;if(!t||!t[i])throw new RangeError(`Unsupported selector: ${i}`);return t[i]}):n+" "+r}})}var w2=cm("."+lm,{"&":{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":{userSelect:"none",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"},".cm-panels-top":{top:"0"},".cm-panels-bottom":{bottom:"0"},"&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":{background:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 0) no-repeat",backgroundSize:".4em",backgroundPosition:"calc(min(50%, 0px)) 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"}},Fv),x2={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},xp=ae.ie&&ae.ie_version<=11,dm=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Rp,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=e.contentDOM,this.observer=new MutationObserver(t=>{for(let r of t)this.queue.push(r);(ae.ie&&ae.ie_version<=11||ae.ios&&e.composing)&&t.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&ae.android&&e.constructor.EDIT_CONTEXT!==!1&&!(ae.chrome&&ae.chrome_version<126)&&(this.editContext=new hm(e),e.state.facet(xi)&&(e.contentDOM.editContext=this.editContext.editContext)),xp&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.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 t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(e.scrollDOM)),this.addWindowListeners(this.win=e.win),this.start(),typeof IntersectionObserver=="function"&&(this.intersection=new IntersectionObserver(t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.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(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,r)=>t!=e[r]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,i=this.selectionRange;if(r.state.facet(xi)?r.root.activeElement!=this.dom:!Ha(this.dom,i))return;let s=i.anchorNode&&r.docView.tile.nearest(i.anchorNode);if(s&&s.isWidget()&&s.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(ae.ie&&ae.ie_version<=11||ae.android&&ae.chrome)&&!r.state.selection.main.empty&&i.focusNode&&Ka(i.focusNode,i.focusOffset,i.anchorNode,i.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=ll(e.root);if(!t)return!1;let r=ae.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&P2(this.view,t)||t;if(!r||this.selectionRange.eq(r))return!1;let i=Ha(this.dom,r);return i&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&b_(this.dom,r)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(r),i&&(this.selectionChanged=!0),!0)}setSelectionRange(e,t){this.selectionRange.set(e.node,e.offset,t.node,t.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,t=null;for(let r=this.dom;r;)if(r.nodeType==1)!t&&e<this.scrollTargets.length&&this.scrollTargets[e]==r?e++:t||(t=this.scrollTargets.slice(0,e)),t&&t.push(r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;if(e<this.scrollTargets.length&&!t&&(t=this.scrollTargets.slice(0,e)),t){for(let r of this.scrollTargets)r.removeEventListener("scroll",this.onScroll);for(let r of this.scrollTargets=t)r.addEventListener("scroll",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,x2),xp&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),xp&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){var r;if(!this.delayedAndroidKey){let i=()=>{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&Xo(this.dom,s.key,s.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(i)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange<Date.now()-50||!!(!((r=this.delayedAndroidKey)===null||r===void 0)&&r.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 e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,r=-1,i=!1;for(let s of e){let o=this.readMutation(s);o&&(o.typeOver&&(i=!0),t==-1?{from:t,to:r}=o:(t=Math.min(o.from,t),r=Math.max(o.to,r)))}return{from:t,to:r,typeOver:i}}readChange(){let{from:e,to:t,typeOver:r}=this.processRecords(),i=this.selectionChanged&&Ha(this.dom,this.selectionRange);if(e<0&&!i)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new Gp(this.view,e,t,r);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let r=this.view.state,i=Rv(this.view,t);return this.view.state==r&&(t.domChanged||t.newSel&&!wd(this.view.state.selection,t.newSel.main))&&this.view.update([]),i}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let r=IS(t,e.previousSibling||e.target.previousSibling,-1),i=IS(t,e.nextSibling||e.target.nextSibling,1);return{from:r?t.posAfter(r):t.posAtStart,to:i?t.posBefore(i):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(xi)!=e.state.facet(xi)&&(e.view.contentDOM.editContext=e.state.facet(xi)?this.editContext.editContext:null))}destroy(){var e,t,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let i of this.scrollTargets)i.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 IS(n,e,t){for(;e;){let r=mt.get(e);if(r&&r.parent==n)return r;let i=e.parentNode;e=i!=n.dom?i:t>0?e.nextSibling:e.previousSibling}return null}function XS(n,e){let t=e.startContainer,r=e.startOffset,i=e.endContainer,s=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return Ka(o.node,o.offset,i,s)&&([t,r,i,s]=[i,s,t,r]),{anchorNode:t,anchorOffset:r,focusNode:i,focusOffset:s}}function P2(n,e){if(e.getComposedRanges){let i=e.getComposedRanges(n.root)[0];if(i)return XS(n,i)}let t=null;function r(i){i.preventDefault(),i.stopImmediatePropagation(),t=i.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",r,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",r,!0),t?XS(n,t):null}var hm=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let i=e.state.selection.main,{anchor:s,head:o}=i,a=this.toEditorPos(r.updateRangeStart),l=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:a,drifted:!1});let c=l-a>r.text.length;a==this.from&&s<this.from?a=s:l==this.to&&s>this.to&&(l=s);let d=Mv(e.state.sliceDoc(a,l),r.text,(c?i.from:i.to)-a,c?"end":null);if(!d){let u=z.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));wd(u,i)||e.dispatch({selection:u,userEvent:"select"});return}let h={from:d.from+a,to:d.toA+a,insert:De.of(r.text.slice(d.from,d.toB).split(`
`))};if((ae.mac||ae.android)&&h.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(h={from:a,to:l,insert:De.of([r.text.replace("."," ")])}),this.pendingContextChange=h,!e.state.readOnly){let u=this.to-this.from+(h.to-h.from+h.insert.length);Cm(e,h,z.single(this.toEditorPos(r.selectionStart,u),this.toEditorPos(r.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),h.from<h.to&&!h.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(t.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let i=[],s=null;for(let o=this.toEditorPos(r.rangeStart),a=this.toEditorPos(r.rangeEnd);o<a;o++){let l=e.coordsForChar(o);s=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||s||new DOMRect,i.push(s)}t.updateCharacterBounds(r.rangeStart,i)},this.handlers.textformatupdate=r=>{let i=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),c=this.toEditorPos(s.rangeEnd);if(l<c){let d=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;i.push(J.mark({attributes:{style:d}}).range(l,c))}}}e.dispatch({effects:Pv.of(J.set(i))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)t.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{let i=ll(r.root);i&&i.rangeCount&&this.editContext.updateSelectionBounds(i.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,i=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(r)return;let d=c.length-(o-s);if(i&&o>=i.to)if(i.from==s&&i.to==o&&i.insert.eq(c)){i=this.pendingContextChange=null,t+=d,this.to+=d;return}else i=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=d,this.to+=d;else if(s<this.to){if(s<this.from||o>this.to||this.to-this.from+c.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=d}t+=d}),i&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(i=>!i.isUserEvent("input.type")&&i.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),i=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=i)&&this.editContext.updateSelection(r,i)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},F=class n{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(e={}){var t;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),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(i=>i.forEach(s=>r(s,this)))||(i=>this.update(i)),this.dispatch=this.dispatch.bind(this),this._root=e.root||O_(e.parent)||document,this.viewState=new kd(this,e.state||Me.create(e)),e.scrollTo&&e.scrollTo.is(ed)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Mo).map(i=>new el(i));for(let i of this.plugins)i.update(this);this.observer=new dm(this),this.inputState=new Hp(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Sd(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof ut?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,r=!1,i,s=this.state;for(let u of e){if(u.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=u.state}if(this.destroyed){this.viewState.state=s;return}let o=this.hasFocus,a=0,l=null;e.some(u=>u.annotation(zv))?(this.inputState.notifiedFocused=o,a=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,l=Wv(s,o),l||(a=1));let c=this.observer.delayedAndroidKey,d=null;if(c?(this.observer.clearDelayedAndroidKey(),d=this.observer.readChange(),(d&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(d=null)):this.observer.clear(),s.facet(Me.phrases)!=this.state.facet(Me.phrases))return this.setState(s);i=bd.create(this,s,e),i.flags|=a;let h=this.viewState.scrollTarget;try{this.updateState=2;for(let u of e){if(h&&(h=h.map(u.changes)),u.scrollIntoView){let{main:f}=u.state.selection,{x:m,y:O}=this.state.facet(n.cursorScrollMargin);h=new Ja(f.empty?f:z.cursor(f.head,f.head>f.anchor?-1:1),"nearest","nearest",O,m)}for(let f of u.effects)f.is(ed)&&(h=f.value.clip(this.state))}this.viewState.update(i,h),this.bidiCache=$d.update(this.bidiCache,i.changes),i.empty||(this.updatePlugins(i),this.inputState.update(i)),t=this.docView.update(i),this.state.facet(Ua)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(i.startState.facet(sd)!=i.state.facet(sd)&&(this.viewState.mustMeasureContent=!0),(t||r||h||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!i.empty)for(let u of this.state.facet(Zp))try{u(i)}catch(f){jn(this.state,f,"update listener")}(l||d)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),d&&!Rv(this,d)&&c.force&&Xo(this.contentDOM,c.key,c.keyCode)})}setState(e){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=e;return}this.updateState=2;let t=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new kd(this,e),this.plugins=e.facet(Mo).map(r=>new el(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new Sd(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Mo),r=e.state.facet(Mo);if(t!=r){let i=[];for(let s of r){let o=t.indexOf(s);if(o<0)i.push(new el(s));else{let a=this.plugins[o];a.mustUpdate=e,i.push(a)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=i,this.pluginMap.clear()}else for(let i of this.plugins)i.mustUpdate=e;for(let i=0;i<this.plugins.length;i++)this.plugins[i].update(this);t!=r&&this.inputState.ensureHandlers(this.plugins)}docViewUpdate(){for(let e of this.plugins){let t=e.value;if(t&&t.docViewUpdate)try{t.docViewUpdate(this)}catch(r){jn(this.state,r,"doc view update listener")}}}measure(e=!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,e&&this.observer.forceFlush();let t=null,r=this.viewState.scrollParent,i=this.viewState.getScrollOffset(),{scrollAnchorPos:s,scrollAnchorHeight:o,scaleY:a}=this.viewState;Math.abs(i-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0){if(av(r||this.win))s=-1,o=this.viewState.heightMap.height/this.viewState.scaleY;else{let m=this.viewState.scrollAnchorAt(i);s=m.from,o=m.top}a=this.viewState.scaleY}this.updateState=1;let c=this.viewState.measure();if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let h=d.map(m=>{try{return m.read(this)}catch(O){return jn(this.state,O),zS}}),u=bd.create(this,this.state,[]),f=!1;u.flags|=c,t?t.flags|=c:t=u,this.updateState=2,u.empty||(this.updatePlugins(u),this.inputState.update(u),this.updateAttrs(),f=this.docView.update(u),f&&this.docViewUpdate());for(let m=0;m<d.length;m++)if(h[m]!=zS)try{let O=d[m];O.write&&O.write(h[m],this)}catch(O){jn(this.state,O)}if(f&&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 O=(s<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(s).top)/this.viewState.scaleY-o/a;if((O>1||O<-1)&&!(ae.ios&&this.inputState.lastIOSMomentumScroll>Date.now()-100)&&(r==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){i=i+O,r?s<0?r.scrollTop=r.scrollHeight:r.scrollTop+=O:this.win.scrollBy(0,O),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(Zp))l(t)}get themeClasses(){return lm+" "+(this.state.facet(am)?Vv:Bv)+" "+this.state.facet(sd)}updateAttrs(){let e=WS(this,kv,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(xi)?"true":"false",class:"cm-content",style:`${ae.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),WS(this,Qm,t);let r=this.observer.ignore(()=>{let i=yS(this.contentDOM,this.contentAttrs,t),s=yS(this.dom,this.editorAttrs,e);return i||s});return this.editorAttrs=e,this.contentAttrs=t,r}showAnnouncements(e){let t=!0;for(let r of e)for(let i of r.effects)if(i.is(n.announce)){t&&(this.announceDOM.textContent=""),t=!1;let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=i.value}}mountStyles(){this.styleModules=this.state.facet(Ua);let e=this.state.facet(n.cspNonce);mr.mount(this.root,this.styleModules.concat(w2).reverse(),e?{nonce:e}: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(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;t<this.measureRequests.length;t++)if(this.measureRequests[t].key===e.key){this.measureRequests[t]=e;return}}this.measureRequests.push(e)}}plugin(e){let t=this.pluginMap.get(e);return(t===void 0||t&&t.plugin!=e)&&this.pluginMap.set(e,t=this.plugins.find(r=>r.plugin==e)||null),t&&t.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(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,r){return wp(this,e,kS(this,e,t,r))}moveByGroup(e,t){return wp(this,e,kS(this,e,t,r=>Y_(this,e.head,r)))}visualLineSide(e,t){let r=this.bidiSpans(e),i=this.textDirectionAt(e.from),s=r[t?r.length-1:0];return z.cursor(s.side(t,i)+e.from,s.forward(!t,i)?1:-1)}moveToLineBoundary(e,t,r=!0){return F_(this,e,t,r)}moveVertically(e,t,r){return wp(this,e,j_(this,e,t,r))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let r=jp(this,e,t);return r&&r.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),jp(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let r=this.state.doc.lineAt(e),i=this.bidiSpans(r),s=i[br.find(i,e-r.from,-1,t)];return this.docView.coordsAt(e,t,s.dir==qe.RTL)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(vv)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>k2)return fv(e.length);let t=this.textDirectionAt(e.from),r;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==t&&(s.fresh||uv(s.isolates,r=wS(this,e))))return s.order;r||(r=wS(this,e));let i=k_(e.text,t,r);return this.bidiCache.push(new $d(e.from,e.to,t,r,!0,i)),i}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||ae.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{ov(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.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(e,t={}){var r,i,s,o;return ed.of(new Ja(typeof e=="number"?z.cursor(e):e,(r=t.y)!==null&&r!==void 0?r:"nearest",(i=t.x)!==null&&i!==void 0?i:"nearest",(s=t.yMargin)!==null&&s!==void 0?s:5,(o=t.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return ed.of(new Ja(z.cursor(r.from),"start","start",r.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return it.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return it.define(()=>({}),{eventObservers:e})}static theme(e,t){let r=mr.newName(),i=[sd.of(r),Ua.of(cm(`.${r}`,e))];return t&&t.dark&&i.push(am.of(!0)),i}static baseTheme(e){return pr.lowest(Ua.of(cm("."+lm,e,Fv)))}static findFromDOM(e){var t;let r=e.querySelector(".cm-content"),i=r&&mt.get(r)||mt.get(e);return((t=i==null?void 0:i.root)===null||t===void 0?void 0:t.view)||null}};F.styleModule=Ua;F.inputHandler=yv;F.clipboardInputFilter=km;F.clipboardOutputFilter=$m;F.scrollHandler=xv;F.focusChangeEffect=Sv;F.perLineTextDirection=vv;F.exceptionSink=bv;F.updateListener=Zp;F.editable=xi;F.mouseSelectionStyle=Ov;F.dragMovesSelection=gv;F.clickAddsSelectionRange=mv;F.decorations=Rd;F.blockWrappers=$v;F.outerDecorations=Tm;F.atomicRanges=ul;F.bidiIsolatedRanges=Qv;F.cursorScrollMargin=oe.define({combine:n=>{let e=5,t=5;for(let r of n)typeof r=="number"?e=t=r:{x:e,y:t}=r;return{x:e,y:t}}});F.scrollMargins=Tv;F.darkTheme=am;F.cspNonce=oe.define({combine:n=>n.length?n[0]:""});F.contentAttributes=Qm;F.editorAttributes=kv;F.lineWrapping=F.contentAttributes.of({class:"cm-lineWrapping"});F.announce=ye.define();var k2=4096,zS={},$d=class n{constructor(e,t,r,i,s,o){this.from=e,this.to=t,this.dir=r,this.isolates=i,this.fresh=s,this.order=o}static update(e,t){if(t.empty&&!e.some(s=>s.fresh))return e;let r=[],i=e.length?e[e.length-1].dir:qe.LTR;for(let s=Math.max(0,e.length-10);s<e.length;s++){let o=e[s];o.dir==i&&!t.touchesRange(o.from,o.to)&&r.push(new n(t.mapPos(o.from,1),t.mapPos(o.to,-1),o.dir,o.isolates,!1,o.order))}return r}};function WS(n,e,t){for(let r=n.state.facet(e),i=r.length-1;i>=0;i--){let s=r[i],o=typeof s=="function"?s(n):s;o&&wm(o,t)}return t}var $2=ae.mac?"mac":ae.windows?"win":ae.linux?"linux":"key";function Q2(n,e){let t=n.split(/-(?!$)/),r=t[t.length-1];r=="Space"&&(r=" ");let i,s,o,a;for(let l=0;l<t.length-1;++l){let c=t[l];if(/^(cmd|meta|m)$/i.test(c))a=!0;else if(/^a(lt)?$/i.test(c))i=!0;else if(/^(c|ctrl|control)$/i.test(c))s=!0;else if(/^s(hift)?$/i.test(c))o=!0;else if(/^mod$/i.test(c))e=="mac"?a=!0:s=!0;else throw new Error("Unrecognized modifier name: "+c)}return i&&(r="Alt-"+r),s&&(r="Ctrl-"+r),a&&(r="Meta-"+r),o&&(r="Shift-"+r),r}function od(n,e,t){return e.altKey&&(n="Alt-"+n),e.ctrlKey&&(n="Ctrl-"+n),e.metaKey&&(n="Meta-"+n),t!==!1&&e.shiftKey&&(n="Shift-"+n),n}var T2=pr.default(F.domEventHandlers({keydown(n,e){return Uv(Yv(e.state),n,e,"editor")}})),Sn=oe.define({enables:T2}),NS=new WeakMap;function Yv(n){let e=n.facet(Sn),t=NS.get(e);return t||NS.set(e,t=C2(e.reduce((r,i)=>r.concat(i),[]))),t}function jv(n,e,t){return Uv(Yv(n.state),e,n,t)}var ji=null,A2=4e3;function C2(n,e=$2){let t=Object.create(null),r=Object.create(null),i=(o,a)=>{let l=r[o];if(l==null)r[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")},s=(o,a,l,c,d)=>{var h,u;let f=t[o]||(t[o]=Object.create(null)),m=a.split(/ (?!$)/).map(x=>Q2(x,e));for(let x=1;x<m.length;x++){let D=m.slice(0,x).join(" ");i(D,!0),f[D]||(f[D]={preventDefault:!0,stopPropagation:!1,run:[M=>{let Z=ji={view:M,prefix:D,scope:o};return setTimeout(()=>{ji==Z&&(ji=null)},A2),!0}]})}let O=m.join(" ");i(O,!1);let S=f[O]||(f[O]={preventDefault:!1,stopPropagation:!1,run:((u=(h=f._any)===null||h===void 0?void 0:h.run)===null||u===void 0?void 0:u.slice())||[]});l&&S.run.push(l),c&&(S.preventDefault=!0),d&&(S.stopPropagation=!0)};for(let o of n){let a=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let c of a){let d=t[c]||(t[c]=Object.create(null));d._any||(d._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:h}=o;for(let u in d)d[u].run.push(f=>h(f,um))}let l=o[e]||o.key;if(l)for(let c of a)s(c,l,o.run,o.preventDefault,o.stopPropagation),o.shift&&s(c,"Shift-"+l,o.shift,o.preventDefault,o.stopPropagation)}return t}var um=null;function Uv(n,e,t,r){um=e;let i=pS(e),s=Ir(i,0),o=Yi(s)==i.length&&i!=" ",a="",l=!1,c=!1,d=!1;ji&&ji.view==t&&ji.scope==r&&(a=ji.prefix+" ",Dv.indexOf(e.keyCode)<0&&(c=!0,ji=null));let h=new Set,u=S=>{if(S){for(let x of S.run)if(!h.has(x)&&(h.add(x),x(t)))return S.stopPropagation&&(d=!0),!0;S.preventDefault&&(S.stopPropagation&&(d=!0),c=!0)}return!1},f=n[r],m,O;return f&&(u(f[a+od(i,e,!o)])?l=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(ae.windows&&e.ctrlKey&&e.altKey)&&!(ae.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(m=wi[e.keyCode])&&m!=i?(u(f[a+od(m,e,!0)])||e.shiftKey&&(O=Eo[e.keyCode])!=i&&O!=m&&u(f[a+od(O,e,!1)]))&&(l=!0):o&&e.shiftKey&&u(f[a+od(i,e,!0)])&&(l=!0),!l&&u(f._any)&&(l=!0)),c&&(l=!0),l&&d&&e.stopPropagation(),um=null,l}var Ws=class n{constructor(e,t,r,i,s){this.className=e,this.left=t,this.top=r,this.width=i,this.height=s}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,r){if(r.empty){let i=e.coordsAtPos(r.head,r.assoc||1);if(!i)return[];let s=qv(e);return[new n(t,i.left-s.left,i.top-s.top,null,i.bottom-i.top)]}else return _2(e,t,r)}};function qv(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==qe.LTR?e.left:e.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:e.top-n.scrollDOM.scrollTop*n.scaleY}}function BS(n,e,t,r){let i=n.coordsAtPos(e,t*2);if(!i)return r;let s=n.dom.getBoundingClientRect(),o=(i.top+i.bottom)/2,a=n.posAtCoords({x:s.left+1,y:o}),l=n.posAtCoords({x:s.right-1,y:o});return a==null||l==null?r:{from:Math.max(r.from,Math.min(a,l)),to:Math.min(r.to,Math.max(a,l))}}function _2(n,e,t){if(t.to<=n.viewport.from||t.from>=n.viewport.to)return[];let r=Math.max(t.from,n.viewport.from),i=Math.min(t.to,n.viewport.to),s=n.textDirection==qe.LTR,o=n.contentDOM,a=o.getBoundingClientRect(),l=qv(n),c=o.querySelector(".cm-line"),d=c&&window.getComputedStyle(c),h=a.left+(d?parseInt(d.paddingLeft)+Math.min(0,parseInt(d.textIndent)):0),u=a.right-(d?parseInt(d.paddingRight):0),f=Yp(n,r,1),m=Yp(n,i,-1),O=f.type==Ht.Text?f:null,S=m.type==Ht.Text?m:null;if(O&&(n.lineWrapping||f.widgetLineBreaks)&&(O=BS(n,r,1,O)),S&&(n.lineWrapping||m.widgetLineBreaks)&&(S=BS(n,i,-1,S)),O&&S&&O.from==S.from&&O.to==S.to)return D(M(t.from,t.to,O));{let k=O?M(t.from,null,O):Z(f,!1),w=S?M(null,t.to,S):Z(m,!0),R=[];return(O||f).to<(S||m).from-(O&&S?1:0)||f.widgetLineBreaks>1&&k.bottom+n.defaultLineHeight/2<w.top?R.push(x(h,k.bottom,u,w.top)):k.bottom<w.top&&n.elementAtHeight((k.bottom+w.top)/2).type==Ht.Text&&(k.bottom=w.top=(k.bottom+w.top)/2),D(k).concat(R).concat(D(w))}function x(k,w,R,X){return new Ws(e,k-l.left,w-l.top,Math.max(0,R-k),X-w)}function D({top:k,bottom:w,horizontal:R}){let X=[];for(let W=0;W<R.length;W+=2)X.push(x(R[W],k,R[W+1],w));return X}function M(k,w,R){let X=1e9,W=-1e9,ne=[];function de(ve,we,B,ue,G){let Pe=n.coordsAtPos(ve,ve==R.to?-2:2),Qe=n.coordsAtPos(B,B==R.from?2:-2);!Pe||!Qe||(X=Math.min(Pe.top,Qe.top,X),W=Math.max(Pe.bottom,Qe.bottom,W),G==qe.LTR?ne.push(s&&we?h:Pe.left,s&&ue?u:Qe.right):ne.push(!s&&ue?h:Qe.left,!s&&we?u:Pe.right))}let q=k!=null?k:R.from,pe=w!=null?w:R.to;for(let ve of n.visibleRanges)if(ve.to>q&&ve.from<pe)for(let we=Math.max(ve.from,q),B=Math.min(ve.to,pe);;){let ue=n.state.doc.lineAt(we);for(let G of n.bidiSpans(ue)){let Pe=G.from+ue.from,Qe=G.to+ue.from;if(Pe>=B)break;Qe>we&&de(Math.max(Pe,we),k==null&&Pe<=q,Math.min(Qe,B),w==null&&Qe>=pe,G.dir)}if(we=ue.to+1,we>=B)break}return ne.length==0&&de(q,k==null,pe,w==null,n.textDirection),{top:X,bottom:W,horizontal:ne}}function Z(k,w){let R=a.top+(w?k.top:k.bottom);return{top:R,bottom:R,horizontal:[]}}}function E2(n,e){return n.constructor==e.constructor&&n.eq(e)}var fm=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(hd)!=e.state.facet(hd)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,r=e.facet(hd);for(;t<r.length&&r[t]!=this.layer;)t++;this.dom.style.zIndex=String((this.layer.above?150:-1)-t)}measure(){return this.layer.markers(this.view)}scale(){let{scaleX:e,scaleY:t}=this.view;(e!=this.scaleX||t!=this.scaleY)&&(this.scaleX=e,this.scaleY=t,this.dom.style.transform=`scale(${1/e}, ${1/t})`)}draw(e){if(e.length!=this.drawn.length||e.some((t,r)=>!E2(t,this.drawn[r]))){let t=this.dom.firstChild,r=0;for(let i of e)i.update&&t&&i.constructor&&this.drawn[r].constructor&&i.update(t,this.drawn[r])?(t=t.nextSibling,r++):this.dom.insertBefore(i.draw(),t);for(;t;){let i=t.nextSibling;t.remove(),t=i}this.drawn=e,ae.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},hd=oe.define();function Gv(n){return[it.define(e=>new fm(e,n)),hd.of(n)]}var Fo=oe.define({combine(n){return Yn(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function Ld(n={}){return[Fo.of(n),R2,M2,D2,wv.of(!0)]}function Hv(n){return n.startState.facet(Fo)!=n.state.facet(Fo)}var R2=Gv({above:!0,markers(n){let{state:e}=n,t=e.facet(Fo),r=[];for(let i of e.selection.ranges){let s=i==e.selection.main;if(i.empty||t.drawRangeCursor&&!(s&&ae.ios&&t.iosSelectionHandles)){let o=s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",a=i.empty?i:z.cursor(i.head,i.assoc);for(let l of Ws.forRange(n,o,a))r.push(l)}}return r},update(n,e){n.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=Hv(n);return t&&VS(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){VS(e.state,n)},class:"cm-cursorLayer"});function VS(n,e){e.style.animationDuration=n.facet(Fo).cursorBlinkRate+"ms"}var M2=Gv({above:!1,markers(n){let e=[],{main:t,ranges:r}=n.state.selection;for(let i of r)if(!i.empty)for(let s of Ws.forRange(n,"cm-selectionBackground",i))e.push(s);if(ae.ios&&!t.empty&&n.state.facet(Fo).iosSelectionHandles){for(let i of Ws.forRange(n,"cm-selectionHandle cm-selectionHandle-start",z.cursor(t.from,1)))e.push(i);for(let i of Ws.forRange(n,"cm-selectionHandle cm-selectionHandle-end",z.cursor(t.to,1)))e.push(i)}return e},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||Hv(n)},class:"cm-selectionLayer"}),L2=ae.gecko&&ae.gecko_version==153?"#ffffff01":"transparent",D2=pr.highest(F.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:`${L2} !important`},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Kv=ye.define({map(n,e){return n==null?null:e.mapPos(n)}}),Ga=Xe.define({create(){return null},update(n,e){return n!=null&&(n=e.changes.mapPos(n)),e.effects.reduce((t,r)=>r.is(Kv)?r.value:t,n)}}),Z2=it.fromClass(class{constructor(n){this.view=n,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(n){var e;let t=n.state.field(Ga);t==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(n.startState.field(Ga)!=t||n.docChanged||n.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:n}=this,e=n.state.field(Ga),t=e!=null&&n.coordsAtPos(e);if(!t)return null;let r=n.scrollDOM.getBoundingClientRect();return{left:t.left-r.left+n.scrollDOM.scrollLeft*n.scaleX,top:t.top-r.top+n.scrollDOM.scrollTop*n.scaleY,height:t.bottom-t.top}}drawCursor(n){if(this.cursor){let{scaleX:e,scaleY:t}=this.view;n?(this.cursor.style.left=n.left/e+"px",this.cursor.style.top=n.top/t+"px",this.cursor.style.height=n.height/t+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(n){this.view.state.field(Ga)!=n&&this.view.dispatch({effects:Kv.of(n)})}},{eventObservers:{dragover(n){this.setDropPos(this.view.posAtCoords({x:n.clientX,y:n.clientY}))},dragleave(n){(n.target==this.view.contentDOM||!this.view.contentDOM.contains(n.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Jv(){return[Ga,Z2]}function FS(n,e,t,r,i){e.lastIndex=0;for(let s=n.iterRange(t,r),o=t,a;!s.next().done;o+=s.value.length)if(!s.lineBreak)for(;a=e.exec(s.value);)i(o+a.index,a)}function I2(n,e){let t=n.visibleRanges;if(t.length==1&&t[0].from==n.viewport.from&&t[0].to==n.viewport.to)return t;let r=[];for(let{from:i,to:s}of t)i=Math.max(n.state.doc.lineAt(i).from,i-e),s=Math.min(n.state.doc.lineAt(s).to,s+e),r.length&&r[r.length-1].to>=i?r[r.length-1].to=s:r.push({from:i,to:s});return r}var dl=class{constructor(e){let{regexp:t,decoration:r,decorate:i,boundary:s,maxLength:o=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,i)this.addMatch=(a,l,c,d)=>i(d,c,c+a[0].length,a,l);else if(typeof r=="function")this.addMatch=(a,l,c,d)=>{let h=r(a,l,c);h&&d(c,c+a[0].length,h)};else if(r)this.addMatch=(a,l,c,d)=>d(c,c+a[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=s,this.maxLength=o}createDeco(e){let t=new Zr,r=t.add.bind(t);for(let{from:i,to:s}of I2(e,this.maxLength))FS(e.state.doc,this.regexp,i,s,(o,a)=>this.addMatch(a,e,o,r));return t.finish()}updateDeco(e,t){let r=1e9,i=-1;return e.docChanged&&e.changes.iterChanges((s,o,a,l)=>{l>=e.view.viewport.from&&a<=e.view.viewport.to&&(r=Math.min(a,r),i=Math.max(l,i))}),e.viewportMoved||i-r>1e3?this.createDeco(e.view):i>-1?this.updateRange(e.view,t.map(e.changes),r,i):t}updateRange(e,t,r,i){for(let s of e.visibleRanges){let o=Math.max(s.from,r),a=Math.min(s.to,i);if(a>=o){let l=e.state.doc.lineAt(o),c=l.to<a?e.state.doc.lineAt(a):l,d=Math.max(s.from,l.from),h=Math.min(s.to,c.to);if(this.boundary){for(;o>l.from;o--)if(this.boundary.test(l.text[o-1-l.from])){d=o;break}for(;a<c.to;a++)if(this.boundary.test(c.text[a-c.from])){h=a;break}}let u=[],f,m=(O,S,x)=>u.push(x.range(O,S));if(l==c)for(this.regexp.lastIndex=d-l.from;(f=this.regexp.exec(l.text))&&f.index<h-l.from;)this.addMatch(f,e,f.index+l.from,m);else FS(e.state.doc,this.regexp,d,h,(O,S)=>this.addMatch(S,e,O,m));t=t.update({filterFrom:d,filterTo:h,filter:(O,S)=>O<d||S>h,add:u})}}return t}},pm=/x/.unicode!=null?"gu":"g",X2=new RegExp(`[\0-\b
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,pm),z2={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"},Pp=null;function W2(){var n;if(Pp==null&&typeof document!="undefined"&&document.body){let e=document.body.style;Pp=((n=e.tabSize)!==null&&n!==void 0?n:e.MozTabSize)!=null}return Pp||!1}var ud=oe.define({combine(n){let e=Yn(n,{render:null,specialChars:X2,addSpecialChars:null});return(e.replaceTabs=!W2())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,pm)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,pm)),e}});function ew(n={}){return[ud.of(n),N2()]}var YS=null;function N2(){return YS||(YS=it.fromClass(class{constructor(n){this.view=n,this.decorations=J.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(n.state.facet(ud)),this.decorations=this.decorator.createDeco(n)}makeDecorator(n){return new dl({regexp:n.specialChars,decoration:(e,t,r)=>{let{doc:i}=t.state,s=Ir(e[0],0);if(s==9){let o=i.lineAt(r),a=t.state.tabSize,l=Gt(o.text,a,r-o.from);return J.replace({widget:new gm((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=J.replace({widget:new mm(n,s)}))},boundary:n.replaceTabs?void 0:/[^]/})}update(n){let e=n.state.facet(ud);n.startState.facet(ud)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(n.view)):this.decorations=this.decorator.updateDeco(n,this.decorations)}},{decorations:n=>n.decorations}))}var B2="\u2022";function V2(n){return n>=32?B2:n==10?"\u2424":String.fromCharCode(9216+n)}var mm=class extends Ct{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=V2(this.code),r=e.state.phrase("Control character")+" "+(z2[this.code]||"0x"+this.code.toString(16)),i=this.options.render&&this.options.render(this.code,r,t);if(i)return i;let s=document.createElement("span");return s.textContent=t,s.title=r,s.setAttribute("aria-label",r),s.className="cm-specialChar",s}ignoreEvent(){return!1}},gm=class extends Ct{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};function Dd(){return Y2}var F2=J.line({class:"cm-activeLine"}),Y2=it.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=-1,t=[];for(let r of n.state.selection.ranges){let i=n.lineBlockAt(r.head);i.from>e&&(t.push(F2.range(i.from)),e=i.from)}return J.set(t)}},{decorations:n=>n.decorations});var Om=2e3;function j2(n,e,t){let r=Math.min(e.line,t.line),i=Math.max(e.line,t.line),s=[];if(e.off>Om||t.off>Om||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=r;l<=i;l++){let c=n.doc.line(l);c.length<=a&&s.push(z.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=r;l<=i;l++){let c=n.doc.line(l),d=Kc(c.text,o,n.tabSize,!0);if(d<0)s.push(z.cursor(c.to));else{let h=Kc(c.text,a,n.tabSize);s.push(z.range(c.from+d,c.from+h))}}}return s}function U2(n,e){let t=n.coordsAtPos(n.viewport.from);return t?Math.round(Math.abs((t.left-e)/n.defaultCharacterWidth)):-1}function jS(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1),r=n.state.doc.lineAt(t),i=t-r.from,s=i>Om?-1:i==r.length?U2(n,e.clientX):Gt(r.text,n.state.tabSize,t-r.from);return{line:r.number,col:s,off:i}}function q2(n,e){let t=jS(n,e),r=n.state.selection;return t?{update(i){if(i.docChanged){let s=i.changes.mapPos(i.startState.doc.line(t.line).from),o=i.state.doc.lineAt(s);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},r=r.map(i.changes)}},get(i,s,o){let a=jS(n,i);if(!a)return r;let l=j2(n.state,t,a);return l.length?o?z.create(l.concat(r.ranges)):z.create(l):r}}:null}function Zd(n){let e=(n==null?void 0:n.eventFilter)||(t=>t.altKey&&t.button==0);return F.mouseSelectionStyle.of((t,r)=>e(r)?q2(t,r):null)}var G2={Alt:[18,n=>!!n.altKey],Control:[17,n=>!!n.ctrlKey],Shift:[16,n=>!!n.shiftKey],Meta:[91,n=>!!n.metaKey]},H2={style:"cursor: crosshair"};function Id(n={}){let[e,t]=G2[n.key||"Alt"],r=it.fromClass(class{constructor(i){this.view=i,this.isDown=!1}set(i){this.isDown!=i&&(this.isDown=i,this.view.update([]))}},{eventObservers:{keydown(i){this.set(i.keyCode==e||t(i))},keyup(i){(i.keyCode==e||!t(i))&&this.set(!1)},mousemove(i){this.set(t(i))}}});return[r,F.contentAttributes.of(i=>{var s;return!((s=i.plugin(r))===null||s===void 0)&&s.isDown?H2:null})]}var ad="-10000px",Qd=class{constructor(e,t,r,i){this.facet=t,this.createTooltipView=r,this.removeTooltipView=i,this.input=e.state.facet(t),this.tooltips=this.input.filter(o=>o);let s=null;this.tooltipViews=this.tooltips.map(o=>s=r(o,s))}update(e,t){var r;let i=e.state.facet(this.facet),s=i.filter(l=>l);if(i===this.input){for(let l of this.tooltipViews)l.update&&l.update(e);return!1}let o=[],a=t?[]:null;for(let l=0;l<s.length;l++){let c=s[l],d=-1;if(c){for(let h=0;h<this.tooltips.length;h++){let u=this.tooltips[h];u&&u.create==c.create&&(d=h)}if(d<0)o[l]=this.createTooltipView(c,l?o[l-1]:null),a&&(a[l]=!!c.above);else{let h=o[l]=this.tooltipViews[d];a&&(a[l]=t[d]),h.update&&h.update(e)}}}for(let l of this.tooltipViews)o.indexOf(l)<0&&(this.removeTooltipView(l),(r=l.destroy)===null||r===void 0||r.call(l));return t&&(a.forEach((l,c)=>t[c]=l),t.length=a.length),this.input=i,this.tooltips=s,this.tooltipViews=o,!0}};function K2(n){let e=n.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}var kp=oe.define({combine:n=>{var e,t,r;return{position:ae.ios?"absolute":((e=n.find(i=>i.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=n.find(i=>i.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((r=n.find(i=>i.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||K2}}}),US=new WeakMap,tw=it.fromClass(class{constructor(n){this.view=n,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=n.state.facet(kp);this.position=e.position,this.parent=e.parent,this.classes=n.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 Qd(n,_m,(t,r)=>this.createTooltip(t,r),t=>{this.resizeObserver&&this.resizeObserver.unobserve(t.dom),t.dom.remove()}),this.above=this.manager.tooltips.map(t=>!!t.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),n.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 n of this.manager.tooltipViews)this.intersectionObserver.observe(n.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(n){n.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(n,this.above);e&&this.observeIntersection();let t=e||n.geometryChanged,r=n.state.facet(kp);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let i of this.manager.tooltipViews)i.dom.style.position=this.position;t=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let i of this.manager.tooltipViews)this.container.appendChild(i.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(n,e){let t=n.create(this.view),r=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),n.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let i=document.createElement("div");i.className="cm-tooltip-arrow",t.dom.appendChild(i)}return t.dom.style.position=this.position,t.dom.style.top=ad,t.dom.style.left="0px",this.container.insertBefore(t.dom,r),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var n,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(n=r.destroy)===null||n===void 0||n.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.intersectionObserver)===null||t===void 0||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let n=1,e=1,t=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:s}=this.manager.tooltipViews[0];if(ae.safari){let o=s.getBoundingClientRect();t=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else t=!!s.offsetParent&&s.offsetParent!=this.container.ownerDocument.body}if(t||this.position=="absolute")if(this.parent){let s=this.parent.getBoundingClientRect();s.width&&s.height&&(n=s.width/this.parent.offsetWidth,e=s.height/this.parent.offsetHeight)}else({scaleX:n,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),i=Am(this.view);return{visible:{left:r.left+i.left,top:r.top+i.top,right:r.right-i.right,bottom:r.bottom-i.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((s,o)=>{let a=this.manager.tooltipViews[o];return a.getCoords?a.getCoords(s.pos):this.view.coordsAtPos(s.pos)}),size:this.manager.tooltipViews.map(({dom:s})=>s.getBoundingClientRect()),space:this.view.state.facet(kp).tooltipSpace(this.view),scaleX:n,scaleY:e,makeAbsolute:t}}writeMeasure(n){var e;if(n.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let a of this.manager.tooltipViews)a.dom.style.position="absolute"}let{visible:t,space:r,scaleX:i,scaleY:s}=n,o=[];for(let a=0;a<this.manager.tooltips.length;a++){let l=this.manager.tooltips[a],c=this.manager.tooltipViews[a],{dom:d}=c,h=n.pos[a],u=n.size[a];if(!h||l.clip!==!1&&(h.bottom<=Math.max(t.top,r.top)||h.top>=Math.min(t.bottom,r.bottom)||h.right<Math.max(t.left,r.left)-.1||h.left>Math.min(t.right,r.right)+.1)){d.style.top=ad;continue}let f=l.arrow?c.dom.querySelector(".cm-tooltip-arrow"):null,m=f?7:0,O=u.right-u.left,S=(e=US.get(c))!==null&&e!==void 0?e:u.bottom-u.top,x=c.offset||eE,D=this.view.textDirection==qe.LTR,M=u.width>r.right-r.left?D?r.left:r.right-u.width:D?Math.max(r.left,Math.min(h.left-(f?14:0)+x.x,r.right-O)):Math.min(Math.max(r.left,h.left-O+(f?14:0)-x.x),r.right-O),Z=this.above[a];!l.strictSide&&(Z?h.top-S-m-x.y<r.top:h.bottom+S+m+x.y>r.bottom)&&Z==r.bottom-h.bottom>h.top-r.top&&(Z=this.above[a]=!Z);let k=(Z?h.top-r.top:r.bottom-h.bottom)-m;if(k<S&&c.resize!==!1){if(k<this.view.defaultLineHeight){d.style.top=ad;continue}US.set(c,S),d.style.height=(S=k)/s+"px"}else d.style.height&&(d.style.height="");let w=Z?h.top-S-m-x.y:h.bottom+m+x.y,R=M+O;if(c.overlap!==!0)for(let X of o)X.left<R&&X.right>M&&X.top<w+S&&X.bottom>w&&(w=Z?X.top-S-2-m:X.bottom+m+2);if(this.position=="absolute"?(d.style.top=(w-n.parent.top)/s+"px",qS(d,(M-n.parent.left)/i)):(d.style.top=w/s+"px",qS(d,M/i)),f){let X=h.left+(D?x.x:-x.x)-(M+14-7);f.style.left=X/i+"px"}c.overlap!==!0&&o.push({left:M,top:w,right:R,bottom:w+S}),d.classList.toggle("cm-tooltip-above",Z),d.classList.toggle("cm-tooltip-below",!Z),c.positioned&&c.positioned(n.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 n of this.manager.tooltipViews)n.dom.style.top=ad}},{eventObservers:{scroll(){this.maybeMeasure()}}});function qS(n,e){let t=parseInt(n.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(n.style.left=e+"px")}var J2=F.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"}}}),eE={x:0,y:0},_m=oe.define({enables:[tw,J2]}),Td=oe.define({combine:n=>n.reduce((e,t)=>e.concat(t),[])}),Ad=class n{static create(e){return new n(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Qd(e,Td,(t,r)=>this.createHostedView(t,r),t=>t.dom.remove())}createHostedView(e,t){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(let t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let t of this.manager.tooltipViews)(e=t.destroy)===null||e===void 0||e.call(t)}passProp(e){let t;for(let r of this.manager.tooltipViews){let i=r[e];if(i!==void 0){if(t===void 0)t=i;else if(t!==i)return}}return t}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}},tE=_m.compute([Td],n=>{let e=n.facet(Td);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var r;return(r=t.end)!==null&&r!==void 0?r:t.pos})),create:Ad.create,above:e[0].above,arrow:e.some(t=>t.arrow)}}),nE=oe.define(),bm=class{constructor(e,t,r,i,s,o){this.view=e,this.source=t,this.field=r,this.locked=i,this.setHover=s,this.hoverTime=o,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(e){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 e=Date.now()-this.lastMove.time;e<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-e):this.startHover()}startHover(){clearTimeout(this.restartTimeout);let{view:e,lastMove:t}=this,r=e.docView.tile.nearest(t.target);if(!r)return;let i,s=1;if(r.isWidget())i=r.posAtStart;else{if(i=e.posAtCoords(t),i==null)return;let o=e.coordsAtPos(i);if(!o||t.y<o.top||t.y>o.bottom||t.x<o.left-e.defaultCharacterWidth||t.x>o.right+e.defaultCharacterWidth)return;let a=e.bidiSpans(e.state.doc.lineAt(i)).find(c=>c.from<=i&&c.to>=i),l=a&&a.dir==qe.RTL?-1:1;s=t.x<o.left?-l:l}this.activateHover(e,i,s)}activateHover(e,t,r,i){let s=this.source(e,t,r),o=a=>{if(a&&!(Array.isArray(a)&&!a.length)){let l=Array.isArray(a)?a:[a];i&&this.locked.set(l,i),e.dispatch({effects:this.setHover.of(l)})}};if(s&&"then"in s){let a=this.pending={pos:t};s.then(l=>{this.pending==a&&(this.pending=null,o(l))},l=>jn(e.state,l,"hover tooltip"))}else o(s)}get tooltip(){let e=this.view.plugin(tw),t=e?e.manager.tooltips.findIndex(r=>r.create==Ad.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:i,tooltip:s}=this;if(i.length&&!this.locked.has(i)&&s&&!rE(s.dom,e)||this.pending){let{pos:o}=i[0]||this.pending,a=(r=(t=i[0])===null||t===void 0?void 0:t.end)!==null&&r!==void 0?r:o;(o==a?this.view.posAtCoords(this.lastMove)!=o:!iE(this.view,o,a,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:t}=this;if(t.length&&!this.locked.has(t)){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=r=>{e.removeEventListener("mouseleave",t);let{active:i}=this;i.length&&!this.locked.has(i)&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",t)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}},ld=4;function rE(n,e){let{left:t,right:r,top:i,bottom:s}=n.getBoundingClientRect(),o;if(o=n.querySelector(".cm-tooltip-arrow")){let a=o.getBoundingClientRect();i=Math.min(a.top,i),s=Math.max(a.bottom,s)}return e.clientX>=t-ld&&e.clientX<=r+ld&&e.clientY>=i-ld&&e.clientY<=s+ld}function iE(n,e,t,r,i,s){let o=n.scrollDOM.getBoundingClientRect(),a=n.documentTop+n.documentPadding.top+n.contentHeight;if(o.left>r||o.right<r||o.top>i||Math.min(o.bottom,a)<i)return!1;let l=n.posAtCoords({x:r,y:i},!1);return l>=e&&l<=t}function nw(n,e={}){let t=ye.define(),r=new WeakMap,i=Xe.define({create(){return[]},update(o,a){let l=r.get(o);if(o.length&&(e.hideOnChange&&(a.docChanged||a.selection)?o=[]:l&&l(a)?o=[]:e.hideOn&&(o=o.filter(c=>!e.hideOn(a,c)))),a.docChanged&&o.length){let c=[];for(let d of o){let h=a.changes.mapPos(d.pos,-1,Xt.TrackDel);if(h!=null){let u=Object.assign(Object.create(null),d);u.pos=h,u.end!=null&&(u.end=a.changes.mapPos(u.end)),c.push(u)}}o=c}for(let c of a.effects)c.is(t)&&(o=c.value,l=void 0),(c.is(sE)&&!c.value||c.value==i)&&(o=[]);return o.length&&l&&r.set(o,l),o},provide:o=>Td.from(o)}),s=it.define(o=>new bm(o,n,i,r,t,e.hoverTime||300));return{active:i,extension:[i,s,nE.of(s),tE]}}var sE=ye.define();var GS=oe.define({combine(n){let e,t;for(let r of n)e=e||r.topContainer,t=t||r.bottomContainer;return{topContainer:e,bottomContainer:t}}});function Em(n,e){let t=n.plugin(rw),r=t?t.specs.indexOf(e):-1;return r>-1?t.panels[r]:null}var rw=it.fromClass(class{constructor(n){this.input=n.state.facet(hl),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(n));let e=n.state.facet(GS);this.top=new Do(n,!0,e.topContainer),this.bottom=new Do(n,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(n){let e=n.state.facet(GS);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Do(n.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Do(n.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=n.state.facet(hl);if(t!=this.input){let r=t.filter(l=>l),i=[],s=[],o=[],a=[];for(let l of r){let c=this.specs.indexOf(l),d;c<0?(d=l(n.view),a.push(d)):(d=this.panels[c],d.update&&d.update(n)),i.push(d),(d.top?s:o).push(d)}this.specs=r,this.panels=i,this.top.sync(s),this.bottom.sync(o);for(let l of a)l.dom.classList.add("cm-panel"),l.mount&&l.mount()}else for(let r of this.panels)r.update&&r.update(n)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:n=>F.scrollMargins.of(e=>{let t=e.plugin(n);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})}),Do=class{constructor(e,t,r){this.view=e,this.top=t,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,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";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=HS(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=HS(e)}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 e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}};function HS(n){let e=n.nextSibling;return n.remove(),e}var hl=oe.define({enables:rw});function iw(n,e){let t,r=new Promise(o=>t=o),i=o=>oE(o,e,t);n.state.field($p,!1)?n.dispatch({effects:sw.of(i)}):n.dispatch({effects:ye.appendConfig.of($p.init(()=>[i]))});let s=ow.of(i);return{close:s,result:r.then(o=>((n.win.queueMicrotask||(l=>n.win.setTimeout(l,10)))(()=>{n.state.field($p).indexOf(i)>-1&&n.dispatch({effects:s})}),o))}}var $p=Xe.define({create(){return[]},update(n,e){for(let t of e.effects)t.is(sw)?n=[t.value].concat(n):t.is(ow)&&(n=n.filter(r=>r!=t.value));return n},provide:n=>hl.computeN([n],e=>e.field(n))}),sw=ye.define(),ow=ye.define();function oE(n,e,t){let r=e.content?e.content(n,()=>o(null)):null;if(!r){if(r=kt("form"),e.input){let a=kt("input",e.input);/^(text|password|number|email|tel|url)$/.test(a.type)&&a.classList.add("cm-textfield"),a.name||(a.name="input"),r.appendChild(kt("label",(e.label||"")+": ",a))}else r.appendChild(document.createTextNode(e.label||""));r.appendChild(document.createTextNode(" ")),r.appendChild(kt("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let i=r.nodeName=="FORM"?[r]:r.querySelectorAll("form");for(let a=0;a<i.length;a++){let l=i[a];l.addEventListener("keydown",c=>{c.keyCode==27?(c.preventDefault(),o(null)):c.keyCode==13&&(c.preventDefault(),o(l))}),l.addEventListener("submit",c=>{c.preventDefault(),o(l)})}let s=kt("div",r,kt("button",{onclick:()=>o(null),"aria-label":n.state.phrase("close"),class:"cm-dialog-close",type:"button"},["\xD7"]));e.class&&(s.className=e.class),s.classList.add("cm-dialog");function o(a){s.contains(s.ownerDocument.activeElement)&&n.focus(),t(a)}return{dom:s,top:e.top,mount:()=>{if(e.focus){let a;typeof e.focus=="string"?a=r.querySelector(e.focus):a=r.querySelector("input")||r.querySelector("button"),a&&"select"in a?a.select():a&&"focus"in a&&a.focus()}}}}var $t=class extends fr{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};$t.prototype.elementClass="";$t.prototype.toDOM=void 0;$t.prototype.mapMode=Xt.TrackBefore;$t.prototype.startSide=$t.prototype.endSide=-1;$t.prototype.point=!0;var fd=oe.define(),aE=oe.define(),lE={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>$e.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},il=oe.define();function Hi(n){return[aw(),il.of(Ue(Ue({},lE),n))]}var ym=oe.define({combine:n=>n.some(e=>e)});function aw(n){let e=[cE];return n&&n.fixed===!1&&e.push(ym.of(!0)),e}var cE=it.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.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=n.state.facet(il).map(e=>new Cd(n,e)),this.fixed=!n.state.facet(ym);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.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(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,r=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(r<(t.to-t.from)*.8)}if(n.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(ym)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=$e.iter(this.view.state.facet(fd),this.view.viewport.from),r=[],i=this.gutters.map(s=>new vm(s,this.view.viewport,-this.view.documentPadding.top));for(let s of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(s.type)){let o=!0;for(let a of s.type)if(a.type==Ht.Text&&o){Sm(t,r,a.from);for(let l of i)l.line(this.view,a,r);o=!1}else if(a.widget)for(let l of i)l.widget(this.view,a)}else if(s.type==Ht.Text){Sm(t,r,s.from);for(let o of i)o.line(this.view,s,r)}else if(s.widget)for(let o of i)o.widget(this.view,s);for(let s of i)s.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let e=n.startState.facet(il),t=n.state.facet(il),r=n.docChanged||n.heightChanged||n.viewportChanged||!$e.eq(n.startState.facet(fd),n.state.facet(fd),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let i of this.gutters)i.update(n)&&(r=!0);else{r=!0;let i=[];for(let s of t){let o=e.indexOf(s);o<0?i.push(new Cd(this.view,s)):(this.gutters[o].update(n),i.push(this.gutters[o]))}for(let s of this.gutters)s.dom.remove(),i.indexOf(s)<0&&s.destroy();for(let s of i)s.config.side=="after"?this.getDOMAfter().appendChild(s.dom):this.dom.appendChild(s.dom);this.gutters=i}return r}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>F.scrollMargins.of(e=>{let t=e.plugin(n);if(!t||t.gutters.length==0||!t.fixed)return null;let r=t.dom.offsetWidth*e.scaleX,i=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==qe.LTR?{left:r,right:i}:{right:r,left:i}})});function KS(n){return Array.isArray(n)?n:[n]}function Sm(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}var vm=class{constructor(e,t,r){this.gutter=e,this.height=r,this.i=0,this.cursor=$e.iter(e.markers,t.from)}addElement(e,t,r){let{gutter:i}=this,s=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==i.elements.length){let a=new _d(e,o,s,r);i.elements.push(a),i.dom.appendChild(a.dom)}else i.elements[this.i].update(e,o,s,r);this.height=t.bottom,this.i++}line(e,t,r){let i=[];Sm(this.cursor,i,t.from),r.length&&(i=i.concat(r));let s=this.gutter.config.lineMarker(e,t,i);s&&i.unshift(s);let o=this.gutter;i.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,i)}widget(e,t){let r=this.gutter.config.widgetMarker(e,t.widget,t),i=r?[r]:null;for(let s of e.state.facet(aE)){let o=s(e,t.widget,t);o&&(i||(i=[])).push(o)}i&&this.addElement(e,t,i)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},Cd=class{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in t.domEventHandlers)this.dom.addEventListener(r,i=>{let s=i.target,o;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let l=s.getBoundingClientRect();o=(l.top+l.bottom)/2}else o=i.clientY;let a=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[r](e,a,i)&&i.preventDefault()});this.markers=KS(t.markers(e)),t.initialSpacer&&(this.spacer=new _d(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=KS(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let i=this.config.updateSpacer(this.spacer.markers[0],e);i!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[i])}let r=e.view.viewport;return!$e.eq(this.markers,t,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},_d=class{constructor(e,t,r,i){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,r,i)}update(e,t,r,i){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),dE(this.markers,i)||this.setMarkers(e,i)}setMarkers(e,t){let r="cm-gutterElement",i=this.dom.firstChild;for(let s=0,o=0;;){let a=o,l=s<t.length?t[s++]:null,c=!1;if(l){let d=l.elementClass;d&&(r+=" "+d);for(let h=o;h<this.markers.length;h++)if(this.markers[h].compare(l)){a=h,c=!0;break}}else a=this.markers.length;for(;o<a;){let d=this.markers[o++];if(d.toDOM){d.destroy(i);let h=i.nextSibling;i.remove(),i=h}}if(!l)break;l.toDOM&&(c?i=i.nextSibling:this.dom.insertBefore(l.toDOM(e),i)),c&&o++}this.dom.className=r,this.markers=t}destroy(){this.setMarkers(null,[])}};function dE(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++)if(!n[t].compare(e[t]))return!1;return!0}var hE=oe.define(),uE=oe.define(),Zo=oe.define({combine(n){return Yn(n,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){let r=Object.assign({},e);for(let i in t){let s=r[i],o=t[i];r[i]=s?(a,l,c)=>s(a,l,c)||o(a,l,c):o}return r}})}}),sl=class extends $t{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function Qp(n,e){return n.state.facet(Zo).formatNumber(e,n.state)}var fE=il.compute([Zo],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(hE)},lineMarker(e,t,r){return r.some(i=>i.toDOM)?null:new sl(Qp(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,r)=>{for(let i of e.state.facet(uE)){let s=i(e,t,r);if(s)return s}return null},lineMarkerChange:e=>e.startState.facet(Zo)!=e.state.facet(Zo),initialSpacer(e){return new sl(Qp(e,JS(e.state.doc.lines)))},updateSpacer(e,t){let r=Qp(t.view,JS(t.view.state.doc.lines));return r==e.number?e:new sl(r)},domEventHandlers:n.facet(Zo).domEventHandlers,side:"before"}));function Xd(n={}){return[Zo.of(n),aw(),fE]}function JS(n){let e=9;for(;e<n;)e=e*10+9;return e}var pE=new class extends $t{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},mE=fd.compute(["selection"],n=>{let e=[],t=-1;for(let r of n.selection.ranges){let i=n.doc.lineAt(r.head).from;i>t&&(t=i,e.push(pE.range(i)))}return $e.of(e)});function lw(){return mE}function cw(n){return it.define(e=>({decorations:n.createDeco(e),update(t){this.decorations=n.updateDeco(t,this.decorations)}}),{decorations:e=>e.decorations})}var gE=J.mark({class:"cm-highlightTab"}),OE=J.mark({class:"cm-highlightSpace"}),bE=cw(new dl({regexp:/\t| /g,decoration:n=>n[0]==" "?gE:OE,boundary:/\S/}));function dw(){return bE}var yE=cw(new dl({regexp:/\s+$/g,decoration:J.mark({class:"cm-trailingSpace"})}));function hw(){return yE}var SE=0,Cn=class{constructor(e,t){this.from=e,this.to=t}},xe=class{constructor(e={}){this.id=SE++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=St.match(e)),t=>{let r=e(t);return r===void 0?null:[this,r]}}};xe.closedBy=new xe({deserialize:n=>n.split(" ")});xe.openedBy=new xe({deserialize:n=>n.split(" ")});xe.group=new xe({deserialize:n=>n.split(" ")});xe.isolate=new xe({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});xe.contextHash=new xe({perNode:!0});xe.lookAhead=new xe({perNode:!0});xe.mounted=new xe({perNode:!0});var Ki=class{constructor(e,t,r,i=!1){this.tree=e,this.overlay=t,this.parser=r,this.bracketed=i}static get(e){return e&&e.props&&e.props[xe.mounted.id]}},vE=Object.create(null),St=class n{constructor(e,t,r,i=0){this.name=e,this.props=t,this.id=r,this.flags=i}static define(e){let t=e.props&&e.props.length?Object.create(null):vE,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),i=new n(e.name||"",t,e.id,r);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(i)),s){if(s[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[s[0].id]=s[1]}}return i}prop(e){return this.props[e.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(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(xe.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let r in e)for(let i of r.split(" "))t[i]=e[r];return r=>{for(let i=r.prop(xe.group),s=-1;s<(i?i.length:0);s++){let o=t[s<0?r.name:i[s]];if(o)return o}}}};St.none=new St("",Object.create(null),0,8);var $i=class n{constructor(e){this.types=e;for(let t=0;t<e.length;t++)if(e[t].id!=t)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...e){let t=[];for(let r of this.types){let i=null;for(let s of e){let o=s(r);if(o){i||(i=Object.assign({},r.props));let a=o[1],l=o[0];l.combine&&l.id in i&&(a=l.combine(i[l.id],a)),i[l.id]=a}}t.push(i?new St(r.name,i,r.id,r.flags):r)}return new n(t)}},zd=new WeakMap,uw=new WeakMap,We;(function(n){n[n.ExcludeBuffers=1]="ExcludeBuffers",n[n.IncludeAnonymous=2]="IncludeAnonymous",n[n.IgnoreMounts=4]="IgnoreMounts",n[n.IgnoreOverlays=8]="IgnoreOverlays",n[n.EnterBracketed=16]="EnterBracketed"})(We||(We={}));var Ee=class n{constructor(e,t,r,i,s){if(this.type=e,this.children=t,this.positions=r,this.length=i,this.props=null,s&&s.length){this.props=Object.create(null);for(let[o,a]of s)this.props[typeof o=="number"?o:o.id]=a}}toString(){let e=Ki.get(this);if(e&&!e.overlay)return e.tree.toString();let t="";for(let r of this.children){let i=r.toString();i&&(t&&(t+=","),t+=i)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(t.length?"("+t+")":""):t}cursor(e=0){return new Yo(this.topNode,e)}cursorAt(e,t=0,r=0){let i=zd.get(this)||this.topNode,s=new Yo(i);return s.moveTo(e,t),zd.set(this,s._tree),s}get topNode(){return new _n(this,0,0,null)}resolve(e,t=0){let r=fl(zd.get(this)||this.topNode,e,t,!1);return zd.set(this,r),r}resolveInner(e,t=0){let r=fl(uw.get(this)||this.topNode,e,t,!0);return uw.set(this,r),r}resolveStack(e,t=0){return wE(this,e,t)}iterate(e){let{enter:t,leave:r,from:i=0,to:s=this.length}=e,o=e.mode||0,a=(o&We.IncludeAnonymous)>0;for(let l=this.cursor(o|We.IncludeAnonymous);;){let c=!1;if(l.from<=s&&l.to>=i&&(!a&&l.type.isAnonymous||t(l)!==!1)){if(l.firstChild())continue;c=!0}for(;c&&r&&(a||!l.type.isAnonymous)&&r(l),!l.nextSibling();){if(!l.parent())return;c=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Bm(St.none,this.children,this.positions,0,this.children.length,0,this.length,(t,r,i)=>new n(this.type,t,r,i,this.propValues),e.makeTree||((t,r,i)=>new n(St.none,t,r,i)))}static build(e){return xE(e)}};Ee.empty=new Ee(St.none,[],[],0);var Rm=class n{constructor(e,t){this.buffer=e,this.index=t}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 n(this.buffer,this.index)}},Ji=class n{constructor(e,t,r){this.buffer=e,this.length=t,this.set=r}get type(){return St.none}toString(){let e=[];for(let t=0;t<this.buffer.length;)e.push(this.childString(t)),t=this.buffer[t+3];return e.join(",")}childString(e){let t=this.buffer[e],r=this.buffer[e+3],i=this.set.types[t],s=i.name;if(/\W/.test(s)&&!i.isError&&(s=JSON.stringify(s)),e+=4,r==e)return s;let o=[];for(;e<r;)o.push(this.childString(e)),e=this.buffer[e+3];return s+"("+o.join(",")+")"}findChild(e,t,r,i,s){let{buffer:o}=this,a=-1;for(let l=e;l!=t&&!(yw(s,i,o[l+1],o[l+2])&&(a=l,r>0));l=o[l+3]);return a}slice(e,t,r){let i=this.buffer,s=new Uint16Array(t-e),o=0;for(let a=e,l=0;a<t;){s[l++]=i[a++],s[l++]=i[a++]-r;let c=s[l++]=i[a++]-r;s[l++]=i[a++]-e,o=Math.max(o,c)}return new n(s,o,this.set)}};function yw(n,e,t,r){switch(n){case-2:return t<e;case-1:return r>=e&&t<e;case 0:return t<e&&r>e;case 1:return t<=e&&r>e;case 2:return r>e;case 4:return!0}}function fl(n,e,t,r){for(var i;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to<e);){let o=!r&&n instanceof _n&&n.index<0?null:n.parent;if(!o)return n;n=o}let s=r?0:We.IgnoreOverlays;if(r)for(let o=n,a=o.parent;a;o=a,a=o.parent)o instanceof _n&&o.index<0&&((i=a.enter(e,t,s))===null||i===void 0?void 0:i.from)!=o.from&&(n=a);for(;;){let o=n.enter(e,t,s);if(!o)return n;n=o}}var Nd=class{cursor(e=0){return new Yo(this,e)}getChild(e,t=null,r=null){let i=fw(this,e,t,r);return i.length?i[0]:null}getChildren(e,t=null,r=null){return fw(this,e,t,r)}resolve(e,t=0){return fl(this,e,t,!1)}resolveInner(e,t=0){return fl(this,e,t,!0)}matchContext(e){return Mm(this.parent,e)}enterUnfinishedNodesBefore(e){let t=this.childBefore(e),r=this;for(;t;){let i=t.lastChild;if(!i||i.to!=t.to)break;i.type.isError&&i.from==i.to?(r=t,t=i.prevSibling):t=i}return r}get node(){return this}get next(){return this.parent}},_n=class n extends Nd{constructor(e,t,r,i){super(),this._tree=e,this.from=t,this.index=r,this._parent=i}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(e,t,r,i,s=0){for(let o=this;;){for(let{children:a,positions:l}=o._tree,c=t>0?a.length:-1;e!=c;e+=t){let d=a[e],h=l[e]+o.from,u;if(!(!(s&We.EnterBracketed&&d instanceof Ee&&(u=Ki.get(d))&&!u.overlay&&u.bracketed&&r>=h&&r<=h+d.length)&&!yw(i,r,h,h+d.length))){if(d instanceof Ji){if(s&We.ExcludeBuffers)continue;let f=d.findChild(0,d.buffer.length,t,r-h,i);if(f>-1)return new Fs(new Lm(o,d,e,h),null,f)}else if(s&We.IncludeAnonymous||!d.type.isAnonymous||Nm(d)){let f;if(!(s&We.IgnoreMounts)&&(f=Ki.get(d))&&!f.overlay)return new n(f.tree,h,e,o);let m=new n(d,h,e,o);return s&We.IncludeAnonymous||!m.type.isAnonymous?m:m.nextChild(t<0?d.children.length-1:0,t,r,i,s)}}}if(s&We.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<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(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,r=0){let i;if(!(r&We.IgnoreOverlays)&&(i=Ki.get(this._tree))&&i.overlay){let s=e-this.from,o=r&We.EnterBracketed&&i.bracketed;for(let{from:a,to:l}of i.overlay)if((t>0||o?a<=s:a<s)&&(t<0||o?l>=s:l>s))return new n(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}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 fw(n,e,t,r){let i=n.cursor(),s=[];if(!i.firstChild())return s;if(t!=null){for(let o=!1;!o;)if(o=i.type.is(t),!i.nextSibling())return s}for(;;){if(r!=null&&i.type.is(r))return s;if(i.type.is(e)&&s.push(i.node),!i.nextSibling())return r==null?s:[]}}function Mm(n,e,t=e.length-1){for(let r=n;t>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[t]&&e[t]!=r.name)return!1;t--}}return!0}var Lm=class{constructor(e,t,r,i){this.parent=e,this.buffer=t,this.index=r,this.start=i}},Fs=class n extends Nd{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(e,t,r){super(),this.context=e,this._parent=t,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,t,r){let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.context.start,r);return s<0?null:new n(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,r=0){if(r&We.ExcludeBuffers)return null;let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return s<0?null:new n(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new n(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new n(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:r}=this.context,i=this.index+4,s=r.buffer[this.index+3];if(s>i){let o=r.buffer[this.index+1];e.push(r.slice(i,s,o)),t.push(0)}return new Ee(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function Sw(n){if(!n.length)return null;let e=0,t=n[0];for(let s=1;s<n.length;s++){let o=n[s];(o.from>t.from||o.to<t.to)&&(t=o,e=s)}let r=t instanceof _n&&t.index<0?null:t.parent,i=n.slice();return r?i[e]=r:i.splice(e,1),new Dm(i,t)}var Dm=class{constructor(e,t){this.heads=e,this.node=t}get next(){return Sw(this.heads)}};function wE(n,e,t){let r=n.resolveInner(e,t),i=null;for(let s=r instanceof _n?r:r.context.parent;s;s=s.parent)if(s.index<0){let o=s.parent;(i||(i=[r])).push(o.resolve(e,t)),s=o}else{let o=Ki.get(s.tree);if(o&&o.overlay&&o.overlay[0].from<=e&&o.overlay[o.overlay.length-1].to>=e){let a=new _n(o.tree,o.overlay[0].from+s.from,-1,s);(i||(i=[r])).push(fl(a,e,t,!1))}}return i?Sw(i):r}var Yo=class{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~We.EnterBracketed,e instanceof _n)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:r,buffer:i}=this.buffer;return this.type=t||i.set.types[i.buffer[e]],this.from=r+i.buffer[e+1],this.to=r+i.buffer[e+2],!0}yield(e){return e?e instanceof _n?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,r,this.mode));let{buffer:i}=this.buffer,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.buffer.start,r);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,r=this.mode){return this.buffer?r&We.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&We.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&We.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,r=this.stack.length-1;if(e<0){let i=r<0?0:this.stack[r]+4;if(this.index!=i)return this.yieldBuf(t.findChild(i,this.index,-1,0,4))}else{let i=t.buffer[this.index+3];if(i<(r<0?t.buffer.length:t.buffer[this.stack[r]+3]))return this.yieldBuf(i)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,r,{buffer:i}=this;if(i){if(e>0){if(this.index<i.buffer.buffer.length)return!1}else for(let s=0;s<this.index;s++)if(i.buffer.buffer[s+3]<this.index)return!1;({index:t,parent:r}=i)}else({index:t,_parent:r}=this._tree);for(;r;{index:t,_parent:r}=r)if(t>-1)for(let s=t+e,o=e<0?-1:r._tree.children.length;s!=o;s+=e){let a=r._tree.children[s];if(this.mode&We.IncludeAnonymous||a instanceof Ji||!a.type.isAnonymous||Nm(a))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let e=this.bufferNode,t=null,r=0;if(e&&e.context==this.buffer)e:for(let i=this.index,s=this.stack.length;s>=0;){for(let o=e;o;o=o._parent)if(o.index==i){if(i==this.index)return o;t=o,r=s+1;break e}i=this.stack[--s]}for(let i=r;i<this.stack.length;i++)t=new Fs(this.buffer,t,this.stack[i]);return this.bufferNode=new Fs(this.buffer,t,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,t){for(let r=0;;){let i=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){r++;continue}this.type.isAnonymous||(i=!0)}for(;;){if(i&&t&&t(this),i=this.type.isAnonymous,!r)return;if(this.nextSibling())break;this.parent(),r--,i=!0}}}matchContext(e){if(!this.buffer)return Mm(this.node.parent,e);let{buffer:t}=this.buffer,{types:r}=t.set;for(let i=e.length-1,s=this.stack.length-1;i>=0;s--){if(s<0)return Mm(this._tree,e,i);let o=r[t.buffer[this.stack[s]]];if(!o.isAnonymous){if(e[i]&&e[i]!=o.name)return!1;i--}}return!0}};function Nm(n){return n.children.some(e=>e instanceof Ji||!e.type.isAnonymous||Nm(e))}function xE(n){var e;let{buffer:t,nodeSet:r,maxBufferLength:i=1024,reused:s=[],minRepeatType:o=r.types.length}=n,a=Array.isArray(t)?new Rm(t,t.length):t,l=r.types,c=0,d=0;function h(k,w,R,X,W,ne){let{id:de,start:q,end:pe,size:ve}=a,we=d,B=c;if(ve<0)if(a.next(),ve==-1){let Ge=s[de];R.push(Ge),X.push(q-k);return}else if(ve==-3){c=de;return}else if(ve==-4){d=de;return}else throw new RangeError(`Unrecognized record size: ${ve}`);let ue=l[de],G,Pe,Qe=q-k;if(pe-q<=i&&(Pe=S(a.pos-w,W))){let Ge=new Uint16Array(Pe.size-Pe.skip),He=a.pos-Pe.size,Ot=Ge.length;for(;a.pos>He;)Ot=x(Pe.start,Ge,Ot);G=new Ji(Ge,pe-Pe.start,r),Qe=Pe.start-k}else{let Ge=a.pos-ve;a.next();let He=[],Ot=[],me=de>=o?de:-1,nn=0,ir=pe;for(;a.pos>Ge;)me>=0&&a.id==me&&a.size>=0?(a.end<=ir-i&&(m(He,Ot,q,nn,a.end,ir,me,we,B),nn=He.length,ir=a.end),a.next()):ne>2500?u(q,Ge,He,Ot):h(q,Ge,He,Ot,me,ne+1);if(me>=0&&nn>0&&nn<He.length&&m(He,Ot,q,nn,q,ir,me,we,B),He.reverse(),Ot.reverse(),me>-1&&nn>0){let sr=f(ue,B);G=Bm(ue,He,Ot,0,He.length,0,pe-q,sr,sr)}else G=O(ue,He,Ot,pe-q,we-pe,B)}R.push(G),X.push(Qe)}function u(k,w,R,X){let W=[],ne=0,de=-1;for(;a.pos>w;){let{id:q,start:pe,end:ve,size:we}=a;if(we>4)a.next();else{if(de>-1&&pe<de)break;de<0&&(de=ve-i),W.push(q,pe,ve),ne++,a.next()}}if(ne){let q=new Uint16Array(ne*4),pe=W[W.length-2];for(let ve=W.length-3,we=0;ve>=0;ve-=3)q[we++]=W[ve],q[we++]=W[ve+1]-pe,q[we++]=W[ve+2]-pe,q[we++]=we;R.push(new Ji(q,W[2]-pe,r)),X.push(pe-k)}}function f(k,w){return(R,X,W)=>{let ne=0,de=R.length-1,q,pe;if(de>=0&&(q=R[de])instanceof Ee){if(!de&&q.type==k&&q.length==W)return q;(pe=q.prop(xe.lookAhead))&&(ne=X[de]+q.length+pe)}return O(k,R,X,W,ne,w)}}function m(k,w,R,X,W,ne,de,q,pe){let ve=[],we=[];for(;k.length>X;)ve.push(k.pop()),we.push(w.pop()+R-W);k.push(O(r.types[de],ve,we,ne-W,q-ne,pe)),w.push(W-R)}function O(k,w,R,X,W,ne,de){if(ne){let q=[xe.contextHash,ne];de=de?[q].concat(de):[q]}if(W>25){let q=[xe.lookAhead,W];de=de?[q].concat(de):[q]}return new Ee(k,w,R,X,de)}function S(k,w){let R=a.fork(),X=0,W=0,ne=0,de=R.end-i,q={size:0,start:0,skip:0};e:for(let pe=R.pos-k;R.pos>pe;){let ve=R.size;if(R.id==w&&ve>=0){q.size=X,q.start=W,q.skip=ne,ne+=4,X+=4,R.next();continue}let we=R.pos-ve;if(ve<0||we<pe||R.start<de)break;let B=R.id>=o?4:0,ue=R.start;for(R.next();R.pos>we;){if(R.size<0)if(R.size==-3||R.size==-4)B+=4;else break e;else R.id>=o&&(B+=4);R.next()}W=ue,X+=ve,ne+=B}return(w<0||X==k)&&(q.size=X,q.start=W,q.skip=ne),q.size>4?q:void 0}function x(k,w,R){let{id:X,start:W,end:ne,size:de}=a;if(a.next(),de>=0&&X<o){let q=R;if(de>4){let pe=a.pos-(de-4);for(;a.pos>pe;)R=x(k,w,R)}w[--R]=q,w[--R]=ne-k,w[--R]=W-k,w[--R]=X}else de==-3?c=X:de==-4&&(d=X);return R}let D=[],M=[];for(;a.pos>0;)h(n.start||0,n.bufferStart||0,D,M,-1,0);let Z=(e=n.length)!==null&&e!==void 0?e:D.length?M[0]+D[0].length:0;return new Ee(l[n.topID],D.reverse(),M.reverse(),Z)}var pw=new WeakMap;function Wd(n,e){if(!n.isAnonymous||e instanceof Ji||e.type!=n)return 1;let t=pw.get(e);if(t==null){t=1;for(let r of e.children){if(r.type!=n||!(r instanceof Ee)){t=1;break}t+=Wd(n,r)}pw.set(e,t)}return t}function Bm(n,e,t,r,i,s,o,a,l){let c=0;for(let m=r;m<i;m++)c+=Wd(n,e[m]);let d=Math.ceil(c*1.5/8),h=[],u=[];function f(m,O,S,x,D){for(let M=S;M<x;){let Z=M,k=O[M],w=Wd(n,m[M]);for(M++;M<x;M++){let R=Wd(n,m[M]);if(w+R>=d)break;w+=R}if(M==Z+1){if(w>d){let R=m[Z];f(R.children,R.positions,0,R.children.length,O[Z]+D);continue}h.push(m[Z])}else{let R=O[M-1]+m[M-1].length-k;h.push(Bm(n,m,O,Z,M,k,R,null,l))}u.push(k+D-s)}}return f(e,t,r,i,0),(a||l)(h,u,o)}var jo=class{constructor(){this.map=new WeakMap}setBuffer(e,t,r){let i=this.map.get(e);i||this.map.set(e,i=new Map),i.set(t,r)}getBuffer(e,t){let r=this.map.get(e);return r&&r.get(t)}set(e,t){e instanceof Fs?this.setBuffer(e.context.buffer,e.index,t):e instanceof _n&&this.map.set(e.tree,t)}get(e){return e instanceof Fs?this.getBuffer(e.context.buffer,e.index):e instanceof _n?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},Qi=class n{constructor(e,t,r,i,s=!1,o=!1){this.from=e,this.to=t,this.tree=r,this.offset=i,this.open=(s?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],r=!1){let i=[new n(0,e.length,e,0,!1,r)];for(let s of t)s.to>e.length&&i.push(s);return i}static applyChanges(e,t,r=128){if(!t.length)return e;let i=[],s=1,o=e.length?e[0]:null;for(let a=0,l=0,c=0;;a++){let d=a<t.length?t[a]:null,h=d?d.fromA:1e9;if(h-l>=r)for(;o&&o.from<h;){let u=o;if(l>=u.from||h<=u.to||c){let f=Math.max(u.from,l)-c,m=Math.min(u.to,h)-c;u=f>=m?null:new n(f,m,u.tree,u.offset+c,a>0,!!d)}if(u&&i.push(u),o.to>h)break;o=s<e.length?e[s++]:null}if(!d)break;l=d.toA,c=d.toA-d.toB}return i}},Ti=class{startParse(e,t,r){return typeof e=="string"&&(e=new Zm(e)),r=r?r.length?r.map(i=>new Cn(i.from,i.to)):[new Cn(0,0)]:[new Cn(0,e.length)],this.createParse(e,t||[],r)}parse(e,t,r){let i=this.startParse(e,t,r);for(;;){let s=i.advance();if(s)return s}}},Zm=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};function Fd(n){return(e,t,r,i)=>new zm(e,n,t,r,i)}var Bd=class{constructor(e,t,r,i,s,o){this.parser=e,this.parse=t,this.overlay=r,this.bracketed=i,this.target=s,this.from=o}};function mw(n){if(!n.length||n.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(n))}var Im=class{constructor(e,t,r,i,s,o,a,l){this.parser=e,this.predicate=t,this.mounts=r,this.index=i,this.start=s,this.bracketed=o,this.target=a,this.prev=l,this.depth=0,this.ranges=[]}},Xm=new xe({perNode:!0}),zm=class{constructor(e,t,r,i,s){this.nest=t,this.input=r,this.fragments=i,this.ranges=s,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let r=this.baseParse.advance();if(!r)return null;if(this.baseParse=null,this.baseTree=r,this.startInner(),this.stoppedAt!=null)for(let i of this.inner)i.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let r=this.baseTree;return this.stoppedAt!=null&&(r=new Ee(r.type,r.children,r.positions,r.length,r.propValues.concat([[Xm,this.stoppedAt]]))),r}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let r=Object.assign(Object.create(null),e.target.props);r[xe.mounted.id]=new Ki(t,e.overlay,e.parser,e.bracketed),e.target.props=r}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].from<e&&(e=Math.min(e,this.inner[t].parse.parsedPos));return e}stopAt(e){if(this.stoppedAt=e,this.baseParse)this.baseParse.stopAt(e);else for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].parse.stopAt(e)}startInner(){let e=new Wm(this.fragments),t=null,r=null,i=new Yo(new _n(this.baseTree,this.ranges[0].from,0,null),We.IncludeAnonymous|We.IgnoreMounts);e:for(let s,o;;){let a=!0,l;if(this.stoppedAt!=null&&i.from>=this.stoppedAt)a=!1;else if(e.hasNode(i)){if(t){let c=t.mounts.find(d=>d.frag.from<=i.from&&d.frag.to>=i.to&&d.mount.overlay);if(c)for(let d of c.mount.overlay){let h=d.from+c.pos,u=d.to+c.pos;h>=i.from&&u<=i.to&&!t.ranges.some(f=>f.from<u&&f.to>h)&&t.ranges.push({from:h,to:u})}}a=!1}else if(r&&(o=PE(r.ranges,i.from,i.to)))a=o!=2;else if(!i.type.isAnonymous&&(s=this.nest(i,this.input))&&(i.from<i.to||!s.overlay)){i.tree||(kE(i),t&&t.depth++,r&&r.depth++);let c=e.findMounts(i.from,s.parser);if(typeof s.overlay=="function")t=new Im(s.parser,s.overlay,c,this.inner.length,i.from,!!s.bracketed,i.tree,t);else{let d=Ow(this.ranges,s.overlay||(i.from<i.to?[new Cn(i.from,i.to)]:[]));d.length&&mw(d),(d.length||!s.overlay)&&this.inner.push(new Bd(s.parser,d.length?s.parser.startParse(this.input,bw(c,d),d):s.parser.startParse(""),s.overlay?s.overlay.map(h=>new Cn(h.from-i.from,h.to-i.from)):null,!!s.bracketed,i.tree,d.length?d[0].from:i.from)),s.overlay?d.length&&(r={ranges:d,depth:0,prev:r}):a=!1}}else if(t&&(l=t.predicate(i))&&(l===!0&&(l=new Cn(i.from,i.to)),l.from<l.to)){let c=t.ranges.length-1;c>=0&&t.ranges[c].to==l.from?t.ranges[c]={from:t.ranges[c].from,to:l.to}:t.ranges.push(l)}if(a&&i.firstChild())t&&t.depth++,r&&r.depth++;else for(;!i.nextSibling();){if(!i.parent())break e;if(t&&!--t.depth){let c=Ow(this.ranges,t.ranges);c.length&&(mw(c),this.inner.splice(t.index,0,new Bd(t.parser,t.parser.startParse(this.input,bw(t.mounts,c),c),t.ranges.map(d=>new Cn(d.from-t.start,d.to-t.start)),t.bracketed,t.target,c[0].from))),t=t.prev}r&&!--r.depth&&(r=r.prev)}}}};function PE(n,e,t){for(let r of n){if(r.from>=t)break;if(r.to>e)return r.from<=e&&r.to>=t?2:1}return 0}function gw(n,e,t,r,i,s){if(e<t){let o=n.buffer[e+1];r.push(n.slice(e,t,o)),i.push(o-s)}}function kE(n){let{node:e}=n,t=[],r=e.context.buffer;do t.push(n.index),n.parent();while(!n.tree);let i=n.tree,s=i.children.indexOf(r),o=i.children[s],a=o.buffer,l=[s];function c(d,h,u,f,m,O){let S=t[O],x=[],D=[];gw(o,d,S,x,D,f);let M=a[S+1],Z=a[S+2];l.push(x.length);let k=O?c(S+4,a[S+3],o.set.types[a[S]],M,Z-M,O-1):e.toTree();return x.push(k),D.push(M-f),gw(o,a[S+3],h,x,D,f),new Ee(u,x,D,m)}i.children[s]=c(0,a.length,St.none,0,o.length,t.length-1);for(let d of l){let h=n.tree.children[d],u=n.tree.positions[d];n.yield(new _n(h,u+n.from,d,n._tree))}}var Vd=class{constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(We.IncludeAnonymous|We.IgnoreMounts)}moveTo(e){let{cursor:t}=this,r=e-this.offset;for(;!this.done&&t.from<r;)if(!(t.to>=e&&t.enter(r,1,We.IgnoreOverlays|We.ExcludeBuffers)))if(t.to<=e)t.next(!1)||(this.done=!0);else break}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof Ee)t=t.children[0];else break}return!1}},Wm=class{constructor(e){var t;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let r=this.curFrag=e[0];this.curTo=(t=r.tree.prop(Xm))!==null&&t!==void 0?t:r.to,this.inner=new Vd(r.tree,-r.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let t=this.curFrag=this.fragments[this.fragI];this.curTo=(e=t.tree.prop(Xm))!==null&&e!==void 0?e:t.to,this.inner=new Vd(t.tree,-t.offset)}}findMounts(e,t){var r;let i=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let s=this.inner.cursor.node;s;s=s.parent){let o=(r=s.tree)===null||r===void 0?void 0:r.prop(xe.mounted);if(o&&o.parser==t)for(let a=this.fragI;a<this.fragments.length;a++){let l=this.fragments[a];if(l.from>=s.to)break;l.tree==this.curFrag.tree&&i.push({frag:l,pos:s.from-l.offset,mount:o})}}}return i}};function Ow(n,e){let t=null,r=e;for(let i=1,s=0;i<n.length;i++){let o=n[i-1].to,a=n[i].from;for(;s<r.length;s++){let l=r[s];if(l.from>=a)break;l.to<=o||(t||(r=t=e.slice()),l.from<o?(t[s]=new Cn(l.from,o),l.to>a&&t.splice(s+1,0,new Cn(a,l.to))):l.to>a?t[s--]=new Cn(a,l.to):t.splice(s--,1))}}return r}function $E(n,e,t,r){let i=0,s=0,o=!1,a=!1,l=-1e9,c=[];for(;;){let d=i==n.length?1e9:o?n[i].to:n[i].from,h=s==e.length?1e9:a?e[s].to:e[s].from;if(o!=a){let u=Math.max(l,t),f=Math.min(d,h,r);u<f&&c.push(new Cn(u,f))}if(l=Math.min(d,h),l==1e9)break;d==l&&(o?(o=!1,i++):o=!0),h==l&&(a?(a=!1,s++):a=!0)}return c}function bw(n,e){let t=[];for(let{pos:r,mount:i,frag:s}of n){let o=r+(i.overlay?i.overlay[0].from:0),a=o+i.tree.length,l=Math.max(s.from,o),c=Math.min(s.to,a);if(i.overlay){let d=i.overlay.map(u=>new Cn(u.from+r,u.to+r)),h=$E(e,d,l,c);for(let u=0,f=l;;u++){let m=u==h.length,O=m?c:h[u].from;if(O>f&&t.push(new Qi(f,O,i.tree,-o,s.from>=f||s.openStart,s.to<=O||s.openEnd)),m)break;f=h[u].to}}else t.push(new Qi(l,c,i.tree,-o,s.from>=o||s.openStart,s.to<=a||s.openEnd))}return t}var QE=0,qn=class n{constructor(e,t,r,i){this.name=e,this.set=t,this.base=r,this.modified=i,this.id=QE++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let r=typeof e=="string"?e:"?";if(e instanceof n&&(t=e),t!=null&&t.base)throw new Error("Can not derive from a modified tag");let i=new n(r,[],null,[]);if(i.set.push(i),t)for(let s of t.set)i.set.push(s);return i}static defineModifier(e){let t=new qd(e);return r=>r.modified.indexOf(t)>-1?r:qd.get(r.base||r,r.modified.concat(t).sort((i,s)=>i.id-s.id))}},TE=0,qd=class n{constructor(e){this.name=e,this.instances=[],this.id=TE++}static get(e,t){if(!t.length)return e;let r=t[0].instances.find(a=>a.base==e&&AE(t,a.modified));if(r)return r;let i=[],s=new qn(e.name,i,e,t);for(let a of t)a.instances.push(s);let o=CE(t);for(let a of e.set)if(!a.modified.length)for(let l of o)i.push(n.get(a,l));return s}};function AE(n,e){return n.length==e.length&&n.every((t,r)=>t==e[r])}function CE(n){let e=[[]];for(let t=0;t<n.length;t++)for(let r=0,i=e.length;r<i;r++)e.push(e[r].concat(n[t]));return e.sort((t,r)=>r.length-t.length)}function Kt(n){let e=Object.create(null);for(let t in n){let r=n[t];Array.isArray(r)||(r=[r]);for(let i of t.split(" "))if(i){let s=[],o=2,a=i;for(let h=0;;){if(a=="..."&&h>0&&h+3==i.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!u)throw new RangeError("Invalid path: "+i);if(s.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),h+=u[0].length,h==i.length)break;let f=i[h++];if(h==i.length&&f=="!"){o=0;break}if(f!="/")throw new RangeError("Invalid path: "+i);a=i.slice(h)}let l=s.length-1,c=s[l];if(!c)throw new RangeError("Invalid path: "+i);let d=new js(r,o,l>0?s.slice(0,l):null);e[c]=d.sort(e[c])}}return xw.add(e)}var xw=new xe({combine(n,e){let t,r,i;for(;n||e;){if(!n||e&&n.depth>=e.depth?(i=e,e=e.next):(i=n,n=n.next),t&&t.mode==i.mode&&!i.context&&!t.context)continue;let s=new js(i.tags,i.mode,i.context);t?t.next=s:r=s,t=s}return r}}),js=class{constructor(e,t,r,i){this.tags=e,this.mode=t,this.context=r,this.next=i}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}};js.empty=new js([],2,null);function jm(n,e){let t=Object.create(null);for(let s of n)if(!Array.isArray(s.tag))t[s.tag.id]=s.class;else for(let o of s.tag)t[o.id]=s.class;let{scope:r,all:i=null}=e||{};return{style:s=>{let o=i;for(let a of s)for(let l of a.set){let c=t[l.id];if(c){o=o?o+" "+c:c;break}}return o},scope:r}}function _E(n,e){let t=null;for(let r of n){let i=r.style(e);i&&(t=t?t+" "+i:i)}return t}function Pw(n,e,t,r=0,i=n.length){let s=new Fm(r,Array.isArray(e)?e:[e],t);s.highlightRange(n.cursor(),r,i,"",s.highlighters),s.flush(i)}var Fm=class{constructor(e,t,r){this.at=e,this.highlighters=t,this.span=r,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,r,i,s){let{type:o,from:a,to:l}=e;if(a>=r||l<=t)return;o.isTop&&(s=this.highlighters.filter(f=>!f.scope||f.scope(o)));let c=i,d=Um(e)||js.empty,h=_E(s,d.tags);if(h&&(c&&(c+=" "),c+=h,d.mode==1&&(i+=(i?" ":"")+h)),this.startSpan(Math.max(t,a),c),d.opaque)return;let u=e.tree&&e.tree.prop(xe.mounted);if(u&&u.overlay){let f=e.node.enter(u.overlay[0].from+a,1),m=this.highlighters.filter(S=>!S.scope||S.scope(u.tree.type)),O=e.firstChild();for(let S=0,x=a;;S++){let D=S<u.overlay.length?u.overlay[S]:null,M=D?D.from+a:l,Z=Math.max(t,x),k=Math.min(r,M);if(Z<k&&O)for(;e.from<k&&(this.highlightRange(e,Z,k,i,s),this.startSpan(Math.min(k,e.to),c),!(e.to>=M||!e.nextSibling())););if(!D||M>r)break;x=D.to+a,x>t&&(this.highlightRange(f.cursor(),Math.max(t,D.from+a),Math.min(r,x),"",m),this.startSpan(Math.min(r,x),c))}O&&e.parent()}else if(e.firstChild()){u&&(i="");do if(!(e.to<=t)){if(e.from>=r)break;this.highlightRange(e,t,r,i,s),this.startSpan(Math.min(r,e.to),c)}while(e.nextSibling());e.parent()}}};function Um(n){let e=n.type.prop(xw);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}var se=qn.define,Yd=se(),es=se(),vw=se(es),ww=se(es),ts=se(),jd=se(ts),Vm=se(ts),ni=se(),Ys=se(ni),ei=se(),ti=se(),Ym=se(),pl=se(Ym),Ud=se(),g={comment:Yd,lineComment:se(Yd),blockComment:se(Yd),docComment:se(Yd),name:es,variableName:se(es),typeName:vw,tagName:se(vw),propertyName:ww,attributeName:se(ww),className:se(es),labelName:se(es),namespace:se(es),macroName:se(es),literal:ts,string:jd,docString:se(jd),character:se(jd),attributeValue:se(jd),number:Vm,integer:se(Vm),float:se(Vm),bool:se(ts),regexp:se(ts),escape:se(ts),color:se(ts),url:se(ts),keyword:ei,self:se(ei),null:se(ei),atom:se(ei),unit:se(ei),modifier:se(ei),operatorKeyword:se(ei),controlKeyword:se(ei),definitionKeyword:se(ei),moduleKeyword:se(ei),operator:ti,derefOperator:se(ti),arithmeticOperator:se(ti),logicOperator:se(ti),bitwiseOperator:se(ti),compareOperator:se(ti),updateOperator:se(ti),definitionOperator:se(ti),typeOperator:se(ti),controlOperator:se(ti),punctuation:Ym,separator:se(Ym),bracket:pl,angleBracket:se(pl),squareBracket:se(pl),paren:se(pl),brace:se(pl),content:ni,heading:Ys,heading1:se(Ys),heading2:se(Ys),heading3:se(Ys),heading4:se(Ys),heading5:se(Ys),heading6:se(Ys),contentSeparator:se(ni),list:se(ni),quote:se(ni),emphasis:se(ni),strong:se(ni),link:se(ni),monospace:se(ni),strikethrough:se(ni),inserted:se(),deleted:se(),changed:se(),invalid:se(),meta:Ud,documentMeta:se(Ud),annotation:se(Ud),processingInstruction:se(Ud),definition:qn.defineModifier("definition"),constant:qn.defineModifier("constant"),function:qn.defineModifier("function"),standard:qn.defineModifier("standard"),local:qn.defineModifier("local"),special:qn.defineModifier("special")};for(let n in g){let e=g[n];e instanceof qn&&(e.name=n)}var PN=jm([{tag:g.link,class:"tok-link"},{tag:g.heading,class:"tok-heading"},{tag:g.emphasis,class:"tok-emphasis"},{tag:g.strong,class:"tok-strong"},{tag:g.keyword,class:"tok-keyword"},{tag:g.atom,class:"tok-atom"},{tag:g.bool,class:"tok-bool"},{tag:g.url,class:"tok-url"},{tag:g.labelName,class:"tok-labelName"},{tag:g.inserted,class:"tok-inserted"},{tag:g.deleted,class:"tok-deleted"},{tag:g.literal,class:"tok-literal"},{tag:g.string,class:"tok-string"},{tag:g.number,class:"tok-number"},{tag:[g.regexp,g.escape,g.special(g.string)],class:"tok-string2"},{tag:g.variableName,class:"tok-variableName"},{tag:g.local(g.variableName),class:"tok-variableName tok-local"},{tag:g.definition(g.variableName),class:"tok-variableName tok-definition"},{tag:g.special(g.variableName),class:"tok-variableName2"},{tag:g.definition(g.propertyName),class:"tok-propertyName tok-definition"},{tag:g.typeName,class:"tok-typeName"},{tag:g.namespace,class:"tok-namespace"},{tag:g.className,class:"tok-className"},{tag:g.macroName,class:"tok-macroName"},{tag:g.propertyName,class:"tok-propertyName"},{tag:g.operator,class:"tok-operator"},{tag:g.comment,class:"tok-comment"},{tag:g.meta,class:"tok-meta"},{tag:g.invalid,class:"tok-invalid"},{tag:g.punctuation,class:"tok-punctuation"}]);var qm,Ai=new xe;function Uo(n){return oe.define({combine:n?e=>e.concat(n):void 0})}var Jd=new xe,cn=class{constructor(e,t,r=[],i=""){this.data=e,this.name=i,Me.prototype.hasOwnProperty("tree")||Object.defineProperty(Me.prototype,"tree",{get(){return ze(this)}}),this.parser=t,this.extension=[ri.of(this),Me.languageData.of((s,o,a)=>{let l=kw(s,o,a),c=l.type.prop(Ai);if(!c)return[];let d=s.facet(c),h=l.type.prop(Jd);if(h){let u=l.resolve(o-l.from,a);for(let f of h)if(f.test(u,s)){let m=s.facet(f.facet);return f.type=="replace"?m:m.concat(d)}}return d})].concat(r)}isActiveAt(e,t,r=-1){return kw(e,t,r).type.prop(Ai)==this.data}findRegions(e){let t=e.facet(ri);if((t==null?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let r=[],i=(s,o)=>{if(s.prop(Ai)==this.data){r.push({from:o,to:o+s.length});return}let a=s.prop(xe.mounted);if(a){if(a.tree.prop(Ai)==this.data){if(a.overlay)for(let l of a.overlay)r.push({from:l.from+o,to:l.to+o});else r.push({from:o,to:o+s.length});return}else if(a.overlay){let l=r.length;if(i(a.tree,a.overlay[0].from+o),r.length>l)return}}for(let l=0;l<s.children.length;l++){let c=s.children[l];c instanceof Ee&&i(c,s.positions[l]+o)}};return i(ze(e),0),r}get allowsNesting(){return!0}};cn.setState=ye.define();function kw(n,e,t){let r=n.facet(ri),i=ze(n).topNode;if(!r||r.allowsNesting)for(let s=i;s;s=s.enter(e,t,We.ExcludeBuffers|We.EnterBracketed))s.type.isTop&&(i=s);return i}var Jt=class n extends cn{constructor(e,t,r){super(e,t,[],r),this.parser=t}static define(e){let t=Uo(e.languageData);return new n(t,e.parser.configure({props:[Ai.add(r=>r.isTop?t:void 0)]}),e.name)}configure(e,t){return new n(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function ze(n){let e=n.field(cn.state,!1);return e?e.tree:Ee.empty}var Jm=class{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let r=this.cursorPos-this.string.length;return e<r||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-r,t-r)}},ml=null,Us=class n{constructor(e,t,r=[],i,s,o,a,l){this.parser=e,this.state=t,this.fragments=r,this.tree=i,this.treeLen=s,this.viewport=o,this.skipped=a,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(e,t,r){return new n(e,t,[],Ee.empty,0,r,[],null)}startParse(){return this.parser.startParse(new Jm(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=Ee.empty&&this.isDone(t!=null?t:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let i=Date.now()+e;e=()=>Date.now()>i}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let i=this.parse.advance();if(i)if(this.fragments=this.withoutTempSkipped(Qi.addTree(i,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(r=this.parse.stoppedAt)!==null&&r!==void 0?r:this.state.doc.length,this.tree=i,this.parse=null,this.treeLen<(t!=null?t:this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(Qi.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=ml;ml=this;try{return e()}finally{ml=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=$w(e,t.from,t.to);return e}changes(e,t){let{fragments:r,tree:i,treeLen:s,viewport:o,skipped:a}=this;if(this.takeTree(),!e.empty){let l=[];if(e.iterChangedRanges((c,d,h,u)=>l.push({fromA:c,toA:d,fromB:h,toB:u})),r=Qi.applyChanges(r,l),i=Ee.empty,s=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){a=[];for(let c of this.skipped){let d=e.mapPos(c.from,1),h=e.mapPos(c.to,-1);d<h&&a.push({from:d,to:h})}}}return new n(this.parser,t,r,i,s,o,a,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let r=0;r<this.skipped.length;r++){let{from:i,to:s}=this.skipped[r];i<e.to&&s>e.from&&(this.fragments=$w(this.fragments,i,s),this.skipped.splice(r--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Ti{createParse(t,r,i){let s=i[0].from,o=i[i.length-1].to;return{parsedPos:s,advance(){let l=ml;if(l){for(let c of i)l.tempSkipped.push(c);e&&(l.scheduleOn=l.scheduleOn?Promise.all([l.scheduleOn,e]):e)}return this.parsedPos=o,new Ee(St.none,[],[],o-s)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return ml}};function $w(n,e,t){return Qi.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}var Ol=class n{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,r)||t.takeTree(),new n(t)}static init(e){let t=Math.min(3e3,e.doc.length),r=Us.create(e.facet(ri).parser,e,{from:0,to:t});return r.work(20,t)||r.takeTree(),new n(r)}};cn.state=Xe.define({create:Ol.init,update(n,e){for(let t of e.effects)if(t.is(cn.setState))return t.value;return e.startState.facet(ri)!=e.state.facet(ri)?Ol.init(e.state):n.apply(e)}});var Lw=n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(Lw=n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var Gm=typeof navigator!="undefined"&&(!((qm=navigator.scheduling)===null||qm===void 0)&&qm.isInputPending)?()=>navigator.scheduling.isInputPending():null,EE=it.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(cn.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(cn.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Lw(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:r,viewport:{to:i}}=this.view,s=r.field(cn.state);if(s.tree==s.context.tree&&s.context.isDone(i+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,e&&!Gm?Math.max(25,e.timeRemaining()-5):1e9),a=s.context.treeLen<i&&r.doc.length>i+1e3,l=s.context.work(()=>Gm&&Gm()||Date.now()>o,i+(a?0:1e5));this.chunkBudget-=Date.now()-t,(l||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:cn.setState.of(new Ol(s.context))})),this.chunkBudget>0&&!(l&&!a)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>jn(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),ri=oe.define({combine(n){return n.length?n[0]:null},enables:n=>[cn.state,EE,F.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})]}),Ye=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}},bl=class n{constructor(e,t,r,i,s,o=void 0){this.name=e,this.alias=t,this.extensions=r,this.filename=i,this.loadFunc=s,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:r}=e;if(!t){if(!r)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");t=()=>Promise.resolve(r)}return new n(e.name,(e.alias||[]).concat(e.name).map(i=>i.toLowerCase()),e.extensions||[],e.filename,t,r)}static matchFilename(e,t){for(let i of e)if(i.filename&&i.filename.test(t))return i;let r=/\.([^.]+)$/.exec(t);if(r){for(let i of e)if(i.extensions.indexOf(r[1])>-1)return i}return null}static matchLanguageName(e,t,r=!0){t=t.toLowerCase();for(let i of e)if(i.alias.some(s=>s==t))return i;if(r)for(let i of e)for(let s of i.alias){let o=t.indexOf(s);if(o>-1&&(s.length>2||!/\w/.test(t[o-1])&&!/\w/.test(t[o+s.length])))return i}return null}},lg=oe.define(),yr=oe.define({combine:n=>{if(!n.length)return" ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e}});function ii(n){let e=n.facet(yr);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}function qo(n,e){let t="",r=n.tabSize,i=n.facet(yr)[0];if(i==" "){for(;e>=r;)t+=" ",e-=r;i=" "}for(let s=0;s<e;s++)t+=i;return t}function eh(n,e){n instanceof Me&&(n=new qs(n));for(let r of n.state.facet(lg)){let i=r(n,e);if(i!==void 0)return i}let t=ze(n.state);return t.length>=e?RE(n,t,e):null}var qs=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=ii(e)}lineAt(e,t=1){let r=this.state.doc.lineAt(e),{simulateBreak:i,simulateDoubleBreak:s}=this.options;return i!=null&&i>=r.from&&i<=r.to?s&&i==e?{text:"",from:e}:(t<0?i<e:i<=e)?{text:r.text.slice(i-r.from),from:i}:{text:r.text.slice(0,i-r.from),from:r.from}:r}textAfterPos(e,t=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:r,from:i}=this.lineAt(e,t);return r.slice(e-i,Math.min(r.length,e+100-i))}column(e,t=1){let{text:r,from:i}=this.lineAt(e,t),s=this.countColumn(r,e-i),o=this.options.overrideIndentation?this.options.overrideIndentation(i):-1;return o>-1&&(s+=o-this.countColumn(r,r.search(/\S|$/))),s}countColumn(e,t=e.length){return Gt(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:r,from:i}=this.lineAt(e,t),s=this.options.overrideIndentation;if(s){let o=s(i);if(o>-1)return o}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},En=new xe;function RE(n,e,t){let r=e.resolveStack(t),i=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(i!=r.node){let s=[];for(let o=i;o&&!(o.from<r.node.from||o.to>r.node.to||o.from==r.node.from&&o.type==r.node.type);o=o.parent)s.push(o);for(let o=s.length-1;o>=0;o--)r={node:s[o],next:r}}return Dw(r,n,t)}function Dw(n,e,t){for(let r=n;r;r=r.next){let i=LE(r.node);if(i)return i(eg.create(e,t,r))}return 0}function ME(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function LE(n){let e=n.type.prop(En);if(e)return e;let t=n.firstChild,r;if(t&&(r=t.type.prop(xe.closedBy))){let i=n.lastChild,s=i&&r.indexOf(i.name)>-1;return o=>Zw(o,!0,1,void 0,s&&!ME(o)?i.from:void 0)}return n.parent==null?DE:null}function DE(){return 0}var eg=class n extends qs{constructor(e,t,r){super(e.state,e.options),this.base=e,this.pos=t,this.context=r}get node(){return this.context.node}static create(e,t,r){return new n(e,t,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(t.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(ZE(r,e))break;t=this.state.doc.lineAt(r.from)}return this.lineIndent(t.from)}continue(){return Dw(this.context.next,this.base,this.pos)}};function ZE(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}function IE(n){let e=n.node,t=e.childAfter(e.from),r=e.lastChild;if(!t)return null;let i=n.options.simulateBreak,s=n.state.doc.lineAt(t.from),o=i==null||i<=s.from?s.to:Math.min(s.to,i);for(let a=t.to;;){let l=e.childAfter(a);if(!l||l==r)return null;if(!l.type.isSkipped){if(l.from>=o)return null;let c=/^ */.exec(s.text.slice(t.to-s.from))[0].length;return{from:t.from,to:t.to+c}}a=l.to}}function Go({closing:n,align:e=!0,units:t=1}){return r=>Zw(r,e,t,n)}function Zw(n,e,t,r,i){let s=n.textAfter,o=s.match(/^\s*/)[0].length,a=r&&s.slice(o,o+r.length)==r||i==n.pos+o,l=e?IE(n):null;return l?a?n.column(l.from):n.column(l.to):n.baseIndent+(a?0:n.unit*t)}var Iw=n=>n.baseIndent;function Gn({except:n,units:e=1}={}){return t=>{let r=n&&n.test(t.textAfter);return t.baseIndent+(r?0:e*t.unit)}}var XE=200;function Xw(){return Me.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let e=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!e.length)return n;let t=n.newDoc,{head:r}=n.newSelection.main,i=t.lineAt(r);if(r>i.from+XE)return n;let s=t.sliceString(i.from,r);if(!e.some(c=>c.test(s)))return n;let{state:o}=n,a=-1,l=[];for(let{head:c}of o.selection.ranges){let d=o.doc.lineAt(c);if(d.from==a)continue;a=d.from;let h=eh(o,d.from);if(h==null)continue;let u=/^\s*/.exec(d.text)[0],f=qo(o,h);u!=f&&l.push({from:d.from,to:d.from+u.length,insert:f})}return l.length?[n,{changes:l,sequential:!0}]:n})}var cg=oe.define(),dn=new xe;function Ft(n){let e=n.firstChild,t=n.lastChild;return e&&e.to<t.from?{from:e.to,to:t.type.isError?n.to:t.from}:null}function zE(n,e,t){let r=ze(n);if(r.length<t)return null;let i=r.resolveStack(t,1),s=null;for(let o=i;o;o=o.next){let a=o.node;if(a.to<=t||a.from>t)continue;if(s&&a.from<e)break;let l=a.type.prop(dn);if(l&&(a.to<r.length-50||r.length==n.doc.length||!WE(a))){let c=l(a,n);c&&c.from<=t&&c.from>=e&&c.to>t&&(s=c)}}return s}function WE(n){let e=n.lastChild;return e&&e.to==n.to&&e.type.isError}function Qw(n,e,t){for(let r of n.facet(cg)){let i=r(n,e,t);if(i)return i}return zE(n,e,t)}function zw(n,e){let t=e.mapPos(n.from,1),r=e.mapPos(n.to,-1);return t>=r?void 0:{from:t,to:r}}var Ww=ye.define({map:zw}),dg=ye.define({map:zw});var Gd=Xe.define({create(){return J.none},update(n,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((r,i)=>n=Tw(n,r,i)),n=n.map(e.changes);let t=[];for(let r of e.effects)r.is(Ww)&&!NE(n,r.value.from,r.value.to)?t.push(r.value):r.is(dg)&&(n=n.update({filter:(i,s)=>r.value.from!=i||r.value.to!=s,filterFrom:r.value.from,filterTo:r.value.to}));if(t.length){let{preparePlaceholder:r}=e.state.facet(hg),i=t.map(s=>(r?J.replace({widget:new ng(r(e.state,s))}):Aw).range(s.from,s.to));n=n.update({add:i})}return e.selection&&(n=Tw(n,e.selection.main.head)),n},provide:n=>F.decorations.from(n),toJSON(n,e){let t=[];return n.between(0,e.doc.length,(r,i)=>{t.push(r,i)}),t},fromJSON(n){if(!Array.isArray(n)||n.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t<n.length;){let r=n[t++],i=n[t++];if(typeof r!="number"||typeof i!="number")throw new RangeError("Invalid JSON for fold state");e.push(Aw.range(r,i))}return J.set(e,!0)}});function Tw(n,e,t=e){let r=!1;return n.between(e,t,(i,s)=>{i<t&&s>e&&(r=!0)}),r?n.update({filterFrom:e,filterTo:t,filter:(i,s)=>i>=t||s<=e}):n}function tg(n,e,t){var r;let i=null;return(r=n.field(Gd,!1))===null||r===void 0||r.between(e,t,(s,o)=>{(!i||i.from>s)&&(i={from:s,to:o})}),i}function NE(n,e,t){let r=!1;return n.between(e,e,(i,s)=>{i==e&&s==t&&(r=!0)}),r}var BE={placeholderDOM:null,preparePlaceholder:null,placeholderText:"\u2026"},hg=oe.define({combine(n){return Yn(n,BE)}});function VE(n){let e=[Gd,YE];return n&&e.push(hg.of(n)),e}function Nw(n,e){let{state:t}=n,r=t.facet(hg),i=o=>{let a=n.lineBlockAt(n.posAtDOM(o.target)),l=tg(n.state,a.from,a.to);l&&n.dispatch({effects:dg.of(l)}),o.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(n,i,e);let s=document.createElement("span");return s.textContent=r.placeholderText,s.setAttribute("aria-label",t.phrase("folded code")),s.title=t.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=i,s}var Aw=J.replace({widget:new class extends Ct{toDOM(n){return Nw(n,null)}}}),ng=class extends Ct{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Nw(e,this.value)}},FE={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1},gl=class extends $t{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}};function Bw(n={}){let e=Ue(Ue({},FE),n),t=new gl(e,!0),r=new gl(e,!1),i=it.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(ri)!=o.state.facet(ri)||o.startState.field(Gd,!1)!=o.state.field(Gd,!1)||ze(o.startState)!=ze(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let a=new Zr;for(let l of o.viewportLineBlocks){let c=tg(o.state,l.from,l.to)?r:Qw(o.state,l.from,l.to)?t:null;c&&a.add(l.from,l.from,c)}return a.finish()}}),{domEventHandlers:s}=e;return[i,Hi({class:"cm-foldGutter",markers(o){var a;return((a=o.plugin(i))===null||a===void 0?void 0:a.markers)||$e.empty},initialSpacer(){return new gl(e,!1)},domEventHandlers:zi(Ue({},s),{click:(o,a,l)=>{if(s.click&&s.click(o,a,l))return!0;let c=tg(o.state,a.from,a.to);if(c)return o.dispatch({effects:dg.of(c)}),!0;let d=Qw(o.state,a.from,a.to);return d?(o.dispatch({effects:Ww.of(d)}),!0):!1}})}),VE()]}var YE=F.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"}}),ns=class n{constructor(e,t){this.specs=e;let r;function i(a){let l=mr.newName();return(r||(r=Object.create(null)))["."+l]=a,l}let s=typeof t.all=="string"?t.all:t.all?i(t.all):void 0,o=t.scope;this.scope=o instanceof cn?a=>a.prop(Ai)==o.data:o?a=>a==o:void 0,this.style=jm(e.map(a=>({tag:a.tag,class:a.class||i(Object.assign({},a,{tag:null}))})),{all:s}).style,this.module=r?new mr(r):null,this.themeType=t.themeType}static define(e,t){return new n(e,t||{})}},rg=oe.define(),Vw=oe.define({combine(n){return n.length?[n[0]]:null}});function Hm(n){let e=n.facet(rg);return e.length?e:n.facet(Vw)}function th(n,e){let t=[jE],r;return n instanceof ns&&(n.module&&t.push(F.styleModule.of(n.module)),r=n.themeType),e!=null&&e.fallback?t.push(Vw.of(n)):r?t.push(rg.computeN([F.darkTheme],i=>i.facet(F.darkTheme)==(r=="dark")?[n]:[])):t.push(rg.of(n)),t}var ig=class{constructor(e){this.markCache=Object.create(null),this.tree=ze(e.state),this.decorations=this.buildDeco(e,Hm(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=ze(e.state),r=Hm(e.state),i=r!=Hm(e.startState),{viewport:s}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length<s.to&&!i&&t.type==this.tree.type&&o>=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||i)&&(this.tree=t,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=s.to)}buildDeco(e,t){if(!t||!this.tree.length)return J.none;let r=new Zr;for(let{from:i,to:s}of e.visibleRanges)Pw(this.tree,t,(o,a,l)=>{r.add(o,a,this.markCache[l]||(this.markCache[l]=J.mark({class:l})))},i,s);return r.finish()}},jE=pr.high(it.fromClass(ig,{decorations:n=>n.decorations})),EN=ns.define([{tag:g.meta,color:"#404740"},{tag:g.link,textDecoration:"underline"},{tag:g.heading,textDecoration:"underline",fontWeight:"bold"},{tag:g.emphasis,fontStyle:"italic"},{tag:g.strong,fontWeight:"bold"},{tag:g.strikethrough,textDecoration:"line-through"},{tag:g.keyword,color:"#708"},{tag:[g.atom,g.bool,g.url,g.contentSeparator,g.labelName],color:"#219"},{tag:[g.literal,g.inserted],color:"#164"},{tag:[g.string,g.deleted],color:"#a11"},{tag:[g.regexp,g.escape,g.special(g.string)],color:"#e40"},{tag:g.definition(g.variableName),color:"#00f"},{tag:g.local(g.variableName),color:"#30a"},{tag:[g.typeName,g.namespace],color:"#085"},{tag:g.className,color:"#167"},{tag:[g.special(g.variableName),g.macroName],color:"#256"},{tag:g.definition(g.propertyName),color:"#00c"},{tag:g.comment,color:"#940"},{tag:g.invalid,color:"#f00"}]),UE=F.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Fw=1e4,Yw="()[]{}",jw=oe.define({combine(n){return Yn(n,{afterCursor:!0,brackets:Yw,maxScanDistance:Fw,renderMatch:HE})}}),qE=J.mark({class:"cm-matchingBracket"}),GE=J.mark({class:"cm-nonmatchingBracket"});function HE(n){let e=[],t=n.matched?qE:GE;return e.push(t.range(n.start.from,n.start.to)),n.end&&e.push(t.range(n.end.from,n.end.to)),e}function Cw(n){let e=[],t=n.facet(jw);for(let r of n.selection.ranges){if(!r.empty)continue;let i=Nr(n,r.head,-1,t)||r.head>0&&Nr(n,r.head-1,1,t)||t.afterCursor&&(Nr(n,r.head,1,t)||r.head<n.doc.length&&Nr(n,r.head+1,-1,t));i&&(e=e.concat(t.renderMatch(i,n)))}return J.set(e,!0)}var KE=it.fromClass(class{constructor(n){this.paused=!1,this.decorations=Cw(n.state)}update(n){(n.docChanged||n.selectionSet||this.paused)&&(n.view.composing?(this.decorations=this.decorations.map(n.changes),this.paused=!0):(this.decorations=Cw(n.state),this.paused=!1))}},{decorations:n=>n.decorations}),JE=[KE,UE];function Uw(n={}){return[jw.of(n),JE]}var ug=new xe;function sg(n,e,t){let r=n.prop(e<0?xe.openedBy:xe.closedBy);if(r)return r;if(n.name.length==1){let i=t.indexOf(n.name);if(i>-1&&i%2==(e<0?1:0))return[t[i+e]]}return null}function og(n){let e=n.type.prop(ug);return e?e(n.node):n}function Nr(n,e,t,r={}){let i=r.maxScanDistance||Fw,s=r.brackets||Yw,o=ze(n),a=o.resolveInner(e,t);for(let l=a;l;l=l.parent){let c=sg(l.type,t,s);if(c&&l.from<l.to){let d=og(l);if(d&&(t>0?e>=d.from&&e<d.to:e>d.from&&e<=d.to))return eR(n,e,t,l,d,c,s)}}return tR(n,e,t,o,a.type,i,s)}function eR(n,e,t,r,i,s,o){let a=r.parent,l={from:i.from,to:i.to},c=0,d=a==null?void 0:a.cursor();if(d&&(t<0?d.childBefore(r.from):d.childAfter(r.to)))do if(t<0?d.to<=r.from:d.from>=r.to){if(c==0&&s.indexOf(d.type.name)>-1&&d.from<d.to){let h=og(d);return{start:l,end:h?{from:h.from,to:h.to}:void 0,matched:!0}}else if(sg(d.type,t,o))c++;else if(sg(d.type,-t,o)){if(c==0){let h=og(d);return{start:l,end:h&&h.from<h.to?{from:h.from,to:h.to}:void 0,matched:!1}}c--}}while(t<0?d.prevSibling():d.nextSibling());return{start:l,matched:!1}}function tR(n,e,t,r,i,s,o){if(t<0?!e:e==n.doc.length)return null;let a=t<0?n.sliceDoc(e-1,e):n.sliceDoc(e,e+1),l=o.indexOf(a);if(l<0||l%2==0!=t>0)return null;let c={from:t<0?e-1:e,to:t>0?e+1:e},d=n.doc.iterRange(e,t>0?n.doc.length:0),h=0;for(let u=0;!d.next().done&&u<=s;){let f=d.value;t<0&&(u+=f.length);let m=e+u*t;for(let O=t>0?0:f.length-1,S=t>0?f.length:-1;O!=S;O+=t){let x=o.indexOf(f[O]);if(!(x<0||r.resolveInner(m+O,1).type!=i))if(x%2==0==t>0)h++;else{if(h==1)return{start:c,end:{from:m+O,to:m+O+1},matched:x>>1==l>>1};h--}}t>0&&(u+=f.length)}return d.done?{start:c,matched:!1}:null}function _w(n,e,t,r=0,i=0){e==null&&(e=n.search(/[^\s\u00a0]/),e==-1&&(e=n.length));let s=i;for(let o=r;o<e;o++)n.charCodeAt(o)==9?s+=t-s%t:s++;return s}var Hd=class{constructor(e,t,r,i){this.string=e,this.tabSize=t,this.indentUnit=r,this.overrideIndent=i,this.pos=0,this.start=0,this.lastColumnPos=0,this.lastColumnValue=0}eol(){return this.pos>=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)}eat(e){let t=this.string.charAt(this.pos),r;if(typeof e=="string"?r=t==e:r=t&&(e instanceof RegExp?e.test(t):e(t)),r)return++this.pos,t}eatWhile(e){let t=this.pos;for(;this.eat(e););return this.pos>t}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPos<this.start&&(this.lastColumnValue=_w(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue}indentation(){var e;return(e=this.overrideIndent)!==null&&e!==void 0?e:_w(this.string,null,this.tabSize)}match(e,t,r){if(typeof e=="string"){let i=o=>r?o.toLowerCase():o,s=this.string.substr(this.pos,e.length);return i(s)==i(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let i=this.string.slice(this.pos).match(e);return i&&i.index>0?null:(i&&t!==!1&&(this.pos+=i[0].length),i)}}current(){return this.string.slice(this.start,this.pos)}};function nR(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||rR,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||pg,mergeTokens:n.mergeTokens!==!1}}function rR(n){if(typeof n!="object")return n;let e={};for(let t in n){let r=n[t];e[t]=r instanceof Array?r.slice():r}return e}var Ew=new WeakMap,zt=class n extends cn{constructor(e){let t=Uo(e.languageData),r=nR(e),i,s=new class extends Ti{createParse(o,a,l){return new ag(i,o,a,l)}};super(t,s,[],e.name),this.topNode=aR(t,this),i=this,this.streamParser=r,this.stateAfter=new xe({perNode:!0}),this.tokenTable=e.tokenTable?new Kd(r.tokenTable):oR}static define(e){return new n(e)}getIndent(e){let t,{overrideIndentation:r}=e.options;r&&(t=Ew.get(e.state),t!=null&&t<e.pos-1e4&&(t=void 0));let i=fg(this,e.node.tree,e.node.from,e.node.from,t!=null?t:e.pos),s,o;if(i?(o=i.state,s=i.pos+1):(o=this.streamParser.startState(e.unit),s=e.node.from),e.pos-s>1e4)return null;for(;s<e.pos;){let l=e.state.doc.lineAt(s),c=Math.min(e.pos,l.to);if(l.length){let d=r?r(l.from):-1,h=new Hd(l.text,e.state.tabSize,e.unit,d<0?void 0:d);for(;h.pos<c-l.from;)Gw(this.streamParser.token,h,o)}else this.streamParser.blankLine(o,e.unit);if(c==e.pos)break;s=l.to+1}let a=e.lineAt(e.pos);return r&&t==null&&Ew.set(e.state,a.from),this.streamParser.indent(o,/^\s*(.*)/.exec(a.text)[1],e)}get allowsNesting(){return!1}};function fg(n,e,t,r,i){let s=t>=r&&t+e.length<=i&&e.prop(n.stateAfter);if(s)return{state:n.streamParser.copyState(s),pos:t+e.length};for(let o=e.children.length-1;o>=0;o--){let a=e.children[o],l=t+e.positions[o],c=a instanceof Ee&&l<i&&fg(n,a,l,r,i);if(c)return c}return null}function qw(n,e,t,r,i){if(i&&t<=0&&r>=e.length)return e;!i&&t==0&&e.type==n.topNode&&(i=!0);for(let s=e.children.length-1;s>=0;s--){let o=e.positions[s],a=e.children[s],l;if(o<r&&a instanceof Ee){if(!(l=qw(n,a,t-o,r-o,i)))break;return i?new Ee(e.type,e.children.slice(0,s).concat(l),e.positions.slice(0,s+1),o+l.length):l}}return null}function iR(n,e,t,r,i){for(let s of e){let o=s.from+(s.openStart?25:0),a=s.to-(s.openEnd?25:0),l=o<=t&&a>t&&fg(n,s.tree,0-s.offset,t,a),c;if(l&&l.pos<=r&&(c=qw(n,s.tree,t+s.offset,l.pos+s.offset,!1)))return{state:l.state,tree:c}}return{state:n.streamParser.startState(i?ii(i):4),tree:Ee.empty}}var ag=class{constructor(e,t,r,i){this.lang=e,this.input=t,this.fragments=r,this.ranges=i,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=i[i.length-1].to;let s=Us.get(),o=i[0].from,{state:a,tree:l}=iR(e,r,o,this.to,s==null?void 0:s.state);this.state=a,this.parsedPos=this.chunkStart=o+l.length;for(let c=0;c<l.children.length;c++)this.chunks.push(l.children[c]),this.chunkPos.push(l.positions[c]);s&&this.parsedPos<s.viewport.from-1e5&&i.some(c=>c.from<=s.viewport.from&&c.to>=s.viewport.from)&&(this.state=this.lang.streamParser.startState(ii(s.state)),s.skipUntilInView(this.parsedPos,s.viewport.from),this.parsedPos=s.viewport.from),this.moveRangeIndex()}advance(){let e=Us.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(t,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos<r;)this.parseLine(e);return this.chunkStart<this.parsedPos&&this.finishChunk(),this.parsedPos>=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==`
`&&(t="");else{let r=t.indexOf(`
`);r>-1&&(t=t.slice(0,r))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),r=e+t.length;for(let i=this.rangeIndex;;){let s=this.ranges[i].to;if(s>=r||(t=t.slice(0,s-(r-t.length)),i++,i==this.ranges.length))break;let o=this.ranges[i].from,a=this.lineAfter(o);t+=a,r=o+a.length}return{line:t,end:r}}skipGapsTo(e,t,r){for(;;){let i=this.ranges[this.rangeIndex].to,s=e+t;if(r>0?i>s:i>=s)break;let o=this.ranges[++this.rangeIndex].from;t+=o-i}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to<this.parsedPos;)this.rangeIndex++}emitToken(e,t,r,i){let s=4;if(this.ranges.length>1){i=this.skipGapsTo(t,i,1),t+=i;let a=this.chunk.length;i=this.skipGapsTo(r,i,-1),r+=i,s+=this.chunk.length-a}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=r:this.chunk.push(e,t,r,s),i}parseLine(e){let{line:t,end:r}=this.nextLine(),i=0,{streamParser:s}=this.lang,o=new Hd(t,e?e.state.tabSize:4,e?ii(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=Gw(s.token,o,this.state);if(a&&(i=this.emitToken(this.lang.tokenTable.resolve(a),this.parsedPos+o.start,this.parsedPos+o.pos,i)),o.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPos<this.to&&this.parsedPos++}finishChunk(){let e=Ee.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:sR,topID:0,maxBufferLength:512,reused:this.chunkReused});e=new Ee(e.type,e.children,e.positions,e.length,[[this.lang.stateAfter,this.lang.streamParser.copyState(this.state)]]),this.chunks.push(e),this.chunkPos.push(this.chunkStart-this.ranges[0].from),this.chunk=[],this.chunkReused=void 0,this.chunkStart=this.parsedPos}finish(){return new Ee(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}};function Gw(n,e,t){e.start=e.pos;for(let r=0;r<10;r++){let i=n(e,t);if(e.pos>e.start)return i}throw new Error("Stream parser failed to advance stream.")}var pg=Object.create(null),yl=[St.none],sR=new $i(yl),Rw=[],Mw=Object.create(null),Hw=Object.create(null);for(let[n,e]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"]])Hw[n]=Kw(pg,e);var Kd=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Hw)}resolve(e){return e?this.table[e]||(this.table[e]=Kw(this.extra,e)):0}},oR=new Kd(pg);function Km(n,e){Rw.indexOf(n)>-1||(Rw.push(n),console.warn(e))}function Kw(n,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let d=n[c]||g[c];d?typeof d=="function"?l.length?l=l.map(d):Km(c,`Modifier ${c} used at start of tag`):l.length?Km(c,`Tag ${c} used as modifier`):l=Array.isArray(d)?d:[d]:Km(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),i=r+" "+t.map(a=>a.id),s=Mw[i];if(s)return s.id;let o=Mw[i]=St.define({id:yl.length,name:r,props:[Kt({[r]:t})]});return yl.push(o),o.id}function aR(n,e){let t=St.define({id:yl.length,name:"Document",props:[Ai.add(()=>n),En.add(()=>r=>e.getIndent(r))],top:!0});return yl.push(t),t}var RN={rtl:J.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:qe.RTL}),ltr:J.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:qe.LTR}),auto:J.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var nh=class{constructor(e,t,r,i){this.state=e,this.pos=t,this.explicit=r,this.view=i,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=ze(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),r=Math.max(t.from,this.pos-250),i=t.text.slice(r-t.from,this.pos-t.from),s=i.search(cR(e,!1));return s<0?null:{from:r+s,to:this.pos,text:i.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),r&&r.onDocChange&&(this.abortOnDocChange=!0))}};function Jw(n){let e=Object.keys(n).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function lR(n){let e=Object.create(null),t=Object.create(null);for(let{label:i}of n){e[i[0]]=!0;for(let s=1;s<i.length;s++)t[i[s]]=!0}let r=Jw(e)+Jw(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function rx(n){let e=n.map(i=>typeof i=="string"?{label:i}:i),[t,r]=e.every(i=>/^\w+$/.test(i.label))?[/\w*$/,/\w+$/]:lR(e);return i=>{let s=i.matchBefore(r);return s||i.explicit?{from:s?s.from:i.pos,options:e,validFor:t}:null}}function ix(n,e){return t=>{for(let r=ze(t.state).resolveInner(t.pos,-1);r;r=r.parent){if(n.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(t)}}function cR(n,e){var t;let{source:r}=n,i=e&&r[0]!="^",s=r[r.length-1]!="$";return!i&&!s?n:new RegExp(`${i?"^":""}(?:${r})${s?"$":""}`,(t=n.flags)!==null&&t!==void 0?t:n.ignoreCase?"i":"")}var dR=Tn.define();var FN=typeof navigator=="object"&&/Win/.test(navigator.platform);var hR=F.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:'"\xB7\xB7\xB7"',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:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}}),gg=class{constructor(e,t,r,i){this.field=e,this.line=t,this.from=r,this.to=i}},Og=class n{constructor(e,t,r){this.field=e,this.from=t,this.to=r}map(e){let t=e.mapPos(this.from,-1,Xt.TrackDel),r=e.mapPos(this.to,1,Xt.TrackDel);return t==null||r==null?null:new n(this.field,t,r)}},bg=class n{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let r=[],i=[t],s=e.doc.lineAt(t),o=/^\s*/.exec(s.text)[0];for(let l of this.lines){if(r.length){let c=o,d=/^\t*/.exec(l)[0].length;for(let h=0;h<d;h++)c+=e.facet(yr);i.push(t+c.length-d),l=c+l.slice(d)}r.push(l),t+=l.length+1}let a=this.fieldPositions.map(l=>new Og(l.field,i[l.line]+l.from,i[l.line]+l.to));return{text:r,ranges:a}}static parse(e){let t=[],r=[],i=[],s;for(let o of e.split(/\r\n?|\n/)){for(;s=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let a=s[1]?+s[1]:null,l=s[2]||s[3]||"",c=-1;a===0&&(a=1e9);let d=l.replace(/\\[{}]/g,h=>h[1]);for(let h=0;h<t.length;h++)(a!=null?t[h].seq==a:d&&t[h].name==d)&&(c=h);if(c<0){let h=0;for(;h<t.length&&(a==null||t[h].seq!=null&&t[h].seq<a);)h++;t.splice(h,0,{seq:a,name:d}),c=h;for(let u of i)u.field>=c&&u.field++}for(let h of i)if(h.line==r.length&&h.from>s.index){let u=s[2]?3+(s[1]||"").length:2;h.from-=u,h.to-=u}i.push(new gg(c,r.length,s.index,s.index+d.length)),o=o.slice(0,s.index)+l+o.slice(s.index+s[0].length)}o=o.replace(/\\([{}])/g,(a,l,c)=>{for(let d of i)d.line==r.length&&d.from>c&&(d.from--,d.to--);return l}),r.push(o)}return new n(r,i)}},uR=J.widget({widget:new class extends Ct{toDOM(){let n=document.createElement("span");return n.className="cm-snippetFieldPosition",n}ignoreEvent(){return!1}}}),fR=J.mark({class:"cm-snippetField"}),Ho=class n{constructor(e,t){this.ranges=e,this.active=t,this.deco=J.set(e.map(r=>(r.from==r.to?uR:fR).range(r.from,r.to)),!0)}map(e){let t=[];for(let r of this.ranges){let i=r.map(e);if(!i)return null;t.push(i)}return new n(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(r=>r.field==this.active&&r.from<=t.from&&r.to>=t.to))}},wl=ye.define({map(n,e){return n&&n.map(e)}}),pR=ye.define(),Sl=Xe.define({create(){return null},update(n,e){for(let t of e.effects){if(t.is(wl))return t.value;if(t.is(pR)&&n)return new Ho(n.ranges,t.value)}return n&&e.docChanged&&(n=n.map(e.changes)),n&&e.selection&&!n.selectionInsideField(e.selection)&&(n=null),n},provide:n=>F.decorations.from(n,e=>e?e.deco:J.none)});function yg(n,e){return z.create(n.filter(t=>t.field==e).map(t=>z.range(t.from,t.to)))}function mR(n){let e=bg.parse(n);return(t,r,i,s)=>{let{text:o,ranges:a}=e.instantiate(t.state,i),{main:l}=t.state.selection,c={changes:{from:i,to:s==l.from?l.to:s,insert:De.of(o)},scrollIntoView:!0,annotations:r?[dR.of(r),ut.userEvent.of("input.complete")]:void 0};if(a.length&&(c.selection=yg(a,0)),a.some(d=>d.field>0)){let d=new Ho(a,0),h=c.effects=[wl.of(d)];t.state.field(Sl,!1)===void 0&&h.push(ye.appendConfig.of([Sl,SR,vR,hR]))}t.dispatch(t.state.update(c))}}function sx(n){return({state:e,dispatch:t})=>{let r=e.field(Sl,!1);if(!r||n<0&&r.active==0)return!1;let i=r.active+n,s=n>0&&!r.ranges.some(o=>o.field==i+n);return t(e.update({selection:yg(r.ranges,i),effects:wl.of(s?null:new Ho(r.ranges,i)),scrollIntoView:!0})),!0}}var gR=({state:n,dispatch:e})=>n.field(Sl,!1)?(e(n.update({effects:wl.of(null)})),!0):!1,OR=sx(1),bR=sx(-1);var yR=[{key:"Tab",run:OR,shift:bR},{key:"Escape",run:gR}],ex=oe.define({combine(n){return n.length?n[0]:yR}}),SR=pr.highest(Sn.compute([ex],n=>n.facet(ex)));function vn(n,e){return zi(Ue({},e),{apply:mR(n)})}var vR=F.domEventHandlers({mousedown(n,e){let t=e.state.field(Sl,!1),r;if(!t||(r=e.posAtCoords({x:n.clientX,y:n.clientY}))==null)return!1;let i=t.ranges.find(s=>s.from<=r&&s.to>=r);return!i||i.field==t.active?!1:(e.dispatch({selection:yg(t.ranges,i.field),effects:wl.of(t.ranges.some(s=>s.field>i.field)?new Ho(t.ranges,i.field):null),scrollIntoView:!0}),!0)}});var vl={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Gs=ye.define({map(n,e){let t=e.mapPos(n,-1,Xt.TrackAfter);return t==null?void 0:t}}),Sg=new class extends fr{};Sg.startSide=1;Sg.endSide=-1;var ox=Xe.define({create(){return $e.empty},update(n,e){if(n=n.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);n=n.update({filter:r=>r>=t.from&&r<=t.to})}for(let t of e.effects)t.is(Gs)&&(n=n.update({add:[Sg.range(t.value,t.value+1)]}));return n}});function ax(){return[xR,ox]}var mg="()[]{}<>\xAB\xBB\xBB\xAB\uFF3B\uFF3D\uFF5B\uFF5D";function lx(n){for(let e=0;e<mg.length;e+=2)if(mg.charCodeAt(e)==n)return mg.charAt(e+1);return Hc(n<128?n:n+1)}function cx(n,e){return n.languageDataAt("closeBrackets",e)[0]||vl}var wR=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),xR=F.inputHandler.of((n,e,t,r)=>{if((wR?n.composing:n.compositionStarted)||n.state.readOnly)return!1;let i=n.state.selection.main;if(r.length>2||r.length==2&&Yi(Ir(r,0))==1||e!=i.from||t!=i.to)return!1;let s=PR(n.state,r);return s?(n.dispatch(s),!0):!1}),dx=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let r=cx(n,n.selection.main.head).brackets||vl.brackets,i=null,s=n.changeByRange(o=>{if(o.empty){let a=kR(n.doc,o.head);for(let l of r)if(l==a&&rh(n.doc,o.head)==lx(Ir(l,0)))return{changes:{from:o.head-l.length,to:o.head+l.length},range:z.cursor(o.head-l.length)}}return{range:i=o}});return i||e(n.update(s,{scrollIntoView:!0,userEvent:"delete.backward"})),!i};function PR(n,e){let t=cx(n,n.selection.main.head),r=t.brackets||vl.brackets;for(let i of r){let s=lx(Ir(i,0));if(e==i)return s==i?TR(n,i,r.indexOf(i+i+i)>-1,t):$R(n,i,s,t.before||vl.before);if(e==s&&hx(n,n.selection.main.from))return QR(n,i,s)}return null}function hx(n,e){let t=!1;return n.field(ox).between(0,n.doc.length,r=>{r==e&&(t=!0)}),t}function rh(n,e){let t=n.sliceString(e,e+2);return t.slice(0,Yi(Ir(t,0)))}function kR(n,e){let t=n.sliceString(e-2,e);return Yi(Ir(t,0))==t.length?t:t.slice(1)}function $R(n,e,t,r){let i=null,s=n.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:Gs.of(o.to+e.length),range:z.range(o.anchor+e.length,o.head+e.length)};let a=rh(n.doc,o.head);return!a||/\s/.test(a)||r.indexOf(a)>-1?{changes:{insert:e+t,from:o.head},effects:Gs.of(o.head+e.length),range:z.cursor(o.head+e.length)}:{range:i=o}});return i?null:n.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function QR(n,e,t){let r=null,i=n.changeByRange(s=>s.empty&&rh(n.doc,s.head)==t?{changes:{from:s.head,to:s.head+t.length,insert:t},range:z.cursor(s.head+t.length)}:r={range:s});return r?null:n.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function TR(n,e,t,r){let i=r.stringPrefixes||vl.stringPrefixes,s=null,o=n.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:e,from:a.to}],effects:Gs.of(a.to+e.length),range:z.range(a.anchor+e.length,a.head+e.length)};let l=a.head,c=rh(n.doc,l),d;if(c==e){if(tx(n,l))return{changes:{insert:e+e,from:l},effects:Gs.of(l+e.length),range:z.cursor(l+e.length)};if(hx(n,l)){let u=t&&n.sliceDoc(l,l+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:l,to:l+u.length,insert:u},range:z.cursor(l+u.length)}}}else{if(t&&n.sliceDoc(l-2*e.length,l)==e+e&&(d=nx(n,l-2*e.length,i))>-1&&tx(n,d))return{changes:{insert:e+e+e+e,from:l},effects:Gs.of(l+e.length),range:z.cursor(l+e.length)};if(n.charCategorizer(l)(c)!=et.Word&&nx(n,l,i)>-1&&!AR(n,l,e,i))return{changes:{insert:e+e,from:l},effects:Gs.of(l+e.length),range:z.cursor(l+e.length)}}return{range:s=a}});return s?null:n.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function tx(n,e){let t=ze(n).resolveInner(e+1);return t.parent&&t.from==e}function AR(n,e,t,r){let i=ze(n).resolveInner(e,-1),s=r.reduce((o,a)=>Math.max(o,a.length),0);for(let o=0;o<5;o++){let a=n.sliceDoc(i.from,Math.min(i.to,i.from+t.length+s)),l=a.indexOf(t);if(!l||l>-1&&r.indexOf(a.slice(0,l))>-1){let d=i.firstChild;for(;d&&d.from==i.from&&d.to-d.from>t.length+l;){if(n.sliceDoc(d.to-t.length,d.to)==t)return!1;d=d.firstChild}return!0}let c=i.to==e&&i.parent;if(!c)break;i=c}return!1}function nx(n,e,t){let r=n.charCategorizer(e);if(r(n.sliceDoc(e-1,e))!=et.Word)return e;for(let i of t){let s=e-i.length;if(n.sliceDoc(s,e)==i&&r(n.sliceDoc(s-1,s))!=et.Word)return s}return-1}var ux=nw((n,e,t)=>{let r=ze(n.state).resolveInner(e,t),i=Um(r),s="";if(i)for(let c of i.tags)s+=c.set.join(" < ")+`
`;let o=n.state.facet(ri),a=o instanceof Jt?"Lezer LRLanguage":o instanceof zt?"StreamLanguage":"Unknown",l=o instanceof Jt?"AST ":o instanceof zt?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let d=document.createElement("div");d.style.overflow="visible",d.style.height="0",d.style.width="0";let h=document.createElement("div");return h.className="cm-debug-tooltip",h.textContent=`Parser: ${a}
${l}: ${r.name}
Tags : ${s}`,h.style.whiteSpace="pre-wrap",h.style.fontFamily="monospace",h.style.background="#333",h.style.color="white",h.style.padding="2px 8px",h.style.borderRadius="4px",h.style.fontSize="12px",h.style.border="1px solid #555",h.style.pointerEvents="none",h.style.position="absolute",h.style.bottom="0",h.style.width="max-content",d.appendChild(h),{dom:d}}}},{hoverTime:10,hideOnChange:!0});var CR=n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),r=$g(n.state,t.from);return r.line?_R(n):r.block?RR(n):!1};function kg(n,e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let i=n(e,t);return i?(r(t.update(i)),!0):!1}}var _R=kg(DR,0);var ER=kg(vx,0);var RR=kg((n,e)=>vx(n,e,LR(e)),0);function $g(n,e){let t=n.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var xl=50;function MR(n,{open:e,close:t},r,i){let s=n.sliceDoc(r-xl,r),o=n.sliceDoc(i,i+xl),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(o)[0].length,c=s.length-a;if(s.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:r-a,margin:a&&1},close:{pos:i+l,margin:l&&1}};let d,h;i-r<=2*xl?d=h=n.sliceDoc(r,i):(d=n.sliceDoc(r,r+xl),h=n.sliceDoc(i-xl,i));let u=/^\s*/.exec(d)[0].length,f=/\s*$/.exec(h)[0].length,m=h.length-f-t.length;return d.slice(u,u+e.length)==e&&h.slice(m,m+t.length)==t?{open:{pos:r+u+e.length,margin:/\s/.test(d.charAt(u+e.length))?1:0},close:{pos:i-f-t.length,margin:/\s/.test(h.charAt(m-1))?1:0}}:null}function LR(n){let e=[];for(let t of n.selection.ranges){let r=n.doc.lineAt(t.from),i=t.to<=r.to?r:n.doc.lineAt(t.to);i.from>r.from&&i.from==t.to&&(i=t.to==r.to+1?r:n.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>r.from?e[s].to=i.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return e}function vx(n,e,t=e.selection.ranges){let r=t.map(s=>$g(e,s.from).block);if(!r.every(s=>s))return null;let i=t.map((s,o)=>MR(e,r[o],s.from,s.to));if(n!=2&&!i.every(s=>s))return{changes:e.changes(t.map((s,o)=>i[o]?[]:[{from:s.from,insert:r[o].open+" "},{from:s.to,insert:" "+r[o].close}]))};if(n!=1&&i.some(s=>s)){let s=[];for(let o=0,a;o<i.length;o++)if(a=i[o]){let l=r[o],{open:c,close:d}=a;s.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:d.pos-d.margin,to:d.pos+l.close.length})}return{changes:s}}return null}function DR(n,e,t=e.selection.ranges){let r=[],i=-1;e:for(let{from:s,to:o}of t){let a=r.length,l=1e9,c;for(let d=s;d<=o;){let h=e.doc.lineAt(d);if(c==null&&(c=$g(e,h.from).line,!c))continue e;if(h.from>i&&(s==o||o>h.from)){i=h.from;let u=/^\s*/.exec(h.text)[0].length,f=u==h.length,m=h.text.slice(u,u+c.length)==c?u:-1;u<h.text.length&&u<l&&(l=u),r.push({line:h,comment:m,token:c,indent:u,empty:f,single:!1})}d=h.to+1}if(l<1e9)for(let d=a;d<r.length;d++)r[d].indent<r[d].line.text.length&&(r[d].indent=l);r.length==a+1&&(r[a].single=!0)}if(n!=2&&r.some(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:d,single:h}of r)(h||!d)&&s.push({from:a.from+c,insert:l+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&r.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of r)if(a>=0){let c=o.from+a,d=c+l.length;o.text[d-o.from]==" "&&d++,s.push({from:c,to:d})}return{changes:s}}return null}var wg=Tn.define(),oh=Tn.define(),ZR=oe.define(),wx=oe.define({combine(n){return Yn(n,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(r,i)=>e(r,i)||t(r,i)})}}),xx=Xe.define({create(){return Hs.empty},update(n,e){let t=e.state.facet(wx),r=e.annotation(wg);if(r){let l=Br.fromTransaction(e,r.selection),c=r.side,d=c==0?n.undone:n.done;return l?d=sh(d,d.length,t.minDepth,l):d=$x(d,e.startState.selection),new Hs(c==0?r.rest:d,c==0?d:r.rest)}let i=e.annotation(oh);if((i=="full"||i=="before")&&(n=n.isolate()),e.annotation(ut.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let s=Br.fromTransaction(e),o=e.annotation(ut.time),a=e.annotation(ut.userEvent);return s?n=n.addChanges(s,o,a,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(i=="full"||i=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new Hs(n.done.map(Br.fromJSON),n.undone.map(Br.fromJSON))}});function Px(n={}){return[xx,wx.of(n),F.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?Pl:e.inputType=="historyRedo"?Ko:null;return r?(e.preventDefault(),r(t)):!1}})]}function ah(n,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let i=t.field(xx,!1);if(!i)return!1;let s=i.pop(n,t,e);return s?(r(s),!0):!1}}var Pl=ah(0,!1),Ko=ah(1,!1),IR=ah(0,!0),XR=ah(1,!0);var Br=class n{constructor(e,t,r,i,s){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=i,this.selectionsAfter=s}setSelAfter(e){return new n(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(i=>i.toJSON())}}static fromJSON(e){return new n(e.changes&&On.fromJSON(e.changes),[],e.mapped&&vi.fromJSON(e.mapped),e.startSelection&&z.fromJSON(e.startSelection),e.selectionsAfter.map(z.fromJSON))}static fromTransaction(e,t){let r=Sr;for(let i of e.startState.facet(ZR)){let s=i(e);s.length&&(r=r.concat(s))}return!r.length&&e.changes.empty?null:new n(e.changes.invert(e.startState.doc),r,void 0,t||e.startState.selection,Sr)}static selection(e){return new n(void 0,Sr,void 0,void 0,e)}};function sh(n,e,t,r){let i=e+1>t+20?e-t-1:0,s=n.slice(i,e);return s.push(r),s}function zR(n,e){let t=[],r=!1;return n.iterChangedRanges((i,s)=>t.push(i,s)),e.iterChangedRanges((i,s,o,a)=>{for(let l=0;l<t.length;){let c=t[l++],d=t[l++];a>=c&&o<=d&&(r=!0)}}),r}function WR(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,r)=>t.empty!=e.ranges[r].empty).length===0}function kx(n,e){return n.length?e.length?n.concat(e):n:e}var Sr=[],NR=200;function $x(n,e){if(n.length){let t=n[n.length-1],r=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-NR));return r.length&&r[r.length-1].eq(e)?n:(r.push(e),sh(n,n.length-1,1e9,t.setSelAfter(r)))}else return[Br.selection([e])]}function BR(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function vg(n,e){if(!n.length)return n;let t=n.length,r=Sr;for(;t;){let i=VR(n[t-1],e,r);if(i.changes&&!i.changes.empty||i.effects.length){let s=n.slice(0,t);return s[t-1]=i,s}else e=i.mapped,t--,r=i.selectionsAfter}return r.length?[Br.selection(r)]:Sr}function VR(n,e,t){let r=kx(n.selectionsAfter.length?n.selectionsAfter.map(a=>a.map(e)):Sr,t);if(!n.changes)return Br.selection(r);let i=n.changes.map(e),s=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(s):s;return new Br(i,ye.mapEffects(n.effects,e),o,n.startSelection.map(s),r)}var FR=/^(input\.type|delete)($|\.)/,Hs=class n{constructor(e,t,r=0,i=void 0){this.done=e,this.undone=t,this.prevTime=r,this.prevUserEvent=i}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(e,t,r,i,s){let o=this.done,a=o[o.length-1];return a&&a.changes&&!a.changes.empty&&e.changes&&(!r||FR.test(r))&&(!a.selectionsAfter.length&&t-this.prevTime<i.newGroupDelay&&i.joinToEvent(s,zR(a.changes,e.changes))||r=="input.type.compose")?o=sh(o,o.length-1,i.minDepth,new Br(e.changes.compose(a.changes),kx(ye.mapEffects(e.effects,a.changes),a.effects),a.mapped,a.startSelection,Sr)):o=sh(o,o.length,i.minDepth,e),new n(o,Sr,t,r)}addSelection(e,t,r,i){let s=this.done.length?this.done[this.done.length-1].selectionsAfter:Sr;return s.length>0&&t-this.prevTime<i&&r==this.prevUserEvent&&r&&/^select($|\.)/.test(r)&&WR(s[s.length-1],e)?this:new n($x(this.done,e),this.undone,t,r)}addMapping(e){return new n(vg(this.done,e),vg(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,r){let i=e==0?this.done:this.undone;if(i.length==0)return null;let s=i[i.length-1],o=s.selectionsAfter[0]||(s.startSelection?s.startSelection.map(s.changes.invertedDesc,1):t.selection);if(r&&s.selectionsAfter.length)return t.update({selection:s.selectionsAfter[s.selectionsAfter.length-1],annotations:wg.of({side:e,rest:BR(i),selection:o}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(s.changes){let a=i.length==1?Sr:i.slice(0,i.length-1);return s.mapped&&(a=vg(a,s.mapped)),t.update({changes:s.changes,selection:s.startSelection,effects:s.effects,annotations:wg.of({side:e,rest:a,selection:o}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}};Hs.empty=new Hs(Sr,Sr);var Qx=[{key:"Mod-z",run:Pl,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Ko,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Ko,preventDefault:!0},{key:"Mod-u",run:IR,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:XR,preventDefault:!0}];function Jo(n,e){return z.create(n.ranges.map(e),n.mainIndex)}function Vr(n,e){return n.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function Fr({state:n,dispatch:e},t){let r=Jo(n.selection,t);return r.eq(n.selection,!0)?!1:(e(Vr(n,r)),!0)}function lh(n,e){return z.cursor(e?n.to:n.from)}function Tx(n,e){return Fr(n,t=>t.empty?n.moveByChar(t,e):lh(t,e))}function hn(n){return n.textDirectionAt(n.state.selection.main.head)==qe.LTR}var Ax=n=>Tx(n,!hn(n)),Cx=n=>Tx(n,hn(n));function _x(n,e){return Fr(n,t=>t.empty?n.moveByGroup(t,e):lh(t,e))}var YR=n=>_x(n,!hn(n)),jR=n=>_x(n,hn(n));var iB=typeof Intl!="undefined"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function UR(n,e,t){if(e.type.prop(t))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}function ch(n,e,t){let r=ze(n).resolveInner(e.head),i=t?xe.closedBy:xe.openedBy;for(let l=e.head;;){let c=t?r.childAfter(l):r.childBefore(l);if(!c)break;UR(n,c,i)?r=c:l=t?c.to:c.from}let s=r.type.prop(i),o,a;return s&&(o=t?Nr(n,r.from,1):Nr(n,r.to,-1))&&o.matched?a=t?o.end.to:o.end.from:a=t?r.to:r.from,z.cursor(a,t?-1:1)}var qR=n=>Fr(n,e=>ch(n.state,e,!hn(n))),GR=n=>Fr(n,e=>ch(n.state,e,hn(n)));function Ex(n,e){return Fr(n,t=>{if(!t.empty)return lh(t,e);let r=n.moveVertically(t,e);return r.head!=t.head?r:n.moveToLineBoundary(t,e)})}var Rx=n=>Ex(n,!1),Mx=n=>Ex(n,!0);function Lx(n){let e=n.scrollDOM.clientHeight<n.scrollDOM.scrollHeight-2,t=0,r=0,i;if(e){for(let s of n.state.facet(F.scrollMargins)){let o=s(n);o!=null&&o.top&&(t=Math.max(o==null?void 0:o.top,t)),o!=null&&o.bottom&&(r=Math.max(o==null?void 0:o.bottom,r))}i=n.scrollDOM.clientHeight-t-r}else i=(n.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:t,marginBottom:r,selfScroll:e,height:Math.max(n.defaultLineHeight,i-5)}}function Dx(n,e){let t=Lx(n),{state:r}=n,i=Jo(r.selection,o=>o.empty?n.moveVertically(o,e,t.height):lh(o,e));if(i.eq(r.selection))return!1;let s;if(t.selfScroll){let o=n.coordsAtPos(r.selection.main.head),a=n.scrollDOM.getBoundingClientRect(),l=a.top+t.marginTop,c=a.bottom-t.marginBottom;o&&o.top>l&&o.bottom<c&&(s=F.scrollIntoView(i.main.head,{y:"start",yMargin:o.top-l}))}return n.dispatch(Vr(r,i),{effects:s}),!0}var fx=n=>Dx(n,!1),xg=n=>Dx(n,!0);function rs(n,e,t){let r=n.lineBlockAt(e.head),i=n.moveToLineBoundary(e,t);if(i.head==e.head&&i.head!=(t?r.to:r.from)&&(i=n.moveToLineBoundary(e,t,!1)),!t&&i.head==r.from&&r.length){let s=/^\s*/.exec(n.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;s&&e.head!=r.from+s&&(i=z.cursor(r.from+s))}return i}var HR=n=>Fr(n,e=>rs(n,e,!0)),KR=n=>Fr(n,e=>rs(n,e,!1)),JR=n=>Fr(n,e=>rs(n,e,!hn(n))),eM=n=>Fr(n,e=>rs(n,e,hn(n))),tM=n=>Fr(n,e=>z.cursor(n.lineBlockAt(e.head).from,1)),nM=n=>Fr(n,e=>z.cursor(n.lineBlockAt(e.head).to,-1));function rM(n,e,t){let r=!1,i=Jo(n.selection,s=>{let o=Nr(n,s.head,-1)||Nr(n,s.head,1)||s.head>0&&Nr(n,s.head-1,1)||s.head<n.doc.length&&Nr(n,s.head+1,-1);if(!o||!o.end)return s;r=!0;let a=o.start.from==s.head?o.end.to:o.end.from;return t?z.range(s.anchor,a):z.cursor(a)});return r?(e(Vr(n,i)),!0):!1}var iM=({state:n,dispatch:e})=>rM(n,e,!1);function vr(n,e,t){let r=Jo(n.state.selection,i=>{i.undirectional&&i.head>=i.anchor!=e&&(i=z.range(i.head,i.anchor));let s=t(i);return z.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return r.eq(n.state.selection)?!1:(n.dispatch(Vr(n.state,r)),!0)}function Zx(n,e){return vr(n,e,t=>n.moveByChar(t,e))}var Ix=n=>Zx(n,!hn(n)),Xx=n=>Zx(n,hn(n));function zx(n,e){return vr(n,e,t=>n.moveByGroup(t,e))}var sM=n=>zx(n,!hn(n)),oM=n=>zx(n,hn(n));var aM=n=>{let e=!hn(n);return vr(n,e,t=>ch(n.state,t,e))},lM=n=>{let e=hn(n);return vr(n,e,t=>ch(n.state,t,e))};function Wx(n,e){return vr(n,e,t=>n.moveVertically(t,e))}var Nx=n=>Wx(n,!1),Bx=n=>Wx(n,!0);function Vx(n,e){return vr(n,e,t=>n.moveVertically(t,e,Lx(n).height))}var px=n=>Vx(n,!1),mx=n=>Vx(n,!0),cM=n=>vr(n,!0,e=>rs(n,e,!0)),dM=n=>vr(n,!1,e=>rs(n,e,!1)),hM=n=>{let e=!hn(n);return vr(n,e,t=>rs(n,t,e))},uM=n=>{let e=hn(n);return vr(n,e,t=>rs(n,t,e))},fM=n=>vr(n,!1,e=>z.cursor(n.lineBlockAt(e.head).from)),pM=n=>vr(n,!0,e=>z.cursor(n.lineBlockAt(e.head).to)),gx=({state:n,dispatch:e})=>(e(Vr(n,{anchor:0})),!0),Ox=({state:n,dispatch:e})=>(e(Vr(n,{anchor:n.doc.length})),!0),bx=({state:n,dispatch:e})=>(e(Vr(n,{anchor:n.selection.main.anchor,head:0})),!0),yx=({state:n,dispatch:e})=>(e(Vr(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),mM=({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),gM=({state:n,dispatch:e})=>{let t=dh(n).map(({from:r,to:i})=>z.undirectionalRange(r,Math.min(i+1,n.doc.length)));return e(n.update({selection:z.create(t),userEvent:"select"})),!0},OM=({state:n,dispatch:e})=>{let t=Jo(n.selection,r=>{let i=ze(n),s=i.resolveStack(r.from,1);if(r.empty){let o=i.resolveStack(r.from,-1);o.node.from>=s.node.from&&o.node.to<=s.node.to&&(s=o)}for(let o=s;o;o=o.next){let{node:a}=o;if((a.from<r.from&&a.to>=r.to||a.to>r.to&&a.from<=r.from)&&o.next)return z.undirectionalRange(a.from,a.to)}return r});return t.eq(n.selection)?!1:(e(Vr(n,t)),!0)};function Fx(n,e){let{state:t}=n,r=t.selection,i=t.selection.ranges.slice();for(let s of t.selection.ranges){let o=t.doc.lineAt(s.head);if(e?o.to<n.state.doc.length:o.from>0)for(let a=s;;){let l=n.moveVertically(a,e);if(l.head<o.from||l.head>o.to){i.some(c=>c.head==l.head)||i.push(l);break}else{if(l.head==a.head)break;a=l}}}return i.length==r.ranges.length?!1:(n.dispatch(Vr(t,z.create(i,i.length-1))),!0)}var bM=n=>Fx(n,!1),yM=n=>Fx(n,!0),SM=({state:n,dispatch:e})=>{let t=n.selection,r=null;return t.ranges.length>1?r=z.create([t.main]):t.main.empty||(r=z.create([z.cursor(t.main.head)])),r?(e(Vr(n,r)),!0):!1};function kl(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:r}=n,i=r.changeByRange(s=>{let{from:o,to:a}=s;if(o==a){let l=e(s);l<o?(t="delete.backward",l=ih(n,l,!1)):l>o&&(t="delete.forward",l=ih(n,l,!0)),o=Math.min(o,l),a=Math.max(a,l)}else o=ih(n,o,!1),a=ih(n,a,!0);return o==a?{range:s}:{changes:{from:o,to:a},range:z.cursor(o,o<s.head?-1:1)}});return i.changes.empty?!1:(n.dispatch(r.update(i,{scrollIntoView:!0,userEvent:t,effects:t=="delete.selection"?F.announce.of(r.phrase("Selection deleted")):void 0})),!0)}function ih(n,e,t){if(n instanceof F)for(let r of n.state.facet(F.atomicRanges).map(i=>i(n)))r.between(e,e,(i,s)=>{i<e&&s>e&&(e=t?s:i)});return e}var Yx=(n,e,t)=>kl(n,r=>{let i=r.from,{state:s}=n,o=s.doc.lineAt(i),a,l;if(t&&!e&&i>o.from&&i<o.from+200&&!/[^ \t]/.test(a=o.text.slice(0,i-o.from))){if(a[a.length-1]==" ")return i-1;let c=Gt(a,s.tabSize),d=c%ii(s)||ii(s);for(let h=0;h<d&&a[a.length-1-h]==" ";h++)i--;l=i}else l=Pt(o.text,i-o.from,e,e)+o.from,l==i&&o.number!=(e?s.doc.lines:1)?l+=e?1:-1:!e&&/[\ufe00-\ufe0f]/.test(o.text.slice(l-o.from,i-o.from))&&(l=Pt(o.text,l-o.from,!1,!1)+o.from);return l}),Pg=n=>Yx(n,!1,!0);var jx=n=>Yx(n,!0,!1),Ux=(n,e)=>kl(n,t=>{let r=t.head,{state:i}=n,s=i.doc.lineAt(r),o=i.charCategorizer(r);for(let a=null;;){if(r==(e?s.to:s.from)){r==t.head&&s.number!=(e?i.doc.lines:1)&&(r+=e?1:-1);break}let l=Pt(s.text,r-s.from,e)+s.from,c=s.text.slice(Math.min(r,l)-s.from,Math.max(r,l)-s.from),d=o(c);if(a!=null&&d!=a)break;(c!=" "||r!=t.head)&&(a=d),r=l}return r}),qx=n=>Ux(n,!1),vM=n=>Ux(n,!0);var wM=n=>kl(n,e=>{let t=n.lineBlockAt(e.head).to;return e.head<t?t:Math.min(n.state.doc.length,e.head+1)});var xM=n=>kl(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),PM=n=>kl(n,e=>{let t=n.moveToLineBoundary(e,!0).head;return e.head<t?t:Math.min(n.state.doc.length,e.head+1)});var kM=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:De.of(["",""])},range:z.cursor(r.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},$M=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(r=>{if(!r.empty||r.from==0||r.from==n.doc.length)return{range:r};let i=r.from,s=n.doc.lineAt(i),o=i==s.from?i-1:Pt(s.text,i-s.from,!1)+s.from,a=i==s.to?i+1:Pt(s.text,i-s.from,!0)+s.from;return{changes:{from:o,to:a,insert:n.doc.slice(i,a).append(n.doc.slice(o,i))},range:z.cursor(a)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function dh(n){let e=[],t=-1;for(let r of n.selection.ranges){let i=n.doc.lineAt(r.from),s=n.doc.lineAt(r.to);if(!r.empty&&r.to==s.from&&(s=n.doc.lineAt(r.to-1)),t>=i.number){let o=e[e.length-1];o.to=s.to,o.ranges.push(r)}else e.push({from:i.from,to:s.to,ranges:[r]});t=s.number+1}return e}function Gx(n,e,t){if(n.readOnly)return!1;let r=[],i=[];for(let s of dh(n)){if(t?s.to==n.doc.length:s.from==0)continue;let o=n.doc.lineAt(t?s.to+1:s.from-1),a=o.length+1;if(t){r.push({from:s.to,to:o.to},{from:s.from,insert:o.text+n.lineBreak});for(let l of s.ranges)i.push(z.range(Math.min(n.doc.length,l.anchor+a),Math.min(n.doc.length,l.head+a)))}else{r.push({from:o.from,to:s.from},{from:s.to,insert:n.lineBreak+o.text});for(let l of s.ranges)i.push(z.range(l.anchor-a,l.head-a))}}return r.length?(e(n.update({changes:r,scrollIntoView:!0,selection:z.create(i,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var QM=({state:n,dispatch:e})=>Gx(n,e,!1),TM=({state:n,dispatch:e})=>Gx(n,e,!0);function Hx(n,e,t){if(n.readOnly)return!1;let r=[];for(let s of dh(n))t?r.push({from:s.from,insert:n.doc.slice(s.from,s.to)+n.lineBreak}):r.push({from:s.to,insert:n.lineBreak+n.doc.slice(s.from,s.to)});let i=n.changes(r);return e(n.update({changes:i,selection:n.selection.map(i,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var AM=({state:n,dispatch:e})=>Hx(n,e,!1),CM=({state:n,dispatch:e})=>Hx(n,e,!0),Qg=n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(dh(e).map(({from:i,to:s})=>(i>0?i--:s<e.doc.length&&s++,{from:i,to:s}))),r=Jo(e.selection,i=>{let s;if(n.lineWrapping){let o=n.lineBlockAt(i.head),a=n.coordsAtPos(i.head,i.assoc||1);a&&(s=o.bottom+n.documentTop-a.bottom+n.defaultLineHeight/2)}return n.moveVertically(i,!0,s)}).map(t);return n.dispatch({changes:t,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0},Kx=({state:n,dispatch:e})=>(e(n.update(n.replaceSelection(n.lineBreak),{scrollIntoView:!0,userEvent:"input"})),!0);function _M(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=ze(n).resolveInner(e),r=t.childBefore(e),i=t.childAfter(e),s;return r&&i&&r.to<=e&&i.from>=e&&(s=r.type.prop(xe.closedBy))&&s.indexOf(i.name)>-1&&n.doc.lineAt(r.to).from==n.doc.lineAt(i.from).from&&!/\S/.test(n.sliceDoc(r.to,i.from))?{from:r.to,to:i.from}:null}var Sx=Jx(!1),EM=Jx(!0);function Jx(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(i=>{let{from:s,to:o}=i,a=e.doc.lineAt(s),l=!n&&s==o&&_M(e,s);n&&(s=o=(o<=a.to?a:e.doc.lineAt(o)).to);let c=new qs(e,{simulateBreak:s,simulateDoubleBreak:!!l}),d=eh(c,s);for(d==null&&(d=Gt(/^\s*/.exec(e.doc.lineAt(s).text)[0],e.tabSize));o<a.to&&/\s/.test(a.text[o-a.from]);)o++;l?{from:s,to:o}=l:s>a.from&&s<a.from+100&&!/\S/.test(a.text.slice(0,s))&&(s=a.from);let h=["",qo(e,d)];return l&&h.push(qo(e,c.lineIndent(a.from,-1))),{changes:{from:s,to:o,insert:De.of(h)},range:z.cursor(s+1+h[1].length)}});return t(e.update(r,{scrollIntoView:!0,userEvent:"input"})),!0}}function Tg(n,e){let t=-1;return n.changeByRange(r=>{let i=[];for(let o=r.from;o<=r.to;){let a=n.doc.lineAt(o);a.number>t&&(r.empty||r.to>a.from)&&(e(a,i,r),t=a.number),o=a.to+1}let s=n.changes(i);return{changes:i,range:z.range(s.mapPos(r.anchor,1),s.mapPos(r.head,1))}})}var RM=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),r=new qs(n,{overrideIndentation:s=>{let o=t[s];return o==null?-1:o}}),i=Tg(n,(s,o,a)=>{let l=eh(r,s.from);if(l==null)return;/\S/.test(s.text)||(l=0);let c=/^\s*/.exec(s.text)[0],d=qo(n,l);(c!=d||a.from<s.from+c.length)&&(t[s.from]=l,o.push({from:s.from,to:s.from+c.length,insert:d}))});return i.changes.empty||e(n.update(i,{userEvent:"indent"})),!0},hh=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(Tg(n,(t,r)=>{r.push({from:t.from,insert:n.facet(yr)})}),{userEvent:"input.indent"})),!0),uh=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(Tg(n,(t,r)=>{let i=/^\s*/.exec(t.text)[0];if(!i)return;let s=Gt(i,n.tabSize),o=0,a=qo(n,Math.max(0,s-ii(n)));for(;o<i.length&&o<a.length&&i.charCodeAt(o)==a.charCodeAt(o);)o++;r.push({from:t.from+o,to:t.from+i.length,insert:a.slice(o)})}),{userEvent:"delete.dedent"})),!0),MM=n=>(n.setTabFocusMode(),!0);var e1=({state:n,dispatch:e})=>n.selection.ranges.some(t=>!t.empty)?hh({state:n,dispatch:e}):(e(n.update(n.replaceSelection(" "),{scrollIntoView:!0,userEvent:"input"})),!0),LM=[{key:"Ctrl-b",run:Ax,shift:Ix,preventDefault:!0},{key:"Ctrl-f",run:Cx,shift:Xx},{key:"Ctrl-p",run:Rx,shift:Nx},{key:"Ctrl-n",run:Mx,shift:Bx},{key:"Ctrl-a",run:tM,shift:fM},{key:"Ctrl-e",run:nM,shift:pM},{key:"Ctrl-d",run:jx},{key:"Ctrl-h",run:Pg},{key:"Ctrl-k",run:wM},{key:"Ctrl-Alt-h",run:qx},{key:"Ctrl-o",run:kM},{key:"Ctrl-t",run:$M},{key:"Ctrl-v",run:xg}],DM=[{key:"ArrowLeft",run:Ax,shift:Ix,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:YR,shift:sM,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:JR,shift:hM,preventDefault:!0},{key:"ArrowRight",run:Cx,shift:Xx,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:jR,shift:oM,preventDefault:!0},{mac:"Cmd-ArrowRight",run:eM,shift:uM,preventDefault:!0},{key:"ArrowUp",run:Rx,shift:Nx,preventDefault:!0},{mac:"Cmd-ArrowUp",run:gx,shift:bx},{mac:"Ctrl-ArrowUp",run:fx,shift:px},{key:"ArrowDown",run:Mx,shift:Bx,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Ox,shift:yx},{mac:"Ctrl-ArrowDown",run:xg,shift:mx},{key:"PageUp",run:fx,shift:px},{key:"PageDown",run:xg,shift:mx},{key:"Home",run:KR,shift:dM,preventDefault:!0},{key:"Mod-Home",run:gx,shift:bx},{key:"End",run:HR,shift:cM,preventDefault:!0},{key:"Mod-End",run:Ox,shift:yx},{key:"Enter",run:Sx,shift:Sx},{key:"Mod-a",run:mM},{key:"Backspace",run:Pg,shift:Pg,preventDefault:!0},{key:"Delete",run:jx,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:qx,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:vM,preventDefault:!0},{mac:"Mod-Backspace",run:xM,preventDefault:!0},{mac:"Mod-Delete",run:PM,preventDefault:!0}].concat(LM.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),t1=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:qR,shift:aM},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:GR,shift:lM},{key:"Alt-ArrowUp",run:QM},{key:"Shift-Alt-ArrowUp",run:AM},{key:"Alt-ArrowDown",run:TM},{key:"Shift-Alt-ArrowDown",run:CM},{key:"Mod-Alt-ArrowUp",run:bM},{key:"Mod-Alt-ArrowDown",run:yM},{key:"Escape",run:SM},{key:"Mod-Enter",run:EM},{key:"Alt-l",mac:"Ctrl-l",run:gM},{key:"Mod-i",run:OM,preventDefault:!0},{key:"Mod-[",run:uh},{key:"Mod-]",run:hh},{key:"Mod-Alt-\\",run:RM},{key:"Shift-Mod-k",run:Qg},{key:"Shift-Mod-\\",run:iM},{key:"Mod-/",run:CR},{key:"Alt-A",mac:"Ctrl-A",run:ER},{key:"Ctrl-m",mac:"Shift-Alt-m",run:MM}].concat(DM);function ZM(n,e){let t=n.doc.lineAt(e),r=t.text.slice(0,e-t.from),i=Gt(r,n.tabSize),s=/^\s*$/.test(r)?ii(n):n.tabSize;return" ".repeat(s-i%s)}function n1(n){let e=new Map,t=0,r=0,i=0;for(let a of n.split(`
`,2e3)){if(!a.trim())continue;if(a[0]==" "){t++;continue}let l=a.length-a.trimStart().length;l>0&&r++;let c=l-i;c>=2&&c<=8&&e.set(c,(e.get(c)||0)+1),i=l}if(t>r)return" ";let s=2,o=0;for(let[a,l]of e)(l>o||l==o&&a<s)&&(s=a,o=l);return" ".repeat(s)}function IM(n){let e=n.state;return e.selection.ranges.some(t=>!t.empty)?hh(n):(n.dispatch(e.changeByRange(t=>{let r=ZM(e,t.head);return{changes:{from:t.head,insert:r},range:z.cursor(t.head+r.length)}}),{scrollIntoView:!0,userEvent:"input"}),!0)}function XM(n){for(let e=1;e<=n.doc.lines;e++)if(/^\d\d/.test(n.doc.line(e).text))return!0;return!1}var r1=[{key:"Enter",run:n=>XM(n.state)&&Kx(n)}],i1=[{key:"Tab",run:IM},{key:"Shift-Tab",run:uh}],s1=[{key:"Tab",run:e1},{key:"Shift-Tab",run:uh}],$l=50,fh=8,zM=!0;function ea(n){zM&&console.log("[asm-tab] "+n)}function ta(n,e){let t=0;for(let r=0;r<e;r++)t=n.charCodeAt(r)==9?(Math.floor(t/fh)+1)*fh:t+1;return t}function Ag(n,e){n>0&&e.set(n,(e.get(n)||0)+1)}function WM(n,e){let t=[],r=/\S+/g,i;for(;(i=r.exec(n))!==null&&n[i.index]!=";";)t.push(ta(n,i.index));let s=/(^|\s);/.exec(n);s&&Ag(ta(n,s.index+s[1].length),e);let o=t.length&&t[0]==0?t.slice(1):t;o.length>=1&&Ag(o[0],e),o.length>=2&&Ag(o[1],e)}var NM=3;function o1(n,e){let t=n.doc.lineAt(e),r=n.doc.lines,i=(a,l,c,d)=>{let h=0;for(let u=a;u!=l&&h<$l;u+=c){let f=n.doc.line(u);f.text.trim()&&(WM(f.text,d),h++)}return h},s=new Map;return i(t.number+1,Math.min(r,t.number+$l)+1,1,s)<NM&&i(t.number-1,Math.max(1,t.number-$l)-1,-1,s),s}function BM(n,e,t){let r=-1,i=0;for(let[s,o]of n)s>e&&(o>i||o==i&&s<r)&&(r=s,i=o);return r>=0?r:(Math.floor(e/t)+1)*t}function VM(n,e,t){let r=-1,i=0;for(let[s,o]of n)s<e&&(o>i||o==i&&s>r)&&(r=s,i=o);return r>=0?r:Math.max(0,Math.min(Math.floor((e-1)/t)*t,e-1))}function a1(n,e){let t=n.doc.lineAt(e),r=Math.max(1,t.number-$l),i=Math.min(n.doc.lines,t.number+$l);for(let s=r;s<=i;s++)if(n.doc.line(s).text.includes(" "))return!0;return!1}function l1(n){return"["+[...n.entries()].sort((e,t)=>e[0]-t[0]).map(([e,t])=>`${e}:${t}`).join(" ")+"]"}function FM(n,e){let t=n.doc.lineAt(e),r=ta(t.text,e-t.from),i=a1(n,e),s=i?fh:n.tabSize,o=o1(n,e),a=BM(o,r,s);return ea(`Tab @ line ${t.number} col ${r}: stops(col:freq)=${l1(o)} ${i?"grid=8 (file has tabs)":`grid=${n.tabSize}`} -> target=${a} | line=${JSON.stringify(t.text.slice(0,r))}+CURSOR`),a<=r?null:{from:e,insert:" ".repeat(a-r)}}function YM(n,e){let t=n.doc.lineAt(e),r=e-t.from;if(r==0)return ea(`Backspace @ line ${t.number} col 0: start of line, using default`),null;if(t.text[r-1]==" ")return ea(`Backspace @ line ${t.number} col ${ta(t.text,r)}: deleting one tab char`),{from:e-1,to:e};if(!/^[ \t]+$/.test(t.text.slice(0,r)))return ea(`Backspace @ line ${t.number} col ${ta(t.text,r)}: cursor not in leading whitespace, using default`),null;let i=a1(n,e),s=i?fh:n.tabSize,o=ta(t.text,r),a=o1(n,e),l=VM(a,o,s);if(l>=o)return ea(`Backspace @ line ${t.number} col ${o}: no stop before cursor, using default`),null;let c=e-(o-l);return ea(`Backspace @ line ${t.number} col ${o}: stops(col:freq)=${l1(a)} ${i?"grid=8 (file has tabs)":`grid=${n.tabSize}`} -> deleting cols ${l}..${o} | line=${JSON.stringify(t.text.slice(0,r))}+CURSOR`),{from:c,to:e}}function jM(n){let e=n.state;if(e.selection.ranges.some(r=>!r.empty))return!1;let t=e.changeByRange(r=>{let i=FM(e,r.head);return i?{changes:i,range:z.cursor(r.head+i.insert.length)}:{range:r}});return n.dispatch(t),!0}function UM(n){let e=n.state,t=e.selection.main;if(!t.empty)return!1;let r=YM(e,t.head);return r?(n.dispatch(e.update({changes:r,selection:z.cursor(r.from)})),!0):!1}function c1(n){return[{key:"Tab",run:e=>n()&&jM(e)},{key:"Backspace",run:e=>n()&&UM(e)}]}var qM=new Vt,GM=new Vt,HM=new Vt,KM=new Vt,JM=new Vt,eL=new Vt,tL=new Vt,nL=new Vt,h1="8bitworkshop/editorSettings",d1={tabSize:8,tabsToSpaces:!0,highlightSpecialChars:!1,highlightWhitespace:!1,highlightTrailingWhitespace:!1,closeBrackets:!1,debugHighlightTags:!1,showLineNumbers:!1,showStatusBar:!0};function na(){try{var n=localStorage.getItem(h1);if(n)return Ue(Ue({},d1),JSON.parse(n))}catch(e){}return Ue({},d1)}function rL(n){localStorage.setItem(h1,JSON.stringify(n))}var u1=[[KM,n=>[Me.tabSize.of(n.tabSize),yr.of(" ".repeat(n.tabSize))]],[eL,n=>Sn.of(n.tabsToSpaces?i1:s1)],[qM,n=>n.highlightSpecialChars?ew():[]],[GM,n=>n.highlightWhitespace?dw():[]],[HM,n=>n.highlightTrailingWhitespace?hw():[]],[JM,n=>n.closeBrackets?[ax(),Sn.of([{key:"Backspace",run:dx}])]:[]],[tL,n=>n.debugHighlightTags?ux:[]],[nL,n=>n.showLineNumbers?Xd():[]]];function f1(n){return u1.map(([e,t])=>e.of(t(n)))}var p1=new Set;function m1(n){p1.add(n)}function iL(n){var e=u1.map(([r,i])=>r.reconfigure(i(n)));for(var t of p1)t.dispatch({effects:e})}function g1(){var n=na(),e=!wo();bootbox.dialog({onEscape:!0,title:"Settings",message:`<form id="settingsForm" onsubmit="return false">
<div class="form-group"><label>Tab size: <input type="number" id="setting_tabSize" min="1" max="40" value="${n.tabSize}" style="width:4em"></label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_tabsToSpaces" ${n.tabsToSpaces?"checked":""}> Insert spaces when pressing TAB</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightSpecialChars" ${n.highlightSpecialChars?"checked":""}> Highlight special characters</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightWhitespace" ${n.highlightWhitespace?"checked":""}> Highlight whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightTrailingWhitespace" ${n.highlightTrailingWhitespace?"checked":""}> Highlight unwanted trailing whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showLineNumbers" ${n.showLineNumbers?"checked":""}> Show line numbers</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_closeBrackets" ${n.closeBrackets?"checked":""}> Automatically add and remove closing brackets</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showStatusBar" ${n.showStatusBar?"checked":""}> Show keyboard shortcuts / status bar</label></div>
${e?`
<hr>
<h5>Internal</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${n.debugHighlightTags?"checked":""}> Debug editor syntax highlighting tags</label></div>
`:""}
</form>`,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{n.tabSize=parseInt($("#setting_tabSize").val())||8,n.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),n.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),n.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),n.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),n.closeBrackets=$("#setting_closeBrackets").is(":checked"),n.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(n.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),n.showStatusBar=$("#setting_showStatusBar").is(":checked"),rL(n),iL(n),Cc(n.showStatusBar)}}}})}function ph(){return typeof navigator!="undefined"?navigator.storage:null}function sL(n){var e=n!==void 0?n:ph();return!!(e&&typeof e.persist=="function")}async function oL(n){var e=n!==void 0?n:ph();try{if(e&&typeof e.estimate=="function"){var t=await e.estimate();return{usage:t&&t.usage,quota:t&&t.quota}}}catch(r){console.log("storage.estimate() failed",r)}return{}}async function aL(n){var e=n!==void 0?n:ph(),t={supported:sL(e),persisted:!1};try{e&&typeof e.persisted=="function"&&(t.persisted=await e.persisted())}catch(i){console.log("storage.persisted() failed",i)}var r=await oL(e);return t.usage=r.usage,t.quota=r.quota,t}async function _g(n){var e=n!==void 0?n:ph(),t=await aL(e);if(!t.supported||t.persisted)return t.granted=!1,t;try{t.persisted=await e.persist(),t.granted=t.persisted}catch(r){console.log("storage.persist() failed",r),t.granted=!1}return t}function lL(n){return n==null&&(n=typeof navigator!="undefined"?navigator.userAgent:""),n?/Edg\/|OPR\/|Chrome\/|Chromium\//.test(n)?"chromium":/Firefox\/|FxiOS\//.test(n)?"firefox":/Safari\//.test(n)?"safari":"other":"other"}function O1(n){if(typeof n!="number"||!isFinite(n))return"?";for(var e=["bytes","KB","MB","GB","TB"],t=0;n>=1024&&t<e.length-1;)n/=1024,t++;return(t==0?n.toFixed(0):n.toFixed(1))+" "+e[t]}function b1(n){return n.usage==null&&n.quota==null?"":"This site is using "+O1(n.usage)+" of the "+O1(n.quota)+" your browser allows."}var Cg="Your edits are still saved in this browser either way &mdash; persistence only protects them if the browser needs to reclaim disk space. Use <b>File &gt; Download All Changes as ZIP</b> (or push to GitHub) to keep a backup.";function y1(n){switch(n||lL()){case"chromium":return"Chrome and Edge never ask &mdash; they grant persistent storage on their own to sites you use regularly. Bookmarking this page, or installing it as an app, usually qualifies it; then try <b>Request Local Storage Permissions</b> again.";case"firefox":return"Firefox asks for permission the first time. If you dismissed or blocked that prompt, clear it from the padlock icon in the address bar and try <b>Request Local Storage Permissions</b> again.";case"safari":return"Safari decides on its own, and may delete site data after several days without a visit. Adding this page to your Favorites or Home Screen makes eviction less likely.";default:return"This browser decides on its own whether to keep site data."}}function cL(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+Cg}function S1(n,e){var t=b1(n),r;return n.supported?n.persisted?r=(n.granted?"Your browser just granted persistent storage. ":"Your browser is already persisting your local file edits. ")+Cg:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+y1()+"<br><br>"+Cg:r=cL(),t?r+"<br><br>"+t:r}function v1(n){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+b1(n)+" Delete unused projects, or use <b>File &gt; Download All Changes as ZIP</b> to back up your work before it is lost."+(n.supported&&!n.persisted?"<br><br>"+y1():"")}var Q1=Of(Qf());function Ks(n,e){if(e){var t=Da(e);t!=""&&n.startsWith(t+"/")&&(n=n.substring(t.length+1))}return n}function dL(n,e){var t=Da(e);return t.length>0&&t!="local"?[t+"/"+n,n]:[n]}function hL(n,e,t,r){var i=s=>Ry(n,s).map(o=>dL(o,e));return{includes:i(Lc(t,r)),links:i(Dc(t,r))}}async function x1(n,e,t,r,i){for(var s=[],o=new Set([Ks(e,e)]),a=[{path:e,text:t,tool:i(e)}];a.length;){var{path:l,text:c,tool:d}=a.shift(),h=hL(c,l,d,r),u=h.includes.map(D=>({candidates:D,link:!1})).concat(h.links.map(D=>({candidates:D,link:!0})));for(var{candidates:f,link:m}of u)for(var O of f){var S=Ks(O,e);if(o.has(S))break;var x=await n.readFile(O);if(x!=null){o.add(S),s.push({path:O,filename:S,link:m,data:x}),typeof x=="string"&&a.push({path:O,text:x,tool:m?i(O):d});break}}}return s}function P1(n,e){var t={updates:[],buildsteps:[]},r={},i=[],s=O=>{O&&i.indexOf(O)<0&&i.push(O)},o=Ks(n.mainPath,n.mainPath);t.updates.push({path:o,data:n.mainData}),r[o]=n.mainPath;var a=n.getToolForFilename(n.mainPath);s(a);var l=a.startsWith("remote:"),c=Ey(a),d=[],h=[];for(var u of e)(!u.link||l||c)&&(t.updates.push({path:u.filename,data:u.data}),d.push(u.filename),u.link&&c&&h.push(u.filename)),r[u.filename]=u.path;var f={path:o,files:[o].concat(d),platform:n.platformId,tool:a,mainfile:!0};if(h.length&&(f.linkfiles=h),n.symbols&&(f.symbols=n.symbols),n.buildArgs&&(f.buildArgs=n.buildArgs),t.buildsteps.push(f),!l&&!c){for(var u of e)if(u.data&&u.link){var m=n.getToolForFilename(u.filename);s(m),t.updates.push({path:u.filename,data:u.data}),t.buildsteps.push({path:u.filename,files:[u.filename].concat(d),platform:n.platformId,tool:m})}}return n.dataItems&&(t.setitems=n.dataItems),{msg:t,filename2path:r,preloads:i}}function Eg(n){if(n)for(var e in n){var t=n[e];if(t.lines){t.sourcefile=new Rs(t.lines,t.text);var r={};for(var i of t.lines){var s=i.path||"";(r[s]||(r[s]=[])).push(i)}var o=Object.keys(r);if(o.length>1||o.length==1&&o[0]!=""){t.sourcefiles={};for(var s of o)t.sourcefiles[s]=new Rs(r[s],t.text)}}t.asmlines&&(t.assemblyfile=new Rs(t.asmlines,t.text))}}function k1(n,e){if(!n||!n.sourcefiles)return null;var t=yt(Zt(e));for(var r in n.sourcefiles)if(yt(Zt(r))==t)return n.sourcefiles[r];return null}function w1(n,e){var t=k1(n,e);return t?Object.assign({},n,{sourcefile:t}):n}function Rg(n,e,t){if(n){var r=Ks(e,t),i=Zt(r);for(var s in n)if(s==e||s==r)return w1(n[s],r);for(var s in n)if(Zt(s)==i)return w1(n[s],r);for(var s in n){var o=k1(n[s],r);if(o)return Object.assign({},n[s],{sourcefile:o})}}}function $1(n,e){var t=n||[];return t.forEach(r=>r.source="native"),e&&(e.forEach(r=>r.source="linker"),t=t.concat(e)),t.sort((r,i)=>r.start-i.start),t}var mh=class{constructor(e){this.preset_id=Nt(e)}async getRemoteFile(e){let t=await C0(e,"arraybuffer");return t instanceof Uint8Array?wc(e,t):t}async getFileData(e){var t="presets/"+this.preset_id+"/"+e,r=await this.getRemoteFile(t);return r&&console.log("read",t,r.length,"bytes"),r}async setFileData(e,t){}onFileSystemUpdate(e){}};var ra=class{constructor(e,t){this.basefs=e,this.overlayfs=t}async getFileData(e){var t=await this.overlayfs.getFileData(e);return t==null?this.basefs.getFileData(e):t}async setFileData(e,t){return await this.overlayfs.setFileData(e,t),this.basefs.setFileData(e,t)}onFileSystemUpdate(e){this.overlayfs.onFileSystemUpdate(e),this.basefs.onFileSystemUpdate(e)}},gh=class{constructor(e){this.store=e}async getFileData(e){return this.store.getItem(e)}async setFileData(e,t){return this.store.setItem(e,t)}onFileSystemUpdate(e){}};var Oh=class{constructor(e,t,r,i){this.filedata={};this.pendingWorkerMessages=0;this.tools_preloaded={};this.isCompiling=!1;this.filename2path={};this.pendingQueries={};this.queryCounter=0;this.fileProvider={readFile:async e=>{var t,r;return(r=(t=(await this.loadFiles([e]))[0])==null?void 0:t.data)!=null?r:null}};this.worker=e,this.platform_id=t,this.platform=r,this.filesystem=i,e.onmessage=s=>{this.receiveWorkerMessage(s.data)},i.onFileSystemUpdate(async s=>{if(s in this.filedata){var o=await this.filesystem.getFileData(s);o&&(this.updateFile(s,o),this.onFileChanged&&this.onFileChanged(s,o))}})}receiveWorkerMessage(e){if(e&&e.qid!=null){var t=this.pendingQueries[e.qid];t&&(delete this.pendingQueries[e.qid],t(e));return}var r=this.pendingWorkerMessages>1;r?(this.sendBuild(),this.pendingWorkerMessages=1):(this.callbackBuildStatus&&this.callbackBuildStatus(!1),this.isCompiling||(console.log(this.pendingWorkerMessages),console.trace()),this.isCompiling=!1,this.pendingWorkerMessages=0),e&&Ly(e)?this.processBuildResult(e):Xc(e)&&this.processBuildListings(e),this.callbackBuildResult(e)}queryWorker(e){return new Promise(t=>{var r=++this.queryCounter;this.pendingQueries[r]=s=>{clearTimeout(i),t(s)};var i=setTimeout(()=>{delete this.pendingQueries[r],t(null)},15e3);e.qid=r,this.worker.postMessage(e)})}getToolForFilename(e){return this.remoteTool?"remote:"+this.remoteTool:this.platform.getToolForFilename(e)}preloadTool(e){e&&!this.tools_preloaded[e]&&(this.worker.postMessage({preload:e,platform:this.platform_id}),this.tools_preloaded[e]=!0)}loadFileDependencies(e){return x1(this.fileProvider,this.mainPath,e,this.platform_id,t=>this.getToolForFilename(t))}okToSend(){return this.pendingWorkerMessages++==0&&this.mainPath!=null}updateFileInStore(e,t){this.filesystem.setFileData(e,t)}buildWorkerMessage(e){var{msg:t,filename2path:r,preloads:i}=P1({mainPath:this.mainPath,mainData:this.getFile(this.mainPath),platformId:this.platform_id,getToolForFilename:o=>this.getToolForFilename(o),symbols:this.buildSymbols,buildArgs:this.buildArgs,dataItems:this.dataItems},e);Object.assign(this.filename2path,r);for(var s of i)this.preloadTool(s);return t}async loadFiles(e){var t=[],r=(o,a)=>{t.push({path:o,filename:this.stripLocalPath(o),link:!0,data:a})};for(var i of e)if(i in this.filedata){var s=this.filedata[i];s&&r(i,s)}else{var s=await this.filesystem.getFileData(i);s?(this.filedata[i]=s,r(i,s)):this.filedata[i]=null}return t}getFile(e){return this.filedata[e]}iterateFiles(e){for(var t in this.filedata)e(t,this.getFile(t))}sendBuild(){if(!this.mainPath)throw Error("need to call setMainFile first");var e=this.getFile(this.mainPath);if(e instanceof Uint8Array){this.isCompiling=!0,this.receiveWorkerMessage({output:e,errors:[],listings:null,symbolmap:null,params:{}});return}var t=typeof e=="string"?e:"";return this.loadFileDependencies(t).then(r=>{r||(r=[]);var i=this.buildWorkerMessage(r);this.worker.postMessage(i),this.isCompiling=!0})}updateFile(e,t){this.filedata[e]!=t&&(this.updateFileInStore(e,t),this.filedata[e]=t,this.okToSend()&&(this.callbackBuildStatus&&this.callbackBuildStatus(!0),this.sendBuild()))}setMainFile(e){this.mainPath=e,this.callbackBuildStatus&&this.callbackBuildStatus(!0),this.sendBuild()}processBuildListings(e){e.listings&&(this.listings=e.listings,Eg(this.listings))}processBuildResult(e){this.processBuildListings(e),this.processBuildSegments(e)}processBuildSegments(e){var t=this.platform.getMemoryMap&&this.platform.getMemoryMap().main;this.segments=$1(t,e.segments)}getListings(){return this.listings}getListingForFile(e){return Rg(this.getListings(),e,this.mainPath)}stripLocalPath(e){return Ks(e,this.mainPath)}setBuildOverrides(e,t){this.buildSymbols=e,this.buildArgs=t,this.okToSend()&&this.sendBuild()}updateDataItems(e){this.dataItems=e,this.okToSend()&&this.sendBuild()}};function bh(n){var e=Q1.default.createInstance({name:"__"+n,version:2});return e}var uL=`$NAME
=====
[Open this project in 8bitworkshop](https://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE).
`;function Js(){for(var n={},e=0;e<localStorage.length;e++){var t=localStorage.key(e);if(t.startsWith("__repo__")){var r=JSON.parse(localStorage.getItem(t)),i=t.substring(8);n[i]=r}}return n}function Ql(n){var e=n.split("/",8);return e.length<5||e[0]!="https:"||e[2]!="github.com"||e[5]&&e[5]!="tree"?null:{user:e[3],repo:e[4],repopath:e[3]+"/"+e[4],branch:e[6],subtreepath:e[7]}}var yh=class{constructor(e,t,r,i){this.githubCons=e,this.githubToken=t,this.store=r,this.project=i,this.recreateGithub()}recreateGithub(){this.github=new this.githubCons({token:this.githubToken})}login(){if(this.githubToken&&this.githubToken.length)return new Promise((t,r)=>{t()});var e=new firebase.auth.GithubAuthProvider;return e.addScope("repo"),firebase.auth().signInWithPopup(e).then(t=>{this.githubToken=t.credential.accessToken;var r=t.user;this.recreateGithub(),document.cookie="__github_key="+this.githubToken+";path=/;max-age=31536000",console.log("Stored GitHub OAUTH key")})}logout(){return this.githubToken&&this.githubToken.length?firebase.auth().signOut().then(()=>{document.cookie="__github_key=;path=/;max-age=0",this.githubToken=null,this.recreateGithub()}):new Promise((e,t)=>{e()})}isFileIgnored(e){return e=e.toUpperCase(),!!(e.startsWith("LICENSE")||e.startsWith("README")||e.startsWith("."))}async getGithubSession(e){var t=Ql(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=Js()[t.repopath],i=t.branch||r&&r.branch,s=this.github.repos(t.user,t.repo);try{i=(await s.fetch()).defaultBranch||"master"}catch(a){console.log("could not fetch default branch: "+a),i="main"}console.log("branch =",i);var o={url:e,user:t.user,reponame:t.repo,repopath:t.repopath,branch:i,subtreepath:t.subtreepath,prefix:"",repo:s,platform_id:this.project?this.project.platform_id:r?r.platform_id:null};return o}getGithubHEADTree(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.git.refs.heads(t.branch).fetch())).then(r=>(t.head=r,t.sha=r.object.sha,t.repo.git.trees(t.sha).fetch())).then(r=>{if(t.subtreepath){for(let i of r.tree)if(i.type=="tree"&&i.path==t.subtreepath&&i.sha)return t.repo.git.trees(i.sha).fetch();throw Error("Cannot find subtree '"+t.subtreepath+"' in tree "+r.sha)}return r}).then(r=>(t.tree=r,t))}bind(e,t){var r="__repo__"+e.repopath;if(t){var i={url:e.url,branch:e.branch,platform_id:e.platform_id,mainPath:e.mainPath,sha:e.sha};console.log("storing",i),localStorage.setItem(r,JSON.stringify(i))}else localStorage.removeItem(r)}import(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.contents("README.md").read())).catch(r=>(console.log(r),console.log("no README.md found"),t.repo.fetch().then(i=>""))).then(r=>{var i;if(i=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(r),i&&i[1]&&(console.log("main path: '"+i[1]+"'"),t.mainPath=i[1]),i=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(r),i){if(console.log("platform id: '"+i[1]+"'"),t.platform_id&&!t.platform_id.startsWith(i[1]))throw Error("Platform mismatch: Repository is '"+i[1]+"', you have '"+t.platform_id+"' selected.");t.platform_id=i[1]}return this.bind(t,!0),t})}pull(e,t){var r;return this.getGithubHEADTree(e).then(i=>{r=i;let s=[];return r.paths=[],r.tree.tree.forEach(o=>{if(console.log(o.path,o.type,o.size),r.paths.push(o.path),o.type=="blob"&&!this.isFileIgnored(o.path)){var a=r.repo.git.blobs(o.sha).fetch().then(l=>{var c=r.prefix+o.path,d=o.size,h=l.encoding,u=l.content;if(l.encoding=="base64"){var f=yc(atob(u)),m=vc(o.path,f);u=m?f:Sc(f)}return l.size!=u.length&&(u=u.slice(0,l.size)),(t||this.store).setItem(c,u)});s.push(a)}else console.log("ignoring "+o.path)}),Promise.all(s)}).then(i=>r)}importAndPull(e){return this.import(e).then(t=>this.pull(e))}publish(e,t,r,i){var s,o=this.project.platform_id,a=this.project.stripLocalPath(this.project.mainPath);return this.github.user.repos.create({name:e,description:t,private:i,auto_init:!1,license_template:r}).then(l=>{s=l;var c=uL;c=c.replace(/\$NAME/g,encodeURIComponent(e)),c=c.replace(/\$PLATFORM/g,encodeURIComponent(o)),c=c.replace(/\$GITHUBURL/g,encodeURIComponent(s.htmlUrl)),c=c.replace(/\$MAINFILE/g,encodeURIComponent(a));var d={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(d)}).then(()=>this.getGithubSession(s.htmlUrl))}commit(e,t,r){var i;return t||(t="updated from 8bitworkshop.com"),this.getGithubHEADTree(e).then(s=>{if(i=s,i.subtreepath)throw Error("Sorry, right now you can only commit files to the root directory of a repository.");return Promise.all(r.map(o=>typeof o.data=="string"?i.repo.git.blobs.create({content:o.data,encoding:"utf-8"}):i.repo.git.blobs.create({content:btoa(Q0(o.data)),encoding:"base64"})))}).then(s=>i.repo.git.trees.create({tree:r.map((o,a)=>({path:o.path,mode:"100644",type:"blob",sha:s[a].sha})),base_tree:i.tree.sha})).then(s=>i.repo.git.commits.create({message:t,tree:s.sha,parents:[i.head.object.sha]})).then(s=>i.repo.commits(s.sha).fetch()).then(s=>(i.commit=s,i))}push(e){return e.head.update({sha:e.commit.sha}).then(t=>e)}deleteRepository(e){return this.getGithubSession(e).then(t=>t.repo.remove())}};var Sh=class{constructor(e){this.options=e,this.sampleRate=44100,this.soundData=[],this.tapData=[67,54,52,45,84,65,80,69,45,82,65,87,1,0,0,0,0,0,0,0]}getWAVHeader(){let e=new Uint8Array(44),t=new DataView(e.buffer);return t.setUint32(0,1380533830,!1),t.setUint32(4,44+this.soundData.length,!0),t.setUint32(8,1463899717,!1),t.setUint32(12,1718449184,!1),t.setUint32(16,16,!0),t.setUint16(20,1,!0),t.setUint16(22,1,!0),t.setUint32(24,this.sampleRate,!0),t.setUint32(28,this.sampleRate*2,!0),t.setUint16(32,1,!0),t.setUint16(34,8,!0),t.setUint32(36,1684108385,!1),t.setUint32(40,this.soundData.length,!0),e}addSilence(e){let t=Math.floor(this.sampleRate*e);for(let i=0;i<t;i++)this.soundData.push(0);let r=eo.CLOCK_RATE*e;this.tapData.push(0),this.tapData.push(r&255),this.tapData.push(r>>8&255),this.tapData.push(r>>16&255)}addCycle(e){this.tapData.push(e);let t=Math.floor(this.sampleRate*eo.TAP_LENGTH_IN_SECONDS*e);for(let r=0;r<t;r++){let i;this.options.sine_wave?i=-Math.sin(r/t*2*Math.PI):r<t/2?i=-1:i=1,this.options.invert_waveform&&(i=-i),this.soundData.push(Math.round(128+i*127))}}updateTAPHeader(){let e=this.tapData.length-20;this.tapData[16]=e&255,this.tapData[17]=e>>8&255,this.tapData[18]=e>>16&255,this.tapData[19]=e>>24&255}getTAPData(){return this.updateTAPHeader(),new Uint8Array(this.tapData)}getSoundData(){let e=this.getWAVHeader(),t=new Uint8Array(e.length+this.soundData.length);return t.set(e,0),t.set(new Uint8Array(this.soundData),e.length),t}},Ze=class Ze{constructor(e,t){this.options=t,this.checksum=0,this.data=new Uint8Array(0),this.filenameData=this.makeFilename(e),this.startAddress=0,this.endAddress=0,this.fileType=Ze.FILE_TYPE_NONE,this.waveFile=null}makeFilename(e){let t=[];e=e.toUpperCase();for(let i=0;i<Ze.FILENAME_BUFFER_SIZE;i++)if(e.length<=i)t.push(32);else{let s=e.charCodeAt(i);t.push(s)}return t}setContent(e){this.data=e.data,this.startAddress=e.startAddress,this.endAddress=e.startAddress+e.data.length,this.fileType=e.type}generateSound(e){this.waveFile=e,this.addHeader(!1),this.addHeader(!0),e.addSilence(.1),this.addFile()}addTapCycle(e){this.waveFile.addCycle(e)}addBit(e){e===0?(this.addTapCycle(Ze.SHORT_PULSE),this.addTapCycle(Ze.MEDIUM_PULSE)):(this.addTapCycle(Ze.MEDIUM_PULSE),this.addTapCycle(Ze.SHORT_PULSE))}addDataMarker(e){e?(this.addTapCycle(Ze.LONG_PULSE),this.addTapCycle(Ze.MEDIUM_PULSE)):(this.addTapCycle(Ze.LONG_PULSE),this.addTapCycle(Ze.SHORT_PULSE))}resetChecksum(){this.checksum=0}addByteFrame(e,t){let r=1;for(let i=0;i<8;i++){let s=(e&1<<i)!==0?1:0;this.addBit(s),r^=s}this.addBit(r),this.addDataMarker(t),this.checksum^=e}addLeader(e){let t;e===Ze.LEADER_TYPE_HEADER?t=27136:e===Ze.LEADER_TYPE_CONTENT?t=6656:t=79;for(let r=0;r<t;r++)this.addTapCycle(Ze.SHORT_PULSE)}addSyncChain(e){let t;e?t=9:t=137;let r=9;for(;r>0;)this.addByteFrame(t,!0),t-=1,r-=1}addData(){for(let e=0;e<this.data.length;e++)this.addByteFrame(this.data[e],!0)}addFilename(){for(let e=0;e<this.filenameData.length;e++)this.addByteFrame(this.filenameData[e],!0)}addHeader(e){e?this.addLeader(Ze.LEADER_TYPE_REPEATED):this.addLeader(Ze.LEADER_TYPE_HEADER),this.addDataMarker(!0),this.addSyncChain(e),this.resetChecksum(),this.addByteFrame(this.fileType,!0),this.addByteFrame(this.startAddress&255,!0),this.addByteFrame((this.startAddress&65280)>>8,!0),this.addByteFrame(this.endAddress&255,!0),this.addByteFrame((this.endAddress&65280)>>8,!0),this.addFilename();for(let t=0;t<Ze.NUMBER_OF_PADDING_BYTES;t++)this.addByteFrame(Ze.PADDING_CHARACTER,!0);this.addByteFrame(this.checksum,!1)}addFile(){let e=!1;for(let t=0;t<2;t++)e?this.addLeader(Ze.LEADER_TYPE_REPEATED):this.addLeader(Ze.LEADER_TYPE_CONTENT),this.addDataMarker(!0),this.addSyncChain(e),this.resetChecksum(),this.addData(),this.addByteFrame(this.checksum,!1),e=!0;this.addLeader(1)}};Ze.CLOCK_RATE=985248,Ze.TAP_LENGTH_IN_SECONDS=8/Ze.CLOCK_RATE,Ze.FILENAME_BUFFER_SIZE=16,Ze.FILE_TYPE_NONE=0,Ze.FILE_TYPE_RELOCATABLE=1,Ze.FILE_TYPE_SEQUENTIAL=2,Ze.FILE_TYPE_NON_RELOCATABLE=3,Ze.LEADER_TYPE_HEADER=0,Ze.LEADER_TYPE_CONTENT=1,Ze.LEADER_TYPE_REPEATED=2,Ze.NUMBER_OF_PADDING_BYTES=171,Ze.PADDING_CHARACTER=32,Ze.SHORT_PULSE=48,Ze.MEDIUM_PULSE=66,Ze.LONG_PULSE=86;var eo=Ze;var si=Of(IA());function T1(n){return wn()==null?(Re("Please fix errors before sharing."),!0):wn()instanceof Uint8Array?(fL(),hr("lib/liblzg.js").then(()=>{var e=T0(window.Module,Array.from(wn()));window.Module=null;var t=_0(e),r=$.param({p:Oe}),i=pL(r,"player.html","r="+t),s='<iframe width=640 height=600 src="'+i+'">';$("#embedLinkTextarea").text(i),$("#embedIframeTextarea").text(s),$("#embedLinkModal").modal("show"),$("#embedAdviceWarnAll").hide(),$("#embedAdviceWarnIE").hide(),i.length>=65535&&$("#embedAdviceWarnAll").show()}),!0):(Re("Can't share a Verilog executable yet. (It's not actually a ROM...)"),!0)}function fL(){console.log("clipboard"),import("./clipboard-TDJAR2CV.js").then(n=>{let e=n.default;new e(".btn")})}function pL(n,e,t){console.log(n);var r=window.location,i=r.pathname.replace("index.html",""),s=r.host=="8bitworkshop.com"?"https:":r.protocol,o=s+"//"+r.host+i+e+"?"+n;return t&&(o+="#"+t),o}function mL(n){var t;var e=(t=Tl())==null?void 0:t.code_start;hr("lib/c2t.js").then(()=>{var r="",i=function(u){r+=u+`
`},s=window.c2t({noInitialRun:!0,print:i,printErr:i}),o=s.FS,a=_t()+".bin",l=_t()+".wav";o.writeFile(a,wn(),{encoding:"binary"});var c=["-2bc",a+","+e.toString(16),l];s.callMain(c);var d=o.readFile(l,{encoding:"binary"});if(d){var h=new Blob([d],{type:"audio/wav"});(0,si.saveAs)(h,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",an(r)}})}function gL(n){hr("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=Zt(_t());let i=r+".bin",s=r+".wav";window.makewav({noInitialRun:!1,print:t,printErr:t,arguments:["-ts","-f0","-v10",i],preRun:a=>{a.FS.writeFile(i,wn(),{encoding:"binary"})}}).ready.then(a=>{let l=[i];a.run(l),console.log(e);let d=a.FS.readFile(s,{encoding:"binary"});if(d){let h=new Blob([d],{type:"audio/wav"});(0,si.saveAs)(h,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,an(e)}})})}function OL(n){var e=Zt(_t());let t=e+".tap",r=new eo(e),i=new Sh({sine_wave:!0}),s=wn(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:eo.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(i);let a=i.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,si.saveAs)(l,t)}}function Lg(){switch(Nt(Oe)){case"vcs":return gL;case"apple2":return mL;case"c64":return OL}}function A1(n){if(wn()==null)return Re("Please fix errors before exporting."),!0;var e=Lg();if(e===void 0)return Re("Cassette export is not supported on this platform."),!0;e(n)}function C1(n){if(wn()==null)return Re("Please finish compiling with no errors before downloading ROM."),!0;var e=Zt(_t());if(P.getDownloadFile){var t=P.getDownloadFile(),e=Zt(_t());(0,si.saveAs)(t.blob,e+t.extension)}else if(wn()instanceof Uint8Array){var r=new Blob([wn()],{type:"application/octet-stream"}),i=P.getROMExtension&&P.getROMExtension(wn())||"-"+Nt(Oe)+".bin";(0,si.saveAs)(r,e+i)}else Re(`The "${Oe}" platform doesn't have downloadable ROMs.`)}function _1(n){var e=N.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,si.saveAs)(t,Z1(),{autoBom:!1})}async function E1(){let n=(await import("./jszip.min-QUGS7P6D.js")).default;return new n}async function R1(n){var e=await E1();Ci().iterateFiles((t,r)=>{r&&e.file(yt(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,si.saveAs)(t,_t()+"-"+Nt(Oe)+".zip")})}function M1(n){let e=P.getDebugSymbolFile&&P.getDebugSymbolFile();if(!e){Re("This project does not have debug information.");return}var t=Zt(_t());(0,si.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function L1(n){var e=await E1(),t=await is().keys();Je(!0);try{var r=0;await Promise.all(t.map(s=>is().getItem(s).then(o=>{Dr(r++/(t.length+1)),o&&e.file(s,o)})));var i=await e.generateAsync({type:"blob"});(0,si.saveAs)(i,Nt(Oe)+"-all.zip")}finally{Je(!1)}}var Mg=!1;function D1(){Mg||hr("lib/gif.js").then(()=>{var n=$("#emulator").find("canvas")[0];if(!n){Re("Could not find canvas element to record video!");return}var e=0;n.style&&n.style.transform&&(n.style.transform.indexOf("rotate(-90deg)")>=0?e=-1:n.style.transform.indexOf("rotate(90deg)")>=0&&(e=1));var t=new GIF({workerScript:"lib/gif.worker.js",workers:4,quality:10,rotate:e}),r=$("#videoPreviewImage");t.on("progress",l=>{Dr(l)}),t.on("finished",l=>{r.attr("src",URL.createObjectURL(l)),Je(!1),P.resume(),$("#videoPreviewModal").modal("show")});var i=20,s=300,o=0;console.log("Recording video",n),$("#emulator").css("backgroundColor","#cc3333");var a=()=>{o++>s?(console.log("Rendering video"),$("#emulator").css("backgroundColor","inherit"),Je(!0),P.pause(),t.render(),Mg=!1):(t.addFrame(n,{delay:i,copy:!0}),setTimeout(a,i),Mg=!0)};a()})}var Dg;async function to(){if(!Dg){await hr("lib/octokat.js"),await hr("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await hr("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await hr("https://8bitworkshop.com/config.js");var n=E0("__github_key");Dg=new yh(Octokat,n,is(),Ci()),console.log("loaded github service")}return Dg}function Al(){var n=(Et||"").split("/");return n.length!=2?(Re("You are not in a GitHub repository. Choose one from the pulldown, or Import or Publish one."),null):"https://github.com/"+n[0]+"/"+n[1]}async function Cl(n,e){var t,r=Ql(n);if(!r){Re("Could not parse GitHub URL.");return}var i=Js()[r.repopath];if(!(i&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){Je(!0);var s=bh(r.repopath);Dr(.25);var o=await to();return o.import(n).then(a=>(t=a,Dr(.75),o.pull(n,s))).then(a=>{Je(!1),no(e,{repo:r.repopath})}).catch(a=>{Je(!1),console.log(a),Re("Could not import "+n+". "+a)})}}async function I1(n){var e=await to();e.login().then(()=>{an("You are signed in to GitHub.")}).catch(t=>{Re("Could not sign in."+t)})}async function X1(n){var e=await to();e.logout().then(()=>{an("You are logged out of GitHub.")})}function z1(n){var e=$("#importGithubModal"),t=$("#importGithubButton");e.modal("show"),e.off("shown.bs.modal").on("shown.bs.modal",()=>$("#importGithubURL").trigger("focus")),$("#importGithubURL").off("keydown").on("keydown",r=>{r.key==="Enter"&&(r.preventDefault(),t.trigger("click"))}),t.off("click").on("click",()=>{var r=$("#importGithubURL").val()+"";e.modal("hide"),Cl(r,!1)})}function W1(n){if(!(Et&&!confirm("This project ("+Ci().mainPath+") is already bound to a GitHub repository. Do you want to re-publish to a new repository? (You can instead choose 'Push Changes' to update files in the existing repository.)"))){var e=$("#publishGithubModal"),t=$("#publishGithubButton");$("#githubRepoName").val(Zt(yt(Ci().mainPath))),e.modal("show"),t.off("click").on("click",async()=>{var r=$("#githubRepoName").val()+"",i=$("#githubRepoDesc").val()+"",s=$("#githubRepoPrivate").val()=="private",o=$("#githubRepoLicense").val()+"",a;if(!r){Re("You did not enter a project name.");return}e.modal("hide"),Je(!0);var l=await to();l.login().then(()=>(Dr(.25),l.publish(r,i,o,s))).then(c=>(a=c,Dr(.5),V1("initial import from 8bitworkshop.com",a.url))).then(c=>{if(!c){Je(!1);return}Cl(a.url,!1)}).catch(c=>{Je(!1),console.log(c),Re("Could not publish GitHub repository: "+c)})})}}function N1(n){var e=Al();if(e){var t=$("#pushGithubModal"),r=$("#pushGithubButton");t.modal("show"),r.off("click").on("click",()=>{var i=$("#githubCommitMsg").val()+"";t.modal("hide"),V1(i)})}}function B1(n){var e=Al();e&&bootbox.confirm("Pull from repository and replace all local files? Any changes you've made will be overwritten.",async t=>{if(t){Je(!0);var r=await to();r.pull(e).then(i=>{Je(!1),N.updateAllOpenWindows(is())})}})}function bL(n){return new Promise((e,t)=>{var r=n.commit.files;if(console.log(r),r.length==0){Je(!1),an("No files changed.");return}var i="";for(var s of r)i+=Vi.sanitize(s.filename)+": "+s.status,(s.additions||s.deletions||s.changes)&&(i+=" ("+s.additions+" additions, "+s.deletions+" deletions, "+s.changes+" changes)"),i+="<br/>";bootbox.confirm(i,o=>{o?e(n):Je(!1)})})}async function V1(n,e){if(e=e||Al(),!!e){var t=[];for(var r in Ci().filedata){var i=Ci().stripLocalPath(r),s=Ci().filedata[r];i&&s&&t.push({path:i,data:s})}if(wn()instanceof Uint8Array){let a="bin/"+_t()+".rom";t.push({path:a,data:wn()})}Je(!0);var o=await to();return o.login().then(()=>(Dr(.5),o.commit(e,n,t))).then(a=>bL(a)).then(a=>o.push(a)).then(a=>(Je(!1),an("Pushed files to "+e),a)).catch(a=>{Je(!1),console.log(a),Re("Could not push GitHub repository: "+a)})}}function F1(){var n=Al();n&&bootbox.prompt("<p>Are you sure you want to delete this repository ("+Vi.sanitize(n)+") from browser storage?</p><p>All changes since last commit will be lost.</p><p>Type DELETE to proceed.<p>",e=>{e.trim().toUpperCase()=="DELETE"&&yL()})}async function yL(){var n=Al();Je(!0);let e=await to(),t=await e.getGithubSession(n);e.bind(t,!1),await is().keys().then(r=>Promise.all(r.map(i=>is().removeItem(i)))),Je(!1),no(!1,{repo:"/"})}var Y1={project:1.3,toolchain:1,docs:.7,debugger:.9},j1={func:1.2,macro:1.2,type:1.2,struct:1.2,enum:1.2,var:1.1,label:1.1,equate:1.1,proc:1.2,module:1.2,doc:.8,text:.3},SL=4,vL=1e3;function Zg(n){if(n){if(typeof n=="function")return n;if(typeof n.default=="function")return n.default;if(typeof n.MiniSearch=="function")return n.MiniSearch;if(typeof n.uFuzzy=="function")return n.uFuzzy}}var ia=class{constructor(e=[]){this.records=[];this.nameHaystack=[];this.msIds=new Set;this.records=e,this.nameHaystack=e.map(t=>t.name),this.applySourceBoosts=!0,this.ufOptions={intraIns:2,interIns:2},this.msOptions={idField:"id",fields:["name","brief","detail"],storeFields:["id","name","kind","brief","detail","source","file","line","url"],tokenize:t=>t.split(/[^A-Za-z0-9_]+/).filter(r=>r.length>0)}}async init(){let e=await import("./uFuzzy-RGQ53GBM.js"),t=Zg(e);t&&(this.uf=new t(this.ufOptions));let r=await import("./es-GLVP7QTT.js"),i=Zg(r);if(i){this.ms=new i(this.msOptions);for(let s of this.records)this.addToMiniSearch(s)}}addToMiniSearch(e){if(!(!this.ms||typeof this.ms.add!="function")&&!this.msIds.has(e.id))try{this.ms.add(e),this.msIds.add(e.id)}catch(t){console.debug("MiniSearch add error:",t)}}pushRecords(e){this.records.push(...e),this.nameHaystack.push(...e.map(t=>t.name));for(let t of e)this.addToMiniSearch(t)}clear(){this.records=[],this.nameHaystack=[],this.msIds.clear(),this.ms&&typeof this.ms.removeAll=="function"&&this.ms.removeAll()}async setMiniSearch(e){let t=await import("./es-GLVP7QTT.js"),r=Zg(t);r&&(this.ms=new r(this.msOptions),this.ms.loadJS(e))}query(e,t){var o,a;if(this.records.length===0||!e)return[];let r=[];if(this.uf&&typeof this.uf.search=="function")try{let l=this.uf.search(this.nameHaystack,e),c=l==null?void 0:l[1],d=l==null?void 0:l[2],h=c==null?void 0:c.idx;if(h&&d)for(let u=0;u<d.length;u++){let f=d[u],m=h[f],O=this.records[m];if(!O)continue;let x=this.baseScore(e,c,f)*Y1[O.source]*((o=j1[O.kind])!=null?o:1);r.push({record:O,score:x,ranges:(a=c.ranges)==null?void 0:a[f]})}}catch(l){console.debug("uFuzzy search error:",l)}if(this.ms&&typeof this.ms.search=="function"&&(e.length>=SL||e.includes(" ")))try{let l=this.ms.search(e,{boost:{name:3,brief:1.5,detail:1},combineWith:"AND"});for(let c of l){let d=c;d&&!r.some(h=>h.record.id===d.id)&&r.push({record:d,score:(c.score||0)*Y1[d.source]*j1[c.kind]*1e3})}}catch(l){console.debug("MiniSearch error:",l)}r.sort((l,c)=>c.score-l.score);let i=new Set;return r.filter(l=>i.has(l.record.id)?!1:(i.add(l.record.id),!0)).slice(0,t)}baseScore(e,t,r){var m,O,S,x,D,M,Z,k,w,R,X,W;let i=(O=(m=t.chars)==null?void 0:m[r])!=null?O:0,s=(x=(S=t.interIns)==null?void 0:S[r])!=null?x:0,o=(M=(D=t.intraIns)==null?void 0:D[r])!=null?M:0,a=(k=(Z=t.start)==null?void 0:Z[r])!=null?k:0,l=(R=(w=t.interLft2)==null?void 0:w[r])!=null?R:0,c=(W=(X=t.interRgt2)==null?void 0:X[r])!=null?W:0,d=i>=e.length,h=o===0&&s===0,u=a===0,f=vL;return d&&h&&u?f=1e3:h&&u?f=980:d?f=950:f=900,f-=o*20,f-=s*10,f-=a*5,f-=c*3,f}};function Ig(n,e,t,r){let i=[],s=n.split(`
`);for(let o=0;o<s.length;o++){let a=s[o],l=o+1,c=a.match(/(?:function|func|def|proc)\s+(\w+)/i);c&&i.push({id:`${e}:${l}:${c[1]}`,name:c[1],kind:"func",source:r,file:e,line:l});let d=a.match(/(?:var|let|const|global)\s+(\w+)/i);d&&i.push({id:`${e}:${l}:${d[1]}`,name:d[1],kind:"var",source:r,file:e,line:l});let h=a.match(/(?:struct|class|interface|type)\s+(\w+)/i);h&&i.push({id:`${e}:${l}:${h[1]}`,name:h[1],kind:"type",source:r,file:e,line:l});let u=a.match(/^\s*(\w+)\s*:/);u&&!a.trim().startsWith("//")&&i.push({id:`${e}:${l}:${u[1]}`,name:u[1],kind:"label",source:r,file:e,line:l});let f=a.match(/#define\s+(\w+)/i);f&&i.push({id:`${e}:${l}:${f[1]}`,name:f[1],kind:"macro",source:r,file:e,line:l});let m=a.match(/^\s*(\w+)\s*(?:=|equ)\s+/i);m&&i.push({id:`${e}:${l}:${m[1]}`,name:m[1],kind:"equate",source:r,file:e,line:l})}return i}var U1=()=>null;function q1(n){U1=n}function sa(){return U1()}var vh=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new ia([])}async ready(){await this.index.init(),this.rebuilt||(this.rebuilt=!0,await this.rebuild())}query(e,t){let r=this.index.query(e,t),i=this.fulltextQuery(e,t),s=r.concat(i);return s.sort((o,a)=>a.score-o.score),s.slice(0,t)}fulltextQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),i=[],s=Math.max(t,10),o=sa();return o?(o.iterateFiles((a,l)=>{if(typeof l!="string")return;let c=l.split(`
`),d=0;for(let h=0;h<c.length;h++){let u=c[h],m=u.toLowerCase().indexOf(r);if(m>=0){let O=u.trim();if(!O)continue;if(i.push({record:{id:`text:${a}:${h+1}`,name:O.length>80?O.slice(0,80)+"\u2026":O,kind:"text",source:"project",file:a,line:h+1},score:200+Math.max(0,100-m*2),ranges:[m,m+e.length]}),++d>=s)break}}}),i):[]}async onFileChanged(e,t){let r=this.extractSymbolsFromFile(e,t,"project");this.index.pushRecords(r)}extractSymbolsFromFile(e,t,r){if(typeof t!="string")return[];let i=this.detectEditorStyle(e);return Ig(t,e,i,r)}detectEditorStyle(e){var r;switch((r=e.split(".").pop())==null?void 0:r.toLowerCase()){case"c":case"h":return"text/x-csrc";case"asm":case"a65":case"inc":return"6502";case"v":return"verilog";case"wiz":return"text/x-wiz";case"bas":case"basic":return"basic";case"fb":case"fastbasic":return"fastbasic";case"bac":case"bataribasic":return"bataribasic";case"i":return"inform6";case"d":return"dialog";default:return"text/x-csrc"}}async rebuild(){this.index.clear(),await this.index.init();let e=sa();if(!e)return;let t=[];e.iterateFiles((r,i)=>{if(typeof i!="string")return;let s=this.detectEditorStyle(r),o=Ig(i,r,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var wL=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),xL=20,wh=class{constructor(){this.id="toolchain";this.kind="toolchain";this.fsName=null;this.files=[];this.loaded=new Map;this.readyPromise=null;this.batchSize=xL}async ready(){return this.readyPromise||(this.readyPromise=this.load()),this.readyPromise}async load(){let e=sa();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let r=Ic(t,e.platform_id),i=Zc(t,e.platform_id);if(!r||!i.length)return;this.fsName=r;let s=new Set;for(let o of i){let a=await this.listFiles(o);for(let l of a)this.isSearchable(l)&&!s.has(l)&&(s.add(l),this.files.push(l))}this.files.sort();for(let o=0;o<this.files.length;o+=this.batchSize){let a=this.files.slice(o,o+this.batchSize),l=await Promise.all(a.map(async c=>{let d=await this.readFile(c);return[c,d]}));for(let[c,d]of l)d!=null&&this.loaded.set(c,d)}}isValid(){return this.fsName!=null&&this.files.length>0}async listFiles(e){let t=sa();if(!t||!this.fsName||!t.queryWorker)return[];try{let r={preload_fs:this.fsName,listshared:e,updates:[],buildsteps:[]},i=await t.queryWorker(r),s=i&&i.output;return Array.isArray(s)?s:[]}catch(r){return console.debug("Toolchain list error:",r),[]}}async readFile(e){let t=sa();if(!t||!this.fsName||!t.queryWorker)return null;try{let r={preload_fs:this.fsName,readshared:e,updates:[],buildsteps:[]},i=await t.queryWorker(r),s=i&&i.output;return s instanceof Uint8Array&&s.length>0?new TextDecoder().decode(s):null}catch(r){return console.debug("Toolchain read error:",r),null}}isSearchable(e){let t=e.split("/").pop()||e,r=t.lastIndexOf(".");return r<0?!0:wL.has(t.substring(r+1).toLowerCase())}async query(e,t){return await this.ready(),!this.isValid()||e.length<2?[]:this.textQuery(e,t)}textQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),i=[],s=Math.max(t,5);for(let[o,a]of this.loaded){let l=a.split(`
`),c=0;for(let d=0;d<l.length;d++){let h=l[d],f=h.toLowerCase().indexOf(r);if(f>=0){let m=h.trim();if(!m)continue;if(i.push({record:{id:`toolchain:${o}:${d+1}`,name:m.length>80?m.slice(0,80)+"\u2026":m,kind:"text",source:"toolchain",file:o,line:d+1},score:200+Math.max(0,100-f*2),ranges:[f,f+e.length]}),++c>=s)break}}}return i.sort((o,a)=>a.score-o.score),i.slice(0,t)}invalidate(){this.fsName=null,this.files=[],this.loaded.clear(),this.readyPromise=null}};var G1=()=>[];function H1(n){G1=n}var PL=/<h([1-3])\b[^>]*>([\s\S]*?)<\/h\1>/gi;function kL(n){return n.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#(?:0*39|x27);/gi,"'").replace(/&nbsp;/g," ").replace(/&hellip;/g,"\u2026").replace(/&mdash;/g,"\u2014").replace(/&ndash;/g,"\u2013").replace(/&rsquo;|&lsquo;/g,"'").replace(/&rdquo;|&ldquo;/g,'"').replace(/&raquo;/g,"\xBB").replace(/&laquo;/g,"\xAB").replace(/&amp;/g,"&")}function _l(n){return kL(n.replace(/<[^>]+>/g," ")).replace(/\s+/g," ").trim()}function Xg(n,e=180){let t=n.trim();if(!t)return;let i=t.slice(0,e).match(/^([\s\S]*?[.!?])(?:\s|$)/);return i?i[1]:t.length<=e?t:t.slice(0,e-1)+"\u2026"}function $L(n){let e=[],t="#help/"+n.id,r=n.title||n.id,i=n.html||"",s=[],o=new RegExp(PL.source,"gi"),a;for(;a=o.exec(i);)s.push({name:_l(a[2]),start:a.index,end:o.lastIndex});let l=(u,f,m)=>{if(!f)return;let O=Xg(m),S=O&&m.startsWith(O)?m.slice(O.length).trim():m;e.push({id:`${n.id}:${u}`,name:f,kind:"doc",brief:O,detail:S||void 0,source:"docs",file:r,url:t})},c=s.length?s[0].start:i.length,d=_l(i.slice(0,c)),h=s.length&&s[0].start===0?s[0].name||n.title:n.title||n.id;l(0,h,d);for(let u=0;u<s.length;u++){if(u===0&&s[0].start===0)continue;let f=u+1<s.length?s[u+1].start:i.length;l(u+1,s[u].name,_l(i.slice(s[u].end,f)))}return e}var xh=class{constructor(){this.id="docs";this.kind="docs";this.index=null;this.readyPromise=null}async ready(){return this.readyPromise?this.readyPromise:(this.readyPromise=this.load(),this.readyPromise)}async load(){let e=G1()||[];if(e.length===0)return;let t=[];for(let i of e)t.push(...$L(i));if(t.length===0)return;let r=new ia(t);await r.init(),this.index=r}async query(e,t){return await this.ready(),this.index?this.index.query(e,t):[]}};var QL=50,zg=class n{constructor(){this.sources=new Map;this.projectSource=new vh,this.toolchainSource=new wh,this.docsSource=new xh,this.sources.set("project",this.projectSource),this.sources.set("toolchain",this.toolchainSource),this.sources.set("docs",this.docsSource)}static getInstance(){return n.instance||(n.instance=new n),n.instance}parseQuery(e){return e.startsWith("#")?{needle:e.slice(1).trim(),filter:"symbols"}:e.startsWith(">")?{needle:e.slice(1).trim(),filter:"files"}:e.startsWith("?")?{needle:e.slice(1).trim(),filter:"docs"}:{needle:e,filter:"all"}}async query(e,t=QL){let{needle:r,filter:i}=this.parseQuery(e);if(!r)return[];let s=[],o=[];i==="docs"?o.push(this.docsSource):i==="files"?o.push(this.projectSource):i==="symbols"?(o.push(this.projectSource),o.push(this.toolchainSource)):(o.push(this.projectSource),o.push(this.toolchainSource),o.push(this.docsSource));for(let d of o)try{await d.ready();let h=await d.query(r,t-s.length);s.push(...h)}catch(h){console.debug("Search source error:",h)}s.sort((d,h)=>h.score-d.score);let a={project:1.3,toolchain:1,docs:.7};for(let d of s){let h=a[d.record.source]||1;d.score*=h}s.sort((d,h)=>h.score-d.score);let l=new Set;return s.filter(d=>l.has(d.record.id)?!1:(l.add(d.record.id),!0)).slice(0,t)}},K1=zg.getInstance();var J1=typeof String.prototype.normalize=="function"?n=>n.normalize("NFKD"):n=>n,os=class{constructor(e,t,r=0,i=e.length,s,o){this.test=o,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,i),this.bufferStart=r,this.normalize=s?a=>s(J1(a)):J1,this.query=this.normalize(t)}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 Ir(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=Hc(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=Yi(e);let i=this.normalize(t);if(i.length)for(let s=0,o=r,a=!0;;s++){let l=i.charCodeAt(s),c=this.match(l,o,a,this.bufferPos+this.bufferStart,s==i.length-1);if(c)return this.value=c,this;if(s==i.length-1)break;a&&s<t.length&&t.charCodeAt(s)==l?o++:a=!1}}}match(e,t,r,i,s){let o=null;for(let a=0;a<this.matches.length;){let l=this.matches[a],c=!1;this.query.charCodeAt(l.index)==e&&(l.index==this.query.length-1?o={from:l.from,to:i,precise:s&&l.precise}:(l.index++,c=!0)),c?a++:this.matches.splice(a,1)}return this.query.charCodeAt(0)==e&&(this.query.length==1?o={from:t,to:i,precise:r&&s}:this.matches.push({from:t,index:1,precise:r})),o&&this.test&&!this.test(o.from,o.to,this.buffer,this.bufferStart)&&(o=null),o}};typeof Symbol!="undefined"&&(os.prototype[Symbol.iterator]=function(){return this});var nP={from:-1,to:-1,match:/.*/.exec(""),precise:!0},jg="gm"+(/x/.unicode==null?"":"u"),$h=class{constructor(e,t,r,i=0,s=e.length){if(this.text=e,this.to=s,this.curLine="",this.done=!1,this.value=nP,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new Th(e,t,r,i,s);this.re=new RegExp(t,jg+(r!=null&&r.ignoreCase?"i":"")),this.test=r==null?void 0:r.test,this.iter=e.iter();let o=e.lineAt(i);this.curLineStart=o.from,this.matchPos=Ah(e,i),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),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 e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let r=this.curLineStart+t.index,i=r+t[0].length;if(this.matchPos=Ah(this.text,i+(r==i?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(r<i||r>this.value.to)&&(!this.test||this.test(r,i,t)))return this.value={from:r,to:i,precise:!0,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}},Wg=new WeakMap,Qh=class n{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,r){let i=Wg.get(e);if(!i||i.from>=r||i.to<=t){let a=new n(t,e.sliceString(t,r));return Wg.set(e,a),a}if(i.from==t&&i.to==r)return i;let{text:s,from:o}=i;return o>t&&(s=e.sliceString(t,o)+s,o=t),i.to<r&&(s+=e.sliceString(i.to,r)),Wg.set(e,new n(o,s)),new n(t,s.slice(t-o,r-o))}},Th=class{constructor(e,t,r,i,s){this.text=e,this.to=s,this.done=!1,this.value=nP,this.matchPos=Ah(e,i),this.re=new RegExp(t,jg+(r!=null&&r.ignoreCase?"i":"")),this.test=r==null?void 0:r.test,this.flat=Qh.get(e,i,this.chunkEnd(i+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let r=this.flat.from+t.index,i=r+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,i,t)))return this.value={from:r,to:i,precise:!0,match:t},this.matchPos=Ah(this.text,i+(r==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Qh.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}};typeof Symbol!="undefined"&&($h.prototype[Symbol.iterator]=Th.prototype[Symbol.iterator]=function(){return this});function TL(n){try{return new RegExp(n,jg),!0}catch(e){return!1}}function Ah(n,e){if(e>=n.length)return e;let t=n.lineAt(e),r;for(;e<t.to&&(r=t.text.charCodeAt(e-t.from))>=56320&&r<57344;)e++;return e}var AL=n=>{let{state:e}=n,t=String(e.doc.lineAt(n.state.selection.main.head).number),{close:r,result:i}=iw(n,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:t},focus:!0,submitLabel:e.phrase("go")});return i.then(s=>{let o=s&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(s.elements.line.value);if(!o){n.dispatch({effects:r});return}let a=e.doc.lineAt(e.selection.main.head),[,l,c,d,h]=o,u=d?+d.slice(1):0,f=c?+c:a.number;if(c&&h){let S=f/100;l&&(S=S*(l=="-"?-1:1)+a.number/e.doc.lines),f=Math.round(e.doc.lines*S)}else c&&l&&(f=f*(l=="-"?-1:1)+a.number);let m=e.doc.line(Math.max(1,Math.min(e.doc.lines,f))),O=z.cursor(m.from+Math.max(0,Math.min(u,m.length)));n.dispatch({effects:[r,F.scrollIntoView(O.from,{y:"center"})],selection:O})}),!0},CL={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},rP=oe.define({combine(n){return Yn(n,CL,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})}});function Lh(n){let e=[LL,ML];return n&&e.push(rP.of(n)),e}var _L=J.mark({class:"cm-selectionMatch"}),EL=J.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function eP(n,e,t,r){return(t==0||n(e.sliceDoc(t-1,t))!=et.Word)&&(r==e.doc.length||n(e.sliceDoc(r,r+1))!=et.Word)}function RL(n,e,t,r){return n(e.sliceDoc(t,t+1))==et.Word&&n(e.sliceDoc(r-1,r))==et.Word}var ML=it.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.selectionSet||n.docChanged||n.viewportChanged)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=n.state.facet(rP),{state:t}=n,r=t.selection;if(r.ranges.length>1)return J.none;let i=r.main,s,o=null;if(i.empty){if(!e.highlightWordAroundCursor)return J.none;let l=t.wordAt(i.head);if(!l)return J.none;o=t.charCategorizer(i.head),s=t.sliceDoc(l.from,l.to)}else{let l=i.to-i.from;if(l<e.minSelectionLength||l>200)return J.none;if(e.wholeWords){if(s=t.sliceDoc(i.from,i.to),o=t.charCategorizer(i.head),!(eP(o,t,i.from,i.to)&&RL(o,t,i.from,i.to)))return J.none}else if(s=t.sliceDoc(i.from,i.to),!s)return J.none}let a=[];for(let l of n.visibleRanges){let c=new os(t.doc,s,l.from,l.to);for(;!c.next().done;){let{from:d,to:h}=c.value;if((!o||eP(o,t,d,h))&&(i.empty&&d<=i.from&&h>=i.to?a.push(EL.range(d,h)):(d>=i.to||h<=i.from)&&a.push(_L.range(d,h)),a.length>e.maxMatches))return J.none}}return J.set(a)}},{decorations:n=>n.decorations}),LL=F.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),DL=({state:n,dispatch:e})=>{let{selection:t}=n,r=z.create(t.ranges.map(i=>n.wordAt(i.head)||z.cursor(i.head)),t.mainIndex);return r.eq(t)?!1:(e(n.update({selection:r})),!0)};function ZL(n,e){let{main:t,ranges:r}=n.selection,i=n.wordAt(t.head),s=i&&i.from==t.from&&i.to==t.to;for(let o=!1,a=new os(n.doc,e,r[r.length-1].to);;)if(a.next(),a.done){if(o)return null;a=new os(n.doc,e,0,Math.max(0,r[r.length-1].from-1)),o=!0}else{if(o&&r.some(l=>l.from==a.value.from))continue;if(s){let l=n.wordAt(a.value.from);if(!l||l.from!=a.value.from||l.to!=a.value.to)continue}return a.value}}var Ug=({state:n,dispatch:e})=>{let{ranges:t}=n.selection;if(t.some(s=>s.from===s.to))return DL({state:n,dispatch:e});let r=n.sliceDoc(t[0].from,t[0].to);if(n.selection.ranges.some(s=>n.sliceDoc(s.from,s.to)!=r))return!1;let i=ZL(n,r);return i?(e(n.update({selection:n.selection.addRange(z.range(i.from,i.to),!1),effects:F.scrollIntoView(i.to)})),!0):!1},ro=oe.define({combine(n){return Yn(n,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new Fg(e),scrollToMatch:e=>F.scrollIntoView(e)})}});function qg(n){return n?[ro.of(n),Yg]:Yg}var Ch=class{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||TL(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(t,r)=>r=="n"?`
`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new Bg(this):new Ng(this)}getCursor(e,t=0,r){let i=e.doc?e:Me.create({doc:e});return r==null&&(r=i.doc.length),this.regexp?aa(this,i,t,r):oa(this,i,t,r)}},_h=class{constructor(e){this.spec=e}};function IL(n,e,t){return(r,i,s,o)=>{if(t&&!t(r,i,s,o))return!1;let a=r>=o&&i<=o+s.length?s.slice(r-o,i-o):e.doc.sliceString(r,i);return n(a,e,r,i)}}function oa(n,e,t,r){let i;return n.wholeWord&&(i=XL(e.doc,e.charCategorizer(e.selection.main.head))),n.test&&(i=IL(n.test,e,i)),new os(e.doc,n.unquoted,t,r,n.caseSensitive?void 0:s=>s.toLowerCase(),i)}function XL(n,e){return(t,r,i,s)=>((s>t||s+i.length<r)&&(s=Math.max(0,t-2),i=n.sliceString(s,Math.min(n.length,r+2))),(e(Eh(i,t-s))!=et.Word||e(Rh(i,t-s))!=et.Word)&&(e(Rh(i,r-s))!=et.Word||e(Eh(i,r-s))!=et.Word))}var Ng=class extends _h{constructor(e){super(e)}nextMatch(e,t,r){let i=oa(this.spec,e,r,e.doc.length).nextOverlapping();if(i.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);i=oa(this.spec,e,0,s).nextOverlapping()}return i.done||i.value.from==t&&i.value.to==r?null:i.value}prevMatchInRange(e,t,r){for(let i=r;;){let s=Math.max(t,i-1e4-this.spec.unquoted.length),o=oa(this.spec,e,s,i),a=null;for(;!o.nextOverlapping().done;)a=o.value;if(a)return a;if(s==t)return null;i-=1e4}}prevMatch(e,t,r){let i=this.prevMatchInRange(e,0,t);return i||(i=this.prevMatchInRange(e,Math.max(0,r-this.spec.unquoted.length),e.doc.length)),i&&(i.from!=t||i.to!=r)?i:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let r=oa(this.spec,e,0,e.doc.length),i=[];for(;!r.next().done;){if(i.length>=t)return null;i.push(r.value)}return i}highlight(e,t,r,i){let s=oa(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)i(s.value.from,s.value.to)}};function zL(n,e,t){return(r,i,s)=>(!t||t(r,i,s))&&n(s[0],e,r,i)}function aa(n,e,t,r){let i;return n.wholeWord&&(i=WL(e.charCategorizer(e.selection.main.head))),n.test&&(i=zL(n.test,e,i)),new $h(e.doc,n.search,{ignoreCase:!n.caseSensitive,test:i},t,r)}function Eh(n,e){return n.slice(Pt(n,e,!1),e)}function Rh(n,e){return n.slice(e,Pt(n,e))}function WL(n){return(e,t,r)=>!r[0].length||(n(Eh(r.input,r.index))!=et.Word||n(Rh(r.input,r.index))!=et.Word)&&(n(Rh(r.input,r.index+r[0].length))!=et.Word||n(Eh(r.input,r.index+r[0].length))!=et.Word)}var Bg=class extends _h{nextMatch(e,t,r){let i=aa(this.spec,e,r,e.doc.length).next();return i.done&&(i=aa(this.spec,e,0,t).next()),i.done?null:i.value}prevMatchInRange(e,t,r){for(let i=1;;i++){let s=Math.max(t,r-i*1e4),o=aa(this.spec,e,s,r),a=null;for(;!o.next().done;)a=o.value;if(a&&(s==t||a.from>s+10))return a;if(s==t)return null}}prevMatch(e,t,r){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let i=r.length;i>0;i--){let s=+r.slice(0,i);if(s>0&&s<e.match.length)return e.match[s]+r.slice(i)}return t})}matchAll(e,t){let r=aa(this.spec,e,0,e.doc.length),i=[];for(;!r.next().done;){if(i.length>=t)return null;i.push(r.value)}return i}highlight(e,t,r,i){let s=aa(this.spec,e,Math.max(0,t-250),Math.min(r+250,e.doc.length));for(;!s.next().done;)i(s.value.from,s.value.to)}},Rl=ye.define(),Gg=ye.define(),ss=Xe.define({create(n){return new El(Vg(n).create(),null)},update(n,e){for(let t of e.effects)t.is(Rl)?n=new El(t.value.create(),n.panel):t.is(Gg)&&(n=new El(n.query,t.value?Hg:null));return n},provide:n=>hl.from(n,e=>e.panel)});var El=class{constructor(e,t){this.query=e,this.panel=t}},NL=J.mark({class:"cm-searchMatch"}),BL=J.mark({class:"cm-searchMatch cm-searchMatch-selected"}),VL=it.fromClass(class{constructor(n){this.view=n,this.decorations=this.highlight(n.state.field(ss))}update(n){let e=n.state.field(ss);(e!=n.startState.field(ss)||n.docChanged||n.selectionSet||n.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:n,panel:e}){if(!e||!n.spec.valid)return J.none;let{view:t}=this,r=new Zr;for(let i=0,s=t.visibleRanges,o=s.length;i<o;i++){let{from:a,to:l}=s[i];for(;i<o-1&&l>s[i+1].from-500;)l=s[++i].to;n.highlight(t.state,a,l,(c,d)=>{let h=t.state.selection.ranges.some(u=>u.from==c&&u.to==d);r.add(c,d,h?BL:NL)})}return r.finish()}},{decorations:n=>n.decorations});function Ml(n){return e=>{let t=e.state.field(ss,!1);return t&&t.query.spec.valid?n(e,t):Dh(e)}}var la=Ml((n,{query:e})=>{let{to:t}=n.state.selection.main,r=e.nextMatch(n.state,t,t);if(!r)return!1;let i=z.single(r.from,r.to),s=n.state.facet(ro);return n.dispatch({selection:i,effects:[Kg(n,r),s.scrollToMatch(i.main,n)],userEvent:"select.search"}),sP(n),!0}),Mh=Ml((n,{query:e})=>{let{state:t}=n,{from:r}=t.selection.main,i=e.prevMatch(t,r,r);if(!i)return!1;let s=z.single(i.from,i.to),o=n.state.facet(ro);return n.dispatch({selection:s,effects:[Kg(n,i),o.scrollToMatch(s.main,n)],userEvent:"select.search"}),sP(n),!0}),FL=Ml((n,{query:e})=>{let t=e.matchAll(n.state,1e3);return!t||!t.length?!1:(n.dispatch({selection:z.create(t.map(r=>z.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),YL=({state:n,dispatch:e})=>{let t=n.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:r,to:i}=t.main,s=[],o=0;for(let a=new os(n.doc,n.sliceDoc(r,i));!a.next().done;){if(s.length>1e3)return!1;a.value.from==r&&(o=s.length),s.push(z.range(a.value.from,a.value.to))}return e(n.update({selection:z.create(s,o),userEvent:"select.search.matches"})),!0},tP=Ml((n,{query:e})=>{let{state:t}=n,{from:r,to:i}=t.selection.main;if(t.readOnly)return!1;let s=e.nextMatch(t,r,r);if(!s)return!1;let o=s,a=[],l,c,d=[];o.precise?o.from==r&&o.to==i&&(c=t.toText(e.getReplacement(o)),a.push({from:o.from,to:o.to,insert:c}),o=e.nextMatch(t,o.from,o.to),d.push(F.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(r).number)+"."))):o=e.nextMatch(t,o.from,o.to);let h=n.state.changes(a);return o&&(l=z.single(o.from,o.to).map(h),d.push(Kg(n,o)),d.push(t.facet(ro).scrollToMatch(l.main,n))),n.dispatch({changes:h,selection:l,effects:d,userEvent:"input.replace"}),!0}),jL=Ml((n,{query:e})=>{if(n.state.readOnly)return!1;let t=[];for(let i of e.matchAll(n.state,1e9)){let{from:s,to:o,precise:a}=i;a&&t.push({from:s,to:o,insert:e.getReplacement(i)})}if(!t.length)return!1;let r=n.state.phrase("replaced $ matches",t.length)+".";return n.dispatch({changes:t,effects:F.announce.of(r),userEvent:"input.replace.all"}),!0});function Hg(n){return n.state.facet(ro).createPanel(n)}function Vg(n,e){var t,r,i,s,o;let a=n.selection.main,l=a.empty||a.to>a.from+100?"":n.sliceDoc(a.from,a.to);if(e&&!l)return e;let c=n.facet(ro);return new Ch({search:((t=e==null?void 0:e.literal)!==null&&t!==void 0?t:c.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:(r=e==null?void 0:e.caseSensitive)!==null&&r!==void 0?r:c.caseSensitive,literal:(i=e==null?void 0:e.literal)!==null&&i!==void 0?i:c.literal,regexp:(s=e==null?void 0:e.regexp)!==null&&s!==void 0?s:c.regexp,wholeWord:(o=e==null?void 0:e.wholeWord)!==null&&o!==void 0?o:c.wholeWord})}function iP(n){let e=Em(n,Hg);return e&&e.dom.querySelector("[main-field]")}function sP(n){let e=iP(n);e&&e==n.root.activeElement&&e.select()}var Dh=n=>{let e=n.state.field(ss,!1);if(e&&e.panel){let t=iP(n);if(t&&t!=n.root.activeElement){let r=Vg(n.state,e.query.spec);r.valid&&n.dispatch({effects:Rl.of(r)}),t.focus(),t.select()}}else n.dispatch({effects:[Gg.of(!0),e?Rl.of(Vg(n.state,e.query.spec)):ye.appendConfig.of(Yg)]});return!0},oP=n=>{let e=n.state.field(ss,!1);if(!e||!e.panel)return!1;let t=Em(n,Hg);return t&&t.dom.contains(n.root.activeElement)&&n.focus(),n.dispatch({effects:Gg.of(!1)}),!0},aP=[{key:"Mod-f",run:Dh,scope:"editor search-panel"},{key:"F3",run:la,shift:Mh,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:la,shift:Mh,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:oP,scope:"editor search-panel"},{key:"Mod-Shift-l",run:YL},{key:"Mod-Alt-g",run:AL},{key:"Mod-d",run:Ug,preventDefault:!0}],Fg=class{constructor(e){this.view=e;let t=this.query=e.state.field(ss).query.spec;this.commit=this.commit.bind(this),this.searchField=kt("input",{value:t.search,placeholder:Hn(e,"Find"),"aria-label":Hn(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=kt("input",{value:t.replace,placeholder:Hn(e,"Replace"),"aria-label":Hn(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=kt("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=kt("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=kt("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function r(i,s,o){return kt("button",{class:"cm-button",name:i,onclick:s,type:"button"},o)}this.dom=kt("div",{onkeydown:i=>this.keydown(i),class:"cm-search"},[this.searchField,r("next",()=>la(e),[Hn(e,"next")]),r("prev",()=>Mh(e),[Hn(e,"previous")]),r("select",()=>FL(e),[Hn(e,"all")]),kt("label",null,[this.caseField,Hn(e,"match case")]),kt("label",null,[this.reField,Hn(e,"regexp")]),kt("label",null,[this.wordField,Hn(e,"by word")]),...e.state.readOnly?[]:[kt("br"),this.replaceField,r("replace",()=>tP(e),[Hn(e,"replace")]),r("replaceAll",()=>jL(e),[Hn(e,"replace all")])],kt("button",{name:"close",onclick:()=>oP(e),"aria-label":Hn(e,"close"),type:"button"},["\xD7"])])}commit(){let e=new Ch({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Rl.of(e)}))}keydown(e){jv(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Mh:la)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),tP(this.view))}update(e){for(let t of e.transactions)for(let r of t.effects)r.is(Rl)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(ro).top}};function Hn(n,e){return n.state.phrase(e)}var Ph=30,kh=/[\s\.,:;?!]/;function Kg(n,{from:e,to:t}){let r=n.state.doc.lineAt(e),i=n.state.doc.lineAt(t).to,s=Math.max(r.from,e-Ph),o=Math.min(i,t+Ph),a=n.state.sliceDoc(s,o);if(s!=r.from){for(let l=0;l<Ph;l++)if(!kh.test(a[l+1])&&kh.test(a[l])){a=a.slice(l);break}}if(o!=i){for(let l=a.length-1;l>a.length-Ph;l--)if(!kh.test(a[l-1])&&kh.test(a[l])){a=a.slice(0,l);break}}return F.announce.of(`${n.state.phrase("current match")}. ${a} ${n.state.phrase("on line")} ${r.number}.`)}var UL=F.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"}}),Yg=[ss,pr.low(VL),UL];var tO=class n{constructor(e,t,r,i,s,o,a,l,c,d=0,h){this.p=e,this.stack=t,this.state=r,this.reducePos=i,this.pos=s,this.score=o,this.buffer=a,this.bufferBase=l,this.curContext=c,this.lookAhead=d,this.parent=h}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,r=0){let i=e.parser.context;return new n(e,[],t,r,r,0,[],0,i?new Zh(i,i.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let r=e>>19,i=e&65535,{parser:s}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),a=s.dynamicPrecedence(i);if(a&&(this.score+=a),r==0){i<s.minRepeatTerm&&this.reducePos<this.pos&&(this.reducePos=this.pos),this.pushState(s.getGoto(this.state,i,!0),this.reducePos),i<s.minRepeatTerm&&this.storeNode(i,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(i,this.reducePos);return}let l=this.stack.length-(r-1)*3-(e&262144?6:0),c=l?this.stack[l-2]:this.p.ranges[0].from;i<s.minRepeatTerm&&c==this.reducePos&&this.reducePos<this.pos&&(this.reducePos=this.pos);let d=this.reducePos-c;d>=2e3&&!(!((t=this.p.parser.nodeSet.types[i])===null||t===void 0)&&t.isAnonymous)&&(c==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=d):this.p.lastBigReductionSize<d&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=c,this.p.lastBigReductionSize=d));let h=l?this.stack[l-1]:0,u=this.bufferBase+this.buffer.length-h;if(i<s.minRepeatTerm||e&131072){let f=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(i,c,f,u+4,!0)}if(e&262144)this.state=this.stack[l];else{let f=this.stack[l-3];this.state=s.getGoto(f,i,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(i,c)}storeNode(e,t,r,i=4,s=!1){if(e==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(t==r)return;if(this.buffer[o-2]>=t){this.buffer[o-2]=r;return}}}if(!s||this.pos==r)this.buffer.push(e,t,r,i);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]>r;l-=4)if(this.buffer[l-1]>=0){a=!0;break}if(a)for(;o>0&&this.buffer[o-2]>r;)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,i>4&&(i-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=r,this.buffer[o+3]=i}}shift(e,t,r,i){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let s=e,{parser:o}=this.p;this.pos=i;let a=o.stateFlag(s,1);!a&&(i>r||t<=o.maxNode)&&(this.reducePos=i),this.pushState(s,a?r:Math.min(r,this.reducePos)),this.shiftContext(t,r),t<=o.maxNode&&this.buffer.push(t,r,i,4)}else this.pos=i,this.shiftContext(t,r),t<=this.p.parser.maxNode&&this.buffer.push(t,r,i,4)}apply(e,t,r,i){e&65536?this.reduce(e):this.shift(e,t,r,i)}useNode(e,t){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);let i=this.pos;this.reducePos=this.pos=i+e.length,this.pushState(t,i),this.buffer.push(r,i,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(t&&e.buffer[t-4]==0&&(t-=4);t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let r=e.buffer.slice(t),i=e.bufferBase+t;for(;e&&i==e.bufferBase;)e=e.parent;return new n(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,i,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let r=e<=this.p.parser.maxNode;r&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,r?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new nO(this);;){let r=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(r==0)return!1;if((r&65536)==0)return!0;t.reduce(r)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>8||this.stack.length>=120){let i=[];for(let s=0,o;s<t.length;s+=2)(o=t[s+1])!=this.state&&this.p.parser.hasAction(o,e)&&i.push(t[s],o);if(this.stack.length<120)for(let s=0;i.length<8&&s<t.length;s+=2){let o=t[s+1];i.some((a,l)=>l&1&&a==o)||i.push(t[s],o)}t=i}let r=[];for(let i=0;i<t.length&&r.length<4;i+=2){let s=t[i+1];if(s==this.state)continue;let o=this.split();o.pushState(s,this.pos),o.storeNode(0,o.pos,o.pos,4,!0),o.shiftContext(t[i],this.pos),o.reducePos=this.pos,o.score-=200,r.push(o)}return r}forceReduce(){let{parser:e}=this.p,t=e.stateSlot(this.state,5);if((t&65536)==0)return!1;if(!e.validAction(this.state,t)){let r=t>>19,i=t&65535,s=this.stack.length-r*3;if(s<0||e.getGoto(this.stack[s],i,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;t=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let{parser:e}=this.p,t=[],r=(i,s)=>{if(!t.includes(i))return t.push(i),e.allActions(i,o=>{if(!(o&393216))if(o&65536){let a=(o>>19)-s;if(a>1){let l=o&65535,c=this.stack.length-a*3;if(c>=0&&e.getGoto(this.stack[c],l,!1)>=0)return a<<19|65536|l}}else{let a=r(o,s+1);if(a!=null)return a}})};return r(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:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t<this.stack.length;t+=3)if(this.stack[t]!=e.stack[t])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){if(e!=this.curContext.context){let t=new Zh(this.curContext.tracker,e);t.hash!=this.curContext.hash&&this.emitContext(),this.curContext=t}}setLookAhead(e){return e<=this.lookAhead?!1:(this.emitLookAhead(),this.lookAhead=e,!0)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}},Zh=class{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}},nO=class{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,r=e>>19;r==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(r-1)*3;let i=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=i}},rO=class n{constructor(e,t,r){this.stack=e,this.pos=t,this.index=r,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new n(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.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 n(this.stack,this.pos,this.index)}};function Ll(n,e=Uint16Array){if(typeof n!="string")return n;let t=null;for(let r=0,i=0;r<n.length;){let s=0;for(;;){let o=n.charCodeAt(r++),a=!1;if(o==126){s=65535;break}o>=92&&o--,o>=34&&o--;let l=o-32;if(l>=46&&(l-=46,a=!0),s+=l,a)break;s*=46}t?t[i++]=s:t=new e(s)}return t}var ca=class{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},lP=new ca,iO=class{constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=lP,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let r=this.range,i=this.rangeIndex,s=this.pos+e;for(;s<r.from;){if(!i)return null;let o=this.ranges[--i];s-=r.from-o.to,r=o}for(;t<0?s>r.to:s>=r.to;){if(i==this.ranges.length-1)return null;let o=this.ranges[++i];s+=o.from-r.to,r=o}return s}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,r,i;if(t>=0&&t<this.chunk.length)r=this.pos+e,i=this.chunk.charCodeAt(t);else{let s=this.resolveOffset(e,1);if(s==null)return-1;if(r=s,r>=this.chunk2Pos&&r<this.chunk2Pos+this.chunk2.length)i=this.chunk2.charCodeAt(r-this.chunk2Pos);else{let o=this.rangeIndex,a=this.range;for(;a.to<=r;)a=this.ranges[++o];this.chunk2=this.input.chunk(this.chunk2Pos=r),r+this.chunk2.length>a.to&&(this.chunk2=this.chunk2.slice(0,a.to-r)),i=this.chunk2.charCodeAt(0)}}return r>=this.token.lookAhead&&(this.token.lookAhead=r+1),i}acceptToken(e,t=0){let r=t?this.resolveOffset(t,-1):this.pos;if(r==null||r<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=r}acceptTokenTo(e,t){this.token.value=e,this.token.end=t}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:t}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),t=this.pos+e.length;this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,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(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,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(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=lP,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let r="";for(let i of this.ranges){if(i.from>=t)break;i.to>e&&(r+=this.input.read(Math.max(i.from,e),Math.min(i.to,t)))}return r}},as=class{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:r}=t.p;fP(this.data,e,t,this.id,r.data,r.tokenPrecTable)}};as.prototype.contextual=as.prototype.fallback=as.prototype.extend=!1;var oi=class{constructor(e,t,r){this.precTable=t,this.elseToken=r,this.data=typeof e=="string"?Ll(e):e}token(e,t){let r=e.pos,i=0;for(;;){let s=e.next<0,o=e.resolveOffset(1,1);if(fP(this.data,e,t,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(s||i++,o==null)break;e.reset(o,e.token)}i&&(e.reset(r,e.token),e.acceptToken(this.elseToken,i))}};oi.prototype.contextual=as.prototype.fallback=as.prototype.extend=!1;var Rt=class{constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}};function fP(n,e,t,r,i,s){let o=0,a=1<<r,{dialect:l}=t.p.parser;e:for(;(a&n[o])!=0;){let c=n[o+1];for(let f=o+3;f<c;f+=2)if((n[f+1]&a)>0){let m=n[f];if(l.allows(m)&&(e.token.value==-1||e.token.value==m||GL(m,e.token.value,i,s))){e.acceptToken(m);break}}let d=e.next,h=0,u=n[o+2];if(e.next<0&&u>h&&n[c+u*3-3]==65535){o=n[c+u*3-1];continue e}for(;h<u;){let f=h+u>>1,m=c+f+(f<<1),O=n[m],S=n[m+1]||65536;if(d<O)u=f;else if(d>=S)h=f+1;else{o=n[m+2],e.advance();continue e}}break}}function cP(n,e,t){for(let r=e,i;(i=n[r])!=65535;r++)if(i==t)return r-e;return-1}function GL(n,e,t,r){let i=cP(t,r,e);return i<0||cP(t,r,n)<i}var Kn=typeof process!="undefined"&&process.env&&/\bparse\b/.test(process.env.LOG),Jg=null;function dP(n,e,t){let r=n.cursor(We.IncludeAnonymous);for(r.moveTo(e);;)if(!(t<0?r.childBefore(e):r.childAfter(e)))for(;;){if((t<0?r.to<e:r.from>e)&&!r.type.isError)return t<0?Math.max(0,Math.min(r.to-1,e-25)):Math.min(n.length,Math.max(r.from+1,e+25));if(t<0?r.prevSibling():r.nextSibling())break;if(!r.parent())return t<0?0:n.length}}var sO=class{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?dP(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?dP(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let t=this.trees.length-1;if(t<0)return this.nextFragment(),null;let r=this.trees[t],i=this.index[t];if(i==r.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let s=r.children[i],o=this.start[t]+r.positions[i];if(o>e)return this.nextStart=o,null;if(s instanceof Ee){if(o==e){if(o<this.safeFrom)return null;let a=o+s.length;if(a<=this.safeTo){let l=s.prop(xe.lookAhead);if(!l||a+l<this.fragment.to)return s}}this.index[t]++,o+s.length>=Math.max(this.safeFrom,e)&&(this.trees.push(s),this.start.push(o),this.index.push(0))}else this.index[t]++,this.nextStart=o+s.length}}},oO=class{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(r=>new ca)}getActions(e){let t=0,r=null,{parser:i}=e.p,{tokenizers:s}=i,o=i.stateSlot(e.state,3),a=e.curContext?e.curContext.hash:0,l=0;for(let c=0;c<s.length;c++){if((1<<c&o)==0)continue;let d=s[c],h=this.tokens[c];if(!(r&&!d.fallback)&&((d.contextual||h.start!=e.pos||h.mask!=o||h.context!=a)&&(this.updateCachedToken(h,d,e),h.mask=o,h.context=a),h.lookAhead>h.end+25&&(l=Math.max(h.lookAhead,l)),h.value!=0)){let u=t;if(h.extended>-1&&(t=this.addActions(e,h.extended,h.end,t)),t=this.addActions(e,h.value,h.end,t),!d.extend&&(r=h,t>u))break}}for(;this.actions.length>t;)this.actions.pop();return l&&e.setLookAhead(l),!r&&e.pos==this.stream.end&&(r=new ca,r.value=e.p.parser.eofTerm,r.start=r.end=e.pos,t=this.addActions(e,r.value,r.end,t)),this.mainToken=r,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new ca,{pos:r,p:i}=e;return t.start=r,t.end=Math.min(r+1,i.stream.end),t.value=r==i.stream.end?i.parser.eofTerm:0,t}updateCachedToken(e,t,r){let i=this.stream.clipPos(r.pos);if(t.token(this.stream.reset(i,e),r),e.value>-1){let{parser:s}=r.p;for(let o=0;o<s.specialized.length;o++)if(s.specialized[o]==e.value){let a=s.specializers[o](this.stream.read(e.start,e.end),r);if(a>=0&&r.p.parser.dialect.allows(a>>1)){(a&1)==0?e.value=a>>1:e.extended=a>>1;break}}}else e.value=0,e.end=this.stream.clipPos(i+1)}putAction(e,t,r,i){for(let s=0;s<i;s+=3)if(this.actions[s]==e)return i;return this.actions[i++]=e,this.actions[i++]=t,this.actions[i++]=r,i}addActions(e,t,r,i){let{state:s}=e,{parser:o}=e.p,{data:a}=o;for(let l=0;l<2;l++)for(let c=o.stateSlot(s,l?2:1);;c+=3){if(a[c]==65535)if(a[c+1]==1)c=_i(a,c+2);else{i==0&&a[c+1]==2&&(i=this.putAction(_i(a,c+2),t,r,i));break}a[c]==t&&(i=this.putAction(_i(a,c+1),t,r,i))}return i}},aO=class{constructor(e,t,r,i){this.parser=e,this.input=t,this.ranges=i,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 iO(t,i),this.tokens=new oO(e,this.stream),this.topTerm=e.top[1];let{from:s}=i[0];this.stacks=[tO.start(this,e.top[0],s)],this.fragments=r.length&&this.stream.end-s>e.bufferLength*4?new sO(r,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,r=this.stacks=[],i,s;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;o<e.length;o++){let a=e[o];for(;;){if(this.tokens.mainToken=null,a.pos>t)r.push(a);else{if(this.advanceStack(a,r,e))continue;{i||(i=[],s=[]),i.push(a);let l=this.tokens.getMainToken(a);s.push(l.value,l.end)}}break}}if(!r.length){let o=i&&HL(i);if(o)return Kn&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Kn&&i&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&i){let o=this.stoppedAt!=null&&i[0].pos>this.stoppedAt?i[0]:this.runRecovery(i,s,r);if(o)return Kn&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(r.length>o)for(r.sort((a,l)=>l.score-a.score);r.length>o;)r.pop();r.some(a=>a.reducePos>t)&&this.recovering--}else if(r.length>1){e:for(let o=0;o<r.length-1;o++){let a=r[o];for(let l=o+1;l<r.length;l++){let c=r[l];if(a.sameState(c)||a.buffer.length>500&&c.buffer.length>500)if((a.score-c.score||a.buffer.length-c.buffer.length)>0)r.splice(l--,1);else{r.splice(o--,1);continue e}}}r.length>12&&(r.sort((o,a)=>a.score-o.score),r.splice(12,r.length-12))}this.minStackPos=r[0].pos;for(let o=1;o<r.length;o++)r[o].pos<this.minStackPos&&(this.minStackPos=r[o].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,t,r){let i=e.pos,{parser:s}=this,o=Kn?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&i>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let c=e.curContext&&e.curContext.tracker.strict,d=c?e.curContext.hash:0;for(let h=this.fragments.nodeAt(i);h;){let u=this.parser.nodeSet.types[h.type.id]==h.type?s.getGoto(e.state,h.type.id):-1;if(u>-1&&h.length&&(!c||(h.prop(xe.contextHash)||0)==d))return e.useNode(h,u),Kn&&console.log(o+this.stackID(e)+` (via reuse of ${s.getName(h.type.id)})`),!0;if(!(h instanceof Ee)||h.children.length==0||h.positions[0]>0)break;let f=h.children[0];if(f instanceof Ee&&h.positions[0]==0)h=f;else break}}let a=s.stateSlot(e.state,4);if(a>0)return e.reduce(a),Kn&&console.log(o+this.stackID(e)+` (via always-reduce ${s.getName(a&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let l=this.tokens.getActions(e);for(let c=0;c<l.length;){let d=l[c++],h=l[c++],u=l[c++],f=c==l.length||!r,m=f?e:e.split(),O=this.tokens.mainToken;if(m.apply(d,h,O?O.start:m.pos,u),Kn&&console.log(o+this.stackID(m)+` (via ${(d&65536)==0?"shift":`reduce of ${s.getName(d&65535)}`} for ${s.getName(h)} @ ${i}${m==e?"":", split"})`),f)return!0;m.pos>i?t.push(m):r.push(m)}return!1}advanceFully(e,t){let r=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>r)return hP(e,t),!0}}runRecovery(e,t,r){let i=null,s=!1;for(let o=0;o<e.length;o++){let a=e[o],l=t[o<<1],c=t[(o<<1)+1],d=Kn?this.stackID(a)+" -> ":"";if(a.deadEnd&&(s||(s=!0,a.restart(),Kn&&console.log(d+this.stackID(a)+" (restarted)"),this.advanceFully(a,r))))continue;let h=a.split(),u=d;for(let f=0;f<10&&h.forceReduce()&&(Kn&&console.log(u+this.stackID(h)+" (via force-reduce)"),!this.advanceFully(h,r));f++)Kn&&(u=this.stackID(h)+" -> ");for(let f of a.recoverByInsert(l))Kn&&console.log(d+this.stackID(f)+" (via recover-insert)"),this.advanceFully(f,r);this.stream.end>a.pos?(c==a.pos&&(c++,l=0),a.recoverByDelete(l,c),Kn&&console.log(d+this.stackID(a)+` (via recover-delete ${this.parser.getName(l)})`),hP(a,r)):(!i||i.score<h.score)&&(i=h)}return i}stackToTree(e){return e.close(),Ee.build({buffer:rO.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(Jg||(Jg=new WeakMap)).get(e);return t||Jg.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}};function hP(n,e){for(let t=0;t<e.length;t++){let r=e[t];if(r.pos==n.pos&&r.sameState(n)){e[t].score<n.score&&(e[t]=n);return}}e.push(n)}var lO=class{constructor(e,t,r){this.source=e,this.flags=t,this.disabled=r}allows(e){return!this.disabled||this.disabled[e]==0}},eO=n=>n,da=class{constructor(e){this.start=e.start,this.shift=e.shift||eO,this.reduce=e.reduce||eO,this.reuse=e.reuse||eO,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}},Rn=class n extends Ti{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let a=0;a<e.repeatNodeCount;a++)t.push("");let r=Object.keys(e.topRules).map(a=>e.topRules[a][1]),i=[];for(let a=0;a<t.length;a++)i.push([]);function s(a,l,c){i[a].push([l,l.deserialize(String(c))])}if(e.nodeProps)for(let a of e.nodeProps){let l=a[0];typeof l=="string"&&(l=xe[l]);for(let c=1;c<a.length;){let d=a[c++];if(d>=0)s(d,l,a[c++]);else{let h=a[c+-d];for(let u=-d;u>0;u--)s(a[c++],l,h);c++}}}this.nodeSet=new $i(t.map((a,l)=>St.define({name:l>=this.minRepeatTerm?void 0:a,id:l,props:i[l],top:r.indexOf(l)>-1,error:l==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(l)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=1024;let o=Ll(e.tokenData);this.context=e.context,this.specializerSpecs=e.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(uP),this.states=Ll(e.states,Uint32Array),this.data=Ll(e.stateData),this.goto=Ll(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(a=>typeof a=="number"?new as(o,a):a),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,r){let i=new aO(this,e,t,r);for(let s of this.wrappers)i=s(i,e,t,r);return i}getGoto(e,t,r=!1){let i=this.goto;if(t>=i[0])return-1;for(let s=i[t+1];;){let o=i[s++],a=o&1,l=i[s++];if(a&&r)return l;for(let c=s+(o>>1);s<c;s++)if(i[s]==e)return l;if(a)return-1}}hasAction(e,t){let r=this.data;for(let i=0;i<2;i++)for(let s=this.stateSlot(e,i?2:1),o;;s+=3){if((o=r[s])==65535)if(r[s+1]==1)o=r[s=_i(r,s+2)];else{if(r[s+1]==2)return _i(r,s+2);break}if(o==t||o==0)return _i(r,s+1)}return 0}stateSlot(e,t){return this.states[e*6+t]}stateFlag(e,t){return(this.stateSlot(e,0)&t)>0}validAction(e,t){return!!this.allActions(e,r=>r==t?!0:null)}allActions(e,t){let r=this.stateSlot(e,4),i=r?t(r):void 0;for(let s=this.stateSlot(e,1);i==null;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=_i(this.data,s+2);else break;i=t(_i(this.data,s+1))}return i}nextStates(e){let t=[];for(let r=this.stateSlot(e,1);;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=_i(this.data,r+2);else break;if((this.data[r+2]&1)==0){let i=this.data[r+1];t.some((s,o)=>o&1&&s==i)||t.push(this.data[r],i)}}return t}configure(e){let t=Object.assign(Object.create(n.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let r=this.topRules[e.top];if(!r)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=r}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(r=>{let i=e.tokenizers.find(s=>s.from==r);return i?i.to:r})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((r,i)=>{let s=e.specializers.find(a=>a.from==r.external);if(!s)return r;let o=Object.assign(Object.assign({},r),{external:s.to});return t.specializers[i]=uP(o),o})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),r=t.map(()=>!1);if(e)for(let s of e.split(" ")){let o=t.indexOf(s);o>=0&&(r[o]=!0)}let i=null;for(let s=0;s<t.length;s++)if(!r[s])for(let o=this.dialects[t[s]],a;(a=this.data[o++])!=65535;)(i||(i=new Uint8Array(this.maxTerm+1)))[a]=1;return new lO(e,r,i)}static deserialize(e){return new n(e)}};function _i(n,e){return n[e]|n[e+1]<<16}function HL(n){let e=null;for(let t of n){let r=t.p.stoppedAt;(t.pos==t.p.stream.end||r!=null&&t.pos>r)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.score<t.score)&&(e=t)}return e}function uP(n){if(n.external){let e=n.extend?1:0;return(t,r)=>n.external(t,r)<<1|e}return n.get}var Ih=Kt({"typedef struct union enum":g.definitionKeyword,"extern static auto register thread_local _Thread_local inline const volatile restrict _Atomic":g.modifier,"if else switch for while do case default return break continue goto":g.controlKeyword,"sizeof _Alignof __alignof__ _Generic _Static_assert static_assert":g.operatorKeyword,NULL:g.null,"true false":g.bool,"PrimitiveType TypeSize":g.typeName,TypeIdentifier:g.typeName,FieldIdentifier:g.propertyName,"CallExpression/FieldExpression/FieldIdentifier":g.function(g.propertyName),StatementIdentifier:g.labelName,Identifier:g.variableName,"CallExpression/Identifier":g.function(g.variableName),"FunctionDeclarator/Identifier":g.function(g.definition(g.variableName)),ArithOp:g.arithmeticOperator,LogicOp:g.logicOperator,BitOp:g.bitwiseOperator,CompareOp:g.compareOperator,UpdateOp:g.updateOperator,LineComment:g.lineComment,BlockComment:g.blockComment,Number:g.number,String:g.string,SystemLibString:g.special(g.string),CharLiteral:g.character,EscapeSequence:g.escape,PreprocArg:g.meta,"PreprocDirectiveName #include #ifdef #ifndef #if #define #else #endif #elif":g.processingInstruction,"( )":g.paren,"[ ]":g.squareBracket,"{ }":g.brace,". ->":g.derefOperator,", ;":g.separator});var KL={__proto__:null,const:100,volatile:102,restrict:104,_Atomic:106,struct:110,extern:116,static:118,auto:120,register:122,_Thread_local:124,inline:126,_Noreturn:128,__attribute__:132,_Alignas:136,_Static_assert:170,static_assert:172,typedef:176,union:190,enum:194,signed:202,unsigned:202,long:202,short:202,void:204,char:204,int:204,float:204,double:204,_Bool:204,_Complex:204,_Imaginary:204,sizeof:208,_Alignof:212,__alignof__:214,_Generic:218,default:222,case:262,if:272,else:274,switch:278,do:282,while:284,for:290,return:294,break:298,continue:302,goto:306},pP=Rn.deserialize({version:14,states:"!1YQ}QPOOP%YOPOOO%zOQO'#CaO(lQPO'#CdO*QQPO'#CjO*XQPO'#CmO+YQPO'#CqO.dQPOOO*XQPO'#DXO*XQPO'#D[OOQO'#Fr'#FrO.nQPO'#GqO1PQPO'#GqOOQO'#Fx'#FxO1WQPO'#EdOOQO'#Gm'#GmO2tQPO'#GaO3ROSO'#EsOOQO'#Ga'#GaO3ZQPO'#FPO3bQPO'#FOO3mQPO'#FUOOQO'#FW'#FWO3rQPO'#FWOOQO'#HZ'#HZOOQO'#HY'#HYOOQO'#HW'#HWOOQO'#GO'#GOQ}QPOOOOQO'#Gl'#GlOOQO'#Gr'#GrOOQO'#Gs'#GsO3wQPO'#DoO3|QPO'#DqO4RQPO'#ESO4WQPO'#EVO4xQPO'#DdO4xQPO'#E^O5QQPO'#E`O5YQPO'#EgO5aQPO'#EiO5fQPO'#ElO5kQPO'#FXO5kQPO'#F[O5pQPO'#F^O5kQPO'#FaO7jQPO'#FbO7oQPO'#FdO7vQPO'#FfO7{QPO'#FhO8QQPO'#FjO*XQPO'#FSO8VQPO'#FSP8[O!bO'#C^P8gxWO'#C_P4{xWO'#C_P8rx`O'#C_P4{xWO'#C_P8wxWO'#C_P9Sx`O'#C_POOO)CAy)CAyOOOO'#Fm'#FmO9bOQO,58{OOQO,58{,58{O*XQPO,59SOOQO,59U,59UO9mQPO,59VO*XQPO,59ZO*XQPO,59^OOQO'#C}'#C}OOQO'#DP'#DPOOQO'#DQ'#DQOOQO'#DT'#DTO*XQPO,59gO*XQPO,59gO*XQPO,59gO*XQPO,59gO*XQPO,59gO*XQPO,59gO*XQPO,59gO*XQPO,59gO*XQPO,59gO*XQPO,59gOOQO,59v,59vO;cQPO'#CgOOQO,5;r,5;rOOQO'#Cd'#CdO;{QPO,59XO=bQPO'#CdO?_QPO,59]O?fQPO,59]OOQO'#Fp'#FpO4WQPO'#D_O@SQPO'#D_O@aQPO,59xO@fQPO,59TO@mQPO,59sOBaQPO,59vOOQO-E9p-E9pOCvQPO,5=]OOQO'#E]'#E]OCvQPO,5=]OOQO,5=r,5=rOOQO-E9v-E9vOOQO,5;O,5;OOOQO'#Fz'#FzOEZQPO,5;^OGQOSO,5;_OOQO,5;k,5;kOGVQPO,5;kOG^QPO'#DwOHZQPO,5;jO3bQPO'#DzOOQO'#Gv'#GvOHeQPO'#HXOHpQPO,5;lO5pQPO,5;pOOQO-E9|-E9|OHxQPO,5:ZO+YQPO,5:]O*XQPO,5:nO4WQPO,5:qOH}QPO,5:qOIYQPO'#DfOIjQPO'#GnOOQO'#Gn'#GnOOQO,5:O,5:OOOQO,5:x,5:xOKQQPO'#EbOKYQPO,5:zOOQO,5:z,5:zOLpQPO,5;RO+YQPO'#CqOOQO,5;R,5;RO4WQPO,5;TO*XQPO,5;WO*XQPO'#CqO5pQPO,5;sONVQPO,5;vO! oQPO'#CdO! vQPO,5;xO5pQPO,5;{O!#fQPO,5;|O!$]QPO,5<OOOQO,5<O,5<OO!$dQPO,5<OOOQO,5<Q,5<QOOQO,5<S,5<SOOQO'#FV'#FVO!$iQPO,5<UO!$nQPO,5;nO!'_QPO,5;nPOOO'#Fl'#FlP!)TO!bO,58xPOOO,58x,58xP8wxWO,58yP!)`xWO,58yP!)nx`O,58yPOxO'#F|'#F|P!*PxWO'#HRPOOO'#HR'#HRP!*VxWO'#HRPOOO,58y,58yOOOO-E9k-E9kOOQO1G.g1G.gO!*[QPO1G.nOOQO'#Cl'#ClOOQO1G.q1G.qO!+XQPO1G.uO!,UQPO1G.xOOQO1G.x1G.xO!,`QPO1G/RO!-uQPO1G/RO!/[QPO1G/RO!0qQPO1G/RO!2WQPO1G/RO!3mQPO1G/RO!5SQPO1G/RO!6iQPO1G/RO!8OQPO1G/RO!9eQPO1G/RO!:zQPO'#G`O!;zQPO'#CwO!<[QPO'#G`O!<dQPO,59ROOQO1G.w1G.wOOQO-E9n-E9nO!<iQPO,59yO!<iQPO,59yO!<vQPO'#D{OOQO'#D|'#D|O!=TQPO,59yO!>pQPO'#D}O!>zQpO'#EOOOQO'#Gw'#GwO@fQPO1G/dO!?_QPO1G.oOOQO1G.o1G.oO!AoQPO1G2wOOQO-E9x-E9xOOQO1G0y1G0yOOQO1G1V1G1VOG^QPO,5:cO!B]QPO,5:cOOQO,5:d,5:dO!BwQPO,5:eO!?TQpO'#DuOOQO'#GP'#GPO!CUQPO1G1UOOQO1G1U1G1UO@fQPO,5;mO3bQPO'#GQO!C^QPO,5=sO!CiQPO,5:fO!CtQPO1G1WOOQO1G1W1G1WOOQO1G1[1G1[O!C|QPO1G/uO!DRQPO1G/wO!EOQPO1G/wO!ETQPO1G0YOH}QPO1G0]O!FTQPO'#EXO!FlQPO'#GyOH}QPO'#E[OOQO'#Gz'#GzO!FzQPO1G0]O!GPQPO'#GqO!GdQPO'#DgOOQO'#Go'#GoOOQO'#Fq'#FqO!GuQPO,5:QOOQO,5:Q,5:QOOQO,5=Y,5=YO!HVQPO'#EcO!HbQPO'#G{O!HjQPO,5:|OOQO1G0f1G0fO4dQPO1G0fO!HoQPO,5=hO!HtQPO1G0oO!HyQPO1G0rO!IvQPO1G1_OOQO1G1b1G1bO5kQPO1G1dOOQO1G1g1G1gO!M[QPO1G1hO3bQPO'#FQO!McQPO1G1hO!MjQPO1G1hOOQO1G1j1G1jOOQO1G1p1G1pO!MoQPO1G1YOOQO'#GR'#GRO!MoQPO1G1YPOOO-E9j-E9jPOOO1G.d1G.dPOOO1G.e1G.eP8wxWO1G.eP# eQpO'#HTP# px`O1G.ePOxO-E9z-E9zPOOO,5=m,5=mP#!OxWO,5=mO*XQPO7+$YOOQO7+$a7+$aO9rQPO'#F{O#!TQPO,5<zO#!]QPO'#GiO*XQPO'#CyO9mQPO'#CzOOQO'#Fn'#FnO##]QPO'#CxO##hQPO'#GiO##pQPO,59cOOQO1G.m1G.mO##uQPO1G/eO#$SQPO1G/eO#$eQPO,5:gO#$rQPO,5:gOOQO,5:h,5:hO#%TQPO,5:iO#%_QPO,5:iO#&[QPO,5:iO#%TQPO,5:iOOQO,5:i,5:iO#&cQPO,5:jO#&nQPO'#DvO#'SQPO'#GuO#'[QPO,5:aO#'aQPO7+%OOOQO7+&b7+&bO#(vQPO1G/}O#)bQPO1G0PO#*_QPO1G0POOQO'#Fs'#FsO#*fQPO1G0POOQO1G0P1G0POOQO-E9}-E9}OOQO7+&p7+&pO#*sQPO1G1XOOQO1G1X1G1XO#+vQPO,5<lOOQO,5<l,5<lOOQO-E:O-E:OOOQO1G0Q1G0QOOQO7+&r7+&rOOQO7+%a7+%aOOQO7+%c7+%cO#,[QPO7+%tO#,aQPO7+%tO#,fQPO7+%wO!FTQPO,5:sO#,kQPO,5:sOOQO,5:t,5:tO#,|QPO,5:uOH}QPO'#FvO#-ZQPO,5=eO#-cQPO,5:vOOQO7+%w7+%wO#-nQPO'#DsO#.VQPO,5:RO#.hQPO'#EQOOQO'#Gt'#GtO*XQPO'#EROOQO,5:R,5:RO#.cQPO,5:ROOQO-E9o-E9oOOQO1G/l1G/lO*XQPO,5:}O#.sQPO'#FwO#/OQPO,5=gOOQO1G0h1G0hO#/WQPO7+&QO#1cQPO1G3SOOQO7+&Z7+&ZO#3XQPO7+&^O5pQPO7+&yO#3`QPO7+'OO#3eQPO7+'SOGuQPO'#HXO#3lQPO7+'SO#4iQPO7+'SO#4pQPO7+&tOOQO-E:P-E:PPOOO7+$P7+$PP#6fQPO'#HUP#6nQPO,5=oP8wxWO7+$PPOOO1G3X1G3XO#6sQPO<<GtO#8YQPO,5<gOOQO,5<g,5<gOOQO-E9y-E9yO#9YQPO'#FoO#9mQPO,5=TO#9uQPO,59eOOQO,59f,59fOOQO-E9l-E9lO@fQPO,59dOOQO1G.}1G.}O#:rQPO7+%PO#;TQPO1G0RO#;fQPO1G0TO#<cQPO1G0TO#<jQPO1G0TOOQO1G0T1G0TOOQO1G0U1G0UO#=`QPO'#D{O#=jQPO,5:bO#=xQpO'#DzO#>oQPO,5:bO#>}QpO'#FtO#?UQPO,5=aOOQO1G/{1G/{OOQO7+%k7+%kO#?^QPO7+%kO#@ZQPO7+%kOOQO-E9q-E9qOOQO<<I`<<I`O#@bQPO<<I`OOQO<<Ic<<IcO#@gQPO1G0_O#@xQPO1G0aO#AuQPO1G0aO#A|QPO1G0aOOQO1G0a1G0aO#BZQPO,5<bOOQO-E9t-E9tOOQO1G0b1G0bO#-nQPO,5:_O#BiQPO,5:_OOQO,5:`,5:`O#B}QPO,5:kO#.hQPO'#FuO#C[QPO1G/mOOQO1G/m1G/mO#CbQPO1G/mO#CgQPO,5:lO#CrQPO,5:mO#DoQPO1G0iOOQO,5<c,5<cOOQO-E9u-E9uOOQO<<Il<<IlO#EoQPO'#EnO#EtQPO'#G}O#E|QPO<<IxOOQO<<Je<<JeOOQO<<Jj<<JjO#FRQPO<<JnO#GOQPO<<JnO#GVQPO<<JnO5pQPO<<JnO#G^QPO<<JnP#GcQpO'#F}P#GkQPO,5=pPOxO1G3Z1G3ZPOOO<<Gk<<GkO#GsQPO,5<ZOOQO,5<Z,5<ZOOQO-E9m-E9mOOQO1G/P1G/PO#HsQPO1G/OOOQO1G/O1G/OOOQO7+%o7+%oO#IsQPO7+%oO#JpQPO7+%oO#JwQPO,5:gOOQO,5<`,5<`OOQO-E9r-E9rOOQO<<IV<<IVO#KRQPOAN>zOOQO7+%{7+%{O#KWQPO7+%{O#LTQPO7+%{O#L[QPO1G/yO#LpQPO1G0VO#MmQPO1G0VO#MtQPO1G0VOOQO1G0V1G0VO#NRQPO,5<aOOQO-E9s-E9sOOQO7+%X7+%XO#NdQPO7+%XOOQO1G0W1G0WO*XQPO,5;YO#3XQPO'#FyO#NiQPO,5=iOOQOAN?dAN?dO#NqQPOAN@YO#NxQPOAN@YO5pQPOAN@YO$ PQPOAN@YOOQOAN@YAN@YPOQO,5<i,5<iPOQO-E9{-E9{OOQO<<IZ<<IZOOQOG24fG24fOOQO<<Ig<<IgOOQO7+%q7+%qO$ UQPO7+%qO$!RQPO7+%qOOQO<<Hs<<HsO$!YQPO1G0tOOQO,5<e,5<eOOQO-E9w-E9wO$#YQPOG25tO5pQPOG25tO$#aQPOG25tOOQOG25tG25tOOQO<<I]<<I]O5pQPOLD+`OOQOLD+`LD+`OOQO!$'Nz!$'NzO$#fQPO'#CdO$$wQPO'#CdO&VQPO'#Cd",stateData:"$%o~O$yOSPOSSPQ#hPQ#jPQ#kPQ#lPQ#mPQ#nPQ#oPQ#pPQ$zPQ~O%yOS~OYUOjcOpWO|WO}WO!PXO!SmO!TmO!UmO!VmO!XtO![nO!]nO!^nO!_nO!`nO!aoO!boO!dpO!fqO!wrO!xrO!zsO#RuO#TvO#X]O#Y_O#[wO#^xO#_xO#ayO#c!UO#ebO#w!TO#|zO$P{O$R|O$S}O$V!OO$X!PO$Z!QO$]!RO$_!SO%PQO%RRO%YTO%ZTO%dfO%saO~OS!WO#h!XO#j!YO#k!ZO#l!ZO#m![O#n![O#o!YO#p!]O$z!VO~OU!_O%O!aO%Q!_O~OYWXY#PXdWXgWXhWXpWXrWXuWXvWXxWXyWXzWX!PWX!S#PX!T#PX!U#PX!V#PX![#PX!]#PX!^#PX!_#PX!`#PX!a#PX!b#PX!d#PX!f#PX%R#PX%UWX%WWX%XWX%YWX%Y#PX%ZWX%[WX%^WX%_WX%dWX~O%V#yX%d#PX~P&VOY!vOd!eOg!fOp!kOr!lOu!oOv!pOx!rOy!sOz!tO!P!uO%U!bO%W!dO%X!dO%Y!gO%Z!jO%^!hO%_!iO~O%d!wO~P(vOYUOpWO|WO}WO!PXO#[wO#^xO#_xO#ayO#ebO%PQO%R!xO%YTO%ZTO%saO~OYUOpWO|WO}WO!PXO!SmO!TmO!UmO!VmO!XtO#RuO#TvO#X]O#Y_O#[wO#^xO#_xO#ayO#ebO%PQO%R!zO%YTO%ZTO%saO~OY%TXd%TXg%TXp%TXr%TXu%TXv%TXx%TXy%TXz%TX!P%TX%U%TX%W%TX%X%TX%Y%TX%Z%TX%^%TX%_%TX%d%TXX%TX%V%TXb%TXi%TX!d%TX~Oh#RO%[#RO~P,vO!SmO!TmO!UmO!VmO!XtO![nO!]nO!^nO!_nO!`nO!aoO!boO!dpO!fqO#RuO#TvO#X]O#Y_O%R#WO~O!SmO!TmO!UmO!VmO![nO!]nO!^nO!_nO!`nO!aoO!boO!dpO!fqOY%eX%R%eX%Y%eX~O%d#YO~P/{O#X]O#Y#[OY#WX!S#WX!T#WX!U#WX!V#WX![#WX!]#WX!^#WX!_#WX!`#WX!a#WX!b#WX!d#WX!f#WX%R#WX%Y#WX%d#WXX#WXd#WXg#WX%V#WXj#WX~O%PQOh%TX%[%TX~P,vOU#_O%t#_O~Oi#`O~P}OY#dO%R!xO%Y#bO~O%V#hO~O%d!wO~OY#jO~OY#kO~OY#lO~O!SmO!TmO!UmO!VmO!XtO#RuO#TvO#X]O#Y_O%R#WO~Oj#oO%R!xO~Oj#tO%R!xO~OY#xO~P*[OY#zO~OY#{O~OY#|O~OYUOjcOpWO|WO}WO!PXO#[wO#^xO#_xO#ayO#c!UO#ebO#w!TO#|zO$P{O$R|O$S}O$V!OO$X!PO$Z!QO$]!RO$_!SO%PQO%R$PO%YTO%ZTO%dfO%saO~OY$SO~O%d$UO~P*XO%d$WO~O%d$XO~O%R$YO~O%V$]O~O${$^O$|$^O$}$`O~OV$aO%PQO%R!xO~O#i$aO~OP$gO$z!VO%v$fO~OP$gO#i$aO$z!VO%v$fO~OU!_O%O$jO%Q!_O~O%R$lO~OYUOj$|OpWO|WO}WO!PXO!SmO!TmO!UmO!VmO!XtO#RuO#TvO#X]O#Y_O#[wO#^xO#_xO#ayO#ebO%PQO%R+^O%YTO%ZTO%saO~OX%SP~P9rOY!vOd!eO!P!uO%W!dO%X!dO~Ogaahaapaaraauaavaaxaayaazaa%Uaa%Yaa%Zaa%[aa%^aa%_aa%daaXaa%Vaabaaiaa!daa~P;jOXWXX#PXYWXY#PXdWXd#PXgWXhWXpWXrWXuWXvWXxWXyWXzWX!PWX!S#PX!T#PX!U#PX!V#PX%UWX%WWX%XWX%YWX%Y#PX%ZWX%[WX%^WX%_WX~OX%PO~P(vOX%PO~OY%XOd%WO!SmO!TmO!UmO!VmO%Y%TO~OX!RXg!RX%V!RX~P?kOX%ZO~Oj$|O~P*XOY!vOd!eO%W!dO%X!dOg{ap{ar{au{av{ax{ay{az{a!P{a%U{a%Y{a%Z{a%^{a%_{a%d{ah{a%[{aX{a%V{ab{ai{a!d{a~Og!Oap!Oar!Oau!Oav!Oax!Oay!Oaz!Oa%U!Oa%Y!Oa%Z!Oa%^!Oa%_!Oa%d!Oah!Oa%[!OaX!Oa%V!Oab!Oai!Oa!d!Oa~P;jO!SmO!TmO!UmO!VmO![nO!]nO!^nO!_nO!`nO!aoO!boO!dpO!fqOY%ea%R%ea%Y%ea%V%ea%d%eaX%ead%eag%ea~O%PQOY#fad#fag#fap#far#fau#fav#fax#fay#faz#fa!P#fa%U#fa%W#fa%X#fa%Y#fa%Z#fa%^#fa%_#fa%d#fah#fa%[#faX#fa%V#fab#fai#fa!d#fa~O%r%`O~Oi%aO~P}OY#dO!SmO!TmO!UmO!VmO%R!xO%Y#bO~OY%fOd%eOg%kO%[%jO!d%{X%d%{X~OjcO!dpO~PGuOg%kO!d%{X%d%{X~O!dpO%d%oO~OY!vO~OY%xO%R#WO%Y%vO~Oi&QO!wrO!xrO!zsO~P.nOj#oOY%bX!S%bX!T%bX!U%bX!V%bX![%bX!]%bX!^%bX!_%bX!`%bX!a%bX!b%bX!d%bX!f%bX%R%bX%Y%bX%d%bXX%bXd%bXg%bX%V%bX~O%R!xOi%oP~Oj#tO%V&WOY#Sa!S#Sa!T#Sa!U#Sa!V#Sa![#Sa!]#Sa!^#Sa!_#Sa!`#Sa!a#Sa!b#Sa!d#Sa!f#Sa%R#Sa%Y#Sa%d#SaX#Sad#Sag#Sa~Op!kOr!lOz!tO%Y!gOg#Zau#Zav#Zax#Zay#Za%U#Za%Z#Za%^#Za%_#Za%d#Zah#Za%[#ZaX#Za%V#Zab#Zai#Za!d#Za~P;jOjcO~OYWXdWXgWXhWXpWXrWXuWXvWXxWXyWXzWX!PWX%UWX%WWX%XWX%YWX%ZWX%[WX%^WX%_WX%dWX~O%V#yX~PN[O$S&^O~OYUOpWO|WO}WO!PXO!SmO!TmO!UmO!VmO!XtO#RuO#TvO#X]O#Y_O#[wO#^xO#_xO#ayO#ebO%PQO%YTO%ZTO%saO~O![nO!]nO!^nO!_nO!`nO!aoO!boO!dpO!fqO%R+`O%d&bO~P! {O%d&dO~P(vO%d&dO~O%d&eO~Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%V&fO%Y!gO%Z!jO%^!hO%_!iO~P;jOYUOjcOpWO|WO}WO!PXO#[wO#^xO#_xO#ayO#ebO#|zO$P{O$R|O$S}O$V!OO$X!PO$Z!QO$]!RO$_!SO%PQO%R$PO%YTO%ZTO%dfO%saO~O!S#va!T#va!U#va!V#va!X#va![#va!]#va!^#va!_#va!`#va!a#va!b#va!d#va!f#va!w#va!x#va!z#va#R#va#T#va#X#va#Y#va#c#va#w#va$v#vai#va#}#va~P!%kO${$^O$|$^O$}&jO~OP$gOY!vO$z!VO%v$fO~OP$gOY&mO#i&lO$z!VO%v$fO~OP&qO$z!VO%v&pO~Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%V&rO%Y!gO%Z!jO%^!hO%_!iO~P;jOb&sOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jO%dfiXfi~P(vOr!lO%Y!gOgoipoiuoivoixoiyoizoi%Uoi%Zoi%^oi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOgoipoiroiuoivoixoiyoizoi%Uoi%Yoi%Zoi%^oi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%Y!gO%Z!jOgoi%Uoi%^oi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%Y!gO%Z!jO%^!hOgoi%Uoi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOp!kOr!lOv!pOx!rOy!sOz!tO%Y!gO%Z!jOgoiuoi%Uoi%^oi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOp!kOr!lOx!rOy!sOz!tO%Y!gO%Z!jOgoiuoivoi%Uoi%^oi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOp!kOr!lOx!rOy!sOz!tO%Y!gOgoiuoivoi%Uoi%Zoi%^oi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOp!kOr!lOy!sOz!tO%Y!gOgoiuoivoixoi%Uoi%Zoi%^oi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOp!kOr!lOz!tO%Y!gOgoiuoivoixoiyoi%Uoi%Zoi%^oi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOp!kOr!lO%Y!gOgoiuoivoixoiyoizoi%Uoi%Zoi%^oi%_oi%doihoi%[oiXoi%Voiboiioi!doi~P;jOg&tOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iOX%SX~P;jOd&wOj$|O%W&xOi%]P~P*XOg&tOX%SX~OX&}O~OX!Rag!Ra%V!Ra~P?kOX!oXg!oX%V!oX~P?kOY%fOd'TOX!Rag!Ra%V!Ra~OYUOpWO|WO}WO!PXO!SmO!TmO!UmO!VmO#[wO#^xO#_xO#ayO#ebO%PQO%R!xO%ZTO%saO~Ob'XO%Y'VO~P!=fOY%XOd%WO%Y%TO%l'[OX%iP~P.nOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%Y!gO%Z!jO%^!hO%_!iOg]i%U]i%d]ih]i%[]iX]i%V]ib]ii]i!d]i~P;jO!SmO!TmO!UmO!VmO![nO!]nO!^nO!_nO!`nO!aoO!boO!dpO!fqO~OY%ei%R%ei%Y%ei%V%ei%d%eiX%eid%eig%ei~P!@tOY%fOd%eOg!kaj!ka!d!ka%[!ka%d!kaX!ka~Ob'eO!]'cO%Y'bO~P!=fOjcO!dpO~Og%kO!d%{a%d%{a~OX'mOY%fOd%eO~O!dpO%d'nO~OX'oO~OX'pOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOX'pO~OX'qOg'rOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOY%xO!SmO!TmO!UmO!VmO%R#WO%Y%vO~OY%fOd'wOg'xO%d%mX~O%d'{O~O%V%eX%d%eXX%eXd%eXg%eX~P/{OY(OO%R$lO%V(QO%Y'|O%d(RO~Oi(UO!wrO!xrO!zsO~P.nO%[(VOg#VXi#VX~Og(WOi%oX~Oi(YO~OX([O~OX(]O~Og(^Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jO#}(_OY#{ij#{ip#{i|#{i}#{i!P#{i!S#{i!T#{i!U#{i!V#{i!X#{i![#{i!]#{i!^#{i!_#{i!`#{i!a#{i!b#{i!d#{i!f#{i!w#{i!x#{i!z#{i#R#{i#T#{i#X#{i#Y#{i#[#{i#^#{i#_#{i#a#{i#c#{i#e#{i#w#{i#|#{i$P#{i$R#{i$S#{i$V#{i$X#{i$Z#{i$]#{i$_#{i$v#{i%P#{i%R#{i%Y#{i%Z#{i%d#{i%s#{ii#{i~O%d(aO~P(vO%d(dO~P*XO%d(aO~O!S#vi!T#vi!U#vi!V#vi!X#vi![#vi!]#vi!^#vi!_#vi!`#vi!a#vi!b#vi!d#vi!f#vi!w#vi!x#vi!z#vi#R#vi#T#vi#X#vi#Y#vi#c#vi#w#vi$v#vii#vi#}#vi~P!%kO%R!xO%l(hOX%xP~OP$gO#i(jO$z!VO%v$fO~O%v(kO~Og&tOX%Sa~Og(pOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iOi%]X~P;jOd&wO%W&xO%[(uO~Og(pOi%]X~Oi(vO~OX!Rig!Ri%V!Ri~P?kOY%fOd'TOX!Rig!Ri%V!Ri~OX!oag!oa%V!oa~P?kOY%fOd'TOX!oag!oa%V!oa~Ob(|O%Y(zO~P!=fOb(|Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOb(|O~P*XOX(}OY%fOd'TO~OY)QOd%WO%R!xO%Y)OOX!jXg!jX~Og)SOX%iX~OX)UO~Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%Y!gO%Z!jO%^!hO%_!iOg!Qq%U!Qq%d!Qqh!Qq%[!QqX!Qq%V!Qqb!Qqi!Qq!d!Qq~P;jOY%fOd%eOg!kij!ki!d!ki%[!ki%d!kiX!ki~Ob)VOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOb)VO~P*XOb)VO!]'cO%Y)XO~P!=fOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iOg#ui!d#ui%d#ui~P;jOY%fOd%eO%[%jOg$ta!d$ta%d$ta~O%d)ZO~O%PQO~O%d)]O~OY%fOd'wOg!{a%d!{aX!{a~Ob)bO!]'cO%Y)`O~P!=fOg'xO%d%ma~OX)eOY%fOd'wO~OY(OO!SmO!TmO!UmO!VmO%R$lO%Y'|O~OY%fOd)iOg)jO%V(QO%d)lO~OY(OO%R$lO%Y'|O~O%R!xOg$kXi$kX~Og(WOi%oa~Oj#tOY#Sq!S#Sq!T#Sq!U#Sq!V#Sq![#Sq!]#Sq!^#Sq!_#Sq!`#Sq!a#Sq!b#Sq!d#Sq!f#Sq%R#Sq%Y#Sq%d#SqX#Sqd#Sqg#Sq%V#Sq~Oj$|O|WO}WO#[wO#^xO#_xO#ayO#ebO%PQO%R!xO%saO~OY%pid%pig%pip%pir%piu%piv%pix%piy%piz%pi!P%pi%U%pi%W%pi%X%pi%Y%pi%Z%pi%^%pi%_%pi%d%pih%pi%[%piX%pi%V%pib%pii%pi!d%pi~P#0nO#c)tO~P4WO%d)xO~O%d)zO~P*XOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO%d)zO~P;jOX)|O~P*XO!S#vq!T#vq!U#vq!V#vq!X#vq![#vq!]#vq!^#vq!_#vq!`#vq!a#vq!b#vq!d#vq!f#vq!w#vq!x#vq!z#vq#R#vq#T#vq#X#vq#Y#vq#c#vq#w#vq$v#vqi#vq#}#vq~P!%kOg*OOX%xX~OX*QO~Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iOg[y%d[yh[y%[[yX[y%V[yb[yi[y!d[y~P;jOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iOX$oag$oa~P;jOd&wOj$|O%W&xOg$cXi$cX~P*XOg(pOi%]a~Ob*VOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOY%fOd'TOX!Rqg!Rq%V!Rq~OY%fOd'TOX!oig!oi%V!oi~Ob*YOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOb*YO~P*XOb*YO%Y*[O~P!=fOY)QOd%WO!SmO!TmO!UmO!VmO%R!xO%Y)OO~OX!oXg!oX~P#<tOY%fOd%eOX!jag!ja~OY)QOd%WO!XtO#RuO#TvO#X]O#Y_O%R+_O%Y)OO%l'[OX%iP~P!@tOY%fOd'TOX!jag!ja~O%l*^O~P.nOg)SOX%ia~Ob*`Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOb*`O~P*XOX*aO~OY%fOd'wOg!{i%d!{iX!{i~Ob*bOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOb*bO~P*XOb*bO!]'cO%Y*dO~P!=fOY%fOd'wOg$ja%d$ja~OY%fOd)iOg!ga%V!ga%d!gaX!ga~Ob*iO!]'cO%Y*gO~P!=fOg)jO%V(QO%d*lO~OX*nOY%fOd)iO~Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO%d!ua~P;jOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iOg#Vii#Vi~P;jO%V*oO~Og*pOX%qX~OX*rO~Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO%d*sO~P;jOX*uO~P*XOX*uO~P(vOX*uO~O%R!xO%l*xO~Og*OOX%xa~Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iOg$cai$ca~P;jOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iOgliili~P;jOb*zOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOb*zO~P*XOX!oag!oa~P#<tO%d*{O~Ob*|Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOb*|O~P*XOY%fOd)iOg!gi%V!gi%d!giX!gi~Ob*}Op!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOb*}O~P*XOb*}O!]'cO%Y+PO~P!=fOY%fOd)iOg$ia%V$ia%d$ia~O%d+QO~Og*pOX%qa~OX+VO~P*XOX+VO~P(vOX+VO~Ob+YOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iO~P;jOb+YO~P*XOp!kOr!lOu!oOv!pOx!rOy!sOz!tO%U!bO%Y!gO%Z!jO%^!hO%_!iOX#big#bi~P;jOX+ZO~P(vOX+ZO~Og#PX~P=bOYWXY#PXdWX!S#PX!T#PX!U#PX!V#PX![#PX!]#PX!^#PX!_#PX!`#PX!a#PX!b#PX!d#PX!f#PX%R#PX%Y#PX~OXWXX#PXd#PXg#PX~P$#mOS#h#k%P%s%R#l#jP$zprY#i%y#n#m#e#o#p%W~",goto:"!%}&OPP&P&_P&bPP(cPP+Q,`,`.V.V/|0ZP.VP2P4RPPPP4}5h5n5n,`P5sP6w7rPP8lPPP,`PP,`P9j;`PPPP;vP<b<iPPPPPPP<mP=WP=k=k=r>q>y>y>y>y?V?V?V?V=k=k?d?mPP?mP?w?w?w?w@P;vP;vP@s@|;vPP,`P,`PP,`PASP9jP,`,`PPPPPPPPPPAYA`A|BVB^PBmCQBmBmPPBmPBmPPBmBmPBmPBmPBmPBmPChCnCtC{DSEZEaEzFYF`FfFlFrGaGgGmGtHRHXHcHmHuPPPPPPPPPPPPIPISPPPPPPPMTPPMWNd! ^! dP! h=W=W! {!![!!a!!yP!#d!#j!#z!#}!$QPPP!$TP!$e!$hP!$k!$q!$u!%hQ!^Pc$d![!]$a$b$c$e&l&n(jR!^P$h`OTUWXclw|!P!T!b!e!f!k!l!m!n!o!p!q!r!s!t!v#R#a#h#k#l#x#{#|#}$R$S$]$|%W%Z%e%j&b&f&h&r&t&w'T'V'W'b'd'w(Q(V([(_(a(d(e(p(u(z({)X)`)a)i)z)|*[*d*g*h*o*s*u+P+V+ZS#]`#^Q$a!WR)['r$hVOTUWXclw|!P!T!b!e!f!k!l!m!n!o!p!q!r!s!t!v#R#a#h#k#l#x#{#|#}$R$S$]$|%W%Z%e%j&b&f&h&r&t&w'T'V'W'b'd'w(Q(V([(_(a(d(e(p(u(z({)X)`)a)i)z)|*[*d*g*h*o*s*u+P+V+Zd#ed#b#d%b%k&a'Z)O)Q*]S#ptuQ#uvQ$a!ZQ$b!WQ$c!XS&S#t(WQ(h&mR*x*O#[!cS!y!{#S#T#w$T$[$k$n$o$q$r$s$t$u$v$w$x$y$z${%[%r%t&Z&`&v'U'^'a'h(c(l(m(r(y)W)_)o)p)y){*S*W*Z*c*f*t+O+R+UQ%q#jR&l$b$ibOTUWXclw|!P!T!b!e!f!k!l!m!n!o!p!q!r!s!t!v#R#a#h#k#l#x#{#|#}$R$S$]$|%W%Z%e%j&b&f&h&r&t&w'T'V'W'b'd'w(Q(V([(_(a(d(e(p(u(z({)X)`)a)i)z)|*[*d*g*h*o*s*u+P+V+Z$iVOTUWXclw|!P!T!b!e!f!k!l!m!n!o!p!q!r!s!t!v#R#a#h#k#l#x#{#|#}$R$S$]$|%W%Z%e%j&b&f&h&r&t&w'T'V'W'b'd'w(Q(V([(_(a(d(e(p(u(z({)X)`)a)i)z)|*[*d*g*h*o*s*u+P+V+ZQ$m!dY(P%|'|(O)f)jR(s&x$gVOTUWXclw|!P!T!b!e!f!k!l!m!n!o!p!q!r!s!t!v#R#a#h#k#l#x#{#|#}$R$S$]$|%W%Z%e%j&b&f&h&r&t&w'T'V'W'b'd'w(Q(V(_(a(d(e(p(u(z({)X)`)a)i)z)|*[*d*g*h*o*s*u+P+V+Z$fVOTUWXclw|!P!T!b!e!f!k!l!m!n!o!p!q!r!s!t!v#R#a#h#k#l#x#{#|#}$R$S$]$|%W%Z%e%j&b&f&h&r&t&w'T'V'W'b'd'w(Q(V(_(a(d(e(p(u(z({)X)`)a)i)z)|*[*d*g*h*o*s*u+P+V+ZQ#}zQ$O{Q$R}R(`&^rgOcl|#a#h#}$R$]&f&h(_(e)|*u+V+ZU!|U#x#|Q$V!PQ$p!fQ&c$SQ)}(dQ*v)zR+W*sQ$}!vQ%]#RQ&{$|S'_%Z([Q'i%jQ(n&tQ*T(pR*X(uQ&{$|R*T(pV&y$|&z(p#T!lS!{#w$T$[$k$n$o$q$s$t$u$v$w$x$y$z${%[%r%t&Z&`&v'U'^'a'h(c(l(m(r(y)W)_)o)p)y){*S*W*Z*c*f*t+O+R+U!q!mS!{$T$[$k$n$o$t${%[%r%t&Z&`&v'U'^'a'h(c(l(m(r(y)W)_)o)p)y){*S*W*Z*c*f*t+O+R+U!o!nS!{$T$[$k$n$o${%[%r%t&Z&`&v'U'^'a'h(c(l(m(r(y)W)_)o)p)y){*S*W*Z*c*f*t+O+R+U!w!qS!{$T$[$k$n$o$s$t$u$v${%[%r%t&Z&`&v'U'^'a'h(c(l(m(r(y)W)_)o)p)y){*S*W*Z*c*f*t+O+R+U$gbOTUWXclw|!P!T!b!e!f!k!l!m!n!o!p!q!r!s!t!v#R#a#h#k#l#x#{#|#}$R$S$]$|%W%Z%e%j&b&f&h&r&t&w'T'V'W'b'd'w(Q(V(_(a(d(e(p(u(z({)X)`)a)i)z)|*[*d*g*h*o*s*u+P+V+ZQ#QUQ$}!vQ%s#kQ&X#xQ&Y#zQ(n&tT)t(^*p!R_OUZcls!v#O#a#k#m#o#x#z$S%X%f&P&W&t(^)Q)S*pS#qtuR&R#pT%}#o&PrYOZ[cl#V#X#a#o$S%X%^%f%{&P)Q)SX%g#c#g%h%nsYOZ[cl#V#X#a#o$S%X%^%f%{&P)Q)SZ(P%|'|(O)f)jf%U#P%R%S%T%X'O'Q'Z)O)Q*]^%d#c%c%m'`'j(b)P^'S%V'P'R'Y(w(x)RY'v%w'u'z)^)cZ)h'})g)n*e*jU'[%X%f)QR*^)Se#ed#b#d%b%k&a'Z)O)Q*]g%Y#P%R%S%T%X'O'Q'Z)O)Q*]Q(S%|Q)m'}R*m)kWjOcl#aT%}#o&P]%y#n%u%v%x't'x!Q_OUZcls!v#O#a#k#m#o#x#z$S%X%f&P&W&t(^)Q)S*p]%y#n%u%v%x't'xQ#vvQ&V#uR)s(ZQ&T#tR)q(WQ)u(^R+S*pXjOcl#arhOcl|#a#h#}$R$]&f&h(_(e)|*u+V+ZQ%i#cQ&]$OR'g%hWjOcl#aR&b$SS#fd&aR'k%kkiOcl|#a#h#}$R(_)|*u+V+ZshOcl|#a#h#}$R$]&f&h(_(e)|*u+V+ZreOcl|#a#h#}$R$]&f&h(_(e)|*u+V+ZR$Z!SQ$_!VR&i$_Q!`QR$i!`S&z$|(pR(t&zS(q&v&{R*U(q`#OU!v#k#x#z&t(^*pQ#msf%Q#O#m%S%b'O'Q'W't({)f*]Q%S#PQ%b#bQ'O%RQ'Q%TQ'W%WQ't%vQ({'TQ)f'|R*])OQ&P#oR(T&PfZOcl#a#o$S%X%f&P)Q)SU#UZ#X%^S#X[%{R%^#VQ'd%eU)Y'd)a*hQ)a'wR*h)iQ)T'[R*_)TQ)k'}R*k)kQ'y%wR)d'yQ(X&TR)r(X!Q^OUZcls!v#O#a#k#m#o#x#z$S%X%f&P&W&t(^)Q)S*pR#Z^Q*q)uR+T*qQ#^`R%_#^S&u${$}R(o&u`$e![!]$a$b$c&l&n(jR&o$eQ*P(hR*y*PQlOQ#acT#il#aQ%h#cQ%n#gT'f%h%nU%l#c#f(bR'l%lQ&h$]Q(e&fT(f&h(eR%O!vrSOcl|#a#h#}$R$]&f&h(_(e)|*u+V+Zd!yT'V'b(z)X)`*[*d*g+PU!{U#x#|Q#SWQ#TXQ#wwQ$T!PQ$[!TQ$k!bQ$n!eQ$o!fQ$q!kQ$r!lQ$s!mQ$t!nQ$u!oQ$v!pQ$w!qQ$x!rQ$y!sQ$z!tQ${!vQ%[#RQ%r#kQ%t#lQ&Z#{Q&`$SQ&v$|Q'U%WS'^%Z([Q'a%eQ'h%jQ(c&bQ(l&rQ(m&tQ(r&wS(y'T'WQ)W'dQ)_'wQ)o(QQ)p(VQ)y(aQ){(dQ*S(pQ*W(uQ*Z({Q*c)aQ*f)iQ*t)zQ+O*hQ+R*oR+U*sR&|$|rYOZ[cl#V#X#a#o$S%X%^%f%{&P)Q)S![!}Us!v#O#P#b#k#m#x#z%R%S%T%W%b%v&t'O'Q'T'W't'|(^({)O)f*]*p]'c%e'd'w)a)i*hW[Ocl#a`#PU!v#k#x#z&t(^*pQ#VZQ#nsQ%R#OQ%u#m^%{#o$S%X%f&P)Q)SR(Z&WQ#rtR#suT&O#o&PWdOcl#aS%|#o&PQ&a$SX'Z%X%f)Q)SQ'}%|Q)g'|Q)n(OQ*e)fR*j)jV']%X%f)QQ#cdS%c#b)OS%m#d)QS'`%b*]Q'j%kQ(b&aR)P'ZQ%V#PS'P%R%SS'R%T)OS'Y%X)QQ(w'OS(x'Q*]R)R'ZQ%z#nR's%uS%w#n%uQ'u%vQ'z%xQ)^'tR)c'xR&U#tR#ywR)v(^S$h![!]U&k$a$b$cS(g&l&nR*R(jR&n$cR(i&mXkOcl#aT#gd&aWjOcl#aQ$Q|Q%p#hQ&[#}Q&_$RQ)w(_Q*w)|Q+X*uQ+[+VR+]+ZjiOcl|#a#h#}$R(_)|*u+V+ZX&g$]&f&h(e",nodeNames:"\u26A0 LineComment BlockComment PreprocDirective #include String EscapeSequence SystemLibString Identifier ) ( ArgumentList ConditionalExpression AssignmentExpression CallExpression FieldExpression FieldIdentifier PointerExpression ] SubscriptExpression [ ParenthesizedExpression CommaExpression , UpdateOp } { InitializerList InitializerPair SubscriptDesignator FieldDesignator BinaryExpression ArithOp ArithOp ArithOp LogicOp LogicOp BitOp BitOp BitOp CompareOp CompareOp BitOp UnaryExpression LogicOp BitOp UpdateExpression UpdateOp CastExpression TypeDescriptor const volatile restrict _Atomic StructSpecifier struct FieldDeclarationList FieldDeclaration extern static auto register _Thread_local inline _Noreturn AttributeSpecifier __attribute__ AlignmentSpecifier _Alignas PointerDeclarator FunctionDeclarator ParameterList ParameterDeclaration PointerDeclarator FunctionDeclarator ArrayDeclarator ParenthesizedDeclarator AbstractPointerDeclarator AbstractFunctionDeclarator AbstractArrayDeclarator AbstractParenthesizedDeclarator ArrayDeclarator ParenthesizedDeclarator BitfieldClause StaticAssertDeclaration _Static_assert static_assert TypeDefinition typedef PointerDeclarator FunctionDeclarator ArrayDeclarator ParenthesizedDeclarator TypeIdentifier UnionSpecifier union EnumSpecifier enum EnumeratorList Enumerator SizedTypeSpecifier TypeSize PrimitiveType SizeofExpression sizeof AlignofExpression _Alignof __alignof__ GenericSelection _Generic GenericAssociation default CompoundLiteralExpression Number ConcatenatedString CharLiteral #define PreprocArg #if #ifdef #ifndef #else #endif #elif PreprocDirectiveName Program FunctionDefinition CompoundStatement Declaration InitDeclarator CaseStatement case LabeledStatement StatementIdentifier ExpressionStatement IfStatement if else SwitchStatement switch DoStatement do while WhileStatement ForStatement for ReturnStatement return BreakStatement break ContinueStatement continue GotoStatement goto",maxTerm:229,nodeProps:[["isolate",-4,1,2,5,7,""],["group",-20,5,8,12,13,14,15,17,19,21,31,43,46,48,103,105,108,112,113,114,115,"Expression",-6,54,93,94,96,100,102,"Type",-13,127,130,132,134,135,138,140,143,144,146,148,150,152,"Statement"],["openedBy",9,"(",18,"[",25,"{"],["closedBy",10,")",20,"]",26,"}"]],propSources:[Ih],skippedNodes:[0,1,2,3,4,7,116,117,118,119,120,121,122,123,124,154,170,171],repeatNodeCount:22,tokenData:"%#^#rR!UOX$eXY/]YZ5gZ]$e]^1g^p$epq/]qr5}rs8Vst9Qtu$euv!@Tvw!B]wx!Dhxy!Ecyz!Fdz{!Ge{|!Hl|}!Jz}!O!K{!O!P!N^!P!Q#+i!Q!R#0q!R![#3^![!]#;q!]!^#<r!^!_#=s!_!`$+T!`!a$,[!a!b$/n!b!c$e!c!n$0o!n!o$2V!o!w$0o!w!x$2V!x!}$0o!}#O$5_#O#P$6`#P#Q$Fo#Q#R$Gp#R#S$0o#S#T$e#T#i$0o#i#j$Hw#j#o$0o#o#p$K{#p#q$L|#q#r% [#r#s%!]#s;'S$e;'S;=`/V<%lO$e|$n[%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$ex%kY%tW#ipOY%dZw%dwx&Zx!P%d!P!Q(z!Q#O%d#O#P'b#P;'S%d;'S;=`*g<%lO%dp&`W#ipOY&ZZ!P&Z!P!Q&x!Q#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Zp&{TOz&Z{!P&Z!Q;'S&Z;'S;=`'[<%lO&Zp'_P;=`<%l&Zp'gZ#ipOY&ZYZ&ZZ]&Z]^(Y^!P&Z!P!Q&x!Q#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Zp(_X#ipOY&ZYZ&ZZ!P&Z!P!Q&x!Q#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Zx)P]%tWOY%dYZ&ZZw%dwx&Zxz%dz{)x{!P%d!P!Q)x!Q#O%d#O#P&Z#P;'S%d;'S;=`*g<%lO%dW)}U%tWOY)xZw)xx#O)x#P;'S)x;'S;=`*a<%lO)xW*dP;=`<%l)xx*jP;=`<%l%dt*tY%QS#ipOY*mZr*mrs&Zs!P*m!P!Q+d!Q#O*m#O#P'b#P;'S*m;'S;=`-P<%lO*mt+i]%QSOY*mYZ&ZZr*mrs&Zsz*mz{,b{!P*m!P!Q,b!Q#O*m#O#P&Z#P;'S*m;'S;=`-P<%lO*mS,gU%QSOY,bZr,bs#O,b#P;'S,b;'S;=`,y<%lO,bS,|P;=`<%l,bt-SP;=`<%l*m|-^_%tW%QSOY$eYZ&ZZr$ers%dsw$ewx*mxz$ez{.]{!P$e!P!Q.]!Q#O$e#O#P&Z#P;'S$e;'S;=`/V<%lO$e[.dX%tW%QSOY.]Zr.]rs)xsw.]wx,bx#O.]#P;'S.];'S;=`/P<%lO.][/SP;=`<%l.]|/YP;=`<%l$e#r/jb%tW%QS$y!d#ip%y!QOX$eXY/]YZ0rZ]$e]^1g^p$epq/]qr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P2z#P;'S$e;'S;=`/V<%lO$e!d0wT$y!dXY0rYZ0r]^0rpq0r#O#P1W!d1ZQYZ0r]^1a!d1dPYZ0r#b1rb%tW%QS$y!d#ipOX$eXY1gYZ0rZ]$e]^1g^p$epq1gqr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P2z#P;'S$e;'S;=`/V<%lO$e#U3PZ#ipOY&ZYZ3rZ]&Z]^4u^!P&Z!P!Q&x!Q#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Z#U3y^$y!d#ipOX&ZXY3rYZ0rZ]&Z]^3r^p&Zpq3rq!P&Z!P!Q&x!Q#O&Z#O#P2z#P;'S&Z;'S;=`'[<%lO&Z#U4zX#ipOY&ZYZ3rZ!P&Z!P!Q&x!Q#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Z#f5nT%v!Q$y!dXY0rYZ0r]^0rpq0r#O#P1W!O6Y^|Q%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`7U!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O7a[xQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!`8bY%tW%OS%Pb#ipOY%dZw%dwx&Zx!P%d!P!Q(z!Q#O%d#O#P'b#P;'S%d;'S;=`*g<%lO%d#b9Zh%tW%QS#ipOX$eXY9QZp$epq9Qqr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!c$e!c!}:u!}#O$e#O#P'b#P#T$e#T#W:u#W#X<]#X#YEw#Y#]:u#]#^!'{#^#o:u#o;'S$e;'S;=`/V<%lO$e#b;Qc%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#o:u#o;'S$e;'S;=`/V<%lO$e#b<he%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#X:u#X#Y=y#Y#o:u#o;'S$e;'S;=`/V<%lO$e#b>Ue%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#Y:u#Y#Z?g#Z#o:u#o;'S$e;'S;=`/V<%lO$e#b?re%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#]:u#]#^AT#^#o:u#o;'S$e;'S;=`/V<%lO$e#bA`e%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#b:u#b#cBq#c#o:u#o;'S$e;'S;=`/V<%lO$e#bB|e%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#X:u#X#YD_#Y#o:u#o;'S$e;'S;=`/V<%lO$e#bDlc%tW%QS#h!d#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#o:u#o;'S$e;'S;=`/V<%lO$e#bFSg%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#`:u#`#aGk#a#b:u#b#c! k#c#o:u#o;'S$e;'S;=`/V<%lO$e#bGvg%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#]:u#]#^I_#^#g:u#g#hLe#h#o:u#o;'S$e;'S;=`/V<%lO$e#bIje%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#Y:u#Y#ZJ{#Z#o:u#o;'S$e;'S;=`/V<%lO$e#bKYc%tW%QS#ip#o!d#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#o:u#o;'S$e;'S;=`/V<%lO$e#bLpe%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#X:u#X#YNR#Y#o:u#o;'S$e;'S;=`/V<%lO$e#bN`c%tW%QS#ip#m!d#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#o:u#o;'S$e;'S;=`/V<%lO$e#b! ve%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#W:u#W#X!#X#X#o:u#o;'S$e;'S;=`/V<%lO$e#b!#de%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#]:u#]#^!$u#^#o:u#o;'S$e;'S;=`/V<%lO$e#b!%Qe%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#Y:u#Y#Z!&c#Z#o:u#o;'S$e;'S;=`/V<%lO$e#b!&pc%tW%QS#ip#n!d#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#o:u#o;'S$e;'S;=`/V<%lO$e#b!(Wg%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#Y:u#Y#Z!)o#Z#b:u#b#c!6i#c#o:u#o;'S$e;'S;=`/V<%lO$e#b!)|g%tW%QS#j!d#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#W:u#W#X!+e#X#b:u#b#c!0X#c#o:u#o;'S$e;'S;=`/V<%lO$e#b!+pe%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#X:u#X#Y!-R#Y#o:u#o;'S$e;'S;=`/V<%lO$e#b!-^e%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#Y:u#Y#Z!.o#Z#o:u#o;'S$e;'S;=`/V<%lO$e#b!.|c%tW%QS#k!d#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#o:u#o;'S$e;'S;=`/V<%lO$e#b!0de%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#W:u#W#X!1u#X#o:u#o;'S$e;'S;=`/V<%lO$e#b!2Qe%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#X:u#X#Y!3c#Y#o:u#o;'S$e;'S;=`/V<%lO$e#b!3ne%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#Y:u#Y#Z!5P#Z#o:u#o;'S$e;'S;=`/V<%lO$e#b!5^c%tW%QS#l!d#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#o:u#o;'S$e;'S;=`/V<%lO$e#b!6te%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#V:u#V#W!8V#W#o:u#o;'S$e;'S;=`/V<%lO$e#b!8be%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#`:u#`#a!9s#a#o:u#o;'S$e;'S;=`/V<%lO$e#b!:Oe%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#i:u#i#j!;a#j#o:u#o;'S$e;'S;=`/V<%lO$e#b!;le%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#W:u#W#X!<}#X#o:u#o;'S$e;'S;=`/V<%lO$e#b!=Ye%tW%QS#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#X:u#X#Y!>k#Y#o:u#o;'S$e;'S;=`/V<%lO$e#b!>xc%tW%QSS!d#ip#p!dOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![:u![!c$e!c!}:u!}#O$e#O#P'b#P#R$e#R#S:u#S#T$e#T#o:u#o;'S$e;'S;=`/V<%lO$e!O!@`^%tW%QSrQ#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`!A[!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O!Ag[hQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O!Bh_%ZQ%tW%QS#ipOY$eZr$ers%dsv$evw!Cgwx*mx!P$e!P!Q-V!Q!_$e!_!`!A[!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O!Cr[%^Q%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O!DsY%rW%QS%sQ#ipOY*mZr*mrs&Zs!P*m!P!Q+d!Q#O*m#O#P'b#P;'S*m;'S;=`-P<%lO*m#r!En[%tW%QSY#f#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e#b!Fo[X!d%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e#b!Gp^%Y!d%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`!A[!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O!Hw`%tW%QSpQ#ipOY$eZr$ers%dsw$ewx*mx{$e{|!Iy|!P$e!P!Q-V!Q!_$e!_!`!A[!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O!JU[%tW!PQ%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O!KV[gQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O!LWa%tW%QSpQ#ipOY$eZr$ers%dsw$ewx*mx}$e}!O!Iy!O!P$e!P!Q-V!Q!_$e!_!`!A[!`!a!M]!a#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O!Mh[%XQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e#b!Ni^%tW%QS#ip%WQOY$eZr$ers%dsw$ewx*mx!O$e!O!P# e!P!Q-V!Q![##h![#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e#`# n]%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!O$e!O!P#!g!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e#`#!r[%l!b%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O##sk%tW%QS#ip#eQOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![##h![!g$e!g!h#%h!h!i#)r!i!n$e!n!o#)r!o!w$e!w!x#)r!x#O$e#O#P'b#P#X$e#X#Y#%h#Y#Z#)r#Z#`$e#`#a#)r#a#i$e#i#j#)r#j;'S$e;'S;=`/V<%lO$e!O#%qa%tW%QS#ipOY$eZr$ers%dsw$ewx*mx{$e{|#&v|}$e}!O#&v!O!P$e!P!Q-V!Q![#'x![#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O#'P]%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![#'x![#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O#(Ti%tW%QS#ip#eQOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![#'x![!h$e!h!i#)r!i!n$e!n!o#)r!o!w$e!w!x#)r!x#O$e#O#P'b#P#Y$e#Y#Z#)r#Z#`$e#`#a#)r#a#i$e#i#j#)r#j;'S$e;'S;=`/V<%lO$e!O#)}h%tW%QS#ip#eQOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!h$e!h!i#)r!i!n$e!n!o#)r!o!w$e!w!x#)r!x#O$e#O#P'b#P#Y$e#Y#Z#)r#Z#`$e#`#a#)r#a#i$e#i#j#)r#j;'S$e;'S;=`/V<%lO$e#r#+ra%tW%QSrQOY$eYZ&ZZr$ers%dsw$ewx*mxz$ez{#,w{!P$e!P!Q#-m!Q!_$e!_!`!A[!`#O$e#O#P&Z#P;'S$e;'S;=`/V<%lO$e#r#-QX%tW%QS$z#fOY.]Zr.]rs)xsw.]wx,bx#O.]#P;'S.];'S;=`/P<%lO.]#r#-vY%tW%QSP#fOY#-mZr#-mrs#.fsw#-mwx#/tx#O#-m#O#P#/V#P;'S#-m;'S;=`#0k<%lO#-m#n#.mW%tWP#fOY#.fZw#.fwx#/Vx#O#.f#O#P#/V#P;'S#.f;'S;=`#/n<%lO#.f#f#/[SP#fOY#/VZ;'S#/V;'S;=`#/h<%lO#/V#f#/kP;=`<%l#/V#n#/qP;=`<%l#.f#j#/{W%QSP#fOY#/tZr#/trs#/Vs#O#/t#O#P#/V#P;'S#/t;'S;=`#0e<%lO#/t#j#0hP;=`<%l#/t#r#0nP;=`<%l#-m!O#0|t%tW%QS#ip#eQOY$eZr$ers%dsw$ewx*mx!O$e!O!P##h!P!Q-V!Q![#3^![!d$e!d!e#5a!e!g$e!g!h#%h!h!i#)r!i!n$e!n!o#)r!o!w$e!w!x#)r!x!z$e!z!{#8c!{#O$e#O#P'b#P#U$e#U#V#5a#V#X$e#X#Y#%h#Y#Z#)r#Z#`$e#`#a#)r#a#i$e#i#j#)r#j#l$e#l#m#8c#m;'S$e;'S;=`/V<%lO$e!O#3il%tW%QS#ip#eQOY$eZr$ers%dsw$ewx*mx!O$e!O!P##h!P!Q-V!Q![#3^![!g$e!g!h#%h!h!i#)r!i!n$e!n!o#)r!o!w$e!w!x#)r!x#O$e#O#P'b#P#X$e#X#Y#%h#Y#Z#)r#Z#`$e#`#a#)r#a#i$e#i#j#)r#j;'S$e;'S;=`/V<%lO$e!O#5j^%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!R#6f!R!S#6f!S#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O#6qj%tW%QS#ip#eQOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!R#6f!R!S#6f!S!h$e!h!i#)r!i!n$e!n!o#)r!o!w$e!w!x#)r!x#O$e#O#P'b#P#Y$e#Y#Z#)r#Z#`$e#`#a#)r#a#i$e#i#j#)r#j;'S$e;'S;=`/V<%lO$e!O#8la%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![#9q![!c$e!c!i#9q!i#O$e#O#P'b#P#T$e#T#Z#9q#Z;'S$e;'S;=`/V<%lO$e!O#9|k%tW%QS#ip#eQOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![#9q![!c$e!c!h#9q!h!i#9q!i!n$e!n!o#)r!o!w$e!w!x#)r!x#O$e#O#P'b#P#T$e#T#Y#9q#Y#Z#9q#Z#`$e#`#a#)r#a#i$e#i#j#)r#j;'S$e;'S;=`/V<%lO$e!O#;|[%VQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O#<}[%dQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!`#>O`yQ%tW%QS#ipOY#?QZr#?Qrs#@Vsw#?Qwx#Lyx!P#?Q!P!Q$#_!Q!^#?Q!^!_$'k!_!`$)|!`!a$&d!a#O#?Q#O#P#Gq#P;'S#?Q;'S;=`$'e<%lO#?Q!^#?Z^%tW%QS#ipOY#?QZr#?Qrs#@Vsw#?Qwx#Lyx!P#?Q!P!Q$#_!Q!`#?Q!`!a$&d!a#O#?Q#O#P#Gq#P;'S#?Q;'S;=`$'e<%lO#?Q!Y#@^[%tW#ipOY#@VZw#@Vwx#ASx!P#@V!P!Q#Ib!Q!`#@V!`!a#Kz!a#O#@V#O#P#Gq#P;'S#@V;'S;=`#Ls<%lO#@V!Q#AXY#ipOY#ASZ!P#AS!P!Q#Aw!Q!`#AS!`!a#Dg!a#O#AS#O#P#Gq#P;'S#AS;'S;=`#I[<%lO#AS!Q#Az]OY#ASYZ&ZZz#ASz{#Bs{!P#AS!P!Q#Bs!Q!`#AS!`!a#Dg!a#O#AS#O#P#EW#P;'S#AS;'S;=`#I[<%lO#AS`#BvWOY#BsZ!`#Bs!`!a#C`!a#O#Bs#O#P#Ce#P;'S#Bs;'S;=`#Da<%lO#Bs`#CeOV``#ChRO;'S#Bs;'S;=`#Cq;=`O#Bs`#CtXOY#BsZ!`#Bs!`!a#C`!a#O#Bs#O#P#Ce#P;'S#Bs;'S;=`#Da;=`<%l#Bs<%lO#Bs`#DdP;=`<%l#Bs!Q#DnWV`#ipOY&ZZ!P&Z!P!Q&x!Q#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Z!Q#E]Y#ipOY#ASYZ#BsZ!P#AS!P!Q#Aw!Q#O#AS#O#P#E{#P;'S#AS;'S;=`#Hl;=`<%l#Bs<%lO#AS!Q#FQ]#ipOY#ASYZ&ZZ]#AS]^#Fy^!P#AS!P!Q#Aw!Q!`#AS!`!a#Dg!a#O#AS#O#P#Gq#P;'S#AS;'S;=`#I[<%lO#AS!Q#GOZ#ipOY#ASYZ&ZZ!P#AS!P!Q#Aw!Q!`#AS!`!a#Dg!a#O#AS#O#P#Gq#P;'S#AS;'S;=`#I[<%lO#AS!Q#Gv[#ipOY#ASYZ#ASZ]#AS]^#Fy^!P#AS!P!Q#Aw!Q#O#AS#O#P#E{#P;'S#AS;'S;=`#Hl;=`<%l#Bs<%lO#AS!Q#HoXOY#BsZ!`#Bs!`!a#C`!a#O#Bs#O#P#Ce#P;'S#Bs;'S;=`#Da;=`<%l#AS<%lO#Bs!Q#I_P;=`<%l#AS!Y#Ig_%tWOY#@VYZ&ZZw#@Vwx#ASxz#@Vz{#Jf{!P#@V!P!Q#Jf!Q!`#@V!`!a#Kz!a#O#@V#O#P#EW#P;'S#@V;'S;=`#Ls<%lO#@Vh#JkY%tWOY#JfZw#Jfwx#Bsx!`#Jf!`!a#KZ!a#O#Jf#O#P#Ce#P;'S#Jf;'S;=`#Kt<%lO#Jfh#KbUV`%tWOY)xZw)xx#O)x#P;'S)x;'S;=`*a<%lO)xh#KwP;=`<%l#Jf!Y#LTYV`%tW#ipOY%dZw%dwx&Zx!P%d!P!Q(z!Q#O%d#O#P'b#P;'S%d;'S;=`*g<%lO%d!Y#LvP;=`<%l#@V!U#MQ[%QS#ipOY#LyZr#Lyrs#ASs!P#Ly!P!Q#Mv!Q!`#Ly!`!a$!`!a#O#Ly#O#P#Gq#P;'S#Ly;'S;=`$#X<%lO#Ly!U#M{_%QSOY#LyYZ&ZZr#Lyrs#ASsz#Lyz{#Nz{!P#Ly!P!Q#Nz!Q!`#Ly!`!a$!`!a#O#Ly#O#P#EW#P;'S#Ly;'S;=`$#X<%lO#Lyd$ PY%QSOY#NzZr#Nzrs#Bss!`#Nz!`!a$ o!a#O#Nz#O#P#Ce#P;'S#Nz;'S;=`$!Y<%lO#Nzd$ vUV`%QSOY,bZr,bs#O,b#P;'S,b;'S;=`,y<%lO,bd$!]P;=`<%l#Nz!U$!iYV`%QS#ipOY*mZr*mrs&Zs!P*m!P!Q+d!Q#O*m#O#P'b#P;'S*m;'S;=`-P<%lO*m!U$#[P;=`<%l#Ly!^$#fa%tW%QSOY#?QYZ&ZZr#?Qrs#@Vsw#?Qwx#Lyxz#?Qz{$$k{!P#?Q!P!Q$$k!Q!`#?Q!`!a$&d!a#O#?Q#O#P#EW#P;'S#?Q;'S;=`$'e<%lO#?Ql$$r[%tW%QSOY$$kZr$$krs#Jfsw$$kwx#Nzx!`$$k!`!a$%h!a#O$$k#O#P#Ce#P;'S$$k;'S;=`$&^<%lO$$kl$%qXV`%tW%QSOY.]Zr.]rs)xsw.]wx,bx#O.]#P;'S.];'S;=`/P<%lO.]l$&aP;=`<%l$$k!^$&o[V`%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!^$'hP;=`<%l#?Q!`$'v_zQ%tW%QS#ipOY#?QZr#?Qrs#@Vsw#?Qwx#Lyx!P#?Q!P!Q$#_!Q!_#?Q!_!`$(u!`!a$&d!a#O#?Q#O#P#Gq#P;'S#?Q;'S;=`$'e<%lO#?Q!`$)Q^hQ%tW%QS#ipOY#?QZr#?Qrs#@Vsw#?Qwx#Lyx!P#?Q!P!Q$#_!Q!`#?Q!`!a$&d!a#O#?Q#O#P#Gq#P;'S#?Q;'S;=`$'e<%lO#?Q!`$*X^yQ%tW%QS#ipOY#?QZr#?Qrs#@Vsw#?Qwx#Lyx!P#?Q!P!Q$#_!Q!`#?Q!`!a$&d!a#O#?Q#O#P#Gq#P;'S#?Q;'S;=`$'e<%lO#?Q!O$+`^%[Q%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`7U!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O$,g_yQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`$-f!`!a$.g!a#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O$-q[yQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O$.r^zQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`!A[!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O$/y[%UQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e#r$0zc%tW%QS%R!t#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![$0o![!c$e!c!}$0o!}#O$e#O#P'b#P#R$e#R#S$0o#S#T$e#T#o$0o#o;'S$e;'S;=`/V<%lO$e#r$2bc%tW%QS%R!t#ipOY$eZr$ers$3msw$ewx$4fx!P$e!P!Q-V!Q![$0o![!c$e!c!}$0o!}#O$e#O#P'b#P#R$e#R#S$0o#S#T$e#T#o$0o#o;'S$e;'S;=`/V<%lO$e![$3vY%tW%Pb#ipOY%dZw%dwx&Zx!P%d!P!Q(z!Q#O%d#O#P'b#P;'S%d;'S;=`*g<%lO%dv$4oY%QS%sQ#ipOY*mZr*mrs&Zs!P*m!P!Q+d!Q#O*m#O#P'b#P;'S*m;'S;=`-P<%lO*m#b$5j[d!d%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e#b$6eb#ipOY$7mYZ$8^Z]$7m]^$9c^!P$7m!P!Q$:V!Q![$:k![!w$7m!w!x$<R!x#O$7m#O#P$Cq#P#i$7m#i#j$?y#j#l$7m#l#m$Dk#m;'S$7m;'S;=`$Fi<%lO$7m|$7tWU[#ipOY&ZZ!P&Z!P!Q&x!Q#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Z#b$8g^U[$y!d#ipOX&ZXY3rYZ0rZ]&Z]^3r^p&Zpq3rq!P&Z!P!Q&x!Q#O&Z#O#P2z#P;'S&Z;'S;=`'[<%lO&Z#b$9jXU[#ipOY&ZYZ3rZ!P&Z!P!Q&x!Q#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Z|$:[TU[Oz&Z{!P&Z!Q;'S&Z;'S;=`'[<%lO&Z|$:rXU[#ipOY&ZZ!P&Z!P!Q&x!Q![$;_![#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Z|$;fXU[#ipOY&ZZ!P&Z!P!Q&x!Q![$7m![#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Z|$<W]#ipOY&ZZ!P&Z!P!Q&x!Q![$=P![!c&Z!c!i$=P!i#O&Z#O#P'b#P#T&Z#T#Z$=P#Z;'S&Z;'S;=`'[<%lO&Z|$=U]#ipOY&ZZ!P&Z!P!Q&x!Q![$=}![!c&Z!c!i$=}!i#O&Z#O#P'b#P#T&Z#T#Z$=}#Z;'S&Z;'S;=`'[<%lO&Z|$>S]#ipOY&ZZ!P&Z!P!Q&x!Q![$>{![!c&Z!c!i$>{!i#O&Z#O#P'b#P#T&Z#T#Z$>{#Z;'S&Z;'S;=`'[<%lO&Z|$?Q]#ipOY&ZZ!P&Z!P!Q&x!Q![$?y![!c&Z!c!i$?y!i#O&Z#O#P'b#P#T&Z#T#Z$?y#Z;'S&Z;'S;=`'[<%lO&Z|$@O]#ipOY&ZZ!P&Z!P!Q&x!Q![$@w![!c&Z!c!i$@w!i#O&Z#O#P'b#P#T&Z#T#Z$@w#Z;'S&Z;'S;=`'[<%lO&Z|$@|]#ipOY&ZZ!P&Z!P!Q&x!Q![$Au![!c&Z!c!i$Au!i#O&Z#O#P'b#P#T&Z#T#Z$Au#Z;'S&Z;'S;=`'[<%lO&Z|$Az]#ipOY&ZZ!P&Z!P!Q&x!Q![$Bs![!c&Z!c!i$Bs!i#O&Z#O#P'b#P#T&Z#T#Z$Bs#Z;'S&Z;'S;=`'[<%lO&Z|$Bx]#ipOY&ZZ!P&Z!P!Q&x!Q![$7m![!c&Z!c!i$7m!i#O&Z#O#P'b#P#T&Z#T#Z$7m#Z;'S&Z;'S;=`'[<%lO&Z|$CxZU[#ipOY&ZYZ&ZZ]&Z]^(Y^!P&Z!P!Q&x!Q#O&Z#O#P'b#P;'S&Z;'S;=`'[<%lO&Z|$Dp]#ipOY&ZZ!P&Z!P!Q&x!Q![$Ei![!c&Z!c!i$Ei!i#O&Z#O#P'b#P#T&Z#T#Z$Ei#Z;'S&Z;'S;=`'[<%lO&Z|$Ep]U[#ipOY&ZZ!P&Z!P!Q&x!Q![$Ei![!c&Z!c!i$Ei!i#O&Z#O#P'b#P#T&Z#T#Z$Ei#Z;'S&Z;'S;=`'[<%lO&Z|$FlP;=`<%l$7m!O$Fz[bQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O$G{^vQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`!A[!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e#r$ISe%tW%QS%R!t#ipOY$eZr$ers$3msw$ewx$4fx!P$e!P!Q-V!Q!Y$0o!Y!Z$Je!Z![$0o![!c$e!c!}$0o!}#O$e#O#P'b#P#R$e#R#S$0o#S#T$e#T#o$0o#o;'S$e;'S;=`/V<%lO$e#r$Jpc%tW%QS%R!t#ipOY$eZr$ers$3msw$ewx*mx!P$e!P!Q-V!Q![$0o![!c$e!c!}$0o!}#O$e#O#P'b#P#R$e#R#S$0o#S#T$e#T#o$0o#o;'S$e;'S;=`/V<%lO$e!O$LW[jQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O$MX`uQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`!A[!`#O$e#O#P'b#P#p$e#p#q$NZ#q;'S$e;'S;=`/V<%lO$e!O$Nf[%_Q%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O% g[iQ%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e!O%!h[}Q%tW%QS#ipOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e",tokenizers:[1,2,3,4,5,6,new oi("j~RQYZXz{^~^O$|~~aP!P!Qd~iO$}~~",25,181)],topRules:{Program:[0,125]},dynamicPrecedences:{14:1,69:1,73:1,76:-10,77:1,82:-10,89:1,92:-10,216:1},specialized:[{term:187,get:n=>KL[n]||-1}],tokenPrec:6541});var JL=pP.configure({props:[Ih,En.add({CompoundStatement:Go({closing:"}"}),IfStatement:n=>{if(n.matchCh("else"))return n.continue()},ForStatement:Gn({except:/^\s*\}/}),SwitchStatement:Gn({except:/^\s*\}/}),DoStatement:Gn({except:/^\s*\}/}),WhileStatement:Gn({except:/^\s*\}/})}),dn.add({CompoundStatement:Ft,FieldDeclarationList:Ft,EnumeratorList:Ft,ParameterList:Ft,ArgumentList:Ft,InitializerList:Ft,BlockComment:Ft})]}),mP=Jt.define({parser:JL,languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(\}|\)$|case |default:)$/,closeBrackets:{brackets:["(","[","{","'",'"']},wordChars:"_"}});var eD=Go({closing:"}"}),gP=/^\s*(case\b|default\b|\})/,tD=new Set(["{","BlockComment","LineComment","PreprocDirective"]);function nD(n){let e=n.state.doc,t=e.lineAt(n.node.from).number;for(let r=n.node.childBefore(n.pos);r;r=r.prevSibling){if(tD.has(r.name)||r.type.isError)continue;let i=e.lineAt(r.from);if(i.number<=t)break;if(/^\s*$/.test(i.text.slice(0,r.from-i.from)))return n.lineIndent(r.from)}return null}function Xh(n){if(!/^\s*\}/.test(n.textAfter)){let e=nD(n);if(e!=null)return e}return eD(n)}var rD=mP.configure({props:[En.add({IfStatement:Gn({except:/^\s*({|else\b)/}),CompoundStatement:n=>{var e;if(((e=n.node.parent)==null?void 0:e.name)=="SwitchStatement"&&!gP.test(n.textAfter)){let t=n.node.childBefore(n.pos);if((t==null?void 0:t.name)=="CaseStatement")return n.lineIndent(t.from)+n.unit}return Xh(n)},FieldDeclarationList:Xh,EnumeratorList:Xh,InitializerList:Xh,CaseStatement:n=>n.baseIndent+(gP.test(n.textAfter)?0:n.unit)})]});function cO(){return new Ye(rD)}var OP=["adc","and","asl","bcc","bcs","beq","bit","bmi","bne","bpl","brk","bvc","bvs","clc","cld","cli","clv","cmp","cpx","cpy","dec","dex","dey","eor","inc","inx","iny","jmp","jsr","lda","ldx","ldy","lsr","nop","ora","pha","php","pla","plp","rol","ror","rti","rts","sbc","sec","sed","sei","sta","stx","sty","tax","tay","tsx","txa","txs","tya"],bP=["slo","aso","rla","sre","lse","rra","sax","aax","lax","dcp","dcm","isc","isb","anc","alr","asr","arr","sbx","axs","las","lar"];var yP=["a","x","y"],SP=["org","rorg","rend","equ","eqm","end","seg","seg.u","align","dc","dc.b","dc.w","dc.l","dc.s","ds","ds.b","ds.w","ds.l","ds.s","dv","dv.b","dv.w","dv.l","dv.s","byte","word","long","subroutine","processor","include","incbin","incdir","echo","set","list","err"];var vP=["if","else","endif","ifconst","ifnconst"];var wP=["ld","push","pop","inc","dec","add","adc","sub","sbc","and","or","xor","cp","ret","jp","jr","call","rst","nop","halt","di","ei","im","ex","exx","neg","cpl","ccf","scf","rlca","rla","rrca","rra","rlc","rl","rrc","rr","sla","sra","srl","sl1","bit","set","res","out","in","djnz","rld","rrd","ldi","ldir","ldd","lddr","cpi","cpir","cpd","cpdr","ini","inir","ind","indr","outi","otir","outd","otdr","daa","reti","retn","pfix","pfiy","mov","mvi","lxi","lda","sta","lhld","shld","ldax","stax","adi","aci","sui","sbi","sbb","ana","ani","xra","xri","ora","ori","cmp","inr","dcr","inx","dcx","dad","cma","stc","cmc","ral","rar","jmp","jnz","jz","jnc","jc","jpo","jpe","jm","cnz","cz","cnc","cc","cpo","cpe","cm","rnz","rz","rnc","rc","rpo","rpe","rp","rm","pchl","sphl","xthl","xchg","hlt"];var xP=["a","b","c","d","e","h","l","i","r","af","bc","de","hl","ix","iy","sp","pc","psw","ixh","ixl","iyh","iyl","xh","xl","yh","yl","hx","lx","hy","ly"],PP=["nz","z","nc","c","po","pe","p","m"],kP=["org","equ","defl","end","phase","dephase","defb","db","byte","ascii","text","defm","dm","defw","dw","word","defd","dword","def3","d3","defs","ds","block","rmem","dc","incbin","include","read","maclib","import","public","global","entry","extern","ext","extrn","assert","list","nolist","title","name","eject","space","jrpromote","jperror","irp","irpc","local","sett","tstate","setocf","rsym","wsym","aseg","cseg","dseg","common","comment","pragma","subttl","z80","8080","z180","min","max"];var $P=["if","else","endif","ifdef","ifndef","cond","endc","ifeq","ifne","iflt","ifgt"];function dO(n){return n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102}var gD=new Set(OP),OD=new Set(bP),bD=new Set(yP),AP=new Set(SP),CP={mac:9,macro:9,endm:10,mexit:13,repeat:11,repend:12},_P=new Set(vP),yD=new Set(["on","off"]);function hO(n){let e=n.startsWith(".")?n.slice(1):n;return AP.has(e.toLowerCase())?7:-1}function uO(n){var t;let e=n.startsWith(".")?n.slice(1):n;return(t=CP[e.toLowerCase()])!=null?t:-1}function fO(n){let e=n.startsWith(".")?n.slice(1):n;return _P.has(e.toLowerCase())?13:-1}function pO(n){if(!n.startsWith(".")||n.length<=1)return-1;let e=n.slice(1).toLowerCase();return AP.has(e)||e in CP||_P.has(e)?-1:8}function mO(n){let e=n.toLowerCase();return gD.has(e)?5:OD.has(e)?6:-1}function gO(n){return bD.has(n.toLowerCase())?2:-1}function OO(n){return yD.has(n.toLowerCase())?3:-1}function bO(n){return n.toLowerCase()==="hex"?4:-1}var EP=new Rt(n=>{if(!dO(n.peek(0))||!dO(n.peek(1)))return;let e=2;for(;dO(n.peek(e));)e++;e%2===0&&n.acceptToken(1,e)});var SD={__proto__:null,".":122},RP=Rn.deserialize({version:14,states:"*hQYQQOOO}QQO'#CmO#QQQO'#CoO#XQQO'#DWO$nQQO'#DZO%OQQO'#D_O%VQRO'#DaOOQO'#DY'#DYOOQO'#Cl'#ClO%_QQO'#ClO%xQQO'#ClOOQO'#Db'#DbQYQQOOO&PQQO,59XOOQO'#C}'#C}OOQO'#DO'#DOO!SQQO'#CzOOQO'#DR'#DROOQO'#DP'#DPO&sQSO,59ZOOQO'#Cp'#CpO!SQQO'#CpO&zQQO,59ZOOQO,59r,59rO'RQSO'#D[O!SQQO'#CpO!SQQO'#D[OOQO'#D['#D[OOQO,59u,59uO']QSO'#DcO(SQQO,59yOOQP'#Dd'#DdO(ZQRO,59{OOQO,59W,59WO(cQQO,59WOOQO-E7`-E7`O(hQQO1G.sO(oQSO,59fOOQO'#Ct'#CtOOQO'#Cu'#CuO!SQQO,59[O!SQQO,59[O!SQQO,59[O!SQQO,59[O)lQQO1G.uO)sQSO,59[O)zQQO1G.uO)lQQO1G.uO*PQQO,59vO*UQSO,59[O*`QSO,59vOOQO-E7a-E7aOOQP-E7b-E7bOOQO1G.r1G.rO*gQQO7+$_O*lQQO7+$_O,WQSO1G.vO,_QSO1G.vO,fQSO1G.vOOQO1G.v1G.vO-|QQO7+$aO.RQQO7+$aOOQO7+$a7+$aOOQO1G/b1G/bO.YQQO1G/bOOQO<<Gy<<GyO._QQO<<GyOOQO<<G{<<G{O.dQQO<<G{O.iQQO7+$|OOQOAN=eAN=eOOQOAN=gAN=gOOQO<<Hh<<Hh",stateData:".u~O!ZOS^OS~OSUOTSOUSOVTOWROXPOZQO]VObRO!STO![WO~Ob]O~ORbOWbObbOk`Ol`Oo`Op`OtbOvbOwbOxeO!]^O!^_O!_aO~O![fO~P!SO{gOSzXTzXUzXVzX]zX!SzX![zX~ORbOWbObbOk`Ol`Oo`Op`OtbOvbOwbO!]^O!^_O!_aO~OQkOxiO!PjO![}X~P#sO![!RX~P!SOPoO![!TX~O![qO~OSUOTSOUSOVTO]VO!STO~O![qO~P%dO![tO~OexOfyOgzOj{Ok{Ol{Om{O!]vO!^wO~O![|O~P&UO[!OO~PYO!Q!QO![!OX~P&UOR!VXW!VXb!VXo!VXp!VXt!VXv!VXw!VXx!VX![!VX!_!VX~P&UO![!Ra~P!SOPoO![!Ta~O![!VO~OY!WO~PYO![na!QnaRnaWnabnaonapnatnavnawnaxna!_nayna~P&UO[!^O~PYOy!]O~P&UO![!`O~OQ!aO~Oy!]O!Q!bO~P&UO![!Oa~P&UO![!cO~OY!dO~PYOgzOj{Ok{Ol{Om{O!]vO!^wOedi![di!QdiRdiWdibdiodipditdivdiwdixdi!_diydi~OfyO~P*sOfdi~P*sOj{Ok{Ol{Om{Oedifdigdi![di!]di!^di!QdiRdiWdibdiodipditdivdiwdixdi!_diydi~O![!eO~O[!fO~PYOQ!gO~O![!hO~O![!iO~Oy!jO~Ovwtmbt~",goto:"&O!XPPPPPPPPPPPPPPPP!Y!dP!d!nPPP#b#bPPPP#mPP#{#{#mP$ZPPPP$iP$s%Q%]PP%QP%Q%`%r%xaZO[ft|!P!X!_aWO[ft|!P!X!_QcQQhSSmTnQu`Q}eQ!RiQ!SjQ!YxQ!ZyQ![zR!]{czchmu}!R!S!Y!ZidQST`eijnxyz{i`QST`eijnxyz{ibQST`eijnxyz{aYO[ft|!P!X!_`XO[ft|!P!X!_RrYcVOY[ft|!P!X!_RlSQ[OWs[!P!X!_Q!PfQ!XtR!_|QnTR!TnQpUR!Up",nodeNames:"\u26A0 HexByte Register OnOff HexOp Opcode IllegalOpcode PseudoOp LocalIdentifier Mac MacEnd Repeat RepEnd ControlOp Comment Program Line MacroDef Identifier RepeatBlock Expression LogicOp BitOp CompareOp BinaryLt BinaryGt ArithOp Plus Minus Percent UnaryExpression Not Tilde UnaryLt UnaryGt Value Number CurrentAddress String Char ( ) Label Colon Statement Instruction Operand ImmediatePrefix Comma Directive Equals HexDirective",maxTerm:61,skippedNodes:[0,14],repeatNodeCount:3,tokenData:")m~RoXY#SYZ#_]^#_pq#Sqr#jrs#wst$itu$nuv%Yvw%pwx%}xy&qyz&vz{&{{|'Q|}'V}!O'[!O!P'a!P!Q&{!Q!['u![!]'}!]!^(S!^!_(k!_!`({!`!a)T!c!}'a#Q#R(v#R#S'a#T#o'a#p#q)`#r#s)h~#XQ!Z~XY#Spq#S~#dQ![~YZ#_]^#_~#oPo~!_!`#rQ#wOgQ~#zUOY#wZr#wrs$^s;'S#w;'S;=`$c<%lO#w~$cOv~~$fP;=`<%l#w~$nO!P~~$qR!Q![$z!c!i$z#T#Z$z~%PRt~!Q![$z!c!i$z#T#Z$z~%_Qm~!Q!R%e!R!S%e~%jQt~!Q!R%e!R!S%e~%uPf~vw%x~%}Oe~~&QSOY&^Z;'S&^;'S;=`&k<%lO&^~&cPw~wx&f~&kOw~~&nP;=`<%l&^~&vOx~~&{Oy~~'QOj~~'VOk~~'[O!Q~~'aOl~~'fTb~!O!P'a!Q!['a!c!}'a#R#S'a#T#o'a~'zPt~!Q!['u~(SO{~~(XS^~OY(SZ;'S(S;'S;=`(e<%lO(S~(hP;=`<%l(S~(pQ!]~!^!_(v!_!`#r~({Of~R)QP!SP!_!`#r~)YQ!^~!_!`#r!`!a(v~)ePf~#p#q%x~)mOp~",tokenizers:[EP,0,1],topRules:{Program:[0,15]},specialized:[{term:18,get:(n,e)=>gO(n,e)<<1,external:gO},{term:18,get:(n,e)=>OO(n,e)<<1,external:OO},{term:18,get:(n,e)=>bO(n,e)<<1,external:bO},{term:18,get:(n,e)=>mO(n,e)<<1,external:mO},{term:18,get:(n,e)=>hO(n,e)<<1,external:hO},{term:18,get:(n,e)=>pO(n,e)<<1,external:pO},{term:18,get:(n,e)=>uO(n,e)<<1,external:uO},{term:18,get:(n,e)=>fO(n,e)<<1,external:fO},{term:18,get:n=>SD[n]||-1}],tokenPrec:628});var vD=Jt.define({parser:RP.configure({props:[dn.add({MacroDef:Ft,RepeatBlock:Ft}),Kt({Identifier:g.variableName,LocalIdentifier:g.local(g.variableName),CurrentAddress:g.self,PseudoOp:g.keyword,Equals:g.keyword,Opcode:g.standard(g.keyword),IllegalOpcode:g.special(g.keyword),Label:g.labelName,String:g.string,Char:g.character,Number:g.number,OnOff:g.bool,Register:g.standard(g.modifier),ImmediatePrefix:g.constant(g.modifier),Comment:g.comment,ArithOp:g.arithmeticOperator,Plus:g.arithmeticOperator,Minus:g.arithmeticOperator,Percent:g.arithmeticOperator,BitOp:g.bitwiseOperator,Tilde:g.bitwiseOperator,LogicOp:g.logicOperator,Not:g.logicOperator,CompareOp:g.compareOperator,BinaryLt:g.compareOperator,BinaryGt:g.compareOperator,UnaryLt:g.arithmeticOperator,UnaryGt:g.arithmeticOperator,HexOp:g.keyword,HexByte:g.number,Mac:g.definitionKeyword,MacEnd:g.definitionKeyword,Repeat:g.controlKeyword,RepEnd:g.controlKeyword,"MacroDef/Identifier":g.macroName,ControlOp:g.controlKeyword,Comma:g.separator,Colon:g.separator,"( )":g.paren})]}),languageData:{commentTokens:{line:";"}}});function MP(){return new Ye(vD)}var AD=new Set(kP),CD={macro:2,endm:3,exitm:5,rept:4},_D=new Set($P),ED=new Set(wP),RD=new Set(xP),MD=new Set(PP);function yO(n){let e=n.startsWith(".")?n.slice(1):n;return AD.has(e.toLowerCase())?1:-1}function SO(n){var t;let e=n.startsWith(".")?n.slice(1):n;return(t=CD[e.toLowerCase()])!=null?t:-1}function vO(n){let e=n.startsWith(".")?n.slice(1):n;return _D.has(e.toLowerCase())?5:-1}function wO(n){return ED.has(n.toLowerCase())?6:-1}function xO(n){return RD.has(n.toLowerCase())?7:-1}function PO(n){return MD.has(n.toLowerCase())?8:-1}var DP=Rn.deserialize({version:14,states:"*[QYQPOOO!lQPO'#ChO!sQPO'#DPO#XQPO'#DSO#`QPO'#DVO#gQPO'#DWOOQO'#DR'#DROOQO'#Cg'#CgO#oQPO'#CgO#tQPO'#CgOOQO'#DX'#DXQYQPOOOOQO'#Cv'#CvOOQO'#Cw'#CwOqQPO'#CsOOQO'#Cx'#CxO$tQPO,59SOOQO'#Ci'#CiOqQPO'#CiO${QPO,59SO%SQPO,59kO%hQPO'#DTOOQO,59n,59nO%rQPO'#DZO&fQPO,59qO&mQPO,59rO&tQPO,59rOOQO,59R,59RO&|QPO,59ROOQO-E7V-E7VO'RQPO,59_OOQO'#Cm'#CmOOQO'#Cn'#CnOqQPO,59TOqQPO,59TOqQPO,59TOqQPO,59TO'{QPO1G.nO(SQPO,59TO(ZQPO1G.nO'{QPO1G.nOOQO1G/V1G/VOqQPO'#DYO(`QPO,59oOOQO-E7X-E7XOOQO1G/^1G/^O(hQPO1G/^O(oQPO'#D[O(tQPO1G/^O(hQPO1G/^OOQO1G.m1G.mO*^QPO1G.oO*eQPO1G.oO*lQPO1G.oOOQO1G.o1G.oO,PQPO7+$YO,UQPO7+$YOOQO7+$Y7+$YO,]QPO,59tOOQO-E7W-E7WOOQO7+$x7+$xOOQO,59v,59vOOQO-E7Y-E7YO,gQPO7+$xO,gQPO7+$xOOQO<<Gt<<GtO,nQPO<<GtOOQO<<Hd<<HdO,sQPO<<HdOOQOAN=`AN=`OOQOAN>OAN>O",stateData:"-R~O!ROSXOS~OPSOQTOSPOTUOUROnQO!UVO~OV_OW_Od^Oe^Oh^Oi^Om_On_Oo_Op_OqbO!S[O!T]O~O!UcO~PqOtdOPsXQsXTsXUsX!UsX~O!UvX~PqO!UyX~PqOnjO!UiO~O!UkO~OPSOQTOTUOURO!UkO~O^qO_rO`sOctOdtOetOftO!SoO!TpO~O!UuO~P$VORwO~PYOtyOPsaQsaTsaUsa!Usa~OxzO!UwX~P$VOV}XW}Xh}Xi}Xm}Xn}Xo}Xp}Xq}X!U}X~P$VO!Uya~PqOR}O~PYOx!PO!U!RO~O!U!SO~O!UgaxgaVgaWgahgaigamgangaogapgaqgarga~P$VOR!XO~PYOr!WO~P$VO!U!ZO~OxzO!Uwa~OR!^O~PYOn!_O~Ox!PO!U!aO~O`sOctOdtOetOftO!SoO!TpO^]i!U]ix]iV]iW]ih]ii]im]in]io]ip]iq]ir]i~O_rO~P(|O_]i~P(|OctOdtOetOftO^]i_]i`]i!S]i!T]i!U]ix]iV]iW]ih]ii]im]in]io]ip]iq]ir]i~O!U!cO~OR!dO~PYOx|a!U|a~P$VOR!eO~PYO!U!gO~OR!hO~PYOopmfnm~",goto:"&U!PPPPPPPPPPPP!Q!`!nPPP#_#_PPPP#iPP#v#v#iPPPPPP$TP$c$t%TP$t$t%W%r%x&OiYOZciux!O!R!Y!a!b!fiVOZciux!O!R!Y!a!b!fQ`PQeRSgShQn^QvbQ!TqQ!UrQ!VsQ!WtR![zas`egnv!T!U![gaPRS^bhqrstzg^PRS^bhqrstziXOZciux!O!R!Y!a!b!fhWOZciux!O!R!Y!a!b!fRlXkUOXZciux!O!R!Y!a!b!fRfRQZO[mZx!O!Y!b!fQxcQ!OiQ!YuQ!b!RR!f!aQ{eR!]{QhSR|hQ!QjR!`!Q",nodeNames:"\u26A0 PseudoOp Mac MacEnd Repeat ControlOp Opcode Register Condition Comment Program Line RepeatBlock Expression LogicOp BitOp CompareOp BinaryLt BinaryGt ArithOp Plus Minus Percent UnaryExpression Not Tilde UnaryLt UnaryGt Value Number Identifier String Char ( ) Label Colon Statement Instruction Operand Comma Directive MacroDef",maxTerm:52,skippedNodes:[0,9],repeatNodeCount:4,tokenData:"/Q~RrXY#]YZ#h]^#hpq#]qr#srs$Qtu$ruv%^vw%cwx%pxy&gyz&lz{&q{|&v|}&{}!O'Q!O!P'V!P!Q&q!Q!R'n!R!S)X!S!Y*l!Y![+m![!]-d!]!^-i!^!_.Q!_!`.b!`!a.h!a!b'V!c!}'V#Q#R.]#R#S'V#T#o'V#p#q.s#r#s.{~#bQ!R~XY#]pq#]~#mQ!U~YZ#h]^#h~#xPh~!_!`#{~$QO`~~$TUOY$QZr$Qrs$gs;'S$Q;'S;=`$l<%lO$Q~$lOo~~$oP;=`<%l$Q~$uR!Q![%O!c!i%O#T#Z%O~%TRm~!Q![%O!c!i%O#T#Z%O~%cOf~~%hP_~vw%k~%pO^~~%sTOY&SZw&Sx;'S&S;'S;=`&a<%lO&S~&XPp~wx&[~&aOp~~&dP;=`<%l&S~&lOq~~&qOr~~&vOc~~&{Od~~'QOx~~'VOe~~'[Un~!O!P'V!Q!['V!a!b'V!c!}'V#R#S'V#T#o'V~'sfm~!Q!R)X!R!S)X!S!Y*l!Y![+m!c!d,_!d!e,v!e!f,_!f!g,v!g!i,_!j!k,q!q!r-[!s!t,q!z!{$r#T#U,_#U#V,v#V#W,_#W#X,v#X#Z,_#[#],q#c#d-[#e#f,q#l#m$r~)^dm~!Q!R)X!R!S)X!S!Y*l!Y![+m!c!d,_!d!e,v!e!f,_!f!g,v!g!i,_!j!k,q!q!r,q!s!t,q#T#U,_#U#V,v#V#W,_#W#X,v#X#Z,_#[#],q#c#d,q#e#f,q~*q^m~!Q!Y*l!Y![+m!c!f,_!f!g,v!g!i,_!j!k,q!q!r,q!s!t,q#T#W,_#W#X,v#X#Z,_#[#],q#c#d,q#e#f,q~+rXm~!Q![+m!c!f,_!f!g,v!g!i,_!j!k,q#T#W,_#W#X,v#X#Z,_#[#],q~,bT!Q![,_!c!i,_!j!k,q#T#Z,_#[#],q~,vOm~~,{Tm~!Q![,_!c!i,_!j!k,q#T#Z,_#[#],q~-aPm~!Q!Y-[~-iOt~~-nSX~OY-iZ;'S-i;'S;=`-z<%lO-i~-}P;=`<%l-i~.VQ!S~!^!_.]!_!`#{~.bO_~~.eP!_!`#{~.mQ!T~!_!`#{!`!a.]~.xP_~#p#q%k~/QOi~",tokenizers:[0],topRules:{Program:[0,10]},specialized:[{term:30,get:(n,e)=>yO(n,e)<<1,external:yO},{term:30,get:(n,e)=>SO(n,e)<<1,external:SO},{term:30,get:(n,e)=>vO(n,e)<<1,external:vO},{term:30,get:(n,e)=>wO(n,e)<<1,external:wO},{term:30,get:(n,e)=>xO(n,e)<<1,external:xO},{term:30,get:(n,e)=>PO(n,e)<<1,external:PO}],tokenPrec:548});var LD=Jt.define({parser:DP.configure({props:[dn.add({MacroDef:Ft,RepeatBlock:Ft}),Kt({Identifier:g.variableName,PseudoOp:g.keyword,Opcode:g.standard(g.keyword),Register:g.standard(g.modifier),Condition:g.standard(g.modifier),Label:g.labelName,String:g.string,Char:g.character,Number:g.number,Comment:g.comment,ArithOp:g.arithmeticOperator,Plus:g.arithmeticOperator,Minus:g.arithmeticOperator,Percent:g.arithmeticOperator,BitOp:g.bitwiseOperator,Tilde:g.bitwiseOperator,LogicOp:g.logicOperator,Not:g.logicOperator,CompareOp:g.compareOperator,BinaryLt:g.compareOperator,BinaryGt:g.compareOperator,UnaryLt:g.arithmeticOperator,UnaryGt:g.arithmeticOperator,Mac:g.definitionKeyword,MacEnd:g.definitionKeyword,Repeat:g.controlKeyword,"MacroDef/Identifier":g.macroName,ControlOp:g.controlKeyword,Comma:g.separator,Colon:g.separator,"( )":g.paren})]}),languageData:{commentTokens:{line:";"}}});function ZP(){return new Ye(LD)}function DD(){function n(d){return new Set(d.split(" "))}let e=n("u8 u16 u24 u32 u64 i8 i16 i24 i32 i64 bool iexpr vardata prgdata constdata chrdata varinitdata do else for if switch while in import embed bank config goto return by break continue zero carry negative overflow decimal nointerrupt push pop nop halt stop bit cmp var let const namespace func inline struct union enum typealias sizeof as compile_if"),t=n("u8 u16 u24 u32 u64 i8 i16 i24 i32 i64 bool iexpr"),r=n("true false null"),i=/[+\-*&%=<>!?|\/]/,s=/[\w$_\xa1-\uffff]/,o=/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.[\d_]+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i;function a(d,h){let u=d.next();if(u==="#")return d.eatWhile(/\S/),"meta";if(u==='"'||u==="'")return h.tokenize=l(u),h.tokenize(d,h);if(/[\[\]{}(),;:\.]/.test(u))return null;if(/[\d\.]/.test(u)){if(d.backUp(1),d.match(o))return"number";d.next()}if(u==="/"){if(d.eat("*"))return h.tokenize=c,c(d,h);if(d.eat("/"))return d.skipToEnd(),"comment"}if(i.test(u)){for(;!d.match(/^\/[\/*]/,!1)&&d.eat(i););return"operator"}if(s.test(u)){d.eatWhile(s);let f=d.current();if(e.has(f))return"keyword";if(t.has(f))return"typeName";if(r.has(f))return"atom";let m=["in","bank","namespace","func","struct","union","enum","typealias"];return h.lastToken&&m.includes(h.lastToken)?"definition.name":"variableName"}return null}function l(d){return function(h,u){let f=!1,m;for(;(m=h.next())!=null;){if(m===d&&!f){u.tokenize=null;break}f=!f&&m==="\\"}return"string"}}function c(d,h){let u=!1,f;for(;f=d.next();){if(f==="/"&&u){h.tokenize=null;break}u=f==="*"}return"comment"}return{startState(){return{tokenize:null,lastToken:null}},token(d,h){if(d.eatSpace())return null;let u=(h.tokenize||a)(d,h);return u==="keyword"?h.lastToken=d.current():u&&u!=="comment"&&(h.lastToken=null),u}}}var kO=DD();function IP(){return new Ye(zt.define(kO))}function $O(n){let e={},t=n.split(" ");for(let r=0;r<t.length;++r)e[t[r]]=!0;return e}function ZD(n={}){let e=n.statementIndentUnit||3,t=n.dontAlignCalls,r=n.compilerDirectivesUseRegularIndentation,i=n.noIndentKeywords||[],s=n.multiLineStrings,o=$O("accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor"),a=/[\+\-\*\/!~&|^%=?:<>]/,l=/[\[\]{}()]/,c=/\d[0-9_]*/,d=/\d*\s*'s?d\s*\d[0-9_]*/i,h=/\d*\s*'s?b\s*[xz01][xz01_]*/i,u=/\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i,f=/\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i,m=/(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i,O=/^((`?\w+)|[)}\]])/,S=/[)}\]]/,x=new RegExp("^(`(?:ifdef|ifndef|elsif|else|endif|undef|undefineall|define|include|begin_keywords|celldefine|default|nettype|end_keywords|endcelldefine|line|nounconnected_drive|pragma|resetall|timescale|unconnected_drive))\\b"),D=/^(`(?:ifdef|ifndef|elsif|else))\b/,M=/^(`(?:elsif|else|endif))\b/,Z,k,w=$O("case checker class clocking config function generate interface module package primitive program property specify sequence table task"),R={};for(let B in w)R[B]="end"+B;R.begin="end",R.casex="endcase",R.casez="endcase",R.do="while",R.fork="join;join_any;join_none",R.covergroup="endgroup",R.macro_begin="macro_end";for(let B of i)R[B]&&(R[B]=void 0);let X=$O("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while extern typedef");function W(B,ue){let G=B.peek(),Pe;if(/[,;:\.]/.test(G))return Z=B.next(),null;if(l.test(G))return Z=B.next(),"bracket";if(G=="`")if(B.next(),B.eatWhile(/[\w\$_]/)){let Qe=B.current();if(k=Qe,Qe.startsWith("`uvm_")&&Qe.endsWith("_begin")){let Ge=k.substr(0,k.length-5)+"end";R[Qe]=Ge,Z="newblock"}else{B.eatSpace(),B.peek()=="("&&(Z="newmacro");let Ge=B.current();B.backUp(Ge.length-Qe.length)}return"keyword.control"}else return null;if(G=="$")return B.next(),B.eatWhile(/[\w\$_]/)?"meta":null;if(G=="#")return B.next(),B.eatWhile(/[\d_.]/),"keyword.control";if(G=="@")return B.next(),B.eatWhile(/[@]/),"keyword.control";if(G=='"')return B.next(),ue.tokenize=ne(G),ue.tokenize(B,ue);if(G=="/"){if(B.next(),B.eat("*"))return ue.tokenize=de,de(B,ue);if(B.eat("/"))return B.skipToEnd(),"comment";B.backUp(1)}if(B.match(m)||B.match(d)||B.match(h)||B.match(u)||B.match(f)||B.match(c)||B.match(m))return"number";if(B.eatWhile(a))return Z=B.current(),"meta";if(B.eatWhile(/[\w\$_]/)){let Qe=B.current();return o[Qe]?(R[Qe]&&(Z="newblock",Qe==="fork"&&(B.eatSpace(),B.peek()==";"&&(Z="newstatement"),B.backUp(B.current().length-Qe.length))),X[Qe]&&(Z="newstatement"),k=Qe,"keyword"):"variableName"}return B.next(),null}function ne(B){return function(ue,G){let Pe=!1,Qe,Ge=!1;for(;(Qe=ue.next())!=null;){if(Qe==B&&!Pe){Ge=!0;break}Pe=!Pe&&Qe=="\\"}return(Ge||!(Pe||s))&&(G.tokenize=W),"string"}}function de(B,ue){let G=!1,Pe;for(;Pe=B.next();){if(Pe=="/"&&G){ue.tokenize=W;break}G=Pe=="*"}return"comment"}function q(B,ue,G,Pe){let Ge={indented:B.indented,column:ue,type:G,scopekind:Pe||"",align:null,prev:B.context};return B.context=Ge}function pe(B){let ue=B.context.type;return(ue==")"||ue=="]"||ue=="}")&&(B.indented=B.context.indented),B.context=B.context.prev}function ve(B,ue){if(B==ue)return!0;{let G=ue.split(";");for(let Pe in G)if(B==G[Pe])return!0;return!1}}function we(B,ue){return B==null?!1:B.scopekind===ue?!0:we(B.prev,ue)}return{startState(){return{tokenize:null,context:{indented:0,column:0,type:"top",scopekind:"top",align:!1,prev:null},indented:0,compilerDirectiveIndented:0,startOfLine:!0}},token(B,ue){let G=ue.context;if(B.sol()&&(G.align==null&&(G.align=!1),ue.indented=B.indentation(),ue.startOfLine=!0),B.eatSpace())return null;Z=null,k=null;let Pe=(ue.tokenize||W)(B,ue);if(Pe=="comment"||Pe=="meta"||Pe=="variableName")return(Z==="="||Z==="<=")&&!we(G,"assignment")&&(q(ue,B.column()+Z.length,"assignment","assignment"),G.align==null&&(G.align=!0)),Pe;G.align==null&&(G.align=!0);let Qe=G.type=="assignment"&&S.test(Z)&&G.prev&&G.prev.type===Z;if(Z==G.type||Qe){if(Qe&&(G=pe(ue)),G=pe(ue),Z==")"){if(G&&G.type==="macro")for(G=pe(ue);G&&(G.type=="statement"||G.type=="assignment");)G=pe(ue)}else if(Z=="}"&&G&&G.type==="statement")for(;G&&G.type=="statement";)G=pe(ue)}else if((Z==";"||Z==",")&&(G.type=="statement"||G.type=="assignment")||G.type&&ve(k,G.type))for(G=pe(ue);G&&(G.type=="statement"||G.type=="assignment");)G=pe(ue);else if(Z=="{")q(ue,B.column(),"}");else if(Z=="[")q(ue,B.column(),"]");else if(Z=="(")q(ue,B.column(),")");else if(G&&G.type=="endcase"&&Z==":")q(ue,B.column(),"statement","case");else if(Z=="newstatement")q(ue,B.column(),"statement",k);else if(Z=="newblock"){if(!(k=="function"&&G&&(G.type=="statement"||G.type=="endgroup"))){if(!(k=="task"&&G&&G.type=="statement")){if(!(k=="class"&&G&&G.type=="statement")){let Ge=R[k];q(ue,B.column(),Ge,k)}}}}else(Z=="newmacro"||k&&k.match(x))&&(Z=="newmacro"&&q(ue,B.column(),"macro","macro"),k&&k.match(M)&&(ue.compilerDirectiveIndented-=e),k&&k.match(D)&&(ue.compilerDirectiveIndented+=e));return ue.startOfLine=!1,Pe},blankLine(B){}}}var QO=ZD();function XP(){return new Ye(zt.define(QO))}function ID(){let n="box|break|continue|do|else|fonton|fontoff|for|give|if|jump|new_line|objectloop|print|print_ret|remove|return|rfalse|rtrue|spaces|string|styleroman|stylebold|styleunderline|stylereverse|stylefixed|switch|until|while|has|hasnt|with|in|notin|ofclass|provides|or".split("|"),e="Abbreviate|Array|Attribute|Class|Constant|Default|End|Endif|Extend|Global|Ifdef|Ifndef|Ifnot|Iftrue|Iffalse|Import|Include|Link|Lowstring|Message|Object|Property|Release|Replace|Serial|Switches|Statuslinescore|Statuslinetime|System_file|Verb|Zcharacter".toLowerCase().split("|"),t="add_to_scope|after|article|articles|before|cant_go|capacity|d_to|daemon|describe|description|door_dir|door_to|e_to|each_turn|found_in|grammar|in_to|initial|inside_description|invent|life|list_together|name|n_to|ne_to|number|nw_to|orders|out_to|parse_name|plural|react_after|react_before|s_to|se_to|short_name|short_name_indef|sw_to|time_left|time_out|u_to|w_to|when_closed|when_open|when_on|when_off|with_key".split("|"),r="absent|animate|clothing|concealed|container|door|edible|enterable|female|general|light|lockable|locked|male|moved|neuter|open|openable|pluralname|proper|scenery|scored|static|supporter|switchable|talkable|transparent|visited|workflag|worn".split("|"),i="Pronouns|Quit|Restart|Restore|Save|Verify|ScriptOn|ScriptOff|NotifyOn|NotifyOff|Places|Objects|Score|FullScore|Version|LMode1|LMode2|LMode3|Look|Examine|Search|Inv|InvTall|InvWide|Take|Drop|Remove|PutOn|Insert|LetGo|Receive|Empty|EmptyT|Remove|Transfer|Go|Enter|GetOff|GoIn|Exit|Unlock|Lock|SwitchOn|SwitchOff|Open|Close|Disrobe|Wear|Eat|Wait|LookUnder|Listen|Taste|Touch|Pull|Push|Wave|Turn|PushDir|ThrowAt|ThrownAt|JumpOver|Tie|Drink|Fill|Attack|Swing|Blow|Rub|Set|SetTo|Buy|Climb|Squeeze|Burn|Dig|Cut|Consult|Tell|Answer|Ask|Give|Show|AskFor|WakeOther|Kiss|Sleep|Sing|WaveHands|Swim|Sorry|Strong|Mild|Jump|Think|Smell|Pray|VagueGo|Yes|No|Wake|Answer|Ask|Attack|Give|Kiss|Order|Show|Tell|ThrowAt|WakeOther".toLowerCase().split("|"),s=new Map;e.forEach(d=>s.set(d,"keyword")),n.forEach(d=>s.set(d,"keyword")),t.forEach(d=>s.set(d,"keyword")),r.forEach(d=>s.set(d,"keyword")),i.forEach(d=>s.set(d,"keyword"));let o=/^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;function a(d,h){if(d.eatSpace())return null;let u;if(d.eatWhile(/\w/)){u=d.current();let f=u.toLowerCase(),m=s.get(f);return m||(o.test(u)||d.match(o)?"number":"name")}else{if(d.eat("!"))return d.skipToEnd(),"comment";if(d.match(/\]|\[|\}|\{/))return"bracket";if(d.match(/<<|>>/))return"bracket";if(d.match(/[#]+\w+/))return"number";if(d.eat('"'))return h.tokenize=l,l(d,h);if(d.eat("'"))return c(d,h);if(d.eat("$")){if(d.eatWhile(/[^;]/i))return"number"}else d.next()}return null}function l(d,h){let u;for(;u=d.next();)if(u=='"'){h.tokenize=a;break}return"string"}function c(d,h){let u;for(;u=d.next();)if(u=="'"){h.tokenize=a;break}return"meta"}return{startState(){return{context:0,tokenize:a}},token(d,h){return h.tokenize(d,h)}}}var TO=ID();function zP(){return new Ye(zt.define(TO))}function XD(){let n=new Set(["if","then","elseif","else","endif","or","select","stopping","at random","purely at random","then purely at random","cycling","collect","into","collect words","determine object","from words","matching all of","stoppable","stop","just","exhaust","repeat forever","now","global variable","generate","interface","fail"]);function e(t,r){if(t.eatSpace())return null;let i=t.peek();return t.match("%%")?(t.skipToEnd(),"comment"):t.match(/\\./)?"escape":i=="("||i==")"?(t.next(),r.depth+=i=="("?1:-1,r.depth<0&&(r.depth=0),"bracket"):i=="["||i=="]"||i=="{"||i=="}"?(t.next(),"bracket"):t.match(/\$[a-zA-Z0-9_]*/)?"variableName":t.match(/#[a-zA-Z0-9_+-]+/)?"atom":t.match(/@[a-zA-Z0-9_-]+/)?"className":t.match(/-?\d+\b/)?"number":t.match(/[~*|]/)?"operator":t.match(/[^\s()\[\]{}$#@~*|\\%]+/)?r.depth>0&&n.has(t.current().toLowerCase())?"keyword":r.depth>0?null:"string":(t.next(),null)}return{startState(){return{depth:0}},token:e,languageData:{commentTokens:{line:"%%"}}}}var AO=XD();function WP(){return new Ye(zt.define(AO))}var zD={startState(){return{tokenize:CO,currentIndent:0,doInCurrentLine:!1}},token(n,e){return n.sol()&&(e.doInCurrentLine=!1),e.tokenize(n,e)},indent(n,e,t){let r=t.unit;return/^\s*\d/.test(e)?0:/^(?:next|end|wend|else|to|then)\b/i.test(e)?(n.currentIndent-1)*r:n.currentIndent*r},languageData:{commentTokens:{line:"'"}}};function ls(n){return new RegExp("^(("+n.join(")|(")+"))\\b","i")}var WD=/^[\+\-\*/%&\\|\^~<>!]/,ND=/^[\(\)\[\]\{\}@,:`=;\.]/,BD=/^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(\/\/)|(\*\*))/,VD=/^((\+=)|(\-=)|(\*=)|(%=)|(\/=)|(&=)|(\|=)|(\^=))/,FD=/^(((\/\/)=)|(>>=)|(<<=)|(\*\*=))/,YD=/^[_A-Za-z][_A-Za-z0-9]*/,jD=["if","for","while"],UD=["to","then","else"],qD=["next","end","wend"],GD=["and","or","not","xor","eqv","imp","mod"],HD=["BASE","DATA","DEF","DIM","GO","GOSUB","GOTO","INPUT","LET","ON","OPTION","PRINT","RANDOMIZE","READ","REM","RESTORE","RETURN","STEP","STOP","SUB","CALL","CHANGE","CONVERT","CLEAR","DIALECT","SELECT","CASE"],KD=["xxxxbyte","xxxxword"],JD=ls(HD),eZ=ls(KD),tZ=ls(jD),nZ=ls(UD),rZ=ls(qD),iZ=ls(["end"]),sZ=ls(["do"]),oZ=ls(GD);function CO(n,e){if(n.eatSpace())return null;let t=n.peek();if(t==="'")return n.skipToEnd(),"comment";if(n.match(/^(\$)?[0-9\.a-f]/i,!1)){if(n.match(/^\d*\.\d+F?/i)||n.match(/^\d+\.\d*F?/)||n.match(/^\.\d+F?/))return n.eat(/J/i),"number";if(n.match(/^\$[0-9a-f]+/i)||n.match(/^&O[0-7]+/i)||n.match(/^\d+F?/)||n.match(/^0(?![\dx])/i))return n.eat(/J/i),n.eat(/L/i),"number"}return n.match(/\bREM/i)?(n.skipToEnd(),"comment"):t==='"'?(e.tokenize=aZ,e.tokenize(n,e)):n.match(FD)||n.match(VD)?null:n.match(BD)||n.match(WD)||n.match(oZ)?"operator":n.match(ND)?null:n.match(sZ)?(e.currentIndent++,e.doInCurrentLine=!0,"keyword"):n.match(tZ)?(e.doInCurrentLine?e.doInCurrentLine=!1:e.currentIndent++,"keyword"):n.match(nZ)?"keyword":n.match(iZ)?(e.currentIndent-=2,"keyword"):n.match(rZ)?(e.currentIndent--,"keyword"):n.match(eZ)||n.match(JD)?"keyword":n.match(YD)?"variable":(n.next(),"error")}function aZ(n,e){for(n.next();!n.eol();)if(n.eatWhile(/[^"]/),n.eat('"'))return e.tokenize=CO,"string";return e.tokenize=CO,"string"}var _O=zD;function NP(){return new Ye(zt.define(_O))}function lZ(){function n(k){return new RegExp("^(("+k.join(")|(")+"))\\b","i")}let e=/^[\+\-\*/%&\\|^\~<>!]/,t=/^[\(\)\[\]\{\}@,:`=;\\.]/,r=/^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(\/\/)|(\*\*))/,i=/^((\+=)|(\-=)|(\*=)|(%=)|(\/=)|(&=)|(\|=)|(\^=))/,s=/^((\/\/=)|(>>=)|(<<=)|(\*\*=))/,o=/^[_A-Za-z][_A-Za-z0-9]*/,a=["while","repeat","proc","do","if","for"],l=["else","elseif","to"],c=["next","loop","wend","endproc","endif","end","until"],d=["and","or","not","xor","in"],h=["as","dim","break","continue","optional","then","until","goto","true","false","data","graphics","poke","se","move","mset","print","exec","pause","inc","dec","sound","get","put","cls","input","position","exit","color","drawto","fcolor","fillto","locate","plot","pmgraphics","pmhpos","setcolor","bget","bput","close","open","xio","clr","timer","dli","into","step","set","dpoke","dpeek","adr","usr"],u=["byte","word"],f=n(h),m=n(u),O=n(a),S=n(l),x=n(c),D=n(d);function M(k,w){if(k.eatSpace())return null;if(k.peek()==="'")return k.skipToEnd(),"comment";if(k.match(/^(\$)?[0-9\.a-f]/i,!1)){let X=!1;if((k.match(/^\d*\.\d+F?/i)||k.match(/^\d+\.\d*F?/)||k.match(/^\.\d+F?/))&&(X=!0),X)return k.eat(/J/i),"number";let W=!1;if(k.match(/^\$[0-9a-f]+/i)||k.match(/^&O[0-7]+/i)?W=!0:k.match(/^[1-9]\d*F?/)?(k.eat(/J/i),W=!0):k.match(/^0(?![\dx])/i)&&(W=!0),W)return k.eat(/L/i),"number"}return k.eat('"')?(w.tokenize=Z,Z(k,w)):k.match(s)||k.match(i)?null:k.match(r)||k.match(e)||k.match(D)?"operator":k.match(t)?null:k.match(O)||k.match(S)||k.match(x)||k.match(m)||k.match(f)?"keyword":k.match(o)?"variableName":(k.next(),null)}function Z(k,w){for(;!k.eol();){if(k.eatWhile(/[^'"]/),k.eat('"'))return w.tokenize=M,"string";k.eat(/['"]/)}return w.tokenize=M,"string"}return{startState(){return{tokenize:M}},token(k,w){return w.tokenize(k,w)}}}var EO=lZ();function BP(){return new Ye(zt.define(EO))}function cZ(){let n=["rem","if","else","then","goto","includesfile","include","inline","function","bank","sdata","data","on","off","up","down","const","dim","for","next","gosub","pfpixel","pfhline","pfclear","pfvline","pfscroll","drawscreen","asm","pop","set","return","reboot","vblank","pfcolors","pfheights","playfield","lives","player0","player1","player2","player3","player4","player5","player0color","player1color","let","switchreset","switchselect","switchleftb","switchrightb","switchbw","joy0up","joy0down","joy0left","joy0right","joy1up","joy1down","joy1left","joy1right","joy0fire","joy1fire","size","2k","8k","8kSC","16k","16kSC","32k","32kSC","4k","thisbank","otherbank","flip","collision","missile0","missile1","ball","stackpull","rand","score","scorec","Areg","smartbranching","romsize","optimization","speed","size","noinlinedata","inlinerand","none","kernal","kernel_options","readpaddle","player1colors","playercolors","no_blank_lines","kernel","multisprite","multisprite_no_include","debug","cyclescore","cycles","legacy"],e=new Map;n.forEach(r=>e.set(r,"keyword"));let t=/^([$][0-9a-f]+|[%][01]+|[0-9.]+)/i;return{startState(){return{context:0}},token(r,i){if(!r.column()&&(i.context=0,r.eatWhile(/[\w.]/)))return r.current().toLowerCase()=="end"?"keyword":"meta";if(r.eatSpace())return null;let s;if(r.eatWhile(/[$%A-Z0-9]/i)){s=r.current();let o=s.toLowerCase(),a=e.get(o);return o=="rem"?(r.eatWhile(/./),"comment"):a||(t.test(s)?"number":null)}else r.next();return null}}}var RO=cZ();function VP(){return new Ye(zt.define(RO))}var Nh=class n{static create(e,t,r,i,s){let o=i+(i<<8)+e+(t<<4)|0;return new n(e,t,r,o,s,[],[])}constructor(e,t,r,i,s,o,a){this.type=e,this.value=t,this.from=r,this.hash=i,this.end=s,this.children=o,this.positions=a,this.hashProp=[[xe.contextHash,i]]}addChild(e,t){e.prop(xe.contextHash)!=this.hash&&(e=new Ee(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(t)}toTree(e,t=this.end){let r=this.children.length-1;return r>=0&&(t=Math.max(t,this.positions[r]+this.children[r].length+this.from)),new Ee(e.types[this.type],this.children,this.positions,t-this.from).balance({makeTree:(i,s,o)=>new Ee(St.none,i,s,o,this.hashProp)})}},ee;(function(n){n[n.Document=1]="Document",n[n.CodeBlock=2]="CodeBlock",n[n.FencedCode=3]="FencedCode",n[n.Blockquote=4]="Blockquote",n[n.HorizontalRule=5]="HorizontalRule",n[n.BulletList=6]="BulletList",n[n.OrderedList=7]="OrderedList",n[n.ListItem=8]="ListItem",n[n.ATXHeading1=9]="ATXHeading1",n[n.ATXHeading2=10]="ATXHeading2",n[n.ATXHeading3=11]="ATXHeading3",n[n.ATXHeading4=12]="ATXHeading4",n[n.ATXHeading5=13]="ATXHeading5",n[n.ATXHeading6=14]="ATXHeading6",n[n.SetextHeading1=15]="SetextHeading1",n[n.SetextHeading2=16]="SetextHeading2",n[n.HTMLBlock=17]="HTMLBlock",n[n.LinkReference=18]="LinkReference",n[n.Paragraph=19]="Paragraph",n[n.CommentBlock=20]="CommentBlock",n[n.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",n[n.Escape=22]="Escape",n[n.Entity=23]="Entity",n[n.HardBreak=24]="HardBreak",n[n.Emphasis=25]="Emphasis",n[n.StrongEmphasis=26]="StrongEmphasis",n[n.Link=27]="Link",n[n.Image=28]="Image",n[n.InlineCode=29]="InlineCode",n[n.HTMLTag=30]="HTMLTag",n[n.Comment=31]="Comment",n[n.ProcessingInstruction=32]="ProcessingInstruction",n[n.Autolink=33]="Autolink",n[n.HeaderMark=34]="HeaderMark",n[n.QuoteMark=35]="QuoteMark",n[n.ListMark=36]="ListMark",n[n.LinkMark=37]="LinkMark",n[n.EmphasisMark=38]="EmphasisMark",n[n.CodeMark=39]="CodeMark",n[n.CodeText=40]="CodeText",n[n.CodeInfo=41]="CodeInfo",n[n.LinkTitle=42]="LinkTitle",n[n.LinkLabel=43]="LinkLabel",n[n.URL=44]="URL"})(ee||(ee={}));var DO=class{constructor(e,t){this.start=e,this.content=t,this.marks=[],this.parsers=[]}},ZO=class{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return Zl(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,t=0,r=0){for(let i=t;i<e;i++)r+=this.text.charCodeAt(i)==9?4-r%4:1;return r}findColumn(e){let t=0;for(let r=0;t<this.text.length&&r<e;t++)r+=this.text.charCodeAt(t)==9?4-r%4:1;return t}scrub(){if(!this.baseIndent)return this.text;let e="";for(let t=0;t<this.basePos;t++)e+=" ";return e+this.text.slice(this.basePos)}};function FP(n,e,t){if(t.pos==t.text.length||n!=e.block&&t.indent>=e.stack[t.depth+1].value+t.baseIndent)return!0;if(t.indent>=t.baseIndent+4)return!1;let r=(n.type==ee.OrderedList?qO:UO)(t,e,!1);return r>0&&(n.type!=ee.BulletList||jO(t,e,!1)<0)&&t.text.charCodeAt(t.pos+r-1)==n.value}var nk={[ee.Blockquote](n,e,t){return t.next!=62?!1:(t.markers.push(Ne(ee.QuoteMark,e.lineStart+t.pos,e.lineStart+t.pos+1)),t.moveBase(t.pos+(wr(t.text.charCodeAt(t.pos+1))?2:1)),n.end=e.lineStart+t.text.length,!0)},[ee.ListItem](n,e,t){return t.indent<t.baseIndent+n.value&&t.next>-1?!1:(t.moveBaseColumn(t.baseIndent+n.value),!0)},[ee.OrderedList]:FP,[ee.BulletList]:FP,[ee.Document](){return!0}};function wr(n){return n==32||n==9||n==10||n==13}function Zl(n,e=0){for(;e<n.length&&wr(n.charCodeAt(e));)e++;return e}function YP(n,e,t){for(;e>t&&wr(n.charCodeAt(e-1));)e--;return e}function rk(n){if(n.next!=96&&n.next!=126)return-1;let e=n.pos+1;for(;e<n.text.length&&n.text.charCodeAt(e)==n.next;)e++;if(e<n.pos+3)return-1;if(n.next==96){for(let t=e;t<n.text.length;t++)if(n.text.charCodeAt(t)==96)return-1}return e}function ik(n){return n.next!=62?-1:n.text.charCodeAt(n.pos+1)==32?2:1}function jO(n,e,t){if(n.next!=42&&n.next!=45&&n.next!=95)return-1;let r=1;for(let i=n.pos+1;i<n.text.length;i++){let s=n.text.charCodeAt(i);if(s==n.next)r++;else if(!wr(s))return-1}return t&&n.next==45&&ak(n)>-1&&n.depth==e.stack.length&&e.parser.leafBlockParsers.indexOf(hk.SetextHeading)>-1||r<3?-1:1}function sk(n,e){for(let t=n.stack.length-1;t>=0;t--)if(n.stack[t].type==e)return!0;return!1}function UO(n,e,t){return(n.next==45||n.next==43||n.next==42)&&(n.pos==n.text.length-1||wr(n.text.charCodeAt(n.pos+1)))&&(!t||sk(e,ee.BulletList)||n.skipSpace(n.pos+2)<n.text.length)?1:-1}function qO(n,e,t){let r=n.pos,i=n.next;for(;i>=48&&i<=57;){r++;if(r==n.text.length)return-1;i=n.text.charCodeAt(r)}return r==n.pos||r>n.pos+9||i!=46&&i!=41||r<n.text.length-1&&!wr(n.text.charCodeAt(r+1))||t&&!sk(e,ee.OrderedList)&&(n.skipSpace(r+1)==n.text.length||r>n.pos+1||n.next!=49)?-1:r+1-n.pos}function ok(n){if(n.next!=35)return-1;let e=n.pos+1;for(;e<n.text.length&&n.text.charCodeAt(e)==35;)e++;if(e<n.text.length&&n.text.charCodeAt(e)!=32)return-1;let t=e-n.pos;return t>6?-1:t}function ak(n){if(n.next!=45&&n.next!=61||n.indent>=n.baseIndent+4)return-1;let e=n.pos+1;for(;e<n.text.length&&n.text.charCodeAt(e)==n.next;)e++;let t=e;for(;e<n.text.length&&wr(n.text.charCodeAt(e));)e++;return e==n.text.length?t:-1}var IO=/^[ \t]*$/,lk=/-->/,ck=/\?>/,XO=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*<!--/,lk],[/^\s*<\?/,ck],[/^\s*<![A-Z]/,/>/],[/^\s*<!\[CDATA\[/,/\]\]>/],[/^\s*<\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|\/?>|$)/i,IO],[/^\s*(?:<\/[a-z][\w-]*\s*>|<[a-z][\w-]*(\s+[a-z:_][\w-.]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*>)\s*$/i,IO]];function dk(n,e,t){if(n.next!=60)return-1;let r=n.text.slice(n.pos);for(let i=0,s=XO.length-(t?1:0);i<s;i++)if(XO[i][0].test(r))return i;return-1}function jP(n,e){let t=n.countIndent(e,n.pos,n.indent),r=n.skipSpace(e),i=n.countIndent(r,e,t);return i>=t+5||r==n.text.length?t+1:i}function cs(n,e,t){let r=n.length-1;r>=0&&n[r].to==e&&n[r].type==ee.CodeText?n[r].to=t:n.push(Ne(ee.CodeText,e,t))}var zh={LinkReference:void 0,IndentedCode(n,e){let t=e.baseIndent+4;if(e.indent<t)return!1;let r=e.findColumn(t),i=n.lineStart+r,s=n.lineStart+e.text.length,o=[],a=[];for(cs(o,i,s);n.nextLine()&&e.depth>=n.stack.length;)if(e.pos==e.text.length){cs(a,n.lineStart-1,n.lineStart);for(let l of e.markers)a.push(l)}else{if(e.indent<t)break;{if(a.length){for(let c of a)c.type==ee.CodeText?cs(o,c.from,c.to):o.push(c);a=[]}cs(o,n.lineStart-1,n.lineStart);for(let c of e.markers)o.push(c);s=n.lineStart+e.text.length;let l=n.lineStart+e.findColumn(e.baseIndent+4);l<s&&cs(o,l,s)}}return a.length&&(a=a.filter(l=>l.type!=ee.CodeText),a.length&&(e.markers=a.concat(e.markers))),n.addNode(n.buffer.writeElements(o,-i).finish(ee.CodeBlock,s-i),i),!0},FencedCode(n,e){let t=rk(e);if(t<0)return!1;let r=n.lineStart+e.pos,i=e.next,s=t-e.pos,o=e.skipSpace(t),a=YP(e.text,e.text.length,o),l=[Ne(ee.CodeMark,r,r+s)];o<a&&l.push(Ne(ee.CodeInfo,n.lineStart+o,n.lineStart+a));for(let c=!0,d=!0,h=!1;n.nextLine()&&e.depth>=n.stack.length;c=!1){let u=e.pos;if(e.indent-e.baseIndent<4)for(;u<e.text.length&&e.text.charCodeAt(u)==i;)u++;if(u-e.pos>=s&&e.skipSpace(u)==e.text.length){for(let f of e.markers)l.push(f);d&&h&&cs(l,n.lineStart-1,n.lineStart),l.push(Ne(ee.CodeMark,n.lineStart+e.pos,n.lineStart+u)),n.nextLine();break}else{h=!0,c||(cs(l,n.lineStart-1,n.lineStart),d=!1);for(let O of e.markers)l.push(O);let f=n.lineStart+e.basePos,m=n.lineStart+e.text.length;f<m&&(cs(l,f,m),d=!1)}}return n.addNode(n.buffer.writeElements(l,-r).finish(ee.FencedCode,n.prevLineEnd()-r),r),!0},Blockquote(n,e){let t=ik(e);return t<0?!1:(n.startContext(ee.Blockquote,e.pos),n.addNode(ee.QuoteMark,n.lineStart+e.pos,n.lineStart+e.pos+1),e.moveBase(e.pos+t),null)},HorizontalRule(n,e){if(jO(e,n,!1)<0)return!1;let t=n.lineStart+e.pos;return n.nextLine(),n.addNode(ee.HorizontalRule,t),!0},BulletList(n,e){let t=UO(e,n,!1);if(t<0)return!1;n.block.type!=ee.BulletList&&n.startContext(ee.BulletList,e.basePos,e.next);let r=jP(e,e.pos+1);return n.startContext(ee.ListItem,e.basePos,r-e.baseIndent),n.addNode(ee.ListMark,n.lineStart+e.pos,n.lineStart+e.pos+t),e.moveBaseColumn(r),null},OrderedList(n,e){let t=qO(e,n,!1);if(t<0)return!1;n.block.type!=ee.OrderedList&&n.startContext(ee.OrderedList,e.basePos,e.text.charCodeAt(e.pos+t-1));let r=jP(e,e.pos+t);return n.startContext(ee.ListItem,e.basePos,r-e.baseIndent),n.addNode(ee.ListMark,n.lineStart+e.pos,n.lineStart+e.pos+t),e.moveBaseColumn(r),null},ATXHeading(n,e){let t=ok(e);if(t<0)return!1;let r=e.pos,i=n.lineStart+r,s=YP(e.text,e.text.length,r),o=s;for(;o>r&&e.text.charCodeAt(o-1)==e.next;)o--;(o==s||o==r||!wr(e.text.charCodeAt(o-1)))&&(o=e.text.length);let a=n.buffer.write(ee.HeaderMark,0,t).writeElements(n.parser.parseInline(e.text.slice(r+t+1,o),i+t+1),-i);o<e.text.length&&a.write(ee.HeaderMark,o-r,s-r);let l=a.finish(ee.ATXHeading1-1+t,e.text.length-r);return n.nextLine(),n.addNode(l,i),!0},HTMLBlock(n,e){let t=dk(e,n,!1);if(t<0)return!1;let r=n.lineStart+e.pos,i=XO[t][1],s=[],o=i!=IO;for(;!i.test(e.text)&&n.nextLine();){if(e.depth<n.stack.length){o=!1;break}for(let c of e.markers)s.push(c)}o&&n.nextLine();let a=i==lk?ee.CommentBlock:i==ck?ee.ProcessingInstructionBlock:ee.HTMLBlock,l=n.prevLineEnd();return n.addNode(n.buffer.writeElements(s,-r).finish(a,l-r),r),!0},SetextHeading:void 0},zO=class{constructor(e){this.stage=0,this.elts=[],this.pos=0,this.start=e.start,this.advance(e.content)}nextLine(e,t,r){if(this.stage==-1)return!1;let i=r.content+`
`+t.scrub(),s=this.advance(i);return s>-1&&s<i.length?this.complete(e,r,s):!1}finish(e,t){return(this.stage==2||this.stage==3)&&Zl(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,Ne(ee.LinkReference,this.start,this.start+r,this.elts)),!0}nextStage(e){return e?(this.pos=e.to-this.start,this.elts.push(e),this.stage++,!0):(e===!1&&(this.stage=-1),!1)}advance(e){for(;;){if(this.stage==-1)return-1;if(this.stage==0){if(!this.nextStage(bk(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(Ne(ee.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(gk(e,Zl(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=Zl(e,this.pos),r=0;if(t>this.pos){let i=Ok(e,t,this.start);if(i){let s=MO(e,i.to-this.start);s>0&&(this.nextStage(i),r=s)}}return r||(r=MO(e,this.pos)),r>0&&r<e.length?r:-1}else return MO(e,this.pos)}}};function MO(n,e){for(;e<n.length;e++){let t=n.charCodeAt(e);if(t==10)break;if(!wr(t))return-1}return e}var WO=class{nextLine(e,t,r){let i=t.depth<e.stack.length?-1:ak(t),s=t.next;if(i<0)return!1;let o=Ne(ee.HeaderMark,e.lineStart+t.pos,e.lineStart+i);return e.nextLine(),e.addLeafElement(r,Ne(s==61?ee.SetextHeading1:ee.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},hk={LinkReference(n,e){return e.content.charCodeAt(0)==91?new zO(e):null},SetextHeading(){return new WO}},dZ=[(n,e)=>ok(e)>=0,(n,e)=>rk(e)>=0,(n,e)=>ik(e)>=0,(n,e)=>UO(e,n,!0)>=0,(n,e)=>qO(e,n,!0)>=0,(n,e)=>jO(e,n,!0)>=0,(n,e)=>dk(e,n,!0)>=0],hZ={text:"",end:0},NO=class{constructor(e,t,r,i){this.parser=e,this.input=t,this.ranges=i,this.line=new ZO,this.atEnd=!1,this.reusePlaceholders=new Map,this.stoppedAt=null,this.rangeI=0,this.to=i[i.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=i[0].from,this.block=Nh.create(ee.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new FO(r,t):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(this.stoppedAt!=null&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line:e}=this;for(;;){for(let r=0;;){let i=e.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;r<e.markers.length&&(!i||e.markers[r].from<i.end);){let s=e.markers[r++];this.addNode(s.type,s.from,s.to)}if(!i)break;this.finishContext()}if(e.pos<e.text.length)break;if(!this.nextLine())return this.finish()}if(this.fragments&&this.reuseFragment(e.basePos))return null;e:for(;;){for(let r of this.parser.blockParsers)if(r){let i=r(this,e);if(i!=!1){if(i==!0)return null;e.forward();continue e}}break}if(e.pos==e.text.length)return this.nextLine()?null:this.finish();let t=new DO(this.lineStart+e.pos,e.text.slice(e.pos));for(let r of this.parser.leafBlockParsers)if(r){let i=r(this,t);i&&t.parsers.push(i)}e:for(;this.nextLine()&&e.pos!=e.text.length;){if(e.indent<e.baseIndent+4){for(let r of this.parser.endLeafBlock)if(r(this,e,t))break e}for(let r of t.parsers)if(r.nextLine(this,e,t))return null;t.content+=`
`+e.scrub();for(let r of e.markers)t.marks.push(r)}return this.finishLeaf(t),null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}reuseFragment(e){if(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let t=this.fragments.takeNodes(this);return t?(this.absoluteLineStart+=t,this.lineStart=yk(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0):!1}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){let t=hZ;if(t.end=e,e>=this.to)t.text="";else if(t.text=this.lineChunkAt(e),t.end+=t.text.length,this.ranges.length>1){let r=this.absoluteLineStart,i=this.rangeI;for(;this.ranges[i].to<t.end;){i++;let s=this.ranges[i].from,o=this.lineChunkAt(s);t.end=s+o.length,t.text=t.text.slice(0,this.ranges[i-1].to-r)+o,r=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:r}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=r,e.reset(t);e.depth<this.stack.length;e.depth++){let i=this.stack[e.depth],s=this.parser.skipContextMarkup[i.type];if(!s)throw new Error("Unhandled block context "+ee[i.type]);let o=this.line.markers.length;if(!s(i,this,e)){this.line.markers.length>o&&(i.end=this.line.markers[this.line.markers.length-1].to),e.forward();break}e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),r;if(this.input.lineChunks)r=t==`
`?"":t;else{let i=t.indexOf(`
`);r=i<0?t:t.slice(0,i)}return e+r.length>this.to?r.slice(0,this.to-e):r}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,r=0){this.block=Nh.create(e,r,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,r=0){this.startContext(this.parser.getNodeType(e),t,r)}addNode(e,t,r){typeof e=="number"&&(e=new Ee(this.parser.nodeSet.types[e],ha,ha,(r!=null?r:this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(VO(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){let e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return this.ranges.length>1?uk(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let r of e.parsers)if(r.finish(this,e))return;let t=VO(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(ee.Paragraph,e.content.length),e.start)}elt(e,t,r,i){return typeof e=="string"?Ne(this.parser.getNodeType(e),t,r,i):new Vh(e,t)}get buffer(){return new Bh(this.parser.nodeSet)}};function uk(n,e,t,r,i){let s=n[e].to,o=[],a=[],l=t.from+r;function c(d,h){for(;h?d>=s:d>s;){let u=n[e+1].from-s;r+=u,d+=u,e++,s=n[e].to}}for(let d=t.firstChild;d;d=d.nextSibling){c(d.from+r,!0);let h=d.from+r,u,f=i.get(d.tree);f?u=f:d.to+r>s?(u=uk(n,e,d,r,i),c(d.to+r,!1)):u=d.toTree(),o.push(u),a.push(h-l)}return c(t.to+r,!1),new Ee(t.type,o,a,t.to+r-l,t.tree?t.tree.propValues:void 0)}var Xl=class n extends Ti{constructor(e,t,r,i,s,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=r,this.blockNames=i,this.endLeafBlock=s,this.skipContextMarkup=o,this.inlineParsers=a,this.inlineNames=l,this.wrappers=c,this.nodeTypes=Object.create(null);for(let d of e.types)this.nodeTypes[d.name]=d.id}createParse(e,t,r){let i=new NO(this,e,t,r);for(let s of this.wrappers)i=s(i,e,t,r);return i}configure(e){let t=BO(e);if(!t)return this;let{nodeSet:r,skipContextMarkup:i}=this,s=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),a=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),d=this.endLeafBlock.slice(),h=this.wrappers;if(Dl(t.defineNodes)){i=Object.assign({},i);let u=r.types.slice(),f;for(let m of t.defineNodes){let{name:O,block:S,composite:x,style:D}=typeof m=="string"?{name:m}:m;if(u.some(k=>k.name==O))continue;x&&(i[u.length]=(k,w,R)=>x(w,R,k.value));let M=u.length,Z=x?["Block","BlockContext"]:S?M>=ee.ATXHeading1&&M<=ee.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;u.push(St.define({id:M,name:O,props:Z&&[[xe.group,Z]]})),D&&(f||(f={}),Array.isArray(D)||D instanceof qn?f[O]=D:Object.assign(f,D))}r=new $i(u),f&&(r=r.extend(Kt(f)))}if(Dl(t.props)&&(r=r.extend(...t.props)),Dl(t.remove))for(let u of t.remove){let f=this.blockNames.indexOf(u),m=this.inlineNames.indexOf(u);f>-1&&(s[f]=o[f]=void 0),m>-1&&(l[m]=void 0)}if(Dl(t.parseBlock))for(let u of t.parseBlock){let f=a.indexOf(u.name);if(f>-1)s[f]=u.parse,o[f]=u.leaf;else{let m=u.before?Wh(a,u.before):u.after?Wh(a,u.after)+1:a.length-1;s.splice(m,0,u.parse),o.splice(m,0,u.leaf),a.splice(m,0,u.name)}u.endLeaf&&d.push(u.endLeaf)}if(Dl(t.parseInline))for(let u of t.parseInline){let f=c.indexOf(u.name);if(f>-1)l[f]=u.parse;else{let m=u.before?Wh(c,u.before):u.after?Wh(c,u.after)+1:c.length-1;l.splice(m,0,u.parse),c.splice(m,0,u.name)}}return t.wrap&&(h=h.concat(t.wrap)),new n(r,s,o,a,d,i,l,c,h)}getNodeType(e){let t=this.nodeTypes[e];if(t==null)throw new RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){let r=new Wl(this,e,t);e:for(let i=t;i<r.end;){let s=r.char(i);for(let o of this.inlineParsers)if(o){let a=o(r,s,i);if(a>=0){i=a;continue e}}i++}return r.resolveMarkers(0)}};function Dl(n){return n!=null&&n.length>0}function BO(n){if(!Array.isArray(n))return n;if(n.length==0)return null;let e=BO(n[0]);if(n.length==1)return e;let t=BO(n.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||ha).concat(a||ha),i=e.wrap,s=t.wrap;return{props:r(e.props,t.props),defineNodes:r(e.defineNodes,t.defineNodes),parseBlock:r(e.parseBlock,t.parseBlock),parseInline:r(e.parseInline,t.parseInline),remove:r(e.remove,t.remove),wrap:i?s?(o,a,l,c)=>i(s(o,a,l,c),a,l,c):i:s}}function Wh(n,e){let t=n.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var fk=[St.none];for(let n=1,e;e=ee[n];n++)fk[n]=St.define({id:n,name:e,props:n>=ee.Escape?[]:[[xe.group,n in nk?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var ha=[],Bh=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,r,i=0){return this.content.push(e,t,r,4+i*4),this}writeElements(e,t=0){for(let r of e)r.writeTo(this,t);return this}finish(e,t){return Ee.build({buffer:this.content,nodeSet:this.nodeSet,reused:this.nodes,topID:e,length:t})}},so=class{constructor(e,t,r,i=ha){this.type=e,this.from=t,this.to=r,this.children=i}writeTo(e,t){let r=e.content.length;e.writeElements(this.children,t),e.content.push(this.type,this.from+t,this.to+t,e.content.length+4-r)}toTree(e){return new Bh(e).writeElements(this.children,-this.from).finish(this.type,this.to-this.from)}},Vh=class{constructor(e,t){this.tree=e,this.from=t}get to(){return this.from+this.tree.length}get type(){return this.tree.type.id}get children(){return ha}writeTo(e,t){e.nodes.push(this.tree),e.content.push(e.nodes.length-1,this.from+t,this.to+t,-1)}toTree(){return this.tree}};function Ne(n,e,t,r){return new so(n,e,t,r)}var pk={resolve:"Emphasis",mark:"EmphasisMark"},mk={resolve:"Emphasis",mark:"EmphasisMark"},io={},Fh={},xn=class{constructor(e,t,r,i){this.type=e,this.from=t,this.to=r,this.side=i}},UP="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",zl=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\u2010-\u2027]/;try{zl=new RegExp("[\\p{S}|\\p{P}]","u")}catch(n){}var LO={Escape(n,e,t){if(e!=92||t==n.end-1)return-1;let r=n.char(t+1);for(let i=0;i<UP.length;i++)if(UP.charCodeAt(i)==r)return n.append(Ne(ee.Escape,t,t+2));return-1},Entity(n,e,t){if(e!=38)return-1;let r=/^(?:#\d+|#x[a-f\d]+|\w+);/i.exec(n.slice(t+1,t+31));return r?n.append(Ne(ee.Entity,t,t+1+r[0].length)):-1},InlineCode(n,e,t){if(e!=96||t&&n.char(t-1)==96)return-1;let r=t+1;for(;r<n.end&&n.char(r)==96;)r++;let i=r-t,s=0;for(;r<n.end;r++)if(n.char(r)==96){if(s++,s==i&&n.char(r+1)!=96)return n.append(Ne(ee.InlineCode,t,r+1,[Ne(ee.CodeMark,t,t+i),Ne(ee.CodeMark,r+1-i,r+1)]))}else s=0;return-1},HTMLTag(n,e,t){if(e!=60||t==n.end-1)return-1;let r=n.slice(t+1,n.end),i=/^(?:[a-z][-\w+.]+:[^\s>]+|[a-z\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?(?:\.[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?)*)>/i.exec(r);if(i)return n.append(Ne(ee.Autolink,t,t+1+i[0].length,[Ne(ee.LinkMark,t,t+1),Ne(ee.URL,t+1,t+i[0].length),Ne(ee.LinkMark,t+i[0].length,t+1+i[0].length)]));let s=/^!--[^>](?:-[^-]|[^-])*?-->/i.exec(r);if(s)return n.append(Ne(ee.Comment,t,t+1+s[0].length));let o=/^\?[^]*?\?>/.exec(r);if(o)return n.append(Ne(ee.ProcessingInstruction,t,t+1+o[0].length));let a=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(r);return a?n.append(Ne(ee.HTMLTag,t,t+1+a[0].length)):-1},Emphasis(n,e,t){if(e!=95&&e!=42)return-1;let r=t+1;for(;n.char(r)==e;)r++;let i=n.slice(t-1,t),s=n.slice(r,r+1),o=zl.test(i),a=zl.test(s),l=/\s|^$/.test(i),c=/\s|^$/.test(s),d=!c&&(!a||l||o),h=!l&&(!o||c||a),u=d&&(e==42||!h||o),f=h&&(e==42||!d||a);return n.append(new xn(e==95?pk:mk,t,r,(u?1:0)|(f?2:0)))},HardBreak(n,e,t){if(e==92&&n.char(t+1)==10)return n.append(Ne(ee.HardBreak,t,t+2));if(e==32){let r=t+1;for(;n.char(r)==32;)r++;if(n.char(r)==10&&r>=t+2)return n.append(Ne(ee.HardBreak,t,r+1))}return-1},Link(n,e,t){return e==91?n.append(new xn(io,t,t+1,1)):-1},Image(n,e,t){return e==33&&n.char(t+1)==91?n.append(new xn(Fh,t,t+2,1)):-1},LinkEnd(n,e,t){if(e!=93)return-1;for(let r=n.parts.length-1;r>=0;r--){let i=n.parts[r];if(i instanceof xn&&(i.type==io||i.type==Fh)){if(!i.side||n.skipSpace(i.to)==t&&!/[(\[]/.test(n.slice(t+1,t+2)))return n.parts[r]=null,-1;let s=n.takeContent(r),o=n.parts[r]=uZ(n,s,i.type==io?ee.Link:ee.Image,i.from,t+1);if(i.type==io)for(let a=0;a<r;a++){let l=n.parts[a];l instanceof xn&&l.type==io&&(l.side=0)}return o.to}}return-1}};function uZ(n,e,t,r,i){let{text:s}=n,o=n.char(i),a=i;if(e.unshift(Ne(ee.LinkMark,r,r+(t==ee.Image?2:1))),e.push(Ne(ee.LinkMark,i-1,i)),o==40){let l=n.skipSpace(i+1),c=gk(s,l-n.offset,n.offset),d;c&&(l=n.skipSpace(c.to),l!=c.to&&(d=Ok(s,l-n.offset,n.offset),d&&(l=n.skipSpace(d.to)))),n.char(l)==41&&(e.push(Ne(ee.LinkMark,i,i+1)),a=l+1,c&&e.push(c),d&&e.push(d),e.push(Ne(ee.LinkMark,l,a)))}else if(o==91){let l=bk(s,i-n.offset,n.offset,!1);l&&(e.push(l),a=l.to)}return Ne(t,r,a,e)}function gk(n,e,t){if(n.charCodeAt(e)==60){for(let i=e+1;i<n.length;i++){let s=n.charCodeAt(i);if(s==62)return Ne(ee.URL,e+t,i+1+t);if(s==60||s==10)return!1}return null}else{let i=0,s=e;for(let o=!1;s<n.length;s++){let a=n.charCodeAt(s);if(wr(a))break;if(o)o=!1;else if(a==40)i++;else if(a==41){if(!i)break;i--}else a==92&&(o=!0)}return s>e?Ne(ee.URL,e+t,s+t):s==n.length?null:!1}}function Ok(n,e,t){let r=n.charCodeAt(e);if(r!=39&&r!=34&&r!=40)return!1;let i=r==40?41:r;for(let s=e+1,o=!1;s<n.length;s++){let a=n.charCodeAt(s);if(o)o=!1;else{if(a==i)return Ne(ee.LinkTitle,e+t,s+1+t);a==92&&(o=!0)}}return null}function bk(n,e,t,r){for(let i=!1,s=e+1,o=Math.min(n.length,s+999);s<o;s++){let a=n.charCodeAt(s);if(i)i=!1;else{if(a==93)return r?!1:Ne(ee.LinkLabel,e+t,s+1+t);if(r&&!wr(a)&&(r=!1),a==91)return!1;a==92&&(i=!0)}}return null}var Wl=class{constructor(e,t,r){this.parser=e,this.text=t,this.offset=r,this.parts=[]}char(e){return e>=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,t){return this.text.slice(e-this.offset,t-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,t,r,i,s){return this.append(new xn(e,t,r,(i?1:0)|(s?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let t=this.parts[e];if(t instanceof xn&&(t.type==io||t.type==Fh))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let r=e;r<this.parts.length;r++){let i=this.parts[r];if(!(i instanceof xn&&i.type.resolve&&i.side&2))continue;let s=i.type==pk||i.type==mk,o=i.to-i.from,a,l=r-1;for(;l>=e;l--){let O=this.parts[l];if(O instanceof xn&&O.side&1&&O.type==i.type&&!(s&&(i.side&1||O.side&2)&&(O.to-O.from+o)%3==0&&((O.to-O.from)%3||o%3))){a=O;break}}if(!a)continue;let c=i.type.resolve,d=[],h=a.from,u=i.to;if(s){let O=Math.min(2,a.to-a.from,o);h=a.to-O,u=i.from+O,c=O==1?"Emphasis":"StrongEmphasis"}a.type.mark&&d.push(this.elt(a.type.mark,h,a.to));for(let O=l+1;O<r;O++)this.parts[O]instanceof so&&d.push(this.parts[O]),this.parts[O]=null;i.type.mark&&d.push(this.elt(i.type.mark,i.from,u));let f=this.elt(c,h,u,d);this.parts[l]=s&&a.from!=h?new xn(a.type,a.from,h,a.side):null,(this.parts[r]=s&&i.to!=u?new xn(i.type,u,i.to,i.side):null)?this.parts.splice(r,0,f):this.parts[r]=f}let t=[];for(let r=e;r<this.parts.length;r++){let i=this.parts[r];i instanceof so&&t.push(i)}return t}findOpeningDelimiter(e){for(let t=this.parts.length-1;t>=0;t--){let r=this.parts[t];if(r instanceof xn&&r.type==e&&r.side&1)return t}return null}takeContent(e){let t=this.resolveMarkers(e);return this.parts.length=e,t}getDelimiterAt(e){let t=this.parts[e];return t instanceof xn?t:null}skipSpace(e){return Zl(this.text,e-this.offset)+this.offset}elt(e,t,r,i){return typeof e=="string"?Ne(this.parser.getNodeType(e),t,r,i):new Vh(e,t)}};Wl.linkStart=io;Wl.imageStart=Fh;function VO(n,e){if(!e.length)return n;if(!n.length)return e;let t=n.slice(),r=0;for(let i of e){for(;r<t.length&&t[r].to<i.to;)r++;if(r<t.length&&t[r].from<i.from){let s=t[r];s instanceof so&&(t[r]=new so(s.type,s.from,s.to,VO(s.children,[i])))}else t.splice(r++,0,i)}return t}var fZ=[ee.CodeBlock,ee.ListItem,ee.OrderedList,ee.BulletList],FO=class{constructor(e,t){this.fragments=e,this.input=t,this.i=0,this.fragment=null,this.fragmentEnd=-1,this.cursor=null,e.length&&(this.fragment=e[this.i++])}nextFragment(){this.fragment=this.i<this.fragments.length?this.fragments[this.i++]:null,this.cursor=null,this.fragmentEnd=-1}moveTo(e,t){for(;this.fragment&&this.fragment.to<=e;)this.nextFragment();if(!this.fragment||this.fragment.from>(e?e-1:0))return!1;if(this.fragmentEnd<0){let s=this.fragment.to;for(;s>0&&this.input.read(s-1,s)!=`
`;)s--;this.fragmentEnd=s?s-1:0}let r=this.cursor;r||(r=this.cursor=this.fragment.tree.cursor(),r.firstChild());let i=e+this.fragment.offset;for(;r.to<=i;)if(!r.parent())return!1;for(;;){if(r.from>=i)return this.fragment.from<=t;if(!r.childAfter(i))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(xe.contextHash)==e}takeNodes(e){let t=this.cursor,r=this.fragment.offset,i=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,o=s,a=e.block.children.length,l=o,c=a;for(;;){if(t.to-r>i){if(t.type.isAnonymous&&t.firstChild())continue;break}let d=yk(t.from-r,e.ranges);if(t.to-r<=e.ranges[e.rangeI].to)e.addNode(t.tree,d);else{let h=new Ee(e.parser.nodeSet.types[ee.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(h,t.tree),e.addNode(h,d)}if(t.type.is("Block")&&(fZ.indexOf(t.type.id)<0?(o=t.to-r,a=e.block.children.length):(o=l,a=c),l=t.to-r,c=e.block.children.length),!t.nextSibling())break}for(;e.block.children.length>a;)e.block.children.pop(),e.block.positions.pop();return o-s}};function yk(n,e){let t=n;for(let r=1;r<e.length;r++){let i=e[r-1].to,s=e[r].from;i<n&&(t-=s-i)}return t}var pZ=Kt({"Blockquote/...":g.quote,HorizontalRule:g.contentSeparator,"ATXHeading1/... SetextHeading1/...":g.heading1,"ATXHeading2/... SetextHeading2/...":g.heading2,"ATXHeading3/...":g.heading3,"ATXHeading4/...":g.heading4,"ATXHeading5/...":g.heading5,"ATXHeading6/...":g.heading6,"Comment CommentBlock":g.comment,Escape:g.escape,Entity:g.character,"Emphasis/...":g.emphasis,"StrongEmphasis/...":g.strong,"Link/... Image/...":g.link,"OrderedList/... BulletList/...":g.list,"BlockQuote/...":g.quote,"InlineCode CodeText":g.monospace,"URL Autolink":g.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":g.processingInstruction,"CodeInfo LinkLabel":g.labelName,LinkTitle:g.string,Paragraph:g.content}),Sk=new Xl(new $i(fk).extend(pZ),Object.keys(zh).map(n=>zh[n]),Object.keys(zh).map(n=>hk[n]),Object.keys(zh),dZ,nk,Object.keys(LO).map(n=>LO[n]),Object.keys(LO),[]);function mZ(n,e,t){let r=[];for(let i=n.firstChild,s=e;;i=i.nextSibling){let o=i?i.from:t;if(o>s&&r.push({from:s,to:o}),!i)break;s=i.to}return r}function vk(n){let{codeParser:e,htmlParser:t}=n;return{wrap:Fd((i,s)=>{let o=i.type.id;if(e&&(o==ee.CodeBlock||o==ee.FencedCode)){let a="";if(o==ee.FencedCode){let c=i.node.getChild(ee.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==ee.CodeText,bracketed:o==ee.FencedCode}}else if(t&&(o==ee.HTMLBlock||o==ee.HTMLTag||o==ee.CommentBlock))return{parser:t,overlay:mZ(i.node,i.from,i.to)};return null})}}var gZ={resolve:"Strikethrough",mark:"StrikethroughMark"},OZ={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":g.strikethrough}},{name:"StrikethroughMark",style:g.processingInstruction}],parseInline:[{name:"Strikethrough",parse(n,e,t){if(e!=126||n.char(t+1)!=126||n.char(t+2)==126)return-1;let r=n.slice(t-1,t),i=n.slice(t+2,t+3),s=/\s|^$/.test(r),o=/\s|^$/.test(i),a=zl.test(r),l=zl.test(i);return n.addDelimiter(gZ,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function Il(n,e,t=0,r,i=0){let s=0,o=!0,a=-1,l=-1,c=!1,d=()=>{r.push(n.elt("TableCell",i+a,i+l,n.parser.parseInline(e.slice(a,l),i+a)))};for(let h=t;h<e.length;h++){let u=e.charCodeAt(h);u==124&&!c?((!o||a>-1)&&s++,o=!1,r&&(a>-1&&d(),r.push(n.elt("TableDelimiter",h+i,h+i+1))),a=l=-1):(c||u!=32&&u!=9)&&(a<0&&(a=h),l=h+1),c=!c&&u==92}return a>-1&&(s++,r&&d()),s}function qP(n,e){for(let t=e;t<n.length;t++){let r=n.charCodeAt(t);if(r==124)return!0;r==92&&t++}return!1}var wk=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Yh=class{constructor(){this.rows=null}nextLine(e,t,r){if(this.rows==null){this.rows=!1;let i;if((t.next==45||t.next==58||t.next==124)&&wk.test(i=t.text.slice(t.pos))){let s=[];Il(e,r.content,0,s,r.start)==Il(e,i,0)&&(this.rows=[e.elt("TableHeader",r.start,r.start+r.content.length,s),e.elt("TableDelimiter",e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let i=[];Il(e,t.text,t.pos,i,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+t.pos,e.lineStart+t.text.length,i))}return!1}finish(e,t){return this.rows?(e.addLeafElement(t,e.elt("Table",t.start,t.start+t.content.length,this.rows)),!0):!1}},bZ={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":g.heading}},"TableRow",{name:"TableCell",style:g.content},{name:"TableDelimiter",style:g.processingInstruction}],parseBlock:[{name:"Table",leaf(n,e){return qP(e.content,0)?new Yh:null},endLeaf(n,e,t){if(t.parsers.some(i=>i instanceof Yh)||!qP(e.text,e.basePos))return!1;let r=n.peekLine();return wk.test(r)&&Il(n,e.text,e.basePos)==Il(n,r,e.basePos)},before:"SetextHeading"}]},YO=class{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt("Task",t.start,t.start+t.content.length,[e.elt("TaskMarker",t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}},yZ={defineNodes:[{name:"Task",block:!0,style:g.list},{name:"TaskMarker",style:g.atom}],parseBlock:[{name:"TaskList",leaf(n,e){return/^\[[ xX]\][ \t]/.test(e.content)&&n.parentType().name=="ListItem"?new YO:null},after:"SetextHeading"}]},GP=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,HP=/[\w-]+(\.[\w-]+)+(:\d+)?(\/[^\s<]*)?/gy,SZ=/[\w-]+\.[\w-]+($|[/:])/,KP=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,JP=/\/[a-zA-Z\d@.]+/gy;function ek(n,e,t,r){let i=0;for(let s=e;s<t;s++)n[s]==r&&i++;return i}function vZ(n,e){HP.lastIndex=e;let t=HP.exec(n);if(!t||SZ.exec(t[0])[0].indexOf("_")>-1)return-1;let r=e+t[0].length;for(;;){let i=n[r-1],s;if(/[?!.,:*_~]/.test(i)||i==")"&&ek(n,e,r,")")>ek(n,e,r,"("))r--;else if(i==";"&&(s=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(n.slice(e,r))))r=e+s.index;else break}return r}function tk(n,e){KP.lastIndex=e;let t=KP.exec(n);if(!t)return-1;let r=t[0][t[0].length-1];return r=="_"||r=="-"?-1:e+t[0].length-(r=="."?1:0)}var wZ={parseInline:[{name:"Autolink",parse(n,e,t){let r=t-n.offset;if(r&&/\w/.test(n.text[r-1]))return-1;GP.lastIndex=r;let i=GP.exec(n.text),s=-1;if(!i)return-1;if(i[1]||i[2]){if(s=vZ(n.text,r+i[0].length),s>-1&&n.hasOpenLink){let o=/([^\[\]]|\[[^\]]*\])*/.exec(n.text.slice(r,s));s=r+o[0].length}}else i[3]?s=tk(n.text,r):(s=tk(n.text,r+i[0].length),s>-1&&i[0]=="xmpp:"&&(JP.lastIndex=s,i=JP.exec(n.text),i&&(s=i.index+i[0].length)));return s<0?-1:(n.addElement(n.elt("URL",t,s+n.offset)),s+n.offset)}}]},xk=[bZ,yZ,OZ,wZ];function Pk(n,e,t){return(r,i,s)=>{if(i!=n||r.char(s+1)==n)return-1;let o=[r.elt(t,s,s+1)];for(let a=s+1;a<r.end;a++){let l=r.char(a);if(l==n)return r.addElement(r.elt(e,s,a+1,o.concat(r.elt(t,a,a+1))));if(l==92&&o.push(r.elt("Escape",a,a+++2)),wr(l))break}return-1}}var kk={defineNodes:[{name:"Superscript",style:g.special(g.content)},{name:"SuperscriptMark",style:g.processingInstruction}],parseInline:[{name:"Superscript",parse:Pk(94,"Superscript","SuperscriptMark")}]},$k={defineNodes:[{name:"Subscript",style:g.special(g.content)},{name:"SubscriptMark",style:g.processingInstruction}],parseInline:[{name:"Subscript",parse:Pk(126,"Subscript","SubscriptMark")}]},Qk={defineNodes:[{name:"Emoji",style:g.character}],parseInline:[{name:"Emoji",parse(n,e,t){let r;return e!=58||!(r=/^[a-zA-Z_0-9]+:/.exec(n.slice(t+1,n.end)))?-1:n.addElement(n.elt("Emoji",t,t+1+r[0].length))}}]};var xZ=55,PZ=1,kZ=56,$Z=2,QZ=57,TZ=3,Tk=4,AZ=5,eb=6,Dk=7,Zk=8,Ik=9,Xk=10,CZ=11,_Z=12,EZ=13,GO=58,RZ=14,MZ=15,Ak=59,zk=21,LZ=23,Wk=24,DZ=25,KO=27,Nk=28,ZZ=29,IZ=32,XZ=35,zZ=37,WZ=38,NZ=0,BZ=1,VZ={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},FZ={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},Ck={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function YZ(n){return n==45||n==46||n==58||n>=65&&n<=90||n==95||n>=97&&n<=122||n>=161}var _k=null,Ek=null,Rk=0;function JO(n,e){let t=n.pos+e;if(Rk==t&&Ek==n)return _k;let r=n.peek(e),i="";for(;YZ(r);)i+=String.fromCharCode(r),r=n.peek(++e);return Ek=n,Rk=t,_k=i?i.toLowerCase():r==jZ||r==UZ?void 0:null}var Bk=60,jh=62,tb=47,jZ=63,UZ=33,qZ=45;function Mk(n,e){this.name=n,this.parent=e}var GZ=[eb,Xk,Dk,Zk,Ik],HZ=new da({start:null,shift(n,e,t,r){return GZ.indexOf(e)>-1?new Mk(JO(r,1)||"",n):n},reduce(n,e){return e==zk&&n?n.parent:n},reuse(n,e,t,r){let i=e.type.id;return i==eb||i==zZ?new Mk(JO(r,1)||"",n):n},strict:!1}),KZ=new Rt((n,e)=>{if(n.next!=Bk){n.next<0&&e.context&&n.acceptToken(GO);return}n.advance();let t=n.next==tb;t&&n.advance();let r=JO(n,0);if(r===void 0)return;if(!r)return n.acceptToken(t?MZ:RZ);let i=e.context?e.context.name:null;if(t){if(r==i)return n.acceptToken(CZ);if(i&&FZ[i])return n.acceptToken(GO,-2);if(e.dialectEnabled(NZ))return n.acceptToken(_Z);for(let s=e.context;s;s=s.parent)if(s.name==r)return;n.acceptToken(EZ)}else{if(r=="script")return n.acceptToken(Dk);if(r=="style")return n.acceptToken(Zk);if(r=="textarea")return n.acceptToken(Ik);if(VZ.hasOwnProperty(r))return n.acceptToken(Xk);i&&Ck[i]&&Ck[i][r]?n.acceptToken(GO,-1):n.acceptToken(eb)}},{contextual:!0}),JZ=new Rt(n=>{for(let e=0,t=0;;t++){if(n.next<0){t&&n.acceptToken(Ak);break}if(n.next==qZ)e++;else if(n.next==jh&&e>=2){t>=3&&n.acceptToken(Ak,-2);break}else e=0;n.advance()}});function eI(n){for(;n;n=n.parent)if(n.name=="svg"||n.name=="math")return!0;return!1}var tI=new Rt((n,e)=>{if(n.next==tb&&n.peek(1)==jh){let t=e.dialectEnabled(BZ)||eI(e.context);n.acceptToken(t?AZ:Tk,2)}else n.next==jh&&n.acceptToken(Tk,1)});function nb(n,e,t){let r=2+n.length;return new Rt(i=>{for(let s=0,o=0,a=0;;a++){if(i.next<0){a&&i.acceptToken(e);break}if(s==0&&i.next==Bk||s==1&&i.next==tb||s>=2&&s<r&&i.next==n.charCodeAt(s-2))s++,o++;else if(s==r&&i.next==jh){a>o?i.acceptToken(e,-o):i.acceptToken(t,-(o-2));break}else if((i.next==10||i.next==13)&&a){i.acceptToken(e,1);break}else s=o=0;i.advance()}})}var nI=nb("script",xZ,PZ),rI=nb("style",kZ,$Z),iI=nb("textarea",QZ,TZ),sI=Kt({"Text RawText IncompleteTag IncompleteCloseTag":g.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":g.angleBracket,TagName:g.tagName,"MismatchedCloseTag/TagName":[g.tagName,g.invalid],AttributeName:g.attributeName,"AttributeValue UnquotedAttributeValue":g.attributeValue,Is:g.definitionOperator,"EntityReference CharacterReference":g.character,Comment:g.blockComment,ProcessingInst:g.processingInstruction,DoctypeDecl:g.documentMeta}),Vk=Rn.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~",goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"\u26A0 StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:68,context:HZ,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,22,31,34,37,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,30,33,36,38,"OpenTag"],["group",-10,14,15,18,19,20,21,40,41,42,43,"Entity",17,"Entity TextContent",-3,29,32,35,"TextContent Entity"],["isolate",-11,22,30,31,33,34,36,37,38,39,42,43,"ltr",-3,27,28,40,""]],propSources:[sI],skippedNodes:[0],repeatNodeCount:9,tokenData:"!<p!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|caPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bXaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UVaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pTaPOv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!dpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({WaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!b`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!b`!dpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYlWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]`aP!b`!dp!_^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebiSlWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXiSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0mS1bP;=`<%l0m[1hP;=`<%l/^!V1vciSaP!b`!dpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R<%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`<%l1k!_3[P;=`<%l-_!Z3hV!ahaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_4WiiSlWd!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V<QciSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!<TXjSaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X",tokenizers:[nI,rI,iI,tI,KZ,JZ,0,1,2,3,4,5],topRules:{Document:[0,16]},dialects:{noMatch:0,selfClosing:515},tokenPrec:517});function Fk(n,e){let t=Object.create(null);for(let r of n.getChildren(Wk)){let i=r.getChild(DZ),s=r.getChild(KO)||r.getChild(Nk);i&&(t[e.read(i.from,i.to)]=s?s.type.id==KO?e.read(s.from+1,s.to-1):e.read(s.from,s.to):"")}return t}function Lk(n,e){let t=n.getChild(LZ);return t?e.read(t.from,t.to):" "}function HO(n,e,t){let r;for(let i of t)if(!i.attrs||i.attrs(r||(r=Fk(n.node.parent.firstChild,e))))return{parser:i.parser,bracketed:!0};return null}function rb(n=[],e=[]){let t=[],r=[],i=[],s=[];for(let a of n)(a.tag=="script"?t:a.tag=="style"?r:a.tag=="textarea"?i:s).push(a);let o=e.length?Object.create(null):null;for(let a of e)(o[a.name]||(o[a.name]=[])).push(a);return Fd((a,l)=>{let c=a.type.id;if(c==ZZ)return HO(a,l,t);if(c==IZ)return HO(a,l,r);if(c==XZ)return HO(a,l,i);if(c==zk&&s.length){let d=a.node,h=d.firstChild,u=h&&Lk(h,l),f;if(u){for(let m of s)if(m.tag==u&&(!m.attrs||m.attrs(f||(f=Fk(h,l))))){let O=d.lastChild,S=O.type.id==WZ?O.from:d.to;if(S>h.to)return{parser:m.parser,overlay:[{from:h.to,to:S}]}}}}if(o&&c==Wk){let d=a.node,h;if(h=d.firstChild){let u=o[l.read(h.from,h.to)];if(u)for(let f of u){if(f.tagName&&f.tagName!=Lk(d.parent,l))continue;let m=d.lastChild;if(m.type.id==KO){let O=m.from+1,S=m.lastChild,x=m.to-(S&&S.isError?0:1);if(x>O)return{parser:f.parser,overlay:[{from:O,to:x}],bracketed:!0}}else if(m.type.id==Nk)return{parser:f.parser,overlay:[{from:m.from,to:m.to}]}}}}return null})}var oI=148,Yk=1,aI=149,lI=150,Uk=2,cI=151,dI=3,hI=4,qk=[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],uI=58,fI=40,Gk=95,pI=91,Uh=45,mI=46,gI=35,OI=37,bI=38,yI=92,SI=10,vI=42;function Nl(n){return n>=65&&n<=90||n>=97&&n<=122||n>=161}function ib(n){return n>=48&&n<=57}function jk(n){return ib(n)||n>=97&&n<=102||n>=65&&n<=70}var Hk=(n,e,t)=>(r,i)=>{for(let s=!1,o=0,a=0;;a++){let{next:l}=r;if(Nl(l)||l==Uh||l==Gk||s&&ib(l))!s&&(l!=Uh||a>0)&&(s=!0),o===a&&l==Uh&&o++,r.advance();else if(l==yI&&r.peek(1)!=SI){if(r.advance(),jk(r.next)){do r.advance();while(jk(r.next));r.next==32&&r.advance()}else r.next>-1&&r.advance();s=!0}else{s&&r.acceptToken(o==2&&i.canShift(Uk)?e:l==fI?t:n);break}}},wI=new Rt(Hk(aI,Uk,lI),{contextual:!0}),xI=new Rt(Hk(cI,dI,hI),{contextual:!0}),PI=new Rt(n=>{if(qk.includes(n.peek(-1))){let{next:e}=n;(Nl(e)||e==Gk||e==gI||e==mI||e==vI||e==pI||e==uI&&Nl(n.peek(1))||e==Uh||e==bI)&&n.acceptToken(oI)}}),kI=new Rt(n=>{if(!qk.includes(n.peek(-1))){let{next:e}=n;if(e==OI&&(n.advance(),n.acceptToken(Yk)),Nl(e)){do n.advance();while(Nl(n.next)||ib(n.next));n.acceptToken(Yk)}}}),$I=Kt({"AtKeyword import charset namespace keyframes media supports font-feature-values":g.definitionKeyword,"from to selector scope MatchFlag":g.keyword,NamespaceName:g.namespace,KeyframeName:g.labelName,KeyframeRangeName:g.operatorKeyword,TagName:g.tagName,ClassName:g.className,PseudoClassName:g.constant(g.className),IdName:g.labelName,"FeatureName PropertyName":g.propertyName,AttributeName:g.attributeName,NumberLiteral:g.number,KeywordQuery:g.keyword,UnaryQueryOp:g.operatorKeyword,"CallTag ValueName FontName":g.atom,VariableName:g.variableName,Callee:g.operatorKeyword,Unit:g.unit,"UniversalSelector NestingSelector":g.definitionOperator,"MatchOp CompareOp":g.compareOperator,"ChildOp SiblingOp, LogicOp":g.logicOperator,BinOp:g.arithmeticOperator,Important:g.modifier,Comment:g.blockComment,ColorLiteral:g.color,"ParenthesizedContent StringLiteral":g.string,":":g.punctuation,"PseudoOp #":g.derefOperator,"; , |":g.separator,"( )":g.paren,"[ ]":g.squareBracket,"{ }":g.brace}),QI={__proto__:null,lang:44,"nth-child":44,"nth-last-child":44,"nth-of-type":44,"nth-last-of-type":44,dir:44,"host-context":44,if:90,url:158,"url-prefix":158,domain:158,regexp:158},TI={__proto__:null,or:104,and:104,not:112,only:112,layer:212},AI={__proto__:null,selector:118,style:124,layer:208},CI={__proto__:null,"@import":204,"@media":216,"@charset":220,"@namespace":224,"@keyframes":230,"@supports":242,"@scope":246,"@font-feature-values":252},_I={__proto__:null,to:249},Kk=Rn.deserialize({version:14,states:"MrQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FqO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#ERO'dQdO'#ETO'oQdO'#E[O'oQdO'#E_OOQP'#Fq'#FqO)RQhO'#FQOOQS'#Fp'#FpOOQS'#FT'#FTQYQdOOO)YQdO'#EeO*iQhO'#EkO)YQdO'#EmO*pQdO'#EoO*{QdO'#ErO)}QhO'#ExO+TQdO'#EzO+`QdO'#E}O+eQaO'#CfO+lQ`O'#EbO+qQ`O'#F}O+|QdO'#F}QOQ`OOP,WO&jO'#CaPOOO)CA`)CA`OOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,cQdO,59YO'_QdO,5:mO'dQdO,5:oO'oQdO,5:vO'oQdO,5:xO'oQdO,5:yO'oQdO'#F[O,nQ`O,58}O,vQdO'#EaOOQS,58},58}OOQP'#Cq'#CqOOQO'#EP'#EPOOQP,59Y,59YO,}Q`O,59YO-SQ`O,59YOOQP'#ES'#ESOOQP,5:m,5:mO-XQpO'#EUO-dQdO'#EVO-iQ`O'#EVO-nQpO,5:oO.XQaO,5:vO.oQaO,5:yOOQW'#D^'#D^O/nQhO'#DgO0RQhO,5;lO)}QhO'#DeO0`Q`O'#DnO0eQhO'#D{OOQW'#Fw'#FwOOQS,5;l,5;lO0jQ`O'#DhO0oQ`O'#DkOOQS-E9R-E9ROOQ['#Cv'#CvO0tQdO'#CwO1[QdO'#C}O1rQdO'#DQO2YQ!pO'#DSO4fQ!jO,5;POOQO'#DX'#DXO-SQ`O'#DWO4vQ!nO'#FtO6|Q`O'#DYO7RQ`O'#D|OOQ['#Ft'#FtO7WQhO'#GQO7fQ`O,5;VO7kQ!bO,5;XOOQS'#Eq'#EqO7sQ`O,5;ZO7xQdO,5;ZOOQO'#Et'#EtO8QQ`O,5;^O8VQhO,5;dO'oQdO'#DjOOQS,5;f,5;fO0jQ`O,5;fO8_QdO,5;fOOQS'#Fc'#FcO8gQdO'#FPO7fQ`O,5;iO8oQdO,5:|O9PQdO'#F^O9^Q`O,5<iO9^Q`O,5<iPOOO'#FS'#FSP9iO&jO,58{POOO,58{,58{OOQP1G.m1G.mOOQP1G.q1G.qOOQP1G.t1G.tO,}Q`O1G.tO-SQ`O1G.tOOQP1G0X1G0XO9tQpO1G0ZO9|QaO1G0bO:dQaO1G0dO:zQaO1G0eO;bQaO,5;vOOQO-E9Y-E9YOOQS1G.i1G.iO;lQ`O,5:{O;qQdO'#EQO;xQdO'#CuOOQO'#EX'#EXOOQO,5:q,5:qO-dQdO,5:qOOQP1G0Z1G0ZO)YQdO1G0ZO<PQ!jO'#D^O<_Q!bO,59yO<gQhO,5:ROOQO'#Fx'#FxO<bQ!bO,59}O<oQhO'#FdO)}QhO,59{O)}QhO'#FdO=gQhO1G1WOOQS1G1W1G1WO=qQhO,5:PO>lQhO'#DoOOQW,5:Y,5:YOOQW,5:g,5:gOOQW,5:S,5:SO>vQhO,5:VO?bQ!fO'#FuOOQS'#Fu'#FuOOQS'#FV'#FVO@rQdO,59cOOQ[,59c,59cOAYQdO,59iOOQ[,59i,59iOApQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)YQdO,59pOBWQhO'#EgOOQW'#Eg'#EgOBuQ`O1G0kO4oQhO1G0kOOQ[,59r,59rO)}QhO'#D[OOQ[,59t,59tOBzQ#tO,5:hOCVQhO'#F`OCdQ`O,5<lOOQS1G0q1G0qOOQS1G0s1G0sOOQS1G0u1G0uOCoQ`O1G0uOCtQdO'#EuOOQS1G0x1G0xOOQS1G1O1G1OODPQaO,5:UO7fQ`O1G1QOOQS1G1Q1G1QO0jQ`O1G1QOOQS-E9a-E9aOOQS1G1T1G1TODWQ!fO1G0hODnQ`O'#EdOOQO1G0h1G0hOOQO,5;x,5;xODsQdO,5;xOOQO-E9[-E9[OEQQ`O1G2TPOOO-E9Q-E9QPOOO1G.g1G.gOOQP7+$`7+$`OOQP7+%u7+%uO)YQdO7+%uOOQS1G0g1G0gOE]QaO'#F|OEgQ`O,5:lOElQ!fO'#FUOFjQdO'#FsOFtQ`O,59aOOQO1G0]1G0]OFyQ!bO7+%uO)YQdO1G/eOGUQhO1G/iOOQW1G/m1G/mOOQW1G/g1G/gOGgQhO,5<OOOQW-E9b-E9bOOQS7+&r7+&rOH_QhO'#D^OHmQhO'#F{OHxQ`O'#F{OH}Q`O,5:ZOISQ!bO'#D`O>vQhO'#DmOI_QhO'#DsOIgQhO'#DuOIlQ!jO'#FzOOQO'#Fz'#FzOIwQ`O'#DxOJPQ!bO'#DzOOQO'#Fy'#FyOJUQ`O1G/qOOQS-E9T-E9TOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OJZQdO,5;ROOQS7+&V7+&VOJ`Q`O7+&VOJeQhO'#D]OJmQ`O,59vO)}QhO,59vOOQ[1G0S1G0SOJuQ`O1G0SOJzQhO,5;zOOQO-E9^-E9^OOQS7+&a7+&aOKYQbO'#DSOOQO'#Ew'#EwOKhQ`O'#EvOOQO'#Ev'#EvOKsQ`O'#FaOK{QdO,5;aOOQS,5;a,5;aOOQ[1G/p1G/pOOQS7+&l7+&lO7fQ`O7+&lOLWQ!fO'#F]O)YQdO'#F]OM_QdO7+&SOOQO7+&S7+&SOOQO,5;O,5;OOOQO1G1d1G1dOMrQ!bO<<IaOM}QdO'#FZONXQ`O,5<hOOQP1G0W1G0WOOQS-E9S-E9SONaQdO'#FYONkQ`O,5<_OOQ]1G.{1G.{OOQP<<Ia<<IaONsQ`O<<IaONxQdO7+%POOQO'#D`'#D`O! PQ!bO7+%TO! XQhO'#FXO! fQ`O,5<gO)YQdO,5<gOOQW1G/u1G/uO! nQ`O,5:XO>vQhO'#DtOOQO,5:_,5:_O! sQhO,5:aO! {QhO,5:fO)YQdO,5:dOOQW7+%]7+%]OOQO'#Ei'#EiO!!SQ`O1G0mOOQS<<Iq<<IqO)YQdO,59wO!!vQhO1G/bOOQ[1G/b1G/bO!!}Q`O1G/bOOQW-E9U-E9UOOQ[7+%n7+%nOOQO,5;b,5;bOCwQdO'#FbOKsQ`O,5;{OOQS,5;{,5;{OOQS-E9_-E9_OOQS1G0{1G0{OOQS<<JW<<JWO!#VQ!fO,5;wOOQS-E9Z-E9ZOOQO<<In<<InOOQPAN>{AN>{O!$^Q`OAN>{O!$cQaO,5;uOOQO-E9X-E9XO!$mQdO,5;tOOQO-E9W-E9WOOQW<<Hk<<HkOOQW<<Ho<<HoO!$wQhO<<HoO!%YQhO'#D^O!%hQhO,5;sO!%sQ`O,5;sOOQO-E9V-E9VO!%xQdO1G2RO!&SQhO1G/sO!&[Q`O,5:`O>vQhO'#DwOOQO1G/{1G/{O!&aQ!bO1G0QO!&iQdO1G0OOJZQdO'#F_O!&pQ`O7+&XOOQW7+&X7+&XO!&xQ!bO1G/cOOQ[7+$|7+$|O!'TQhO7+$|P!'[Q`O'#FWOOQO,5;|,5;|OOQO-E9`-E9`OOQS1G1g1G1gOOQPG24gG24gO!'aQ`OAN>ZO)YQdO1G1_O!'fQ`O7+'mOOQO1G/z1G/zO!'nQ`O,5:cO!'sQhO7+%lOOQO,5;y,5;yOOQO-E9]-E9]OOQW<<Is<<IsOOQ[<<Hh<<HhPOQW,5;r,5;rOOQWG23uG23uO!'zQdO7+&yOOQO1G/}1G/}OOQO<<IW<<IW",stateData:"!(_~O$_OS$`QQ~OWVO^_O`WOcYOdYOl`OmZOp[O#P]O#S^O#YdO#`eO#bfO#dgO#ghO#miO#ojO#rkO$ZRO$fTO~OQmOWVO^_O`WOcYOdYOl`OmZOp[O#P]O#S^O#YdO#`eO#bfO#dgO#ghO#miO#ojO#rkO$ZlO$fTO~O$X$qP~P!jO$`qO~O`YXcYXdYXmYXpYXsYX!eYX#PYX#SYX$YYX$f[X~OgYX~P$ZO$ZsO~O$fuO~O$fuO`$eXc$eXd$eXm$eXp$eXs$eX!e$eX#P$eX#S$eX$Y$eXg$eX~O$ZvO~O`xOcyOdyOmzOp{O#P|O#S!OO$Y}O~Os!RO!e!PO~P&^Of!XO$Z!TO$[!UO~O$Z!YO~OW!^O$Z![O$f!]O~OWVO^_O`WOcYOdYOmZOp[O#P]O#S^O$ZRO$fTO~OS!fOc!gOd!gOh!cOs!RO!Y!eO!]!jO!`!kO$]!bO~On!iO~P(dOQ!uOh!nOp!oOs!pOu!xOw!xO}!vO!q!wO$Z!mO$[!sO$j!qO~OS!fOc!gOd!gOh!cO!Y!eO!]!jO!`!kO$]!bO~Os$tP~P)}Ow!}O!q!wO$Z!|O~Ow#PO$Z#PO~Oh#SOs!RO#p#UO~O$Z#WO~Oc#VX~P$ZOc#ZO~On#[O$X$qXr$qX~O$X$qXr$qX~P!jO$a#_O$b#_O$c#aO~Of#fO$Z!TO$[!UO~Os!RO!e!PO~Or$qP~P!jOh#pO~Oh#qO~Oo!xX!|!xX$f!zX~O$Z#rO~O$f#tO~Oo#uO!|#vO~O`xOcyOdyOmzOp{O~Os#Oa!e#Oa#P#Oa#S#Oa$Y#Oag#Oa~P-vOs#Ra!e#Ra#P#Ra#S#Ra$Y#Rag#Ra~P-vOS!fOc!gOd!gOh!cO!Y!eO!]!jO!`!kO~OR#zOu#zOw#zO$]#wO$j!qO~P/VOn$QO!U#}O!e$OO~P(dOh$SO~O$]$UO~Oh#SO~Oh$WO~O`$YOc$YOg$]Ol$YOm$YOn$YO~P)YO`$YOc$YOl$YOm$YOn$YOo$_O~P)YO`$YOc$YOl$YOm$YOn$YOr$aO~P)YOP$bOSvXcvXdvXhvXnvXyvX!YvX!]vX!`vX#[vX#^vX$]vX!WvXQvX`vXgvXlvXmvXpvXsvXuvXwvX}vX!qvX$ZvX$[vX$jvXovXrvX!evX$XvX$svX!}vX~Oy$cO#[$dO#^$eOn$tP~P)}Oh#qOS$hXc$hXd$hXn$hXy$hX!Y$hX!]$hX!`$hX#[$hX#^$hX$]$hXQ$hX`$hXg$hXl$hXm$hXp$hXs$hXu$hXw$hX}$hX!q$hX$Z$hX$[$hX$j$hXo$hXr$hX!e$hX$X$hX$s$hX!}$hX~Oh$iO~Oh$kO~O!U#}O!e$lOs$tXn$tX~Os!RO~On$oOy$cO~On$pO~Ow$qO!q!wO~Os$rO~Os!RO!U#}O~Os!RO#p$xO~O$Z#WOs#sX~O$s$|On#Ua$X#Uar#Ua~P)YOn$QX$X$QXr$QX~P!jOn#[O$X$qar$qa~O$a#_O$b#_O$c%TO~Oo%VO!|%WO~Os#Oi!e#Oi#P#Oi#S#Oi$Y#Oig#Oi~P-vOs#Qi!e#Qi#P#Qi#S#Qi$Y#Qig#Qi~P-vOs#Ri!e#Ri#P#Ri#S#Ri$Y#Rig#Ri~P-vOs$Oa!e$Oa~P&^Or%XO~Og$pP~P'oOg$gP~P)YOc!SXg!QX!U!QX!W!SX~Oc%aO!W%bO~Og%cO!U#}O~O!U#}OS$WXc$WXd$WXh$WXn$WXs$WX!Y$WX!]$WX!`$WX!e$WX$]$WX~On%gO!e$OO~P(dO!U#}OS!Xac!Xad!Xah!Xan!Xas!Xa!Y!Xa!]!Xa!`!Xa!e!Xa$]!Xag!Xa~O$]%hOg$oP~P/VOR#zOS!fOh%mOu#zOw#zO!Y%nO$]%lO$j!qO~Oy$cOQ$iX`$iXc$iXg$iXh$iXl$iXm$iXn$iXp$iXs$iXu$iXw$iX}$iX!q$iX$Z$iX$[$iX$j$iXo$iXr$iX~O`$YOc$YOg%wOl$YOm$YOn$YO~P)YO`$YOc$YOl$YOm$YOn$YOo%xO~P)YO`$YOc$YOl$YOm$YOn$YOr%yO~P)YOh%{OS#ZXc#ZXd#ZXn#ZX!Y#ZX!]#ZX!`#ZX$]#ZX~On%|O~Og&ROw&SO!r&SO~Os$SX!e$SXn$SX~P)}O!e$lOs$tan$ta~On&VO~Or&^O$Z&XO$j&WO~Og&_O~P&^Oy$cO!e&cO$s$|On#Ui$X#Uir#Ui~P)YO$r&fO~On$Qa$X$Qar$Qa~P!jOn#[O$X$qir$qi~O!e&iOg$pX~P&^Og&kO~Oy$cOQ#xXg#xXh#xXp#xXs#xXu#xXw#xX}#xX!e#xX!q#xX$Z#xX$[#xX$j#xX~O!e&mOg$gX~P)YOg&oO~Oo&pOy$cO!}&qO~OR#zOu#zOw#zO$]&sO$j!qO~O!U#}OS$Wac$Wad$Wah$Wan$Was$Wa!Y$Wa!]$Wa!`$Wa!e$Wa$]$Wa~Oc!dXg!QX!U!QX!e!QX~O!U#}O!e&uOg$oX~Oc&wO~Og&xO~Oc!mXg!mX!W!SX~OS!fOh&zO~O!U&|O~O!U&|O!W&}Og$nX~Oc'OOg!lX~O!W&}O~Og'PO~O$Z'QO~On'SO~Oc'TO!U#}O~Og'VOn'UO~Og'YO~O!U#}Os$Sa!e$San$Sa~OP$bOsvX!evXgvX~O$j&WOs#jX!e#jX~Os!RO!e'[O~Or'`O$Z&XO$j&WO~Oy$cOQ$PXh$PXn$PXp$PXs$PXu$PXw$PX}$PX!e$PX!q$PX$X$PX$Z$PX$[$PX$j$PX$s$PXr$PX~O!e&cO$s$|On#Uq$X#Uqr#Uq~P)YOo'eOy$cO!}'fO~Og#}X!e#}X~P'oO!e&iOg$pa~Og#|X!e#|X~P)YO!e&mOg$ga~Oo'eO~Og'kO~P)YOg'lO!W'mO~O$]'nOg#{X!e#{X~P/VO!e&uOg$oa~Og'sO~OS!fOh'uO~OS!fO~PGUO`'yOg'{O~OS#zac#zad#zah#za!Y#za!]#za!`#za$]#za~Og'}O~P!![Og'}On(OO~Oy$cOQ$Pah$Pan$Pap$Pas$Pau$Paw$Pa}$Pa!e$Pa!q$Pa$X$Pa$Z$Pa$[$Pa$j$Pa$s$Par$Pa~Oo(TO~Og#}a!e#}a~P&^Og#|a!e#|a~P)YOR#zOu#zOw#zO$]&sO$j&WO~Oc!fXg!QX!U!QX!e!QX~O!U#}Og#{a!e#{a~Oc(VO~O!e&uOg$oi~P)YOg!ai!U!ji~Og(XO~O!W(ZOg!ni~Og!li~P)YO`'yOg(^O~Oy$cOg!Pin!Pi~Og(_O~P!![On(`O~Og(aO~O!e&uOg$oq~Og(cO~OS!fO~P!$wOg#{q!e#{q~P)YO$_!r$`$j`$jy#S~",goto:"7g$uPPPPP$vP$yP%S%f%S%x&[P%SP&b%SPP&hPPP&n&x&xPPPPP&xPP&xP'hP&xP&x(k&xP)Z)^)d)d)v)dP)dP)dP)d)dP*])dP*i*o+e+hP+k*i+n*i+q+w+z,Q+z)d,WPP,|-S%S-Y%S-`-`-f-jPP%SP%S%SP-p.l.y/Q$yP/ZP/^P$yP$yP$yP/d$yP/g/j/m/t$yP$yPP$yP/y$yP/|0S0c0}1]1c1m1s1y2P2V2a2g2m2s2y3PPPPPPPPPPPP3V3`P4U4X5]P5e6_6t+z7Q7T7WPP7^RrQ_aOPco!R#[%Pq_OP]^co|}!O!P!R#S#[#p%P&iqSOP]^co|}!O!P!R#S#[#p%P&iqUOP]^co|}!O!P!R#S#[#p%P&iQtTR#buQwWR#cxQ!VYR#dyQ#d!XS$h!t!uR%U#f!Z!xdf!n!o!p#Z#q#v$[$^$`$c${%W%]%a&c&d&m&r&w'O'T'i'r'x(V(b!Y!xdf!n!o!p#Z#q#v$[$^$`$c${%W%]%a&c&d&m&r&w'O'T'i'r'x(V(bb#z!c$W%b%m&z&}'m'u(ZU&Z$r&]'[R'Z&Y!Z!tdf!n!o!p#Z#q#v$[$^$`$c${%W%]%a&c&d&m&r&w'O'T'i'r'x(V(bR$j!vQ&P$iR'W&Qq!h`ei!c!d!e!r#}$O$P$S$g$i$l&Q&uQ#x!cW%s$W%m&z'uQ&t%bQ'w&}Q(U'mR(d(ZQ#VjQ$V!jQ$v#UR&a$xX%q$W%m&z'up!h`ei!c!d!e!r#}$O$P$S$g$i$l&Q&uW%p$W%m&z'uQ&{%nQ'v&|Q'w&}R(d(ZR$T!fR%j$SR'p&uR&{%nX%o$W%m&z'uR'v&|X%t$W%m&z'uX%r$W%m&z'u!Y!xdf!n!o!p#Z#q#v$[$^$`$c${%W%]%a&c&d&m&r&w'O'T'i'r'x(V(bQ!}gR$q#OQ!WYR#eyQ#d!WR%U#eQ!ZZR#gzQ!_[R#h{T!^[{Q#s!]R%_#tQ!SXQ!i`Q#TjQ#n!QQ$Q!dQ$n!zQ$t#RQ$w#VQ$z#YQ%g$PQ&`$vQ'^&[Q'a&aR(S']SnP!RQ#^oQ%O#[R&g%PZmPo!R#[%PQ$}#ZQ&e${R'd&dR$g!rQ'R%{R(['yR#OgR#QhR$s#QS&[$r&]R(Q'[V&Y$r&]'[R#YkQ#`qR%S#`QcOSoP!RU!lco%PR%P#[Q%]#q[&l%]&r'i'r'x(bQ&r%aQ'i&mQ'r&wQ'x'OR(b(VQ$[!nQ$^!oQ$`!pV%v$[$^$`Q&Q$iR'X&QQ&v%iS'q&v(WR(W'rQ&n%]R'j&nQ&j%YR'h&jQ!QXR#m!QQ&d${R'c&dQ#]nS%Q#]%RR%R#^Q'z'RR(]'zQ$m!yR&U$mQ&]$rR'_&]Q']&[R(R']Q#XkR$y#XQ$P!dR%f$P_bOPco!R#[%P^XOPco!R#[%PQ!`]Q!a^Q#i|Q#j}Q#k!OQ#l!PQ$u#SQ%Y#pR'g&iR%^#qQ!rdQ!{f[$X!n!o!p$[$^$`Q${#Zh%[#q%]%a&m&r&w'O'i'r'x(V(bQ%`#vQ%z$cS&b${&dQ&h%WQ'b&cR'|'T]$Z!n!o!p$[$^$`Q!d`U!ye!r$gQ#RiQ#y!cS#|!d$PQ$R!eQ%d#}Q%e$OQ%i$SS&O$i&QQ&T$lR'o&uQ#{!cW%s$W%m&z'uQ&t%bQ'w&}Q(U'mR(d(ZQ%u$WQ&y%mQ't&zR(Y'uR%k$SR%Z#pQpPR#o!RQ!zeQ$f!rR%}$g",nodeNames:"\u26A0 Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NamespacedTagSelector NamespaceName TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector StyleQuery style ParenthesedQuery CallQuery ArgList PropertyName , PropertyName UnaryQuery ParenthesedQuery BinaryQuery ParenthesedQuery ParenthesedQuery StyleFeature PropertyName StyleRange PseudoQuery CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName NamespacedAttribute NamespaceName AttributeName MatchOp MatchFlag ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to FontFeatureStatement font-feature-values FontName AtRule Styles",maxTerm:174,nodeProps:[["isolate",-2,5,39,""],["openedBy",23,"(",31,"[",34,"{"],["closedBy",24,")",32,"]",35,"}"]],propSources:[$I],skippedNodes:[0,5,130],repeatNodeCount:17,tokenData:"K`~R!bOX%ZX^&R^p%Zpq&Rqr)ers)vst+jtu2Xuv%Zvw3Rwx3dxy5Ryz5dz{5i{|6S|}:u}!O;W!O!P;u!P!Q<^!Q![=V![!]>Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!r`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$_~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$_~!r`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$sYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!r`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!r`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!r`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!r`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!r`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!r`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!r`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!r`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!|S!r`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW#SQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!r`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!r`$jYOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!r`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!r`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!r`$jYOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!r`$jYOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!eYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~<cTyWOy%jz{<r{;'S%j;'S;=`%{<%lO%j~<yS!r`$`~Oy%jz;'S%j;'S;=`%{<%lO%jj=[[$jYOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj>VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!r`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!r`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!|SOy%jz;'S%j;'S;=`%{<%lO%jj@uV#PQ!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS#PQ!r`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!r`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!r`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!}WOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!}WOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!r`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!r`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!r`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!r`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!r`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!r`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!r`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$rQ!r`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$fUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU#SQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z",tokenizers:[PI,kI,wI,xI,1,2,3,4,new oi("m~RRYZ[z{a~~g~aO$b~~dP!P!Qg~lO$c~~",28,155)],topRules:{StyleSheet:[0,6],Styles:[1,129]},dynamicPrecedences:{97:1},specialized:[{term:150,get:n=>QI[n]||-1},{term:151,get:n=>TI[n]||-1},{term:4,get:n=>AI[n]||-1},{term:28,get:n=>CI[n]||-1},{term:149,get:n=>_I[n]||-1}],tokenPrec:2444});var sb=null;function ob(){if(!sb&&typeof document=="object"&&document.body){let{style:n}=document.body,e=[],t=new Set;for(let r in n)r!="cssText"&&r!="cssFloat"&&typeof n[r]=="string"&&(/[A-Z]/.test(r)&&(r=r.replace(/[A-Z]/g,i=>"-"+i.toLowerCase())),t.has(r)||(e.push(r),t.add(r)));sb=e.sort().map(r=>({type:"property",label:r,apply:r+": "}))}return sb||[]}var Jk=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(n=>({type:"class",label:n})),e$=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(n=>({type:"keyword",label:n})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(n=>({type:"constant",label:n}))),EI=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(n=>({type:"type",label:n})),RI=["@charset","@color-profile","@container","@counter-style","@font-face","@font-feature-values","@font-palette-values","@import","@keyframes","@layer","@media","@namespace","@page","@position-try","@property","@scope","@starting-style","@supports","@view-transition"].map(n=>({type:"keyword",label:n})),Ei=/^(\w[\w-]*|-\w[\w-]*|)$/,MI=/^-(-[\w-]*)?$/;function LI(n,e){var t;if((n.name=="("||n.type.isError)&&(n=n.parent||n),n.name!="ArgList")return!1;let r=(t=n.parent)===null||t===void 0?void 0:t.firstChild;return(r==null?void 0:r.name)!="Callee"?!1:e.sliceString(r.from,r.to)=="var"}var t$=new jo,DI=["Declaration"];function ZI(n){for(let e=n;;){if(e.type.isTop)return e;if(!(e=e.parent))return n}}function n$(n,e,t){if(e.to-e.from>4096){let r=t$.get(e);if(r)return r;let i=[],s=new Set,o=e.cursor(We.IncludeAnonymous);if(o.firstChild())do for(let a of n$(n,o.node,t))s.has(a.label)||(s.add(a.label),i.push(a));while(o.nextSibling());return t$.set(e,i),i}else{let r=[],i=new Set;return e.cursor().iterate(s=>{var o;if(t(s)&&s.matchContext(DI)&&((o=s.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let a=n.sliceString(s.from,s.to);i.has(a)||(i.add(a),r.push({label:a,type:"variable"}))}}),r}}var II=n=>e=>{let{state:t,pos:r}=e,i=ze(t).resolveInner(r,-1),s=i.type.isError&&i.from==i.to-1&&t.doc.sliceString(i.from,i.to)=="-";if(i.name=="PropertyName"||(s||i.name=="TagName")&&/^(Block|Styles)$/.test(i.resolve(i.to).name))return{from:i.from,options:ob(),validFor:Ei};if(i.name=="ValueName")return{from:i.from,options:e$,validFor:Ei};if(i.name=="PseudoClassName")return{from:i.from,options:Jk,validFor:Ei};if(n(i)||(e.explicit||s)&&LI(i,t.doc))return{from:n(i)||s?i.from:r,options:n$(t.doc,ZI(i),n),validFor:MI};if(i.name=="TagName"){for(let{parent:l}=i;l;l=l.parent)if(l.name=="Block")return{from:i.from,options:ob(),validFor:Ei};return{from:i.from,options:EI,validFor:Ei}}if(i.name=="AtKeyword")return{from:i.from,options:RI,validFor:Ei};if(!e.explicit)return null;let o=i.resolve(r),a=o.childBefore(r);return a&&a.name==":"&&o.name=="PseudoClassSelector"?{from:r,options:Jk,validFor:Ei}:a&&a.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:r,options:e$,validFor:Ei}:o.name=="Block"||o.name=="Styles"?{from:r,options:ob(),validFor:Ei}:null},XI=II(n=>n.name=="VariableName"),Bl=Jt.define({name:"css",parser:Kk.configure({props:[En.add({Declaration:Gn()}),dn.add({"Block KeyframeList":Ft})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function r$(){return new Ye(Bl,Bl.data.of({autocomplete:XI}))}var zI=316,WI=317,i$=1,NI=2,BI=3,VI=4,FI=318,YI=320,jI=321,UI=5,qI=6,GI=0,lb=[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],s$=125,HI=59,cb=47,KI=42,JI=43,e5=45,t5=60,n5=44,r5=63,i5=46,s5=91,o5=new da({start:!1,shift(n,e){return e==UI||e==qI||e==YI?n:e==jI},strict:!1}),a5=new Rt((n,e)=>{let{next:t}=n;(t==s$||t==-1||e.context)&&n.acceptToken(FI)},{contextual:!0,fallback:!0}),l5=new Rt((n,e)=>{let{next:t}=n,r;lb.indexOf(t)>-1||t==cb&&((r=n.peek(1))==cb||r==KI)||t!=s$&&t!=HI&&t!=-1&&!e.context&&n.acceptToken(zI)},{contextual:!0}),c5=new Rt((n,e)=>{n.next==s5&&!e.context&&n.acceptToken(WI)},{contextual:!0}),d5=new Rt((n,e)=>{let{next:t}=n;if(t==JI||t==e5){if(n.advance(),t==n.next){n.advance();let r=!e.context&&e.canShift(i$);n.acceptToken(r?i$:NI)}}else t==r5&&n.peek(1)==i5&&(n.advance(),n.advance(),(n.next<48||n.next>57)&&n.acceptToken(BI))},{contextual:!0});function ab(n,e){return n>=65&&n<=90||n>=97&&n<=122||n==95||n>=192||!e&&n>=48&&n<=57}var h5=new Rt((n,e)=>{if(n.next!=t5||!e.dialectEnabled(GI)||(n.advance(),n.next==cb))return;let t=0;for(;lb.indexOf(n.next)>-1;)n.advance(),t++;if(ab(n.next,!0)){for(n.advance(),t++;ab(n.next,!1);)n.advance(),t++;for(;lb.indexOf(n.next)>-1;)n.advance(),t++;if(n.next==n5)return;for(let r=0;;r++){if(r==7){if(!ab(n.next,!0))return;break}if(n.next!="extends".charCodeAt(r))break;n.advance(),t++}}n.acceptToken(VI,-t)}),u5=Kt({"get set async static":g.modifier,"for while do if else switch try catch finally return throw break continue default case defer":g.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":g.operatorKeyword,"let var const using function class extends":g.definitionKeyword,"import export from":g.moduleKeyword,"with debugger new":g.keyword,TemplateString:g.special(g.string),super:g.atom,BooleanLiteral:g.bool,this:g.self,null:g.null,Star:g.modifier,VariableName:g.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":g.function(g.variableName),VariableDefinition:g.definition(g.variableName),Label:g.labelName,PropertyName:g.propertyName,PrivatePropertyName:g.special(g.propertyName),"CallExpression/MemberExpression/PropertyName":g.function(g.propertyName),"FunctionDeclaration/VariableDefinition":g.function(g.definition(g.variableName)),"ClassDeclaration/VariableDefinition":g.definition(g.className),"NewExpression/VariableName":g.className,PropertyDefinition:g.definition(g.propertyName),PrivatePropertyDefinition:g.definition(g.special(g.propertyName)),UpdateOp:g.updateOperator,"LineComment Hashbang":g.lineComment,BlockComment:g.blockComment,Number:g.number,String:g.string,Escape:g.escape,ArithOp:g.arithmeticOperator,LogicOp:g.logicOperator,BitOp:g.bitwiseOperator,CompareOp:g.compareOperator,RegExp:g.regexp,Equals:g.definitionOperator,Arrow:g.function(g.punctuation),": Spread":g.punctuation,"( )":g.paren,"[ ]":g.squareBracket,"{ }":g.brace,"InterpolationStart InterpolationEnd":g.special(g.brace),".":g.derefOperator,", ;":g.separator,"@":g.meta,TypeName:g.typeName,TypeDefinition:g.definition(g.typeName),"type enum interface implements namespace module declare":g.definitionKeyword,"abstract global Privacy readonly override":g.modifier,"is keyof unique infer asserts":g.operatorKeyword,JSXAttributeValue:g.attributeValue,JSXText:g.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":g.angleBracket,"JSXIdentifier JSXNameSpacedName":g.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":g.attributeName,"JSXBuiltin/JSXIdentifier":g.standard(g.tagName)}),f5={__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},p5={__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},m5={__proto__:null,"<":193},o$=Rn.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*XO!k)OP~P!1uO#k*aO~O!l*bO~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*dO(VTO(YUO(a$uO(y$}O(z%PO~O![*gO!Y)PP~P!3tOr*sOs!nO!S*iO!b*qO!c*kO!d*kO!l*bO#[*rO%`*mO(U!lO(VTO(YUO(e!mO~O!^*pO~P!5iO#S$dOn(`X!Q(`X'y(`X(y(`X(z(`X!](`X#`(`X~Og(`X$O(`X~P!6kOn*xO#`*wOg(_X!](_X~O!]*yOg(^X~Oj%dOk%dOl%dO(T&ZOg(^P~Os*|O~Og)}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%hO![+ZO!](^O!_%iO(T%gO!Y(vP~Os'[O!S+]O![+[O(VTO(YUO(e(|O~O!^(xP~P!9|O!]+^Oa)TX'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%WO![/mO!](^O(T/lO!Y(vP!Y)PP~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:"\u26A0 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:o5,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:[u5],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:[l5,c5,d5,h5,2,3,4,5,6,7,8,9,10,11,12,13,14,a5,new oi("$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 oi("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:n=>f5[n]||-1},{term:343,get:n=>p5[n]||-1},{term:95,get:n=>m5[n]||-1}],tokenPrec:15201});var d$=[vn("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),vn("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),vn("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),vn("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),vn("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),vn(`try {
\${}
} catch (\${error}) {
\${}
}`,{label:"try",detail:"/ catch block",type:"keyword"}),vn("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),vn(`if (\${}) {
\${}
} else {
\${}
}`,{label:"if",detail:"/ else block",type:"keyword"}),vn(`class \${name} {
constructor(\${params}) {
\${}
}
}`,{label:"class",detail:"definition",type:"keyword"}),vn('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),vn('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],g5=d$.concat([vn("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),vn("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),vn("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),a$=new jo,h$=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Vl(n){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,n),!0}}var O5=["FunctionDeclaration"],b5={FunctionDeclaration:Vl("function"),ClassDeclaration:Vl("class"),ClassExpression:()=>!0,EnumDeclaration:Vl("constant"),TypeAliasDeclaration:Vl("type"),NamespaceDeclaration:Vl("namespace"),VariableDefinition(n,e){n.matchContext(O5)||e(n,"variable")},TypeDefinition(n,e){e(n,"type")},__proto__:null};function u$(n,e){let t=a$.get(e);if(t)return t;let r=[],i=!0;function s(o,a){let l=n.sliceString(o.from,o.to);r.push({label:l,type:a})}return e.cursor(We.IncludeAnonymous).iterate(o=>{if(i)i=!1;else if(o.name){let a=b5[o.name];if(a&&a(o,s)||h$.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of u$(n,o.node))r.push(a);return!1}}),a$.set(e,r),r}var l$=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,f$=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function y5(n){let e=ze(n.state).resolveInner(n.pos,-1);if(f$.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&l$.test(n.state.sliceDoc(e.from,e.to));if(!t&&!n.explicit)return null;let r=[];for(let i=e;i;i=i.parent)h$.has(i.name)&&(r=r.concat(u$(n.state.doc,i)));return{options:r,from:t?e.from:n.pos,validFor:l$}}var Yr=Jt.define({name:"javascript",parser:o$.configure({props:[En.add({IfStatement:Gn({except:/^\s*({|else\b)/}),TryStatement:Gn({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Iw,SwitchBody:n=>{let e=n.textAfter,t=/^\s*\}/.test(e),r=/^\s*(case|default)\b/.test(e);return n.baseIndent+(t?0:r?1:2)*n.unit},Block:Go({closing:"}"}),ArrowFunction:n=>n.baseIndent+n.unit,"TemplateString BlockComment":()=>null,"Statement Property":Gn({except:/^\s*{/}),JSXElement(n){let e=/^\s*<\//.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},JSXEscape(n){let e=/\s*\}/.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},"JSXOpenTag JSXSelfClosingTag"(n){return n.column(n.node.from)+n.unit}}),dn.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":Ft,BlockComment(n){return{from:n.from+2,to:n.to-2}},JSXElement(n){let e=n.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=n.lastChild;return{from:e.to,to:t.type.isError?n.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(n){var e;let t=(e=n.firstChild)===null||e===void 0?void 0:e.nextSibling,r=n.lastChild;return!t||t.type.isError?null:{from:t.to,to:r.type.isError?n.to:r.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),p$={test:n=>/^JSX/.test(n.name),facet:Uo({commentTokens:{block:{open:"{/*",close:"*/}"}}})},db=Yr.configure({dialect:"ts"},"typescript"),hb=Yr.configure({dialect:"jsx",props:[Jd.add(n=>n.isTop?[p$]:void 0)]}),ub=Yr.configure({dialect:"jsx ts",props:[Jd.add(n=>n.isTop?[p$]:void 0)]},"typescript"),m$=n=>({label:n,type:"keyword"}),g$="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(m$),S5=g$.concat(["declare","implements","private","protected","public"].map(m$));function O$(n={}){let e=n.jsx?n.typescript?ub:hb:n.typescript?db:Yr,t=n.typescript?g5.concat(S5):d$.concat(g$);return new Ye(e,[Yr.data.of({autocomplete:ix(f$,rx(t))}),Yr.data.of({autocomplete:y5}),n.jsx?x5:[]])}function v5(n){for(;;){if(n.name=="JSXOpenTag"||n.name=="JSXSelfClosingTag"||n.name=="JSXFragmentTag")return n;if(n.name=="JSXEscape"||!n.parent)return null;n=n.parent}}function c$(n,e,t=n.length){for(let r=e==null?void 0:e.firstChild;r;r=r.nextSibling)if(r.name=="JSXIdentifier"||r.name=="JSXBuiltin"||r.name=="JSXNamespacedName"||r.name=="JSXMemberExpression")return n.sliceString(r.from,Math.min(r.to,t));return""}var w5=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),x5=F.inputHandler.of((n,e,t,r,i)=>{if((w5?n.composing:n.compositionStarted)||n.state.readOnly||e!=t||r!=">"&&r!="/"||!Yr.isActiveAt(n.state,e,-1))return!1;let s=i(),{state:o}=s,a=o.changeByRange(l=>{var c;let{head:d}=l,h=ze(o).resolveInner(d-1,-1),u;if(h.name=="JSXStartTag"&&(h=h.parent),!(o.doc.sliceString(d-1,d)!=r||h.name=="JSXAttributeValue"&&h.to>d)){if(r==">"&&h.name=="JSXFragmentTag")return{range:l,changes:{from:d,insert:"</>"}};if(r=="/"&&h.name=="JSXStartCloseTag"){let f=h.parent,m=f.parent;if(m&&f.from==d-2&&((u=c$(o.doc,m.firstChild,d))||((c=m.firstChild)===null||c===void 0?void 0:c.name)=="JSXFragmentTag")){let O=`${u}>`;return{range:z.cursor(d+O.length,-1),changes:{from:d,insert:O}}}}else if(r==">"){let f=v5(h);if(f&&f.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(d,d+2))&&(u=c$(o.doc,f,d)))return{range:l,changes:{from:d,insert:`</${u}>`}}}}return{range:l}});return a.changes.empty?!1:(n.dispatch([s,o.update(a,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var Fl=["_blank","_self","_top","_parent"],fb=["ascii","utf-8","utf-16","latin1","latin1"],pb=["get","post","put","delete"],mb=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],Jn=["true","false"],Se={},P5={a:{attrs:{href:null,ping:null,type:null,media:null,target:Fl,hreflang:null}},abbr:Se,address:Se,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:Se,aside:Se,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:Se,base:{attrs:{href:null,target:Fl}},bdi:Se,bdo:Se,blockquote:{attrs:{cite:null}},body:Se,br:Se,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:mb,formmethod:pb,formnovalidate:["novalidate"],formtarget:Fl,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:Se,center:Se,cite:Se,code:Se,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:Se,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:Se,div:Se,dl:Se,dt:Se,em:Se,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:Se,figure:Se,footer:Se,form:{attrs:{action:null,name:null,"accept-charset":fb,autocomplete:["on","off"],enctype:mb,method:pb,novalidate:["novalidate"],target:Fl}},h1:Se,h2:Se,h3:Se,h4:Se,h5:Se,h6:Se,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:Se,hgroup:Se,hr:Se,html:{attrs:{manifest:null}},i:Se,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:mb,formmethod:pb,formnovalidate:["novalidate"],formtarget:Fl,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:Se,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:Se,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:Se,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:fb,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:Se,noscript:Se,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:Se,param:{attrs:{name:null,value:null}},pre:Se,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:Se,rt:Se,ruby:Se,samp:Se,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:fb}},section:Se,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:Se,source:{attrs:{src:null,type:null,media:null}},span:Se,strong:Se,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:Se,summary:Se,sup:Se,table:Se,tbody:Se,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:Se,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:Se,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:Se,time:{attrs:{datetime:null}},title:Se,tr:Se,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:Se,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:Se},v$={accesskey:null,class:null,contenteditable:Jn,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:Jn,autocorrect:Jn,autocapitalize:Jn,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":Jn,"aria-autocomplete":["inline","list","both","none"],"aria-busy":Jn,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":Jn,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":Jn,"aria-hidden":Jn,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":Jn,"aria-multiselectable":Jn,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":Jn,"aria-relevant":null,"aria-required":Jn,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},w$="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(n=>"on"+n);for(let n of w$)v$[n]=null;var oo=class{constructor(e,t){this.tags=Ue(Ue({},P5),e),this.globalAttrs=Ue(Ue({},v$),t),this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};oo.default=new oo;function ao(n,e,t=n.length){if(!e)return"";let r=e.firstChild,i=r&&r.getChild("TagName");return i?n.sliceString(i.from,Math.min(i.to,t)):""}function ua(n,e=!1){for(;n;n=n.parent)if(n.name=="Element")if(e)e=!1;else return n;return null}function x$(n,e,t){let r=t.tags[ao(n,ua(e))];return(r==null?void 0:r.children)||t.allTags}function gb(n,e){let t=[];for(let r=ua(e);r&&!r.type.isTop;r=ua(r.parent)){let i=ao(n,r);if(i&&r.lastChild.name=="CloseTag")break;i&&t.indexOf(i)<0&&(e.name=="EndTag"||e.from>=r.firstChild.to)&&t.push(i)}return t}var P$=/^[:\-\.\w\u00b7-\uffff]*$/;function b$(n,e,t,r,i){let s=/\s*>/.test(n.sliceDoc(i,i+5))?"":">",o=ua(t,t.name=="StartTag"||t.name=="TagName");return{from:r,to:i,options:x$(n.doc,o,e).map(a=>({label:a,type:"type"})).concat(gb(n.doc,t).map((a,l)=>({label:"/"+a,apply:"/"+a+s,type:"type",boost:99-l}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function y$(n,e,t,r){let i=/\s*>/.test(n.sliceDoc(r,r+5))?"":">";return{from:t,to:r,options:gb(n.doc,e).map((s,o)=>({label:s,apply:s+i,type:"type",boost:99-o})),validFor:P$}}function k5(n,e,t,r){let i=[],s=0;for(let o of x$(n.doc,t,e))i.push({label:"<"+o,type:"type"});for(let o of gb(n.doc,t))i.push({label:"</"+o+">",type:"type",boost:99-s++});return{from:r,to:r,options:i,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function $5(n,e,t,r,i){let s=ua(t),o=s?e.tags[ao(n.doc,s)]:null,a=o&&o.attrs?Object.keys(o.attrs):[],l=o&&o.globalAttrs===!1?a:a.length?a.concat(e.globalAttrNames):e.globalAttrNames;return{from:r,to:i,options:l.map(c=>({label:c,type:"property"})),validFor:P$}}function Q5(n,e,t,r,i){var s;let o=(s=t.parent)===null||s===void 0?void 0:s.getChild("AttributeName"),a=[],l;if(o){let c=n.sliceDoc(o.from,o.to),d=e.globalAttrs[c];if(!d){let h=ua(t),u=h?e.tags[ao(n.doc,h)]:null;d=(u==null?void 0:u.attrs)&&u.attrs[c]}if(d){let h=n.sliceDoc(r,i).toLowerCase(),u='"',f='"';/^['"]/.test(h)?(l=h[0]=='"'?/^[^"]*$/:/^[^']*$/,u="",f=n.sliceDoc(i,i+1)==h[0]?"":h[0],h=h.slice(1),r++):l=/^[^\s<>='"]*$/;for(let m of d)a.push({label:m,apply:u+m+f,type:"constant"})}}return{from:r,to:i,options:a,validFor:l}}function k$(n,e){let{state:t,pos:r}=e,i=ze(t).resolveInner(r,-1),s=i.resolve(r);for(let o=r,a;s==i&&(a=i.childBefore(o));){let l=a.lastChild;if(!l||!l.type.isError||l.from<l.to)break;s=i=a,o=l.from}return i.name=="TagName"?i.parent&&/CloseTag$/.test(i.parent.name)?y$(t,i,i.from,r):b$(t,n,i,i.from,r):i.name=="StartTag"||i.name=="IncompleteTag"?b$(t,n,i,r,r):i.name=="StartCloseTag"||i.name=="IncompleteCloseTag"?y$(t,i,r,r):i.name=="OpenTag"||i.name=="SelfClosingTag"||i.name=="AttributeName"?$5(t,n,i,i.name=="AttributeName"?i.from:r,r):i.name=="Is"||i.name=="AttributeValue"||i.name=="UnquotedAttributeValue"?Q5(t,n,i,i.name=="Is"?r:i.from,r):e.explicit&&(s.name=="Element"||s.name=="Text"||s.name=="Document")?k5(t,n,i,r):null}function $$(n){return k$(oo.default,n)}function T5(n){let{extraTags:e,extraGlobalAttributes:t}=n,r=t||e?new oo(e,t):oo.default;return i=>k$(r,i)}var A5=Yr.parser.configure({top:"SingleExpression"}),Q$=[{tag:"script",attrs:n=>n.type=="text/typescript"||n.lang=="ts",parser:db.parser},{tag:"script",attrs:n=>n.type=="text/babel"||n.type=="text/jsx",parser:hb.parser},{tag:"script",attrs:n=>n.type=="text/typescript-jsx",parser:ub.parser},{tag:"script",attrs(n){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(n.type)},parser:A5},{tag:"script",attrs(n){return!n.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(n.type)},parser:Yr.parser},{tag:"style",attrs(n){return(!n.lang||n.lang=="css")&&(!n.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(n.type))},parser:Bl.parser}],T$=[{name:"style",parser:Bl.parser.configure({top:"Styles"})}].concat(w$.map(n=>({name:n,parser:Yr.parser}))),A$=Jt.define({name:"html",parser:Vk.configure({props:[En.add({Element(n){let e=/^(\s*)(<\/)?/.exec(n.textAfter);return n.node.to<=n.pos+e[0].length?n.continue():n.lineIndent(n.node.from)+(e[2]?0:n.unit)},"OpenTag CloseTag SelfClosingTag"(n){return n.column(n.node.from)+n.unit},Document(n){if(n.pos+/\s*/.exec(n.textAfter)[0].length<n.node.to)return n.continue();let e=null,t;for(let r=n.node;;){let i=r.lastChild;if(!i||i.name!="Element"||i.to!=r.to)break;e=r=i}return e&&!((t=e.lastChild)&&(t.name=="CloseTag"||t.name=="SelfClosingTag"))?n.lineIndent(e.from)+n.unit:null}}),dn.add({Element(n){let e=n.firstChild,t=n.lastChild;return!e||e.name!="OpenTag"?null:{from:e.to,to:t.name=="CloseTag"?t.from:n.to}}}),ug.add({"OpenTag CloseTag":n=>n.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:"<!--",close:"-->"}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),qh=A$.configure({wrap:rb(Q$,T$)});function C$(n={}){let e="",t;n.matchClosingTags===!1&&(e="noMatch"),n.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(n.nestedLanguages&&n.nestedLanguages.length||n.nestedAttributes&&n.nestedAttributes.length)&&(t=rb((n.nestedLanguages||[]).concat(Q$),(n.nestedAttributes||[]).concat(T$)));let r=t?A$.configure({wrap:t,dialect:e}):e?qh.configure({dialect:e}):qh;return new Ye(r,[qh.data.of({autocomplete:T5(n)}),n.autoCloseTags!==!1?_5:[],O$().support,r$().support])}var S$=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" "));function C5(n,e,t){for(var r;;){if(((r=e.lastChild)===null||r===void 0?void 0:r.name)!="CloseTag")return!1;let i=e.parent;if(!i||ao(n,i)!=t)return!0;e=i}}var _5=F.inputHandler.of((n,e,t,r,i)=>{if(n.composing||n.state.readOnly||e!=t||r!=">"&&r!="/"||!qh.isActiveAt(n.state,e,-1))return!1;let s=i(),{state:o}=s,a=o.changeByRange(l=>{var c;let d=o.doc.sliceString(l.from-1,l.to)==r,{head:h}=l,u=ze(o).resolveInner(h,-1),f;if(d&&r==">"&&u.name=="EndTag"){let m=u.parent;if((f=ao(o.doc,m.parent,h))&&!S$.has(f)&&!C5(o.doc,m.parent,f)){let O=h+(o.doc.sliceString(h,h+1)===">"?1:0),S=`</${f}>`;return{range:l,changes:{from:h,to:O,insert:S}}}}else if(d&&r=="/"&&u.name=="IncompleteCloseTag"){let m=u.parent;if(u.from==h-2&&((c=m.lastChild)===null||c===void 0?void 0:c.name)!="CloseTag"&&(f=ao(o.doc,m,h))&&!S$.has(f)){let O=h+(o.doc.sliceString(h,h+1)===">"?1:0),S=`${f}>`;return{range:z.cursor(h+S.length,-1),changes:{from:h,to:O,insert:S}}}}return{range:l}});return a.changes.empty?!1:(n.dispatch([s,o.update(a,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var R$=Uo({commentTokens:{block:{open:"<!--",close:"-->"}}}),M$=new xe,L$=Sk.configure({props:[dn.add(n=>!n.is("Block")||n.is("Document")||yb(n)!=null||E5(n)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),M$.add(yb),En.add({Document:()=>null}),Ai.add({Document:R$})]});function yb(n){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(n.name);return e?+e[1]:void 0}function E5(n){return n.name=="OrderedList"||n.name=="BulletList"}function R5(n,e){let t=n;for(;;){let r=t.nextSibling,i;if(!r||(i=yb(r.type))!=null&&i<=e)break;t=r}return t.to}var M5=cg.of((n,e,t)=>{for(let r=ze(n).resolveInner(t,-1);r&&!(r.from<e);r=r.parent){let i=r.type.prop(M$);if(i==null)continue;let s=R5(r,i);if(s>t)return{from:t,to:s}}return null});function Sb(n){return new cn(R$,n,[],"markdown")}var L5=Sb(L$),D5=L$.configure([xk,$k,kk,Qk,{props:[dn.add({Table:(n,e)=>({from:e.doc.lineAt(n.from).to,to:n.to})})]}]),Gh=Sb(D5);function Z5(n,e){return t=>{if(t&&n){let r=null;if(t=/\S*/.exec(t)[0],typeof n=="function"?r=n(t):r=bl.matchLanguageName(n,t,!0),r instanceof bl)return r.support?r.support.language.parser:Us.getSkippingParser(r.load());if(r)return r.parser}return e?e.parser:null}}var Yl=class{constructor(e,t,r,i,s,o,a){this.node=e,this.from=t,this.to=r,this.spaceBefore=i,this.spaceAfter=s,this.type=o,this.item=a}blank(e,t=!0){let r=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;r.length<e;)r+=" ";return r}else{for(let i=this.to-this.from-r.length-this.spaceAfter.length;i>0;i--)r+=" ";return r+(t?this.spaceAfter:"")}}marker(e,t){let r=this.node.name=="OrderedList"?String(+Z$(this.item,e)[2]+t):"";return this.spaceBefore+r+this.type+this.spaceAfter}};function D$(n,e){let t=[],r=[];for(let i=n;i;i=i.parent){if(i.name=="FencedCode")return r;(i.name=="ListItem"||i.name=="Blockquote")&&t.push(i)}for(let i=t.length-1;i>=0;i--){let s=t[i],o,a=e.lineAt(s.from),l=s.from-a.from;if(s.name=="Blockquote"&&(o=/^ *>( ?)/.exec(a.text.slice(l))))r.push(new Yl(s,l,l+o[0].length,"",o[1],">",null));else if(s.name=="ListItem"&&s.parent.name=="OrderedList"&&(o=/^( *)\d+([.)])( *)/.exec(a.text.slice(l)))){let c=o[3],d=o[0].length;c.length>=4&&(c=c.slice(0,c.length-4),d-=4),r.push(new Yl(s.parent,l,l+d,o[1],c,o[2],s))}else if(s.name=="ListItem"&&s.parent.name=="BulletList"&&(o=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(a.text.slice(l)))){let c=o[4],d=o[0].length;c.length>4&&(c=c.slice(0,c.length-4),d-=4);let h=o[2];o[3]&&(h+=o[3].replace(/[xX]/," ")),r.push(new Yl(s.parent,l,l+d,o[1],c,h,s))}}return r}function Z$(n,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(n.from,n.from+10))}function Ob(n,e,t,r=0){for(let i=-1,s=n;;){if(s.name=="ListItem"){let a=Z$(s,e),l=+a[2];if(i>=0){if(l!=i+1)return;t.push({from:s.from+a[1].length,to:s.from+a[0].length,insert:String(i+2+r)})}i=l}let o=s.nextSibling;if(!o)break;s=o}}function vb(n,e){let t=/^[ \t]*/.exec(n)[0].length;if(!t||e.facet(yr)!=" ")return n;let r=Gt(n,4,t),i="";for(let s=r;s>0;)s>=4?(i+=" ",s-=4):(i+=" ",s--);return i+n.slice(t)}var I5=(n={})=>({state:e,dispatch:t})=>{let r=ze(e),{doc:i}=e,s=null,o=e.changeByRange(a=>{if(!a.empty||!Gh.isActiveAt(e,a.from,-1)&&!Gh.isActiveAt(e,a.from,1))return s={range:a};let l=a.from,c=i.lineAt(l),d=D$(r.resolveInner(l,-1),i);for(;d.length&&d[d.length-1].from>l-c.from;)d.pop();if(!d.length)return s={range:a};let h=d[d.length-1];if(h.to-h.spaceAfter.length>l-c.from)return s={range:a};let u=l>=h.to-h.spaceAfter.length&&!/\S/.test(c.text.slice(h.to));if(h.item&&u){if(h.item.from<c.from&&!/^[\s>]*$/.test(c.text.slice(0,h.to)))return s={range:a};let x=h.node.firstChild,D=h.node.getChild("ListItem","ListItem");if(x.to>=l||D&&D.to<l||c.from>0&&!/[^\s>]/.test(i.lineAt(c.from-1).text)||n.nonTightLists===!1){let M=d.length>1?d[d.length-2]:null,Z,k="";M&&M.item?(Z=c.from+M.from,k=M.marker(i,1)):Z=c.from+(M?M.to:0);let w=[{from:Z,to:l,insert:k}];return h.node.name=="OrderedList"&&Ob(h.item,i,w,-2),M&&M.node.name=="OrderedList"&&Ob(M.item,i,w),{range:z.cursor(Z+k.length),changes:w}}else{let M=E$(d,e,c);return{range:z.cursor(l+M.length+1),changes:{from:c.from,insert:M+e.lineBreak}}}}if(h.node.name=="Blockquote"&&u&&c.from){let x=i.lineAt(c.from-1),D=/>\s*$/.exec(x.text);if(D&&D.index==h.from){let M=e.changes([{from:x.from+D.index,to:x.to},{from:c.from+h.from,to:c.to}]);return{range:a.map(M),changes:M}}}let f=[];h.node.name=="OrderedList"&&Ob(h.item,i,f);let m=h.item&&h.item.from<c.from,O="";if(!m||/^[\s\d.)\-+*>]*/.exec(c.text)[0].length>=h.to)for(let x=0,D=d.length-1;x<=D;x++)O+=x==D&&!m?d[x].marker(i,1):d[x].blank(x<D?Gt(c.text,4,d[x+1].from)-O.length:null);let S=l;for(;S>c.from&&/\s/.test(c.text.charAt(S-c.from-1));)S--;return O=vb(O,e),z5(h.node,e.doc)&&(O=E$(d,e,c)+e.lineBreak+O),f.push({from:S,to:l,insert:e.lineBreak+O}),{range:z.cursor(S+O.length+1),changes:f}});return s?!1:(t(e.update(o,{scrollIntoView:!0,userEvent:"input"})),!0)},X5=I5();function _$(n){return n.name=="QuoteMark"||n.name=="ListMark"}function z5(n,e){if(n.name!="OrderedList"&&n.name!="BulletList")return!1;let t=n.firstChild,r=n.getChild("ListItem","ListItem");if(!r)return!1;let i=e.lineAt(t.to),s=e.lineAt(r.from),o=/^[\s>]*$/.test(i.text);return i.number+(o?0:1)<s.number}function E$(n,e,t){let r="";for(let i=0,s=n.length-2;i<=s;i++)r+=n[i].blank(i<s?Gt(t.text,4,n[i+1].from)-r.length:null,i<s);return vb(r,e)}function W5(n,e){let t=n.resolveInner(e,-1),r=e;_$(t)&&(r=t.from,t=t.parent);for(let i;i=t.childBefore(r);)if(_$(i))r=i.from;else if(i.name=="OrderedList"||i.name=="BulletList")t=i.lastChild,r=t.to;else break;return t}var N5=({state:n,dispatch:e})=>{let t=ze(n),r=null,i=n.changeByRange(s=>{let o=s.from,{doc:a}=n;if(s.empty&&Gh.isActiveAt(n,s.from)){let l=a.lineAt(o),c=D$(W5(t,o),a);if(c.length){let d=c[c.length-1],h=d.to-d.spaceAfter.length+(d.spaceAfter?1:0);if(o-l.from>h&&!/\S/.test(l.text.slice(h,o-l.from)))return{range:z.cursor(l.from+h),changes:{from:l.from+h,to:o}};if(o-l.from==h&&(d.item&&l.from<=d.item.from||/^[\s>]*$/.test(l.text.slice(0,d.to)))){let u=l.from+d.from;if(d.item&&d.node.from<d.item.from&&/\S/.test(l.text.slice(d.from,d.to))){let f=d.blank(Gt(l.text,4,d.to)-Gt(l.text,4,d.from));return u==l.from&&(f=vb(f,n)),{range:z.cursor(u+f.length),changes:{from:u,to:l.from+d.to,insert:f}}}if(u<o)return{range:z.cursor(u),changes:{from:u,to:o}}}}}return r={range:s}});return r?!1:(e(n.update(i,{scrollIntoView:!0,userEvent:"delete"})),!0)},B5=[{key:"Enter",run:X5},{key:"Backspace",run:N5}],I$=C$({matchClosingTags:!1});function X$(n={}){let{codeLanguages:e,defaultCodeLanguage:t,addKeymap:r=!0,base:{parser:i}=L5,completeHTMLTags:s=!0,pasteURLAsLink:o=!0,htmlTagLanguage:a=I$}=n;if(!(i instanceof Xl))throw new RangeError("Base parser provided to `markdown` should be a Markdown parser");let l=n.extensions?[n.extensions]:[],c=[a.support,M5],d;o&&c.push(j5),t instanceof Ye?(c.push(t.support),d=t.language):t&&(d=t);let h=e||d?Z5(e,d):void 0;l.push(vk({codeParser:h,htmlParser:a.language.parser})),r&&c.push(pr.high(Sn.of(B5)));let u=Sb(i.configure(l));return s&&c.push(u.data.of({autocomplete:V5})),new Ye(u,c)}function V5(n){let{state:e,pos:t}=n,r=/<[:\-\.\w\u00b7-\uffff]*$/.exec(e.sliceDoc(t-25,t));if(!r)return null;let i=ze(e).resolveInner(t,-1);for(;i&&!i.type.isTop;){if(i.name=="CodeBlock"||i.name=="FencedCode"||i.name=="ProcessingInstructionBlock"||i.name=="CommentBlock"||i.name=="Link"||i.name=="Image")return null;i=i.parent}return{from:t-r[0].length,to:t,options:F5(),validFor:/^<[:\-\.\w\u00b7-\uffff]*$/}}var bb=null;function F5(){if(bb)return bb;let n=$$(new nh(Me.create({extensions:I$}),0,!0));return bb=n?n.options:[]}var Y5=/code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i,j5=F.domEventHandlers({paste:(n,e)=>{var t;let{main:r}=e.state.selection;if(r.empty)return!1;let i=(t=n.clipboardData)===null||t===void 0?void 0:t.getData("text/plain");if(!i||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(i)||(/^www\./.test(i)&&(i="https://"+i),!Gh.isActiveAt(e.state,r.from,1)))return!1;let s=ze(e.state),o=!1;return s.iterate({from:r.from,to:r.to,enter:a=>{(a.from>r.from||Y5.test(a.name))&&(o=!0)},leave:a=>{a.to<r.to&&(o=!0)}}),o?!1:(e.dispatch({changes:[{from:r.from,insert:"["},{from:r.to,insert:`](${i})`}],userEvent:"input.paste",scrollIntoView:!0}),!0)}});var wb={"text/x-csrc":{language:cO(),parser:null},6502:{language:MP(),parser:null},z80:{language:ZP(),parser:null},"text/x-wiz":{language:IP(),parser:kO},verilog:{language:XP(),parser:QO},inform6:{language:zP(),parser:TO},dialog:{language:WP(),parser:AO},basic:{language:NP(),parser:_O},fastbasic:{language:BP(),parser:EO},bataribasic:{language:VP(),parser:RO},markdown:{language:X$(),parser:null},6809:{language:null,parser:null},vasm:{language:null,parser:null},gas:{language:null,parser:null},ecs:{language:null,parser:null}};function z$(n){var t;let e=wb[n];return(t=e==null?void 0:e.language)!=null?t:null}function xb(){return cO()}var U5=F.theme({"&":{backgroundColor:"#122c43",color:"#e6e6e6"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, ::selection":{backgroundColor:"#9191fb30 !important"},".cm-selectionMatch":{backgroundColor:"#445e8bc7"},".cm-activeLine":{backgroundColor:"#99eeff12"},".cm-activeLineGutter":{backgroundColor:"#57707b42"},"&.cm-focused .cm-matchingBracket":{outline:"1px solid grey"},".cm-gutters , .cm-panels":{backgroundColor:"#00305b",borderRight:"1px solid #666"},".cm-lineNumbers .cm-gutterElement":{color:"#dadada4d"},".gutter-bytes .cm-gutterElement":{color:"#0fddeeb0"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaaaaa45 11%, transparent 5%)"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="20"><path stroke="%23aaaaaa45" stroke-width="1" fill="none" d="M0 10H10L7 6M10 10L7 14"/></svg>')`,backgroundPosition:"left 50%"},".tab-stop-ruler":{color:"rgba(255,255,255,0.35)",backgroundColor:"#002240",borderBottom:"2px solid #0055ff88"}},{dark:!0}),q5=ns.define([{tag:g.standard(g.keyword),color:"#99ff99"},{tag:[g.name,g.standard(g.name)],color:"#eee"},{tag:g.variableName,color:"#76f6ff"},{tag:g.local(g.variableName),color:"#ffff99"},{tag:[g.deleted,g.macroName],color:"#ffbb99"},{tag:[g.processingInstruction,g.keyword,g.controlKeyword],color:"#c5bdff"},{tag:[g.string,g.inserted],color:"#68ff98"},{tag:[g.number,g.modifier],color:"#ff99ff"},{tag:[g.atom,g.bool,g.special(g.variableName)],color:"#ffc261"},{tag:g.definition(g.variableName),color:"#fff"},{tag:[g.propertyName,g.attributeName,g.tagName,g.self],color:"#b2ebf2"},{tag:g.definition(g.name),color:"#f0f0f0"},{tag:g.typeName,color:"#9be8c5"},{tag:g.bracket,color:"#d8d8d8"},{tag:g.comment,color:"#999"},{tag:g.link,color:"#c3b1e1"},{tag:g.meta,color:"#ffd9a0"},{tag:g.invalid,color:"#ff6666"},{tag:g.operator,color:"#ffa3f0"}]),Hh=[U5,th(q5)];var W$=F.theme({"&":{maxHeight:"100%"}});var Pb=F.theme({"&":{height:"100%"},".cm-currentpc":{backgroundColor:"#7e2a70 !important"},".currentpc-span-blocked":{backgroundColor:"#7e2a70 !important"},".currentpc-marker-blocked":{color:"#ffee33"},".highlight-lines":{backgroundColor:"#003399 !important"},".cm-traced-line":{},".cm-traced-line-h0":{backgroundColor:"rgba(70, 120, 255, 0.18)"},".cm-traced-line-h1":{backgroundColor:"rgba(80, 210, 170, 0.20)"},".cm-traced-line-h2":{backgroundColor:"rgba(255, 200, 60, 0.22)"},".cm-traced-line-h3":{backgroundColor:"rgba(255, 70, 50, 0.28)"},".cm-error-span":{textDecoration:"underline wavy red",backgroundColor:"rgba(255, 0, 0, 0.15)"},".gutter-offset .cm-gutterElement":{paddingRight:"0.25em"},".gutter-bytes .cm-gutterElement":{paddingLeft:"0.25em",paddingRight:"0.25em"},".gutter-currentpc .cm-gutterElement":{color:"#ff66ee"},".gutter-clock .cm-gutterElement":{paddingLeft:"0.25em",paddingRight:"0.25em"}});var G5=F.theme({"&":{backgroundColor:"#2c2c2c",color:"#ffffec",caretColor:"#ffffec"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, ::selection":{backgroundColor:"#a29b8c7b !important"},".cm-selectionMatch":{backgroundColor:"#ffffff30"},".cm-activeLine":{backgroundColor:"#ffffff0a"},".cm-activeLineGutter":{backgroundColor:"#68686588"},".cm-matchingBracket":{color:"#33ff33 !important"},".cm-matchingTag":{backgroundColor:"rgba(255,255,255,0.37)"},".cm-cursor":{borderLeftColor:"#ffffec"},".cm-gutters , .cm-panels":{backgroundColor:"#4e4e4e"},".cm-lineNumbers .cm-gutterElement":{color:"#dadada"},".gutter-bytes .cm-gutterElement":{color:"#999"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaaaaa45 11%, transparent 5%)"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="20"><path stroke="%23aaaaaa45" stroke-width="1" fill="none" d="M0 10H10L7 6M10 10L7 14"/></svg>')`,backgroundPosition:"left 50%"},".tab-stop-ruler":{color:"rgba(255,255,255,0.25)",backgroundColor:"#202020",borderBottom:"2px solid #4e4e4e"}},{dark:!0}),H5=ns.define([{tag:[g.processingInstruction],color:"#ff9cf7"},{tag:[g.keyword,g.controlKeyword,g.modifier],color:"#ffb928"},{tag:[g.name,g.standard(g.name),g.variableName],color:"#ffffec"},{tag:[g.deleted,g.macroName],color:"#00a8c6"},{tag:[g.string,g.inserted],color:"#b4fdb7"},{tag:[g.number],color:"#3abff8"},{tag:[g.atom,g.bool],color:"#02c7ea"},{tag:g.definition(g.variableName),color:"#88eeff"},{tag:[g.propertyName,g.attributeName,g.tagName,g.self],color:"#9ddfe9"},{tag:g.definition(g.name),color:"#88eeff"},{tag:[g.special(g.keyword),g.special(g.variableName)],color:"#fdda93"},{tag:[g.typeName,g.standard(g.keyword)],color:"#ffb928"},{tag:[g.bracket,g.constant(g.modifier)],color:"#8fdedd",fontWeight:"bold"},{tag:g.comment,color:"#95958a"},{tag:g.link,color:"#f54b07"},{tag:g.meta,color:"#aaddaa"},{tag:g.namespace,color:"#ffffec"},{tag:g.invalid,color:"#ffffec",borderBottom:"1px solid #636363"}]),Kh=[G5,th(H5)];var K5=["<<",">>","<=",">=","==","!=","&&","||"],J5="+-*/%<>!~&|^()[]#";function eX(n){let e=[],t=0;for(;t<n.length;){let r=n[t];if(/\s/.test(r)){t++;continue}if(r=="$"&&/[0-9a-fA-F]/.test(n[t+1]||"")){let s=t+1;for(;s<n.length&&/[0-9a-fA-F]/.test(n[s]);)s++;e.push({t:"num",v:n.substring(t,s),num:parseInt(n.substring(t+1,s),16)}),t=s;continue}if(/[0-9]/.test(r)){if(r=="0"&&(n[t+1]=="x"||n[t+1]=="X")){let s=t+2;for(;s<n.length&&/[0-9a-fA-F]/.test(n[s]);)s++;if(s==t+2)throw new Error("bad hex number");e.push({t:"num",v:n.substring(t,s),num:parseInt(n.substring(t+2,s),16)}),t=s}else{let s=t;for(;s<n.length&&/[0-9]/.test(n[s]);)s++;e.push({t:"num",v:n.substring(t,s),num:parseInt(n.substring(t,s),10)}),t=s}continue}if(/[A-Za-z_.]/.test(r)){let s=t;for(;s<n.length&&/[A-Za-z0-9_.$]/.test(n[s]);)s++;e.push({t:"id",v:n.substring(t,s)}),t=s;continue}let i=n.substring(t,t+2);if(K5.includes(i)){e.push({t:"op",v:i}),t+=2;continue}if(J5.includes(r)){e.push({t:"op",v:r}),t++;continue}throw new Error("unexpected character '"+r+"'")}return e}var kb=class{constructor(e){this.pos=0;this.toks=e}peek(){return this.toks[this.pos]}next(){return this.toks[this.pos++]}atOp(...e){let t=this.peek();return t&&t.t=="op"&&e.includes(t.v)?t.v:null}expect(e){let t=this.next();if(!t||t.t!="op"||t.v!=e)throw new Error("expected '"+e+"'")}parse(){let e=this.parseOr();if(this.pos!=this.toks.length)throw new Error("unexpected '"+this.peek().v+"'");return e}parseOr(){let e=this.parseAnd();for(;this.atOp("||");)this.next(),e={t:"bin",op:"||",a:e,b:this.parseAnd()};return e}parseAnd(){let e=this.parseBitOr();for(;this.atOp("&&");)this.next(),e={t:"bin",op:"&&",a:e,b:this.parseBitOr()};return e}parseBitOr(){let e=this.parseBitXor();for(;this.atOp("|");)this.next(),e={t:"bin",op:"|",a:e,b:this.parseBitXor()};return e}parseBitXor(){let e=this.parseBitAnd();for(;this.atOp("^");)this.next(),e={t:"bin",op:"^",a:e,b:this.parseBitAnd()};return e}parseBitAnd(){let e=this.parseEquality();for(;this.atOp("&");)this.next(),e={t:"bin",op:"&",a:e,b:this.parseEquality()};return e}parseEquality(){let e=this.parseRelational(),t;for(;t=this.atOp("==","!=");)this.next(),e={t:"bin",op:t,a:e,b:this.parseRelational()};return e}parseRelational(){let e=this.parseShift(),t;for(;t=this.atOp("<","<=",">",">=");)this.next(),e={t:"bin",op:t,a:e,b:this.parseShift()};return e}parseShift(){let e=this.parseAdditive(),t;for(;t=this.atOp("<<",">>");)this.next(),e={t:"bin",op:t,a:e,b:this.parseAdditive()};return e}parseAdditive(){let e=this.parseMultiplicative(),t;for(;t=this.atOp("+","-");)this.next(),e={t:"bin",op:t,a:e,b:this.parseMultiplicative()};return e}parseMultiplicative(){let e=this.parseUnary(),t;for(;t=this.atOp("*","/","%");)this.next(),e={t:"bin",op:t,a:e,b:this.parseUnary()};return e}parseUnary(){let e=this.atOp("-","!","~","+");return e?(this.next(),{t:"un",op:e,a:this.parseUnary()}):this.parsePrimary()}parsePrimary(){let e=this.next();if(!e)throw new Error("unexpected end of expression");if(e.t=="num")return{t:"num",v:e.num};if(e.t=="id")return{t:"id",name:e.v};if(e.t=="op"&&e.v=="("){let t=this.parseOr();return this.expect(")"),t}if(e.t=="op"&&e.v=="["){let t=this.parseOr();return this.expect("]"),{t:"mem",a:t}}if(e.t=="op"&&e.v=="#"){let t=this.next();if(!t||t.t!="id")throw new Error("expected a name after '#'");if(this.atOp("[")){this.next();let r=this.parseOr();this.expect("]");let i=/^(mem|ram|vram)(16)?$/i.exec(t.v);if(!i)throw new Error("unknown memory space '#"+t.v+"'");return{t:"read",space:i[1].toLowerCase()=="vram"?"vram":"mem",width:i[2]?2:1,a:r}}return{t:"hw",name:t.v}}throw new Error("unexpected '"+e.v+"'")}};function fa(n,e){switch(n.t){case"num":{let t=n.v;return()=>t}case"id":{let t=n.name;if(e.cpuFields.has(t))return i=>{let s=i[t];return typeof s=="number"?s:0};let r=e.symbol(t);if(typeof r=="number"){let i=r;return()=>i}throw new Error("unknown identifier '"+t+"'")}case"mem":{let t=fa(n.a,e);return r=>{if(!e.readMem)throw new Error("memory reads not supported");let i=e.readMem(t(r)&65535);if(typeof i!="number")throw new Error("cannot read memory");return i}}case"read":{let t=fa(n.a,e),r=n.space,i=n.width;return s=>{let o=r=="vram"?e.readVRAM:e.readMem;if(!o)throw new Error(r=="vram"?"VRAM reads not supported":"memory reads not supported");let a=t(s)&65535,l=o(a);if(typeof l!="number")throw new Error("cannot read memory");if(i==2){let c=o(a+1&65535);if(typeof c!="number")throw new Error("cannot read memory");l=(l|c<<8)&65535}return l}}case"hw":{let t=n.name,r=e.hw&&e.hw[t];if(!r)throw new Error("unknown '#"+t+"'");return()=>{let i=r();return typeof i=="number"?i:0}}case"un":{let t=fa(n.a,e);switch(n.op){case"-":return r=>-t(r);case"~":return r=>~t(r);case"!":return r=>t(r)?0:1;case"+":return t}break}case"bin":{let t=fa(n.a,e),r=fa(n.b,e);switch(n.op){case"||":return i=>t(i)||r(i)?1:0;case"&&":return i=>t(i)&&r(i)?1:0;case"|":return i=>t(i)|r(i);case"^":return i=>t(i)^r(i);case"&":return i=>t(i)&r(i);case"==":return i=>t(i)==r(i)?1:0;case"!=":return i=>t(i)!=r(i)?1:0;case"<":return i=>t(i)<r(i)?1:0;case"<=":return i=>t(i)<=r(i)?1:0;case">":return i=>t(i)>r(i)?1:0;case">=":return i=>t(i)>=r(i)?1:0;case"<<":return i=>t(i)<<r(i);case">>":return i=>t(i)>>r(i);case"+":return i=>t(i)+r(i);case"-":return i=>t(i)-r(i);case"*":return i=>t(i)*r(i);case"/":return i=>{let s=r(i);return s===0?0:t(i)/s|0};case"%":return i=>{let s=r(i);return s===0?0:t(i)%s}}break}}throw new Error("bad expression node")}function N$(n,e){let t=tX(n,e);return r=>{try{return t(r)!=0}catch(i){return!1}}}function tX(n,e){return fa(new kb(eX(n)).parse(),e)}function B$(n,e){let t=(n||"").trim();if(!t)return{error:"empty address"};let r;if((r=t.match(/^\$([0-9a-fA-F]+)$/))||(r=t.match(/^0[xX]([0-9a-fA-F]+)$/)))return{pc:parseInt(r[1],16)};if(/^\d+$/.test(t))return{pc:parseInt(t,10)};let i=e(t);return typeof i=="number"?{pc:i}:{error:"unknown symbol '"+t+"'"}}function $b(n,e){let t=nX(n,e);return t==null?void 0:n[t]}function nX(n,e){if(!n)return;if(e in n)return e;if("_"+e in n)return"_"+e;let t=e.replace(/^\./,"");if(t!==e&&t in n)return t}function rX(n){let e=n.platform,t=new Set;try{let i=e&&e.getCPUState&&e.getCPUState();i&&(t=new Set(Object.keys(i)))}catch(i){}let r=null;return e&&(e.getRasterScanline&&(r=r||{},r.scanline=()=>e.getRasterScanline()),e.getRasterLineClock&&(r=r||{},r.lineclock=()=>e.getRasterLineClock())),{cpuFields:t,symbol:i=>$b(n.symbols,i),readMem:e&&e.readAddress?i=>e.readAddress(i):void 0,readVRAM:e&&e.readVRAMAddress?i=>e.readVRAMAddress(i):void 0,hw:r}}function V$(n){return!!(n&&(n.runEval||n.runToPC||n.runEvalAtPC))}function Qb(n,e){try{let t;if(n.type=="source"){let i=e.getListingForFile&&e.getListingForFile(n.file),s=i&&(i.sourcefile||i.assemblyfile);if(!s)return{bp:n,error:"no debug info (build first?)"};if(t=s.line2offset.get(n.line),!(t>=0))return{bp:n,error:"line has no code"}}else{let i=B$(n.target,s=>$b(e.symbols,s));if(i.error)return{bp:n,error:i.error};t=i.pc}let r;return n.condition&&n.condition.trim()&&(r=N$(n.condition,rX(e))),{bp:n,pc:t,condFn:r}}catch(t){return{bp:n,error:String(t.message||t)}}}var Tb="8bitworkshop.breakpoints.v1",Ab=class{constructor(){this.breakpoints=[];this.nextId=1;this.listeners=[];this.contextFn=()=>""}setContextFn(e){this.contextFn=e}subscribe(e){this.listeners.push(e)}notify(){for(let e of this.listeners.slice())e()}changed(){this.save(),this.notify()}getAll(){return this.breakpoints}getEnabled(){return this.breakpoints.filter(e=>e.enabled)}getSourceBreakpointsForFile(e){return this.breakpoints.filter(t=>t.type=="source"&&t.file==e)}addSourceBreakpoint(e,t){let r={id:this.nextId++,type:"source",file:e,line:t,enabled:!0};return this.breakpoints.push(r),this.changed(),r}addAddressBreakpoint(e,t){let r=(e||"").trim().toLowerCase(),i=this.breakpoints.find(o=>o.type=="address"&&(o.target||"").trim().toLowerCase()==r);if(i)return this.update(i.id,{enabled:!0,condition:t}),i;let s={id:this.nextId++,type:"address",target:e.trim(),enabled:!0,condition:t};return this.breakpoints.push(s),this.changed(),s}remove(e){this.breakpoints=this.breakpoints.filter(t=>t.id!=e),this.changed()}setEnabled(e,t){let r=this.breakpoints.find(i=>i.id==e);r&&r.enabled!=t&&(r.enabled=t,this.changed())}update(e,t){let r=this.breakpoints.find(i=>i.id==e);r&&(Object.assign(r,t),this.changed())}toggleSourceLine(e,t){let r=this.breakpoints.find(i=>i.type=="source"&&i.file==e&&i.line==t);r?this.remove(r.id):this.addSourceBreakpoint(e,t)}load(){if(typeof localStorage!="undefined")try{let t=JSON.parse(localStorage.getItem(Tb)||"{}")[this.contextFn()];this.breakpoints=Array.isArray(t)?t:[],this.nextId=1;for(let r of this.breakpoints)this.nextId=Math.max(this.nextId,r.id+1),r.enabled=!1}catch(e){this.breakpoints=[]}}save(){if(typeof localStorage!="undefined")try{let e={},t=localStorage.getItem(Tb);t&&(e=JSON.parse(t)),e[this.contextFn()]=this.breakpoints,localStorage.setItem(Tb,JSON.stringify(e))}catch(e){console.log("breakpoints: save failed",e)}}},Yt=new Ab;function iX(){return{symbols:P&&P.debugSymbols&&P.debugSymbols.symbolmap,getListingForFile:n=>re&&re.getListingForFile(n),platform:P}}function Jh(){return V$(P)}function jl(){let n=iX();return Yt.getAll().map(e=>Qb(e,n))}var Cb=class extends Ct{constructor(t,r){super();this.header=t;this.handleClick=r}toDOM(){let t=document.createElement("span");return t.className="asset-header-badge",t.textContent="\u2197 Asset Editor",t.title="Open in Asset Editor",t.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.handleClick(t)}),t}eq(t){return this.header===t.header}ignoreEvent(){return!1}},F$=/[/;][*;](\{.+?\})[*;][/;]/g;function Y$(n,e){let t=[];for(let{from:r,to:i}of n.visibleRanges){let s=n.state.sliceDoc(r,i),o=r,a=s.split(`
`);for(let l of a){F$.lastIndex=0;let c=F$.exec(l);if(c){let d=o+c.index+c[0].length;t.push(J.widget({widget:new Cb(c[0],e),side:-1}).range(d))}o+=l.length+1}}return J.set(t,!0)}function j$(n){let e;function t(r){let i=e.posAtDOM(r);n(e.state.doc.lineAt(i).number)}return it.fromClass(class{constructor(r){e=r,this.decorations=Y$(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=Y$(r.view,t))}},{decorations:r=>r.decorations})}var _b=class extends Ct{constructor(t,r,i){super();this.filename=t;this.system=r;this.handleClick=i}toDOM(){let t=document.createElement("span");return t.className="include-link-badge",t.textContent="\u2192",t.title=(this.system?"System header: ":"View ")+this.filename,t.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.handleClick(this.filename,this.system)}),t}eq(t){return this.filename===t.filename&&this.system===t.system}ignoreEvent(){return!1}};function sX(n,e,t){let r=[],i=n.state.doc,s=new Set;for(let{from:o,to:a}of n.visibleRanges){let l=n.state.sliceDoc(o,a);for(let c of e){let d=c instanceof RegExp?{re:c}:c;d.re.lastIndex=0;let h;for(;h=d.re.exec(l);){let u=h[d.group!=null?d.group:h.length-1];if(!u)continue;let f=d.suffix?u+d.suffix:u,m=Math.min(o+h.index+h[0].length,i.length),O=i.lineAt(m),S=O.number+":"+f;s.has(S)||(s.add(S),r.push(J.widget({widget:new _b(f,!!d.system,t),side:1}).range(O.to)))}}}return J.set(r,!0)}function U$(n,e){function t(r){let i=n();return!i||!i.length?J.none:sX(r,i,e)}return it.fromClass(class{constructor(r){this.decorations=t(r)}update(r){(r.docChanged||r.viewportChanged)&&(this.decorations=t(r.view))}},{decorations:r=>r.decorations})}var ds=window.matchMedia&&window.matchMedia("only screen and (max-width: 760px)").matches;function xr(n,e){var t=$(document.createElement("div"));return n&&t.appendTo(n),e&&t.addClass(e),t}function oX(n){return Me.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent("input")||!n.input)return e;let t=[],r=!1;if(e.changes.iterChanges((o,a,l,c,d)=>{let h=d.toString(),u=n.input(h);t.push({from:o,to:a,insert:u}),u!==h&&(r=!0)}),!r)return e;let i=e.annotation(ut.userEvent),s=e.annotation(ut.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...i!=null?[ut.userEvent.of(i)]:[],...s!=null?[ut.addToHistory.of(s)]:[]]}})}var Eb=new Vt;function q$(n){return Eb.reconfigure(oX(n))}var G$=ye.define(),H$=ye.define(),K$=ye.define(),J$=ye.define(),eQ=ye.define(),tQ=ye.define(),nQ=ye.define(),Mb=ye.define(),rQ=ye.define(),iQ=Xe.define({create(){return $e.empty},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(G$)){let r=t.value,i=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;i.push(new eu(_e(o,4)).range(a))}n=$e.of(i,!0)}return n}}),sQ=Xe.define({create(){return $e.empty},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(H$)){let r=t.value,i=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;i.push(new tu(o).range(a))}n=$e.of(i,!0)}return n}}),oQ=Xe.define({create(){return $e.empty},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(K$)){let r=t.value,i=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;i.push(new nu(o).range(a))}n=$e.of(i,!0)}return n}}),aQ=Xe.define({create(){return $e.empty},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(eQ)){let r=[],i=t.value.filter(s=>s.line>=1&&s.line<=e.state.doc.lines).sort((s,o)=>s.line-o.line);for(let s of i){let o=e.state.doc.line(s.line).from;r.push((s.enabled?lX:cX).range(o))}n=$e.of(r,!0)}return n}}),Rb=Xe.define({create(){return $e.empty},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(tQ)){let r=t.value,i=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;i.push(new iu(s,o.msg,o.warning).range(a))}n=$e.of(i,!0)}return n}}),lQ=Xe.define({create(){return $e.empty},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(nQ))if(t.value===null)n=$e.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let i=e.state.doc.line(r).from;n=$e.of(cQ.range(i))}}return n}}),eu=class extends $t{constructor(t){super();this.hex=t}toDOM(){let t=document.createElement("span");return t.className="gutter-offset-marker",t.textContent=this.hex,t.title="Click to run to here",t}eq(t){return this.hex==t.hex}},tu=class extends $t{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},nu=class extends $t{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},aX=new class extends $t{toDOM(){let n=document.createElement("span");return n.className="gutter-breakpoint-placeholder",n.textContent="\u25CF",n}},ru=class extends $t{constructor(t){super();this.enabled=t}toDOM(){let t=document.createElement("span");return t.className="gutter-breakpoint "+(this.enabled?"gutter-breakpoint-enabled":"gutter-breakpoint-disabled"),t.innerHTML="\u25CF",t.title=this.enabled?"Breakpoint (click to remove; manage in Breakpoints window)":"Disabled breakpoint (click to remove)",t}eq(t){return this.enabled==t.enabled}},lX=new ru(!0),cX=new ru(!1),iu=class extends $t{constructor(t,r,i){super();this.line=t;this.msg=r;this.warning=i}toDOM(){let t=document.createElement("span");return t.className=this.warning?"gutter-warning":"gutter-error",t.innerHTML=this.warning?"\u26A0":"\u24E7",t.title=this.msg,t}eq(t){return this.line==t.line&&this.msg==t.msg&&this.warning==t.warning}},dX=new class extends $t{toDOM(){let n=document.createElement("span");return n.className="gutter-currentpc-placeholder",n.textContent="\u25B6",n.title="Click to run to here",n}},cQ=new class extends $t{toDOM(){let n=document.createElement("span");return n.className="gutter-currentpc",n.innerHTML="\u25B6",n.title="Current PC",n}},hX=Hi({class:"gutter-offset",markers:n=>n.state.field(iQ),initialSpacer:()=>new eu("0000"),domEventHandlers:{click(n,e){let t=n.state.doc.lineAt(e.from).number;return n.dispatch({effects:Mb.of(t)}),!0}}}),uX=Hi({class:"gutter-bytes",markers:n=>n.state.field(sQ),initialSpacer:()=>new tu("00 00 00")}),fX=Hi({class:"gutter-clock",markers:n=>n.state.field(oQ),initialSpacer:()=>new nu("00")}),pX=Hi({class:"gutter-status",lineMarker(n,e,t){return t.length===0?aX:null},markers:n=>{let e=n.state.field(Rb);return e.size>0?e:n.state.field(aQ)},initialSpacer:()=>new iu(0,"\u24E7"),domEventHandlers:{click(n,e){let t=n.state.field(Rb);if(t.size>0){let r=e.from,i="";if(t.between(r,r,(s,o,a)=>{i=a.msg}),i){let s=n.state.doc.lineAt(e.from).number;n.dispatch({effects:rQ.of({line:s,msg:i,toggle:!0})})}}else if(Jh()){let r=n.state.doc.lineAt(e.from).number;n.dispatch({effects:J$.of(r)})}return!0}}}),mX=Hi({class:"gutter-currentpc",lineMarker(n,e,t){return t.length===0?dX:null},markers:n=>n.state.field(lQ),initialSpacer:()=>cQ,domEventHandlers:{click(n,e){let t=n.state.doc.lineAt(e.from).number;return n.dispatch({effects:Mb.of(t)}),!0}}}),su={set:G$,field:iQ,gutter:hX},Ul={set:H$,field:sQ,gutter:uX},ou={set:K$,field:oQ,gutter:fX},au={requestToggle:J$,setAll:eQ,field:aQ},lo={set:tQ,field:Rb,showMessage:rQ},dQ={gutter:pX},pa={set:nQ,runToLine:Mb,field:lQ,gutter:mX};function gX(n,e){if(e<=1||n<=1)return 0;let t=Math.round(Math.log(n)/Math.log(e)*3);return Math.max(0,Math.min(3,t))}function hQ(n,e){let t=0;for(let i of n.values())i>t&&(t=i);let r=[];for(let[i,s]of n)e&&!e.has(i)||r.push({line:i,level:gX(s,t)});return r}var fQ=ye.define(),pQ=J.line({attributes:{class:"cm-currentpc"}}),OX=Xe.define({create(){return J.none},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(fQ)){if(t.value===null)return J.none;let r=e.state.doc.line(t.value);return J.set([pQ.range(r.from)])}return n},provide:n=>F.decorations.from(n)}),ql=class extends Ct{constructor(t){super();this.message=t}toDOM(){let t=document.createElement("div");return t.textContent=this.message,t.style.cssText=`
color: #ff6666;
background-color: #330000;
padding: 4px 8px;
margin: 2px 0;
border-left: 3px solid #ff0000;
font-family: monospace;
`,t}},bX=Xe.define({create(){return J.none},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(lo.showMessage)){if(t.value===null||!t.value)return J.none;if(t.value.toggle){let r=[],i=new Map;return n.between(0,e.state.doc.length,(a,l,c)=>{try{let d=e.state.doc.lineAt(l).number;c.spec.widget instanceof ql&&i.set(d,c.spec.widget.message)}catch(d){}}),i.has(t.value.line)?i.delete(t.value.line):i.set(t.value.line,t.value.msg),Array.from(i.keys()).sort((a,l)=>a-l).forEach(a=>{try{let l=e.state.doc.line(a);r.push(J.widget({widget:new ql(i.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),J.set(r,!0)}}return n},provide:n=>F.decorations.from(n)}),Lb=class extends Ct{constructor(t){super();this.value=t}toDOM(){let t=document.createElement("div");return t.textContent=`${this.value}`,t.style.cssText=`
color: #ccccff;
background-color: #000066;
display: inline-block;
`,t.className="cm-line",t}},mQ=ye.define(),yX=Xe.define({create(){return J.none},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(mQ)){if(t.value===null||!t.value)return J.none;let r=e.state.doc.lineAt(t.value.range.to);return J.set([J.widget({widget:new Lb(t.value.val),block:!0,side:1}).range(r.to)])}return n},provide:n=>F.decorations.from(n)}),gQ=ye.define(),SX=J.mark({attributes:{class:"cm-error-span"}}),vX=Xe.define({create(){return J.none},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(gQ)){if(t.value===null)return J.none;let r=[];for(let i of t.value)try{let s=e.state.doc.line(i.line),o=s.from+i.start,a=s.from+i.end;o>=s.from&&a<=s.to&&o<a&&r.push(SX.range(o,a))}catch(s){}return J.set(r,!0)}return n},provide:n=>F.decorations.from(n)}),OQ=ye.define(),wX=J.line({attributes:{class:"highlight-lines"}}),xX=Xe.define({create(){return J.none},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(OQ)){if(t.value===null)return J.none;let{start:r,end:i}=t.value,s=[];for(let o=r;o<=i;o++)try{let a=e.state.doc.line(o);s.push(wX.range(a.from))}catch(a){}return J.set(s)}return n!==J.none&&(e.docChanged||e.selection)?J.none:n},provide:n=>F.decorations.from(n)}),bQ={field:bX,widget:ql},Gl={effect:fQ,decoration:pQ,field:OX},lu={effect:mQ,field:yX},cu={effect:gQ,field:vX},du={effect:OQ,field:xX},yQ=ye.define(),SQ=[];for(let n=0;n<4;n++)SQ.push(J.line({attributes:{class:`cm-traced-line cm-traced-line-h${n}`}}));var PX=Xe.define({create(){return J.none},update(n,e){n=n.map(e.changes);for(let t of e.effects)if(t.is(yQ)){let r=[];for(let{line:i,level:s}of t.value)try{let o=e.state.doc.line(i),a=SQ[Math.max(0,Math.min(3,s|0))];r.push(a.range(o.from))}catch(o){}return J.set(r,!0)}return n},provide:n=>F.decorations.from(n)}),hu={effect:yQ,field:PX};var kX=[...Rf(t1,Ef),{key:"Mod-Shift-Backspace",run:Qg}],wQ=Rf(aP,Ef),ga=64,xQ=ye.define(),PQ=ye.define(),Db=Xe.define({create(){return new Map},update(n,e){let t=n;for(let r of e.effects)if(r.is(PQ))t=new Map;else if(r.is(xQ)){t===n&&(t=new Map(n));for(let i of r.value)t.set(i.id,{from:i.from,to:i.to})}if(!e.changes.empty){let r=new Map;for(let[i,s]of t)r.set(i,{from:e.changes.mapPos(s.from,-1),to:e.changes.mapPos(s.to,1)});return r}return t}}),$X=200,Zb={default:{theme:Kh},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:Hh},dialog:{theme:Hh,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0,lineBased:!0},ecs:{theme:Kh}},kQ={input:null};function $Q(n){kQ.input=n?e=>e.toUpperCase():null}function zb(n){if(!n)return"";let e=n.state.selection.main;return e.empty?"":n.state.sliceDoc(e.from,e.to)}var Hl=class Hl{constructor(e,t){this.updateTimer=null;this.indentUnitCompartment=new Vt;this.isAsm=!1;this.dirtylisting=!0;this.refreshDelayMsec=300;this.probe=null;this.tracedLineCounts=new Map;this.path=e,this.mode=t}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=re.getFile(this.path),i=r&&this.mode=="verilog"&&/__asm\b([\s\S]+?)\b__endasm\b/.test(r);return this.newEditor(t,r,i),this.editor.dispatch({effects:q$(kQ)}),this.syncBreakpoints(),re.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),Hl.tracingEnabled&&this.startTracing()):this.stopTracing()}getShortcuts(){if(!this.editor)return[];var e=this.editor,t=(r,i,s)=>({key:r,label:i,fn:()=>{s(e),e.focus()}});return[t("mod+f","Find",Dh),t("mod+g","Find Next",la),t("mod+d","Next Occurrence",Ug),t("mod+z","Undo",Pl),t("mod+shift+z","Redo",Ko)]}startTracing(){!this.probe&&P.startProbing&&(this.probe=P.startProbing(),this.probe.singleFrame=!1,this.probe.clear(),this.tracedLineCounts.clear())}stopTracing(){this.probe&&(P.stopProbing(),this.probe=null),this.tracedLineCounts.clear(),this.editor.dispatch({effects:hu.effect.of([])})}setTracingEnabled(e){Hl.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var i=Zb[this.mode]||Zb.default,s=r||i.isAsm,o=!!i.lineWrap,a=i.theme||Zb.default.theme,l=i.useLineNumbers&&!ds;he.embed&&(l=!1,s=!1),this.isAsm=s;let c=i.noGutters||ds;var d;let h=wb[this.mode];h?d=h.language:(console.warn("Unknown mode: "+this.mode),d=null),this.editor=new F({parent:e,doc:t,extensions:[this.indentUnitCompartment.of(this.indentUnitFor(t)),s?lg.of((u,f)=>{let m=u.state.doc.lineAt(f).number;if(m>=0){let O=u.state.doc.line(m);if(O.text.trim())return u.lineIndent(O.from)}return 0}):[],...s?[Sn.of(c1(()=>na().tabsToSpaces))]:[],i.lineBased?Sn.of(r1):[],...f1(na()),Sn.of(kX),l?Xd():[],Px(),Sn.of(Qx),Bw(),Jv(),Me.allowMultipleSelections.of(!0),Ld(),Xw(),Uw(),Zd(),Id(),Dd(),lw(),Lh(),qg({top:!0}),Sn.of(wQ),d||[],a,Pb,o?F.lineWrapping:[],Gl.field,c?[]:[su.field,su.gutter],s&&!c?[Ul.field,Ul.gutter,ou.field,ou.gutter]:[],au.field,dQ.gutter,F.updateListener.of(u=>{for(let f of u.transactions.flatMap(m=>m.effects))if(f.is(au.requestToggle)&&Yt.toggleSourceLine(this.path,f.value),f.is(pa.runToLine)){let m=f.value;if(this.sourcefile&&this.sourcefile.line2offset){let O=this.sourcefile.line2offset.get(m);O>=0&&Jl([O])}}}),lo.field,bQ.field,cu.field,pa.field,pa.gutter,du.field,hu.field,Db,j$(u=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+u}),he.embed?[]:U$(()=>{var u=re&&re.getToolForFilename(this.path),f=re&&re.platform_id;return[...Lc(u,f),...Dc(u,f),...Ty(u)]},(u,f)=>{if(!f){var m=QQ(u);if(m){window.location.hash="#"+encodeURIComponent(m);return}}Kl(u)}),Eb.of([]),F.updateListener.of(u=>{u.docChanged&&this.editorChanged()}),lu.field,F.updateListener.of(u=>{u.selectionSet&&this.inspectUnderCursor(u)})]}),m1(this.editor)}editorChanged(){clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>{re.updateFile(this.path,this.editor.state.doc.toString())},this.refreshDelayMsec)}flushChanges(){this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=null,re.updateFile(this.path,this.editor.state.doc.toString()))}inspectUnderCursor(e){let t=e.state.selection.main,r=e.state.sliceDoc(t.from,t.to).trim();var i;P.inspect&&(i=P.inspect(r)),!t.empty&&i&&i.length<80?e.view.dispatch({effects:lu.effect.of({range:t,val:i})}):e.view.dispatch({effects:lu.effect.of(null)})}indentUnitFor(e){return this.isAsm?[]:yr.of(n1(e))}setText(e){var t=this.editor.state.doc.toString();t!=e&&this.editor.dispatch({changes:{from:0,to:this.editor.state.doc.length,insert:e},annotations:oh.of("full"),effects:this.indentUnitCompartment.reconfigure(this.indentUnitFor(e))})}replaceTextRange(e,t,r){let i=this.editor.state.doc.lineAt(e).from;this.editor.dispatch({changes:{from:e,to:t,insert:r},annotations:oh.of("full"),selection:{anchor:e+r.length,head:e},effects:[F.scrollIntoView(i,{y:"start",yMargin:100})]})}setAssetRange(e,t,r){this.editor.dispatch({effects:xQ.of([{id:e,from:t,to:r}])})}getAssetText(e){var t=this.editor.state.field(Db).get(e);return t?this.editor.state.doc.sliceString(t.from,t.to):null}replaceAssetText(e,t){var r=this.editor.state.field(Db).get(e);r&&this.replaceTextRange(r.from,r.to,t)}clearAssetRanges(){this.editor.dispatch({effects:PQ.of(void 0)})}insertLinesBefore(e){let t=this.editor.state.selection.main.from,r=this.editor.state.doc.lineAt(t).number,i=this.editor.state.doc.lineAt(t).from,s=e.split(`
`).length-1;this.editor.dispatch({changes:{from:i,insert:e}}),this.highlightLines(r-1,r+s-2)}highlightLines(e,t){let r=this.editor.state.doc.line(e+1);this.editor.dispatch({effects:[du.effect.of({start:e+1,end:t+1}),F.scrollIntoView(r.from,{y:"start",yMargin:100})]})}navigateToLine(e){if(e<1||e>this.editor.state.doc.lines)return;let t=this.editor.state.doc.line(e);this.editor.dispatch({selection:{anchor:t.from},effects:[du.effect.of({start:e,end:e}),F.scrollIntoView(t.from,{y:"center"})]}),this.editor.focus()}getValue(){return this.editor.state.doc.toString()}getSelectionText(){return zb(this.editor)}getPath(){return this.path}markErrors(e){this.clearErrors(),e=e.slice(0,$X);let t=new Map,r=[];for(var i of e)if(!i.path||this.path.endsWith(i.path)){var s=this.editor.state.doc.lines,o=i.line;(isNaN(o)||o<1||o>s)&&(o=1),i.severity==="warning"&&t.has(o)||t.set(o,{msg:i.msg,warning:i.severity==="warning"}),i.start!=null&&i.end!=null&&i.end>i.start&&r.push({line:o,start:i.start,end:i.end})}this.editor.dispatch({effects:[lo.set.of(t),cu.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[lo.set.of(new Map),lo.showMessage.of(null),cu.effect.of(null)]})}getSourceFile(){return this.sourcefile}updateListing(){this.clearErrors();var e=this.sourcefile.lines||[];let t=new Map,r=new Map,i=new Map;for(var s of e)if(s.offset>=0&&t.set(s.line,_e(s.offset&65535,4)),s.insns){var o=s.insns.length>9?"...":s.insns;if(r.set(s.line,o),s.iscode){if(s.cycles)i.set(s.line,s.cycles+"");else if(P.getOpcodeMetadata){var a=parseInt(s.insns.split(" ")[0],16),l=P.getOpcodeMetadata(a,s.offset);if(l&&l.minCycles){var c=l.minCycles+"";i.set(s.line,c)}}}}this.editor.dispatch({effects:[su.set.of(t),Ul.set.of(r),ou.set.of(i)]})}setTimingResult(e){if(this.sourcefile!=null){var t=new Map;for(let[o,a]of this.sourcefile.line2offset){let l=e.pc2clockrange[a];var r=l&&l.minclocks,i=l&&l.maxclocks;if(r>=0&&i>=0){var s;i==r?s=r+"":s=r+"-"+i,i==e.MAX_CLOCKS&&(s+="+"),t.set(o,s)}}this.editor.dispatch({effects:[Ul.set.of(t)]})}}setCurrentLine(e,t){var r=i=>{this.editor.dispatch({effects:[pa.set.of(i.line),Gl.effect.of(t?i.line:null),...t?[F.scrollIntoView(this.editor.state.doc.line(i.line).from,{y:"center"})]:[]]})};if(this.clearCurrentLine(t),e){if(e.line<1||e.line>this.editor.state.doc.lines)return;if(r(e),t){let s=this.editor.state.doc.line(e.line).from+(e.start||0);this.editor.dispatch({selection:{anchor:s,head:s},effects:F.scrollIntoView(s,{y:"center"})})}this.currentDebugLine=e}}clearCurrentLine(e){if(this.currentDebugLine){if(e){let t=this.editor.state.selection.main.head;this.editor.dispatch({selection:{anchor:t,head:t}})}this.currentDebugLine=null}this.editor.dispatch({effects:[pa.set.of(null),Gl.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=en&&en.c;if(!e&&P.getCPUState&&!P.isRunning()&&(e=P.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,ga);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=re.getListingForFile(this.path);e&&e.sourcefile&&e.sourcefile!==this.sourcefile&&(this.sourcefile=e.sourcefile,this.dirtylisting=!0),!(!this.sourcefile||!this.dirtylisting)&&(this.updateListing(),this.dirtylisting=!1)}refresh(e){this.refreshListing(),this.refreshDebugState(e)}tick(){this.refreshDebugState(!1),this.updateTracedLines()}updateTracedLines(){let e=this.probe;if(!e||!e.idx||!this.sourcefile)return;let t=new Set;for(let r=0;r<e.idx;r++){let i=e.buf[r];if((i&4278190080)===16777216){let s=this.sourcefile.findLineForOffset(i&65535,ga);s&&(this.tracedLineCounts.set(s.line,(this.tracedLineCounts.get(s.line)||0)+1),t.add(s.line))}}e.clear(),this.editor.dispatch({effects:hu.effect.of(hQ(this.tracedLineCounts,t))})}getLine(e){return this.editor.state.doc.line(e).text}getCurrentLine(){let e=this.editor.state.selection.main.head;return this.editor.state.doc.lineAt(e).number}getCursorPC(){for(var e=this.getCurrentLine();this.sourcefile&&e>=0;){var t=this.sourcefile.line2offset.get(e);if(t>=0)return t;e--}return-1}undoStep(){Pl(this.editor)}redoStep(){Ko(this.editor)}syncBreakpoints(){let e=Yt.getSourceBreakpointsForFile(this.path).map(t=>({line:t.line,enabled:t.enabled}));this.editor.dispatch({effects:au.setAll.of(e)})}};Hl.tracingEnabled=!1;var un=Hl,Ib=1024,Ri=class{getSelectionText(){return zb(this.disasmview)}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","editor"),e.appendChild(t),this.newEditor(t),t}newEditor(e){this.disasmview=new F({parent:e,extensions:[Zd(),Id(),Me.allowMultipleSelections.of(!0),Ld(),Dd(),Lh(),W$,Hh,Gl.field,Me.tabSize.of(8),Me.readOnly.of(!0)]})}refresh(e,t){let r=en||P.saveState(),i=t!==void 0?t:r.c?r.c.PC:0,s=0,o=0,a=P.debugSymbols&&P.debugSymbols.addr2symbol||{},l=(h,u)=>{let f="",m=0;for(;m<u;){let O=h+m|0,S=P.disassemble(O,P.readAddress.bind(P)),x="",D="";for(let k=0;k<S.nbytes;k++)x+=_e(P.readAddress(O+k));for(;x.length<14;)x+=" ";let M=S.line;if(a&&S.isaddr&&(M=M.replace(/([^#])[$]([0-9A-F]+)/,(k,...w)=>{let R=parseInt(w[1],16),X=a[R];return X?w[0]+X:(X=a[R-1],X?w[0]+X+"+1":k)})),a){let k=a[O];k&&(D="; "+k)}let Z=_e(O,4)+" "+La(x,14)+" "+La(M,30)+D+`
`;f+=Z,O==i&&(o=s),s++,m+=S.nbytes||1}return f};var c=i<0?i-Ib:Math.max(0,i-Ib);let d=l(c,i-c)+l(i,Ib);if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:d}}),e){let h=this.disasmview.state.doc.line(o+1);this.disasmview.dispatch({selection:{anchor:h.from,head:h.from},effects:F.scrollIntoView(h.from,{y:"center"})})}}goToAddress(e){e|=0,this.findAndSelectAddress(e)||(this.refresh(!1,e),this.findAndSelectAddress(e)),this.disasmview.focus()}findAndSelectAddress(e){let t=_e(e,4),r=this.disasmview.state.doc;for(let i=1;i<=r.lines;i++){let s=r.line(i);if(s.text.startsWith(t+" "))return this.disasmview.dispatch({selection:{anchor:s.from,head:s.from+t.length},effects:F.scrollIntoView(s.from,{y:"center"})}),!0}return!1}getCursorPC(){let e=this.disasmview.state.selection.main.head,t=this.disasmview.state.doc.lineAt(e).number;if(t>=0){let i=this.disasmview.state.doc.line(t).text.trim().split(/\s+/);if(i&&i.length>=1){let s=parseInt(i[0],16);if(console.log("getCursorPC",s),s>=0)return s}}return-1}},uu=class extends Ri{constructor(e){super(),this.path=e}refreshListing(){var e=re.getListingForFile(this.path);this.assemblyfile=e&&(e.assemblyfile||e.sourcefile)}refresh(e){if(this.refreshListing(),!!this.assemblyfile){var t=this.assemblyfile.text;if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:t}}),!!P.saveState){var r=en||P.saveState(),i=r.c?r.c.EPC||r.c.PC:0;if(i>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(i,ga);if(s&&e){let o=this.disasmview.state.doc.line(s.line);this.disasmview.dispatch({selection:{anchor:o.from,head:o.from},effects:F.scrollIntoView(o.from,{y:"center"})})}}}}}goToAddress(e){this.refreshListing();let t=this.assemblyfile&&this.assemblyfile.findLineForOffset(e,ga);if(t){let r=this.disasmview.state.doc.line(t.line);this.disasmview.dispatch({selection:{anchor:r.from,head:r.from},effects:F.scrollIntoView(r.from,{y:"center"})})}this.disasmview.focus()}};function QQ(n){let e=[n];try{var t=Da(re.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+n)}catch(s){}for(var r of e){var i=re&&re.getFile(r);if(typeof i=="string")return r}return null}function vQ(n){for(var e of Cy(n))if(e.editorStyle){var t=z$(e.editorStyle);if(t)return t}return null}var ma=new Map;async function TQ(n){var e=await re.queryWorker(n),t=e&&e.output;return t instanceof Uint8Array&&t.length>0?new TextDecoder().decode(t):null}function QX(n){let e=re.platform_id,t="lib:"+e+":"+n;return ma.has(t)||ma.set(t,TQ({platform:e,readlib:n,updates:[],buildsteps:[]})),ma.get(t)}function TX(n){let e=re.getToolForFilename(re.mainPath),t=Ic(e,re.platform_id),r=Zc(e,re.platform_id);if(!t||!r.length)return Promise.resolve(null);let i=t+":"+n;return ma.has(i)||ma.set(i,(async()=>{var s=[...r.map(l=>l+"/"+n),n];for(var o of s){var a=await TQ({preload_fs:t,readshared:o,updates:[],buildsteps:[]});if(a!=null)return a}return null})()),ma.get(i)}async function AX(n){var e;return(e=await QX(n))!=null?e:TX(n)}var hs=class{constructor(e){this.fn=e;this.languageCompartment=new Vt}getSelectionText(){return zb(this.view)}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=vQ(this.fn||this.currentPath||"")||xb();return this.view=new F({parent:t,extensions:[Zd(),Id(),Me.allowMultipleSelections.of(!0),Ld(),Dd(),Lh(),qg({top:!0}),Sn.of(wQ),this.languageCompartment.of(r),Kh,Pb,Me.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=vQ(this.currentPath||this.fn||"")||xb();this.view.dispatch({effects:this.languageCompartment.reconfigure(t),changes:{from:0,to:this.view.state.doc.length,insert:e}})}refresh(e){var t=this.fn;if(!t){var r=window.location.hash;if(!r||!r.startsWith("#headerview/"))return;t=this.fn=decodeURIComponent(r.substring(12))}this.loadIncludeFile(t)}async loadIncludeFile(e){this.requestedFn=e;var t=QQ(e);if(t){this.currentPath=t,this.setHeaderText(re.getFile(t));return}var r=await AX(e);if(this.requestedFn===e){if(r!=null){this.currentPath=e,this.setHeaderText(r);return}this.currentPath=e,this.setHeaderText("// "+e+` was not found.
// Project include files are loaded during a build -- try building first.
// Library and toolchain headers are only available when the platform or tool bundles them.`)}}navigateToLine(e){if(!(!this.view||e<1)&&e<=this.view.state.doc.lines){let t=this.view.state.doc.line(e);this.view.dispatch({selection:{anchor:t.from},effects:[F.scrollIntoView(t.from,{y:"center"})]}),this.view.focus()}}};var co=class{constructor(e){var t=document.createElement("div");t.setAttribute("class","memdump"),e.appendChild(t),this.maindiv=t}create(e,t,r){this.getLineAt=r,this.memorylist=new Nn({w:$(e).width(),h:$(e).height(),itemHeight:Wb(),totalRows:t,generatorFn:i=>{var s=r(i),o=document.createElement("div");return o.appendChild(document.createTextNode(s.text)),s.clas!=null&&(o.className=s.clas),o}}),$(this.maindiv).append(this.memorylist.container)}setRowCount(e){if(!(!this.memorylist||this.memorylist.totalRows===e)){this.memorylist.totalRows=e;var t=this.memorylist.container.firstChild;t&&(t.style.height=e*this.memorylist.itemHeight+"px")}}refresh(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=t,i=parseInt(r.getAttribute("data-index")),s=r.innerText,o=this.getLineAt(i),a=o.text;if(s!=a&&(r.innerText=a,o.clas!=null&&!r.classList.contains(o.clas))){var l=Array.from(r.classList);l.forEach(c=>r.classList.remove(c)),r.classList.add("vrow"),r.classList.add(o.clas)}})}};function Wb(){return $("#dropdownMenuButton").first().height()}function CX(n){return n.start+Math.max(1,n.size||0)}function _X(n,e){n.sort((s,o)=>s.start-o.start||o.end-s.end);let t=[],r=[],i=[];for(let s of n){let o=t.findIndex(a=>a<=s.start);if(o<0&&t.length<e&&(o=t.length),o<0){let a=r[e-1];(a.hidden=a.hidden||[]).push(s);continue}t[o]=s.end,r[o]=s,s.lane=o,i.push(s)}return i}function fu(n,e,t,r){t=_X(t,r);let i=Math.max(1,...t.map(s=>s.lane+1));return{id:n,title:e,lanes:i,blocks:t}}function AQ(n,e,t,r){let i=n.slice().sort((a,l)=>a.start-l.start),s=[],o=e;for(let a of i)a.start>o&&s.push({name:t,start:o,end:a.start,type:r,lane:0}),o=Math.max(o,a.end);return n.concat(s)}function CQ(n){return{name:n.name,start:n.start,end:CX(n),type:n.type,lane:0}}function EX(n){return n.startsWith("__")||/^[sl]__/.test(n)||n.startsWith(".")}function RX(n,e,t,r){var h,u;let i=(h=t==null?void 0:t.minVarSize)!=null?h:128,s=(u=t==null?void 0:t.maxVars)!=null?u:64,o=e.filter(f=>f.type=="ram"&&f.size>0);if(!n||!o.length)return[];let a=f=>r==null?void 0:r[f],l=new Map;for(let[f,m]of Object.entries(n)){if(typeof m!="number"||EX(f))continue;let O=l.get(m);(O==null||!a(O)&&a(f))&&l.set(m,f)}let c=Array.from(l.keys()).sort((f,m)=>f-m),d=[];for(let f=0;f<c.length;f++){let m=c[f],O=null;for(let k of o)m>=k.start&&m<k.start+k.size&&(!O||k.size<O.size)&&(O=k);if(!O)continue;let S=l.get(m),x=a(S);if(x!=null){x>=i&&d.push({name:S,start:m,end:m+x,type:"var",lane:0});continue}let D=O.start+O.size,M=f+1<c.length?c[f+1]:1/0;if(M>=D&&O.source!="linker")continue;let Z=Math.min(M,D);Z-m>=i&&d.push({name:S,start:m,end:Z,type:"var",lane:0,approx:!0})}return d.sort((f,m)=>m.end-m.start-(f.end-f.start)),d.slice(0,s)}function _Q(n,e=4096,t=1024){if(n.length<2)return null;let r=n[0],i=n[n.length-1];if((i-r)/e>t)return null;let s=n.slice();for(let c=Math.ceil(r/e)*e;c<i;c+=e){let d=0,h=s.length;for(;d<h;){let u=d+h>>1;s[u]<c?d=u+1:h=u}s[d]!==c&&s.splice(d,0,c)}let o=[],a=[],l=0;for(let c=0;c+1<s.length;c++){let d=s[c],h=s[c+1];for(;n[l+1]<=d;)l++;o.push((h-d)/(n[l+1]-n[l])),a.push(l)}return{bounds:s,weights:o,parents:a}}function EQ(n,e,t){let r=0;for(;r<e.length-1&&t>=e[r];)t-=e[r],r++;let i=e[r]>0?Math.max(0,Math.min(1,t/e[r])):0,s=n[r],o=n[r+1];return Math.min(Math.floor(s+(o-s)*i),o-1)}function RQ(n,e,t,r){var u;n=n||[];let i=(u=t==null?void 0:t.maxLanes)!=null?u:2,s=[],o=n.filter(f=>f.source=="native").map(CQ),a=n.filter(f=>f.source!="native").map(CQ);if(o.length&&s.push(fu("native","System",AQ(o,0,"","unmapped"),i)),a.length){let f=Math.min(...a.map(m=>m.start));s.push(fu("linker","Segments",AQ(a,f,"","free"),i))}let l=[];for(let f of n)(f.modules||[]).forEach((m,O)=>l.push({name:m.name,start:m.start,end:m.start+m.size,type:"module"+(O&1),lane:0}));l.length&&s.push(fu("modules","Modules",l,i));let c=l.length?[]:RX(e,n,t,r);c.length&&s.push(fu("vars","Objects",c,i));let d=new Set;for(let f of s)for(let m of f.blocks)d.add(m.start),d.add(m.end);return{bounds:Array.from(d).sort((f,m)=>f-m),columns:s}}function MQ(n,e,t,r,i=65536){let s=[],o=0,a,l=0,c=d=>{let h=1/0;for(let u of t||[])d>=u.start&&d<u.start+u.size&&(h=Math.min(h,u.start+u.size));return h};for(let d of Object.keys(n)){let h=parseInt(d),u=n[h];if(a){let f=r!=null&&r(a)?"":a,m=e==null?void 0:e[a],O=m!=null?l+m:c(l);for(O=Math.min(O,h);o<h&&s.length<i;){let S=o>=l&&o<O,x=o+16&1048560;S?x=Math.min(x,O):o<l&&(x=Math.min(x,l)),x>h&&(x=h),s.push({a:o,l:x-o,s:S?f:""}),o=x}}a=u,l=h}return s}function LQ(n){return n.endsWith("_SIZE__")||n.endsWith("_LAST__")||n.endsWith("STACKSIZE__")||n.endsWith("FILEOFFS__")||n.startsWith("l__")||n.startsWith("s__")||n.startsWith(".__.")}var us=class{constructor(){this.recreateOnResize=!0;this.hibits=0;this.totalRows=5120;this.gotoRow=-1}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","memdump"),e.appendChild(t),this.showMemoryWindow(e,t),this.maindiv=t}showMemoryWindow(e,t){let r=this.getDumpLines();this.memorylist=new Nn({w:$(e).width(),h:$(e).height(),itemHeight:Wb(),totalRows:Math.max(this.totalRows,r?r.length:0),generatorFn:s=>{var o=this.getMemoryLineAt(s),a=document.createElement("div");if(this.dumplines){var l=this.dumplines[s];l&&a.classList.add("seg_"+this.getMemorySegment(this.dumplines[s].a|this.hibits))}return s==this.gotoRow&&a.classList.add("goto_line"),a.appendChild(document.createTextNode(o)),a}}),$(t).append(this.memorylist.container),this.tick();let i=Tl();i&&this.dumplines&&this.scrollToAddress(i.data_start)}scrollToAddress(e){this.dumplines&&(this.hibits=e&4294901760,this.memorylist.scrollToItem(this.findMemoryWindowLine(e&65535)))}goToAddress(e){this.hibits=e&4294901760;var t=this.getDumpLines(),r;if(t&&t.length?r=this.findMemoryWindowLine(e&65535):r=(e&65535)>>4,r!==void 0){if(this.gotoRow=r,this.memorylist){var i=this.memorylist.container,s=r*this.memorylist.itemHeight-(i.clientHeight-this.memorylist.itemHeight)/2;i.scrollTop=Math.max(0,s)}this.tick()}}refresh(){this.dumplines=null,this.tick()}tick(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=$(t),i=parseInt(r.attr("data-index")),s=r.text(),o=this.getMemoryLineAt(i);s!=o&&r.text(o),r.toggleClass("goto_line",i==this.gotoRow)})}getMemoryLineAt(e){var t=e*16,r=0,i=16,s;if(this.getDumpLines()){var o=this.dumplines[e];if(o)t=o.a&65520,r=o.a-t,i=r+o.l,s=o.s;else return"."}for(var a=_e(t+r,4)+" ",l=0;l<r;l++)a+=" ";r>8&&(a+=" ");for(var l=r;l<i;l++){var c=this.readAddress(t+l|this.hibits);l==8&&(a+=" "),a+=" "+(typeof c=="number"?_e(c,2):"??")}for(var l=i;l<16;l++)a+=" ";return s&&(a+=" "+s),a}readAddress(e){return P.readAddress(e)}getDumpLineAt(e){var t=this.dumplines[e];if(t)return t.a+" "+t.s}getDumpLines(){var i;var e=P.debugSymbols&&P.debugSymbols.addr2symbol||{};if(this.dumplines==null){var t={};for(let s of Object.keys(e)){var r=parseInt(s);t[r]=e[r|this.hibits]}this.dumplines=MQ(t,(i=P.debugSymbols)==null?void 0:i.symbolsizes,re&&re.segments,LQ)}return this.dumplines}getMemorySegment(e){let t=Tl();if(t){if(e>=t.data_start&&e<t.data_start+t.data_size)return P.getSP&&e>=P.getSP()-15?"stack":"data";if(e>=t.code_start&&e<t.code_start+(t.code_size||t.rom_size))return"code"}var r=re.segments;if(r){for(var i of r)if(e>=i.start&&e<i.start+i.size){if(i.type=="rom")return"code";if(i.type=="ram")return"data";if(i.type=="io")return"io"}}return"unknown"}findMemoryWindowLine(e){for(var t=0;t<this.dumplines.length;t++)if(this.dumplines[t].a>=e)return t}},pu=class extends us{constructor(){super(...arguments);this.totalRows=2048}readAddress(t){return P.readVRAMAddress(t)}getMemorySegment(t){return"video"}getDumpLines(){return null}},ec=class{constructor(e,t){this.recreateOnResize=!0;this.path=e,this.data=t}populateVlist(){$(this.vlist.maindiv).empty(),this.vlist.create(this.parent,this.data.length+15>>4,this.getMemoryLineAt.bind(this))}createDiv(e){return this.parent=e,this.vlist=new co(this.parent),this.populateVlist(),this.vlist.maindiv}setData(e){this.data=e,this.populateVlist()}getMemoryLineAt(e){for(var t=e*16,r=0,i=16,s=_e(t+r,4)+" ",o=0;o<r;o++)s+=" ";r>8&&(s+=" ");for(var o=r;o<i;o++){var a=this.data[t+o];o==8&&(s+=" "),s+=" "+(a>=0?_e(a,2):" ")}return{text:s}}refresh(){this.vlist.refresh()}getPath(){return this.path}},mu=class{constructor(){this.scrubRows=null;this.scrubOverlay=null;this.scrubLabel=null}createDiv(e){return this.maindiv=xr(e,"vertical-scroll memmap"),this.maindiv[0]}addBlock(e,t,r,i){var s=$('<div class="segment"/>'),o=d=>`${d.name?d.name+": ":""}$${_e(d.start,4)} - $${_e(d.end-1,4)} (${d.approx?"~":""}${d.end-d.start} bytes)`,a=e.hidden||[];s.text(e.name+(a.length?` +${a.length}`:"")),s.attr("title",[e].concat(a).map(o).join(`
`)),e.type&&s.addClass("segment-"+e.type);var l=t.lanes-e.lane;for(var c of t.blocks)c.lane>e.lane&&c.start<e.end&&c.end>e.start&&(l=Math.min(l,c.lane-e.lane));s.css("grid-row",`${i.indexOf(e.start)+2} / ${i.indexOf(e.end)+2}`),s.css("grid-column",`${r+e.lane} / span ${l}`),s.click(()=>{var d=N.createOrShow("#memory");d.scrollToAddress(e.start)}),this.maindiv.append(s)}refresh(){var D,M;this.maindiv.empty();var e=RQ(re.segments,(D=P.debugSymbols)==null?void 0:D.symbolmap,null,(M=P.debugSymbols)==null?void 0:M.symbolsizes),t=e.bounds;if(t.length){var r=_Q(t),i=r?r.bounds:t,s=["5em"],o=2,a=$('<div class="memmap-header" style="grid-row:1;grid-column:1"/>').text("Address");if(this.maindiv.append(a),r)for(var l=0;l+1<i.length;l++){var c=Math.floor(i[l]/4096)%2;$('<div class="memmap-stripe"/>').addClass(c?"memmap-stripe-odd":"memmap-stripe-even").css("grid-row",`${l+2}`).css("grid-column","1 / -1").appendTo(this.maindiv)}for(var d of e.columns){for(var l=0;l<d.lanes;l++)s.push("minmax(0,1fr)");$('<div class="memmap-header"/>').text(d.title).css("grid-row","1").css("grid-column",`${o} / span ${d.lanes}`).appendTo(this.maindiv);for(var h of d.blocks)this.addBlock(h,d,o,i);o+=d.lanes}for(var u=["auto"],f=[],l=0;l+1<i.length;l++){var m=i[l+1]-i[l],O=Math.max(3,Math.log(m+1))*.5;if(r){var S=r.parents[l],x=t[S+1]-t[S];O=Math.max(3,Math.log(x+1))*.5*r.weights[l]}u.push(O+"em"),f.push(O)}for(var l=0;l+1<t.length;l++)$('<div class="segment-offset"/>').text("$"+_e(t[l],4)).css("grid-row",`${i.indexOf(t[l])+2}`).css("grid-column","1").appendTo(this.maindiv);this.scrubRows={bounds:i,heights:f},this.scrubOverlay=$('<div class="memmap-scrub"/>').css("grid-row","2 / -1").css("grid-column","1").on("mousemove",Z=>this.scrubTo(Z)).on("mouseleave",()=>this.hideScrub()).appendTo(this.maindiv),this.maindiv.css("grid-template-columns",s.join(" ")),this.maindiv.css("grid-template-rows",u.join(" "))}}scrubTo(e){if(!(!this.scrubRows||!this.scrubOverlay)){var t=this.scrubOverlay[0].getBoundingClientRect(),r=this.scrubRows.bounds,i=this.scrubRows.heights,s=0;for(var o of i)s+=o;var a=(e.clientY-t.top)/t.height*s,l=EQ(r,i,a);this.scrubLabel||(this.scrubLabel=$('<div class="memmap-scrub-label"/>').appendTo(document.body)),this.scrubLabel.text("$"+_e(l,4)).css({left:e.clientX+12+"px",top:e.clientY+12+"px"}).show()}}hideScrub(){this.scrubLabel&&this.scrubLabel.hide()}},jr=4278190080,fs=class{constructor(){this.cumulativeData=!1;var e=160,t=262;try{e=Math.ceil(P.machine.cpuCyclesPerLine)||e,t=Math.ceil(P.machine.numTotalScanlines)||t}catch(r){}this.cyclesPerLine=e,this.totalScanlines=t}addr2symbol(e){var t=P.debugSymbols&&P.debugSymbols.addr2symbol||{};return t[e]}addr2str(e){var t=this.addr2symbol(e);return typeof t=="string"?"$"+_e(e)+" ("+t+")":"$"+_e(e)}showTooltip(e){e?(this.tooldiv||(this.tooldiv=document.createElement("div"),this.tooldiv.setAttribute("class","tooltiptrack"),document.body.appendChild(this.tooldiv)),$(this.tooldiv).text(e).show()):$(this.tooldiv).hide()}setVisible(e){e?(this.probe=P.startProbing(),this.probe.singleFrame=!this.cumulativeData,this.tick()):(this.probe&&(this.probe.singleFrame=!0),P.stopProbing(),this.probe=null)}redraw(e){var t=this.probe;if(!t||!t.idx)return 0;var r=0,i=0,s=0;this.sp=0;for(var o=0;o<t.idx;o++){var a=t.buf[o],l=a&65535,c=a>>16&255,d=a&jr;switch(d){case 2113929216:r++,i=0;break;case 2130706432:r=0,i=0;break;case 0:i+=l,s+=l;break;case 167772160:case 184549376:this.sp=l;default:e(d,l,i,r,s,c);break}}return s}opToString(e,t,r){var i="";switch(e){case 16777216:i="Exec";break;case 301989888:i="Read";break;case 318767104:i="Write";break;case 335544320:i="IO Read";break;case 352321536:i="IO Write";break;case 369098752:i="VRAM Read";break;case 385875968:i="VRAM Write";break;case 402653184:i="DMA Read";break;case 419430400:i="DMA Write";break;case 134217728:i="Interrupt";break;case 150994944:i="Error";break;case 520093696:i="Wait";break;case 167772160:i="Stack Push";break;case 184549376:i="Stack Pop";break;default:return""}return typeof t=="number"&&(i+=" "+this.addr2str(t)),e&268435456&&typeof r=="number"&&(i+=" = $"+_e(r,2)),i}getOpRGB(e,t){switch(e){case 16777216:return 98305;case 301989888:return 8388865;case 318767104:return 65920;case 335544320:return 98432;case 352321536:return 12583296;case 402653184:case 369098752:return 8421377;case 419430400:case 385875968:return 4227264;case 134217728:return 4177727;case 150994944:return 4145151;case 520093696:return 16727871;default:return 0}}},Nb=class extends fs{constructor(){super(...arguments);this.recreateOnResize=!0}createCanvas(t,r,i){var s=document.createElement("div"),o=document.createElement("canvas");return o.width=r,o.height=i,o.classList.add("pixelated"),o.style.width="100%",o.style.height="90vh",o.style.backgroundColor="black",o.style.cursor="crosshair",o.onmousemove=a=>{var l=xc(o,a);this.showTooltip(this.getTooltipText(l.x,l.y)),$(this.tooldiv).css("left",a.pageX+10).css("top",a.pageY-30)},o.onmouseout=a=>{$(this.tooldiv).hide()},t.appendChild(s),s.appendChild(o),this.canvas=o,this.ctx=o.getContext("2d"),this.initCanvas(),this.maindiv=s}initCanvas(){}getTooltipText(t,r){return null}getOpAtPos(t,r,i){t=t|0,r=r|0;let s=0;return this.redraw((o,a,l,c,d,h)=>{!s&&c==r&&l>=t&&(o&i)!=0&&(s=o|a)}),s}clear(){}tick(){this.clear(),this.redraw(this.drawEvent.bind(this))}},gu=class extends Nb{constructor(){super(...arguments);this.recreateOnResize=!1}createDiv(t){return this.createCanvas(t,this.cyclesPerLine,this.totalScanlines)}initCanvas(){this.imageData=this.ctx.createImageData(this.canvas.width,this.canvas.height),this.datau32=new Uint32Array(this.imageData.data.buffer)}getTooltipText(t,r){t=t|0,r=r|0;var i="",s=null,o=[],a=-1;return this.redraw((l,c,d,h,u,f)=>{switch(l){case 16777216:s=this.addr2symbol(c)||s;break;case 167772160:o.push(s);break;case 184549376:s=o.pop();break}h==r&&d<=t&&(d!=a&&(i="",a=d),i==""&&s&&(i+=`
`+s),i+=`
`+this.opToString(l,c,f))}),"X: "+t+" Y: "+r+" "+i}refresh(){this.tick(),this.datau32.fill(jr)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(jr)}},Ou=class extends gu{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=xc(this.canvas,e),r=Math.floor(t.x)+Math.floor(t.y)*256,i=-1,s=-1;this.redraw((o,a)=>{s<0&&i>=0&&a==r&&(s=i),o==16777216&&(i=a)}),s>=0&&Jl([s])}}clear(){for(var e=0;e<=65535;e++){var t=P.readAddress(e),r=t>>2|t&31;r|=r<<8|r<<16,this.datau32[e]=r|jr}}drawEvent(e,t,r,i){var s=this.getOpRGB(e,t);if(s){var o=t&255,a=t>>8&255,l=this.datau32[t&65535];l=l|s|jr,this.datau32[t&65535]=l}}getTooltipText(e,t){var r=(e&255)+(t<<8),i="",s=-1,o={},a=null,l=[];return this.redraw((c,d,h,u,f,m)=>{switch(c){case 16777216:s=d,a=this.addr2symbol(d)||a;break;case 167772160:l.push(a);break;case 184549376:a=l.pop();break}var O=c|s;d==r&&!o[O]&&(i==""&&a&&(i+=`
`+a),i+=`
PC `+this.addr2str(s)+" "+this.opToString(c,null,m),o[O]=1)}),this.addr2str(r)+i}},Bb=class extends gu{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=xc(this.canvas,e),r=Math.floor(t.x),i=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(ai("toline"),P.runEval(()=>{let o=P.getRasterScanline&&P.getRasterScanline()>=i;return o&&P.getRasterLineClock?o&&P.getRasterLineClock()>r:o}))}}drawEvent(e,t,r,i){var s=this.getOpRGB(e,t);if(s){var o=r+i*this.canvas.width,a=s|jr;this.datau32[o]|=a}}drawImage(){let e=jr;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==jr?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},bu=class extends Bb{constructor(){super(...arguments);this.interrupt=0;this.rgb=0;this.lastpc=0}drawEvent(t,r,i,s){var o=i+s*this.canvas.width;if(t==134217728&&(this.interrupt=1),this.interrupt==1&&t==167772160&&(this.interrupt=r),this.interrupt>1&&this.sp>this.interrupt&&(this.interrupt=0),t==318767104&&(this.rgb|=47),t==385875968&&(this.rgb|=16256),t==352321536&&(this.rgb|=2047872),t==335544320&&(this.rgb|=7936),t==520093696&&(this.rgb=32768),t==150994944||t==402653184)this.datau32[o]=4279176975;else{let a=this.rgb;if(t==16777216){let l=this.sp&15;l>=8&&(l=16-l),Math.abs(this.lastpc)-r>16&&(l+=1),Math.abs(this.lastpc)-r>256&&(l+=1),a=this.rgb=526344*l+2105376,this.lastpc=r}this.interrupt&&(a|=8388672),this.datau32[o]==jr&&(this.datau32[o]=a|jr)}}},yu=class extends fs{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new co(t),this.vlist.create(t,this.cyclesPerLine*this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){var r="",i="seg_data",s=this.lines&&this.lines[t];if(s!=null){var o=s.info.join(", ");r="("+Hr(s.row,4)+", "+Hr(s.col,4)+") "+La(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(i="seg_io")}return{text:r,clas:i}}refresh(){this.tick()}tick(){let t=P instanceof kf||P instanceof Pc;this.dumplines={},this.redraw((r,i,s,o,a,l)=>{t&&(a>>=2);var c=this.dumplines[a];switch(c==null&&(c={op:r,addr:i,row:o,col:s,asm:null,info:[]},this.dumplines[a]=c),r){case 16777216:if(P.disassemble){var d=P.disassemble(i,P.readAddress.bind(P));c.asm=d&&d.line}break;default:var h=this.opToString(r,i,l);h!=""&&c.info.push(h);break}}),this.lines=Z0(this.dumplines),this.vlist.setRowCount(this.lines.length),this.vlist.refresh()}},Su=class extends fs{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new co(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=Hr(t+"",3)+" ",i="seg_code",s=this.dumplines&&this.dumplines[t]||[],o=Math.round(this.cyclesPerLine/3.3),a=0;a<this.cyclesPerLine;a++){var l=s[a];if(l!==void 0){var c=l&65535,d=d&jr;if(d==16777216)r+=",";else{var h=_e(c);r+=h,a+=h.length-1}}else r+=a==o?"|":"."}return s[-1]&&(r+=" "+s[-1]),{text:r,clas:i}}refresh(){this.tick()}tick(){let t=P instanceof kf||P instanceof Pc;this.dumplines={},this.redraw((r,i,s,o,a,l)=>{var c=this.dumplines[o];switch(c==null&&(this.dumplines[o]=c=[]),r){case 16777216:var d=P.debugSymbols.addr2symbol[i];d&&(c[-1]=d);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=r|i;break}}),this.vlist.refresh()}},vu=class extends fs{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return P.debugSymbols&&P.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(P.debugSymbols.symbolmap).filter(r=>!LQ(r))):this.keys=["no symbols defined"],this.vlist=new co(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:Hr("Symbol",35)+Hr("Reads",8)+Hr("Writes",8)};var r=this.keys[t-1],i=this.dumplines&&this.dumplines[r];function s(l){var c=i[l]|0;return Hr(c?c.toString():"",8)}var o,a;return i!=null?(o=Hr(r,35)+s(301989888)+s(318767104),i[16777216]?a="seg_code":i[335544320]||i[352321536]?a="seg_io":a="seg_data"):(o=Hr(r,35),a="seg_unknown"),{text:o,clas:a}}refresh(){this.tick()}tick(){this.dumplines={},this.redraw((t,r,i,s,o,a)=>{var l=P.debugSymbols.addr2symbol[r];if(l!=null){var c=this.dumplines[l];c==null&&(c={},this.dumplines[l]=c),c[t]=(c[t]|0)+1}}),this.vlist.refresh(),this.probe&&this.probe.clear()}},wu=class{constructor(){this.editingId=null}createDiv(e){return this.maindiv=xr(e,"vertical-scroll bp-view"),this.render(),this.maindiv[0]}refresh(e){this.render()}render(){let e=this.maindiv.empty(),t=jl(),r=this.editingId!=null?t.find(d=>d.bp.id==this.editingId):null,i=$('<div class="bp-form"/>'),s=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","address or symbol (e.g. $8000, mainloop)").val(r&&r.bp.type=="address"?r.bp.target:""),o=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","condition (e.g. A>=$20, #scanline==222)").val(r&&r.bp.condition||""),a=$('<button class="btn btn-default btn-xs bp-submit"/>').text(r?"Save":"Add"),l=$('<button class="btn btn-default btn-xs bp-submit"/>').text("Cancel");l.toggle(r!=null),l.click(()=>{this.editingId=null,this.render()});let c=()=>{let d=String(s.val()||"").trim(),h=String(o.val()||"").trim()||void 0;r?(r.bp.type=="address"?Yt.update(r.bp.id,{target:d,condition:h}):Yt.update(r.bp.id,{condition:h}),this.editingId=null):d&&(Yt.addAddressBreakpoint(d,h),s.val(""),o.val("")),this.render()};a.click(c),i.append(s,o,a,l),i.on("keydown",d=>{d.key=="Enter"&&(d.preventDefault(),c()),d.key=="Escape"&&(this.editingId=null,this.render())}),e.append(i);for(let d of t)e.append(this.renderRow(d));t.length==0&&e.append($('<div class="bp-hint"/>').text("No breakpoints. Click a line in the editor gutter (left of the line numbers), or add an address or symbol above."))}renderRow(e){let t=e.bp,r=$('<div class="bp-row"/>'),i=en&&en.c,s=i?i.EPC!=null?i.EPC:i.PC:void 0;e.pc!=null&&s===e.pc&&r.addClass("bp-current");let o=$('<input type="checkbox" class="bp-chk"/>').prop("checked",t.enabled).attr("title",t.enabled?"Disable breakpoint":"Enable breakpoint").on("click",f=>{f.stopPropagation(),Yt.setEnabled(t.id,!t.enabled)});r.append(o);let a;t.type=="source"?a=yt(t.file)+":"+t.line:a=t.target;let l=$('<span class="bp-loc"/>').text(a);t.type=="source"?(l.attr("title",t.file+":"+t.line+" (click to open)"),l.on("click",()=>{let f=N.createOrShow(t.file);f&&f.highlightLines&&f.highlightLines(t.line-1,t.line-1)})):e.pc!=null&&(l.attr("title",a+" ($"+_e(e.pc,4)+", click to open)"),l.on("click",()=>DQ(e.pc))),r.append(l);let c=$('<span class="bp-addr"/>');e.pc!=null?c.text("$"+_e(e.pc,4)):c.text(e.error||"?").addClass("bp-error").attr("title",e.error),r.append(c);let d=$('<span class="bp-cond"/>').text(t.condition?"if "+t.condition:"").attr("title",t.condition?"if "+t.condition:"");r.append(d);let h=$('<button class="bp-btn"><span class="glyphicon glyphicon-pencil"/></button>').attr("title","Edit breakpoint").on("click",()=>{this.editingId=t.id,this.render()}),u=$('<button class="bp-btn"><span class="glyphicon glyphicon-trash"/></button>').attr("title","Delete breakpoint").on("click",()=>Yt.remove(t.id));return r.append(h,u),t.enabled||r.addClass("bp-disabled"),r}};function xu(n,e){if(n=n.trim(),!n)return null;if(e){if(n in e)return{addr:e[n],isSymbol:!0};let r=n.toLowerCase();for(var t in e)if(t.toLowerCase()===r)return{addr:e[t],isSymbol:!0}}return/^(0x|\$)[0-9a-f]+$/i.test(n)?{addr:parseInt(n.replace(/^(0x|\$)/i,""),16),isSymbol:!1}:/^[0-9a-f]+$/i.test(n)?{addr:parseInt(n,16),isSymbol:!1}:null}function MX(n,e){for(let t of e||[]){let r=t.last!=null?t.last:t.start+t.size-1;if(n>=t.start&&n<=r)return t}return null}function ZQ(n,e,t){let r=MX(e.addr,t),i=(r==null?void 0:r.type)==="rom";return{record:{id:"debugger:"+n.toLowerCase(),name:n,kind:i?"label":"var",brief:i?"open in Disassembly":"open in Memory Browser",source:"debugger",file:"",addr:e.addr},score:500}}function IQ(n,e){return n.isSymbol||!e}function LX(n,e){let t=null;return()=>{t&&clearTimeout(t),t=setTimeout(n,e)}}var DX=30;function Pu(n){return String(n).replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function ZX(){let n=N&&N.getActive&&N.getActive();if(n&&n.getSelectionText){let e=n.getSelectionText();if(e&&e.indexOf(`
`)<0&&e.indexOf("\r")<0)return e.trim()}return""}function IX(n){var t;let e=n.record;if(e.source==="project"){let r=e.file;if(!r||!N.isWindow(r))return;let i=N.createOrShow(r);i instanceof un&&e.line&&i.navigateToLine(e.line)}else if(e.source==="toolchain"){let r=e.file;if(!r)return;Kl(r);let i=N.createOrShow("#headerview/"+r);i instanceof hs&&e.line&&i.navigateToLine(e.line)}else if(e.source==="debugger"){let r=(t=e.addr)!=null?t:-1;if(r<0)return;if(e.kind==="label"&&N.isWindow("#disasm")){let i=N.createOrShow("#disasm");i instanceof Ri&&i.goToAddress(r)}else{let i=N.createOrShow("#memory");i instanceof us&&i.goToAddress(r)}}else if(e.source==="docs"){let r=e.url||"";r.startsWith("#help/")?N.createOrShow(r):r&&window.open(r,"_blank")}}function Vb(){bootbox.dialog({title:"Search",onEscape:!0,message:`
<div id="searchbox_form">
<input type="text" id="searchboxInput" class="form-control"
placeholder="Search symbols, files, docs"
autocomplete="off" style="margin-bottom:8px">
<div id="searchboxResults" style="max-height:340px;overflow-y:auto"></div>
</div>
`,buttons:{close:{label:"Close",className:"btn-default"}}}).one("shown.bs.modal",()=>{$("#searchboxInput").trigger("focus")});let e=$("#searchboxInput"),t=$("#searchboxResults"),r=[],i=-1,s=d=>{if(i=Math.max(-1,Math.min(d,r.length-1)),t.find("li.search-hit").each((h,u)=>{$(u).toggleClass("active",h===i)}),i>=0){let h=t[0],u=t.find("li.search-hit").eq(i);if(u.length){let f=u[0],m=h.getBoundingClientRect(),O=f.getBoundingClientRect(),S=O.top-m.top;S<0?h.scrollTop+=S:S+O.height>m.height&&(h.scrollTop+=S+O.height-m.height)}}},o=(d=i)=>{let h=r[d];h&&(IX(h),bootbox.hideAll())},a=d=>{if(r=d||[],r.length===0){i=-1,t.html('<div class="text-muted" style="padding:8px">No matches.</div>');return}let h=$('<ul class="list-group" style="margin-bottom:0"></ul>');for(let u of r){let f=u.record,m=f.source,O=f.kind==="func"?"\u0192":f.kind==="macro"?"#":f.kind==="label"?":":f.kind==="struct"?"S":f.kind==="enum"?"E":f.kind==="text"?"\u2261":"\u2022",S=f.source==="debugger"?_e(f.addr,4):f.file&&f.line?`${f.file}:${f.line}`:f.file||"",x=f.kind!=="text",D=$('<li class="list-group-item search-hit" style="cursor:pointer;padding:6px 10px;display:flex;align-items:center;overflow:hidden"></li>');D.html(`<span class="search-kind" style="margin-right:6px;font-weight:bold;flex:0 0 auto">${O}</span><span class="search-name" style="flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">`+(x?`<strong>${Pu(f.name)}</strong>`:`<span class="search-dumb">${Pu(f.name)}</span>`)+(f.brief?` <span class="text-muted">- ${Pu(f.brief)}</span>`:"")+`</span><span class="search-loc" style="flex:0 0 auto;margin-left:8px;font-style:italic;font-size:small;white-space:nowrap">${S?Pu(S):""}</span>`),D.click(()=>{o(r.indexOf(u))}),h.append(D)}t.empty().append(h),s(0)},l=LX(async()=>{let d=e.val();if(!d){r=[],i=-1,t.empty();return}try{let h=await K1.query(d,DX),u=xu(d,P&&P.debugSymbols&&P.debugSymbols.symbolmap);u&&IQ(u,h.length>0)&&h.push(ZQ(d,u,re&&re.segments)),a(h)}catch(h){t.html('<div class="text-danger" style="padding:8px">Search failed.</div>')}},150);e.on("input",l),e.on("keydown",d=>{d.key==="ArrowDown"?(d.preventDefault(),s(i+1)):d.key==="ArrowUp"?(d.preventDefault(),s(i-1)):d.key==="Enter"?(d.preventDefault(),i>=0?o():l()):d.key==="Home"?(d.preventDefault(),s(0)):d.key==="End"&&(d.preventDefault(),s(r.length-1))});let c=ZX();c&&(e.val(c),l())}var XX=800,zX=1e3,WX=16;function VQ(n){var e={};return n.forEach(t=>{e[t.name]=(e[t.name]||0)+1}),n.forEach(t=>{e[t.name]>1&&t.group&&(t.name=t.group+": "+t.name)}),n}function XQ(n){return n.art?n.brev?0:7:null}var ku=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function tc(n){return n.replace(/(\shex\s+)([0-9a-f]+)/ig,function(e,t,r){for(var i=t,s=0;s<r.length;s+=2)i+="0x"+r.substr(s,2)+",";return i})}function $u(n){for(var e=[],t;t=ku.exec(n);){var r;t[4]?r=parseInt(t[5],2):t[2].startsWith("%")?r=parseInt(t[3],2):t[2].startsWith("x")||t[2].startsWith("$")||t[2].endsWith("h")?r=parseInt(t[3],16):r=parseInt(t[3]),e.push(r)}return e}function NX(n,e,t){n=tc(n);for(var r="",i,s=0,o=0,a=Math.ceil(t/4);i=ku.exec(n);)r+=n.slice(s,ku.lastIndex-i[0].length),s=ku.lastIndex,i[4]?r+=i[4]+bf(e[o++],parseInt(i[4])):i[2].startsWith("%")?r+=i[1]+i[2]+bf(e[o++],t):i[2].endsWith("h")?r+=i[1]+i[2]+_e(e[o++],parseInt(i[2])):i[2].startsWith("x")?r+=i[1]+"x"+_e(e[o++],a):i[2].startsWith("$")?r+=i[1]+"$"+_e(e[o++],a):r+=i[1]+e[o++].toString();return r+=n.slice(s),r=r.replace(/(\shex\s+)([,x0-9a-f]+)/ig,(l,c,d)=>{var h=c+d;return h=h.replace(/0x/ig,"").replace(/,/ig,""),h}),r}function Ub(n,e){if(!e)return n;for(var t=0,r=0;r<e.length;r++){var i=e[r];i<0&&(i=-i-1,t^=1<<i),n&1<<r&&(t^=1<<i)}return t}function qb(n,e){var t=e[n%e.length];return[t>>3,t&7]}var BX=[[0,0,4],[8,0,0]],VX=[[0,8,12],[8,8,0],[16,8,4],[24,8,8],[32,0,12],[40,0,0],[48,0,4],[56,0,8]];function FX(n,e,t,r,i,s){for(var o=0;o<8;o++)for(var a=n[e+o]||0,l=0;l<4;l++){var c=(3-l)*s+(7-o),d=a>>l&1|(a>>l+4&1)<<1;t[i*s+r+c]=d}}function YX(n,e,t,r,i,s){for(var o=0;o<8;o++){for(var a=0,l=0;l<4;l++){var c=(3-l)*s+(7-o),d=(t[i*s+r+c]||0)&3;d&1&&(a|=1<<l),d&2&&(a|=1<<l+4)}n[e+o]=a}}function Gb(n){return n.w===16&&n.h===16?VX:BX}function FQ(n){return Gb(n).length*8}function jX(n,e){for(var t=e.w,r=e.h,i=e.count||1,s=e.wpimg||FQ(e),o=Gb(e),a=[],l=0;l<i;l++){for(var c=new Array(t*r).fill(0),d=l*s,h=0;h<o.length;h++){var[u,f,m]=o[h];FX(n,d+u,c,f,m,t)}a.push(new Uint8Array(c))}return a}function UX(n,e){for(var t=e.w,r=e.h,i=e.count||n.length,s=e.wpimg||FQ(e),o=Gb(e),a=new Array(s*i).fill(0),l=0;l<i;l++)for(var c=n[l]||new Uint8Array(t*r),d=l*s,h=0;h<o.length;h++){var[u,f,m]=o[h];YX(a,d+u,c,f,m,t)}return a}function qX(n,e){if(e.pacstrip)return jX(n,e);var t=e.w,r=e.h,i=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(t*s/a),c=(1<<s)-1,d=e.pofs||l*r*i,h=e.skip||0,u=e.wpimg||l*r,f=l;e.il&&(u=l,f=l*i);for(var m=[],O=0;O<i;O++){for(var S=[],x=0;x<r;x++)for(var D=e.flip?r-1-x:x,M=u*O+D*f,Z=0,k=0;k<t;k++){var w=0,R=Ub(M,e.remap);e.reindex&&([R,Z]=qb(k,e.reindex),R+=M);for(var X=0;X<o;X++){var W=n[R+X*d+h];w|=((e.brev?W>>a-Z-s:W>>Z)&c)<<X*s}S.push(w),Z+=s,Z>=a&&!e.reindex&&(M+=1,Z=0)}m.push(new Uint8Array(S))}return m}function YQ(n){var e=n.count||1,t=n.bpp||1,r=n.np||1,i=n.bpw||8,s=n.sl||Math.ceil(n.w*t/i),o=n.pofs||s*n.h*e,a=n.skip||0,l=n.wpimg||(n.map==="nesnt"?1024:s*n.h),c=s;n.il&&(l=s,c=s*e);var d=0;if(n.reindex)for(var h=0;h<n.w;h++)d=Math.max(d,qb(h,n.reindex)[0]);for(var u=0,f=0;f<e;f++)for(var m=0;m<n.h;m++)for(var O=n.flip?n.h-1-m:m,S=l*f+O*c,x=Math.ceil(n.w*t/i),D=0;D<x;D++){var M=n.reindex?S+d:Ub(S,n.remap);u=Math.max(u,M+(r-1)*o+a),S++}return Math.max(l*e,u+1)}function jQ(n){return n.map=="charpad"||n.map=="tilemap"}function UQ(n,e){var t=$u(tc(n));if(e.comp=="rletag"&&(t=Array.from(yf(new Uint8Array(t)))),jQ(e)){if(t.length!=e.w*e.h)return`Expected ${e.w*e.h} value(s), found ${t.length}`}else if(e.w>0&&e.h>0){var r=YQ(e);if(t.length!=r)return`Expected ${r} value(s), found ${t.length}`}else if(e.pal&&t.length<1)return`Palette requires at least 1 value, found ${t.length}`;return null}function qQ(n,e){if(e.comp=="rletag")return null;if(jQ(e)){if(n!=e.w*e.h)return`Expected ${e.w*e.h} byte(s), found ${n}`}else if(e.w>0&&e.h>0){var t=YQ(e);if(n!=t)return`Expected ${t} byte(s), found ${n}`}else if(e.pal&&n<1)return`Palette requires at least 1 byte, found ${n}`;return null}function zQ(n,e){let t=1;for(let r=0;r<e&&r<n.length;r++)n[r]===`
`&&t++;return t}function GQ(n,e){for(var t=/[/;][*;]([{].+[}])[*;][/;]/g,r=[],i;i=t.exec(n);){var s=i.index+i[0].length,o;e?o=n.indexOf("end",s):i[0].startsWith(";;")?(o=n.indexOf(";;",s),o==n.indexOf(";;{",s)&&(o=-1)):o=n.indexOf(";",s);var a=zQ(n,i.index),l=i[0],c=o>=0?zQ(n,o):"???";if(o<0){var d=e?'"end"':i[0].startsWith(";;")?'";;"':'";"';r.push({header:l,startline:a,endline:c,error:`No closing ${d} found after asset header`})}else if(o<=s)r.push({header:l,startline:a,endline:c,error:"Empty data block after asset header"});else try{var h=i[1].replace(/([A-Za-z_]\w*):/g,'"$1":'),u=JSON.parse(h),f=/#embed\s+"(.+?)"/.exec(n.substring(s,o)),m=f?f[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:u,start:s,end:o,embedFile:m})}catch(O){r.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${O.message}`})}}return r}function HQ(n,e,t){if(t(e))return e;var r=n.lastIndexOf("/");if(r>=0){var i=n.substring(0,r+1)+e;if(t(i))return i}return null}function GX(n,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return UX(n,e);var t=e.w,r=e.h,i=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(e.w*s/a),c=(1<<s)-1,d=e.pofs||l*r*i,h=e.skip||0,u=e.wpimg||l*r,f=l;e.il&&(u=l,f=l*i);var m=e.il?f*r:u*i,O;o>0&&e.sl?O=new Uint8Array(m):a<=8?O=new Uint8Array(m*o):O=new Uint32Array(m*o);for(var S=0;S<i;S++)for(var x=n[S],D=0,M=0;M<r;M++)for(var Z=e.flip?r-1-M:M,k=S*u+Z*f,w=0,R=0;R<t;R++){var X=x[D++],W=Ub(k,e.remap);e.reindex&&([W,w]=qb(R,e.reindex),W+=k);for(var ne=0;ne<o;ne++){var de=X>>ne*s&c;O[W+ne*d+h]|=e.brev?de<<a-w-s:de<<w}w+=s,w>=a&&!e.reindex&&(k+=1,w=0)}return O}function WQ(n,e,t,r,i,s,o){for(var a=[],l=0;l<n.length;l++){var c=n[l],d=4278190080;d|=(c>>e&(1<<t)-1)<<8-t,d|=(c>>r&(1<<i)-1)<<16-i,d|=(c>>s&(1<<o)-1)<<24-o,a.push(d)}return a}function HX(n){var e=(n>>0&1)*33+(n>>1&1)*71+(n>>2&1)*151,t=(n>>3&1)*33+(n>>4&1)*71+(n>>5&1)*151,r=(n>>6&1)*81+(n>>7&1)*174;return 4278190080|r<<16|t<<8|e}function KX(n){var e=n.pal;if(typeof e=="number"){var t=Math.floor(Math.abs(e/100)%10),r=Math.floor(Math.abs(e/10)%10),i=Math.floor(Math.abs(e)%10);return 1<<t+r+i}else{if(e==="pacman")return 256;var s=Tu[e];if(s)return s.length;throw new Error("No palette named "+e)}}function Qu(n,e){var t=e.pal,r;if(typeof t=="number"){var i=Math.floor(Math.abs(t/100)%10),s=Math.floor(Math.abs(t/10)%10),o=Math.floor(Math.abs(t)%10);t>=0?r=WQ(n,0,i,i,s,i+s,o):r=WQ(n,i+s,o,i,s,0,i)}else if(t==="pacman"){r=[];for(var a=0;a<n.length;a++)r.push(HX(n[a]))}else{var l=Tu[t];if(l)r=new Uint32Array(n).map(c=>l[c&l.length-1]|4278190080);else throw new Error("No palette named "+t)}return r}function rc(n){var e=n.pal;if(typeof e!="number"||!isFinite(e))return null;var t=Math.floor(Math.abs(e/100)%10),r=Math.floor(Math.abs(e/10)%10),i=Math.floor(Math.abs(e)%10);return t+r+i<=0?null:e>=0?{r:t,g:r,b:i,rshift:0,gshift:t,bshift:t+r}:{r:i,g:r,b:t,rshift:t+r,gshift:t,bshift:0}}function NQ(n,e,t,r){var i=rc(n);return i?(e&(1<<i.r)-1)<<i.rshift|(t&(1<<i.g)-1)<<i.gshift|(r&(1<<i.b)-1)<<i.bshift:0}function JX(n,e){var t=rc(n);return t?{r:e>>t.rshift&(1<<t.r)-1,g:e>>t.gshift&(1<<t.g)-1,b:e>>t.bshift&(1<<t.b)-1}:null}var Tu={gb:[13686916,8890444,5401396,2961698],nes:[5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0],ap2lores:[0,16711935,127,8323199,32512,8355711,191,255,12549888,16760576,12566463,16744319,65280,16776960,49023,16777215],vcs:[0,0,4210752,4210752,7105644,7105644,9474192,9474192,11579568,11579568,13158600,13158600,14474460,14474460,16053492,16053492,17476,17476,1074276,1074276,2393220,2393220,3448992,3448992,4241592,4241592,5296336,5296336,6088936,6088936,6880508,6880508,10352,10352,1328260,1328260,2645144,2645144,3963052,3963052,5016764,5016764,6070476,6070476,6862044,6862044,7915756,7915756,6276,6276,1586328,1586328,3166380,3166380,4745408,4745408,6062288,6062288,7378144,7378144,8431852,8431852,9747708,9747708,136,136,2105500,2105500,3947696,3947696,5789888,5789888,7368912,7368912,8947936,8947936,10526956,10526956,11842812,11842812,6029432,6029432,7610508,7610508,8928416,8928416,10246320,10246320,11563200,11563200,12616912,12616912,13671644,13671644,14725356,14725356,7864392,7864392,9445472,9445472,10763384,10763384,12081292,12081292,13398176,13398176,14451892,14451892,15506628,15506628,16560340,16560340,8650772,8650772,9969712,9969712,11287628,11287628,12605544,12605544,13660284,13660284,14715028,14715028,15507624,15507624,16561340,16561340,8912896,8912896,10231836,10231836,11550776,11550776,12606544,12606544,13661288,13661288,14716028,14716028,15508624,15508624,16562340,16562340,8132608,8132608,9451548,9451548,11031608,11031608,12349520,12349520,13404264,13404264,14457980,14457980,15512720,15512720,16566436,16566436,6040576,6040576,7883804,7883804,9463864,9463864,11306064,11306064,12622952,12622952,13939836,13939836,15256720,15256720,16572580,16572580,2898944,2898944,4742172,4742172,6585400,6585400,8428624,8428624,9745512,9745512,11325564,11325564,12641424,12641424,13958308,13958308,15360,15360,2120736,2120736,4226112,4226112,6069340,6069340,7648372,7648372,9228428,9228428,10806436,10806436,12123320,12123320,14356,14356,1858612,1858612,3701840,3701840,5281900,5281900,6861956,6861956,8178844,8178844,9495732,9495732,10812616,10812616,12332,12332,1855564,1855564,3436648,3436648,5016708,5016708,6596764,6596764,7913652,7913652,8967372,8967372,10284256,10284256,10308,10308,1591396,1591396,3172484,3172484,4490400,4490400,5807288,5807288,7124176,7124176,8178920,8178920,9232636,9232636],astrocade:[0,2368548,4737096,7171437,9539985,11974326,14342874,16777215,12255269,14680137,16716142,16725394,16734903,16744155,16753663,16762879,11534409,13959277,16318866,16721334,16730842,16740095,16749311,16758783,10420330,12779662,15138995,16718039,16727291,16736767,16745983,16755199,8847495,11206827,13631696,15994612,16724735,16733951,16743423,16752639,6946975,9306307,11731175,14092287,16461055,16732415,16741631,16751103,4784304,7143637,9568505,11929087,14297599,16731647,16741119,16750335,2425019,4784352,7209215,9570047,12004095,14372863,16741375,16750847,191,2359523,4718847,7146495,9515263,11949311,14318079,16752127,187,224,2294015,4658431,7092735,9461247,11895551,14264063,176,213,249,2367999,4736511,7105279,9539327,11908095,159,195,3303,209151,2577919,4946431,7380735,9749247,135,171,7888,17140,681983,3050495,5484543,7853311,106,3470,12723,22231,31483,1548031,3916799,6285311,73,8557,17810,27318,36570,373759,2742271,5176575,4389,13641,23150,32402,41911,51163,2026495,4456447,9472,18724,27976,37485,46737,56246,1834970,4194303,14080,23296,32803,42055,51564,60816,2031541,4456409,18176,27648,36864,46116,55624,392556,2752401,5177269,21760,30976,40192,49667,58919,1572683,3932016,6291348,24320,33536,43008,52224,716810,3079982,5504851,7864183,25856,35328,44544,250368,2619136,4980503,7405371,9764703,26624,35840,45312,2413824,4782336,7143173,9568041,11927374,26112,35584,2338560,4707328,7141376,9502464,11927326,14286659,24832,2393344,4762112,7196160,9564928,11992832,14352155,16711487,2447360,4815872,7250176,9618688,12052992,14417664,16776990,16777027,4803328,7172096,9606144,11974912,14343424,16776965,16777001,16777038,6962176,9330688,11764992,14133504,16502272,16773655,16777019,16777055,8858112,11226880,13660928,16029440,16759818,16769070,16777043,16777079,10426112,12794624,15163392,16745475,16754727,16764235,16773488,16777108,11534848,13969152,16337664,16740388,16749640,16759148,16768401,16777141,12255232,14684928,16725795,16735047,16744556,16753808,16763317,16772569],c64:[0,16777215,2832232,11707504,8797551,4427096,7940149,7325624,2445167,14659,5859226,4473924,7105644,8704666,11886188,9803157]},BQ=[["Background",0,16],["Sprite",16,16]],ez={nes:[["Screen Color",0,1],["Background 0",1,3],["Background 1",5,3],["Background 2",9,3],["Background 3",13,3],["Sprite 0",17,3],["Sprite 1",21,3],["Sprite 2",25,3],["Sprite 3",29,3]],astrocade:[["Left",0,-4],["Right",4,-4]],pacman:[["Pal 01",0,4],["Pal 03",4,4],["Pal 05",8,4],["Pal 07",12,4],["Pal 09",16,4],["Pal 10",20,4],["Pal 11",24,4],["Pal 14",28,4],["Pal 19",32,4]],sms:BQ,gg:BQ};function KQ(n,e,t,r,i){var s=[];return e&&e.forEach(([o,a,l])=>{if(!(a>=n.length)){if(l==t)s.push({node:r,name:o,group:i,palette:n.slice(a,a+l)});else if(-l==t){var c=n.slice(a,a-l);c.reverse(),s.push({node:r,name:o,group:i,palette:c})}else if(l+1==t){var d=new Uint32Array(t);d[0]=n[0],d.set(n.slice(a,a+l),1),s.push({node:r,name:o,group:i,palette:d})}}}),s}function uo(n,e){if(n==null||e==null||n.length!==e.length)return!1;if(n===e)return!0;for(var t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}function Nu(n,e){if(n==null||e==null||n.length!==e.length)return!1;if(n===e)return!0;for(var t=0;t<n.length;t++)if(!uo(n[t],e[t]))return!1;return!0}var Pr=class{refreshLeft(){for(var e=this;e;)e.updateLeft(),e=e.left}refreshRight(){for(var e=this;e;)e.updateRight(),e=e.right}addRight(e){return this.right=e,e.left=this,e}addLeft(e){return this.left=e,e.right=this,e}},Au=class extends Pr{},Oa=class extends Au{constructor(e,t){super(),this.project=e,this.fileid=t,this.label=t}updateLeft(){return this.words=this.right.words,this.project&&this.project.updateFile(this.fileid,this.words),!0}updateRight(){return this.project&&(this.words=this.project.project.getFile(this.fileid)),!0}},Wu=class Wu extends Au{constructor(e,t,r,i,s,o){super(),this.project=e,this.fileid=t,this.label=r,this.bpw=o||8,this.rangeId=`asset_${Wu.nextRangeId++}`,this.project.setAssetRange(this.fileid,this.rangeId,i,s)}updateLeft(){if(this.right.words.length!=this.words.length)throw Error("Cannot put "+this.right.words.length+" image bytes into array of "+this.words.length+" bytes");this.words=this.right.words;var e=this.project.getAssetText(this.fileid,this.rangeId);if(e==null)throw Error("Could not find source code range for asset "+this.fileid);return e=NX(e,this.words,this.bpw),this.project.replaceAssetText(this.fileid,this.rangeId,e),!0}updateRight(){var e=this.project.getAssetText(this.fileid,this.rangeId);if(e==null)throw Error("Could not find source code range for asset "+this.fileid);e=tc(e);var t=$u(e);return this.words=t,!0}};Wu.nextRangeId=0;var Cu=Wu,_u=class extends Pr{updateLeft(){return!1}updateRight(){return this.words=yf(new Uint8Array(this.left.words)),!0}},Eu=class extends Pr{constructor(e){super(),this.fmt=e}updateLeft(){return this.images=this.right.images,this.words=GX(this.images,this.fmt),!0}updateRight(){return uo(this.words,this.left.words)?!1:(this.words=this.left.words,this.images=qX(this.words,this.fmt),!0)}},Fb=class{constructor(e){this.palcols=e}indexOf(e){return this.palcols.indexOf(e)}},ho=class extends Pr{constructor(t,r){super();this.palindex=0;this.palselected=!1;this.context=t,r.pacstrip?this.ncolors=4:this.ncolors=1<<(r.bpp||1)*(r.np||1),this.palname=r.palname,this.defpal=r.defpal}updateLeft(){this.right&&(this.rgbimgs=this.right.rgbimgs);var t=new Fb(this.palette),r=this.rgbimgs.map(i=>{for(var s=new Uint8Array(i.length),o=0;o<i.length;o++)s[o]=t.indexOf(i[o]);return s});return this.images=r,!0}updateRight(){if(!this.updateRefs()&&Nu(this.images,this.left.images))return!1;this.images=this.left.images;var t=this.palette.length-1;return this.rgbimgs=this.images.map(r=>{for(var i=new Uint32Array(r.length),s=0;s<r.length;s++)i[s]=this.palette[r[s]&t];return i}),!0}updateRefs(){var t;if(this.context!=null&&(this.paloptions=this.context.getPalettes(this.ncolors),this.paloptions&&this.paloptions.length>0)){if(this.palname&&!this.palselected){var r=this.paloptions.findIndex(i=>i.name===this.palname);r>=0&&(this.palindex=r)}t=this.paloptions[this.palindex].palette}return t==null&&this.defpal&&Tu[this.defpal]&&(t=Qu(Tu[this.defpal].map((i,s)=>s),{pal:this.defpal})),t==null&&(this.ncolors<=2?t=new Uint32Array([4278190080,4294967295]):t=new Uint32Array([4278190080,4294902015,4294967040,4294967295])),uo(this.palette,t)?!1:(this.palette=t,!0)}};function tz(n){for(var e=new Map,t=new Uint32Array(n.length),r=0,i=0;i<n.length;i++){for(var s=n[i];e[s];)s^=++r;t[i]=s,e[s]=1}return t}var nc=class extends Pr{constructor(e){super(),this.palfmt=e}updateLeft(){return!0}updateRight(){if(uo(this.words,this.left.words))return!1;this.words=this.left.words;var e=Qu(this.words,this.palfmt);return this.palette=this.palfmt.layout||this.palfmt.pal==="pacman"?new Uint32Array(e):tz(e),this.layout=ez[this.palfmt.layout],this.rgbimgs=[],this.palette.forEach(t=>{this.rgbimgs.push(new Uint32Array([t]))}),!0}getAllColors(){for(var e=[],t=0;t<KX(this.palfmt);t++)e.push(t);return Qu(e,this.palfmt)}},Ru=class extends Pr{constructor(e){super(),this.updateCells=e}updateLeft(){return!0}updateRight(){return this.updateCells(),!0}},Mu=class extends Pr{constructor(t){super();this.tileindex=0;this.minTiles=256;this.context=t}updateRefs(){var t=this.tilemap;return this.context!=null&&(this.tileoptions=this.context.getTilemaps(this.minTiles),this.tileoptions&&this.tileoptions.length>0&&(this.tilemap=this.tileoptions[this.tileindex].images)),!Nu(t,this.tilemap)}};function Hb(n,e,t,r,i,s,o,a=0){for(var l=0,c=0;c<o;c++)for(var d=(r+c)*e+t,h=0;h<s;h++){var u=i[l++];n[d++]=u&&a?u+a:u}}var Lu=class extends Mu{constructor(e){super(e)}updateLeft(){return!1}updateRight(){if(!this.updateRefs()&&uo(this.words,this.left.words))return!1;this.words=this.left.words,this.cols=32,this.rows=30,this.width=this.cols*8,this.height=this.rows*8,this.baseofs=0;var e=new Uint8Array(this.width*this.height);this.images=[e];for(var t=0,r,i=0;i<this.rows;i++)for(var s=0;s<this.cols;s++){var o=this.words[this.baseofs+t];if(typeof o=="undefined")throw Error("No name for address "+this.baseofs+" + "+t);var a=this.tilemap[o];if(!a)throw Error("No tilemap found for tile index "+o);r=t&11264|960|t&3072|t>>4&56|t>>2&7;var l=this.words[r],c=o^l<<9^2147483648,d=(s&2)+((t&64)>>4),h=(l>>d&3)<<2;Hb(e,this.width,s*8,i*8,a,8,8,h),t++}return!0}};function JQ(n,e){if(!(n.w>0&&n.h>0))return"tilemap needs positive w and h";if(n.attrs){var t=e(n.attrs);if(!t)return`Could not find array "${n.attrs}"`;if(t.length!=n.w*n.h)return`Attribute array "${n.attrs}" has ${t.length} value(s), expected ${n.w*n.h}`}return null}function nz(n,e,t,r){for(var i=n.w*8,s=n.h*8,o=new Uint8Array(i*s),a=new Uint8Array(64),l=0;l<n.h;l++)for(var c=0;c<n.w;c++){var d=l*n.w+c,h=r[e[d]];if(!h)throw Error(`Tile index ${e[d]} out of range at map cell ${c},${l}`);var u=t&&t[d]||0;if(u&96){for(var f=0;f<8;f++)for(var m=0;m<8;m++)a[f*8+m]=h[((u&64?7-f:f)<<3)+(u&32?7-m:m)];h=a}Hb(o,i,c*8,l*8,h,8,8,(u&7)<<2)}return{width:i,height:s,pixels:o}}var Du=class extends Mu{constructor(e,t){super(e),this.fmt=t,this.width=t.w*8,this.height=t.h*8}updateLeft(){return!1}updateRight(){for(var e=this.left.words,t=0,r=0;r<e.length;r++)t=Math.max(t,e[r]);if(this.minTiles=t+1,this.updateRefs(),!this.tilemap)throw Error(`No tile bitmaps found with at least ${this.minTiles} tiles`);var i=this.fmt.attrs?this.context.getNamedArray(this.fmt.attrs):null,s=nz(this.fmt,e,i,this.tilemap);return this.images&&uo(this.images[0],s.pixels)?!1:(this.images=[s.pixels],!0)}};function eT(n,e){if(!/^\w+$/.test(e))return null;var t=new RegExp("\\b"+e+"\\s*(?:\\[[^\\]]*\\]\\s*)+=\\s*\\{").exec(n);if(t){for(var r=1,i=t.index+t[0].length;i<n.length&&r>0;i++)n[i]=="{"?r++:n[i]=="}"&&r--;var s=n.substring(t.index+t[0].length,i-1).replace(/\/\*[\s\S]*?\*\/|\/\/.*$/gm,"");return $u(tc(s.replace(/[{}]/g," ")))}var o=new RegExp("^[ \\t]*_?"+e+":","m").exec(n);if(o){var a=n.substring(o.index+o[0].length),l=/^[ \t]*(?:[A-Za-z_.][\w.]*:|\.global)/m.exec(a);return l&&(a=a.substring(0,l.index)),$u(tc(a.replace(/;.*$/gm,"")))}return null}function rz(n){return[n.chars,n.tiles,n.colors]}function tT(n,e){if(!(n.w>0&&n.h>0&&n.tw>0&&n.th>0))return"charpad map needs positive w, h, tw and th";for(var t of rz(n)){if(!t)return'charpad map needs "chars", "tiles" and "colors" array names';if(!e(t))return`Could not find array "${t}"`}return null}function iz(n,e,t,r,i){for(var s=n.mc!==0,o=n.bg||0,a=n.mca||0,l=n.mcb||0,c=n.w*n.tw*8,d=n.h*n.th*8,h=new Uint8Array(c*d),u=new Uint8Array(64),f=n.tw*n.th,m=0;m<n.h;m++)for(var O=0;O<n.w;O++){var S=e[m*n.w+O];if(S===void 0||(S+1)*f>r.length)throw Error(`Tile index ${S} out of range at map cell ${O},${m}`);for(var x=0;x<f;x++){var D=r[S*f+x];if(D===void 0||(D+1)*8>t.length)throw Error(`Char index ${D} out of range in tile ${S}`);var M=i[n.colorby=="char"?D:S];if(M===void 0)throw Error(`No colour for ${n.colorby=="char"?"char "+D:"tile "+S}`);for(var Z=s&&(M&8)!=0,k=s?M&7:M&15,w=0;w<8;w++)for(var R=t[D*8+w],X=0;X<8;X++)if(Z){var W=R>>6-(X&-2)&3;u[w*8+X]=W==0?o:W==1?a:W==2?l:k}else u[w*8+X]=R>>7-X&1?k:o;Hb(h,c,(O*n.tw+x%n.tw)*8,(m*n.th+Math.floor(x/n.tw))*8,u,8,8)}}return{width:c,height:d,pixels:h}}var Zu=class extends Pr{constructor(e,t){super(),this.context=e,this.fmt=t,this.width=t.w*t.tw*8,this.height=t.h*t.th*8}updateLeft(){return!1}updateRight(){var e=r=>{var i=this.context.getNamedArray&&this.context.getNamedArray(r);if(!i)throw Error(`Could not find array "${r}"`);return i},t=iz(this.fmt,this.left.words,e(this.fmt.chars),e(this.fmt.tiles),e(this.fmt.colors));return this.images&&uo(this.images[0],t.pixels)?!1:(this.images=[t.pixels],!0)}},Yb=class{constructor(){this.gapX=null}recreate(e,t){var r=$('<div class="asset_grid"/>');e.empty().append(r),this.viewers=[];var i=Math.max(2,Math.ceil(16/this.width)),s=this.width<=8?16:8,o=null;this.rgbimgs.forEach((a,l)=>{var c=new ba;c.width=this.width,c.height=this.height,c.gapX=this.gapX,c.recreate(),c.canvas.style.width=c.displayWidth*i+"px",c.canvas.title="$"+_e(l),c.updateImage(a),$(c.canvas).addClass("asset_cell"),$(c.canvas).click(h=>{t(l,c)}),this.viewers.push(c),o||(o=$("<span/>"),r.append(o)),o.append(c.canvas);var d=l%s==s-1;d&&(r.append($("<br/>")),o=null)})}updateImages(e){this.rgbimgs=e;for(var t=0;t<this.viewers.length;t++)this.viewers[t].updateImage(e[t])}},Iu=class{constructor(e,t,r){this.viewers=[];this.sliders=[];this.currentWord=0;this.palfmt=e,this.rgbimgs=t,this.channels=rc(e),this.onpick=r}recreate(e,t){e.empty(),this.viewers=[],this.sliders=[],this.previewEl=null,this.colorInput=null,this.hexEl=null,this.channels?this.createSliders(e):this.createGrid(e),this.setCurrent(t)}paletteColor(e){var t=Qu([e],this.palfmt);return t&&t[0]||4278190080}updateColorWidgets(e){var t=this.paletteColor(e),r="#"+_e(So(t&16777215),6);this.previewEl&&this.previewEl.css("background-color",r),this.colorInput&&this.colorInput.value!==r&&(this.colorInput.value=r),this.hexEl&&this.hexEl.text(r+" $"+_e(e,4))}setCurrent(e){if(this.currentWord=e,this.channels){var t=JX(this.palfmt,e);if(t)for(var r of this.sliders){var i=r.channel==="r"?t.r:r.channel==="g"?t.g:t.b;r.input.value=String(i),r.valueLabel.text(String(i))}this.updateColorWidgets(e)}else this.viewers.forEach((s,o)=>$(s.canvas).toggleClass("selected",o===e))}channelBits(e){var t=this.channels;return t?e==="r"?t.r:e==="g"?t.g:t.b:0}pickFromSliders(){var e={r:0,g:0,b:0};for(var t of this.sliders)e[t.channel]=Number(t.input.value);var r=NQ(this.palfmt,e.r,e.g,e.b);this.setCurrent(r),this.onpick(r)}createSliders(e){var t=this.channels,r=Mn(e,"asset_colorpicker");this.previewEl=Mn(r,"asset_colorpicker_preview"),t.r<=8&&t.g<=8&&t.b<=8&&(this.colorInput=document.createElement("input"),this.colorInput.type="color",this.colorInput.className="asset_colorpicker_colorinput",r.append(this.colorInput)),this.hexEl=Mn(r,"asset_colorpicker_hex");var i=Mn(r,"asset_colorpicker_controls");for(var s of["r","g","b"]){var o=this.channelBits(s);if(!(o<=0)){var a=Mn(i,"asset_colorpicker_row");$("<label/>").text(s.toUpperCase()).appendTo(a);var l=document.createElement("input");l.type="range",l.min="0",l.max=String((1<<o)-1),l.step="1",l.className="asset_colorpicker_slider",a.append(l);var c=$('<span class="asset_colorpicker_value"/>').appendTo(a);l.value="0",this.sliders.push({input:l,valueLabel:c,channel:s}),$(l).on("input",()=>this.pickFromSliders())}}this.colorInput&&$(this.colorInput).on("input",()=>{var d=this.colorInput.value,h=parseInt(d.substring(1,3),16),u=parseInt(d.substring(3,5),16),f=parseInt(d.substring(5,7),16),m=NQ(this.palfmt,h>>8-t.r,u>>8-t.g,f>>8-t.b);this.setCurrent(m),this.onpick(m)})}createGrid(e){var t=Mn(e,"asset_colorpicker_grid"),r=Mn(t,"asset_grid"),i=16,s=null;this.rgbimgs.forEach((o,a)=>{var l=new ba;l.width=1,l.height=1,l.recreate(),l.canvas.style.width="16px",l.canvas.style.height="16px",l.updateImage(o),$(l.canvas).addClass("asset_cell"),$(l.canvas).attr("title","$"+_e(a)+" #"+_e(So(o[0]&16777215),6)),$(l.canvas).click(()=>{this.setCurrent(a),this.onpick(a)}),this.viewers.push(l),s||(s=$("<span/>"),r.append(s)),s.append(l.canvas),a%i===i-1&&(r.append($("<br/>")),s=null)})}};function Mn(n,e){var t=$(document.createElement("div"));return n&&t.appendTo(n),e&&t.addClass(e),t}var Xu=class extends Pr{constructor(e,t,r){super(),this.context=e,this.parentdiv=t,this.fmt=r}updateLeft(){return!0}updateRight(){if(Nu(this.rgbimgs,this.left.rgbimgs))return!1;if(this.rgbimgs=this.left.rgbimgs,this.chooser&&this.chooser.viewers&&this.chooser.viewers.length==this.rgbimgs.length){this.updateArtInfo(),this.chooser.updateImages(this.rgbimgs);for(var e=0;e<this.chooser.viewers.length;e++)this.rgbimgs[e]=this.chooser.viewers[e].rgbdata;return this.editor&&this.editor.setPalette(this.left.palette),!0}var t=Mn(this.parentdiv.empty(),"asset_dual"),r=Mn(t),i=Mn(t,"asset_editor").hide(),s=this.chooser=new Yb;s.rgbimgs=this.rgbimgs,s.width=this.fmt.w||1,s.height=this.fmt.h||1;var o=XQ(this.fmt);if(o!=null&&(s.gapX=this.fmt.brev?o+1:o),s.recreate(r,(c,d)=>{let h=this.fmt.aspect||1,u=Math.min(WX,XX/(d.displayWidth*h),zX/this.fmt.h),f=u*h;this.createEditor(i,d,f,u),this.context.setCurrentEditor(i,$(d.canvas),this),this.rgbimgs[c]=d.rgbdata}),this.updateArtInfo(),this.fmt.art)for(var e=0;e<this.chooser.viewers.length;e++)this.chooser.viewers[e].updateImage();var a=this.left;if(a instanceof ho&&a.paloptions.length>1){var l=$(document.createElement("select"));a.paloptions.forEach((c,d)=>{var h=$(document.createElement("option")).text(c.name).val(d).appendTo(l);d==a.palindex&&h.attr("selected","selected")}),l.appendTo(r).change(c=>{var d=$(c.target).val();a.palindex=d,a.palselected=!0,a.refreshRight()})}return!0}updateArtInfo(){if(!(!this.fmt.art||!this.chooser||!this.chooser.viewers)){var e=this.fmt.bpw||8,t=XQ(this.fmt),r=this.left.images;if(r)for(var i=0;i<this.chooser.viewers.length;i++){var s=this.chooser.viewers[i];s.artInfo={artBit:t,bitsperword:e,indexedImage:r[i]}}}}createEditor(e,t,r,i){var s=new jb;s.createWith(t),s.updateImage();var o=s.displayWidth*r,a=t.height*i;return s.canvas.style.width=o+"px",s.canvas.style.height=a+"px",s.makeEditable(this,e,this.left.palette),this.editor=s,s}},zu=class extends Pr{constructor(e,t,r){super(),this.context=e,this.parentdiv=t,this.fmt=r}updateLeft(){return!0}updateRight(){if(Nu(this.rgbimgs,this.left.rgbimgs))return!1;this.rgbimgs=this.left.rgbimgs;var e=Mn(this.parentdiv.empty(),"asset_dual"),t=Mn(e),r=Mn(e,"asset_editor").hide(),i=new ba;return i.width=this.fmt.w,i.height=this.fmt.h,i.recreate(),i.updateImage(this.rgbimgs[0]),t.append(i.canvas),!0}},ba=class{constructor(){this.gapX=null;this.artInfo=null}get displayWidth(){return this.width+(this.gapX!=null?1:0)}recreate(){this.canvas=this.newCanvas(),this.imagedata=this.ctx.createImageData(this.width,this.height),this.rgbdata=new Uint32Array(this.imagedata.data.buffer),this.gapX!=null&&(this.displayImageData=this.ctx.createImageData(this.displayWidth,this.height),this.displayRgbData=new Uint32Array(this.displayImageData.data.buffer)),this.peerviewers=[this]}createWith(e){this.width=e.width,this.height=e.height,this.gapX=e.gapX,this.imagedata=e.imagedata,this.rgbdata=e.rgbdata,this.canvas=this.newCanvas(),this.gapX!=null&&(this.displayImageData=this.ctx.createImageData(this.displayWidth,this.height),this.displayRgbData=new Uint32Array(this.displayImageData.data.buffer)),e.peerviewers.push(this),this.peerviewers=e.peerviewers,this.artInfo=e.artInfo}newCanvas(){var e=document.createElement("canvas");return e.width=this.displayWidth,e.height=this.height,e.classList.add("pixels"),e.classList.add("pixelated"),this.ctx=e.getContext("2d"),e}updateImage(e){e&&this.rgbdata.set(e);for(let l of this.peerviewers)if(l.gapX!=null&&l.displayRgbData){for(var t=l.gapX,r=l.displayWidth,i=0;i<this.height;i++){for(var s=i*this.width,o=i*r,a=0;a<t;a++)l.displayRgbData[o+a]=this.rgbdata[s+a];l.displayRgbData[o+t]=0;for(var a=t;a<this.width;a++)l.displayRgbData[o+a+1]=this.rgbdata[s+a]}l.ctx.putImageData(l.displayImageData,0,0)}else l.ctx.putImageData(this.imagedata,0,0)}},nT=null;function sz(){return nT}function oz(n){nT=n}function az(n,e,t,r,i){for(var s=new Map,o=0;o<n.palette.length;o++)s.has(n.palette[o])||s.set(n.palette[o],i[o&i.length-1]);for(var a=e.slice(),l=Math.min(n.width,t),c=Math.min(n.height,r),d=0;d<c;d++)for(var h=0;h<l;h++){var u=n.pixels[d*n.width+h],f=s.get(u);a[d*t+h]=f!==void 0?f:u}return a}var jb=class extends ba{constructor(){super(...arguments);this.curpalcol=-1;this.offscreen=new Map}getPositionFromEvent(t){var r=this.displayWidth,i=Math.floor(t.offsetX*r/$(this.canvas).width()),s=Math.floor(t.offsetY*this.height/$(this.canvas).height());return this.gapX!=null&&i>this.gapX&&i--,{x:i,y:s}}setPaletteColor(t){t&=this.palette.length-1,this.curpalcol!=t&&(this.curpalcol>=0&&this.palbtns[this.curpalcol].removeClass("selected"),this.curpalcol=t,this.currgba=this.palette[t&this.palette.length-1],this.palbtns[t].addClass("selected"))}makeEditable(t,r,i){this.left=t,this.palette=i;var s,o=!1,a=$(this.canvas),l=-1;a.mousedown(c=>{var d=this.getPositionFromEvent(c);if(this.isArtPixel(d.x)){l=this.toggleArtPixel(d.x,d.y),o=!0,$(document).mouseup(h=>{$(document).off("mouseup"),o=!1,l=-1,this.commit()});return}s=this.getPixel(d.x,d.y)==this.currgba?this.palette[0]:this.currgba,this.setPixel(d.x,d.y,this.currgba),o=!0,$(document).mouseup(h=>{$(document).off("mouseup");var u=this.getPositionFromEvent(h);this.setPixel(u.x,u.y,s),o=!1,this.commit()})}).mousemove(c=>{var d=this.getPositionFromEvent(c);o&&(l>=0&&this.isArtPixel(d.x)?this.setArtPixel(d.x,d.y,l):l<0&&!this.isArtPixel(d.x)&&this.setPixel(d.x,d.y,s))}),r.empty(),this.aeditor=r,this.createToolbarButtons(r[0]),r.append(this.canvas),r.append(this.createPaletteButtons()),this.setPaletteColor(1)}setPalette(t){this.palette!==t&&(this.palette=t,this.curpalcol=-1,this.aeditor&&(this.palbtnspan.remove(),this.aeditor.append(this.createPaletteButtons())),this.setPaletteColor(1))}isArtPixel(t){return this.artInfo?t%this.artInfo.bitsperword==this.artInfo.artBit:!1}toggleArtPixel(t,r){var i=this.artInfo;if(!i)return-1;var s=r*this.width+t,o=i.indexedImage[s]?0:1;return this.setArtPixel(t,r,o),o}setArtPixel(t,r,i){var s=this.artInfo;if(s&&!(t<0||t>=this.width||r<0||r>=this.height)){var o=r*this.width+t;s.indexedImage[o]!=i&&(s.indexedImage[o]=i,this.rgbdata[o]=this.palette[i],this.updateImage())}}getPixel(t,r){if(t=Math.round(t),r=Math.round(r),t<0||t>=this.width||r<0||r>=this.height)return this.offscreen[t+","+r]|this.palette[0];var i=t+r*this.width;return this.rgbdata[i]}setPixel(t,r,i){if(t=Math.round(t),r=Math.round(r),t<0||t>=this.width||r<0||r>=this.height)this.offscreen[t+","+r]=i;else{var s=t+r*this.width,o=this.rgbdata[s];o!=i&&(this.rgbdata[s]=i,this.updateImage())}}createPaletteButtons(){this.palbtns=[];for(var t=this.palbtnspan=Mn(null,"asset_toolbar"),r=0;r<this.palette.length;r++){var i=$(document.createElement("button")).addClass("palbtn"),s=this.palette[r]&16777215,o="#"+_e(So(s),6);i.click(this.setPaletteColor.bind(this,r)),i.css("backgroundColor",o).text(r.toString(16)),i.css("color",s&32768?"black":"white"),t.append(i),this.palbtns.push(i)}return t}createToolbarButtons(t){var r=new Wi(t,t);r.add("ctrl+shift+h","Flip X","glyphicon-resize-horizontal",this.flipX.bind(this)),r.add("ctrl+shift+v","Flip Y","glyphicon-resize-vertical",this.flipY.bind(this)),r.add("ctrl+shift+9","Rotate","glyphicon-repeat",this.rotate90.bind(this)),r.add("ctrl+shift+left","Move Left","glyphicon-arrow-left",this.translate.bind(this,1,0)),r.add("ctrl+shift+right","Move Right","glyphicon-arrow-right",this.translate.bind(this,-1,0)),r.add("ctrl+shift+up","Move Up","glyphicon-arrow-up",this.translate.bind(this,0,1)),r.add("ctrl+shift+down","Move Down","glyphicon-arrow-down",this.translate.bind(this,0,-1)),r.newGroup(),r.add(null,"Copy Image","glyphicon-copy",this.copyImage.bind(this)),r.add(null,"Paste Image","glyphicon-paste",this.pasteImage.bind(this))}getStrippedPixels(){if(!this.artInfo)return{pixels:this.rgbdata.slice(),width:this.width};var t=this.artInfo.bitsperword,r=this.width-Math.floor(this.width/t),i=new Uint32Array(r*this.height);return this.copyNonArtPixels(i,r,this.rgbdata,this.width),{pixels:i,width:r}}copyImage(){var{pixels:t,width:r}=this.getStrippedPixels();oz({width:r,height:this.height,pixels:t,palette:this.palette.slice()})}pasteImage(){var t=sz();if(t){var{pixels:r,width:i}=this.getStrippedPixels(),s=az(t,r,i,this.height,this.palette);this.remapPixels((o,a)=>s[a*i+o])}}commit(){this.updateImage();try{this.left.refreshLeft()}catch(t){console.log(t),alert(`Could not update source code. ${t}`)}}copyNonArtPixels(t,r,i,s){for(var o=0;o<this.height;o++)for(var a=0,l=0,c=0;c<this.width;c++){var d=this.isArtPixel(c);d||(t[o*r+l]=i[o*s+a]),(!d||s===this.width)&&a++,(!d||r===this.width)&&l++}}remapPixels(t){var r=this.rgbdata,i=this.width;if(this.artInfo){var s=this.artInfo.bitsperword,o=this.width-Math.floor(this.width/s),a=new Uint32Array(o*this.height);this.copyNonArtPixels(a,o,this.rgbdata,this.width),this.rgbdata=a,this.width=o}for(var l=0,c=new Uint32Array(this.rgbdata.length),d=0;d<this.height;d++)for(var h=0;h<this.width;h++)c[l++]=t(h,d);this.rgbdata=r,this.width=i,this.artInfo?this.copyNonArtPixels(this.rgbdata,this.width,c,o):this.rgbdata.set(c),this.commit()}rotate(t){var r=Math.sin(t*Math.PI/180),i=Math.cos(t*Math.PI/180);this.remapPixels((s,o)=>{var a=s+.5-this.width/2,l=o+.5-this.height/2,c=a*i-l*r+this.width/2-.5,d=l*i+a*r+this.height/2-.5;return this.getPixel(c,d)})}rotate90(){this.rotate(90)}flipX(){this.remapPixels((t,r)=>this.getPixel(this.width-1-t,r))}flipY(){this.remapPixels((t,r)=>this.getPixel(t,this.height-1-r))}translate(t,r){this.remapPixels((i,s)=>this.getPixel(i+t,s+r))}};function rT(){return z0()}var Bu=class{createDiv(e){this.maindiv=xr(e,"vertical-scroll");var t=this.maindiv[0];return t.setAttribute("tabindex","-1"),t.addEventListener("mousedown",()=>{t.focus()}),t}getShortcuts(){return[{key:"mod+z",label:"Undo",fn:()=>N.undoStep()},{key:"mod+shift+z",label:"Redo",fn:()=>N.redoStep()}]}clearAssets(){this.rootnodes=[],this.deferrednodes=[]}registerAsset(e,t,r){this.rootnodes.push(t),r?r>1?this.deferrednodes.push(t):this.deferrednodes.unshift(t):t.refreshRight()}getPalettes(e){var t=[],r=0;return this.rootnodes.forEach(i=>{for(;i!=null;){if(i instanceof nc){var s=i.palette;r++;var o=i.palfmt.name||"Palette "+r;e==s.length&&t.push({node:i,name:o,palette:s}),i.layout&&t.push(...KQ(s,i.layout,e,i,o));break}i=i.right}}),VQ(t),t.length==0&&Oe&&Oe.startsWith("gb")&&(e==4?t.push({node:null,name:"DMG Green",palette:new Uint32Array(kc)}):e==2&&t.push({node:null,name:"DMG Green",palette:new Uint32Array([kc[0],kc[3]])})),t}getTilemaps(e){var t=[];return this.rootnodes.forEach(r=>{for(;r!=null;){if(r instanceof ho){var i=r.rgbimgs;i&&i.length>=e&&t.push({node:r,name:"Tilemap",images:r.images,rgbimgs:i})}r=r.right}}),t}isEditing(){return this.cureditordiv!=null}getCurrentEditNode(){return this.cureditnode}setCurrentEditor(e,t,r){for(this.cureditordiv!=e&&(this.cureditordiv&&(this.cureditordiv.hide(250),this.cureditordiv=null),e&&(this.cureditordiv=e,this.cureditordiv.show(),this.cureditordiv[0].scrollIntoView({behavior:"smooth",block:"center"}))),this.cureditelem&&(this.cureditelem.removeClass("selected"),this.cureditelem=null),t&&(this.cureditelem=t,this.cureditelem.addClass("selected"));r.left;)r=r.left;this.cureditnode=r,this.updateHashForSelection(e)}updateHashForSelection(e){if(typeof window!="undefined"){var t=e?e.closest(".asset_block[data-fileid]"):null,r=t&&t.attr("data-fileid"),i=t&&t.attr("data-startline"),s="#asseteditor";r&&i&&(s+="/"+encodeURIComponent(r)+"/"+i),window.location.hash!==s&&history.replaceState(null,"",s)}}scanFileTextForAssets(e,t){var r=GQ(t,Oe.includes("verilog")),i=r.map(s=>Ue({fileid:e},s));return i}addPaletteEditorViews(e,t,r){var i=$('<div class="asset_dual"/>').appendTo(e),s=$('<div class="asset_editor"/>').hide(),o=rc(t.palfmt),a=[];o||t.getAllColors().forEach(S=>{a.push(new Uint32Array([S]))});var l=$("<table/>").appendTo(i);s.appendTo(i);var c=t.layout;if(!c){var d=t.palette.length,h=8;c=[];for(var u=0;u<d;u+=h)c.push(["",u,Math.min(d-u,h)])}var f=[];function m(S,x){var D=t.words[x],M=t.palette[x],Z="#"+_e(So(M),6),k=M&32768?"black":"white";S.text(_e(D,2)).css("background-color",Z).css("color",k)}function O(){f.forEach(({cell:S,index:x})=>m(S,x))}return c.forEach(([S,x,D])=>{if(x<t.palette.length){var M=$("<tr/>").appendTo(l);$("<td/>").text(S).appendTo(M);for(var Z=[],k=x;k<x+Math.abs(D);k++)Z.push(k);D<0&&Z.reverse(),Z.forEach((w,R)=>{R>0&&w%8==0&&(M=$("<tr/>").appendTo(l),$("<td/>").text("").appendTo(M));var X=$("<td/>").addClass("asset_cell asset_editable").appendTo(M);f.push({cell:X,index:w}),m(X,w),X.click(W=>{var ne=new Iu(t.palfmt,a,de=>{r(w,de),m(X,w)});ne.recreate(s,t.words[w]),this.setCurrentEditor(s,X,t)})})}}),O}addPixelEditor(e,t,r){r.xform="scale(2)";var i=new Eu(r);t.addRight(i);var s=new ho(this,r);i.addRight(s),s.addRight(new Xu(this,xr(e),r))}addTilemapEditor(e,t,r,i,s){var o=t.addRight(r);o=o.addRight(new ho(this,i)),o.addRight(new zu(this,xr(e),s))}getNamedArray(e){var t=null;return re.iterateFiles((r,i)=>{!t&&typeof i=="string"&&(t=eT(i,e))}),t}addPaletteEditor(e,t,r){var i=new nc(r);t.addRight(i),t.refreshRight();var s=this.addPaletteEditorViews(e,i,(o,a)=>{console.log("set entry",o,"=",a),t.words[o]=a,i.words=null,i.updateRight(),i.refreshLeft()});i.addRight(new Ru(s))}ensureFileDiv(e){var t=this.getFileDivId(e),r=$(document.getElementById(t));if(r.length===0){var i=xr(this.maindiv,"asset_file"),s=xr(i,"asset_file_header").text(e);r=xr(i).attr("id",t).addClass("disable-select")}return r}refreshAssetsInFile(e,t){let r=0;if(Oe.startsWith("nes")&&e.endsWith(".chr")&&t instanceof Uint8Array){let o=new Oa(N,e),a={w:8,h:8,bpp:1,count:t.length>>4,brev:!0,np:2,pofs:8,remap:[0,1,2,4,5,6,7,8,9,10,11,12]};this.addPixelEditor(this.ensureFileDiv(e),o,a),this.registerAsset("charmap",o,1),r++}else if(Oe.startsWith("nes")&&e.endsWith(".pal")&&t instanceof Uint8Array){let o=new Oa(N,e),a={pal:"nes",layout:"nes"};this.addPaletteEditor(this.ensureFileDiv(e),o,a),this.registerAsset("palette",o,0),r++}else if(typeof t=="string"){let o=this.scanFileTextForAssets(e,t);for(let a of o){let l=$('<div class="asset_block"/>').attr({"data-fileid":e,"data-startline":a.startline}).appendTo(this.ensureFileDiv(e));var i=$('<div class="asset_snip"/>').appendTo(l),s=$('<span class="asset_linenos"/>').appendTo(i);if($('<span class="asset_lineno"/>').text("\u2197 ").appendTo(s),$('<span class="asset_lineno"/>').text(a.startline).appendTo(s),s.append("-"),$('<span class="asset_lineno"/>').text(a.endline).appendTo(s),s.attr("title","Jump to source"),s.click(()=>{var c=N.createOrShow(a.fileid,!0);c&&c.highlightLines&&c.highlightLines(a.startline-1,(typeof a.endline=="number"&&a.endline>0?a.endline:a.startline)-1)}),i.append(" "+a.header),a.error){$('<div class="asset_error_msg"/>').text(a.error).appendTo(l);continue}if(a.fmt){let c,d;if(a.embedFile){let h=this.resolveEmbedFile(e,a.embedFile),u=h&&re.getFile(h);if(!h||!(u instanceof Uint8Array)){$('<div class="asset_error_msg"/>').text(`#embed: file not found: "${a.embedFile}"`).appendTo(l);continue}let f=qQ(u.length,a.fmt);if(f){$('<div class="asset_error_msg"/>').text(f).appendTo(l);continue}c=new Oa(N,h)}else{let h=UQ(t.substring(a.start,a.end),a.fmt)||(a.fmt.map=="charpad"?tT(a.fmt,f=>this.getNamedArray(f)):a.fmt.map=="tilemap"?JQ(a.fmt,f=>this.getNamedArray(f)):null);if(h){$('<div class="asset_error_msg"/>').text(h).appendTo(l);continue}let u=e;c=new Cu(N,e,u,a.start,a.end,a.fmt.bpw)}if(d=c,a.fmt.comp=="rletag"&&(c=c.addRight(new _u)),a.fmt.map=="nesnt"){let h={w:8*(a.fmt.w||32),h:8*(a.fmt.h||30),count:1};this.addTilemapEditor(l,c,new Lu(this),{w:8,h:8,bpp:4},h),this.registerAsset("nametable",d,2),r++}else if(a.fmt.map=="charpad"){let h=a.fmt,u={w:h.w*h.tw*8,h:h.h*h.th*8,count:1};this.addTilemapEditor(l,c,new Zu(this,h),{w:8,h:8,bpp:4,defpal:"c64"},u),this.registerAsset("nametable",d,2),r++}else if(a.fmt.map=="tilemap"){let h=a.fmt,u={w:h.w*8,h:h.h*8,count:1};this.addTilemapEditor(l,c,new Du(this,h),{w:8,h:8,bpp:4},u),this.registerAsset("nametable",d,2),r++}else a.fmt.w>0&&a.fmt.h>0?(this.addPixelEditor(l,c,a.fmt),this.registerAsset("charmap",d,1),r++):a.fmt.pal&&(this.addPaletteEditor(l,c,a.fmt),this.registerAsset("palette",d,0),r++)}}}return r}resolveEmbedFile(e,t){return HQ(e,t,r=>re.getFile(r)!==void 0)}getFileDivId(e){return"__asset__"+A0(e)}refresh(e){if(e)this.maindiv.empty(),this.clearAssets(),re.iterateFiles((r,i)=>{try{N.clearAssetRanges(r);var s=this.refreshAssetsInFile(r,i)}catch(o){console.log(o),this.ensureFileDiv(r).text(o+"")}}),console.log("Found "+this.rootnodes.length+" assets"),this.deferrednodes.forEach(r=>{try{r.refreshRight()}catch(i){console.log(i),alert(i+"")}}),this.deferrednodes=[],this.maindiv.children().length===0&&$('<div class="asset_no_assets"/>').text("No asset declarations found.").appendTo(this.maindiv),this.scrollToAssetFromHash();else{this.rootnodes.length>0&&this.maindiv.find(".asset_no_assets").remove();for(var t of this.rootnodes)t.refreshRight()}}scrollToAssetFromHash(){var e=window.location.hash;if(!(!e||!e.startsWith("#asseteditor/"))){var t=e.substring(1).split("/"),r=decodeURIComponent(t.slice(1,-1).join("/")),i=t[t.length-1];!r||!i||setTimeout(()=>{let s=this.maindiv.find(`.asset_block[data-fileid="${r}"][data-startline="${i}"]`);s.length&&(s[0].scrollIntoView({behavior:"smooth",block:"center"}),s.addClass("asset_highlight"),setTimeout(()=>s.removeClass("asset_highlight"),500))},0)}}setVisible(e){if(e){N.flushAllWindows(),N.undoStack=[],N.redoStack=[];let t=rT();t.bind&&(t.bind("mod+z",r=>(N.undoStep(),!1)),t.bind("mod+shift+z",r=>(N.redoStep(),!1))),this.maindiv&&this.maindiv[0]&&this.maindiv[0].focus()}else{let t=rT();t.unbind&&(t.unbind("mod+z"),t.unbind("mod+shift+z"))}}};var iT=`<h1>8bitworkshop IDE</h1>
<p>The 8bitworkshop IDE is a browser-based development environment for
micro computers and consoles.
The IDE compiles or assembles your source code
while you type, then the emulator runs your code.
This all happens locally in your web browser.</p>
<h2>Choosing a platform</h2>
<p>First, choose a hardware platform using the green <strong>Platform Selector</strong>
to the right of the main menu.
This reloads the IDE with the appropriate emulator and toolchain.</p>
<p>Each platform has several example programs that you can view and edit.
Use the <strong>Project Selector</strong> drop-down (next to the menu icon) to choose one.</p>
<h2>Editing files</h2>
<p>Edits are persisted in browser local storage and survive closing the
tab. To restore an example to its original state, choose
<strong>File \xBB Revert to Original\u2026</strong>. To start from scratch, choose
<strong>New Project\u2026</strong> and enter a filename (typically <code>.c</code> for C, or
<code>.asm</code> for assembly).</p>
<p>Each platform has its own virtual file system in the browser, so edits and
new files are only visible to the current platform.</p>
<p>See <a href="managing-files.md">Managing Files</a> for how to
export and import files, share playable links and videos, sync projects to GitHub, and pull projects from GitHub.</p>
<h2>Emulators</h2>
<p>Every platform includes a built-in emulator that runs your code on
simulated hardware. Click the emulator screen to give it keyboard focus.
The IDE shows the key bindings used by the current platform; some
platforms also support gamepads.</p>
<h2>Compilers</h2>
<p>C compilers and assemblers for most platforms run in the browser. Each
time you change the code it is recompiled automatically. Errors appear
in a list in the upper-right corner of the page; click the link beside
an error to jump to the offending source line.</p>
<p>If the build succeeds, the emulator restarts with the new ROM image, so
you see changes near-instantly.</p>
<p>See <a href="build-directives.md">Build Directives</a> for information on
multi-file projects, compiler/linker directives, and file extensions.</p>
<p>See <a href="toolchains.md">Toolchains &amp; Platforms</a> for the full list of tools and
the complete platform \xD7 extension \u2192 tool reference.</p>
<p>CC65 was updated in 8bitworkshop 4.0 \u2013 for more information see
<a href="cc65-upgrade.md">cc65 Toolchain Upgrade</a>.</p>
<h2>Debugger</h2>
<p>The IDE includes a debugger for stepping through machine code, viewing
memory, and starting/stopping the program. The buttons at the top of the
screen perform these functions:</p>
<ul>
<li><strong>Reset:</strong> hard-reset the emulator, then single-step to the first
instruction.</li>
<li><strong>Pause:</strong> stop the emulator.</li>
<li><strong>Run:</strong> resume the emulator after pausing.</li>
<li><strong>Single Step:</strong> execute the next CPU instruction.</li>
<li><strong>Step Over:</strong> execute until the next source line, or step over a subroutine, then break.</li>
<li><strong>Next Frame/Interrupt:</strong> run until the next video frame starts, then
break.</li>
<li><strong>Run To Line:</strong> set a breakpoint on the current source line (or click
the gutter to the left of a line). The emulator stops when execution
reaches that instruction.</li>
<li><strong>Step Out of Subroutine:</strong> run until the current subroutine returns,
then break.</li>
<li><strong>Step Backwards:</strong> step back a single CPU instruction.</li>
</ul>
<p>Some platforms also offer:</p>
<ul>
<li><strong>Analyze Timing:</strong> perform a <em>flow analysis</em> of your code and compute
timing values for each instruction.</li>
<li><strong>Highlight Executed Lines:</strong> highlight lines of source code as they are executed by the emulator.</li>
<li><strong>Start Recording:</strong> enable the replay feature, which lets you rewind
the emulator and scroll to arbitrary frames and CPU cycles.</li>
</ul>
<p>When the IDE hits a breakpoint or a single-step, a debug window appears
in the lower-right showing the CPU state. Click the links at the bottom
of the window for more detail. See <a href="breakpoints.md">Breakpoints</a>.</p>
<h2>Sidebar windows</h2>
<p>The sidebar to the left of the editor lists every source file in your
project \u2014 the main file (shown in the pulldown), any included or linked
files, and any generated listings. Depending on the platform, additional
tools appear:</p>
<table>
<thead>
<tr>
<th>Window</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="editor.md">Editor</a></td>
<td>Edit source files; read-only listings, headers, and binary views</td>
</tr>
<tr>
<td><a href="disasm.md">Disassembly</a></td>
<td>Disassemble the program around the program counter</td>
</tr>
<tr>
<td><a href="memory.md">Memory Browser</a></td>
<td>Hex dump of CPU memory</td>
</tr>
<tr>
<td><a href="memmap.md">Memory Map</a></td>
<td>Map of memory areas, linker segments and large variables</td>
</tr>
<tr>
<td><a href="vram.md">VRAM Browser</a></td>
<td>Hex dump of video memory (systems with a separate VDP)</td>
</tr>
<tr>
<td><a href="memprobe.md">Memory Probe</a></td>
<td>Heat map of memory read/write activity</td>
</tr>
<tr>
<td><a href="crtprobe.md">CRT Probe</a></td>
<td>Memory activity laid out by raster position</td>
</tr>
<tr>
<td><a href="probelog.md">Probe Log</a></td>
<td>Textual log of CPU/memory activity</td>
</tr>
<tr>
<td><a href="scanlineio.md">Scanline I/O</a></td>
<td>I/O and VRAM access per scanline</td>
</tr>
<tr>
<td><a href="symbols.md">Symbol Profiler</a></td>
<td>Read/write counts per symbol</td>
</tr>
<tr>
<td><a href="callgraph.md">Call Graph</a></td>
<td>Call tree with clocks per routine, reconstructed from the stack</td>
</tr>
<tr>
<td><a href="debugtree.md">Debug Tree</a></td>
<td>Hierarchical view of platform debug info</td>
</tr>
<tr>
<td><a href="breakpoints.md">Breakpoints</a></td>
<td>Add and edit breakpoints</td>
</tr>
<tr>
<td><a href="asseteditor.md">Asset Editor</a></td>
<td>Edit bitmaps, tilemaps, and palettes embedded in source</td>
</tr>
</tbody>
</table>
<h2>Keyboard Shortcuts</h2>
<p><code>mod</code> below is <strong>Ctrl</strong> on Windows/Linux and <strong>Cmd</strong> on macOS.</p>
<table>
<thead>
<tr>
<th>Shortcut</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>F1</code></td>
<td>Help for the active view</td>
</tr>
<tr>
<td><code>F8</code></td>
<td>Pause / resume</td>
</tr>
<tr>
<td><code>mod+Shift+F</code></td>
<td>Search symbols, files, and docs</td>
</tr>
<tr>
<td><code>mod+Shift+G</code></td>
<td>Go To Address</td>
</tr>
<tr>
<td><code>mod+Shift+R</code></td>
<td>Reset and run</td>
</tr>
<tr>
<td><code>mod+Shift+D</code></td>
<td>Reset and break</td>
</tr>
<tr>
<td><code>mod+Shift+L</code></td>
<td>Single step</td>
</tr>
<tr>
<td><code>mod+Shift+K</code></td>
<td>Step over</td>
</tr>
<tr>
<td><code>mod+Shift+I</code></td>
<td>Step out of subroutine</td>
</tr>
<tr>
<td><code>mod+Shift+J</code></td>
<td>Step backwards</td>
</tr>
<tr>
<td><code>mod+Shift+X</code></td>
<td>Next frame/interrupt</td>
</tr>
<tr>
<td><code>mod+Shift+A</code></td>
<td>Restart at cursor</td>
</tr>
<tr>
<td><code>mod+Shift+Y</code></td>
<td>Run to line</td>
</tr>
</tbody>
</table>
<p>The context-sensitive shortcuts are also shown as clickable chips in the
status bar at the bottom of the window (toggle it under
<strong>Settings \xBB Show keyboard shortcuts / status bar</strong>).</p>
<p>See <a href="editor.md">Editor</a> for editor-specific shortcuts.</p>
`;var sT=`<h1>Editor</h1>
<p>The source editor is based on <a href="https://codemirror.net/">CodeMirror 6</a>.
Syntax highlighting is chosen from the toolchain that handles the file\u2019s
extension, so a <code>.c</code> file opens as C, a <code>.ca65</code> file as 6502 assembly,
and so on. Every edit triggers a rebuild; see the
<a href="index.md">IDE overview</a>.</p>
<h2>File windows</h2>
<p>The sidebar lists one entry per file in the project:</p>
<ul>
<li><strong>Source files</strong> \u2014 the main file and any file reached by an
<code>#include</code> or <code>//#link</code> directive. These open in the editable source
editor. See <a href="build-directives.md">Build Directives</a>.</li>
<li><strong>Listings</strong> \u2014 compiler/assembler listings (for example <code>.lst</code> or
symbol listings) generated by the build. These open read-only. The
view follows the program counter while debugging and supports <strong>Go To
Address</strong>.</li>
<li><strong>Toolchain headers</strong> \u2014 clicking the badge next to an <code>#include</code> line
opens the referenced header from the toolchain\u2019s bundled include
filesystem in a read-only viewer.</li>
<li><strong>Binary files</strong> \u2014 binary files open in a read-only hex dump.</li>
</ul>
<h2>Gutter</h2>
<p>For some platforms, the gutter shows additional information next to source lines:</p>
<ul>
<li><strong>Hex offset</strong> \u2013 The offset of a given source line.</li>
<li><strong>Code bytes</strong> \u2013 The bytes for a given assembly instruction.</li>
<li><strong>CPU Cycles</strong> \u2013 The number of CPU cycles for a given assembly instruction.</li>
<li>Click the hex offset (or the yellow arrow) to run and break on that line.</li>
<li>Click the red circle to toggle a breakpoint \u2014 see <a href="breakpoints.md">Breakpoints</a>.</li>
</ul>
<h2>Editor keyboard shortcuts</h2>
<h3>Editing</h3>
<table>
<thead>
<tr>
<th>Shortcut</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Tab</code></td>
<td>Insert spaces or a tab character (per settings) or indent selection</td>
</tr>
<tr>
<td><code>Shift+Tab</code></td>
<td>Unindent the current line or selection</td>
</tr>
<tr>
<td><code>mod+Z</code></td>
<td>Undo</td>
</tr>
<tr>
<td><code>mod+Shift+Z</code></td>
<td>Redo</td>
</tr>
<tr>
<td><code>mod+F</code></td>
<td>Find</td>
</tr>
<tr>
<td><code>mod+G</code></td>
<td>Find next match</td>
</tr>
<tr>
<td><code>mod+D</code></td>
<td>Select the next occurrence of the selection</td>
</tr>
<tr>
<td><code>mod+Shift+Backspace</code></td>
<td>Delete the current line</td>
</tr>
</tbody>
</table>
<p>The editor also inherits the standard <a href="https://codemirror.net/">CodeMirror 6</a> keymap,
including cursor/word movement and selection with the arrow keys, and cut/
copy/paste (<code>mod+X</code>, <code>mod+C</code>, <code>mod+V</code>).</p>
`;var oT=`<h1>Disassembly</h1>
<p>The Disassembly window disassembles machine code around the current
program counter. It is available on platforms that expose both a
disassembler and a savable CPU state.</p>
<p>Each line shows:</p>
<table>
<thead>
<tr>
<th>Column</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>Address</td>
<td>The 16-bit program counter for the instruction</td>
</tr>
<tr>
<td>Bytes</td>
<td>The raw opcode bytes (padded for alignment)</td>
</tr>
<tr>
<td>Mnemonic</td>
<td>The disassembled instruction</td>
</tr>
<tr>
<td>Comment</td>
<td>The symbol defined at that address, if any</td>
</tr>
</tbody>
</table>
<p>The view is centered on the program counter (PC). While debugging, it
follows the PC as you step. Symbol names are substituted for addresses
when a symbol map is available, so jumps and loads show labels instead
of raw hex.</p>
<h2>Navigating</h2>
<ul>
<li><strong>Go To Address</strong> re-centers the window on an address or symbol and
highlights it.</li>
<li>Addresses in the operand columns are linked to their symbols when the
map contains them.</li>
</ul>
<h2>Listing vs. disassembly</h2>
<p>The Disassembly window is generated live by the emulator\u2019s disassembler.
A compiler or assembler <em>listing</em> is a separate, read-only window built
from the tool\u2019s own output; see <a href="editor.md">Editor</a>. The listing follows
the program counter using the line-to-address map from the assembler,
which is more accurate for source-level navigation than the live
disassembly.</p>
`;var aT=`<h1>Memory Browser</h1>
<p>The Memory Browser shows a hex dump of CPU memory. It is available on
platforms that implement <code>readAddress</code>.</p>
<p>The dump is laid out 16 bytes per row:</p>
<pre><code>0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
</code></pre>
<ul>
<li>Each row begins with the address of its first byte.</li>
<li>Rows are color-coded by the memory segment they fall into, using the
same segment data as the <a href="memmap.md">Memory Map</a>.</li>
<li>A symbol labels only its own bytes when the toolchain reports a size;
otherwise it labels up to the next symbol or the end of its segment.</li>
<li>When the window opens it scrolls to the program\u2019s data segment.</li>
</ul>
<h2>Navigating</h2>
<ul>
<li><strong>Go To Address</strong> scrolls to an address or symbol and highlights the
row containing it.</li>
<li>Clicking a segment in the <a href="memmap.md">Memory Map</a> opens this
window and scrolls to that segment\u2019s start address.</li>
</ul>
`;var lT=`<h1>Memory Map</h1>
<p>The Memory Map draws the program\u2019s memory layout as columns that share
one address axis. Each row starts at the address shown on the left, and
row height grows with the size of the range.</p>
<p>The window appears when the current project has segment information,
which most linker-based toolchains provide.</p>
<h2>Columns</h2>
<ul>
<li><strong>System</strong> shows the platform\u2019s native memory map (RAM, ROM, I/O).
Gaps between areas appear as dashed \u201Cunmapped\u201D bars, so the column
covers the whole address space.</li>
<li><strong>Segments</strong> shows the segments the linker produced. Free space
between segments appears as an empty bar.</li>
<li><strong>Objects</strong> shows large variables and arrays (16 bytes or more) in
RAM. Sizes come from the toolchain when it reports them (cc65, oscar64);
otherwise they are estimated from the distance to the next symbol.</li>
</ul>
<p>A column is hidden when it has nothing to show. Overlapping areas (for
example ROM and a language card) appear side by side, up to two per
column. Further overlaps fold into a neighboring bar, marked <code>+N</code>; its
tooltip lists them all.</p>
<ul>
<li>Hover a bar to see its start and end addresses and its size in bytes.
Estimated sizes are marked with <code>~</code>.</li>
</ul>
<h2>Navigating</h2>
<p>Click any bar to open the <a href="memory.md">Memory Browser</a> and
scroll it to that bar\u2019s start address.</p>
`;var cT=`<h1>VRAM Browser</h1>
<p>The VRAM Browser is a hex dump of video memory. It is available on
systems with a separate video chip and a <code>readVRAMAddress</code> implementation.</p>
<p>It behaves like the <a href="memory.md">Memory Browser</a> \u2014 16 bytes per
row \u2014 but reads through the platform\u2019s video-memory accessor instead of
CPU memory, and its rows are all shown with the <code>video</code> segment color.</p>
<p>The dump does not scroll to a data segment on open, since VRAM has no
linker segments.</p>
`;var dT=`<h1>Memory Probe</h1>
<p>The Memory Probe is a heat map of memory activity. It is available on
platforms that implement <code>startProbing</code>.</p>
<p>The canvas is a 256\xD7256 grid of the 64K address space:</p>
<ul>
<li><strong>X</strong> is the low byte of the address.</li>
<li><strong>Y</strong> is the high byte.</li>
<li>The faint background shows a compressed view of current memory
contents, so the map is still readable before anything executes.</li>
</ul>
<p>Activity is drawn in color by operation type:</p>
<table>
<thead>
<tr>
<th>Color</th>
<th>Operation</th>
</tr>
</thead>
<tbody>
<tr>
<td>Green</td>
<td>Execute</td>
</tr>
<tr>
<td>Red</td>
<td>Memory read</td>
</tr>
<tr>
<td>Blue</td>
<td>Memory write</td>
</tr>
<tr>
<td>Teal</td>
<td>I/O read</td>
</tr>
<tr>
<td>Magenta</td>
<td>I/O write</td>
</tr>
<tr>
<td>Yellow</td>
<td>DMA/VRAM read</td>
</tr>
<tr>
<td>Light blue</td>
<td>DMA/VRAM write</td>
</tr>
<tr>
<td>Bright green</td>
<td>Interrupt</td>
</tr>
<tr>
<td>White</td>
<td>Illegal / error</td>
</tr>
<tr>
<td>Pink</td>
<td>Wait</td>
</tr>
</tbody>
</table>
<p>The view shows a complete frame, and might be incomplete during debugging.</p>
<h2>Tooltips</h2>
<p>Hovering the map shows the routines and operations that touched that
address, including the program counter that performed each access and
any associated value.</p>
`;var hT=`<h1>CRT Probe</h1>
<p>The CRT Probe shows memory and I/O activity laid out by <em>raster
position</em> instead of by address, so you can see what the CPU touches at
each point of the display sweep. It is available on platforms that
implement <code>startProbing</code>.</p>
<p>The canvas axes are:</p>
<ul>
<li><strong>X</strong> is the cycle within the scanline.</li>
<li><strong>Y</strong> is the scanline.</li>
</ul>
<p>Activity is color-coded:</p>
<table>
<thead>
<tr>
<th>Color</th>
<th>Operation</th>
</tr>
</thead>
<tbody>
<tr>
<td>Grey ramp</td>
<td>Execute (shade reflects stack depth, so call depth is visible)</td>
</tr>
<tr>
<td>Blue</td>
<td>Memory write</td>
</tr>
<tr>
<td>Cyan</td>
<td>VRAM write</td>
</tr>
<tr>
<td>Light blue</td>
<td>I/O write</td>
</tr>
<tr>
<td>Green</td>
<td>I/O read</td>
</tr>
<tr>
<td>Green fill</td>
<td>Wait</td>
</tr>
<tr>
<td>Pink</td>
<td>Interrupt</td>
</tr>
</tbody>
</table>
<p>Illegal operations and DMA reads are drawn in grey. Gaps in the trace
are filled with the previous color, so the display does not show false
black bands.</p>
<p>The view shows a complete frame, and might be incomplete during debugging.</p>
`;var uT=`<h1>Probe Log</h1>
<p>The Probe Log is a chronological text view of CPU and memory activity
for a frame. It is available on platforms that implement <code>startProbing</code>.</p>
<p>Each line describes a recorded event (blank clock ticks between events are
collapsed):</p>
<pre><code>(row, col) &lt;disassembled instruction&gt; &lt;operations...&gt;
</code></pre>
<ul>
<li>The first pair is the scanline and cycle within the scanline.</li>
<li>The instruction column shows the disassembly of the code executing at
that clock.</li>
<li>The remaining columns list what the instruction did \u2014 reads, writes,
I/O and VRAM accesses, stack pushes and pops, and interrupts \u2014 with
addresses and, where relevant, values.</li>
</ul>
<p>Write operations are colored differently from reads so they stand out.</p>
<p>The view shows a complete frame, and might be incomplete during debugging.</p>
`;var fT=`<h1>Scanline I/O</h1>
<p>The Scanline I/O window shows the I/O and VRAM accesses made during each
scanline. It is available on platforms that implement <code>startProbing</code>.</p>
<p>Each row is one scanline:</p>
<ul>
<li>A leading scanline number.</li>
<li>One character column per CPU cycle. An access at that cycle is shown
as its device address in hex; cycles with no access are shown as <code>.</code>.</li>
<li>The horizontal-blank boundary is marked with <code>|</code>.</li>
<li>The symbol of the routine executing on that scanline is appended at the
end, when known.</li>
</ul>
<p>This makes it easy to see where per-scanline register writes (raster
effects) occur relative to the start of the visible line.</p>
<p>The view shows a complete frame, and might be incomplete during debugging.</p>
`;var pT=`<h1>Symbol Profiler</h1>
<p>The Symbol Profiler counts memory reads and writes per symbol over time.
It is available on platforms that implement <code>startProbing</code>.</p>
<p>Each row lists a symbol with two counters:</p>
<table>
<thead>
<tr>
<th>Column</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>Symbol</td>
<td>The debug symbol covering that address</td>
</tr>
<tr>
<td>Reads</td>
<td>Number of memory reads at addresses belonging to the symbol</td>
</tr>
<tr>
<td>Writes</td>
<td>Number of memory writes</td>
</tr>
</tbody>
</table>
<p>Rows are color-coded:</p>
<ul>
<li><strong>Code</strong> (green) \u2014 the symbol\u2019s address was executed.</li>
<li><strong>I/O</strong> (teal) \u2014 the symbol covers an I/O address.</li>
<li><strong>Data</strong> (blue) \u2014 the symbol was only read or written.</li>
</ul>
<p>Counts are cumulative and the probe buffer is cleared each refresh, so
the numbers keep growing while you run and are reset when data is
collected again. Symbols from the debug map are listed even before they
are touched.</p>
`;var mT=`<h1>Call Graph</h1>
<p>The Call Graph window reconstructs the program\u2019s call graph from runtime
stack activity, and shows where the clocks go. It is available on
platforms that implement <code>startProbing</code>.</p>
<p>Each node represents a routine, and its children are the routines it
called. Beside each name is a summary:</p>
<pre><code>12x 45.2% 3400/800 @20-31
</code></pre>
<ul>
<li><code>12x</code> is how many times the routine was called.</li>
<li><code>45.2%</code> is its share of all clocks the graph has seen.</li>
<li><code>3400/800</code> is the clocks spent in the routine <em>and</em> its callees,
then the clocks in the routine alone (<code>self</code>), not counting callees. The
<code>/self</code> part is left out when the routine calls nothing.</li>
<li><code>@20-31</code> is the scanline range where it last ran (raster platforms).</li>
</ul>
<p>Interrupt handlers appear as calls from whatever was running when the
interrupt fired. A call or return instruction\u2019s own clocks are counted in
the routine it started in.</p>
<p>Because the tree is built from stack pushes and pops (and, where the
disassembler can tell, call and return instructions), it reflects what the
program actually did rather than what the source says.</p>
<p>Counts and clocks are cumulative: the tree keeps growing as the program
runs. The probe buffer is cleared on each refresh, and the graph resets
when the emulator is reset.</p>
<p>Expanding a node reveals its callees, so you can drill into a hot
routine and see where the time is going. The same call tree is available
from the command line with <code>8bws run ... -e &quot;profile 60&quot;</code>.</p>
`;var gT=`<h1>Debug Tree</h1>
<p>The Debug Tree shows a hierarchical view of platform debug information.
It is available on platforms that implement <code>getDebugTree</code>.</p>
<p>The tree\u2019s shape is defined by the platform. Where the
<a href="callgraph.md">Call Graph</a> reconstructs call flow from observed
execution, the Debug Tree exposes whatever structured state the machine
implements \u2014 device registers, internal tables, subsystem state \u2014 as an
expandable tree.</p>
<h2>How values are shown</h2>
<ul>
<li>Numbers are shown in decimal with their hex value.</li>
<li>Booleans and strings are shown as-is.</li>
<li>Byte arrays are shown as a short hex dump.</li>
<li>Objects and functions expand to their properties. Functions marked as
lazy are only called when the node is expanded.</li>
<li>Large arrays are split into <code>$offset</code> chunks on demand.</li>
<li>Maps are shown as their key/value pairs.</li>
</ul>
<p>Nodes collapse and expand on click. The tree refreshes with the emulator
while debugging.</p>
`;var OT=`<h1>Breakpoints</h1>
<p>The Breakpoints window lists every breakpoint in the project and lets you
add, edit, enable, or delete them. It is available on platforms that
implement <code>runEval</code> or <code>runToPC</code>.</p>
<h2>Kinds of breakpoints</h2>
<table>
<thead>
<tr>
<th>Kind</th>
<th>Created by</th>
<th>Identified by</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Source</strong></td>
<td>Clicking the editor gutter, or <strong>Run To Line</strong></td>
<td>file and line number</td>
</tr>
<tr>
<td><strong>Address</strong></td>
<td>Using the Breakpoints window</td>
<td>a symbol, <code>$hex</code>, or decimal address</td>
</tr>
</tbody>
</table>
<p>Source breakpoints are shown as red circles in the editor\u2019s gutter.</p>
<p>Address breakpoints are resolved against the debug symbol map, so a symbol from
a linker map works as well as a raw address.</p>
<p>A breakpoint that cannot be
resolved (for example a symbol that does not exist)
is shown with an error.</p>
<h2>Conditions</h2>
<p>A breakpoint can carry a condition expression. The breakpoint only
stops when the expression evaluates to a non-zero value.</p>
<p>Supported values:</p>
<table>
<thead>
<tr>
<th>Value</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td>Decimal number</td>
<td><code>32</code></td>
</tr>
<tr>
<td>Hex number</td>
<td><code>$1a2f</code>, <code>0x1a2f</code></td>
</tr>
<tr>
<td>CPU register</td>
<td><code>PC</code>, <code>A</code>, <code>X</code>, <code>Y</code>, <code>SP</code>, \u2026</td>
</tr>
<tr>
<td>Debug symbol</td>
<td><code>mainloop</code></td>
</tr>
<tr>
<td>Memory byte</td>
<td><code>[$0200]</code> or <code>#mem[$0200]</code></td>
</tr>
<tr>
<td>Memory word</td>
<td><code>#mem16[$0200]</code> (little-endian)</td>
</tr>
<tr>
<td>Video RAM byte</td>
<td><code>#vram[$2000]</code></td>
</tr>
<tr>
<td>Video RAM word</td>
<td><code>#vram16[$2000]</code></td>
</tr>
<tr>
<td>Current scanline</td>
<td><code>#scanline</code></td>
</tr>
<tr>
<td>Current line clock</td>
<td><code>#lineclock</code></td>
</tr>
</tbody>
</table>
<p>Supported operators, in C-like precedence: <code>!</code> <code>~</code> <code>-</code> <code>+</code> (unary),
<code>*</code> <code>/</code> <code>%</code>, <code>+</code> <code>-</code>, <code>&lt;&lt;</code> <code>&gt;&gt;</code>, <code>&lt;</code> <code>&lt;=</code> <code>&gt;</code> <code>&gt;=</code>, <code>==</code> <code>!=</code>, <code>&amp;</code>,
<code>^</code>, <code>|</code>, <code>&amp;&amp;</code>, <code>||</code>, and parentheses. The whole expression is true
when it evaluates to a non-zero value.</p>
<p>For example, <code>A == $20 &amp;&amp; X &lt; 4</code> stops only when the accumulator holds
<code>$20</code> and the X register is less than 4. A raster condition such as
<code>#scanline == 222</code> stops only once the beam has reached scanline 222.</p>
<h2>Managing breakpoints</h2>
<ul>
<li><strong>Add</strong> \u2014 type an address or symbol and an optional condition, then
click <strong>Add</strong>. Adding the same address again updates that breakpoint
instead of creating a duplicate.</li>
<li><strong>Enable/disable</strong> \u2014 toggle the checkbox on the left. Disabled
breakpoints are dimmed.</li>
<li><strong>Edit</strong> \u2014 click the pencil to load a breakpoint into the form;
<strong>Save</strong> applies the change.</li>
<li><strong>Delete</strong> \u2014 click the trash icon.</li>
<li><strong>Go to Source</strong> \u2014 click a breakpoint\u2019s location to open the source file, or
the disassembly, at the breakpoint\u2019s address.</li>
</ul>
<p>Breakpoints are persisted in browser local storage, scoped to the
current platform and project file, so they survive a reload.</p>
`;var bT=`<h1>Asset Editor</h1>
<p>The Asset Editor finds <a href="asset-headers.md">asset headers</a> in your source \u2014 small JSON
descriptors inside comments \u2014 and turns the data block that follows into
an editable bitmap, tilemap, or palette. Edits are written straight back
into the source text, preserving the original number base and formatting
of each literal.</p>
<h2>Asset List</h2>
<p>Open the <strong>Asset Editor</strong> from the sidebar to see every editable asset in
your project in one scrolling list. Assets are grouped by file \u2014 a heading
with the filename, then each asset underneath, in the order it appears in
the source.</p>
<p>Each asset shows a <strong>line number</strong> you can click to jump to that spot in
the code (and highlight it), the <a href="asset-headers.md">Asset Header</a> as
written in the file, and the <strong>editor</strong> itself \u2014 a picture, a palette, or
a tilemap. If something is wrong with an asset, a red error message
appears in place of its editor.</p>
<p>Click an asset to start editing; the editor scrolls into view, and your
selection is saved in the address bar so you can bookmark or share it.
You don\u2019t need to understand the header format to edit graphics, but if
you want to add or change one, <a href="asset-headers.md">Asset Headers</a> explains
it.</p>
<h3>Editing images</h3>
<p>Assets with a width and height show a <strong>grid of thumbnails</strong> \u2014 one per
image. Click the one you want, and a large editor opens beside it.</p>
<p>To paint, just click and drag on the image. Pick a color from the row of
swatches below it (each labelled with its palette index). Starting a drag
on a pixel that\u2019s already the color you picked will erase instead of
paint.</p>
<p>The toolbar above the image has quick transforms: <strong>flip</strong> it
horizontally or vertically, <strong>rotate</strong> it, <strong>nudge</strong> it in any direction,
and <strong>copy/paste</strong> it. Copy and paste work between any two images in the
session, and they keep the palette indices intact, so a tile copied from
one asset still looks right in another even if the colors differ.</p>
<h3>Editing palettes</h3>
<p>Palettes are edited one color at a time. The palette appears as a small
table; click any cell to open a color picker. Small, indexed palettes show
a grid of swatches to choose from \u2014 hover over one to see its value and
hex color. Larger, direct-color palettes get color sliders instead. As you
change a color, the source code is updated right away.</p>
<p>If more than one palette in your project matches the image\u2019s color count,
a dropdown appears under the thumbnails.
Select a palette to preview it with your image.</p>
<h3>Viewing tilemaps</h3>
<p>NES nametable assets (<code>map:&quot;nesnt&quot;</code>) show the whole tilemap composited
from your project\u2019s graphics and palette, as a single preview.</p>
<h3>Undo and redo</h3>
<p>Use <code>Ctrl/Cmd+Z</code> to undo and <code>Ctrl/Cmd+Shift+Z</code> to redo your edits. The
history starts fresh each time you open the Asset Editor, so undo only
affects the changes you\u2019ve made in this session.</p>
`;var yT=`<h1>Managing Files</h1>
<h2>Importing and exporting files</h2>
<p>To save your files outside of the browser:</p>
<ol>
<li>Select <strong>Download</strong> from the menu.</li>
<li>Choose an option:
<ul>
<li><strong>Download Source File</strong> \u2014 download the active source file.</li>
<li><strong>Download ROM Image</strong> \u2014 download the compiled ROM, which can be
used in a standalone emulator.</li>
<li><strong>Download Project as ZIP</strong> \u2014 download the active project as a zip.</li>
<li><strong>Download All Changes as ZIP</strong> \u2014 download all files in the active
platform.</li>
<li><strong>Download Debug Symbols</strong> \u2014 download the debug symbol file
produced by the build for use in an external debugger. This option
is only available with certain toolchains like NES.</li>
</ul>
</li>
<li>Choose a location and save the file.</li>
</ol>
<p>To import source files back into the browser, select <strong>Upload</strong> from the
menu, choose the file, and click <strong>Open</strong>.</p>
<h2>Renaming, deleting, and adding files</h2>
<p>The <strong>File</strong> submenu acts on the file in the active editor window:</p>
<ul>
<li><strong>Revert to Original\u2026</strong> \u2014 restore the active example to its original
state, discarding your edits.</li>
<li><strong>Rename File\u2026</strong> \u2014 rename the active source file. If it is the main
file, the project reloads under the new name.</li>
<li><strong>Delete File\u2026</strong> \u2014 remove the active file from the project after
confirming.</li>
<li><strong>Add Include File\u2026</strong> \u2014 create a new file and add it to the main file
with the include directive appropriate for the platform\u2019s toolchain
(<code>#include</code> for C, <code>.include</code> for assembly, and so on).</li>
<li><strong>Add Linked File\u2026</strong> \u2014 create a new file and link it into the build
with a <code>//#link</code> or <code>;#link</code> directive.</li>
</ul>
<p>See <a href="build-directives.md">Build Directives</a> for how include and linked
files are referenced.</p>
<h2>Managing browser storage</h2>
<p>Browsers may occasionally delete local files.
Select <strong>File \xBB Request Local Storage Permissions</strong> to ask the
browser to keep your files permanently.</p>
<h2>Sharing projects</h2>
<p>You can share playable links and videos (seven-second animated GIFs) with
others. Playable links contain the project code inside the URL, so you
can share your work without storing it remotely. Some browsers may not
support the resulting URL length.</p>
<h3>Sharing a playable link</h3>
<ol>
<li>From the menu, select <strong>Share</strong>.</li>
<li>Select <strong>Share Playable Link\u2026</strong>.</li>
<li>Select <strong>Copy Direct Link</strong> to copy the link, or <strong>Copy IFRAME Tag</strong>
to copy an embeddable IFRAME snippet.</li>
<li>Click <strong>Close</strong>.</li>
</ol>
<h3>Recording a video</h3>
<ol>
<li>From the menu, select <strong>Share</strong>.</li>
<li>Select <strong>Record Video\u2026</strong>. The emulator background turns red while
recording.</li>
<li>When the preview appears, right-click it and choose <strong>Save Image
As\u2026</strong> to save the animated GIF.</li>
<li>Click <strong>Close</strong>.</li>
</ol>
<h3>Making a cassette audio file</h3>
<p>For platforms with cassette support, select <strong>Share \xBB Make Cassette
Audio\u2026</strong> to export the compiled program as an audio (WAV) file that can
be loaded from a real or emulated cassette drive. This option is hidden
on platforms that don\u2019t support it.</p>
<h2>Syncing with GitHub</h2>
<p>You can import projects from GitHub repositories, publish your projects,
and push/pull to repositories you have access to. When you publish or
push, the IDE uploads your code and a compiled ROM file.</p>
<h3>Connecting your account</h3>
<ol>
<li>From the menu, select <strong>Sync \xBB Sign in to GitHub\u2026</strong>.</li>
<li>Enter your GitHub username and password.</li>
</ol>
<p>To sign out, select <strong>Sync \xBB Log out</strong>.</p>
<h3>Importing a project</h3>
<ol>
<li>From the menu, select <strong>Sync</strong>, then <strong>Import Project from
GitHub\u2026</strong>.</li>
<li>Enter the repository URL (for example
<code>https://github.com/username/reponame</code>) and click <strong>Import Project</strong>.</li>
</ol>
<p>To leave the project, select <strong>Leave Repository</strong> from the Project
Selector drop-down. Imported repositories appear under <strong>Repositories</strong>
in the same drop-down.</p>
<h3>Deleting a local repository</h3>
<ol>
<li>Select the repository from the Project Selector drop-down.</li>
<li>Select <strong>Sync \xBB Delete Local Repository</strong>.</li>
<li>Type <strong>YES</strong> to confirm, then select <strong>OK</strong>.</li>
</ol>
<h3>Publishing a project</h3>
<ol>
<li>From the menu, select <strong>Sync \xBB Publish Project on GitHub\u2026</strong>.</li>
<li>Enter a project name and description.</li>
<li>Choose <strong>Public</strong> or <strong>Private</strong> visibility.</li>
<li>Select a license.</li>
<li>Click <strong>Upload Project</strong>. If you aren\u2019t signed in you\u2019ll be prompted
to connect first.</li>
</ol>
<h3>Pushing and pulling changes</h3>
<ul>
<li><strong>Push:</strong> select <strong>Sync \xBB Push Changes to Repository\u2026</strong>, enter a
commit message, then <strong>Push Changes</strong>.</li>
<li><strong>Pull:</strong> select <strong>Sync \xBB Pull Latest from Repository</strong>, then
<strong>OK</strong>. All local files are overwritten; there is no merge in the
browser.</li>
</ul>
`;var ST=`<h1>Build Directives</h1>
<p>A project can contain multiple files. The build system decides how each
file is used based on directives in your source, and each file\u2019s
extension selects the tool that compiles or assembles it.</p>
<h2>Projects with multiple files</h2>
<p>All files in a project must be referenced from the main project file with
one of these reference types:</p>
<ul>
<li><strong>Include file</strong> \u2014 a source file embedded in another using an
<code>#include</code> or similar directive.</li>
<li><strong>Linked file</strong> \u2014 a source file compiled/assembled and linked into the
project alongside the main file, using the <code>//#link</code> or <code>;#link</code>
directive. A binary file can be included in an assembly project with the
<code>incbin</code> directive.</li>
<li><strong>Resource file</strong> \u2014 a file that must be included in the project but is
neither included nor linked from the main file (for example it is
included from a non-main file). Use the <code>//#resource</code> or <code>;#resource</code>
directive.</li>
</ul>
<p>Here\u2019s a C example:</p>
<pre><code class="language-c">//#link &quot;lzg.c&quot;
#include &quot;lzg.h&quot;
</code></pre>
<p>If a file cannot be found, check the syntax. Often double quotes are
required, e.g. <code>#include &quot;file.inc&quot;</code>.</p>
<p>Only system files that are part of the compiler toolchain can be found
with the <code>&lt;foo.h&gt;</code> syntax.</p>
<p>Assembler files can include files using the <code>.include</code> or <code>.incbin</code>
directives:</p>
<pre><code>.segment &quot;CHARS&quot;
.incbin &quot;tileset.chr&quot;
</code></pre>
<p>With DASM, make sure to quote the filename in <code>incbin</code>.</p>
<h2>C preprocessor defines</h2>
<p>The preprocessor macro <code>__MAIN__</code> is defined when compiling the main C
file of a project. You can use this to run tests on your module files:</p>
<pre><code class="language-c">//#link &quot;file_needed_for_test.c&quot;
#ifdef __MAIN__
#include &quot;file_needed_for_test.h&quot;
void main() {
test_my_module();
}
#endif
</code></pre>
<p>The macro <code>__8BITWORKSHOP__</code> is defined on all C files.</p>
<h2>Build directives</h2>
<p>Build directives are comment lines that tell the build system how to
compile, assemble, or link a project. They can appear in any source file
and are never seen by the toolchain:</p>
<ul>
<li>C, SDCC, and cmoc sources mark them with <code>//</code>.</li>
<li>Assembly sources mark them with <code>;</code>.</li>
</ul>
<p>The keyword follows the comment marker and a <code>#</code>, and the line must
begin with the comment (leading whitespace is allowed).</p>
<h3><code>//#symbol</code> \u2014 define a symbol</h3>
<p>Defines a preprocessor macro, an assembler symbol, or a linker symbol:</p>
<pre><code class="language-c">//#symbol [&lt;phase&gt;] NAME[=VALUE]
</code></pre>
<p>The optional <em>phase</em> is one of:</p>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>c</code>, <code>cc</code>, <code>compiler</code></td>
<td>C preprocessor define (default)</td>
</tr>
<tr>
<td><code>as</code>, <code>asm</code>, <code>assembler</code></td>
<td>assembler symbol</td>
</tr>
<tr>
<td><code>ld</code>, <code>link</code>, <code>linker</code></td>
<td>linker symbol</td>
</tr>
</tbody>
</table>
<p>A compiler define takes a text value (<code>cc65 -D</code>, <code>sdcc -D</code>). Assembler
and linker symbols take an integer expression:</p>
<pre><code class="language-c">//#symbol VERSION=3
//#symbol as START=$8000
//#symbol ld NES_MAPPER=4
</code></pre>
<p>A compiler define set in the main file applies to every C file in the
project, so a library can size its storage from a macro the game sets
(<code>//#symbol MAX_ENTITIES=24</code>, with an <code>#ifndef</code> default in the library
header). A linker symbol is only a link-time value: it can supply a
count read at run time but cannot size a C array, and SDCC needs a
leading underscore (<code>//#symbol ld _LIMIT=24</code> for <code>extern char LIMIT</code>).</p>
<p>A linker symbol defined by a source file replaces (rather than
duplicates) a symbol of the same name that the platform already defines,
so <code>//#symbol ld NES_MAPPER=...</code> can select a different mapper without
editing the platform defaults. Linker values must be integer
expressions; a text value is reported as a build error rather than
passed to the linker.</p>
<h3><code>//#flag</code> \u2014 pass a raw argument</h3>
<p>Passes arguments straight to one tool phase, with no interpretation:</p>
<pre><code class="language-c">//#flag &lt;phase&gt; &lt;arg&gt; [&lt;arg&gt; ...]
</code></pre>
<pre><code class="language-c">//#flag c -Osir
//#flag as --cpu 65c02
//#flag ld -m map.txt
</code></pre>
<p>Arguments may be quoted with single or double quotes when they contain
spaces. This is an escape hatch that the build system cannot validate.</p>
<h3><code>//#tooldef</code> \u2014 set a typed build parameter</h3>
<p>Sets a named build parameter that the build system understands:</p>
<pre><code class="language-c">//#tooldef &lt;phase&gt; NAME=VALUE
</code></pre>
<p>The supported parameters are:</p>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Name</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ld</code></td>
<td><code>cfgfile</code></td>
<td>linker configuration file to use (e.g. for CC65\u2019s ld65)</td>
</tr>
<tr>
<td><code>ld</code></td>
<td><code>libargs</code></td>
<td>comma-separated list of library/symbol arguments</td>
</tr>
<tr>
<td><code>ld</code></td>
<td><code>code_start</code>, <code>data_start</code></td>
<td>where SDCC\u2019s linker places the code and the RAM data (e.g. <code>0x4000</code>)</td>
</tr>
<tr>
<td><code>c</code></td>
<td><code>sdcc</code></td>
<td>SDCC version, <code>3</code> or <code>4</code> (see <em>SDCC versions</em> below)</td>
</tr>
</tbody>
</table>
<pre><code class="language-c">//#tooldef ld cfgfile=apple2-hgr2.cfg
//#tooldef ld libargs=,nes.lib
//#tooldef ld code_start=0x4000
//#tooldef c sdcc=3
</code></pre>
<h3>Commenting out a directive</h3>
<p>To disable a directive, break the marker; for example, use <code>////#</code> in C
or <code>;;#</code> in assembly. A directive that is already commented out is
deliberately <em>not</em> recognized.</p>
<h3>Legacy <code>#define</code> directives</h3>
<p>For backwards compatibility the build system still understands the older
<code>#define</code>-based forms:</p>
<table>
<thead>
<tr>
<th>Legacy form</th>
<th>Same as</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>#define CFGFILE &lt;file&gt;</code></td>
<td><code>//#tooldef ld cfgfile=&lt;file&gt;</code></td>
</tr>
<tr>
<td><code>#define LIBARGS &lt;a,b,...&gt;</code></td>
<td><code>//#tooldef ld libargs=&lt;a,b,...&gt;</code></td>
</tr>
<tr>
<td><code>#define NES_MAPPER &lt;n&gt;</code></td>
<td><code>//#symbol ld NES_MAPPER=&lt;n&gt;</code></td>
</tr>
<tr>
<td><code>#define CC65_FLAGS &lt;a,b,...&gt;</code></td>
<td><code>//#flag c &lt;a&gt; &lt;b&gt; ...</code></td>
</tr>
</tbody>
</table>
<p>These may be prefixed with <code>;</code> or <code>/</code> as well (for example <code>;#define</code>),
so they can appear in assembly sources. New code should prefer the
explicit <code>//#</code> directives above.</p>
<h2>CC65 custom config files</h2>
<p>CC65\u2019s linker is controlled with
<a href="https://www.cc65.org/doc/ld65-5.html">configuration files</a> that define
memory areas and the layout of the final binary or ROM.</p>
<p>Tell the linker to use a custom config file from your main C program:</p>
<pre><code class="language-c">//#tooldef ld cfgfile=apple2-hgr2.cfg
//#resource &quot;apple2-hgr2.cfg&quot;
</code></pre>
<p>The legacy form is also supported:</p>
<pre><code class="language-c">#define CFGFILE apple2-hgr2.cfg
//#resource &quot;apple2-hgr2.cfg&quot;
</code></pre>
<p>Note the lack of quotes around the file name.</p>
<h2>CC65 <code>#embed</code> directive</h2>
<p>You can include binary files directly in
CC65 <code>.c</code> files, a feature not available from the CC65 command line. For
example, given an uploaded file <code>image-c64.multi.lz4</code>:</p>
<pre><code class="language-c">const char image_c64_multi_lz4[] = {
#embed &quot;image-c64.multi.lz4&quot;
};
</code></pre>
<p>This creates a byte array named <code>image_c64_multi_lz4</code> with the contents
of the binary file.</p>
<p>The <code>#embed</code> directive is also supported in Oscar64 and Wiz files.</p>
<h2>SDCC versions</h2>
<p>Z80 C files build with SDCC 3.6.5 by default, which compiles several times
faster. SDCC 4 produces smaller code (roughly 10-20% on the samples we
tried) but compiles more slowly, mostly in the register allocator. To build
a project with SDCC 4, add this line to the main file:</p>
<pre><code class="language-c">//#tooldef c sdcc=4
</code></pre>
<p>The whole project then compiles, assembles, and links with SDCC 4.
Platforms whose libraries were compiled with SDCC 3.6.5 can\u2019t use SDCC 4,
and <code>//#tooldef c sdcc=4</code> on one of them is a build error:</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Library</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>coleco</code>, <code>msx-libcv</code>, <code>sms-*</code></td>
<td>libcv / libcvu</td>
</tr>
<tr>
<td><code>gb</code></td>
<td>gb.lib</td>
</tr>
<tr>
<td><code>cpc.*</code></td>
<td>cpctelera, cpcrslib</td>
</tr>
</tbody>
</table>
<p><code>//#tooldef c sdcc=3</code> selects SDCC 3.6.5 explicitly, which keeps working if
the default changes. The default is <code>SDCC_DEFAULT_VERSION</code> in
<code>src/common/toolmeta.ts</code>.</p>
<p>Unless the source has a <code>#pragma opt_code_size</code>, <code>opt_code_speed</code> or
<code>opt_code_balanced</code>, SDCC runs with <code>--no-peep --nolospre --max-allocs-per-node 500</code> for fast builds. Adding one of those pragmas
turns the full optimizer back on.</p>
<h3>Calling convention</h3>
<p>SDCC 4 passes function arguments in registers; SDCC 3 passed them on the
stack. C code works either way, but an assembly function that reads its
arguments from the stack breaks under SDCC 4. Mark such a function
<code>__sdcccall(0)</code>, in its prototype too, to keep the old convention:</p>
<pre><code class="language-c">void set_color(byte c) __sdcccall(0) __naked {
__asm
ld hl, #2
add hl, sp
ld a, (hl) ; c is on the stack
out (0x40), a
ret
__endasm;
}
</code></pre>
<p>Without <code>__sdcccall(0)</code>, SDCC 4 passes <code>c</code> in register <code>A</code>.</p>
<h3>Warnings</h3>
<p>SDCC 4 warns about more code than SDCC 3, e.g. <code>int main(int argc)</code>.
Warnings don\u2019t stop an SDCC 4 build and aren\u2019t marked in the editor. When
a build fails, the IDE marks its warnings along with its errors.</p>
<h2>SDCC <code>#pragma</code></h2>
<p>With SDCC, enable additional optimization by adding one of these lines to
the top of the file:</p>
<pre><code class="language-c">#pragma opt_code_size // for smaller code
#pragma opt_code_speed // for faster code
</code></pre>
<p>Without a pragma, the IDE turns off some optimizations to keep builds
fast. Either pragma slows builds but produces faster and smaller code.</p>
<h3>Game Boy ROM banks</h3>
<p>The Game Boy builds with SDCC 3.6.5 (see <em>SDCC versions</em> above).
<code>#pragma bank N</code> at the top of a file puts its code and
constant data in ROM bank <em>N</em>, which the CPU sees at <code>$4000-$7FFF</code>. Link
the file from your main file, and call its functions through <code>__banked</code>
prototypes. Each call switches to the function\u2019s bank and back again:</p>
<pre><code class="language-c">// bank1.c
#pragma bank 1
void say_hello(char* buf) __banked { ... }
// main.c
//#link &quot;bank1.c&quot;
//#symbol ld GB_MAPPER=0x19
void say_hello(char* buf) __banked;
</code></pre>
<p>The ROM grows to fit the highest bank, and the build writes the ROM size
into the header. If <code>GB_MAPPER</code> is still 0 (ROM only), the build selects
MBC5. A bank holds 16 KB; overflowing it is a build error. Banked data
can only be read while its bank is mapped, so copy it out from a
<code>__banked</code> function. See the <em>ROM Bank Switching</em> preset.</p>
<h2>File extensions</h2>
<p>The extension of your source file determines the tool used to assemble
or compile it. The current platform resolves extensions that several
tools share (<code>.c</code>, <code>.s</code>, <code>.bas</code>), so the mapping depends on both. Common
cases:</p>
<table>
<thead>
<tr>
<th>Extension</th>
<th>File type</th>
<th>Tool (platform)</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>.c</code></td>
<td>C source file</td>
<td>cc65 (6502), sdcc (Z80), cmoc (6809)</td>
</tr>
<tr>
<td><code>-sdcc.c</code></td>
<td>C source file on a 6502 platform</td>
<td>sdcc, mos6502 backend (SDCC 4 only; experimental, <code>devel-6502</code>)</td>
</tr>
<tr>
<td><code>.cpp</code></td>
<td>C source file</td>
<td>Oscar64 (6502)</td>
</tr>
<tr>
<td><code>.s</code> <code>.ca65</code></td>
<td>Assembler file</td>
<td>ca65 (6502)</td>
</tr>
<tr>
<td><code>.s</code></td>
<td>Assembler file</td>
<td>sdasz80 (Z80)</td>
</tr>
<tr>
<td><code>.sgb</code></td>
<td>Assembler file</td>
<td>sdasgb (Game Boy)</td>
</tr>
<tr>
<td><code>.dasm</code> <code>.a</code></td>
<td>Assembler file</td>
<td>dasm (6502)</td>
</tr>
<tr>
<td><code>.z</code></td>
<td>Assembler file</td>
<td>zmac (Z80)</td>
</tr>
<tr>
<td><code>.bas</code></td>
<td>BASIC file</td>
<td>BASIC, batariBASIC (vcs), FastBASIC (atari8)</td>
</tr>
<tr>
<td><code>.bb</code></td>
<td>batariBASIC file</td>
<td>batariBASIC (vcs)</td>
</tr>
<tr>
<td><code>.v</code></td>
<td>Verilog file</td>
<td>Verilator</td>
</tr>
</tbody>
</table>
<p>See <a href="toolchains.md">Toolchains &amp; Platforms</a> for the full
platform \xD7 extension \u2192 tool table.</p>
`;var vT=`<h1>cc65 Toolchain Upgrade</h1>
<p>The cc65 family (<code>cc65</code>, <code>ca65</code>, <code>ld65</code>) used by the 6502 platforms was upgraded
for 8bitworkshop 4.0.</p>
<table>
<thead>
<tr>
<th></th>
<th>Old build</th>
<th>Current build</th>
</tr>
</thead>
<tbody>
<tr>
<td>cc65 commit</td>
<td><code>6ac4aa4</code> (2021-12-24)</td>
<td><code>d8a486a</code> (V2.19-3867, 2026-09-26)</td>
</tr>
<tr>
<td>Runtime</td>
<td>Emscripten</td>
<td>WASI (<code>WASIRunner</code>)</td>
</tr>
<tr>
<td>Includes/libs</td>
<td>hand-mixed 2019\u20132023 objects</td>
<td>one set built from the same revision</td>
</tr>
<tr>
<td>Files</td>
<td><code>fs65-*.data</code> (~22 MB)</td>
<td><code>cc65-fs-&lt;platform&gt;.zip</code> (~10 MB)</td>
</tr>
</tbody>
</table>
<h2>Pitfalls</h2>
<p>There are a few potential incompatibilities in the new compiler:</p>
<ul>
<li><strong>Inline assembly.</strong> cc65 now optimizes non-volatile inline assembly.
8bitworkshop runs with <code>--disable-opt OptLoadStore1</code> to prevent unexpected changes.</li>
<li><strong><code>NULL</code> is now <code>((void*)0)</code></strong> from <code>&lt;stddef.h&gt;</code>, so headers that
defined their own <code>NULL</code> had to stop (see <code>neslib.h</code>).</li>
<li><strong>Signed constant overflow warning</strong>. For example, <code>128 &lt;&lt; 8</code>
is now an error-adjacent warning and needs an unsigned constant (<code>128u &lt;&lt; 8</code>).</li>
<li><strong>Recursing into <code>main()</code> is an error.</strong> Programs that tail-called
<code>main()</code> need an explicit loop instead.</li>
<li><strong><code>#pragma bss-name</code>/<code>data-name</code> regions must be closed.</strong> Without a
matching <code>pop</code>, the newer compiler could place earlier globals into
<code>ZEROPAGE</code> and overflow the 256-byte area. (See <code>nes/chase.c</code>.)</li>
<li><strong><code>sp</code> was renamed to <code>c_sp</code>.</strong> The old alias still works but emits an
<code>ld65</code> deprecation warning. Assembly code may need to be modified.</li>
</ul>
<h2>Warnings vs. errors</h2>
<p>8bitworkshop treats only <strong>errors</strong> as build failures; <code>Warning:</code> lines are
ignored so a clean build does not fail on style or version noise.</p>
<h2>Apple II graphics</h2>
<p>The stock lo-res driver (<code>a2.lo.s</code>) required a small upstream
patch (a stray branch in <code>INSTALL</code>).</p>
`;var wT=`<!-- generated by \`npm run doctools\`; do not edit by hand -->
<h1>Toolchains &amp; Platforms</h1>
<p>A source file\u2019s <strong>extension</strong> picks a tool, and the <strong>platform</strong>
disambiguates extensions several tools share (<code>.c</code>, <code>.s</code>, <code>.bas</code>).</p>
<h2>Tools</h2>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Kind</th>
<th>Arch</th>
<th>Version</th>
<th>Extensions</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>acme</code></td>
<td><a href="https://raw.githubusercontent.com/8bitworkshop/acme/main/docs/QuickRef.txt">ACME</a></td>
<td>assembler</td>
<td>6502</td>
<td>0.97.1</td>
<td><code>.acme</code></td>
</tr>
<tr>
<td><code>armips</code></td>
<td>armips</td>
<td>assembler</td>
<td>arm32</td>
<td>0.11.0</td>
<td><code>.armips</code></td>
</tr>
<tr>
<td><code>armtcc</code></td>
<td>TCC (ARM)</td>
<td>compiler</td>
<td>arm32</td>
<td>\u2014</td>
<td><code>.c</code> <code>.s</code></td>
</tr>
<tr>
<td><code>armtcclink</code></td>
<td>TCC (ARM) link</td>
<td>linker</td>
<td>arm32</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>basic</code></td>
<td>BASIC</td>
<td>interpreter</td>
<td>\u2014</td>
<td>\u2014</td>
<td><code>.bas</code></td>
</tr>
<tr>
<td><code>bataribasic</code></td>
<td><a href="help/bataribasic/manual.html">batari Basic</a></td>
<td>compiler</td>
<td>6502</td>
<td>\u2014</td>
<td><code>.bb</code> <code>.bas</code></td>
</tr>
<tr>
<td><code>ca65</code></td>
<td><a href="https://cc65.github.io/doc/ca65.html">ca65</a></td>
<td>assembler</td>
<td>6502</td>
<td>2.19</td>
<td><code>.s</code> <code>.ca65</code> <code>.inc</code></td>
</tr>
<tr>
<td><code>cc2600</code></td>
<td><a href="https://github.com/steux/cc2600">CC2600</a></td>
<td>compiler</td>
<td>6502</td>
<td>0.4.5</td>
<td><code>.cc2600</code></td>
</tr>
<tr>
<td><code>cc65</code></td>
<td><a href="https://cc65.github.io/doc/cc65.html">cc65</a></td>
<td>compiler</td>
<td>6502</td>
<td>2.19</td>
<td><code>.c</code> <code>.h</code></td>
</tr>
<tr>
<td><code>cc7800</code></td>
<td><a href="https://github.com/steux/cc7800">CC7800</a></td>
<td>compiler</td>
<td>6502</td>
<td>0.2.28</td>
<td><code>.cc7800</code> <code>.c78</code></td>
</tr>
<tr>
<td><code>cmoc</code></td>
<td><a href="https://github.com/stahta01/cmoc/">CMOC</a></td>
<td>compiler</td>
<td>6809</td>
<td>0.1.67</td>
<td><code>.c</code> <code>.h</code></td>
</tr>
<tr>
<td><code>dasm</code></td>
<td><a href="https://raw.githubusercontent.com/dasm-assembler/dasm/refs/tags/v2.20.17/docs/dasm.txt">DASM</a></td>
<td>assembler</td>
<td>6502</td>
<td>2.20.17</td>
<td><code>.dasm</code></td>
</tr>
<tr>
<td><code>dialog</code></td>
<td><a href="https://linusakesson.net/dialog/docs/">Dialog</a></td>
<td>compiler</td>
<td>zmachine</td>
<td>1c/03-dev</td>
<td><code>.dg</code></td>
</tr>
<tr>
<td><code>ecs</code></td>
<td>ECS</td>
<td>assembler</td>
<td>6502</td>
<td>\u2014</td>
<td><code>.ecs</code></td>
</tr>
<tr>
<td><code>fastbasic</code></td>
<td><a href="https://github.com/dmsc/fastbasic/blob/v4.4/manual.md">FastBasic</a></td>
<td>compiler</td>
<td>6502</td>
<td>4.4</td>
<td><code>.bas</code> <code>.fb</code> <code>.fbi</code></td>
</tr>
<tr>
<td><code>inform6</code></td>
<td>Inform 6</td>
<td>compiler</td>
<td>zmachine</td>
<td>6.34</td>
<td><code>.inf</code></td>
</tr>
<tr>
<td><code>jsasm</code></td>
<td>JSASM</td>
<td>assembler</td>
<td>\u2014</td>
<td>\u2014</td>
<td><code>.asm</code></td>
</tr>
<tr>
<td><code>ld65</code></td>
<td>ld65</td>
<td>linker</td>
<td>6502</td>
<td>2.19</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>llvm-mos</code></td>
<td><a href="https://llvm-mos.org/wiki/Welcome">LLVM-MOS</a></td>
<td>compiler</td>
<td>6502</td>
<td>\u2014</td>
<td><code>.c</code> <code>.cpp</code> <code>.s</code> <code>.S</code> <code>.C</code></td>
</tr>
<tr>
<td><code>lwasm</code></td>
<td>LWASM</td>
<td>assembler</td>
<td>6809</td>
<td>4.17</td>
<td><code>.lwasm</code></td>
</tr>
<tr>
<td><code>lwlink</code></td>
<td>LWLINK</td>
<td>linker</td>
<td>6809</td>
<td>4.17</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>merlin32</code></td>
<td><a href="https://github.com/apple2accumulator/merlin32">Merlin 32</a></td>
<td>assembler</td>
<td>6502</td>
<td>1.1.1</td>
<td><code>.lnk</code></td>
</tr>
<tr>
<td><code>naken</code></td>
<td><a href="https://github.com/mikeakohn/naken_asm">Naken</a></td>
<td>assembler</td>
<td>\u2014</td>
<td>\u2014</td>
<td><code>.ns</code></td>
</tr>
<tr>
<td><code>nesasm</code></td>
<td><a href="https://github.com/camsaul/nesasm">NESASM</a></td>
<td>assembler</td>
<td>6502</td>
<td>3.1</td>
<td><code>.nesasm</code></td>
</tr>
<tr>
<td><code>oscar64</code></td>
<td><a href="https://github.com/drmortalwombat/oscar64/blob/v1.32.266/oscar64.md">Oscar64</a></td>
<td>compiler</td>
<td>6502</td>
<td>1.32.266</td>
<td><code>.c</code> <code>.cpp</code> <code>.cc</code> <code>.o64</code></td>
</tr>
<tr>
<td><code>remote</code></td>
<td>Remote build</td>
<td>remote</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>sccz80</code></td>
<td>sccz80</td>
<td>compiler</td>
<td>z80</td>
<td>\u2014</td>
<td><code>.scc</code></td>
</tr>
<tr>
<td><code>sdas6500</code></td>
<td>sdas6500</td>
<td>assembler</td>
<td>6502</td>
<td>05.50.4+</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>sdasgb</code></td>
<td>sdasgb</td>
<td>assembler</td>
<td>gbz80</td>
<td>\u2014</td>
<td><code>.sgb</code></td>
</tr>
<tr>
<td><code>sdasz80</code></td>
<td>sdasz80</td>
<td>assembler</td>
<td>z80</td>
<td>05.50.4+</td>
<td><code>.s</code></td>
</tr>
<tr>
<td><code>sdcc</code></td>
<td><a href="http://sdcc.sourceforge.net/doc/sdccman.pdf">SDCC</a></td>
<td>compiler</td>
<td>z80</td>
<td>3.6.5 (default) / 4.6.0</td>
<td><code>.c</code> <code>.h</code> <code>.sdcc</code></td>
</tr>
<tr>
<td><code>sdld6808</code></td>
<td>sdld6808</td>
<td>linker</td>
<td>6502</td>
<td>05.50.4-</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>sdldz80</code></td>
<td>sdldz80</td>
<td>linker</td>
<td>z80</td>
<td>05.50.4-</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>silice</code></td>
<td><a href="https://github.com/sylefeb/Silice">Silice</a></td>
<td>hdl</td>
<td>verilog</td>
<td>0.1</td>
<td><code>.ice</code></td>
</tr>
<tr>
<td><code>smlrc</code></td>
<td><a href="https://github.com/alexfru/SmallerC/blob/master/v0100/doc/smlrc.md">SmallerC</a></td>
<td>compiler</td>
<td>x86</td>
<td>\u2014</td>
<td><code>.c</code></td>
</tr>
<tr>
<td><code>vasmarm</code></td>
<td>vasm (ARM)</td>
<td>assembler</td>
<td>arm32</td>
<td>1.8k</td>
<td><code>.vasm</code></td>
</tr>
<tr>
<td><code>verilator</code></td>
<td><a href="https://verilator.org/guide/4.205/">Verilator</a></td>
<td>hdl</td>
<td>verilog</td>
<td>4.205</td>
<td><code>.v</code></td>
</tr>
<tr>
<td><code>wiz</code></td>
<td><a href="https://github.com/wiz-lang/wiz/blob/master/readme.md#wiz">wiz</a></td>
<td>compiler</td>
<td>\u2014</td>
<td>0.1.2</td>
<td><code>.wiz</code></td>
</tr>
<tr>
<td><code>xa</code></td>
<td><a href="https://www.floodgap.com/retrotech/xa/">XA</a></td>
<td>assembler</td>
<td>6502</td>
<td>2.4.1</td>
<td><code>.xa</code></td>
</tr>
<tr>
<td><code>xasm6809</code></td>
<td>XASM6809</td>
<td>assembler</td>
<td>6809</td>
<td>\u2014</td>
<td><code>.xasm</code></td>
</tr>
<tr>
<td><code>yasm</code></td>
<td><a href="https://www.tortall.net/projects/yasm/manual/html/manual.html">YASM</a></td>
<td>assembler</td>
<td>x86</td>
<td>1.3.0</td>
<td><code>.asm</code></td>
</tr>
<tr>
<td><code>yosys</code></td>
<td>Yosys</td>
<td>hdl</td>
<td>verilog</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>zmac</code></td>
<td><a href="https://raw.githubusercontent.com/8bitworkshop/zmac/master/doc.txt">zmac</a></td>
<td>assembler</td>
<td>z80</td>
<td>28jul2018</td>
<td><code>.z</code></td>
</tr>
</tbody>
</table>
<h2>Platforms</h2>
<p>Grouped by CPU family. The <strong>Default</strong> line lists the arch\u2019s
extension\u2192tool mapping; the table only shows what each platform
changes. <code>Memory</code> is the layout from <code>PLATFORM_PARAMS</code> (start+size).</p>
<h3>6502</h3>
<p><strong>Default</strong> (<code>kim1</code>): <code>.a</code>\u2192dasm \xB7 <code>.acme</code>\u2192acme \xB7 <code>.bb</code>\u2192bataribasic \xB7 <code>.c</code>\u2192cc65 \xB7 <code>.ca65</code>\u2192ca65 \xB7 <code>.cc</code>\u2192oscar64 \xB7 <code>.cpp</code>\u2192oscar64 \xB7 <code>.dasm</code>\u2192dasm \xB7 <code>.ecs</code>\u2192ecs \xB7 <code>.h</code>\u2192cc65 \xB7 <code>.o64</code>\u2192oscar64 \xB7 <code>.s</code>\u2192ca65 \xB7 <code>.sdcc</code>\u2192sdcc \xB7 <code>.wiz</code>\u2192wiz \xB7 <code>.xa</code>\u2192xa</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>apple2</code></td>
<td>\u2014</td>
<td><code>.lnk</code>\u2192merlin32</td>
<td><code>apple2.cfg</code></td>
<td><strong>APPLE2</strong></td>
</tr>
<tr>
<td><code>apple2-e</code></td>
<td><code>apple2</code></td>
<td><code>.lnk</code>\u2192merlin32</td>
<td><code>apple2.cfg</code></td>
<td><strong>APPLE2</strong></td>
</tr>
<tr>
<td><code>atari7800</code></td>
<td>\u2014</td>
<td><code>.c78</code>\u2192cc7800 \xB7 <code>.cc7800</code>\u2192cc7800</td>
<td><code>atari7800.cfg</code></td>
<td><strong>ATARI7800</strong></td>
</tr>
<tr>
<td><code>atari8-5200</code></td>
<td><code>atari8</code></td>
<td><code>.bas</code>\u2192fastbasic \xB7 <code>.fb</code>\u2192fastbasic \xB7 <code>.fbi</code>\u2192fastbasic</td>
<td><code>atari5200.cfg</code></td>
<td><strong>ATARI5200</strong></td>
</tr>
<tr>
<td><code>atari8-800</code></td>
<td><code>atari8</code></td>
<td><code>.bas</code>\u2192fastbasic \xB7 <code>.fb</code>\u2192fastbasic \xB7 <code>.fbi</code>\u2192fastbasic</td>
<td><code>atari-cart.cfg</code></td>
<td><strong>ATARI</strong></td>
</tr>
<tr>
<td><code>atari8-800xl</code></td>
<td><code>atari8</code></td>
<td><code>.bas</code>\u2192fastbasic \xB7 <code>.fb</code>\u2192fastbasic \xB7 <code>.fbi</code>\u2192fastbasic</td>
<td><code>atari-cart.cfg</code></td>
<td><strong>ATARI</strong></td>
</tr>
<tr>
<td><code>atari8-800xl.disk</code></td>
<td><code>atari8</code></td>
<td><code>.bas</code>\u2192fastbasic \xB7 <code>.fb</code>\u2192fastbasic \xB7 <code>.fbi</code>\u2192fastbasic</td>
<td><code>atari.cfg</code></td>
<td><strong>ATARI</strong></td>
</tr>
<tr>
<td><code>c64</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td><code>c64.cfg</code></td>
<td><strong>CBM</strong> <strong>C64</strong></td>
</tr>
<tr>
<td><code>devel-6502</code></td>
<td><code>devel</code></td>
<td>\u2014</td>
<td><code>devel-6502.cfg</code></td>
<td>\u2014</td>
</tr>
<tr>
<td><code>kim1</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>nes</code></td>
<td>\u2014</td>
<td><code>.nesasm</code>\u2192nesasm</td>
<td><code>neslib2.cfg</code></td>
<td><strong>NES</strong></td>
</tr>
<tr>
<td><code>vcs</code></td>
<td>\u2014</td>
<td><code>.bas</code>\u2192bataribasic \xB7 <code>.cc2600</code>\u2192cc2600 \xB7 <code>.cc</code>\u2192\u2014 \xB7 <code>.cpp</code>\u2192\u2014 \xB7 <code>.h</code>\u2192\u2014 \xB7 <code>.o64</code>\u2192\u2014 \xB7 <code>.s</code>\u2192\u2014 \xB7 <code>.sdcc</code>\u2192\u2014 \xB7 <code>.xa</code>\u2192\u2014</td>
<td><code>atari2600.cfg</code></td>
<td><strong>ATARI2600</strong></td>
</tr>
<tr>
<td><code>vector-ataricolor</code></td>
<td><code>vector</code></td>
<td>\u2014</td>
<td><code>vector-color.cfg</code></td>
<td><strong>VECTOR</strong></td>
</tr>
<tr>
<td><code>vic20</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td><code>vic20.cfg</code></td>
<td><strong>CBM</strong> <strong>VIC20</strong></td>
</tr>
</tbody>
</table>
<h3>6502 (HuC6280)</h3>
<p><strong>Default</strong> (<code>pce</code>): <code>.a</code>\u2192dasm \xB7 <code>.acme</code>\u2192acme \xB7 <code>.bb</code>\u2192bataribasic \xB7 <code>.c</code>\u2192cc65 \xB7 <code>.ca65</code>\u2192ca65 \xB7 <code>.cc</code>\u2192oscar64 \xB7 <code>.cpp</code>\u2192oscar64 \xB7 <code>.dasm</code>\u2192dasm \xB7 <code>.ecs</code>\u2192ecs \xB7 <code>.h</code>\u2192cc65 \xB7 <code>.o64</code>\u2192oscar64 \xB7 <code>.s</code>\u2192ca65 \xB7 <code>.sdcc</code>\u2192sdcc \xB7 <code>.wiz</code>\u2192wiz \xB7 <code>.xa</code>\u2192xa</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>pce</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td><code>pce.cfg</code></td>
<td><strong>PCE</strong></td>
</tr>
</tbody>
</table>
<h3>Z80</h3>
<p><strong>Default</strong> (<code>mw8080bw</code>): <code>.c</code>\u2192sdcc \xB7 <code>.h</code>\u2192sdcc \xB7 <code>.ns</code>\u2192naken \xB7 <code>.s</code>\u2192sdasz80 \xB7 <code>.scc</code>\u2192sccz80 \xB7 <code>.sdcc</code>\u2192sdcc \xB7 <code>.sgb</code>\u2192sdasgb \xB7 <code>.wiz</code>\u2192wiz \xB7 <code>.z</code>\u2192zmac</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>astrocade</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>astrocade-arcade</code></td>
<td><code>astrocade</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>astrocade-bios</code></td>
<td><code>astrocade</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>coleco</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>cpc</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>cpc.rslib</code></td>
<td><code>cpc</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>galaxian</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>galaxian-scramble</code></td>
<td><code>galaxian</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>mcr</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>msx</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>msx-libcv</code></td>
<td><code>msx</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>mw8080bw</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>pacman</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>sms-gg-libcv</code></td>
<td><code>sms</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>sms-sg1000-libcv</code></td>
<td><code>sms</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>sms-sms-libcv</code></td>
<td><code>sms</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>sound_williams-z80</code></td>
<td><code>sound_williams</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>vector-z80color</code></td>
<td><code>vector</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>vicdual</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>williams-z80</code></td>
<td><code>williams</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>zx</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
</tbody>
</table>
<h3>Game Boy (SM83)</h3>
<p><strong>Default</strong> (<code>gb</code>): <code>.c</code>\u2192sdcc \xB7 <code>.h</code>\u2192sdcc \xB7 <code>.ns</code>\u2192naken \xB7 <code>.s</code>\u2192sdasz80 \xB7 <code>.scc</code>\u2192sccz80 \xB7 <code>.sdcc</code>\u2192sdcc \xB7 <code>.sgb</code>\u2192sdasgb \xB7 <code>.wiz</code>\u2192wiz \xB7 <code>.z</code>\u2192zmac</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>gb</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>gb.color</code></td>
<td><code>gb</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
</tbody>
</table>
<h3>6809</h3>
<p><strong>Default</strong> (<code>vectrex</code>): <code>.c</code>\u2192cmoc \xB7 <code>.h</code>\u2192cmoc \xB7 <code>.lwasm</code>\u2192lwasm \xB7 <code>.xasm</code>\u2192xasm6809</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>vectrex</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>williams</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
<tr>
<td><code>williams-defender</code></td>
<td><code>williams</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
</tbody>
</table>
<h3>ARM32</h3>
<p><strong>Default</strong> (<code>arm32</code>): <code>.armips</code>\u2192armips \xB7 <code>.c</code>\u2192armtcc \xB7 <code>.s</code>\u2192armtcc \xB7 <code>.vasm</code>\u2192vasmarm</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>arm32</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td><strong>ARM</strong> DISABLE_UNIMPLEMENTED_LIBC_APIS PRINTF_ALIAS_STANDARD_FUNCTION_NAMES_SOFT</td>
</tr>
</tbody>
</table>
<h3>x86</h3>
<p><strong>Default</strong> (<code>x86</code>): <code>.asm</code>\u2192yasm \xB7 <code>.c</code>\u2192smlrc</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>x86</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
</tbody>
</table>
<h3>Verilog / HDL</h3>
<p><strong>Default</strong> (<code>verilog</code>): <code>.asm</code>\u2192jsasm \xB7 <code>.ice</code>\u2192silice \xB7 <code>.v</code>\u2192verilator</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>verilog</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
</tbody>
</table>
<h3>Z-machine</h3>
<p><strong>Default</strong> (<code>zmachine</code>): <code>.dg</code>\u2192dialog \xB7 <code>.inf</code>\u2192inform6</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>zmachine</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
</tbody>
</table>
<h3>BASIC</h3>
<p><strong>Default</strong> (<code>basic</code>): <code>.bas</code>\u2192basic</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Root</th>
<th>Overrides</th>
<th>cfgfile</th>
<th>defines</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>basic</code></td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
<td>\u2014</td>
</tr>
</tbody>
</table>
<h2>Platform \xD7 extension \u2192 tool</h2>
<p>The canonical extension mapping. Empty cells mean the extension is
not accepted on that platform.</p>
<h3>6502</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.a</code></th>
<th><code>.acme</code></th>
<th><code>.bas</code></th>
<th><code>.bb</code></th>
<th><code>.c</code></th>
<th><code>.c78</code></th>
<th><code>.ca65</code></th>
<th><code>.cc</code></th>
<th><code>.cc2600</code></th>
<th><code>.cc7800</code></th>
<th><code>.cpp</code></th>
<th><code>.dasm</code></th>
<th><code>.ecs</code></th>
<th><code>.fb</code></th>
<th><code>.fbi</code></th>
<th><code>.h</code></th>
<th><code>.lnk</code></th>
<th><code>.nesasm</code></th>
<th><code>.o64</code></th>
<th><code>.s</code></th>
<th><code>.sdcc</code></th>
<th><code>.wiz</code></th>
<th><code>.xa</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>apple2</code></td>
<td>dasm</td>
<td>acme</td>
<td>\xB7</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>cc65</td>
<td>merlin32</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>apple2-e</code></td>
<td>dasm</td>
<td>acme</td>
<td>\xB7</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>cc65</td>
<td>merlin32</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>atari7800</code></td>
<td>dasm</td>
<td>acme</td>
<td>\xB7</td>
<td>bataribasic</td>
<td>cc65</td>
<td>cc7800</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>cc7800</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>atari8-5200</code></td>
<td>dasm</td>
<td>acme</td>
<td>fastbasic</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>fastbasic</td>
<td>fastbasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>atari8-800</code></td>
<td>dasm</td>
<td>acme</td>
<td>fastbasic</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>fastbasic</td>
<td>fastbasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>atari8-800xl</code></td>
<td>dasm</td>
<td>acme</td>
<td>fastbasic</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>fastbasic</td>
<td>fastbasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>atari8-800xl.disk</code></td>
<td>dasm</td>
<td>acme</td>
<td>fastbasic</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>fastbasic</td>
<td>fastbasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>c64</code></td>
<td>dasm</td>
<td>acme</td>
<td>\xB7</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>devel-6502</code></td>
<td>dasm</td>
<td>acme</td>
<td>\xB7</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>kim1</code></td>
<td>dasm</td>
<td>acme</td>
<td>\xB7</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>nes</code></td>
<td>dasm</td>
<td>acme</td>
<td>\xB7</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>cc65</td>
<td>\xB7</td>
<td>nesasm</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>vcs</code></td>
<td>dasm</td>
<td>acme</td>
<td>bataribasic</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>\xB7</td>
<td>cc2600</td>
<td>\xB7</td>
<td>\xB7</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>\xB7</td>
<td>\xB7</td>
<td>\xB7</td>
<td>\xB7</td>
<td>\xB7</td>
<td>\xB7</td>
<td>wiz</td>
<td>\xB7</td>
</tr>
<tr>
<td><code>vector-ataricolor</code></td>
<td>dasm</td>
<td>acme</td>
<td>\xB7</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
<tr>
<td><code>vic20</code></td>
<td>dasm</td>
<td>acme</td>
<td>\xB7</td>
<td>bataribasic</td>
<td>cc65</td>
<td>\xB7</td>
<td>ca65</td>
<td>oscar64</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>\xB7</td>
<td>\xB7</td>
<td>cc65</td>
<td>\xB7</td>
<td>\xB7</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
</tbody>
</table>
<h3>6502 (HuC6280)</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.a</code></th>
<th><code>.acme</code></th>
<th><code>.bb</code></th>
<th><code>.c</code></th>
<th><code>.ca65</code></th>
<th><code>.cc</code></th>
<th><code>.cpp</code></th>
<th><code>.dasm</code></th>
<th><code>.ecs</code></th>
<th><code>.h</code></th>
<th><code>.o64</code></th>
<th><code>.s</code></th>
<th><code>.sdcc</code></th>
<th><code>.wiz</code></th>
<th><code>.xa</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>pce</code></td>
<td>dasm</td>
<td>acme</td>
<td>bataribasic</td>
<td>cc65</td>
<td>ca65</td>
<td>oscar64</td>
<td>oscar64</td>
<td>dasm</td>
<td>ecs</td>
<td>cc65</td>
<td>oscar64</td>
<td>ca65</td>
<td>sdcc</td>
<td>wiz</td>
<td>xa</td>
</tr>
</tbody>
</table>
<h3>Z80</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.c</code></th>
<th><code>.h</code></th>
<th><code>.ns</code></th>
<th><code>.s</code></th>
<th><code>.scc</code></th>
<th><code>.sdcc</code></th>
<th><code>.sgb</code></th>
<th><code>.wiz</code></th>
<th><code>.z</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>astrocade</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>astrocade-arcade</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>astrocade-bios</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>coleco</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>cpc</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>cpc.rslib</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>galaxian</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>galaxian-scramble</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>mcr</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>msx</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>msx-libcv</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>mw8080bw</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>pacman</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>sms-gg-libcv</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>sms-sg1000-libcv</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>sms-sms-libcv</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>sound_williams-z80</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>vector-z80color</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>vicdual</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>williams-z80</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>zx</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
</tbody>
</table>
<h3>Game Boy (SM83)</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.c</code></th>
<th><code>.h</code></th>
<th><code>.ns</code></th>
<th><code>.s</code></th>
<th><code>.scc</code></th>
<th><code>.sdcc</code></th>
<th><code>.sgb</code></th>
<th><code>.wiz</code></th>
<th><code>.z</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>gb</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
<tr>
<td><code>gb.color</code></td>
<td>sdcc</td>
<td>sdcc</td>
<td>naken</td>
<td>sdasz80</td>
<td>sccz80</td>
<td>sdcc</td>
<td>sdasgb</td>
<td>wiz</td>
<td>zmac</td>
</tr>
</tbody>
</table>
<h3>6809</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.c</code></th>
<th><code>.h</code></th>
<th><code>.lwasm</code></th>
<th><code>.xasm</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>vectrex</code></td>
<td>cmoc</td>
<td>cmoc</td>
<td>lwasm</td>
<td>xasm6809</td>
</tr>
<tr>
<td><code>williams</code></td>
<td>cmoc</td>
<td>cmoc</td>
<td>lwasm</td>
<td>xasm6809</td>
</tr>
<tr>
<td><code>williams-defender</code></td>
<td>cmoc</td>
<td>cmoc</td>
<td>lwasm</td>
<td>xasm6809</td>
</tr>
</tbody>
</table>
<h3>ARM32</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.armips</code></th>
<th><code>.c</code></th>
<th><code>.s</code></th>
<th><code>.vasm</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>arm32</code></td>
<td>armips</td>
<td>armtcc</td>
<td>armtcc</td>
<td>vasmarm</td>
</tr>
</tbody>
</table>
<h3>x86</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.asm</code></th>
<th><code>.c</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>x86</code></td>
<td>yasm</td>
<td>smlrc</td>
</tr>
</tbody>
</table>
<h3>Verilog / HDL</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.asm</code></th>
<th><code>.ice</code></th>
<th><code>.v</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>verilog</code></td>
<td>jsasm</td>
<td>silice</td>
<td>verilator</td>
</tr>
</tbody>
</table>
<h3>Z-machine</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.dg</code></th>
<th><code>.inf</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>zmachine</code></td>
<td>dialog</td>
<td>inform6</td>
</tr>
</tbody>
</table>
<h3>BASIC</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th><code>.bas</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>basic</code></td>
<td>basic</td>
</tr>
</tbody>
</table>
`;var xT=`<h1>Asset Header</h1>
<p>An <strong>asset header</strong> is a tiny note to the <a href="asseteditor.md">Asset Editor</a>
that tells it what a block of data means. It is just a JSON object inside
a comment, sitting right above the bytes:</p>
<pre><code class="language-c">/*{w:8,h:8,bpp:1,count:2,brev:1}*/
const byte tiles[] = { ... };
</code></pre>
<p>The Asset Editor scans that comment and reads the JSON inside.
It then knows how to convert the bytes inside the array to and from an image.</p>
<p>For example, the above comment represents two images, 8x8 pixels, 1 bit per pixel, most significant bit on the left.</p>
<h2>Header syntax</h2>
<p>A header is a comment containing a single JSON object, immediately
followed by a data block. The block ends at the next closing delimiter,
which depends on the language:</p>
<table>
<thead>
<tr>
<th>Language</th>
<th>Header</th>
<th>Data block ends at</th>
</tr>
</thead>
<tbody>
<tr>
<td>C / C++</td>
<td><code>/*{w:8,h:8}*/</code></td>
<td><code>;</code></td>
</tr>
<tr>
<td>Assembly</td>
<td><code>;;{w:8,h:8};;</code></td>
<td><code>;;</code></td>
</tr>
<tr>
<td>Verilog</td>
<td><code>/*{w:8,h:8}*/</code></td>
<td><code>end</code></td>
</tr>
</tbody>
</table>
<p><strong>Each number needs a radix prefix.</strong>
It recognizes <code>0xNN</code>, <code>$NN</code>, <code>#$NN</code>, <code>%0101</code>, <code>0b0101</code>, <code>8'hNN</code>, <code>8'b0101</code>,
and assembler <code>hex aabbcc\u2026</code> statements.
It remembers the notation you used and writes each number back the same way.
It does <em>not</em> recognize <strong>plain decimal</strong> numbers, so for example <code>{24,60,126,\u2026}</code> will be skipped.</p>
<p>Examples:</p>
<pre><code class="language-c">/*{w:8,h:8,bpp:1,count:2,brev:1}*/
const byte tiles[] = {
0xff,0x81,0x81,0x81,0x81,0x81,0x81,0xff,
0x18,0x3c,0x7e,0xff,0xff,0x7e,0x3c,0x18,
};
</code></pre>
<pre><code class="language-asm">;;{w:8,h:8,count:1,brev:1,flip:1};;
PlayerGfx:
.byte $18,$3c,$7e,$ff
hex ff7e3c18
;;
</code></pre>
<p>The JSON parser isn\u2019t strict, so you don\u2019t have to \u201Cquote\u201D keys \u2013
<code>w:8</code> and <code>&quot;w&quot;:8</code> mean the same thing.
String <em>values</em> still need their quotes, though: <code>pal:&quot;nes&quot;</code>, <code>comp:&quot;rletag&quot;</code>.</p>
<h3>Gotchas</h3>
<ul>
<li><strong>The first <code>;</code> wins.</strong> In C the block ends at the very next semicolon,
so the array declaration must be the only statement between the header
and that <code>;</code>. Anything else and the editor reads the wrong data.</li>
<li>Keys are case-sensitive and must be alphabetic.</li>
<li>A malformed header is reported inline in the Asset Editor tab, rather
than being silently ignored.</li>
</ul>
<h3>Read binary files with <code>#embed</code></h3>
<p>If the data block contains an <code>#embed</code> directive, the bytes are read
from that file instead of from the source text:</p>
<pre><code class="language-c">/*{w:24,h:21,bpp:1,brev:1,wpimg:64,count:1}*/
const char sprite[] = {
#embed &quot;sprite.bin&quot;
};
</code></pre>
<h3>Overlapping arrays</h3>
<p>The scanner decides where a data block ends from how the header starts,
not from the language of the file. A <code>/*{\u2026}*/</code> header always ends at the
next <code>;</code>. A <code>;;{\u2026};;</code> header always ends at the next <code>;;</code>.</p>
<p>So in an assembly file you can\u2019t stack two <code>;;</code> headers \u2014 the second one
looks like the end of the first. But you <em>can</em> drop a <code>/*{\u2026}*/</code> header in
the middle of a byte block; it will read up to the next <code>;</code>.</p>
<p><code>presets/nes/chr_generic.s</code> does this. One <code>;;</code> header describes all 256
CHR tiles, and a <code>/*{\u2026}*/</code> header near the end describes 15 of those same
bytes as 16\xD716 sprites. The ranges overlap on purpose, so the editor
shows the same data two ways. Just remember that any <code>;</code> inside the block
will cut it short.</p>
<h2>Field reference</h2>
<h3>Image fields</h3>
<p>These describe a bitmap or character set. Only <code>w</code> and <code>h</code> are required \u2014
everything else falls back to a sensible default.</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Default</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>w</code></td>
<td><em>required</em></td>
<td>Width in pixels</td>
</tr>
<tr>
<td><code>h</code></td>
<td><em>required</em></td>
<td>Height in pixels</td>
</tr>
<tr>
<td><code>count</code></td>
<td><code>1</code></td>
<td>Number of images</td>
</tr>
<tr>
<td><code>bpp</code></td>
<td><code>1</code></td>
<td>Bits per pixel</td>
</tr>
<tr>
<td><code>np</code></td>
<td><code>1</code></td>
<td>Number of bitplanes (colors = 2<sup>bpp\u02D9np</sup>)</td>
</tr>
<tr>
<td><code>bpw</code></td>
<td><code>8</code></td>
<td>Bits per word (8, 16, 32)</td>
</tr>
<tr>
<td><code>sl</code></td>
<td><code>ceil(w*bpp/bpw)</code></td>
<td>Words per scanline (stride)</td>
</tr>
<tr>
<td><code>wpimg</code></td>
<td><code>sl*h</code></td>
<td>Words per image (for padding)</td>
</tr>
<tr>
<td><code>pofs</code></td>
<td><code>sl*h*count</code></td>
<td>Distance between bitplanes, in words</td>
</tr>
<tr>
<td><code>skip</code></td>
<td><code>0</code></td>
<td>Words to skip at the start of the whole block</td>
</tr>
<tr>
<td><code>brev</code></td>
<td><code>false</code></td>
<td>MSB is the leftmost pixel</td>
</tr>
<tr>
<td><code>flip</code></td>
<td><code>false</code></td>
<td>Data is stored bottom row first</td>
</tr>
<tr>
<td><code>il</code></td>
<td><code>false</code></td>
<td>Interleave images row by row</td>
</tr>
<tr>
<td><code>remap</code></td>
<td>\u2014</td>
<td>Bit permutation applied to the word offset</td>
</tr>
<tr>
<td><code>reindex</code></td>
<td>\u2014</td>
<td>Per-column word/bit table</td>
</tr>
<tr>
<td><code>aspect</code></td>
<td><code>1</code></td>
<td>Pixel aspect ratio for display only</td>
</tr>
<tr>
<td><code>art</code></td>
<td><code>false</code></td>
<td>Apple II HGR artifact-color mode</td>
</tr>
<tr>
<td><code>palname</code></td>
<td>\u2014</td>
<td>Preferred palette name for preview</td>
</tr>
<tr>
<td><code>comp</code></td>
<td>\u2014</td>
<td><code>&quot;rletag&quot;</code> = RLE-compressed block</td>
</tr>
<tr>
<td><code>map</code></td>
<td>\u2014</td>
<td><code>&quot;nesnt&quot;</code> = NES nametable, <code>&quot;charpad&quot;</code> = C64 CharPad map, <code>&quot;tilemap&quot;</code> = generic tile map; not a bitmap</td>
</tr>
<tr>
<td><code>pacstrip</code></td>
<td>\u2014</td>
<td>Pac-Man/Namco vertical-strip layout</td>
</tr>
<tr>
<td><code>xform</code></td>
<td>\u2014</td>
<td>CSS transform. Parsed and stored but currently inert</td>
</tr>
</tbody>
</table>
<h3>Palette fields</h3>
<p>A block with <code>pal</code> and no <code>w</code>/<code>h</code> describes a palette instead of an image.</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Default</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>pal</code></td>
<td>\u2014</td>
<td>Palette decoding, see below</td>
</tr>
<tr>
<td><code>n</code></td>
<td>\u2014</td>
<td>Advisory entry count \u2014 the real count comes from the data</td>
</tr>
<tr>
<td><code>layout</code></td>
<td>\u2014</td>
<td>Grouped editor layout: <code>nes</code>, <code>astrocade</code>, <code>pacman</code>, <code>sms</code>, <code>gg</code></td>
</tr>
<tr>
<td><code>name</code></td>
<td><code>&quot;Palette N&quot;</code></td>
<td>Display name in the bitmap editor\u2019s palette dropdown</td>
</tr>
</tbody>
</table>
<p><code>pal</code> is either:</p>
<ul>
<li><strong>A number</strong> like <code>332</code> or <code>444</code> \u2014 the three digits are channel bit
widths, applied <strong>from the low bits upward</strong>. A positive value puts red
lowest (<code>pal:332</code> = RGB332, red in bits 0\u20132); a <strong>negative</strong> value puts
blue lowest (<code>pal:-332</code> = blue in bits 0\u20132, red in the top 2 bits).
The picker\u2019s color space is <code>1 &lt;&lt; (sum of digits)</code> entries, which is why
<code>pal:444</code> is a 4096-color chooser regardless of how many entries the
block holds.</li>
<li><strong>A name</strong>: <code>&quot;nes&quot;</code>, <code>&quot;vcs&quot;</code>, <code>&quot;c64&quot;</code>, <code>&quot;gb&quot;</code>, <code>&quot;ap2lores&quot;</code>,
<code>&quot;astrocade&quot;</code>, or <code>&quot;pacman&quot;</code>.
An unknown name reports an error.</li>
</ul>
<p>Bitmaps pick up their colors from palette blocks <strong>anywhere in the current
project</strong>, matched by entry count \u2014 a 4-color bitmap offers every 4-entry
palette (and every 4-entry slice named by a <code>layout</code>) in a dropdown.
Projects fall back to a default palette when no palette block matches.</p>
<pre><code class="language-c">/*{pal:&quot;nes&quot;,layout:&quot;nes&quot;}*/
const char PALETTE[8] = { 0x0F, 0x11,0x24,0x3C, 0x00, 0x01,0x15,0x25 };
</code></pre>
<p>SMS and Game Gear mode-4 palettes use <code>layout:&quot;sms&quot;</code> (or <code>&quot;gg&quot;</code>, the same
split): the first 16 entries are the background palette and the next 16 are
the sprite palette, matching the VDP\u2019s palette-select bit.</p>
<pre><code class="language-c">/*{pal:222,n:32,layout:&quot;sms&quot;}*/
const unsigned char PALETTE[32] = { ... };
</code></pre>
<p><code>bpw</code> applies to palette blocks too \u2014 PC Engine palettes are 16-bit
words, so their blocks carry <code>bpw:16</code> for correct parsing and write-back.</p>
<p>In Apple II artifact-color mode (<code>art:1</code>), the artifact column (high bit) is edited
separately and is left alone by the transforms.</p>
<h3>Palette names</h3>
<p>Give a palette a <code>name</code> in its header to label it in that dropdown, and
name a bitmap\u2019s preferred entry with <code>palname</code> so it opens with the matching
palette:</p>
<pre><code class="language-c">/*{pal:&quot;nes&quot;,layout:&quot;nes&quot;,name:&quot;Background&quot;}*/
const char BG_PALETTE[8] = { ... };
/*{pal:&quot;nes&quot;,layout:&quot;nes&quot;,name:&quot;Sprite&quot;}*/
const char SPR_PALETTE[8] = { ... };
/*{w:16,h:16,bpp:1,np:2,pofs:8,brev:1,palname:&quot;Sprite&quot;}*/
const char sprites[] = { ... };
</code></pre>
<p>Unnamed palettes are numbered in source order (<code>Palette 1</code>, <code>Palette 2</code>, \u2026)
and get a prefix when there are sub-palettes like on NES (<code>Palette 3: Background 0</code>).</p>
<h2>Bit order and planes</h2>
<p>Two questions decide how the bits turn into pixels.</p>
<p><strong>Where do bits start?</strong> <code>brev:1</code> means <strong>MSB is the leftmost pixel</strong> \u2014 the
usual arrangement for NES, Game Boy, TMS9918, VCS, and most tile-based
hardware. Without it, the LSB is leftmost (Apple II HGR, some bitmap
formats).</p>
<p><strong>How are colors decided?</strong> Most formats use one of these two:</p>
<ul>
<li><strong><code>bpp:N</code></strong> \u2014 the bits of one pixel are adjacent within a word. <code>bpp:4</code>
packs two 16-color pixels per byte.</li>
<li><strong><code>np:N</code></strong> \u2014 the bits of one pixel live in N separate words, <code>pofs</code>
apart. Plane <code>p</code> supplies bits <code>p*bpp</code>.</li>
</ul>
<p>Game Boy 2bpp is <code>bpp:1,np:2,pofs:1,sl:2</code> \u2014 planes interleaved every
other byte. NES 2bpp is <code>bpp:1,np:2,pofs:8</code> \u2014 plane 0 in bytes 0\u20137,
plane 1 in bytes 8\u201315.</p>
<h2>The address model</h2>
<p>Everything except the special modes below is described by one addressing
formula:</p>
<pre><code>bpw = bpw ?? 8 // bits per word
sl = sl ?? ceil(w * bpp / bpw) // words per scanline
wpimg = wpimg ?? sl * h // words per image
pofs = pofs ?? sl * h * count // distance between bitplanes
rowstride = sl // (see il: below)
for each image n, for each row y:
yp = flip ? h-1-y : y
ofs0 = n*wpimg + yp*rowstride
shift = 0
for each column x:
ofs = remap(ofs0) // bit permutation
for each plane p:
word = data[ofs + p*pofs + skip]
bits = brev ? word &gt;&gt; (bpw-shift-bpp) : word &gt;&gt; shift
color |= (bits &amp; ((1&lt;&lt;bpp)-1)) &lt;&lt; (p*bpp)
shift += bpp
if shift &gt;= bpw: // move to next word in the row
ofs0 += 1
shift = 0
</code></pre>
<p>A few things to note:</p>
<ol>
<li><strong><code>remap</code> is applied to <code>ofs0</code> inside the <code>x</code> loop</strong>, after the
byte-advance. It therefore sees the byte index <em>within</em> a row as well
as the row and image index \u2014 which lets you describe
multi-tile-wide sprites.</li>
<li><strong><code>skip</code> is added last</strong>, after <code>remap</code> and after the plane offset. It
offsets the whole block, not each image.</li>
<li><strong><code>pofs</code> defaults to \u201Cone plane block after another\u201D</strong>
(<code>sl*h*count</code>). Set it explicitly for anything interleaved.</li>
<li>Total colors per pixel = <code>1 &lt;&lt; (bpp * np)</code>.</li>
</ol>
<h3><code>il</code> \u2014 row interleaving</h3>
<p><code>il:1</code> stores all <code>count</code> images as one wide block, row by row: <code>wpimg</code>
becomes <code>sl</code>, and <code>rowstride</code> becomes <code>sl*count</code>. Useful for character
sets stored as a single wide strip.</p>
<h2><code>remap</code> \u2014 matching hardware tile layouts</h2>
<p><code>remap</code> permutes the <strong>bits of the word offset</strong>.
It is useful for handling bitmaps in a
different order than row-major, or for rearranging sprite tiles.</p>
<p>Entry <code>i</code> of the array says which destination bit source bit <code>i</code> becomes:</p>
<pre><code>remap(ofs) = OR over i of: bit i of ofs \u2192 bit remap[i] of result
</code></pre>
<p>A <strong>negative</strong> entry <code>-n</code> maps source bit <code>i</code> to destination bit <code>n-1</code>
<strong>and inverts it</strong> \u2014 use it when the hardware stores the halves in the
opposite order.</p>
<h3>Worked example: NES 16\xD716 metasprite</h3>
<p>From <code>presets/nes/shoot2.c</code>:</p>
<pre><code class="language-c">/*{w:16,h:16,bpp:1,count:16,brev:1,np:2,pofs:8,remap:[5,0,1,2,4,6,7,8,9,10,11,12]}*/
</code></pre>
<p><code>sl</code> = 2, <code>wpimg</code> = 32, so the natural offset is <code>32n + 2y + xb</code>:</p>
<table>
<thead>
<tr>
<th>Source bit</th>
<th>Meaning</th>
<th>\u2192</th>
<th>Dest bit</th>
<th>Contributes</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td><code>xb</code> (left/right byte)</td>
<td>\u2192</td>
<td>5</td>
<td>32</td>
</tr>
<tr>
<td>1,2,3</td>
<td><code>y0,y1,y2</code></td>
<td>\u2192</td>
<td>0,1,2</td>
<td><code>y &amp; 7</code></td>
</tr>
<tr>
<td>4</td>
<td><code>y3</code> (top/bottom half)</td>
<td>\u2192</td>
<td>4</td>
<td>16</td>
</tr>
<tr>
<td>5+</td>
<td>image index <code>n</code></td>
<td>\u2192</td>
<td>6+</td>
<td>64\xB7n</td>
</tr>
</tbody>
</table>
<p>Physical offset = <code>64n + 32\xB7xb + 16\xB7y3 + (y&amp;7)</code>, plus <code>p*8</code> for the
plane. That is exactly NES CHR: four 16-byte tiles per metasprite in
8\xD716 sprite order \u2014 upper-left, lower-left, upper-right, lower-right.</p>
<h3>Worked example: Game Boy 16\xD716 metasprite</h3>
<p>From <code>presets/gb/pakupaku.c</code>:</p>
<pre><code class="language-c">/*{w:16,h:16,bpp:1,count:19,brev:1,np:2,pofs:1,sl:2,wpimg:64,remap:[5,1,2,3,4,0,6,7,8,9,10,11,12]}*/
</code></pre>
<p>Game Boy interleaves its two planes, so <code>pofs:1</code>: each plane gets one
byte per 8-pixel row, and <code>sl:2</code> covers both planes of that row. The
natural offset is therefore <code>64n + 2y + xb</code>, with <code>xb</code> in bit 0 and <code>y</code>
in bits 1\u20134.</p>
<p>The remap rearranges those bits as follows:</p>
<table>
<thead>
<tr>
<th>Source bit</th>
<th>Meaning</th>
<th>\u2192</th>
<th>Dest bit</th>
<th>Contributes</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td><code>xb</code> (left/right 8\xD78 tile)</td>
<td>\u2192</td>
<td>5</td>
<td>32</td>
</tr>
<tr>
<td>1,2,3</td>
<td><code>y0,y1,y2</code></td>
<td>\u2192</td>
<td>1,2,3</td>
<td><code>y &amp; 7</code></td>
</tr>
<tr>
<td>4</td>
<td><code>y3</code> (top/bottom half)</td>
<td>\u2192</td>
<td>4</td>
<td>16</td>
</tr>
<tr>
<td>5</td>
<td>unused</td>
<td>\u2192</td>
<td>0</td>
<td>\u2014</td>
</tr>
<tr>
<td>6+</td>
<td>image index <code>n</code></td>
<td>\u2192</td>
<td>6+</td>
<td>64\xB7n</td>
</tr>
</tbody>
</table>
<p>So the physical offset becomes <code>64n + 32\xB7xb + 16\xB7y3 + 2\xB7(y&amp;7)</code>, plus <code>p</code>
for the plane. That is upper-left, lower-left, upper-right, lower-right \u2014
the tile order pakupaku\u2019s OAM code expects. Bit 5 is unused only because
<code>y</code> never exceeds 15 here; mapping it to bit 0 keeps the remap a proper
permutation of the range.</p>
<h3><code>remap</code> must be a bijection</h3>
<p>In other words, if you do it in reverse, you get the original order back.</p>
<p>The size check computes the required data length as <code>max over n,i of remap(n*wpimg + i)</code> for <code>i</code> in <code>[0, wpimg)</code>, plus one. If your remap
isn\u2019t a permutation of that range, the maximum comes out wrong and you
get a spurious <em>\u201CExpected N values, found M\u201D</em> error. This is why the
Game Boy example above bothers to map the unused bit 5 down to bit 0
instead of leaving it alone \u2014 the mapping is never exercised during
decoding, but it keeps the range exact.</p>
<h3>Other patterns in the tree</h3>
<table>
<thead>
<tr>
<th>Format</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>remap:[0,1,2,4,5,6,7,8,9,10,11,12]</code></td>
<td>NES 8\xD78: doubles the image stride to 16 bytes so the two 8-byte planes fit</td>
</tr>
<tr>
<td><code>remap:[4,0,1,2,3,5,6,7,8,9]</code></td>
<td>TMS9918 16\xD716 sprite: UL, LL, UR, LR (ColecoVision, MSX)</td>
</tr>
<tr>
<td><code>remap:[-5,0,1,2,3,5,6,7,8,9]</code></td>
<td>Same, with the halves stored right-first</td>
</tr>
<tr>
<td><code>remap:[3,0,1,2,4,5,6,7,8,9,10]</code></td>
<td>Galaxian/Scramble 16\xD716 sprite</td>
</tr>
</tbody>
</table>
<h2><code>reindex</code></h2>
<p><code>reindex</code> throws out the shift/advance logic and replaces it with a plain
per-column table. For column <code>x</code>, <code>reindex[x % len]</code> is a <strong>bit index
within the row</strong>: <code>&gt;&gt; 3</code> gives the word offset added to the row base, <code>&amp; 7</code> gives the bit position (still subject to <code>brev</code>). Entry <code>15</code> therefore
means word 1, bit 7. Because it drives the offset directly, the automatic
<code>ofs0 += 1</code> advance is disabled.</p>
<p>It exists for hardware where pixel order within a row is not linear \u2014
notably VCS playfields, where the three playfield registers are not all
in the same bit order:</p>
<pre><code class="language-asm">;;{w:20,h:10,flip:1,reindex:[4,5,6,7,15,14,13,12,11,10,9,8,16,17,18,19]};;
</code></pre>
<h2>Special modes</h2>
<h3><code>comp:&quot;rletag&quot;</code></h3>
<p>The block is RLE-compressed: the first byte is the tag, a literal byte
sets the current value, and a tag byte is followed by a repeat count
(count 0 = end). Decompression happens before decoding, so the editor
shows the expanded image. Currently, these asset blocks are view-only.</p>
<h3><code>map:&quot;nesnt&quot;</code></h3>
<p>The block is an NES nametable, not a bitmap. <code>w</code>/<code>h</code> are in <strong>tiles</strong>
(default 32\xD730) and the block is rendered as a tilemap using the project\u2019s
CHR data, with a map editor instead of a pixel editor. Usually paired with
<code>comp:&quot;rletag&quot;</code>:</p>
<pre><code class="language-c">/*{w:32,h:30,bpp:8,comp:&quot;rletag&quot;,map:&quot;nesnt&quot;}*/
</code></pre>
<p>Currently, these asset blocks are view-only.</p>
<h3><code>map:&quot;tilemap&quot;</code></h3>
<p>The block is a <code>w</code>\xD7<code>h</code> grid of tile indices (one value per cell, <code>w</code>/<code>h</code> in
<strong>tiles</strong>), drawn with the project\u2019s 8\xD78 tile bitmaps and shown as a
read-only preview. Any tile bitmap block with at least as many tiles as the
highest index in the map is used. An optional <code>attrs</code> names a parallel array
of the same size holding CGB-style attribute bytes: bits 0-2 are the palette
number (colors are offset by 4 \xD7 palette, so the preview needs a palette
with enough entries), bit 5 flips X and bit 6 flips Y. Arrays are found by
name in the project, and may be 2D (<code>map[66][156]</code>).</p>
<pre><code class="language-c">/*{w:156,h:66,map:&quot;tilemap&quot;,attrs:&quot;bigmap_map_attributes&quot;}*/
const unsigned char bigmap_map[66][156] = { ... };
</code></pre>
<p>See <code>presets/gb/bigmap.h</code>.</p>
<h3><code>map:&quot;charpad&quot;</code></h3>
<p>A C64 CharPad map: <code>w</code>\xD7<code>h</code> tile indices, each tile <code>tw</code>\xD7<code>th</code> chars. <code>chars</code>,
<code>tiles</code> and <code>colors</code> name the charset, tileset and colour arrays; <code>colorby</code>
is <code>&quot;tile&quot;</code> (default) or <code>&quot;char&quot;</code>, <code>mc:0</code> selects hires, and <code>bg</code>, <code>mca</code>,
<code>mcb</code> are the screen and shared multicolor colors.
See <code>presets/c64/level2-data.c</code>. Currently view-only.</p>
<h3><code>pacstrip:1</code></h3>
<p>Pac-Man / Namco arcade layout: 8-byte vertical strips of 4 rows \xD7 8
columns, 2bpp packed as bit <code>y</code> plus bit <code>y+4</code>, X/Y mirrored within each
strip. Tiles (8\xD78) use 2 strips; sprites (16\xD716) use 8 strips in hardware
order. The mode implies 4 colors regardless of <code>bpp</code>.</p>
<pre><code class="language-c">/*{w:8,h:8,count:256,bpp:2,pacstrip:1}*/
/*{w:16,h:16,count:64,bpp:2,pacstrip:1}*/
</code></pre>
<h3><code>art:1</code></h3>
<p>Apple II HGR artifact color: bit 7 of each byte selects the color set, and
the editor shows a per-group palette toggle. The artifact bit is bit 0
when <code>brev</code> is set, bit 7 otherwise.</p>
<h2>Validation</h2>
<p>Before it creates an editor, the Asset Editor counts the parsed words
(these are bytes when <code>bpw</code> is 8) and checks them against the format:</p>
<pre><code>required = max(remap(n*wpimg + i)) + planeExtent + 1 + skip
planeExtent = (np-1)*pofs, or 0 if that is smaller than wpimg
</code></pre>
<p>The <code>planeExtent</code> rule distinguishes the two plane layouts: when planes
are interleaved (<code>pofs &lt; wpimg</code>, Game Boy/SMS) the plane bytes are already
inside each image block; when planes are stored as separate blocks
(<code>pofs &gt;= wpimg</code>, NES) the extra plane is counted at the end.</p>
<p>A mismatch shows as <strong>\u201CExpected N value(s), found M\u201D</strong> in the Asset
Editor tab. When that happens, check things in this order:</p>
<ol>
<li><strong><code>found 0</code></strong> \u2014 the literals have no radix prefix, or the data block
ended early at a stray <code>;</code>.</li>
<li><code>count</code> \u2014 the most common culprit otherwise.</li>
<li><code>wpimg</code> \u2014 hardware often pads (C64 sprites are 24\xD721 bits in 64
bytes).</li>
<li><code>remap</code> \u2014 is it a bijection over <code>[0, wpimg)</code>?</li>
<li><code>pofs</code> \u2014 interleaved planes need it set explicitly.</li>
</ol>
<h2>Cookbook</h2>
<p>Some recipes you can copy and paste:</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Header</th>
</tr>
</thead>
<tbody>
<tr>
<td>NES 8\xD78 CHR</td>
<td><code>/*{w:8,h:8,bpp:1,count:256,brev:1,np:2,pofs:8,remap:[0,1,2,4,5,6,7,8,9,10,11,12]}*/</code></td>
</tr>
<tr>
<td>NES 16\xD716 metasprite</td>
<td><code>/*{w:16,h:16,bpp:1,count:16,brev:1,np:2,pofs:8,remap:[5,0,1,2,4,6,7,8,9,10,11,12]}*/</code></td>
</tr>
<tr>
<td>NES palette</td>
<td><code>/*{pal:&quot;nes&quot;,layout:&quot;nes&quot;}*/</code></td>
</tr>
<tr>
<td>NES nametable</td>
<td><code>/*{w:32,h:30,bpp:8,comp:&quot;rletag&quot;,map:&quot;nesnt&quot;}*/</code></td>
</tr>
<tr>
<td>Game Boy 8\xD78 tile</td>
<td><code>/*{w:8,h:8,bpp:1,count:4,brev:1,np:2,pofs:1,sl:2}*/</code></td>
</tr>
<tr>
<td>Game Boy 16\xD716 metasprite</td>
<td><code>/*{w:16,h:16,bpp:1,count:19,brev:1,np:2,pofs:1,sl:2,wpimg:64,remap:[5,1,2,3,4,0,6,7,8,9,10,11,12]}*/</code></td>
</tr>
<tr>
<td>ColecoVision / MSX sprite</td>
<td><code>/*{w:16,h:16,brev:1,remap:[4,0,1,2,3,5,6,7,8,9],count:2}*/</code></td>
</tr>
<tr>
<td>ColecoVision layered 2-plane sprite</td>
<td><code>/*{w:16,h:16,remap:[-5,0,1,2,3,5,6,7,8,9],count:5,np:2}*/</code></td>
</tr>
<tr>
<td>C64 hires sprite</td>
<td><code>/*{w:24,h:21,bpp:1,brev:1,wpimg:64,aspect:1,count:3}*/</code></td>
</tr>
<tr>
<td>C64 multicolor sprite</td>
<td><code>/*{w:12,h:21,bpp:2,brev:1,wpimg:64,count:4,aspect:2}*/</code></td>
</tr>
<tr>
<td>VCS sprite</td>
<td><code>;;{w:8,h:16,brev:1,flip:1};;</code></td>
</tr>
<tr>
<td>VCS palette</td>
<td><code>;;{pal:&quot;vcs&quot;};;</code></td>
</tr>
<tr>
<td>Galaxian/Scramble tile ROM</td>
<td><code>/*{w:16,h:16,remap:[3,0,1,2,4,5,6,7,8,9,10],brev:1,np:2,pofs:2048,count:64}*/</code></td>
</tr>
<tr>
<td>Pac-Man tiles / sprites</td>
<td><code>/*{w:8,h:8,count:256,bpp:2,pacstrip:1}*/</code> \xB7 <code>/*{w:16,h:16,count:64,bpp:2,pacstrip:1}*/</code></td>
</tr>
<tr>
<td>Pac-Man color PROM</td>
<td><code>/*{pal:&quot;pacman&quot;,n:32}*/</code></td>
</tr>
<tr>
<td>SMS / Game Gear mode-4 palette</td>
<td><code>/*{pal:222,n:32,layout:&quot;sms&quot;}*/</code> (GG: <code>pal:444</code>)</td>
</tr>
<tr>
<td>Astrocade</td>
<td><code>/*{w:16,h:16,bpp:2,brev:1}*/</code> \xB7 <code>/*{pal:&quot;astrocade&quot;,layout:&quot;astrocade&quot;}*/</code></td>
</tr>
<tr>
<td>Williams</td>
<td><code>/*{w:16,h:16,bpp:4,brev:1}*/</code></td>
</tr>
<tr>
<td>PC Engine 16\xD716 sprite</td>
<td><code>/*{w:16,h:16,bpp:1,count:3,brev:1,np:4,pofs:16,sl:1,bpw:16,wpimg:64}*/</code></td>
</tr>
<tr>
<td>Apple II HGR</td>
<td><code>/*{w:8,h:8,bpp:1,count:96}*/</code> (LSB-first, no <code>brev</code>)</td>
</tr>
<tr>
<td>Verilog 16-bit words</td>
<td><code>/*{w:16,h:16,bpw:16,count:5}*/</code></td>
</tr>
</tbody>
</table>
`;var PT=`<h2>Embedding the IDE in a web page</h2>
<p>You can embed the IDE using an IFRAME element:</p>
<pre><code class="language-html">&lt;iframe src=&quot;https://8bitworkshop.com/redir.html?embed=1&amp;...&quot;&gt;&lt;/iframe&gt;
</code></pre>
<p>Query-string parameters:</p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>embed</code></td>
<td>must be <code>1</code></td>
</tr>
<tr>
<td><code>platform</code></td>
<td>platform ID (for example <code>vcs</code>)</td>
</tr>
<tr>
<td><code>file0_name</code></td>
<td>name of the main file</td>
</tr>
<tr>
<td><code>file0_data</code></td>
<td>text content of the main file</td>
</tr>
<tr>
<td><code>highlight</code></td>
<td>(optional) line range to highlight (for example <code>2,4</code>)</td>
</tr>
</tbody>
</table>
<p>The IDE uses browser storage tied to the referrer URL, so each page
containing embeds is effectively sandboxed from the others.</p>
<p>Example using Bootstrap\u2019s <code>embed-responsive</code> class:</p>
<pre><code class="language-html">&lt;div class=&quot;embed-responsive embed-responsive-16by9&quot;&gt;
&lt;iframe class=&quot;embed-responsive-item&quot; loading=&quot;lazy&quot;
src=&quot;https://8bitworkshop.com/redir.html?embed=1&amp;platform=nes&amp;highlight=&amp;file0_name=testembed.dasm&amp;file0_data=...&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</code></pre>
`;var kT=`<h1>Waveform Viewer</h1>
<p>The Verilog platform shows a waveform trace below the emulator screen,
with one row per exposed signal. <strong>Click</strong> to give the waveform viewer
keyboard focus.</p>
<p>If the CRT is active, the waveform viewer is hidden by default, below the CRT frame.
You can <strong>click and drag</strong> its frame border up from the bottom of the screen.</p>
<h2>Which signals appear</h2>
<p>The trace shows every scalar/vector <code>logic</code> signal from the flattened
design: top-level ports and internal registers and wires from every
submodule, not just the top level. These are omitted:</p>
<ul>
<li>Non-logic types (arrays, memories)</li>
<li>Internal simulator temporaries (names starting with <code>__V</code>)</li>
<li>If the design drives video output (it has <code>vsync</code>, <code>hsync</code>, and <code>rgb</code>
signals), <code>clk</code> and <code>reset</code></li>
</ul>
<p>Multi-bit signals will display their hex or decimal values on top of the waveforms when zoomed in.</p>
<h2>Mouse actions</h2>
<ul>
<li><strong>Click</strong> on the trace to move the selection cursor to that clock.</li>
<li><strong>Click and drag</strong> to scrub through the trace.</li>
<li><strong>Scroll horizontally</strong> to pan left/right.</li>
<li>For input signals (other than <code>clk</code> or <code>reset</code>) <strong>click</strong> its row to change its
value at the current clock.</li>
</ul>
`;var Fz=o0(),Yu=[{id:"index",title:"IDE Help",html:iT},{id:"editor",title:"Editor",html:sT},{id:"disasm",title:"Disassembly",html:oT},{id:"memory",title:"Memory Browser",html:aT},{id:"memmap",title:"Memory Map",html:lT},{id:"vram",title:"VRAM Browser",html:cT},{id:"memprobe",title:"Memory Probe",html:dT},{id:"crtprobe",title:"CRT Probe",html:hT},{id:"probelog",title:"Probe Log",html:uT},{id:"scanlineio",title:"Scanline I/O",html:fT},{id:"symbols",title:"Symbol Profiler",html:pT},{id:"callgraph",title:"Call Graph",html:mT},{id:"debugtree",title:"Debug Tree",html:gT},{id:"breakpoints",title:"Breakpoints",html:OT},{id:"asseteditor",title:"Asset Editor",html:bT},{id:"managing-files",title:"Managing Files",html:yT},{id:"build-directives",title:"Build Directives",html:ST},{id:"cc65-upgrade",title:"CC65 Upgrade",html:vT},{id:"toolchains",title:"Toolchains & Platforms",html:wT},{id:"asset-headers",title:"Asset Headers",html:xT},{id:"embedding-ide",title:"Embedding the IDE",html:PT},{id:"verilog-waveform",title:"Waveform Viewer",html:kT}],ju={};for(let n of Yu)ju[n.id]=n;H1(()=>Yu);function l0(n){let e=n||"";return e.startsWith("#")&&(e=e.substring(1)),e.startsWith("help")&&(e=e.substring(4)),e.startsWith("/")&&(e=e.substring(1)),e.endsWith(".md")&&(e=e.substring(0,e.length-3)),e=e.replace(/^\.\//,""),ju[e]?e:"index"}function Yz(n){return ju[l0(n)]}var a0={"#disasm":"disasm","#memory":"memory","#memmap":"memmap","#vram":"vram","#memprobe":"memprobe","#crtprobe":"crtprobe","#probelog":"probelog","#scanlineio":"scanlineio","#symbols":"symbols","#callgraph":"callgraph","#debugtree":"debugtree","#breakpoints":"breakpoints","#asseteditor":"asseteditor"};function YT(n,e){return e?"editor":n&&a0[n]||"index"}function jT(n){let e=n&&a0[n]&&ju[a0[n]];if(!e)return;let t=e.html.replace(/^\s*<h1\b[^>]*>[\s\S]*?<\/h1>/i," ");return Xg(_l(t))}function jz(n){n.querySelectorAll("a[href]").forEach(t=>{let r=t.getAttribute("href");if(!r)return;if(/^[a-z][a-z0-9+.-]*:/i.test(r)){t.setAttribute("target","_blank"),t.setAttribute("rel","noopener noreferrer");return}if(r.startsWith("/")||r.startsWith("#"))return;let i=r.indexOf("#"),s=i>=0?r.substring(0,i):r;s.endsWith(".md")&&(t.setAttribute("href","#help/"+l0(s)),t.removeAttribute("target"))})}function Uz(n,e){let t=Yz(e);n.innerHTML=Fz.sanitize(t.html),jz(n)}var lc=class{constructor(e){this.id=l0(e||"index")}getPath(){return"#help/"+this.id}createDiv(e){return this.maindiv=xr(e,"vertical-scroll help-view"),Uz(this.maindiv[0],this.id),this.maindiv[0]}refresh(e){}};var Uu=class{constructor(e,t){this.classify=e;this.name=t;this.graph=null;this.stack=[];this.lastsp=-1;this.lastpc=0;this.spAtLastExec=-1;this.interrupted=!1;this.jsr=!1;this.rts=!1}clear(){this.graph=null,this.reset()}reset(){this.stack=[],this.lastsp=-1,this.lastpc=0,this.spAtLastExec=-1,this.interrupted=!1,this.jsr=!1,this.rts=!1}newNode(e,t){return{$$SP:t,$$PC:e,count:0,self:0,total:0,startLine:null,endLine:null,calls:{}}}enter(e,t){let r=this.stack[this.stack.length-1],i=this.name(e),s=r.calls[i];s==null?s=r.calls[i]=this.newNode(e,this.lastsp):s.$$PC==null&&(s.$$PC=e),this.stack.push(s),s.count++,s.startLine=t}leave(e){if(this.stack.length>1)this.stack.pop().endLine=e;else{let t=this.stack[0];this.graph=this.newNode(null,this.lastsp),this.graph.total=t.total,this.graph.calls[this.name(this.lastpc)]=t,this.stack=[this.graph]}}clocks(e){let t=this.stack;if(t.length){t[t.length-1].self+=e;for(let r of t)r.total+=e}}event(e,t,r){var i;switch(e){case 0:this.clocks(t);break;case 134217728:this.interrupted=!0;break;case 184549376:case 167772160:if(this.stack.length){let s=this.stack[this.stack.length-1],o=this.lastsp-t;(o==2||o==3)&&t<s.$$SP&&(this.jsr=!0),(o==-2||o==-3)&&this.stack.length>1&&t>s.$$SP&&(this.rts=!0)}this.lastsp=t;break;case 16777216:{this.stack.length||((i=this.graph)!=null||(this.graph=this.newNode(null,this.lastsp)),this.stack=[this.graph]);let s=this.spAtLastExec>=0?this.classify(this.lastpc):"unknown";if(s==="unknown"&&!this.interrupted)this.guess(t,r);else{let o=this.lastsp<this.spAtLastExec,a=this.lastsp>this.spAtLastExec,l=s==="other"&&o&&Math.abs(t-this.lastpc)>=4;(s==="call"||this.interrupted||l)&&o?this.enter(t,r):s==="return"&&a&&this.leave(r),this.jsr=this.rts=!1}this.interrupted=!1,this.lastpc=t,this.spAtLastExec=this.lastsp;break}}}guess(e,t){Math.abs(e-this.lastpc)>=4&&(this.jsr&&this.enter(e,t),this.rts&&this.leave(t),this.jsr=this.rts=!1)}};var gj=new DataView(new ArrayBuffer(8));var Hz=/^(JSR|JSL|CALL|BSR|LBSR|RST)\b/i,Kz=/^(RTS|RTL|RTI|RET|RETI|RETN)\b|^PUL[SU]\b.*\bPC\b/i;function UT(n){return Hz.test(n.trim())}function qT(n){return Kz.test(n.trim())}var cc=256,GT=100,Jz=!1,qu=class n{constructor(e,t){this.expanded=!1;this.parent=e,this.name=t,this.children=new Map,this.level=e?e.level+1:-1,this.view=e?e.view:null}getDiv(){return this._div==null&&(this._div=document.createElement("div"),this._div.classList.add("vertical-scroll"),this._div.classList.add("tree-content"),this._header=document.createElement("div"),this._header.classList.add("tree-header"),this._header.classList.add("tree-level-"+this.level),this._header.append(this.name),this._inline=document.createElement("span"),this._inline.classList.add("tree-value"),this._header.append(this._inline),this._div.append(this._header),this.parent._content.append(this._div),this._header.onclick=e=>{this.toggleExpanded()}),this.expanded&&this._content==null?(this._content=document.createElement("div"),this._div.append(this._content)):!this.expanded&&this._content!=null&&(this._content.remove(),this._content=null,this.children.clear()),this._div}toggleExpanded(){this.expanded=!this.expanded,this.view.tick()}remove(){this._div.remove(),this._div=null}update(e){this.getDiv();var t="";if(e&&e.$$&&typeof e.$$=="function"&&this._content!=null&&(e=e.$$()),e==null)t=e+"";else if(typeof e=="number")e!=(e|0)?t=e.toString():t=e+" ($"+_e(e)+")";else if(typeof e=="boolean")t=e.toString();else if(typeof e=="string")e.length<GT?t=e:t=e.substring(0,GT)+"...";else if(e.buffer&&e.length<=cc)t=M0(e,0,e.length);else if(typeof e=="object"||typeof e=="function")if(typeof e.$$text=="string"&&(t=e.$$text),this._content!=null){if(e.slice&&e.length>cc){let l={},c=e;for(var r=cc;e.length/r>cc;)r*=2;for(let d=0;d<c.length;d+=r)l["$"+_e(d)]={$$:()=>c.slice(d,d+r)};e=l}if(e instanceof Map){let l={};for(let[c,d]of e.entries())l[c]=d;e=l}let o=e instanceof Array?Array.from(e.keys()):Object.getOwnPropertyNames(e);if(o.length>cc){let l={},c=e;for(var r=100;o.length/r>100;)r*=2;for(let h=0;h<o.length;h+=r){for(var i={},s=h;s<h+r;s++)i[o[s]]=c[o[s]];l["["+h+"...]"]=i}e=l,o=Object.getOwnPropertyNames(e)}let a=new Set(this.children.keys());o.forEach(l=>{var c=!Jz&&typeof l=="string"&&l.startsWith("$$");if(!c){let d=this.children.get(l);d==null&&(d=new n(this,l),this.children.set(l,d)),d.update(e[l])}a.delete(l)}),a.forEach(l=>{this.children.get(l).remove(),this.children.delete(l)}),this._header.classList.add("tree-expanded"),this._header.classList.remove("tree-collapsed")}else this._header.classList.add("tree-collapsed"),this._header.classList.remove("tree-expanded");else t=typeof e;this._inline.innerText!=t&&(this._inline.innerText=t)}};function HT(n,e){var t=new qu(null,null);t.view=e,t._content=n;var r=new qu(t,"/");return r.expanded=!0,r.getDiv(),r._div.style.padding="0px",r}var d0=class{createDiv(e){return this.root=HT(e,this),this.root.getDiv()}refresh(){this.tick()}tick(){this.root.update(this.getRootObject())}};var Gu=class extends d0{getRootObject(){return P.getDebugTree()}},Hu=class extends fs{constructor(){super(...arguments);this.builder=new Uu(t=>this.classify(t),t=>this.addr2str(t));this.kinds=new Map;this.cumulativeData=!0}createDiv(t){return this.clear(),this.treeroot=HT(t,this),this.treeroot.getDiv()}refresh(){this.tick()}tick(){this.treeroot.update(this.getRootObject()),this.probe&&this.probe.clear()}clear(){this.builder.clear(),this.kinds.clear()}reset(){this.builder.clear(),this.probe&&this.probe.clear()}classify(t){let r=this.kinds.get(t);if(r==null){if(r="unknown",P.disassemble&&P.readAddress)try{let i=P.disassemble(t,s=>P.readAddress(s));i&&(r=UT(i.line)?"call":qT(i.line)?"return":"other")}catch(i){}this.kinds.set(t,r)}return r}getRootObject(){let t=0,r=this.redraw((s,o,a,l,c,d)=>{this.builder.clocks(c-t),t=c,this.builder.event(s,o,l)});this.builder.clocks(r-t);let i=this.builder.graph;return i&&this.callees(i,i.total||1)}callees(t,r){let i={};for(let[s,o]of Object.entries(t.calls)){let a=o.count+"x "+(100*o.total/r).toFixed(1)+"% "+o.total+(o.self!=o.total?"/"+o.self:"");o.startLine!=null&&(a+=" @"+o.startLine+(o.endLine!=null&&o.endLine!=o.startLine?"-"+o.endLine:"")),i[s]=Object.assign({$$text:a},this.callees(o,r))}return i}};var Ku=class{constructor(e,t){this.id2window={};this.id2createfn={};this.id2showfn={};this.id2div={};this.containerdiv=e,this.project=t,this.undoStack=[],this.redoStack=[]}isWindow(e){return this.id2createfn[e]!=null}setCreateFunc(e,t){this.id2createfn[e]=t}setShowFunc(e,t){this.id2showfn[e]=t}create(e){var t=this.id2window[e];t||(console.log("creating window",e),t=this.id2window[e]=this.id2createfn[e](e));var r=this.id2div[e];return r||(r=this.id2div[e]=t.createDiv(this.containerdiv),$(r).hide()),t}createOrShow(e,t){var r=this.create(e),i=this.id2div[e];if(this.activewnd!=r?(this.activediv&&$(this.activediv).hide(),this.activewnd&&this.activewnd.setVisible&&this.activewnd.setVisible(!1),this.activediv=i,this.activewnd=r,this.activeid=e,$(i).show(),this.refresh(!0),this.refreshErrors(),r.setVisible&&r.setVisible(!0),this.id2showfn[e]&&this.id2showfn[e](e,r),Wn()):t&&this.refresh(t),this.activeid=e,typeof window!="undefined"){if(e===this.project.mainPath)window.location.hash&&history.replaceState(null,"",window.location.pathname+window.location.search);else{let o=e.startsWith("#")?e:"#"+encodeURIComponent(e);window.location.hash!==o&&!window.location.hash.startsWith(o+"/")&&history.replaceState(null,"",o)}this.updateTitle(e)}return r}updateTitle(e){if(this.titlePrefix){var t=yt(this.project.mainPath);if(e===this.project.mainPath)document.title=this.titlePrefix+t;else{var r=e.startsWith("#headerview/")?e.substring(12):e.startsWith("#help/")?e.substring(6):e.startsWith("#")?e:yt(e);document.title=this.titlePrefix+t+" | "+r}}}put(e,t){this.id2window[e]=t}refresh(e){this.activewnd&&this.activewnd.refresh&&this.activewnd.refresh(e)}resetViews(){for(let e of Object.values(this.id2window))e.reset&&e.reset();this.refresh(!1)}tick(){this.activewnd&&this.activewnd.tick&&this.activewnd.tick()}setErrors(e){this.lasterrors=e,this.refreshErrors()}refreshErrors(){this.activewnd&&this.activewnd.markErrors&&(this.lasterrors&&this.lasterrors.length?this.activewnd.markErrors(this.lasterrors):this.activewnd.clearErrors())}getActive(){return this.activewnd}getActiveID(){return this.activeid}getCurrentText(){if(this.activewnd&&this.activewnd.getValue)return this.activewnd.getValue();bootbox.alert("Please switch to an editor window.")}resize(){this.activeid&&this.activewnd&&this.activewnd.recreateOnResize&&(this.activewnd=null,this.id2window[this.activeid]=null,this.id2div[this.activeid]=null,this.createOrShow(this.activeid))}updateFile(e,t){if(t instanceof Uint8Array){var r=this.project.getFile(e);this.undoStack.push({fileid:e,data:r instanceof Uint8Array?new Uint8Array(r):void 0}),this.project.updateFile(e,t)}else{var i=this.id2window[e];if(i&&i.setText&&typeof t=="string")i.setText(t),this.undoStack.push({fileid:e});else{this.project.updateFile(e,t);return}}this.redoStack=[]}setAssetRange(e,t,r,i){var s=this.id2window[e]||this.create(e);s.setAssetRange&&s.setAssetRange(t,r,i)}getAssetText(e,t){var r=this.id2window[e]||this.create(e);return r.getAssetText?r.getAssetText(t):null}replaceAssetText(e,t,r){var i=this.id2window[e]||this.create(e);i.replaceAssetText&&i.replaceAssetText(t,r),this.undoStack.push({fileid:e}),this.redoStack=[]}clearAssetRanges(e){var t=this.id2window[e];t&&t.clearAssetRanges&&t.clearAssetRanges()}undoStep(){var e=this.undoStack.pop();if(!e){this.showAlert("No more steps to undo.");return}if(e.data){var t=this.project.getFile(e.fileid);this.redoStack.push({fileid:e.fileid,data:t instanceof Uint8Array?new Uint8Array(t):void 0}),this.project.updateFile(e.fileid,e.data)}else{var r=this.id2window[e.fileid];if(r&&r.undoStep)r.undoStep(),r.getValue&&this.project.updateFile(e.fileid,r.getValue()),this.redoStack.push({fileid:e.fileid});else{this.showAlert("No more steps to undo.");return}}this.refresh(!1)}redoStep(){var e=this.redoStack.pop();if(!e){this.showAlert("No more steps to redo.");return}if(e.data){var t=this.project.getFile(e.fileid);this.undoStack.push({fileid:e.fileid,data:t instanceof Uint8Array?new Uint8Array(t):void 0}),this.project.updateFile(e.fileid,e.data)}else{var r=this.id2window[e.fileid];if(r&&r.redoStep)r.redoStep(),r.getValue&&this.project.updateFile(e.fileid,r.getValue()),this.undoStack.push({fileid:e.fileid});else{this.showAlert("No more steps to redo.");return}}this.refresh(!1)}showAlert(e){this.alerting||(this.alerting=!0,bootbox.alert(e,()=>{this.alerting=!1}))}flushAllWindows(){for(var e in this.id2window){var t=this.id2window[e];t&&t.flushChanges&&t.flushChanges()}}updateAllOpenWindows(e){for(var t in this.id2window){var r=this.id2window[t];r&&r.setText&&e.getItem(t).then(i=>{this.updateFile(t,i)})}}findWindowWithFilePrefix(e){e=yt(Zt(e));for(var t in this.id2createfn)if(!(t.toLowerCase().endsWith(".h")||t.toLowerCase().endsWith(".inc")||t.toLowerCase().endsWith(".bas"))&&yt(Zt(t))==e)return t;return null}};var eW=Yf(),tW=["#sidebar","#workspace","#emulator"],h0={sidebar:[100,0,0],editor:[0,100,0],emulator:[0,0,100]},Ut=null,Mi=null,mo=!1,li="workspace",Ju=null,dc=null,po=typeof window!="undefined"&&window.matchMedia?window.matchMedia("only screen and (max-width: 760px)"):null,KT=!1;function u0(){return po?po.matches:ds}function f0(n){Mi&&(Mi.destroy(),Mi=null),Mi=eW(tW,{sizes:n,minSize:mo?[0,0,0]:[0,250,250],onDrag:()=>{Ut.resizePlatform()},onDragEnd:()=>{!mo&&Ut.hasLocalStorage&&localStorage.setItem(dc,JSON.stringify(Mi.getSizes())),Ut.resizeWindows()}})}function eA(){Mi.setSizes(h0[li]||h0.editor)}function tA(n){li=h0[n]?n:"editor",$("#mobiletabs .mobiletab").removeClass("active"),$("#mobiletabs .mobiletab[data-tab='"+li+"']").addClass("active"),$("#sidebar,#workspace,#emulator").removeClass("active");var e=li==="sidebar"?"#sidebar":li==="emulator"?"#emulator":"#workspace";$(e).addClass("active"),mo&&Ut&&Ut.onTabChanged&&Ut.onTabChanged(li)}function p0(n){mo=n,typeof document!="undefined"&&$("body").toggleClass("tab-layout",n)}function ef(n){tA(n),!(!mo||!Mi)&&(eA(),setTimeout(()=>{li==="emulator"&&Ut.resizePlatform(),li==="editor"&&Ut.resizeWindows()},0))}function JT(){var n=u0();n!==mo&&(n?(Mi&&(Ju=Mi.getSizes()),p0(!0),f0(Ju||[0,55,45]),ef(li)):(p0(!1),$("#sidebar,#workspace,#emulator").removeClass("active"),Ut&&Ut.onTabChanged&&Ut.onTabChanged("emulator"),f0(Ju||[12,44,44]),Ut.resizePlatform(),Ut.resizeWindows()))}function nA(n){Ut=n;var e=Ut.getPlatformId();dc="workspace-split3-"+e,Ut.isEmbed&&(dc="embed-"+dc);var t;e.startsWith("vcs")?t=[0,50,50]:Ut.isEmbed||ds?t=[0,55,45]:t=[12,44,44];var r=Ut.hasLocalStorage&&localStorage.getItem(dc);if(r)try{t=JSON.parse(r)}catch(i){console.log(i)}u0()&&(Ju=t),p0(u0()),f0(t),mo?(eA(),tA(li)):$("#sidebar,#workspace,#emulator").removeClass("active"),KT||(KT=!0,$("#mobiletabs").on("click",".mobiletab",function(){ef($(this).attr("data-tab"))}),$("#sidebar").on("click","a",function(){ef("editor")}),po&&(po.addEventListener?po.addEventListener("change",JT):po.addListener&&po.addListener(JT)))}function rA(n,e,t){let r=null,i=256,s=0,o=e.listings,a=e.symbolAddrs?wf(e.symbolAddrs,n):null;if(o)for(let l in o){let c=o[l],d=c.assemblyfile||c.sourcefile,h=e.filename2path[l]||l;if(d==c.sourcefile&&(h=e.findWindowWithFilePrefix(l)),h&&e.isWindow(h)){let u=d&&d.findLineForOffset(n,t,a);if(u){let f=Math.abs(n-u.offset);f<i&&(r=h,i=f,s=u.line)}}}return r?{wndid:r,line:s}:null}var gs=o0(),he=vf(window.location.search||"?"),Oe,go,Et,P,re,N,en,lA,mc,pc=$("#controls_top"),gt,Pn,of,m0=!1,Os,Li,nf,$r,xa=vo(he.electron),tn=vo(he.embed),fc,hc,rf=!1,wa=!1,gc=null,cA=null,S0=!1;function is(){return $r}function Ci(){return re}function wn(){return Li}function Tl(){return lA}function nW(){return new Worker("./gen/worker/bundle.js")}var nr=(function(){try{let e="__some_random_key_you_are_not_going_to_use__";localStorage.setItem(e,e);var n=localStorage.getItem(e)==e;return localStorage.removeItem(e),n}catch(e){return!1}})(),g0=class{setLastPreset(e){nr&&!tn&&(Et&&Oe&&!xa?localStorage.setItem("__lastrepo_"+Oe,Et):localStorage.removeItem("__lastrepo_"+Oe),localStorage.setItem("__lastplatform",Oe),localStorage.setItem("__lastid_"+go,e))}unsetLastPreset(){nr&&!tn&&(delete he.file,localStorage.removeItem("__lastid_"+go))}getLastPreset(){return nr&&!tn&&localStorage.getItem("__lastid_"+go)}getLastPlatformID(){return nr&&!tn&&localStorage.getItem("__lastplatform")}getLastRepoID(e){return nr&&!tn&&e&&localStorage.getItem("__lastrepo_"+e)}shouldCompleteTour(){return nr&&!tn&&!localStorage.getItem("8bitworkshop.hello")}completedTour(){nr&&!tn&&localStorage.setItem("8bitworkshop.hello","true")}shouldWarnAboutPersistence(){return nr&&!tn&&!localStorage.getItem("8bitworkshop.persistwarn")}warnedAboutPersistence(){nr&&!tn&&localStorage.setItem("8bitworkshop.persistwarn","true")}},Zi=new g0;async function dA(n,e){if(xa){n&&an(`The desktop version keeps your files in the "8bitworkshop" directory, so browser storage permissions don't apply.`);return}if(tn){n&&an("Embedded pages can't be granted persistent storage. Open 8bitworkshop in its own tab to keep your edits.");return}var t=await _g();if(console.log("requestPersistPermission =",t),!!n&&!(t.persisted&&e)){if(!t.persisted&&e){if(!Zi.shouldWarnAboutPersistence())return;Zi.warnedAboutPersistence()}an(S1(t,!0))}}var iA=!1;async function rW(){if(!iA){iA=!0;var n=await _g();console.log("storageQuotaExceeded =",n),Re(v1(n))}}function iW(){return nf?nf.title||nf.name||re.mainPath||"ROM":re.mainPath||"ROM"}async function sW(){var n=new mh(Oe);return xa?(console.log("using electron with local filesystem",alternateLocalFilesystem),new ra(n,alternateLocalFilesystem)):he.localfs!=null?new ra(n,await OW(he.localfs)):new ra(n,new gh($r))}async function oW(){var n=await sW();re=new Oh(nW(),Oe,P,n),q1(()=>re),re.remoteTool=he.tool||null,N=new Ku($("#workspace")[0],re),re.callbackBuildResult=e=>{Xc(e)&&e.internal&&wo()&&zy("worker",e.internal,{tool:e.internal.tool,platform:e.internal.platform}),PW(e)},re.callbackBuildStatus=e=>{aW(e)},re.onFileChanged=(e,t)=>{var r=N.id2window[e];r&&(r instanceof un&&typeof t=="string"?r.setText(t):r instanceof ec&&t instanceof Uint8Array?r.setData(t):console.warn("onFileChanged: unknown view or data type"));var i=N.id2window["#asseteditor"];i&&i===N.getActive()&&i.refresh(!0)}}function aW(n){n?pc.addClass("is-busy"):pc.removeClass("is-busy"),$("#compile_spinner").css("visibility",n?"visible":"hidden")}function af(n,e){var t=document.createElement("li"),r=document.createElement("a");r.setAttribute("class","dropdown-item");var i=n.startsWith("#")?n:"#"+encodeURIComponent(n);return r.setAttribute("href",i),n==N.getActiveID()&&$(r).addClass("dropdown-item-checked"),r.appendChild(document.createTextNode(e)),t.appendChild(r),{li:t,a:r}}var O0=[];function Kl(n){O0.includes(n)||(O0.push(n),N.setCreateFunc("#headerview/"+n,()=>new hs(n)),va());var e="#headerview/"+n;window.location.hash!==e&&(window.location.hash=e.substring(1))}function va(){var n=$("#windowMenuList").empty(),e=!1;function t(l,c,d){e&&(n.append(document.createElement("hr")),e=!1);let{li:h,a:u}=af(l,c),f=jT(l);if(f&&u.setAttribute("title",f),n.append(h),d){var m=(O,S)=>{n.find("a").removeClass("dropdown-item-checked"),$(u).addClass("dropdown-item-checked")};N.setCreateFunc(l,d),N.setShowFunc(l,m),$(u).click(O=>{gc=l})}}function r(l){var h;var c=P.getToolForFilename(l);c=="dasm"&&l.endsWith(".h")&&_t().endsWith(".c")&&(c="cc65");var d=c&&((h=qt(c))==null?void 0:h.editorStyle);return new un(l,d)}function i(l){t(l,yt(l),()=>{var c=re.getFile(l);if(typeof c=="string")return r(l);if(c instanceof Uint8Array)return new ec(l,c)})}i(re.mainPath),re.iterateFiles((l,c)=>{c&&l!=re.mainPath&&i(l)}),e=!0;var s=re.getListings();if(s)for(var o in s){var a=s[o];(a.assemblyfile&&a.assemblyfile.text||a.sourcefile&&a.sourcefile.text||a.text)&&t(o,yt(o),l=>new uu(l))}for(let l of O0){let c="#headerview/"+l;N.setCreateFunc(c,()=>new hs(l)),t(c,yt(l),()=>new hs(l))}e=!0,P.disassemble&&P.saveState&&t("#disasm","Disassembly",()=>new Ri),P.readAddress&&t("#memory","Memory Browser",()=>new us),re.segments&&re.segments.length&&t("#memmap","Memory Map",()=>new mu),P.readVRAMAddress&&t("#vram","VRAM Browser",()=>new pu),P.startProbing&&(t("#memprobe","Memory Probe",()=>new Ou),t("#crtprobe","CRT Probe",()=>new bu),t("#probelog","Probe Log",()=>new yu),t("#scanlineio","Scanline I/O",()=>new Su),t("#symbols","Symbol Profiler",()=>new vu),t("#callgraph","Call Graph",()=>new Hu)),P.getDebugTree&&t("#debugtree","Debug Tree",()=>new Gu),Jh()&&t("#breakpoints","Breakpoints",()=>new wu),t("#asseteditor","Asset Editor",()=>new Bu),t("#help","Help",()=>new lc("#help"));for(let l of Yu)N.setCreateFunc("#help/"+l.id,()=>new lc(l.id))}function lW(n,e){if(e){var t=he.highlight.split(","),r=parseInt(t[0])-1,i=parseInt(t[1])-1,s=N.createOrShow(n);s.highlightLines(r,i)}}async function sA(n){var e=re.getFile(n);typeof e=="string"&&await re.loadFileDependencies(e),va(),N.createOrShow(n),re.setMainFile(n),lW(n,he.highlight)}async function cW(n){re.mainPath=n,Yt.setContextFn(()=>Oe+"/"+re.mainPath),Yt.load(),Zi.setLastPreset(n);var e=await re.loadFiles([n]);if(e&&e.length)await sA(n);else{var t=P.getToolForFilename(n),r=await dW(n);re.filedata[n]=r||`
`,await sA(n),he.newfile?!r&&!t?Re('No build tool for "'+n+'" on this platform; project will not build.'):r?dA(!0,!0):an("No skeleton file for "+t+" on this platform; using blank file."):an('Could not find file "'+n+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete he.newfile,mf()}}function v0(n){if(n=="/")he={repo:"/"};else if(n.indexOf("://")>=0){var e=Ql(n);e&&(he={repo:e.repopath})}else he.platform=Oe,he.file=n;no()}async function dW(n){var e=Gf(P.getToolForFilename(n));try{return await $.get("presets/"+Nt(Oe)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function w0(n){return n.indexOf(" ")>=0?(Re("No spaces in filenames, please."),!1):!0}async function hW(n){var e=Nt(Oe),t={},r=[];for(var i of n){var s=P.getToolForFilename("test"+i);t[s]||(t[s]=[],r.push(s)),t[s].push(i)}var o=r.map(d=>$.ajax({url:"presets/"+e+"/skeleton."+Gf(d),type:"HEAD"}).then(()=>d,()=>null)),a=await Promise.all(o),l=[];for(var c of a)c!=null&&l.push({tool:c,extensions:t[c]});return l}async function uW(n){var e=await hW(P.getDefaultExtensions()),t,r;return e.length===0?(t=P.getDefaultExtensions(),r=t.join(" ")):(t=e.reduce((i,s)=>i.concat(s.extensions),[]),r=e.map(i=>i.extensions.join(" ")).join("<br>")),bootbox.prompt({title:"Enter the name of your new main source file.<br><br><span class='dialog-help'>"+r+"</span>",placeholder:"newfile"+t[0],callback:i=>{if(i&&i.trim().length>0){if(!w0(i))return;i.indexOf(".")<0&&(i+=t[0]);var s=i;he.newfile="1",v0(s)}}}),!0}function fW(n){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{pW(t.files)}),e.click()}function pW(n){console.log(n);var e=0;function t(){var r=n[e++];if(!r)console.log("Done uploading",e),e>2?(an("Files uploaded."),setTimeout(Oc,1e3)):(he.file=n[0].name,bootbox.confirm({message:"Open '"+gs.sanitize(he.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?no():setTimeout(Oc,1e3)}}));else{var i=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);vc(i,l)||(l=Sc(l).replace(`\r
`,`
`)),N.updateFile(i,l),console.log("Uploaded "+i+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}n&&t()}async function mW(n){var e=window.showDirectoryPicker;e||Re("This browser can't open local files on your computer, yet. Try Chrome.");var t=await e(),r=t.name,i="__localfs__"+r,s={handle:t},o=y0.createInstance({name:i,version:2});await o.setItem(i,s),he={localfs:r},no(!0)}async function gW(n){return new Promise((e,t)=>{bootbox.prompt(gs.sanitize(n),r=>{e(r)})})}async function OW(n){let e={mode:"readwrite"};var t="__localfs__"+n,r=y0.createInstance({name:t,version:2}),i=await r.getItem(t),s=i.handle;console.log(i,s);var o=await s.queryPermission(e);if(console.log(o),o!=="granted"&&(await gW("Request permissions to access filesystem?"),o=await s.requestPermission(e)),o!=="granted"){Re("Could not get permission to access filesystem.");return}let a={};return{getFileData:async l=>{console.log("getFileData",l);let d=await(await s.getFileHandle(l,{create:!1})).getFile();return wc(l,new Uint8Array(await d.arrayBuffer()))},setFileData:async(l,c)=>{a[l]=Date.now();let h=await(await s.getFileHandle(l,{create:!0})).createWritable();await h.write(c),await h.close()},onFileSystemUpdate:l=>{if(typeof window.FileSystemObserver=="undefined")return;new window.FileSystemObserver((d,h)=>{for(let u of d)if(u.changedHandle){let f=u.changedHandle.name;if(Date.now()-(a[f]||0)<2e3)continue;l(f)}}).observe(s,{recursive:!0})}}}function _t(){return yt(re.mainPath)}function Z1(){return yt(N.getActiveID())}function bW(n){var e=N.getActive(),t=N.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var i="presets/"+Nt(Oe)+"/"+t;Sf(i,s=>{if(s==null){Et?Re("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):Re("Can only revert built-in examples.");return}bootbox.confirm("Reset '"+gs.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),re.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else Re("Cannot revert the active window. Please choose a text file.")}function yW(n){var e=N.getActive();if(e&&e.getPath){var t=N.getActiveID();bootbox.confirm("Delete '"+gs.sanitize(t)+"'?",r=>{r&&$r.removeItem(t).then(()=>{he.file==t?(Zi.unsetLastPreset(),no()):(Oc(),an("Deleted "+t))})})}else Re("Cannot delete the active window.")}function SW(n){var e=N.getActive();if(e&&e.getPath&&re.getFile(e.getPath())){var t=N.getActiveID();bootbox.prompt({title:"Rename '"+gs.sanitize(t)+"' to?",value:t,callback:r=>{var i=re.getFile(e.getPath());if(r&&r!=t&&i){if(!w0(r))return;$r.removeItem(t).then(()=>$r.setItem(r,i)).then(()=>{Oc(),alert("Renamed "+t+" to "+r),t==re.mainPath&&v0(r)})}}})}else Re("Cannot rename the active window.")}function vW(n){let e={},t,r=P.getPresets?P.getPresets():[];for(var i=0;i<r.length;i++){var s=r[i],o=s.chapter?s.chapter+". "+s.name:s.name,a=s.id==re.mainPath;s.category?t=$("<optgroup />").attr("label","Examples: "+s.category).appendTo(n):t||(t=$("<optgroup />").attr("label","Examples").appendTo(n)),t.append($("<option />").val(s.id).text(o).attr("selected",a?"selected":null)),a&&(nf=s),e[s.id]=o}return e}function wW(n){if(nr&&!xa){var e=0,t=Js();if(t){let i=$("<optgroup />").attr("label","Repositories").appendTo(n);for(let s in t){var r=t[s];r.platform_id&&Nt(r.platform_id)==Nt(Oe)&&i.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function oA(n,e,t,r){let i=await $r.keys();i||(i=[]);let s;for(var o=0;o<i.length;o++){let a=i[o];if(a.startsWith(t)&&!r[a]){s||(s=$("<optgroup />").attr("label",e).appendTo(n));let l=a.substring(t.length);s.append($("<option />").val(a).text(l).attr("selected",a==re.mainPath?"selected":null))}}}function aA(n){n.css("visibility","visible");var e=re.mainPath;n.val()!=e&&n.append($("<option />").val(e).text(e).attr("selected","selected"))}async function Oc(){var n=$("#preset_select").empty();if(Et)n.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(yt(Et)+"/").show(),await oA(n,Et,"",{}),aA(n);else{wW(n);var e=vW(n);await oA(n,"Local Files","",e),aA(n)}n.off("change").change(function(t){v0($(this).val().toString())})}function xW(n){var e=$("<p/>");if(n.path!=null){var t=n.line?n.label?`(${n.path} @ ${n.label})`:`(${n.path}:${n.line})`:`(${n.path})`,r=$("<a/>").text(t),i=n.path;i==_t()&&(i=re.mainPath),N.isWindow(i)&&r.click(s=>{var o=N.createOrShow(i);o instanceof un&&o.navigateToLine(n.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(n.msg)),e}function hA(){$("#error_alert").hide(),S0=!1}function x0(n,e){var t=$("#error_alert_msg").empty();for(var r of n.slice(0,10))t.append(xW(r));$("#error_alert").show(),S0=e;var i=n.find(o=>o.path!=null),s;i&&N.isWindow(i.path==_t()?re.mainPath:i.path)&&(s=()=>{$W(i)})}function uA(n,e){if(e!=null){var t={msg:e,line:0};n instanceof xo&&n.$loc&&(t=Object.create(n.$loc),t.msg=e,console.log(t)),x0([t],!0)}}var uc=null;async function PW(n){if("uppercaseOnly"in n&&$Q(n.uppercaseOnly),"errors"in n&&n.errors.length>0)pc.addClass("has-errors"),N.setErrors(n.errors),va(),x0(My(n.errors)?n.errors.filter(t=>t.severity!=="warning"):n.errors,!1);else{if(pc.removeClass("has-errors"),N.setErrors(null),hA(),n==null||"unchanged"in n&&n.unchanged){uc&&N.setErrors(uc);return}if(!("output"in n))return;uc=n.warnings&&n.warnings.length>0?n.warnings:null,uc&&N.setErrors(uc),P.debugSymbols=new I0(n.symbolmap,n.debuginfo,n.symbolsizes),lA=n.params;var e=n.output;if(e!=null)if(Li&&k0(e,Li))console.log("unchanged, skipping loadROM");else try{Pa(),CA(),await P.loadROM(iW(),e,n.origin),Li=e,of||(Yt.getEnabled().length==0||!ff())&&ci(),d8()}catch(t){console.log(t),pc.addClass("has-errors"),uA(t,t+""),Li=null,va();return}va(),N.refresh(!1),N.refreshErrors()}}async function kW(){if(P.loadBIOS){var n=Oe+".rom",e=await $r.getItem(n);e instanceof Uint8Array?(console.log("loading BIOS",n,e.length+" bytes"),P.loadBIOS(n,e)):console.log("BIOS file must be binary")}}function hf(){var n=$("#mem_info");n.hide(),fc=null}function bc(n){if(Pf(P)){var e=$("#mem_info"),t=$("#mem_info_msg"),r=P.getDebugCategories();r&&!hc&&(hc=r[0]);var i=n&&P.getDebugInfo(hc,n);if(typeof i=="string"){var s=fc?$0(fc,i):i;e.show(),t.html(s);var o=$('<div class="mem_info_links">'),a=c=>{var d=$("<a>"+c+"</a>");c==hc&&d.addClass("selected"),d.click(h=>{hc=c,fc=null,bc(en)}),o.append(d),o.append("<span> </span>")};for(var l of r)a(l);t.append("<br>"),t.append(o),fc=i}else hf()}}function uf(n,e){$("#debug_bar, #run_bar").find("button").removeClass("btn_active").removeClass("btn_stopped"),$("#dbg_"+n).addClass("btn_"+e),Wn()}function $W(n){var e=n.path==_t()?re.mainPath:n.path;if(N.isWindow(e)){var t=N.createOrShow(e);t instanceof un&&t.navigateToLine(n.line)}}function fA(){var n=N.getActive();return n instanceof Ri||n instanceof us?n:null}function QW(n){var e=xu(n,P&&P.debugSymbols&&P.debugSymbols.symbolmap);return e?e.addr:-1}function pA(){var n=fA();if(!n)return!1;var e=n.getCursorPC?n.getCursorPC():-1;return bootbox.prompt({title:"Go to Address",placeholder:"address in hex",value:e>=0?_e(e,4):"",callback:t=>{if(t){var r=QW(t);if(isNaN(r)||r<0){Re("Can't find address or symbol: "+gs.sanitize(t));return}n.goToAddress(r)}}}),!0}function TW(){var n=[];return P&&Oo()&&(n.push({key:"F1",label:"Help",fn:EA}),P.isRunning&&n.push({key:"F8",label:P.isRunning()?"Pause":"Resume",fn:bA}),P.setupDebug&&P.runEval&&n.push({key:"mod+shift+d",label:"Reset & Break",fn:TA}),Os||(n.push({key:"mod+shift+r",label:"Reset & Run",fn:QA}),n.push({key:"mod+shift+f",label:"Search",fn:Vb})),fA()&&n.push({key:"mod+shift+g",label:"Go To Address",fn:pA})),n}function AW(){var n=[];if(!Os||!P||!Oo())return n;var e=P.isRunning&&P.isRunning();return P.step&&n.push({key:"mod+shift+l",label:"Step",fn:yA}),P.stepOver&&n.push({key:"mod+shift+k",label:"Step Over",fn:SA}),P.runUntilReturn&&n.push({key:"mod+shift+i",label:"Step Out",fn:kA}),P.stepBack&&n.push({key:"mod+shift+j",label:"Step Back",fn:$A}),P.runToVsync&&n.push({key:"mod+shift+x",label:"Next Frame",fn:vA}),P.restartAtPC&&n.push({key:"mod+shift+a",label:"Restart at Cursor",fn:xA}),(P.runEval||P.runToPC)&&!Oe.startsWith("verilog")&&n.push({key:"mod+shift+y",label:"Run To Line",fn:PA}),n}function Oo(){return P&&Li!=null}function rr(){return Oo()?!0:(Re("Can't do this until build successfully completes."),!1)}function mA(n){return rA(n,{listings:re.getListings(),filename2path:re.filename2path,isWindow:e=>N.isWindow(e),findWindowWithFilePrefix:e=>N.findWindowWithFilePrefix(e),symbolAddrs:P.debugSymbols&&P.debugSymbols.symbolAddrs},ga)}var lf=!1;function CW(n){if(!lf&&(gc&&gc.startsWith("#")||["toline","restart","tovsync","stepover"].includes(cA))||!P.disassemble)return;let e=n.c?n.c.EPC||n.c.PC:0;if(lf){let r=jl().find(i=>i.bp.enabled&&i.bp.type=="source"&&i.pc==e&&N.isWindow(i.bp.file));if(r){let i=N.createOrShow(r.bp.file,!0);i instanceof un&&i.highlightLines(r.bp.line-1,r.bp.line-1);return}}let t=mA(e);N.createOrShow(t?t.wndid:"#disasm",!0)}function DQ(n){if(!P.disassemble)return;let e=mA(n),t=N.createOrShow(e?e.wndid:"#disasm",!0);e&&t instanceof un?t.highlightLines(e.line-1,e.line-1):t instanceof Ri&&t.goToAddress(n)}function sf(n){Os=!0,en=n,bc(n),CW(n),N.refresh(!0),rf=!0}function gA(n){P.setupDebug&&(P.setupDebug((e,t)=>{sf(e),uf(n||"pause","stopped"),t&&x0([{msg:"STOPPED: "+t,line:0}],!0)}),cA=n)}function ai(n){rr()&&(lf=!1,Os=!0,P0(),gA(n),n&&uf(n,"active"),Wn())}function Di(){Os=!0,P&&P.isRunning()&&(P.pause(),console.log("Paused")),uf("pause","stopped")}function OA(){rr()&&(Pa(),Di(),of=!0,Wn())}function bA(){rr()&&(P.isRunning&&P.isRunning()?OA():cf())}function ci(){P.isRunning()||(P.resume(),console.log("Resumed")),uf("go","active"),S0&&hA()}function cf(){if(rr()){if(Yt.getEnabled().length>0&&ff()){P.isRunning()||N.refresh(!1),of=!1,gc=null;return}Pa(),Os=!1,P.isRunning()||N.refresh(!1),ci(),of=!1,gc=null,Wn()}}function yA(){rr()&&(ai("step"),P.step())}function SA(){if(rr()){if(ai("stepover"),P.hasCustomStepOver&&P.hasCustomStepOver()){P.stepOver();return}if(N.getActiveID()!="#disasm"){var n=_W();if(n.size>0&&EW(n))return}P.stepOver?P.stepOver():P.step()}}var tf=null;function _W(){var n=re.getListings();if(!tf||tf.listings!==n){var e=new Set;if(n)for(var t in n){var r=n[t].sourcefile;if(r)for(var i of r.lines)i.offset>=0&&e.add(i.offset)}tf={listings:n,pcs:e}}return tf.pcs}function EW(n){var o;if(!P.runEval||!en||!en.c)return!1;var e=en.c.EPC||en.c.PC,t=P.getSP?P.getSP():null,r=!1,i=(o=P.readAddress)==null?void 0:o.bind(P);if(i&&P.disassemble){var s=P.disassemble(e,i);r=!!(s&&s.iscall)}return P.runEval(a=>{var l=a.EPC||a.PC;return l==e||r&&t!=null&&a.SP<t?!1:n.has(l)}),!0}function vA(){rr()&&(ai("tovsync"),P.runToVsync())}function wA(){var n=N.getActive();return n&&n.getCursorPC&&n.getCursorPC()}function ff(){if(!rr())return!1;let n=jl().filter(t=>t.bp.enabled&&!t.error&&t.pc>=0);if(n.length==0)return!1;en=null,hf(),N.refresh(!1),ai("toline"),lf=!0;let e=new Map;for(let t of n)e.set(t.pc,t.condFn||null);if(P.runEvalAtPC)P.runEvalAtPC(e);else if(P.runToPC)n.some(t=>t.condFn)&&console.log("breakpoints: conditions not supported on this platform"),P.runToPC([...e.keys()]);else if(P.runEval)P.runEval(t=>{let r=t.EPC!=null?t.EPC:t.PC,i=e.get(r);return i!==void 0&&(i?i(t):!0)});else return!1;return!0}function RW(){for(var n in N.id2window){var e=N.id2window[n];if(e instanceof un)try{e.syncBreakpoints()}catch(t){}}}Yt.subscribe(()=>{RW(),N.getActiveID()=="#breakpoints"&&N.refresh(!1),Oo()&&P.isRunning()&&(Yt.getEnabled().length>0?ff():Pa())});function Jl(n){if(rr()&&!(n.length===0||n.some(e=>!(e>=0))))if(en=null,hf(),N.refresh(!1),ai("toline"),console.log("runToPC",n.map(e=>e.toString(16)).join(" ")),P.runToPC)P.runToPC(n);else{let e=new Set(n);P.runEval(t=>e.has(t.PC))}}function xA(){P.restartAtPC(wA())?cf():Re("Could not restart program at selected line.")}function PA(){Jl([wA()])}function kA(){rr()&&(ai("stepout"),P.runUntilReturn())}function $A(){rr()&&(ai("stepback"),P.stepBack())}function Pa(){en=null,P.clearDebug&&P.clearDebug(),gA(),bc()}function b0(){P.reset(),CA(),N.resetViews()}function QA(){rr()&&(Pa(),b0(),Yt.getEnabled().length>0&&ff()?Os=!0:(Os=!1,N.refresh(!1),ci()),Wn())}function TA(){if(rr()){var n=wa;P0(),P.setupDebug&&P.runEval?(Pa(),ci(),b0(),ai("restart"),P.runEval(e=>!0)):(b0(),ci()),n&&_A()}}function AA(){P.isRunning()?(N.tick(),rf=!1):rf||(N.tick(),rf=!0),setTimeout(AA,100)}function pf(n){P.setFrameRate(n),n>.01?$("#fps_label").text(n.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/n))}function MW(){var n=P.getFrameRate();n=n/2,n>1e-5&&pf(n)}function LW(){var n=P.getFrameRate();n=Math.min(60,n*2),pf(n)}function DW(){pf(60/65536)}function ZW(){ci(),pf(60)}function IW(){N.refresh(!1);var n=N.getActive();if(n.getSourceFile&&n.setTimingResult){var e=P.newCodeAnalyzer();e.showLoopTimingForPC(0),n.setTimingResult(e)}}function P0(){wa&&(P.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),hf(),wa=!1)}function CA(){wa&&Pn.reset()}function _A(){Pn.reset(),P.setRecorder(Pn),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),wa=!0}function XW(){wa?P0():_A(),Wn()}function zW(){var n=!un.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",n);var e=N.getActive();e instanceof un?e.setTracingEnabled(n):un.tracingEnabled=n}function Ur(n,e,t){var r=N.getActive();r&&r.insertLinesBefore?bootbox.prompt({title:"Add "+gs.sanitize(n)+" File to Project",value:"filename"+gs.sanitize(e),callback:i=>{if(i&&i.trim().length>0){if(!w0(i))return;var s=i,o=`
`+t(i)+`
`;re.loadFiles([s]).then(a=>{a&&a.length?Re(i+" already exists; including anyway"):re.updateFile(s,`
`),r.insertLinesBefore(o),va()})}}}):Re("Can't insert text in this window -- switch back to main file")}function WW(){var n=_t(),e=P.getToolForFilename(n);n.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"||e=="oscar64"?Ur("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?Ur("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?Ur("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?Ur("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?Ur("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?Ur("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?Ur("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?Ur("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?Ur("Include",".dg",t=>'%% #include "'+t+'"'):Re("Can't add include file to this project type ("+e+")")}function NW(){var n=_t(),e=P.getToolForFilename(n);n.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Ur("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):n.endsWith("asm")||n.endsWith(".s")||e=="ca65"||e=="lwasm"?Ur("Linked ASM",".inc",t=>';#link "'+t+'"'):Re("Can't add linked file to this project type ("+e+")")}function BW(){if(gt=new Wi($("#toolbar")[0],null),gt.grp.prop("id","run_bar"),gt.add("mod+shift+r","Reset","glyphicon-refresh",QA).prop("id","dbg_reset"),gt.add("mod+shift+h","Pause","glyphicon-pause",OA).prop("id","dbg_pause"),gt.add("mod+shift+g","Go To Address","",n=>{pA()||cf()}),gt.add("mod+shift+g","Resume","glyphicon-play",cf).prop("id","dbg_go"),gt.add("F8","Pause/Resume","",bA),gt.add("F1","Help","",EA),P.restartAtPC&&gt.add("mod+shift+a","Restart at Cursor","glyphicon-play-circle",xA).prop("id","dbg_restartatline"),gt.newGroup(),gt.grp.prop("id","debug_bar"),P.runEval&&gt.add("mod+shift+d","Reset and Debug","glyphicon-fast-backward",TA).prop("id","dbg_restart"),P.stepBack&&gt.add("mod+shift+j","Step Backwards","glyphicon-step-backward",$A).prop("id","dbg_stepback"),P.step&&gt.add("mod+shift+l","Single Step","glyphicon-step-forward",yA).prop("id","dbg_step"),P.stepOver&&gt.add("mod+shift+k","Step Over","glyphicon-hand-right",SA).prop("id","dbg_stepover"),P.runUntilReturn&&gt.add("mod+shift+i","Step Out of Subroutine","glyphicon-hand-up",kA).prop("id","dbg_stepout"),P.runToVsync&&gt.add("mod+shift+x","Next Frame/Interrupt","glyphicon-forward",vA).prop("id","dbg_tovsync"),(P.runEval||P.runToPC)&&!Oe.startsWith("verilog")&&gt.add("mod+shift+y","Run To Line","glyphicon-save",PA).prop("id","dbg_toline"),gt.newGroup(),gt.grp.prop("id","xtra_bar"),gt.add("mod+shift+f","Search","glyphicon-search",Vb).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(uW),$("#item_upload_file").click(fW),$("#item_open_directory").click(mW),$("#item_github_login").click(I1),$("#item_github_logout").click(X1),$("#item_github_import").click(z1),$("#item_github_publish").click(W1),$("#item_github_push").click(N1),$("#item_github_pull").click(B1),$("#item_repo_delete").click(F1),$("#item_share_file").click(T1),$("#item_reset_file").click(bW),$("#item_rename_file").click(SW),$("#item_delete_file").click(yW),$("#item_download_rom").click(C1),$("#item_download_file").click(_1),$("#item_download_zip").click(R1),P.getDebugSymbolFile?$("#item_download_sym").click(M1):$("#item_download_sym").hide(),$("#item_download_allzip").click(L1),$("#item_record_video").click(D1),Lg()?$("#item_export_cassette").click(A1):$("#item_export_cassette").hide(),P.setFrameRate&&P.getFrameRate&&($("#dbg_slower").click(MW),$("#dbg_faster").click(LW),$("#dbg_slowest").click(DW),$("#dbg_fastest").click(ZW)),$("#item_addfile_include").click(WW),$("#item_addfile_link").click(NW),$("#item_request_persist").click(()=>dA(!0,!1)),$("#item_settings").click(g1),AA(),P.newCodeAnalyzer&&gt.add(null,"Analyze CPU Timing","glyphicon-time",IW),P.startProbing&&gt.add(null,"Highlight Executed Lines","glyphicon-fire",zW).prop("id","dbg_tracelines"),P.setRecorder&&P.advance&&YW(),P.showHelp){let{li:n,a:e}=af("help__"+Oe,mc+" Info");$("#help_menu").append(n),$(e).click(t=>{t.preventDefault(),window.open(P.showHelp(),"_8bws_help")})}FW();{let{li:n}=af("#help","IDE Help");$("#help_menu").prepend(n)}$("#item_tool_versions").click(VW)}function EA(){if(N){var n=sy(),e=N.getActive()instanceof un,t=n||YT(N.getActiveID(),e),r="#help/"+t;window.location.hash===r?N.createOrShow(r):window.location.hash=r}}function VW(){let n=d=>String(d==null?"":d).replace(/[&<>"]/g,h=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[h]),e=Lr[Oe]||Lr[Nt(Oe)]||Lr[Mr(Oe)],t=e&&e.arch||"\u2014",r=new Set([".a"]);for(let d in Qo)for(let h of Qo[d].extensions||[])r.add(h);let i={},s=[],o=(d,h)=>{d&&(i[d]||(i[d]=[],s.push(d)),h&&i[d].indexOf(h)<0&&i[d].push(h))};if(P.getDefaultExtensions)for(let d of r){let h=P.getToolForFilename("test"+d),u=h&&qt(h);(u&&(u.extensions||[]).indexOf(d)>=0||d===".a"&&h==="dasm")&&o(h,d)}let a=_t();if(a){let d=P.getToolForFilename(a),h=a.lastIndexOf(".");o(d,h>=0?a.substring(h):"")}s.sort((d,h)=>{var u,f;return(((u=qt(d))==null?void 0:u.name)||d).localeCompare(((f=qt(h))==null?void 0:f.name)||h)});let l=`
<table class="help">
<tr><th>Architecture</th><td>${n(t)}</td></tr>
${e&&e.cfgfile?`<tr><th>Default config</th><td>${n(e.cfgfile)}</td></tr>`:""}
${e&&e.libargs&&e.libargs.length?`<tr><th>Default libraries</th><td>${n(e.libargs.join(" "))}</td></tr>`:""}
${e&&e.define&&e.define.length?`<tr><th>Defines</th><td>${n(e.define.join(" "))}</td></tr>`:""}
</table>`,c=s.map(d=>{let h=qt(d),u=_y(h),f=h&&h.kind||"\u2014",m=i[d].length?i[d].map(S=>`<code>${n(S)}</code>`).join(" "):"\u2014",O=h&&h.name||d;return`<tr><td>${n(O)}</td><td>${n(f)}</td><td>${n(u)}</td><td>${m}</td></tr>`}).join(`
`);bootbox.dialog({title:"Toolchain Info",onEscape:!0,buttons:{docs:{label:"Full reference",className:"btn-link",callback:()=>{window.location.hash="#help/toolchains"}},ok:{label:"Close",className:"btn-primary"}},message:`
<div class="dialog-scroll">
<h5 class="dialog-title">${n(mc)} <small>${n(Oe)}</small></h5>
${l}
<h5 class="dialog-title">Tools for source files</h5>
<table class="help">
<tr><th>Tool</th><th>Kind</th><th>Version</th><th>Extensions</th></tr>
${c}
</table>
</div>`})}function FW(){let n=P.getToolForFilename(_t());if(!n)return;let e=qt(n);if(!e)return;let t=e.version?" ("+e.version+")":"",r=(s,o,a)=>{let{li:l,a:c}=af(s,o);$("#help_menu").append(l),$(c).click(d=>{d.preventDefault(),window.open(a,"_8bws_help")})};e.helpURL&&r("help__"+n,e.name+" Help"+t,e.helpURL);let i=Ay(n,Oe);i&&r("help__"+n+"__"+Oe,e.name+" Help for "+mc,i)}function YW(){var n=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");P.advanceFrameClock||$("#clockdiv").hide();var i=()=>{t.text(Pn.lastSeekFrame+""),r.text(Pn.lastSeekStep+"")},s=l=>{Di();var c=parseInt(n.val().toString()),d=parseInt(e.val().toString());Pn.loadFrame(c,d)>=0&&(e.attr("min",0),e.attr("max",Pn.lastStepCount),i(),sf(P.saveState()))},o=l=>{Di(),Pn.loadFrame(l)>=0&&(n.val(l),i(),sf(P.saveState()))},a=l=>{Di();var c=parseInt(n.val().toString());Pn.loadFrame(c,l)>=0&&(e.val(l),i(),sf(P.saveState()))};Pn.callbackStateChanged=()=>{n.attr("min",0),n.attr("max",Pn.numFrames()),n.val(Pn.currentFrame()),e.val(Pn.currentStep()),i(),bc(P.saveState())},n.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(Pn.numFrames())}),$("#replay_back").click(()=>{o(parseInt(n.val().toString())-1)}),$("#replay_fwd").click(()=>{o(parseInt(n.val().toString())+1)}),$("#clock_back").click(()=>{a(parseInt(e.val().toString())-1)}),$("#clock_fwd").click(()=>{a(parseInt(e.val().toString())+1)}),$("#replay_bar").show(),gt.add("mod+shift+e","Start/Stop Replay Recording","glyphicon-record",XW).prop("id","dbg_record")}async function jW(){if(Zi.shouldCompleteTour()){await hr("lib/bootstrap-tourist.js");var n=Oe.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+Oe+'</b>" platform. You can choose a different one from the menu.'},{element:"#preset_select",title:"Project Selector",content:"You can choose different code examples, create your own files, or import projects from GitHub."},{element:"#workspace",title:"Code Editor",content:n?"Type your 6502 assembly code into the editor, and it'll be assembled in real-time.":"Type your source code into the editor, and it'll be compiled in real-time."},{element:"#emulator",placement:"left",title:"Emulator",content:"We'll load your compiled code into the emulator whenever you make changes."},{element:"#debug_bar",placement:"bottom",title:"Debug Tools",content:"Use these buttons to set breakpoints, single step through code, pause/resume, and use debugging tools."},{element:"#dropdownMenuButton",title:"Main Menu",content:"Click the menu to create new files, download your code, or share your work with others."},{element:"#sidebar",title:"Sidebar",content:"Pull right to expose the sidebar. It lets you switch between source files, view assembly listings, and use other tools like Disassembler, Memory Browser, and Asset Editor."}];wo()&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Cookie Consent",content:'Before we start, we should tell you that this website stores persistent data in your browser. Review our <a href="/privacy.html" target="_new">privacy policy</a>.'}),e.push({element:"#booksMenuButton",placement:"left",title:"Books",content:"Get some books that explain how to program all of this stuff, and write some games!"})),xa&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Developer Analytics",content:"BTW, we send stack traces to 8bitworkshop.com when exceptions are thrown. Hope that's ok."}),e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Welcome to 8bitworkshop Desktop!",content:'The directory "~/8bitworkshop" contains all of your file edits and built ROM images. You can create new projects under the platform directories (e.g. "c64/myproject")'}));var t=new Tour({autoscroll:!1,steps:e,onEnd:()=>{Zi.completedTour()}});setTimeout(()=>{t.start()},2500)}}function df(n){var e=(n.message||n.error||n)+"";if(e.indexOf("QuotaExceededError")>=0)rW();else{var t=n.error||n.reason;t!=null&&t instanceof xo?RA(t):wo()&&Xy(e,t,{platform:Oe,window:N?N.getActiveID():"",errors:N.lasterrors||[]})}}function RA(n){console.log("haltEmulation"),Di(),c8(n)}function UW(){window.addEventListener("error",df),window.addEventListener("unhandledrejection",df)}function qW(){window.removeEventListener("error",df),window.removeEventListener("unhandledrejection",df)}function no(n,e){e&&(he=e),qW(),n?window.location.replace("?"+$.param(he)):window.location.href="?"+$.param(he)}function mf(){Oe&&(he.platform=Oe),delete he[""],history.replaceState({},"","?"+$.param(he)+window.location.hash)}function MA(n){if(!n||n==="#")return null;var e=decodeURIComponent(n.substring(1));return e.startsWith("asseteditor/")?"#asseteditor":e.startsWith("headerview/")?(Kl(e.substring(11)),"#"+e):N.isWindow("#"+e)?"#"+e:N.isWindow(e)?e:null}function GW(){function n(){let e=window.location.hash,t=e&&e!=="#"?MA(e):null;if(t)t!==N.getActiveID()&&N.createOrShow(t);else{let r=re.mainPath;r&&N.getActiveID()!=r&&N.createOrShow(r)}}window.addEventListener("popstate",n),window.addEventListener("hashchange",n)}function HW(n){if(n&&n!=="#"){let e=MA(n)||re.mainPath;history.replaceState(null,"",n),N.createOrShow(e)}}function KW(){var n=!1;document.addEventListener("visibilitychange",()=>{document.visibilityState=="hidden"&&P&&P.isRunning()?(Di(),n=!0):document.visibilityState=="visible"&&n&&(ci(),n=!1)}),$(window).on("focus",()=>{n&&(ci(),n=!1)}),$(window).on("blur",()=>{P&&P.isRunning()&&(Di(),n=!0)}),$(window).on("orientationchange",()=>{P&&P.resize&&setTimeout(P.resize.bind(P),200)})}function JW(n){n.empty();for(var e of Y0[Mr(Oe)]||[]){var t=$('<span class="control-def"/>').appendTo(n);for(var r of e.keys){var i=$('<span class="control-key"/>').toggleClass("small",/[a-z]/i.test(r)).appendTo(t);r.indexOf(`
`)>=0?(i.css({display:"inline-block","font-family":"monospace"}),r.split(`
`).forEach((s,o)=>{o&&i.append("<br>"),i.append(document.createTextNode(s))})):i.text(r)}t.append(document.createTextNode(" "+e.action)),n.append(" ")}return n.children().length>0}function e8(){let n=$("#emuaudiohint");if(!n.length)return;let e=!1,t=()=>{L0()?(e=!0,n.show()):(n.hide(),e&&r())},r=D0(t);t()}function t8(){e8();var n=$("#emucontrols");if(JW(n)){Oe.endsWith(".mame")&&n.show();var e=$("#emulator").find("canvas");e&&(e.on("focus",()=>{P.isRunning()&&(n.fadeIn(200),P.resume())}),e.on("blur",()=>{n.fadeOut(200)}))}}async function n8(){if(!xf[Oe])throw Error("Invalid platform '"+Oe+"'.");let n=$("#emuscreen")[0],e=vf(he.options||"");P=new xf[Oe](n,e),a8(),Pn=new W0(P);let t=P.getPresets?P.getPresets():[];if(!he.file){var r=Zi.getLastPreset(),i=r||(Et?null:t[0]&&t[0].id);he.file=i||"DEFAULT",i||Re("There is no default main file for this project. Try selecting one from the pulldown.")}Oe=="vcs"&&he.file.startsWith("examples/")&&!he.file.endsWith(".a")&&(he.file+=".a");var s=window.location.hash;mf(),UW(),R0(RA),ky(),await P.start(),await kW(),await oW(),await cW(he.file),HW(s),GW(),P.sourceFileFetch=o=>re.filedata[o],BW(),!ds&&$("#shortcuts_bar").length&&(G0($("#shortcuts_bar")[0]),J0(TW),ey(()=>{var o=N.id2div[N.activeid],a=o&&document.activeElement&&o.contains(document.activeElement),l=N.getActive(),c=a&&l&&l.getShortcuts?l.getShortcuts():[];return[...AW(),...c]}),$(document).on("focusin focusout",()=>Wn()),Wn(),Cc(na().showStatusBar)),KW(),t8(),tn?r8():(Oc(),i8(),jW()),LA()}function r8(){$("#dropdownMenuButton").hide(),$("#platformsMenuButton").hide(),$("#booksMenuButton").hide()}function i8(){var n=V0(Oe);for(var e of $c){var t=$('<a class="dropdown-item dropdown-link">').attr({href:e.url,target:"_book_"+e.id}).toggleClass("book-active",e===n).append($("<img>").attr("src","images/"+e.image)).append("&nbsp;&nbsp;",$('<span class="book-title">').text(e.title));$("#booksMenuList").append($("<li>").append(t))}}function LA(){setTimeout(()=>{$("#controls_dynamic").css("visibility","inherit")},250)}function s8(n){let e=vo(he.ignore)||tn;Je(!0),Sf(n,async t=>{if(t){var r=yt(n);console.log("Importing "+t.length+" bytes as "+r);try{var i=await $r.getItem(r);Je(!1),i!=null&&e||(i==null||confirm("Replace existing file '"+r+"'?"))&&await $r.setItem(r,t),delete he.importURL,he.file=r,mf(),ZA()}finally{Je(!1)}}else Re("Could not load source code from URL: "+n),Je(!1)},"text")}async function o8(){var n=vo(he.ignore),e=vo(he.force);tn?n=!e:e=!1;for(var t=0;t<20;t++){let i=he["file"+t+"_name"],s=he["file"+t+"_data"];if(i==null||s==null)break;var r=await $r.getItem(i);if(!(n&&r)){let o=s;he["file"+t+"_type"]=="binary"&&(o=yc(atob(o))),(!r||e||confirm("Replace existing file '"+i+"'?"))&&await $r.setItem(i,o)}t==0&&(he.file=i),delete he["file"+t+"_name"],delete he["file"+t+"_data"],delete he["file"+t+"_type"]}delete he.ignore,delete he.force,mf()}function a8(){var n=P.getPlatformName&&P.getPlatformName(),e=$('a[href="?platform='+Oe+'"]');e.length&&(e.addClass("dropdown-item-checked"),n=n||e.text()||n),mc=n||Oe,$(".platform_name").text(mc)}function l8(){if(Oe=he.platform||Zi.getLastPlatformID(),Et=he.repo,!he.repo&&!he.file&&(Et=Zi.getLastRepoID(Oe)),nr&&Et&&Et!=="/"){var n=Js()[Et];n&&(console.log(Oe,he,n),he.repo=Et,n.platform_id&&!he.platform&&(he.platform=Oe=n.platform_id),n.mainPath&&!he.file&&(he.file=n.mainPath))}else Et="",delete he.repo;Oe||(tn&&Wy("The 'platform' must be specified when embed=1"),Oe=he.platform="vcs")}async function DA(){if(he.githubURL){Cl(he.githubURL,!0);return}if(nr&&he.repo&&!Js()[he.repo]&&he.repo!=="/"){if(confirm(`Repository '${he.repo}' was not found locally. Import it from GitHub?`)){Cl("https://github.com/"+he.repo,!0);return}delete he.repo}if(l8(),nA({getPlatformId:()=>Oe,isEmbed:tn,hasLocalStorage:nr,resizePlatform:()=>{P&&P.resize&&P.resize()},resizeWindows:()=>{N&&N.resize()},onTabChanged:n=>{Oo()&&(n!=="emulator"?P.isRunning()&&(Di(),m0=!0):m0&&(m0=!1,P.isRunning()||ci()))}}),go=Et||Nt(Oe),tn&&(go=(document.referrer||document.location.href)+go),$r=bh(go),he.importURL){s8(he.importURL);return}he.file0_name&&await o8(),ZA()}async function ZA(){try{var n=await N0(Mr(Oe));console.log("starting platform",Oe),await n8(),N.titlePrefix=document.title+" ["+Oe+"] - "+(Et?"["+Et+"] - ":""),N.updateTitle(N.getActiveID()||re.mainPath)}catch(e){console.log(e),Re('Platform "'+Oe+'" failed to load.')}finally{LA()}}function d7(n,e){P.writeFile(n,e)}function h7(n){return P.readFile(n)}function u7(){return P.saveState()}function c8(n){var e=n&&n.message||e;if(uA(n,e),N.refresh(!1),P.saveState){let t=P.saveState();bc(t)}}async function f7(n){var e=re.filedata[n];e!=null&&(N.updateFile(n,await alternateLocalFilesystem.getFileData(n)),console.log("updating file",n))}function d8(){if(xa&&Li instanceof Uint8Array){var n=Zt(_t()),e=P.getROMExtension&&P.getROMExtension(Li)||"-"+Nt(Oe)+".bin";alternateLocalFilesystem.setFileData(`bin/${n}${e}`,Li)}}function h8(){let n=!1;new IntersectionObserver((t,r)=>{for(var i of t)i.isIntersecting&&!n&&(DA(),n=!0),i.intersectionRatio==0&&Oo()&&P.isRunning()&&Di(),i.intersectionRatio>0&&Oo()&&!P.isRunning()&&ci()},{}).observe($("#emulator")[0])}typeof process=="undefined"&&(tn&&typeof IntersectionObserver=="function"?h8():DA());export{ff as armBreakpoints,Pa as clearBreakpoint,re as current_project,c8 as emulationHalted,Z1 as getCurrentEditorFilename,_t as getCurrentMainFilename,wn as getCurrentOutput,Ci as getCurrentProject,l8 as getPlatformAndRepo,is as getPlatformStore,u7 as getSaveState,h7 as getTestOutput,Tl as getWorkerParams,no as gotoNewLocation,RA as haltEmulation,en as lastDebugState,Kl as openHeaderFile,DQ as openLocationForPC,QW as parseGoToTarget,P as platform,Oe as platform_id,N as projectWindows,he as qs,f7 as reloadWorkspaceFile,Et as repo_id,Jl as runToPC,pf as setFrameRateUI,d7 as setTestInput,ai as setupBreakpoint,nA as setupSplits,ef as showTab,DA as startUI,go as store_id};
/*! Bundled license information:
localforage/dist/localforage.js:
(*!
localForage -- Offline Storage, Improved
Version 1.10.0
https://localforage.github.io/localForage
(c) 2013-2017 Mozilla, Apache License 2.0
*)
split.js/dist/split.js:
(*! Split.js - v1.6.5 *)
dompurify/dist/purify.cjs.js:
dompurify/dist/purify.es.mjs:
(*! @license DOMPurify 3.4.16 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.16/LICENSE *)
(*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE *)
*/
//# sourceMappingURL=ui.js.map