Files
8bitworkshop/gen/ui.js
T

3693 lines
1.1 MiB
Plaintext

import{a as d0}from"./chunk-NTFEI2OH.js";import{a as h0}from"./chunk-T6VURU5O.js";import{a as vc}from"./chunk-A7SWO6EA.js";import{a as u0,b as f0,c as s_}from"./chunk-7CYBOXJ5.js";import{C as nf,H as sf,t as l0,u as c0}from"./chunk-MZ43WA3W.js";import"./chunk-UACHXWHT.js";import{A as Xr,E as dn,F as ef,G as xo,I as wo,J as yc,K as tf,T as rf,U as o0,X as a0,a as Gn,b as Ma,d as St,da as Sc,e as La,f as zt,g as Ce,h as Ku,i as r0,k as n0,m as Oc,n as gc,o as bc,p as Cs,q as i0,t as vo,w as s0,x as Ju,y as Da,z as sr}from"./chunk-ZTLOJICZ.js";import{a as gt,b as As,c as Ra,d as Gu,e as Hu}from"./chunk-VSC4MAII.js";var af=Gu((p0,of)=>{(function(r){if(typeof p0=="object"&&typeof of!="undefined")of.exports=r();else if(typeof define=="function"&&define.amd)define([],r);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=r()}})(function(){var r,e,t;return(function n(i,s,o){function a(d,h){if(!s[d]){if(!i[d]){var u=typeof Ra=="function"&&Ra;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(g){var v=i[d][1][g];return a(v||g)},m,m.exports,n,i,s,o)}return s[d].exports}for(var l=typeof Ra=="function"&&Ra,c=0;c<o.length;c++)a(o[c]);return a})({1:[function(n,i,s){(function(o){"use strict";var a=o.MutationObserver||o.WebKitMutationObserver,l;if(a){var c=0,d=new a(g),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=g,l=function(){u.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var k=o.document.createElement("script");k.onreadystatechange=function(){g(),k.onreadystatechange=null,k.parentNode.removeChild(k),k=null},o.document.documentElement.appendChild(k)}:l=function(){setTimeout(g,0)};var f,m=[];function g(){f=!0;for(var k,L,M=m.length;M;){for(L=m,m=[],k=-1;++k<M;)L[k]();M=m.length}f=!1}i.exports=v;function v(k){m.push(k)===1&&!f&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(n,i,s){"use strict";var o=n(1);function a(){}var l={},c=["REJECTED"],d=["FULFILLED"],h=["PENDING"];i.exports=u;function u(x){if(typeof x!="function")throw new TypeError("resolver must be a function");this.state=h,this.queue=[],this.outcome=void 0,x!==a&&v(this,x)}u.prototype.catch=function(x){return this.then(null,x)},u.prototype.then=function(x,R){if(typeof x!="function"&&this.state===d||typeof R!="function"&&this.state===c)return this;var X=new this.constructor(a);if(this.state!==h){var j=this.state===d?x:R;m(X,j,this.outcome)}else this.queue.push(new f(X,x,R));return X};function f(x,R,X){this.promise=x,typeof R=="function"&&(this.onFulfilled=R,this.callFulfilled=this.otherCallFulfilled),typeof X=="function"&&(this.onRejected=X,this.callRejected=this.otherCallRejected)}f.prototype.callFulfilled=function(x){l.resolve(this.promise,x)},f.prototype.otherCallFulfilled=function(x){m(this.promise,this.onFulfilled,x)},f.prototype.callRejected=function(x){l.reject(this.promise,x)},f.prototype.otherCallRejected=function(x){m(this.promise,this.onRejected,x)};function m(x,R,X){o(function(){var j;try{j=R(X)}catch(G){return l.reject(x,G)}j===x?l.reject(x,new TypeError("Cannot resolve promise with itself")):l.resolve(x,j)})}l.resolve=function(x,R){var X=k(g,R);if(X.status==="error")return l.reject(x,X.value);var j=X.value;if(j)v(x,j);else{x.state=d,x.outcome=R;for(var G=-1,ie=x.queue.length;++G<ie;)x.queue[G].callFulfilled(R)}return x},l.reject=function(x,R){x.state=c,x.outcome=R;for(var X=-1,j=x.queue.length;++X<j;)x.queue[X].callRejected(R);return x};function g(x){var R=x&&x.then;if(x&&(typeof x=="object"||typeof x=="function")&&typeof R=="function")return function(){R.apply(x,arguments)}}function v(x,R){var X=!1;function j(ge){X||(X=!0,l.reject(x,ge))}function G(ge){X||(X=!0,l.resolve(x,ge))}function ie(){R(G,j)}var U=k(ie);U.status==="error"&&j(U.value)}function k(x,R){var X={};try{X.value=x(R),X.status="success"}catch(j){X.status="error",X.value=j}return X}u.resolve=L;function L(x){return x instanceof this?x:l.resolve(new this(a),x)}u.reject=M;function M(x){var R=new this(a);return l.reject(R,x)}u.all=D;function D(x){var R=this;if(Object.prototype.toString.call(x)!=="[object Array]")return this.reject(new TypeError("must be an array"));var X=x.length,j=!1;if(!X)return this.resolve([]);for(var G=new Array(X),ie=0,U=-1,ge=new this(a);++U<X;)pe(x[U],U);return ge;function pe(ke,B){R.resolve(ke).then(he,function(J){j||(j=!0,l.reject(ge,J))});function he(J){G[B]=J,++ie===X&&!j&&(j=!0,l.resolve(ge,G))}}}u.race=w;function w(x){var R=this;if(Object.prototype.toString.call(x)!=="[object Array]")return this.reject(new TypeError("must be an array"));var X=x.length,j=!1;if(!X)return this.resolve([]);for(var G=-1,ie=new this(a);++G<X;)U(x[G]);return ie;function U(ge){R.resolve(ge).then(function(pe){j||(j=!0,l.resolve(ie,pe))},function(pe){j||(j=!0,l.reject(ie,pe))})}}},{1:1}],3:[function(n,i,s){(function(o){"use strict";typeof o.Promise!="function"&&(o.Promise=n(2))}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{2:2}],4:[function(n,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(S){return!1}}function h(y,Q){y=y||[],Q=Q||{};try{return new Blob(y,Q)}catch(_){if(_.name!=="TypeError")throw _;for(var S=typeof BlobBuilder!="undefined"?BlobBuilder:typeof MSBlobBuilder!="undefined"?MSBlobBuilder:typeof MozBlobBuilder!="undefined"?MozBlobBuilder:WebKitBlobBuilder,A=new S,E=0;E<y.length;E+=1)A.append(y[E]);return A.getBlob(Q.type)}}typeof Promise=="undefined"&&n(3);var u=Promise;function f(y,Q){Q&&y.then(function(S){Q(null,S)},function(S){Q(S)})}function m(y,Q,S){typeof Q=="function"&&y.then(Q),typeof S=="function"&&y.catch(S)}function g(y){return typeof y!="string"&&(console.warn(y+" used as a key, but it is not a string."),y=String(y)),y}function v(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var k="local-forage-detect-blob-support",L=void 0,M={},D=Object.prototype.toString,w="readonly",x="readwrite";function R(y){for(var Q=y.length,S=new ArrayBuffer(Q),A=new Uint8Array(S),E=0;E<Q;E++)A[E]=y.charCodeAt(E);return S}function X(y){return new u(function(Q){var S=y.transaction(k,x),A=h([""]);S.objectStore(k).put(A,"key"),S.onabort=function(E){E.preventDefault(),E.stopPropagation(),Q(!1)},S.oncomplete=function(){var E=navigator.userAgent.match(/Chrome\/(\d+)/),_=navigator.userAgent.match(/Edge\//);Q(_||!E||parseInt(E[1],10)>=43)}}).catch(function(){return!1})}function j(y){return typeof L=="boolean"?u.resolve(L):X(y).then(function(Q){return L=Q,L})}function G(y){var Q=M[y.name],S={};S.promise=new u(function(A,E){S.resolve=A,S.reject=E}),Q.deferredOperations.push(S),Q.dbReady?Q.dbReady=Q.dbReady.then(function(){return S.promise}):Q.dbReady=S.promise}function ie(y){var Q=M[y.name],S=Q.deferredOperations.pop();if(S)return S.resolve(),S.promise}function U(y,Q){var S=M[y.name],A=S.deferredOperations.pop();if(A)return A.reject(Q),A.promise}function ge(y,Q){return new u(function(S,A){if(M[y.name]=M[y.name]||pt(),y.db)if(Q)G(y),y.db.close();else return S(y.db);var E=[y.name];Q&&E.push(y.version);var _=c.open.apply(c,E);Q&&(_.onupgradeneeded=function(z){var W=_.result;try{W.createObjectStore(y.storeName),z.oldVersion<=1&&W.createObjectStore(k)}catch(K){if(K.name==="ConstraintError")console.warn('The database "'+y.name+'" has been upgraded from version '+z.oldVersion+" to version "+z.newVersion+', but the storage "'+y.storeName+'" already exists.');else throw K}}),_.onerror=function(z){z.preventDefault(),A(_.error)},_.onsuccess=function(){var z=_.result;z.onversionchange=function(W){W.target.close()},S(z),ie(y)}})}function pe(y){return ge(y,!1)}function ke(y){return ge(y,!0)}function B(y,Q){if(!y.db)return!0;var S=!y.db.objectStoreNames.contains(y.storeName),A=y.version<y.db.version,E=y.version>y.db.version;if(A&&(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||S){if(S){var _=y.db.version+1;_>y.version&&(y.version=_)}return!0}return!1}function he(y){return new u(function(Q,S){var A=new FileReader;A.onerror=S,A.onloadend=function(E){var _=btoa(E.target.result||"");Q({__local_forage_encoded_blob:!0,data:_,type:y.type})},A.readAsBinaryString(y)})}function J(y){var Q=R(atob(y.data));return h([Q],{type:y.type})}function ve(y){return y&&y.__local_forage_encoded_blob}function $e(y){var Q=this,S=Q._initReady().then(function(){var A=M[Q._dbInfo.name];if(A&&A.dbReady)return A.dbReady});return m(S,y,y),S}function Ue(y){G(y);for(var Q=M[y.name],S=Q.forages,A=0;A<S.length;A++){var E=S[A];E._dbInfo.db&&(E._dbInfo.db.close(),E._dbInfo.db=null)}return y.db=null,pe(y).then(function(_){return y.db=_,B(y)?ke(y):_}).then(function(_){y.db=Q.db=_;for(var z=0;z<S.length;z++)S[z]._dbInfo.db=_}).catch(function(_){throw U(y,_),_})}function tt(y,Q,S,A){A===void 0&&(A=1);try{var E=y.db.transaction(y.storeName,Q);S(null,E)}catch(_){if(A>0&&(!y.db||_.name==="InvalidStateError"||_.name==="NotFoundError"))return u.resolve().then(function(){if(!y.db||_.name==="NotFoundError"&&!y.db.objectStoreNames.contains(y.storeName)&&y.version<=y.db.version)return y.db&&(y.version=y.db.version+1),ke(y)}).then(function(){return Ue(y).then(function(){tt(y,Q,S,A-1)})}).catch(S);S(_)}}function pt(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function Zt(y){var Q=this,S={db:null};if(y)for(var A in y)S[A]=y[A];var E=M[S.name];E||(E=pt(),M[S.name]=E),E.forages.push(Q),Q._initReady||(Q._initReady=Q.ready,Q.ready=$e);var _=[];function z(){return u.resolve()}for(var W=0;W<E.forages.length;W++){var K=E.forages[W];K!==Q&&_.push(K._initReady().catch(z))}var q=E.forages.slice(0);return u.all(_).then(function(){return S.db=E.db,pe(S)}).then(function(re){return S.db=re,B(S,Q._defaultConfig.version)?ke(S):re}).then(function(re){S.db=E.db=re,Q._dbInfo=S;for(var ue=0;ue<q.length;ue++){var Ae=q[ue];Ae!==Q&&(Ae._dbInfo.db=S.db,Ae._dbInfo.version=S.version)}})}function Oe(y,Q){var S=this;y=g(y);var A=new u(function(E,_){S.ready().then(function(){tt(S._dbInfo,w,function(z,W){if(z)return _(z);try{var K=W.objectStore(S._dbInfo.storeName),q=K.get(y);q.onsuccess=function(){var re=q.result;re===void 0&&(re=null),ve(re)&&(re=J(re)),E(re)},q.onerror=function(){_(q.error)}}catch(re){_(re)}})}).catch(_)});return f(A,Q),A}function nn(y,Q){var S=this,A=new u(function(E,_){S.ready().then(function(){tt(S._dbInfo,w,function(z,W){if(z)return _(z);try{var K=W.objectStore(S._dbInfo.storeName),q=K.openCursor(),re=1;q.onsuccess=function(){var ue=q.result;if(ue){var Ae=ue.value;ve(Ae)&&(Ae=J(Ae));var Ie=y(Ae,ue.key,re++);Ie!==void 0?E(Ie):ue.continue()}else E()},q.onerror=function(){_(q.error)}}catch(ue){_(ue)}})}).catch(_)});return f(A,Q),A}function sn(y,Q,S){var A=this;y=g(y);var E=new u(function(_,z){var W;A.ready().then(function(){return W=A._dbInfo,D.call(Q)==="[object Blob]"?j(W.db).then(function(K){return K?Q:he(Q)}):Q}).then(function(K){tt(A._dbInfo,x,function(q,re){if(q)return z(q);try{var ue=re.objectStore(A._dbInfo.storeName);K===null&&(K=void 0);var Ae=ue.put(K,y);re.oncomplete=function(){K===void 0&&(K=null),_(K)},re.onabort=re.onerror=function(){var Ie=Ae.error?Ae.error:Ae.transaction.error;z(Ie)}}catch(Ie){z(Ie)}})}).catch(z)});return f(E,S),E}function on(y,Q){var S=this;y=g(y);var A=new u(function(E,_){S.ready().then(function(){tt(S._dbInfo,x,function(z,W){if(z)return _(z);try{var K=W.objectStore(S._dbInfo.storeName),q=K.delete(y);W.oncomplete=function(){E()},W.onerror=function(){_(q.error)},W.onabort=function(){var re=q.error?q.error:q.transaction.error;_(re)}}catch(re){_(re)}})}).catch(_)});return f(A,Q),A}function ci(y){var Q=this,S=new u(function(A,E){Q.ready().then(function(){tt(Q._dbInfo,x,function(_,z){if(_)return E(_);try{var W=z.objectStore(Q._dbInfo.storeName),K=W.clear();z.oncomplete=function(){A()},z.onabort=z.onerror=function(){var q=K.error?K.error:K.transaction.error;E(q)}}catch(q){E(q)}})}).catch(E)});return f(S,y),S}function bs(y){var Q=this,S=new u(function(A,E){Q.ready().then(function(){tt(Q._dbInfo,w,function(_,z){if(_)return E(_);try{var W=z.objectStore(Q._dbInfo.storeName),K=W.count();K.onsuccess=function(){A(K.result)},K.onerror=function(){E(K.error)}}catch(q){E(q)}})}).catch(E)});return f(S,y),S}function Xi(y,Q){var S=this,A=new u(function(E,_){if(y<0){E(null);return}S.ready().then(function(){tt(S._dbInfo,w,function(z,W){if(z)return _(z);try{var K=W.objectStore(S._dbInfo.storeName),q=!1,re=K.openKeyCursor();re.onsuccess=function(){var ue=re.result;if(!ue){E(null);return}y===0||q?E(ue.key):(q=!0,ue.advance(y))},re.onerror=function(){_(re.error)}}catch(ue){_(ue)}})}).catch(_)});return f(A,Q),A}function di(y){var Q=this,S=new u(function(A,E){Q.ready().then(function(){tt(Q._dbInfo,w,function(_,z){if(_)return E(_);try{var W=z.objectStore(Q._dbInfo.storeName),K=W.openKeyCursor(),q=[];K.onsuccess=function(){var re=K.result;if(!re){A(q);return}q.push(re.key),re.continue()},K.onerror=function(){E(K.error)}}catch(re){E(re)}})}).catch(E)});return f(S,y),S}function kn(y,Q){Q=v.apply(this,arguments);var S=this.config();y=typeof y!="function"&&y||{},y.name||(y.name=y.name||S.name,y.storeName=y.storeName||S.storeName);var A=this,E;if(!y.name)E=u.reject("Invalid arguments");else{var _=y.name===S.name&&A._dbInfo.db,z=_?u.resolve(A._dbInfo.db):pe(y).then(function(W){var K=M[y.name],q=K.forages;K.db=W;for(var re=0;re<q.length;re++)q[re]._dbInfo.db=W;return W});y.storeName?E=z.then(function(W){if(W.objectStoreNames.contains(y.storeName)){var K=W.version+1;G(y);var q=M[y.name],re=q.forages;W.close();for(var ue=0;ue<re.length;ue++){var Ae=re[ue];Ae._dbInfo.db=null,Ae._dbInfo.version=K}var Ie=new u(function(Xe,ht){var nt=c.open(y.name,K);nt.onerror=function(ir){var Si=nt.result;Si.close(),ht(ir)},nt.onupgradeneeded=function(){var ir=nt.result;ir.deleteObjectStore(y.storeName)},nt.onsuccess=function(){var ir=nt.result;ir.close(),Xe(ir)}});return Ie.then(function(Xe){q.db=Xe;for(var ht=0;ht<re.length;ht++){var nt=re[ht];nt._dbInfo.db=Xe,ie(nt._dbInfo)}}).catch(function(Xe){throw(U(y,Xe)||u.resolve()).catch(function(){}),Xe})}}):E=z.then(function(W){G(y);var K=M[y.name],q=K.forages;W.close();for(var re=0;re<q.length;re++){var ue=q[re];ue._dbInfo.db=null}var Ae=new u(function(Ie,Xe){var ht=c.deleteDatabase(y.name);ht.onerror=function(){var nt=ht.result;nt&&nt.close(),Xe(ht.error)},ht.onblocked=function(){console.warn('dropInstance blocked for database "'+y.name+'" until all open connections are closed')},ht.onsuccess=function(){var nt=ht.result;nt&&nt.close(),Ie(nt)}});return Ae.then(function(Ie){K.db=Ie;for(var Xe=0;Xe<q.length;Xe++){var ht=q[Xe];ie(ht._dbInfo)}}).catch(function(Ie){throw(U(y,Ie)||u.resolve()).catch(function(){}),Ie})})}return f(E,Q),E}var hi={_driver:"asyncStorage",_initStorage:Zt,_support:d(),iterate:nn,getItem:Oe,setItem:sn,removeItem:on,clear:ci,length:bs,key:Xi,keys:di,dropInstance:kn};function Se(){return typeof openDatabase=="function"}var Et="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",we="~~local_forage_type~",an=/^~~local_forage_type~([^~]+)~/,He="__lfsc__:",jt=He.length,ln="arbf",mt="blob",Nn="si08",Xt="ui08",$n="uic8",jn="si16",yt="si32",se="ur16",Y="ui32",ne="fl32",me="fl64",qe=jt+ln.length,Ne=Object.prototype.toString;function Ge(y){var Q=y.length*.75,S=y.length,A,E=0,_,z,W,K;y[y.length-1]==="="&&(Q--,y[y.length-2]==="="&&Q--);var q=new ArrayBuffer(Q),re=new Uint8Array(q);for(A=0;A<S;A+=4)_=Et.indexOf(y[A]),z=Et.indexOf(y[A+1]),W=Et.indexOf(y[A+2]),K=Et.indexOf(y[A+3]),re[E++]=_<<2|z>>4,re[E++]=(z&15)<<4|W>>2,re[E++]=(W&3)<<6|K&63;return q}function vt(y){var Q=new Uint8Array(y),S="",A;for(A=0;A<Q.length;A+=3)S+=Et[Q[A]>>2],S+=Et[(Q[A]&3)<<4|Q[A+1]>>4],S+=Et[(Q[A+1]&15)<<2|Q[A+2]>>6],S+=Et[Q[A+2]&63];return Q.length%3===2?S=S.substring(0,S.length-1)+"=":Q.length%3===1&&(S=S.substring(0,S.length-2)+"=="),S}function rr(y,Q){var S="";if(y&&(S=Ne.call(y)),y&&(S==="[object ArrayBuffer]"||y.buffer&&Ne.call(y.buffer)==="[object ArrayBuffer]")){var A,E=He;y instanceof ArrayBuffer?(A=y,E+=ln):(A=y.buffer,S==="[object Int8Array]"?E+=Nn:S==="[object Uint8Array]"?E+=Xt:S==="[object Uint8ClampedArray]"?E+=$n:S==="[object Int16Array]"?E+=jn:S==="[object Uint16Array]"?E+=se:S==="[object Int32Array]"?E+=yt:S==="[object Uint32Array]"?E+=Y:S==="[object Float32Array]"?E+=ne:S==="[object Float64Array]"?E+=me:Q(new Error("Failed to get type for BinaryArray"))),Q(E+vt(A))}else if(S==="[object Blob]"){var _=new FileReader;_.onload=function(){var z=we+y.type+"~"+vt(this.result);Q(He+mt+z)},_.readAsArrayBuffer(y)}else try{Q(JSON.stringify(y))}catch(z){console.error("Couldn't convert value into a JSON string: ",y),Q(null,z)}}function cn(y){if(y.substring(0,jt)!==He)return JSON.parse(y);var Q=y.substring(qe),S=y.substring(jt,qe),A;if(S===mt&&an.test(Q)){var E=Q.match(an);A=E[1],Q=Q.substring(E[0].length)}var _=Ge(Q);switch(S){case ln:return _;case mt:return h([_],{type:A});case Nn:return new Int8Array(_);case Xt:return new Uint8Array(_);case $n:return new Uint8ClampedArray(_);case jn:return new Int16Array(_);case se:return new Uint16Array(_);case yt:return new Int32Array(_);case Y:return new Uint32Array(_);case ne:return new Float32Array(_);case me:return new Float64Array(_);default:throw new Error("Unkown type: "+S)}}var ui={serialize:rr,deserialize:cn,stringToBuffer:Ge,bufferToString:vt};function zi(y,Q,S,A){y.executeSql("CREATE TABLE IF NOT EXISTS "+Q.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],S,A)}function fi(y){var Q=this,S={db:null};if(y)for(var A in y)S[A]=typeof y[A]!="string"?y[A].toString():y[A];var E=new u(function(_,z){try{S.db=openDatabase(S.name,String(S.version),S.description,S.size)}catch(W){return z(W)}S.db.transaction(function(W){zi(W,S,function(){Q._dbInfo=S,_()},function(K,q){z(q)})},z)});return S.serializer=ui,E}function nr(y,Q,S,A,E,_){y.executeSql(S,A,E,function(z,W){W.code===W.SYNTAX_ERR?z.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[Q.storeName],function(K,q){q.rows.length?_(K,W):zi(K,Q,function(){K.executeSql(S,A,E,_)},_)},_):_(z,W)},_)}function fr(y,Q){var S=this;y=g(y);var A=new u(function(E,_){S.ready().then(function(){var z=S._dbInfo;z.db.transaction(function(W){nr(W,z,"SELECT * FROM "+z.storeName+" WHERE key = ? LIMIT 1",[y],function(K,q){var re=q.rows.length?q.rows.item(0).value:null;re&&(re=z.serializer.deserialize(re)),E(re)},function(K,q){_(q)})})}).catch(_)});return f(A,Q),A}function pr(y,Q){var S=this,A=new u(function(E,_){S.ready().then(function(){var z=S._dbInfo;z.db.transaction(function(W){nr(W,z,"SELECT * FROM "+z.storeName,[],function(K,q){for(var re=q.rows,ue=re.length,Ae=0;Ae<ue;Ae++){var Ie=re.item(Ae),Xe=Ie.value;if(Xe&&(Xe=z.serializer.deserialize(Xe)),Xe=y(Xe,Ie.key,Ae+1),Xe!==void 0){E(Xe);return}}E()},function(K,q){_(q)})})}).catch(_)});return f(A,Q),A}function Wi(y,Q,S,A){var E=this;y=g(y);var _=new u(function(z,W){E.ready().then(function(){Q===void 0&&(Q=null);var K=Q,q=E._dbInfo;q.serializer.serialize(Q,function(re,ue){ue?W(ue):q.db.transaction(function(Ae){nr(Ae,q,"INSERT OR REPLACE INTO "+q.storeName+" (key, value) VALUES (?, ?)",[y,re],function(){z(K)},function(Ie,Xe){W(Xe)})},function(Ae){if(Ae.code===Ae.QUOTA_ERR){if(A>0){z(Wi.apply(E,[y,K,S,A-1]));return}W(Ae)}})})}).catch(W)});return f(_,S),_}function ys(y,Q,S){return Wi.apply(this,[y,Q,S,1])}function Ss(y,Q){var S=this;y=g(y);var A=new u(function(E,_){S.ready().then(function(){var z=S._dbInfo;z.db.transaction(function(W){nr(W,z,"DELETE FROM "+z.storeName+" WHERE key = ?",[y],function(){E()},function(K,q){_(q)})})}).catch(_)});return f(A,Q),A}function vs(y){var Q=this,S=new u(function(A,E){Q.ready().then(function(){var _=Q._dbInfo;_.db.transaction(function(z){nr(z,_,"DELETE FROM "+_.storeName,[],function(){A()},function(W,K){E(K)})})}).catch(E)});return f(S,y),S}function xs(y){var Q=this,S=new u(function(A,E){Q.ready().then(function(){var _=Q._dbInfo;_.db.transaction(function(z){nr(z,_,"SELECT COUNT(key) as c FROM "+_.storeName,[],function(W,K){var q=K.rows.item(0).c;A(q)},function(W,K){E(K)})})}).catch(E)});return f(S,y),S}function Qn(y,Q){var S=this,A=new u(function(E,_){S.ready().then(function(){var z=S._dbInfo;z.db.transaction(function(W){nr(W,z,"SELECT key FROM "+z.storeName+" WHERE id = ? LIMIT 1",[y+1],function(K,q){var re=q.rows.length?q.rows.item(0).key:null;E(re)},function(K,q){_(q)})})}).catch(_)});return f(A,Q),A}function Tn(y){var Q=this,S=new u(function(A,E){Q.ready().then(function(){var _=Q._dbInfo;_.db.transaction(function(z){nr(z,_,"SELECT key FROM "+_.storeName,[],function(W,K){for(var q=[],re=0;re<K.rows.length;re++)q.push(K.rows.item(re).key);A(q)},function(W,K){E(K)})})}).catch(E)});return f(S,y),S}function Ot(y){return new u(function(Q,S){y.transaction(function(A){A.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(E,_){for(var z=[],W=0;W<_.rows.length;W++)z.push(_.rows.item(W).name);Q({db:y,storeNames:z})},function(E,_){S(_)})},function(A){S(A)})})}function mr(y,Q){Q=v.apply(this,arguments);var S=this.config();y=typeof y!="function"&&y||{},y.name||(y.name=y.name||S.name,y.storeName=y.storeName||S.storeName);var A=this,E;return y.name?E=new u(function(_){var z;y.name===S.name?z=A._dbInfo.db:z=openDatabase(y.name,"","",0),y.storeName?_({db:z,storeNames:[y.storeName]}):_(Ot(z))}).then(function(_){return new u(function(z,W){_.db.transaction(function(K){function q(Ie){return new u(function(Xe,ht){K.executeSql("DROP TABLE IF EXISTS "+Ie,[],function(){Xe()},function(nt,ir){ht(ir)})})}for(var re=[],ue=0,Ae=_.storeNames.length;ue<Ae;ue++)re.push(q(_.storeNames[ue]));u.all(re).then(function(){z()}).catch(function(Ie){W(Ie)})},function(K){W(K)})})}):E=u.reject("Invalid arguments"),f(E,Q),E}var pi={_driver:"webSQLStorage",_initStorage:fi,_support:Se(),iterate:pr,getItem:fr,setItem:ys,removeItem:Ss,clear:vs,length:xs,key:Qn,keys:Tn,dropInstance:mr};function mi(){try{return typeof localStorage!="undefined"&&"setItem"in localStorage&&!!localStorage.setItem}catch(y){return!1}}function bo(y,Q){var S=y.name+"/";return y.storeName!==Q.storeName&&(S+=y.storeName+"/"),S}function ws(){var y="_localforage_support_test";try{return localStorage.setItem(y,!0),localStorage.removeItem(y),!1}catch(Q){return!0}}function Oi(){return!ws()||localStorage.length>0}function Ps(y){var Q=this,S={};if(y)for(var A in y)S[A]=y[A];return S.keyPrefix=bo(y,Q._defaultConfig),Oi()?(Q._dbInfo=S,S.serializer=ui,u.resolve()):u.reject()}function gi(y){var Q=this,S=Q.ready().then(function(){for(var A=Q._dbInfo.keyPrefix,E=localStorage.length-1;E>=0;E--){var _=localStorage.key(E);_.indexOf(A)===0&&localStorage.removeItem(_)}});return f(S,y),S}function $a(y,Q){var S=this;y=g(y);var A=S.ready().then(function(){var E=S._dbInfo,_=localStorage.getItem(E.keyPrefix+y);return _&&(_=E.serializer.deserialize(_)),_});return f(A,Q),A}function Dr(y,Q){var S=this,A=S.ready().then(function(){for(var E=S._dbInfo,_=E.keyPrefix,z=_.length,W=localStorage.length,K=1,q=0;q<W;q++){var re=localStorage.key(q);if(re.indexOf(_)===0){var ue=localStorage.getItem(re);if(ue&&(ue=E.serializer.deserialize(ue)),ue=y(ue,re.substring(z),K++),ue!==void 0)return ue}}});return f(A,Q),A}function Qa(y,Q){var S=this,A=S.ready().then(function(){var E=S._dbInfo,_;try{_=localStorage.key(y)}catch(z){_=null}return _&&(_=_.substring(E.keyPrefix.length)),_});return f(A,Q),A}function Ta(y){var Q=this,S=Q.ready().then(function(){for(var A=Q._dbInfo,E=localStorage.length,_=[],z=0;z<E;z++){var W=localStorage.key(z);W.indexOf(A.keyPrefix)===0&&_.push(W.substring(A.keyPrefix.length))}return _});return f(S,y),S}function _e(y){var Q=this,S=Q.keys().then(function(A){return A.length});return f(S,y),S}function Or(y,Q){var S=this;y=g(y);var A=S.ready().then(function(){var E=S._dbInfo;localStorage.removeItem(E.keyPrefix+y)});return f(A,Q),A}function _a(y,Q,S){var A=this;y=g(y);var E=A.ready().then(function(){Q===void 0&&(Q=null);var _=Q;return new u(function(z,W){var K=A._dbInfo;K.serializer.serialize(Q,function(q,re){if(re)W(re);else try{localStorage.setItem(K.keyPrefix+y,q),z(_)}catch(ue){(ue.name==="QuotaExceededError"||ue.name==="NS_ERROR_DOM_QUOTA_REACHED")&&W(ue),W(ue)}})})});return f(E,S),E}function ks(y,Q){if(Q=v.apply(this,arguments),y=typeof y!="function"&&y||{},!y.name){var S=this.config();y.name=y.name||S.name,y.storeName=y.storeName||S.storeName}var A=this,E;return y.name?E=new u(function(_){y.storeName?_(bo(y,A._defaultConfig)):_(y.name+"/")}).then(function(_){for(var z=localStorage.length-1;z>=0;z--){var W=localStorage.key(z);W.indexOf(_)===0&&localStorage.removeItem(W)}}):E=u.reject("Invalid arguments"),f(E,Q),E}var bi={_driver:"localStorageWrapper",_initStorage:Ps,_support:mi(),iterate:Dr,getItem:$a,setItem:_a,removeItem:Or,clear:gi,length:_e,key:Qa,keys:Ta,dropInstance:ks},$s=function(Q,S){return Q===S||typeof Q=="number"&&typeof S=="number"&&isNaN(Q)&&isNaN(S)},Qs=function(Q,S){for(var A=Q.length,E=0;E<A;){if($s(Q[E],S))return!0;E++}return!1},yo=Array.isArray||function(y){return Object.prototype.toString.call(y)==="[object Array]"},yi={},So={},Un={INDEXEDDB:hi,WEBSQL:pi,LOCALSTORAGE:bi},Rt=[Un.INDEXEDDB._driver,Un.WEBSQL._driver,Un.LOCALSTORAGE._driver],qn=["dropInstance"],Ir=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(qn),Ut={description:"",driver:Rt.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function Aa(y,Q){y[Q]=function(){var S=arguments;return y.ready().then(function(){return y[Q].apply(y,S)})}}function Zr(){for(var y=1;y<arguments.length;y++){var Q=arguments[y];if(Q)for(var S in Q)Q.hasOwnProperty(S)&&(yo(Q[S])?arguments[0][S]=Q[S].slice():arguments[0][S]=Q[S])}return arguments[0]}var Ts=(function(){function y(Q){a(this,y);for(var S in Un)if(Un.hasOwnProperty(S)){var A=Un[S],E=A._driver;this[S]=E,yi[E]||this.defineDriver(A)}this._defaultConfig=Zr({},Ut),this._config=Zr({},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(S){if((typeof S=="undefined"?"undefined":o(S))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var A in S){if(A==="storeName"&&(S[A]=S[A].replace(/\W/g,"_")),A==="version"&&typeof S[A]!="number")return new Error("Database version must be a number.");this._config[A]=S[A]}return"driver"in S&&S.driver?this.setDriver(this._config.driver):!0}else return typeof S=="string"?this._config[S]:this._config},y.prototype.defineDriver=function(S,A,E){var _=new u(function(z,W){try{var K=S._driver,q=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!S._driver){W(q);return}for(var re=Ir.concat("_initStorage"),ue=0,Ae=re.length;ue<Ae;ue++){var Ie=re[ue],Xe=!Qs(qn,Ie);if((Xe||S[Ie])&&typeof S[Ie]!="function"){W(q);return}}var ht=function(){for(var Si=function(p){return function(){var b=new Error("Method "+p+" is not implemented by the current driver"),T=u.reject(b);return f(T,arguments[arguments.length-1]),T}},vi=0,_n=qn.length;vi<_n;vi++){var An=qn[vi];S[An]||(S[An]=Si(An))}};ht();var nt=function(Si){yi[K]&&console.info("Redefining LocalForage driver: "+K),yi[K]=S,So[K]=Si,z()};"_support"in S?S._support&&typeof S._support=="function"?S._support().then(nt,W):nt(!!S._support):nt(!0)}catch(ir){W(ir)}});return m(_,A,E),_},y.prototype.driver=function(){return this._driver||null},y.prototype.getDriver=function(S,A,E){var _=yi[S]?u.resolve(yi[S]):u.reject(new Error("Driver not found."));return m(_,A,E),_},y.prototype.getSerializer=function(S){var A=u.resolve(ui);return m(A,S),A},y.prototype.ready=function(S){var A=this,E=A._driverSet.then(function(){return A._ready===null&&(A._ready=A._initDriver()),A._ready});return m(E,S,S),E},y.prototype.setDriver=function(S,A,E){var _=this;yo(S)||(S=[S]);var z=this._getSupportedDrivers(S);function W(){_._config.driver=_.driver()}function K(ue){return _._extend(ue),W(),_._ready=_._initStorage(_._config),_._ready}function q(ue){return function(){var Ae=0;function Ie(){for(;Ae<ue.length;){var Xe=ue[Ae];return Ae++,_._dbInfo=null,_._ready=null,_.getDriver(Xe).then(K).catch(Ie)}W();var ht=new Error("No available storage method found.");return _._driverSet=u.reject(ht),_._driverSet}return Ie()}}var re=this._driverSet!==null?this._driverSet.catch(function(){return u.resolve()}):u.resolve();return this._driverSet=re.then(function(){var ue=z[0];return _._dbInfo=null,_._ready=null,_.getDriver(ue).then(function(Ae){_._driver=Ae._driver,W(),_._wrapLibraryMethodsWithReady(),_._initDriver=q(z)})}).catch(function(){W();var ue=new Error("No available storage method found.");return _._driverSet=u.reject(ue),_._driverSet}),m(this._driverSet,A,E),this._driverSet},y.prototype.supports=function(S){return!!So[S]},y.prototype._extend=function(S){Zr(this,S)},y.prototype._getSupportedDrivers=function(S){for(var A=[],E=0,_=S.length;E<_;E++){var z=S[E];this.supports(z)&&A.push(z)}return A},y.prototype._wrapLibraryMethodsWithReady=function(){for(var S=0,A=Ir.length;S<A;S++)Aa(this,Ir[S])},y.prototype.createInstance=function(S){return new y(S)},y})(),Ca=new Ts;i.exports=Ca},{3:3}]},{},[4])(4)})});var $f=Gu((Pf,kf)=>{(function(r,e){typeof Pf=="object"&&typeof kf!="undefined"?kf.exports=e():typeof define=="function"&&define.amd?define(e):(r=typeof globalThis!="undefined"?globalThis:r||self,r.Split=e())})(Pf,(function(){"use strict";var r=typeof window!="undefined"?window:null,e=r===null,t=e?void 0:r.document,n="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(D){var w=t.createElement("div");return w.style.cssText="width:"+D+"calc(9px)",!!w.style.length}).shift()+"calc",u=function(D){return typeof D=="string"||D instanceof String},f=function(D){if(u(D)){var w=t.querySelector(D);if(!w)throw new Error("Selector "+D+" did not match a DOM element");return w}return D},m=function(D,w,x){var R=D[w];return R!==void 0?R:x},g=function(D,w,x,R){if(w){if(R==="end")return 0;if(R==="center")return D/2}else if(x){if(R==="start")return 0;if(R==="center")return D/2}return D},v=function(D,w){var x=t.createElement("div");return x.className="gutter gutter-"+w,x},k=function(D,w,x){var R={};return u(w)?R[D]=w:R[D]=h+"("+w+"% - "+x+"px)",R},L=function(D,w){var x;return x={},x[D]=w+"px",x},M=function(D,w){if(w===void 0&&(w={}),e)return{};var x=D,R,X,j,G,ie,U;Array.from&&(x=Array.from(x));var ge=f(x[0]),pe=ge.parentNode,ke=getComputedStyle?getComputedStyle(pe):null,B=ke?ke.flexDirection:null,he=m(w,"sizes")||x.map(function(){return 100/x.length}),J=m(w,"minSize",100),ve=Array.isArray(J)?J:x.map(function(){return J}),$e=m(w,"maxSize",1/0),Ue=Array.isArray($e)?$e:x.map(function(){return $e}),tt=m(w,"expandToMin",!1),pt=m(w,"gutterSize",10),Zt=m(w,"gutterAlign","center"),Oe=m(w,"snapOffset",30),nn=Array.isArray(Oe)?Oe:x.map(function(){return Oe}),sn=m(w,"dragInterval",1),on=m(w,"direction",c),ci=m(w,"cursor",on===c?"col-resize":"row-resize"),bs=m(w,"gutter",v),Xi=m(w,"elementStyle",k),di=m(w,"gutterStyle",L);on===c?(R="width",X="clientX",j="left",G="right",ie="clientWidth"):on==="vertical"&&(R="height",X="clientY",j="top",G="bottom",ie="clientHeight");function kn(se,Y,ne,me){var qe=Xi(R,Y,ne,me);Object.keys(qe).forEach(function(Ne){se.style[Ne]=qe[Ne]})}function hi(se,Y,ne){var me=di(R,Y,ne);Object.keys(me).forEach(function(qe){se.style[qe]=me[qe]})}function Se(){return U.map(function(se){return se.size})}function Et(se){return"touches"in se?se.touches[0][X]:se[X]}function we(se){var Y=U[this.a],ne=U[this.b],me=Y.size+ne.size;Y.size=se/this.size*me,ne.size=me-se/this.size*me,kn(Y.element,Y.size,this[a],Y.i),kn(ne.element,ne.size,this[l],ne.i)}function an(se){var Y,ne=U[this.a],me=U[this.b];this.dragging&&(Y=Et(se)-this.start+(this[a]-this.dragOffset),sn>1&&(Y=Math.round(Y/sn)*sn),Y<=ne.minSize+ne.snapOffset+this[a]?Y=ne.minSize+this[a]:Y>=this.size-(me.minSize+me.snapOffset+this[l])&&(Y=this.size-(me.minSize+this[l])),Y>=ne.maxSize-ne.snapOffset+this[a]?Y=ne.maxSize+this[a]:Y<=this.size-(me.maxSize-me.snapOffset+this[l])&&(Y=this.size-(me.maxSize+this[l])),we.call(this,Y),m(w,"onDrag",d)(Se()))}function He(){var se=U[this.a].element,Y=U[this.b].element,ne=se[s](),me=Y[s]();this.size=ne[R]+me[R]+this[a]+this[l],this.start=ne[j],this.end=ne[G]}function jt(se){if(!getComputedStyle)return null;var Y=getComputedStyle(se);if(!Y)return null;var ne=se[ie];return ne===0?null:(on===c?ne-=parseFloat(Y.paddingLeft)+parseFloat(Y.paddingRight):ne-=parseFloat(Y.paddingTop)+parseFloat(Y.paddingBottom),ne)}function ln(se){var Y=jt(pe);if(Y===null||ve.reduce(function(Ne,Ge){return Ne+Ge},0)>Y)return se;var ne=0,me=[],qe=se.map(function(Ne,Ge){var vt=Y*Ne/100,rr=g(pt,Ge===0,Ge===se.length-1,Zt),cn=ve[Ge]+rr;return vt<cn?(ne+=cn-vt,me.push(0),cn):(me.push(vt-cn),vt)});return ne===0?se:qe.map(function(Ne,Ge){var vt=Ne;if(ne>0&&me[Ge]-ne>0){var rr=Math.min(ne,me[Ge]-ne);ne-=rr,vt=Ne-rr}return vt/Y*100})}function mt(){var se=this,Y=U[se.a].element,ne=U[se.b].element;se.dragging&&m(w,"onDragEnd",d)(Se()),se.dragging=!1,r[i]("mouseup",se.stop),r[i]("touchend",se.stop),r[i]("touchcancel",se.stop),r[i]("mousemove",se.move),r[i]("touchmove",se.move),se.stop=null,se.move=null,Y[i]("selectstart",d),Y[i]("dragstart",d),ne[i]("selectstart",d),ne[i]("dragstart",d),Y.style.userSelect="",Y.style.webkitUserSelect="",Y.style.MozUserSelect="",Y.style.pointerEvents="",ne.style.userSelect="",ne.style.webkitUserSelect="",ne.style.MozUserSelect="",ne.style.pointerEvents="",se.gutter.style.cursor="",se.parent.style.cursor="",t.body.style.cursor=""}function Nn(se){if(!("button"in se&&se.button!==0)){var Y=this,ne=U[Y.a].element,me=U[Y.b].element;Y.dragging||m(w,"onDragStart",d)(Se()),se.preventDefault(),Y.dragging=!0,Y.move=an.bind(Y),Y.stop=mt.bind(Y),r[n]("mouseup",Y.stop),r[n]("touchend",Y.stop),r[n]("touchcancel",Y.stop),r[n]("mousemove",Y.move),r[n]("touchmove",Y.move),ne[n]("selectstart",d),ne[n]("dragstart",d),me[n]("selectstart",d),me[n]("dragstart",d),ne.style.userSelect="none",ne.style.webkitUserSelect="none",ne.style.MozUserSelect="none",ne.style.pointerEvents="none",me.style.userSelect="none",me.style.webkitUserSelect="none",me.style.MozUserSelect="none",me.style.pointerEvents="none",Y.gutter.style.cursor=ci,Y.parent.style.cursor=ci,t.body.style.cursor=ci,He.call(Y),Y.dragOffset=Et(se)-Y.end}}he=ln(he);var Xt=[];U=x.map(function(se,Y){var ne={element:f(se),size:he[Y],minSize:ve[Y],maxSize:Ue[Y],snapOffset:nn[Y],i:Y},me;if(Y>0&&(me={a:Y-1,b:Y,dragging:!1,direction:on,parent:pe},me[a]=g(pt,Y-1===0,!1,Zt),me[l]=g(pt,!1,Y===x.length-1,Zt),B==="row-reverse"||B==="column-reverse")){var qe=me.a;me.a=me.b,me.b=qe}if(Y>0){var Ne=bs(Y,on,ne.element);hi(Ne,pt,Y),me[o]=Nn.bind(me),Ne[n]("mousedown",me[o]),Ne[n]("touchstart",me[o]),pe.insertBefore(Ne,ne.element),me.gutter=Ne}return kn(ne.element,ne.size,g(pt,Y===0,Y===x.length-1,Zt),Y),Y>0&&Xt.push(me),ne});function $n(se){var Y=se.i===Xt.length,ne=Y?Xt[se.i-1]:Xt[se.i];He.call(ne);var me=Y?ne.size-se.minSize-ne[l]:se.minSize+ne[a];we.call(ne,me)}U.forEach(function(se){var Y=se.element[s]()[R];Y<se.minSize&&(tt?$n(se):se.minSize=Y)});function jn(se){var Y=ln(se);Y.forEach(function(ne,me){if(me>0){var qe=Xt[me-1],Ne=U[qe.a],Ge=U[qe.b];Ne.size=Y[me-1],Ge.size=ne,kn(Ne.element,Ne.size,qe[a],Ne.i),kn(Ge.element,Ge.size,qe[l],Ge.i)}})}function yt(se,Y){Xt.forEach(function(ne){if(Y!==!0?ne.parent.removeChild(ne.gutter):(ne.gutter[i]("mousedown",ne[o]),ne.gutter[i]("touchstart",ne[o])),se!==!0){var me=Xi(R,ne.a.size,ne[a]);Object.keys(me).forEach(function(qe){U[ne.a].element.style[qe]="",U[ne.b].element.style[qe]=""})}})}return{setSizes:jn,getSizes:Se,collapse:function(Y){$n(U[Y])},destroy:yt,parent:pe,pairs:Xt}};return M}))});var Ib=Gu(($j,cT)=>{"use strict";function YQ(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=Array(e);t<e;t++)n[t]=r[t];return n}function SX(r){if(Array.isArray(r))return r}function vX(r,e){var t=r==null?null:typeof Symbol!="undefined"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var n,i,s,o,a=[],l=!0,c=!1;try{if(s=(t=t.call(r)).next,e!==0)for(;!(l=(n=s.call(t)).done)&&(a.push(n.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 xX(){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 wX(r,e){return SX(r)||vX(r,e)||PX(r,e)||xX()}function PX(r,e){if(r){if(typeof r=="string")return YQ(r,e);var t={}.toString.call(r).slice(8,-1);return t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set"?Array.from(r):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?YQ(r,e):void 0}}var sT=Object.entries,FQ=Object.setPrototypeOf,kX=Object.isFrozen,$X=Object.getPrototypeOf,QX=Object.getOwnPropertyDescriptor,It=Object.freeze,Ft=Object.seal,Sa=Object.create,oT=typeof Reflect!="undefined"&&Reflect,Lb=oT.apply,Db=oT.construct;It||(It=function(e){return e});Ft||(Ft=function(e){return e});Lb||(Lb=function(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),s=2;s<n;s++)i[s-2]=arguments[s];return e.apply(t,i)});Db||(Db=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return new e(...n)});var fo=Ct(Array.prototype.forEach),TX=Ct(Array.prototype.lastIndexOf),NQ=Ct(Array.prototype.pop),rc=Ct(Array.prototype.push),_X=Ct(Array.prototype.splice),va=Array.isArray,sc=Ct(String.prototype.toLowerCase),_b=Ct(String.prototype.toString),jQ=Ct(String.prototype.match),nc=Ct(String.prototype.replace),UQ=Ct(String.prototype.indexOf),AX=Ct(String.prototype.trim),CX=Ct(Number.prototype.toString),EX=Ct(Boolean.prototype.toString),qQ=typeof BigInt=="undefined"?null:Ct(BigInt.prototype.toString),GQ=typeof Symbol=="undefined"?null:Ct(Symbol.prototype.toString),Mr=Ct(Object.prototype.hasOwnProperty),ic=Ct(Object.prototype.toString),ur=Ct(RegExp.prototype.test),uo=RX(TypeError);function Ct(r){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return Lb(r,e,n)}}function RX(r){return function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Db(r,t)}}function Ye(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:sc;if(FQ&&FQ(r,null),!va(e))return r;let n=e.length;for(;n--;){let i=e[n];if(typeof i=="string"){let s=t(i);s!==i&&(kX(e)||(e[n]=s),i=s)}r[i]=!0}return r}function MX(r){for(let e=0;e<r.length;e++)Mr(r,e)||(r[e]=null);return r}function tn(r){let e=Sa(null);for(let n of sT(r)){var t=wX(n,2);let i=t[0],s=t[1];Mr(r,i)&&(va(s)?e[i]=MX(s):s&&typeof s=="object"&&s.constructor===Object?e[i]=tn(s):e[i]=s)}return e}function LX(r){switch(typeof r){case"string":return r;case"number":return CX(r);case"boolean":return EX(r);case"bigint":return qQ?qQ(r):"0";case"symbol":return GQ?GQ(r):"Symbol()";case"undefined":return ic(r);case"function":case"object":{if(r===null)return ic(r);let e=r,t=wn(e,"toString");if(typeof t=="function"){let n=t(e);return typeof n=="string"?n:ic(n)}return ic(r)}default:return ic(r)}}function wn(r,e){for(;r!==null;){let n=QX(r,e);if(n){if(n.get)return Ct(n.get);if(typeof n.value=="function")return Ct(n.value)}r=$X(r)}function t(){return null}return t}function DX(r){try{return ur(r,""),!0}catch(e){return!1}}var HQ=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"]),Ab=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"]),Cb=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"]),IX=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"]),Eb=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"]),ZX=It(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),KQ=It(["#text"]),JQ=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"]),Rb=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"]),eT=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"]),_u=It(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),XX=Ft(/{{[\w\W]*|^[\w\W]*}}/g),zX=Ft(/<%[\w\W]*|^[\w\W]*%>/g),WX=Ft(/\${[\w\W]*/g),BX=Ft(/^data-[\-\w.\u00B7-\uFFFF]+$/),VX=Ft(/^aria-[\-\w]+$/),tT=Ft(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),YX=Ft(/^(?:\w+script|data):/i),FX=Ft(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),NX=Ft(/^html$/i),jX=Ft(/^[a-z][.\w]*(-[.\w]+)+$/i),rT=Ft(/<[/\w!]/g),nT=Ft(/<[/\w]/g),UX=Ft(/<\/no(script|embed|frames)/i),qX=Ft(/\/>/i),en={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},aT=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],GX=It(Ye({},aT)),HX=(function(){let r={};return fo(aT,e=>{r[e]=Ft(new RegExp("</"+e+"(?=[\\t\\n\\f\\r />])","i"))}),It(r)})(),KX=function(){return typeof window=="undefined"?null:window},JX=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";t&&t.hasAttribute(i)&&(n=t.getAttribute(i));let s="dompurify"+(n?"#"+n:"");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}},iT=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},ms=function(e,t,n,i){return Mr(e,t)&&va(e[t])?Ye(i.base?tn(i.base):{},e[t],i.transform):n},Mb=function(e,t,n){let i=Mr(e,t)?e[t]:void 0;return i&&typeof i=="object"?tn(i):n()};function lT(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:KX(),e=C=>lT(C);if(e.version="3.4.15",e.removed=[],!r||!r.document||r.document.nodeType!==en.document||!r.Element)return e.isSupported=!1,e;let t=r.document,n=t,i=n.currentScript;r.DocumentFragment;let s=r.HTMLTemplateElement,o=r.Node,a=r.Element,l=r.NodeFilter,c=r.NamedNodeMap;c===void 0&&(r.NamedNodeMap||r.MozNamedAttrMap),r.HTMLFormElement;let d=r.DOMParser,h=r.trustedTypes,u=a.prototype,f=wn(u,"cloneNode"),m=wn(u,"remove"),g=wn(u,"removeAttributeNode"),v=wn(u,"nextSibling"),k=wn(u,"childNodes"),L=wn(u,"parentNode"),M=wn(u,"shadowRoot"),D=wn(u,"attributes"),w=o&&o.prototype?wn(o.prototype,"nodeType"):null,x=o&&o.prototype?wn(o.prototype,"nodeName"):null,R=o&&o.prototype?wn(o.prototype,"ownerDocument"):null,X=function(p){return w?w(p):p.nodeType},j=function(p){return x?x(p):p.nodeName};if(typeof s=="function"){let C=t.createElement("template");C.content&&C.content.ownerDocument&&(t=C.content.ownerDocument)}let G,ie="",U,ge=!1,pe=0,ke=function(){if(pe>0)throw uo('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.')},B=function(p){ke(),pe++;try{return G.createHTML(p)}finally{pe--}},he=function(p){ke(),pe++;try{return G.createScriptURL(p)}finally{pe--}},J=function(){return ge||(U=JX(h,i),ge=!0),U},ve=t,$e=ve.implementation,Ue=ve.createNodeIterator,tt=ve.createDocumentFragment,pt=ve.getElementsByTagName,Zt=n.importNode,Oe=iT();e.isSupported=typeof sT=="function"&&typeof L=="function"&&$e&&$e.createHTMLDocument!==void 0;let nn=XX,sn=zX,on=WX,ci=BX,bs=VX,Xi=YX,di=FX,kn=jX,hi=tT,Se=null,Et=Ye({},[...HQ,...Ab,...Cb,...Eb,...KQ]),we=null,an=Ye({},[...JQ,...Rb,...eT,..._u]),He=Object.seal(Sa(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}})),jt=null,ln=null,mt=Object.seal(Sa(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Nn=!0,Xt=!0,$n=!1,jn=!0,yt=!1,se=!0,Y=!1,ne=!1,me=null,qe=null,Ne=!1,Ge=!1,vt=!1,rr=!1,cn=!0,ui=!1,zi="user-content-",fi=!0,nr=!1,fr={},pr=null,Wi=Ye({},["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"]),ys=null,Ss=Ye({},["audio","video","img","source","image","track"]),vs=null,xs=Ye({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Qn="http://www.w3.org/1998/Math/MathML",Tn="http://www.w3.org/2000/svg",Ot="http://www.w3.org/1999/xhtml",mr=Ot,pi=!1,mi=null,bo=Ye({},[Qn,Tn,Ot],_b),ws=It(["mi","mo","mn","ms","mtext"]),Oi=Ye({},ws),Ps=It(["annotation-xml"]),gi=Ye({},Ps),$a=Ye({},["title","style","font","a","script"]),Dr=null,Qa=["application/xhtml+xml","text/html"],Ta="text/html",_e=null,Or=null,_a=t.createElement("form"),ks=function(p){return p instanceof RegExp||p instanceof Function},bi=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Or&&Or===p)return;(!p||typeof p!="object")&&(p={}),p=tn(p),Dr=Qa.indexOf(p.PARSER_MEDIA_TYPE)===-1?Ta:p.PARSER_MEDIA_TYPE,_e=Dr==="application/xhtml+xml"?_b:sc,Se=ms(p,"ALLOWED_TAGS",Et,{transform:_e}),we=ms(p,"ALLOWED_ATTR",an,{transform:_e}),mi=ms(p,"ALLOWED_NAMESPACES",bo,{transform:_b}),vs=ms(p,"ADD_URI_SAFE_ATTR",xs,{transform:_e,base:xs}),ys=ms(p,"ADD_DATA_URI_TAGS",Ss,{transform:_e,base:Ss}),pr=ms(p,"FORBID_CONTENTS",Wi,{transform:_e}),jt=ms(p,"FORBID_TAGS",tn({}),{transform:_e}),ln=ms(p,"FORBID_ATTR",tn({}),{transform:_e}),fr=Mr(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?tn(p.USE_PROFILES):p.USE_PROFILES:!1,Nn=p.ALLOW_ARIA_ATTR!==!1,Xt=p.ALLOW_DATA_ATTR!==!1,$n=p.ALLOW_UNKNOWN_PROTOCOLS||!1,jn=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,yt=p.SAFE_FOR_TEMPLATES||!1,se=p.SAFE_FOR_XML!==!1,Y=p.WHOLE_DOCUMENT||!1,Ge=p.RETURN_DOM||!1,vt=p.RETURN_DOM_FRAGMENT||!1,rr=p.RETURN_TRUSTED_TYPE||!1,Ne=p.FORCE_BODY||!1,cn=p.SANITIZE_DOM!==!1,ui=p.SANITIZE_NAMED_PROPS||!1,fi=p.KEEP_CONTENT!==!1,nr=p.IN_PLACE||!1,hi=DX(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:tT,mr=typeof p.NAMESPACE=="string"?p.NAMESPACE:Ot,Oi=Mb(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Ye({},ws)),gi=Mb(p,"HTML_INTEGRATION_POINTS",()=>Ye({},Ps));let b=Mb(p,"CUSTOM_ELEMENT_HANDLING",()=>Sa(null));if(He=Sa(null),Mr(b,"tagNameCheck")&&ks(b.tagNameCheck)&&(He.tagNameCheck=b.tagNameCheck),Mr(b,"attributeNameCheck")&&ks(b.attributeNameCheck)&&(He.attributeNameCheck=b.attributeNameCheck),Mr(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(He.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),Ft(He),yt&&(Xt=!1),vt&&(Ge=!0),fr&&(Se=Ye({},KQ),we=Sa(null),fr.html===!0&&(Ye(Se,HQ),Ye(we,JQ)),fr.svg===!0&&(Ye(Se,Ab),Ye(we,Rb),Ye(we,_u)),fr.svgFilters===!0&&(Ye(Se,Cb),Ye(we,Rb),Ye(we,_u)),fr.mathMl===!0&&(Ye(Se,Eb),Ye(we,eT),Ye(we,_u))),mt.tagCheck=null,mt.attributeCheck=null,Mr(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?mt.tagCheck=p.ADD_TAGS:va(p.ADD_TAGS)&&(Se===Et&&(Se=tn(Se)),Ye(Se,p.ADD_TAGS,_e))),Mr(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?mt.attributeCheck=p.ADD_ATTR:va(p.ADD_ATTR)&&(we===an&&(we=tn(we)),Ye(we,p.ADD_ATTR,_e))),Mr(p,"ADD_FORBID_CONTENTS")&&va(p.ADD_FORBID_CONTENTS)&&(pr===Wi&&(pr=tn(pr)),Ye(pr,p.ADD_FORBID_CONTENTS,_e)),fi&&(Se["#text"]=!0),Y&&Ye(Se,["html","head","body"]),Se.table&&(Ye(Se,["tbody"]),delete jt.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw uo('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw uo('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let T=G;G=p.TRUSTED_TYPES_POLICY;try{ie=B("")}catch(I){throw G=T,I}}else p.TRUSTED_TYPES_POLICY===null?(G=void 0,ie=""):(G===void 0&&(G=J()),G&&typeof ie=="string"&&(ie=B("")));It&&It(p),Or=p},$s=Ye({},[...Ab,...Cb,...IX]),Qs=Ye({},[...Eb,...ZX]),yo=function(p,b,T){return b.namespaceURI===Ot?p==="svg":b.namespaceURI===Qn?p==="svg"&&(T==="annotation-xml"||Oi[T]):!!$s[p]},yi=function(p,b,T){return b.namespaceURI===Ot?p==="math":b.namespaceURI===Tn?p==="math"&&gi[T]:!!Qs[p]},So=function(p,b,T){return b.namespaceURI===Tn&&!gi[T]||b.namespaceURI===Qn&&!Oi[T]?!1:!Qs[p]&&($a[p]||!$s[p])},Un=function(p){let b=L(p);(!b||!b.tagName)&&(b={namespaceURI:mr,tagName:"template"});let T=sc(p.tagName),I=sc(b.tagName);return mi[p.namespaceURI]?p.namespaceURI===Tn?yo(T,b,I):p.namespaceURI===Qn?yi(T,b,I):p.namespaceURI===Ot?So(T,b,I):!!(Dr==="application/xhtml+xml"&&mi[p.namespaceURI]):!1},Rt=function(p){rc(e.removed,{element:p});try{L(p).removeChild(p)}catch(b){if(m(p),!L(p))throw uo("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},qn=function(p,b,T){try{g(p,b)}catch(I){try{p.removeAttribute(T)}catch(V){}}},Ir=function(p){Zr(p);let b=k(p);if(b){let I=[];fo(b,V=>{rc(I,V)}),fo(I,V=>{try{m(V)}catch(H){}})}let T=D(p);if(T)for(let I=T.length-1;I>=0;--I){let V=T[I],H=V&&V.name;typeof H=="string"&&qn(p,V,H)}},Ut=function(p,b,T){if(!T)try{T=b.getAttributeNode(p)}catch(I){T=null}rc(e.removed,{attribute:T||null,from:b});try{T?g(b,T):b.removeAttribute(p)}catch(I){try{b.removeAttribute(p)}catch(V){}}if(p==="is")if(Ge||vt)try{Rt(b)}catch(I){}else try{b.setAttribute(p,"")}catch(I){}},Aa=function(p){let b=D(p);if(b)for(let T=b.length-1;T>=0;--T){let I=b[T],V=I&&I.name;typeof V!="string"||we[_e(V)]||qn(p,I,V)}},Zr=function(p){let b=[p];for(;b.length>0;){let T=b.pop();X(T)===en.element&&Aa(T);let V=k(T);if(V)for(let H=V.length-1;H>=0;--H)b.push(V[H])}},Ts=function(p,b){return se?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},Ca=function(p){if(!se)return;let b=[p];for(;b.length>0;){let T=b.pop(),I=X(T);if(I===en.processingInstruction||I===en.comment&&ur(nT,T.data)){try{m(T)}catch(H){}continue}if(I===en.element){let H=T,Pe=_e(j(T));try{H.hasAttribute&&H.hasAttribute("patchsrc")&&H.removeAttribute("patchsrc"),H.hasAttribute&&H.hasAttribute("for")&&Ts("for",Pe)&&H.removeAttribute("for")}catch(Qe){}}let V=k(T);if(V)for(let H=V.length-1;H>=0;--H)b.push(V[H])}},y=function(p){let b=null,T=null;if(Ne)p="<remove></remove>"+p;else{let H=jQ(p,/^[\r\n\t ]+/);T=H&&H[0]}Dr==="application/xhtml+xml"&&mr===Ot&&(p='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+p+"</body></html>");let I=G?B(p):p;if(mr===Ot)try{b=new d().parseFromString(I,Dr)}catch(H){}if(!b||!b.documentElement){b=$e.createDocument(mr,"template",null);try{b.documentElement.innerHTML=pi?ie:I}catch(H){}}let V=b.body||b.documentElement;return p&&T&&V.insertBefore(t.createTextNode(T),V.childNodes[0]||null),mr===Ot?pt.call(b,Y?"html":"body")[0]:Y?b.documentElement:V},Q=function(p){let b=R?R(p):p.ownerDocument;return Ue.call(b||p,p,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},S=function(p){return p=nc(p,nn," "),p=nc(p,sn," "),p=nc(p,on," "),p},A=function(p){var b;p.normalize();let T=R?R(p):p.ownerDocument,I=Ue.call(T||p,p,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),V=I.nextNode();for(;V;)V.data=S(V.data),V=I.nextNode();let H=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");H&&fo(H,Pe=>{_(Pe.content)&&A(Pe.content)})},E=function(p){let b=x?x(p):null;return typeof b!="string"||_e(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==D(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!==w(p)||p.childNodes!==k(p)},_=function(p){if(!w||typeof p!="object"||p===null)return!1;try{return w(p)===en.documentFragment}catch(b){return!1}},z=function(p){if(!w||typeof p!="object"||p===null)return!1;try{return typeof w(p)=="number"}catch(b){return!1}};function W(C,p,b){C.length!==0&&fo(C,T=>{T.call(e,p,b,Or)})}let K=function(p,b){return!!(se&&p.hasChildNodes()&&!z(p.firstElementChild)&&ur(rT,p.textContent)&&ur(rT,p.innerHTML)||se&&p.namespaceURI===Ot&&GX[b]&&(z(p.firstElementChild)||typeof p.textContent=="string"&&ur(HX[b],p.textContent))||p.nodeType===en.processingInstruction||se&&p.nodeType===en.comment&&ur(nT,p.data))},q=function(p,b){if(p instanceof RegExp)return ur(p,b);if(p instanceof Function){for(var T=arguments.length,I=new Array(T>2?T-2:0),V=2;V<T;V++)I[V-2]=arguments[V];return!!p(b,...I)}return!1},re=function(p,b,T){if(!jt[b]&&nt(b)&&q(He.tagNameCheck,b))return!1;if(fi&&!pr[b]){let I=L(p),V=k(p);if(V&&I){let H=V.length;for(let Pe=H-1;Pe>=0;--Pe){let Qe=p===T?f(V[Pe],!0):V[Pe];I.insertBefore(Qe,v(p))}}}return Rt(p),!0},ue=function(p,b,T,I){return p.length===0?b:b===T||b===I?tn(b):b},Ae=function(p,b){return p===b||L(p)!==null?!1:(nr&&Zr(p),!0)},Ie=function(p,b){if(W(Oe.beforeSanitizeElements,p,null),Ae(p,b))return!0;if(E(p))return Rt(p),!0;let T=_e(j(p));if(Se=ue(Oe.uponSanitizeElement,Se,Et,me),W(Oe.uponSanitizeElement,p,{tagName:T,allowedTags:Se}),Ae(p,b))return!0;if(K(p,T))return Rt(p),!0;if(jt[T]||!(mt.tagCheck instanceof Function&&mt.tagCheck(T))&&!Se[T]){let V=re(p,T,b);return V===!1&&W(Oe.afterSanitizeElements,p,null),V}if(X(p)===en.element&&!Un(p)||(T==="noscript"||T==="noembed"||T==="noframes")&&ur(UX,p.innerHTML))return Rt(p),!0;if(yt&&p.nodeType===en.text){let V=S(p.textContent);p.textContent!==V&&(rc(e.removed,{element:p.cloneNode()}),p.textContent=V)}return W(Oe.afterSanitizeElements,p,null),!1},Xe=function(p,b,T){if(ln[b]||Ts(b,p)||cn&&(b==="id"||b==="name")&&(T in t||T in _a))return!1;let I=we[b]||mt.attributeCheck instanceof Function&&mt.attributeCheck(b,p);return Xt&&ur(ci,b)||Nn&&ur(bs,b)?!0:I?vs[b]||ur(hi,nc(T,di,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&UQ(T,"data:")===0&&ys[p]||$n&&!ur(Xi,nc(T,di,""))?!0:!T:nt(p)&&q(He.tagNameCheck,p)&&q(He.attributeNameCheck,b,p)||b==="is"&&He.allowCustomizedBuiltInElements&&q(He.tagNameCheck,T)},ht=Ye({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),nt=function(p){return!ht[sc(p)]&&ur(kn,p)},ir=function(p,b,T,I){if(G&&typeof h=="object"&&typeof h.getAttributeType=="function"&&!T)switch(h.getAttributeType(p,b)){case"TrustedHTML":return B(I);case"TrustedScriptURL":return he(I)}return I},Si=function(p,b,T,I){try{return T?p.setAttributeNS(T,b,I):p.setAttribute(b,I),E(p)?(Rt(p),!1):!0}catch(V){return Ut(b,p),!1}},vi=function(p){W(Oe.beforeSanitizeAttributes,p,null);let b=p.attributes;if(!b||E(p))return;we=ue(Oe.uponSanitizeAttribute,we,an,qe);let T={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:we,forceKeepAttr:void 0},I=b.length,V=_e(p.nodeName);for(;I--;){let H=b[I],Pe=H.name,Qe=H.namespaceURI,Ke=H.value,Je=_e(Pe),_s=Ke,je=Pe==="value"?_s:AX(_s),Ea=!1;if(T.attrName=Je,T.attrValue=je,T.keepAttr=!0,T.forceKeepAttr=void 0,W(Oe.uponSanitizeAttribute,p,T),je=T.attrValue,ui&&(Je==="id"||Je==="name")&&UQ(je,zi)!==0&&(Ut(Pe,p,H),je=zi+je,Ea=!0),se&&ur(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,je)){Ut(Pe,p,H);continue}if(Je==="attributename"&&jQ(je,"href")){Ut(Pe,p,H);continue}if(!T.forceKeepAttr){if(!T.keepAttr){Ut(Pe,p,H);continue}if(!jn&&ur(qX,je)){Ut(Pe,p,H);continue}if(yt&&(je=S(je)),!Xe(V,Je,je)){Ut(Pe,p,H);continue}je=ir(V,Je,Qe,je),je!==_s&&Si(p,Pe,Qe,je)&&Ea&&NQ(e.removed)}}W(Oe.afterSanitizeAttributes,p,null)},_n=function(p){let b=null,T=Q(p);for(W(Oe.beforeSanitizeShadowDOM,p,null);b=T.nextNode();)if(W(Oe.uponSanitizeShadowNode,b,null),Ie(b,p),vi(b),_(b.content)&&_n(b.content),X(b)===en.element){let I=M(b);_(I)&&(An(I),_n(I))}W(Oe.afterSanitizeShadowDOM,p,null)},An=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let T=b.pop();if(T.shadow){_n(T.shadow);continue}let I=T.node,H=X(I)===en.element,Pe=k(I);if(Pe)for(let Qe=Pe.length-1;Qe>=0;--Qe)b.push({node:Pe[Qe],shadow:null});if(H){let Qe=x?x(I):null;if(typeof Qe=="string"&&_e(Qe)==="template"){let Ke=I.content;_(Ke)&&b.push({node:Ke,shadow:null})}}if(H){let Qe=M(I);_(Qe)&&b.push({node:null,shadow:Qe},{node:Qe,shadow:null})}}};return e.sanitize=function(C){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,T=null,I=null,V=null;if(pi=!C,pi&&(C="<!-->"),typeof C!="string"&&!z(C)&&(C=LX(C),typeof C!="string"))throw uo("dirty is not a string, aborting");if(!e.isSupported)return C;ne?(Se=me,we=qe):bi(p),(Oe.uponSanitizeElement.length>0||Oe.uponSanitizeAttribute.length>0)&&(Se=tn(Se)),Oe.uponSanitizeAttribute.length>0&&(we=tn(we)),e.removed=[];let H=nr&&typeof C!="string"&&z(C);if(H){Ca(C);let Ke=j(C);if(typeof Ke=="string"){let Je=_e(Ke);if(!Se[Je]||jt[Je])throw Ir(C),uo("root node is forbidden and cannot be sanitized in-place")}if(E(C))throw Ir(C),uo("root node is clobbered and cannot be sanitized in-place");try{An(C)}catch(Je){throw Ir(C),Je}}else if(z(C))b=y("<!---->"),T=b.ownerDocument.importNode(C,!0),T.nodeType===en.element&&T.nodeName==="BODY"||T.nodeName==="HTML"?b=T:b.appendChild(T),An(b);else{if(!Ge&&!yt&&!Y&&C.indexOf("<")===-1)return G&&rr?B(C):C;if(b=y(C),!b)return Ge?null:rr?ie:""}b&&Ne&&Rt(b.firstChild);let Pe=H?C:b;try{let Ke=Q(Pe);for(;I=Ke.nextNode();)Ie(I,Pe),vi(I),_(I.content)&&_n(I.content)}catch(Ke){throw H&&(Ir(C),fo(e.removed,Je=>{Je.element&&Zr(Je.element)})),Ke}if(H)return fo(e.removed,Ke=>{Ke.element&&Zr(Ke.element)}),yt&&A(C),C;if(Ge){if(yt&&A(b),vt)for(V=tt.call(b.ownerDocument);b.firstChild;)V.appendChild(b.firstChild);else V=b;return(we.shadowroot||we.shadowrootmode)&&(V=Zt.call(n,V,!0)),V}let Qe=Y?b.outerHTML:b.innerHTML;return Y&&Se["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&ur(NX,b.ownerDocument.doctype.name)&&(Qe="<!DOCTYPE "+b.ownerDocument.doctype.name+`>
`+Qe),yt&&(Qe=S(Qe)),G&&rr?B(Qe):Qe},e.setConfig=function(){let C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};bi(C),ne=!0,me=Se,qe=we},e.clearConfig=function(){Or=null,ne=!1,me=null,qe=null,G=U,ie=""},e.isValidAttribute=function(C,p,b){Or||bi({});let T=_e(C),I=_e(p);return Xe(T,I,b)},e.addHook=function(C,p){typeof p=="function"&&Mr(Oe,C)&&rc(Oe[C],p)},e.removeHook=function(C,p){if(Mr(Oe,C)){if(p!==void 0){let b=TX(Oe[C],p);return b===-1?void 0:_X(Oe[C],b,1)[0]}return NQ(Oe[C])}},e.removeHooks=function(C){Mr(Oe,C)&&(Oe[C]=[])},e.removeAllHooks=function(){Oe=iT()},e}var ez=lT();cT.exports=ez});var qb=Hu(af());var Es="\u2190\u2191\u2193\u2192";var wc=[{keys:[Es],action:"Joypad"},{keys:["Space"],action:"Button A"},{keys:["Shift"],action:"Button B"}],lf=[{keys:[Es],action:"Joystick"},{keys:["Space"],action:"Button 1"},{keys:["Shift"],action:"Button 2"},{keys:["\\"],action:"Coin"},{keys:["Enter"],action:"Start"}],xc=[...wc,{keys:["\\"],action:"Select"},{keys:["Enter"],action:"Start"}],m0=[{keys:[Es],action:"Joystick"},{keys:["Space"],action:"Button"}],O0={vcs:m0,c64:m0,apple2:[{keys:["Mouse"],action:"Paddles/Joystick"},{keys:["Click"],action:"Button 1"},{keys:["SHIFT-Click"],action:"Button 2"},{keys:["ALT-Click"],action:"Button 3"}],nes:xc,atari7800:xc,pce:xc,gb:xc,msx:wc,coleco:wc,sms:[...wc,{keys:["Enter"],action:"Start"}],vicdual:lf,galaxian:lf,vector:lf,mw8080bw:[{keys:["\u2190\xA0\u2192"],action:"Joystick"},{keys:["Space"],action:"Fire"}],williams:[{keys:["A W S D"],action:"Move"},{keys:[Es],action:"Fire"},{keys:["\\"],action:"Coin"},{keys:["Enter"],action:"Start"},{keys:["6 7 8 9"],action:"Extra"}],astrocade:[{keys:[Es],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:[Es],action:"Joystick"},{keys:["Z X C V"],action:"Buttons"}],atari8:[{keys:[Es],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 o_={left:"arrowleft",right:"arrowright",up:"arrowup",down:"arrowdown"},cf=null;function Po(){if(cf===null){var r=typeof navigator!="undefined"?navigator:null;cf=!!r&&/mac|iphone|ipad|ipod/i.test(r.platform||r.userAgent||"")}return cf}function hf(r){var e=r.toLowerCase().split("+"),t=e.pop(),n={mod:!1,shift:!1,key:""};for(var i of e)if(i=="mod"||i=="ctrl"||i=="meta"||i=="cmd")n.mod=!0;else if(i=="shift")n.shift=!0;else return console.warn('Keyboard shortcut "'+r+'": unsupported modifier "'+i+'" (alt is layout-dependent), skipping'),null;t=o_[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 "'+r+'": key "'+t+'" is layout-dependent (use a-z, 0-9, f1-f12), skipping'),null):n.shift&&!s&&!/^arrow/.test(t)?(console.warn('Keyboard shortcut "'+r+'": shift is only allowed with letters and arrows, skipping'),null):(n.key=t,n)}function a_(r,e){if(e.altKey)return!1;var t=Po(),n=t?e.metaKey:e.ctrlKey,i=t?e.ctrlKey:e.metaKey;return r.mod!==n||i||r.shift!==e.shiftKey?!1:(e.key||"").toLowerCase()===r.key}var Pc=class{constructor(){this.bindings=[];this.handler=e=>{if(!e.defaultPrevented)for(var t=0;t<this.bindings.length;t++){var n=this.bindings[t];if(a_(n.binding,e)){e.preventDefault(),e.stopPropagation(),n.fn(e);return}}}}bind(e,t){var n=hf(e);n&&this.bindings.push({binding:n,fn:t})}unbindAll(){this.bindings=[]}attach(){window.addEventListener("keydown",this.handler)}detach(){window.removeEventListener("keydown",this.handler)}},l_={mod:"Mod",cmd:"Mod",meta:"Mod",ctrl:"Ctrl",control:"Ctrl",shift:"Shift",alt:"Alt",option:"Alt"},df=null;function c_(){if(df===null){var r=typeof navigator!="undefined"?navigator:null;df=!!r&&/win/i.test(r.platform||r.userAgent||"")}return df}function g0(r){var e=r.split("-"),t=e.pop();t===""&&(t="-");var n=[];for(var i of e)if(i!==""){var s=l_[i.toLowerCase()]||i;s=="Ctrl"&&!Po()&&(s="Mod"),n.indexOf(s)<0&&n.push(s)}return n.sort(),n.concat([t.toLowerCase()]).join("-")}function d_(r){var e=Po()?r.mac:c_()?r.win:r.linux;return e||r.key}var uf=["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 ff(r,e){var t=e.map(g0);return r.filter(function(n){var i=d_(n);return!i||t.indexOf(g0(i))<0})}var h_={shift:"\u21E7",ctrl:"\u2303",alt:"\u2325",meta:"\u2318",mod:"\u2318",cmd:"\u2318"},u_={shift:"Shift",ctrl:"Ctrl",alt:"Alt",meta:"Win",mod:"Ctrl",cmd:"Cmd"},f_={arrowleft:"\u2190",arrowright:"\u2192",arrowup:"\u2191",arrowdown:"\u2193",backspace:"\u232B",enter:"\u21A9",tab:"\u21E5",escape:"\u238B",space:"\u2423"};function mf(r){var e=r.toLowerCase().split("+"),t=e.pop(),n=Po(),i=n?["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=>n?h_[c]||c:u_[c]||c).join(n?"":"+"),l=/^[a-z][0-9]?$/.test(t)?t.toUpperCase():f_[t]||(n?t:t.charAt(0).toUpperCase()+t.slice(1));return(a?a+(n?"":"+"):"")+l}var pf=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(Ia){this.pendingShortcuts=!0;return}this.shortcutsSig=t,this.shortcutsZone.empty();for(var n of e){var i=$(document.createElement("span")).addClass("shortcut");i.append($(document.createElement("kbd")).text(mf(n.key))),i.append(document.createTextNode(" "+n.label)),n.fn&&b0(i,n.fn),this.shortcutsZone.append(i)}}}}setStatus(e,t){t?this.status[e]=t:delete this.status[e],this.renderStatus()}renderStatus(){if(this.visible){if(Ia){this.pendingStatus=!0;return}this.statusZone.empty();for(var e of Object.keys(this.status)){var t=this.status[e],n=$(document.createElement("span")).addClass("status_item");t.cls&&n.addClass(t.cls),t.title&&n.prop("title",t.title),n.text(t.text),t.fn&&b0(n,t.fn),this.statusZone.append(n)}}}};function b0(r,e){r.addClass("clickable"),r.mousedown(t=>t.preventDefault()),r.click(e)}var Ia=!1;function y0(){zr&&(zr.pendingShortcuts&&(zr.pendingShortcuts=!1,Wr()),zr.pendingStatus&&(zr.pendingStatus=!1,zr.renderStatus()))}function p_(){$(document).on("mousedown.shortcutbar",()=>{Ia=!0}),$(document).on("mouseup.shortcutbar",()=>{Ia=!1,y0()}),$(window).on("blur.shortcutbar",()=>{Ia=!1,y0()})}var zr=null;function S0(r){zr=new pf(r),p_()}var v0=()=>[],x0=()=>[];function w0(r){v0=r}function P0(r){x0=r}function kc(r){$(document.body).toggleClass("statusbar-hidden",!r),zr&&(zr.visible=r,r&&(zr.shortcutsSig="",zr.renderStatus(),Wr()))}function Wr(){if(zr){var r=[...v0(),...x0()],e=document.activeElement;for(var t of k0)e&&t.div.contains(e)&&(r=r.concat(t.fn()));zr.setShortcuts(r.filter(n=>!m_(n.key)))}}var k0=[];function $0(r,e){k0.push({div:r,fn:e})}function m_(r){var e=r.toLowerCase();return!Po()&&(e=="mod+shift+i"||e=="mod+shift+j"||e=="mod+shift+k"||e=="ctrl+alt+t"||e=="ctrl+alt+l")}function O_(){return h0()}function g_(r){if(r._8bwPatched)return r;var e=r.stopCallback;return r.stopCallback=function(t,n,i,s){return t&&(t.ctrlKey||t.altKey||t.metaKey)?t.getModifierState&&t.getModifierState("AltGraph")?e.call(this,t,n,i,s):!1:e.call(this,t,n,i,s)},r._8bwPatched=!0,r}var Bi=class{constructor(e,t){this.boundkeys=[];let n=g_(O_());this.focusDiv=t,this.keybinder=new Pc,this.keybinder.attach(),this.mousetrap=t?new n(t):n,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,n,i){var s=null;return n&&(s=$(document.createElement("button")).addClass("btn"),n.startsWith("glyphicon")&&(n='<span class="glyphicon '+n+'" aria-hidden="true"></span>'),s.html(n),s.prop("title",e?t+" ("+mf(e)+")":t),s.click(i),this.grp.append(s).show()),e&&(!this.focusDiv&&hf(e)?this.keybinder.bind(e,i):(this.mousetrap.bind(e,(o,a)=>(i(o,a),!1)),this.boundkeys.push(e))),s}};var Q0=[];function T0(r,e){Q0.push({div:r,id:e})}function _0(){let r=document.activeElement;if(!r)return null;for(let e of Q0)if(e.div.contains(r))return e.id;return null}function Br(r){var e=r&&r.w+"px"||"100%",t=r&&r.h+"px"||"100%",n=this.itemHeight=r.itemHeight;this.items=r.items,this.generatorFn=r.generatorFn,this.totalRows=r.totalRows||r.items&&r.items.length;var i=Br.createScroller(n*this.totalRows);this.container=Br.createContainer(e,t),this.container.appendChild(i);var s=Math.ceil(r.h/n);this.cachedItemsLen=s*3,this._renderChunk(this.container,0);var o=this,a,l=s*n,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/n)-s;o._renderChunk(o.container,f<0?0:f),a=u}c=Date.now(),h.preventDefault&&h.preventDefault()}this.container.addEventListener("scroll",d)}Br.prototype.createRow=function(r){var e;if(this.generatorFn)e=this.generatorFn(r);else if(this.items)if(typeof this.items[r]=="string"){var t=document.createTextNode(this.items[r]);e=document.createElement("div"),e.style.height=this.itemHeight+"px",e.appendChild(t)}else e=this.items[r];return e.classList.add("vrow"),e.setAttribute("data-index",""+r),e.style.position="absolute",e.style.top=r*this.itemHeight+"px",e};Br.prototype._renderChunk=function(r,e){var t=e+this.cachedItemsLen;t>this.totalRows&&(t=this.totalRows);for(var n=document.createDocumentFragment(),i=e;i<t;i++)n.appendChild(this.createRow(i));for(var s=1,o=r.childNodes.length;s<o;s++)r.childNodes[s].style.display="none",r.childNodes[s].setAttribute("data-rm","1");r.appendChild(n)};Br.createContainer=function(r,e){var t=document.createElement("div");return t.classList.add("vlist"),t.style.width=r,t.style.height=e,t.style.overflow="auto",t.style.position="relative",t.style.padding="0",t.style.border="1px solid black",t};Br.createScroller=function(r){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=r+"px",e};Br.prototype.scrollToItem=function(r){this.container.scrollTop=this.itemHeight*r};function A0(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=Array(e);t<e;t++)n[t]=r[t];return n}function b_(r){if(Array.isArray(r))return r}function y_(r,e){var t=r==null?null:typeof Symbol!="undefined"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var n,i,s,o,a=[],l=!0,c=!1;try{if(s=(t=t.call(r)).next,e!==0)for(;!(l=(n=s.call(t)).done)&&(a.push(n.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 S_(){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 v_(r,e){return b_(r)||y_(r,e)||x_(r,e)||S_()}function x_(r,e){if(r){if(typeof r=="string")return A0(r,e);var t={}.toString.call(r).slice(8,-1);return t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set"?Array.from(r):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?A0(r,e):void 0}}var F0=Object.entries,C0=Object.setPrototypeOf,w_=Object.isFrozen,P_=Object.getPrototypeOf,k_=Object.getOwnPropertyDescriptor,Mt=Object.freeze,Wt=Object.seal,ko=Object.create,N0=typeof Reflect!="undefined"&&Reflect,xf=N0.apply,wf=N0.construct;Mt||(Mt=function(e){return e});Wt||(Wt=function(e){return e});xf||(xf=function(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),s=2;s<n;s++)i[s-2]=arguments[s];return e.apply(t,i)});wf||(wf=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return new e(...n)});var Ms=$t(Array.prototype.forEach),$_=$t(Array.prototype.lastIndexOf),E0=$t(Array.prototype.pop),Za=$t(Array.prototype.push),Q_=$t(Array.prototype.splice),$o=Array.isArray,Wa=$t(String.prototype.toLowerCase),Of=$t(String.prototype.toString),R0=$t(String.prototype.match),Xa=$t(String.prototype.replace),M0=$t(String.prototype.indexOf),T_=$t(String.prototype.trim),__=$t(Number.prototype.toString),A_=$t(Boolean.prototype.toString),L0=typeof BigInt=="undefined"?null:$t(BigInt.prototype.toString),D0=typeof Symbol=="undefined"?null:$t(Symbol.prototype.toString),$r=$t(Object.prototype.hasOwnProperty),za=$t(Object.prototype.toString),or=$t(RegExp.prototype.test),Rs=C_(TypeError);function $t(r){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return xf(r,e,n)}}function C_(r){return function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return wf(r,t)}}function Ve(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Wa;if(C0&&C0(r,null),!$o(e))return r;let n=e.length;for(;n--;){let i=e[n];if(typeof i=="string"){let s=t(i);s!==i&&(w_(e)||(e[n]=s),i=s)}r[i]=!0}return r}function E_(r){for(let e=0;e<r.length;e++)$r(r,e)||(r[e]=null);return r}function Yr(r){let e=ko(null);for(let n of F0(r)){var t=v_(n,2);let i=t[0],s=t[1];$r(r,i)&&($o(s)?e[i]=E_(s):s&&typeof s=="object"&&s.constructor===Object?e[i]=Yr(s):e[i]=s)}return e}function R_(r){switch(typeof r){case"string":return r;case"number":return __(r);case"boolean":return A_(r);case"bigint":return L0?L0(r):"0";case"symbol":return D0?D0(r):"Symbol()";case"undefined":return za(r);case"function":case"object":{if(r===null)return za(r);let e=r,t=hn(e,"toString");if(typeof t=="function"){let n=t(e);return typeof n=="string"?n:za(n)}return za(r)}default:return za(r)}}function hn(r,e){for(;r!==null;){let n=k_(r,e);if(n){if(n.get)return $t(n.get);if(typeof n.value=="function")return $t(n.value)}r=P_(r)}function t(){return null}return t}function M_(r){try{return or(r,""),!0}catch(e){return!1}}var I0=Mt(["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"]),gf=Mt(["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"]),bf=Mt(["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"]),L_=Mt(["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"]),yf=Mt(["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"]),D_=Mt(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Z0=Mt(["#text"]),X0=Mt(["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"]),Sf=Mt(["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"]),z0=Mt(["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"]),$c=Mt(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),I_=Wt(/{{[\w\W]*|^[\w\W]*}}/g),Z_=Wt(/<%[\w\W]*|^[\w\W]*%>/g),X_=Wt(/\${[\w\W]*/g),z_=Wt(/^data-[\-\w.\u00B7-\uFFFF]+$/),W_=Wt(/^aria-[\-\w]+$/),W0=Wt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),B_=Wt(/^(?:\w+script|data):/i),V_=Wt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Y_=Wt(/^html$/i),F_=Wt(/^[a-z][.\w]*(-[.\w]+)+$/i),B0=Wt(/<[/\w!]/g),V0=Wt(/<[/\w]/g),N_=Wt(/<\/no(script|embed|frames)/i),j_=Wt(/\/>/i),Vr={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},j0=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],U_=Mt(Ve({},j0)),q_=(function(){let r={};return Ms(j0,e=>{r[e]=Wt(new RegExp("</"+e+"(?=[\\t\\n\\f\\r />])","i"))}),Mt(r)})(),G_=function(){return typeof window=="undefined"?null:window},H_=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";t&&t.hasAttribute(i)&&(n=t.getAttribute(i));let s="dompurify"+(n?"#"+n:"");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}},Y0=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Vi=function(e,t,n,i){return $r(e,t)&&$o(e[t])?Ve(i.base?Yr(i.base):{},e[t],i.transform):n},vf=function(e,t,n){let i=$r(e,t)?e[t]:void 0;return i&&typeof i=="object"?Yr(i):n()};function U0(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:G_(),e=C=>U0(C);if(e.version="3.4.15",e.removed=[],!r||!r.document||r.document.nodeType!==Vr.document||!r.Element)return e.isSupported=!1,e;let t=r.document,n=t,i=n.currentScript;r.DocumentFragment;let s=r.HTMLTemplateElement,o=r.Node,a=r.Element,l=r.NodeFilter,c=r.NamedNodeMap;c===void 0&&(r.NamedNodeMap||r.MozNamedAttrMap),r.HTMLFormElement;let d=r.DOMParser,h=r.trustedTypes,u=a.prototype,f=hn(u,"cloneNode"),m=hn(u,"remove"),g=hn(u,"removeAttributeNode"),v=hn(u,"nextSibling"),k=hn(u,"childNodes"),L=hn(u,"parentNode"),M=hn(u,"shadowRoot"),D=hn(u,"attributes"),w=o&&o.prototype?hn(o.prototype,"nodeType"):null,x=o&&o.prototype?hn(o.prototype,"nodeName"):null,R=o&&o.prototype?hn(o.prototype,"ownerDocument"):null,X=function(p){return w?w(p):p.nodeType},j=function(p){return x?x(p):p.nodeName};if(typeof s=="function"){let C=t.createElement("template");C.content&&C.content.ownerDocument&&(t=C.content.ownerDocument)}let G,ie="",U,ge=!1,pe=0,ke=function(){if(pe>0)throw Rs('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.')},B=function(p){ke(),pe++;try{return G.createHTML(p)}finally{pe--}},he=function(p){ke(),pe++;try{return G.createScriptURL(p)}finally{pe--}},J=function(){return ge||(U=H_(h,i),ge=!0),U},ve=t,$e=ve.implementation,Ue=ve.createNodeIterator,tt=ve.createDocumentFragment,pt=ve.getElementsByTagName,Zt=n.importNode,Oe=Y0();e.isSupported=typeof F0=="function"&&typeof L=="function"&&$e&&$e.createHTMLDocument!==void 0;let nn=I_,sn=Z_,on=X_,ci=z_,bs=W_,Xi=B_,di=V_,kn=F_,hi=W0,Se=null,Et=Ve({},[...I0,...gf,...bf,...yf,...Z0]),we=null,an=Ve({},[...X0,...Sf,...z0,...$c]),He=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}})),jt=null,ln=null,mt=Object.seal(ko(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Nn=!0,Xt=!0,$n=!1,jn=!0,yt=!1,se=!0,Y=!1,ne=!1,me=null,qe=null,Ne=!1,Ge=!1,vt=!1,rr=!1,cn=!0,ui=!1,zi="user-content-",fi=!0,nr=!1,fr={},pr=null,Wi=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"]),ys=null,Ss=Ve({},["audio","video","img","source","image","track"]),vs=null,xs=Ve({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Qn="http://www.w3.org/1998/Math/MathML",Tn="http://www.w3.org/2000/svg",Ot="http://www.w3.org/1999/xhtml",mr=Ot,pi=!1,mi=null,bo=Ve({},[Qn,Tn,Ot],Of),ws=Mt(["mi","mo","mn","ms","mtext"]),Oi=Ve({},ws),Ps=Mt(["annotation-xml"]),gi=Ve({},Ps),$a=Ve({},["title","style","font","a","script"]),Dr=null,Qa=["application/xhtml+xml","text/html"],Ta="text/html",_e=null,Or=null,_a=t.createElement("form"),ks=function(p){return p instanceof RegExp||p instanceof Function},bi=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Or&&Or===p)return;(!p||typeof p!="object")&&(p={}),p=Yr(p),Dr=Qa.indexOf(p.PARSER_MEDIA_TYPE)===-1?Ta:p.PARSER_MEDIA_TYPE,_e=Dr==="application/xhtml+xml"?Of:Wa,Se=Vi(p,"ALLOWED_TAGS",Et,{transform:_e}),we=Vi(p,"ALLOWED_ATTR",an,{transform:_e}),mi=Vi(p,"ALLOWED_NAMESPACES",bo,{transform:Of}),vs=Vi(p,"ADD_URI_SAFE_ATTR",xs,{transform:_e,base:xs}),ys=Vi(p,"ADD_DATA_URI_TAGS",Ss,{transform:_e,base:Ss}),pr=Vi(p,"FORBID_CONTENTS",Wi,{transform:_e}),jt=Vi(p,"FORBID_TAGS",Yr({}),{transform:_e}),ln=Vi(p,"FORBID_ATTR",Yr({}),{transform:_e}),fr=$r(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?Yr(p.USE_PROFILES):p.USE_PROFILES:!1,Nn=p.ALLOW_ARIA_ATTR!==!1,Xt=p.ALLOW_DATA_ATTR!==!1,$n=p.ALLOW_UNKNOWN_PROTOCOLS||!1,jn=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,yt=p.SAFE_FOR_TEMPLATES||!1,se=p.SAFE_FOR_XML!==!1,Y=p.WHOLE_DOCUMENT||!1,Ge=p.RETURN_DOM||!1,vt=p.RETURN_DOM_FRAGMENT||!1,rr=p.RETURN_TRUSTED_TYPE||!1,Ne=p.FORCE_BODY||!1,cn=p.SANITIZE_DOM!==!1,ui=p.SANITIZE_NAMED_PROPS||!1,fi=p.KEEP_CONTENT!==!1,nr=p.IN_PLACE||!1,hi=M_(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:W0,mr=typeof p.NAMESPACE=="string"?p.NAMESPACE:Ot,Oi=vf(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Ve({},ws)),gi=vf(p,"HTML_INTEGRATION_POINTS",()=>Ve({},Ps));let b=vf(p,"CUSTOM_ELEMENT_HANDLING",()=>ko(null));if(He=ko(null),$r(b,"tagNameCheck")&&ks(b.tagNameCheck)&&(He.tagNameCheck=b.tagNameCheck),$r(b,"attributeNameCheck")&&ks(b.attributeNameCheck)&&(He.attributeNameCheck=b.attributeNameCheck),$r(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(He.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),Wt(He),yt&&(Xt=!1),vt&&(Ge=!0),fr&&(Se=Ve({},Z0),we=ko(null),fr.html===!0&&(Ve(Se,I0),Ve(we,X0)),fr.svg===!0&&(Ve(Se,gf),Ve(we,Sf),Ve(we,$c)),fr.svgFilters===!0&&(Ve(Se,bf),Ve(we,Sf),Ve(we,$c)),fr.mathMl===!0&&(Ve(Se,yf),Ve(we,z0),Ve(we,$c))),mt.tagCheck=null,mt.attributeCheck=null,$r(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?mt.tagCheck=p.ADD_TAGS:$o(p.ADD_TAGS)&&(Se===Et&&(Se=Yr(Se)),Ve(Se,p.ADD_TAGS,_e))),$r(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?mt.attributeCheck=p.ADD_ATTR:$o(p.ADD_ATTR)&&(we===an&&(we=Yr(we)),Ve(we,p.ADD_ATTR,_e))),$r(p,"ADD_FORBID_CONTENTS")&&$o(p.ADD_FORBID_CONTENTS)&&(pr===Wi&&(pr=Yr(pr)),Ve(pr,p.ADD_FORBID_CONTENTS,_e)),fi&&(Se["#text"]=!0),Y&&Ve(Se,["html","head","body"]),Se.table&&(Ve(Se,["tbody"]),delete jt.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw Rs('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Rs('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let T=G;G=p.TRUSTED_TYPES_POLICY;try{ie=B("")}catch(I){throw G=T,I}}else p.TRUSTED_TYPES_POLICY===null?(G=void 0,ie=""):(G===void 0&&(G=J()),G&&typeof ie=="string"&&(ie=B("")));Mt&&Mt(p),Or=p},$s=Ve({},[...gf,...bf,...L_]),Qs=Ve({},[...yf,...D_]),yo=function(p,b,T){return b.namespaceURI===Ot?p==="svg":b.namespaceURI===Qn?p==="svg"&&(T==="annotation-xml"||Oi[T]):!!$s[p]},yi=function(p,b,T){return b.namespaceURI===Ot?p==="math":b.namespaceURI===Tn?p==="math"&&gi[T]:!!Qs[p]},So=function(p,b,T){return b.namespaceURI===Tn&&!gi[T]||b.namespaceURI===Qn&&!Oi[T]?!1:!Qs[p]&&($a[p]||!$s[p])},Un=function(p){let b=L(p);(!b||!b.tagName)&&(b={namespaceURI:mr,tagName:"template"});let T=Wa(p.tagName),I=Wa(b.tagName);return mi[p.namespaceURI]?p.namespaceURI===Tn?yo(T,b,I):p.namespaceURI===Qn?yi(T,b,I):p.namespaceURI===Ot?So(T,b,I):!!(Dr==="application/xhtml+xml"&&mi[p.namespaceURI]):!1},Rt=function(p){Za(e.removed,{element:p});try{L(p).removeChild(p)}catch(b){if(m(p),!L(p))throw Rs("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},qn=function(p,b,T){try{g(p,b)}catch(I){try{p.removeAttribute(T)}catch(V){}}},Ir=function(p){Zr(p);let b=k(p);if(b){let I=[];Ms(b,V=>{Za(I,V)}),Ms(I,V=>{try{m(V)}catch(H){}})}let T=D(p);if(T)for(let I=T.length-1;I>=0;--I){let V=T[I],H=V&&V.name;typeof H=="string"&&qn(p,V,H)}},Ut=function(p,b,T){if(!T)try{T=b.getAttributeNode(p)}catch(I){T=null}Za(e.removed,{attribute:T||null,from:b});try{T?g(b,T):b.removeAttribute(p)}catch(I){try{b.removeAttribute(p)}catch(V){}}if(p==="is")if(Ge||vt)try{Rt(b)}catch(I){}else try{b.setAttribute(p,"")}catch(I){}},Aa=function(p){let b=D(p);if(b)for(let T=b.length-1;T>=0;--T){let I=b[T],V=I&&I.name;typeof V!="string"||we[_e(V)]||qn(p,I,V)}},Zr=function(p){let b=[p];for(;b.length>0;){let T=b.pop();X(T)===Vr.element&&Aa(T);let V=k(T);if(V)for(let H=V.length-1;H>=0;--H)b.push(V[H])}},Ts=function(p,b){return se?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},Ca=function(p){if(!se)return;let b=[p];for(;b.length>0;){let T=b.pop(),I=X(T);if(I===Vr.processingInstruction||I===Vr.comment&&or(V0,T.data)){try{m(T)}catch(H){}continue}if(I===Vr.element){let H=T,Pe=_e(j(T));try{H.hasAttribute&&H.hasAttribute("patchsrc")&&H.removeAttribute("patchsrc"),H.hasAttribute&&H.hasAttribute("for")&&Ts("for",Pe)&&H.removeAttribute("for")}catch(Qe){}}let V=k(T);if(V)for(let H=V.length-1;H>=0;--H)b.push(V[H])}},y=function(p){let b=null,T=null;if(Ne)p="<remove></remove>"+p;else{let H=R0(p,/^[\r\n\t ]+/);T=H&&H[0]}Dr==="application/xhtml+xml"&&mr===Ot&&(p='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+p+"</body></html>");let I=G?B(p):p;if(mr===Ot)try{b=new d().parseFromString(I,Dr)}catch(H){}if(!b||!b.documentElement){b=$e.createDocument(mr,"template",null);try{b.documentElement.innerHTML=pi?ie:I}catch(H){}}let V=b.body||b.documentElement;return p&&T&&V.insertBefore(t.createTextNode(T),V.childNodes[0]||null),mr===Ot?pt.call(b,Y?"html":"body")[0]:Y?b.documentElement:V},Q=function(p){let b=R?R(p):p.ownerDocument;return Ue.call(b||p,p,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},S=function(p){return p=Xa(p,nn," "),p=Xa(p,sn," "),p=Xa(p,on," "),p},A=function(p){var b;p.normalize();let T=R?R(p):p.ownerDocument,I=Ue.call(T||p,p,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),V=I.nextNode();for(;V;)V.data=S(V.data),V=I.nextNode();let H=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");H&&Ms(H,Pe=>{_(Pe.content)&&A(Pe.content)})},E=function(p){let b=x?x(p):null;return typeof b!="string"||_e(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==D(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!==w(p)||p.childNodes!==k(p)},_=function(p){if(!w||typeof p!="object"||p===null)return!1;try{return w(p)===Vr.documentFragment}catch(b){return!1}},z=function(p){if(!w||typeof p!="object"||p===null)return!1;try{return typeof w(p)=="number"}catch(b){return!1}};function W(C,p,b){C.length!==0&&Ms(C,T=>{T.call(e,p,b,Or)})}let K=function(p,b){return!!(se&&p.hasChildNodes()&&!z(p.firstElementChild)&&or(B0,p.textContent)&&or(B0,p.innerHTML)||se&&p.namespaceURI===Ot&&U_[b]&&(z(p.firstElementChild)||typeof p.textContent=="string"&&or(q_[b],p.textContent))||p.nodeType===Vr.processingInstruction||se&&p.nodeType===Vr.comment&&or(V0,p.data))},q=function(p,b){if(p instanceof RegExp)return or(p,b);if(p instanceof Function){for(var T=arguments.length,I=new Array(T>2?T-2:0),V=2;V<T;V++)I[V-2]=arguments[V];return!!p(b,...I)}return!1},re=function(p,b,T){if(!jt[b]&&nt(b)&&q(He.tagNameCheck,b))return!1;if(fi&&!pr[b]){let I=L(p),V=k(p);if(V&&I){let H=V.length;for(let Pe=H-1;Pe>=0;--Pe){let Qe=p===T?f(V[Pe],!0):V[Pe];I.insertBefore(Qe,v(p))}}}return Rt(p),!0},ue=function(p,b,T,I){return p.length===0?b:b===T||b===I?Yr(b):b},Ae=function(p,b){return p===b||L(p)!==null?!1:(nr&&Zr(p),!0)},Ie=function(p,b){if(W(Oe.beforeSanitizeElements,p,null),Ae(p,b))return!0;if(E(p))return Rt(p),!0;let T=_e(j(p));if(Se=ue(Oe.uponSanitizeElement,Se,Et,me),W(Oe.uponSanitizeElement,p,{tagName:T,allowedTags:Se}),Ae(p,b))return!0;if(K(p,T))return Rt(p),!0;if(jt[T]||!(mt.tagCheck instanceof Function&&mt.tagCheck(T))&&!Se[T]){let V=re(p,T,b);return V===!1&&W(Oe.afterSanitizeElements,p,null),V}if(X(p)===Vr.element&&!Un(p)||(T==="noscript"||T==="noembed"||T==="noframes")&&or(N_,p.innerHTML))return Rt(p),!0;if(yt&&p.nodeType===Vr.text){let V=S(p.textContent);p.textContent!==V&&(Za(e.removed,{element:p.cloneNode()}),p.textContent=V)}return W(Oe.afterSanitizeElements,p,null),!1},Xe=function(p,b,T){if(ln[b]||Ts(b,p)||cn&&(b==="id"||b==="name")&&(T in t||T in _a))return!1;let I=we[b]||mt.attributeCheck instanceof Function&&mt.attributeCheck(b,p);return Xt&&or(ci,b)||Nn&&or(bs,b)?!0:I?vs[b]||or(hi,Xa(T,di,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&M0(T,"data:")===0&&ys[p]||$n&&!or(Xi,Xa(T,di,""))?!0:!T:nt(p)&&q(He.tagNameCheck,p)&&q(He.attributeNameCheck,b,p)||b==="is"&&He.allowCustomizedBuiltInElements&&q(He.tagNameCheck,T)},ht=Ve({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),nt=function(p){return!ht[Wa(p)]&&or(kn,p)},ir=function(p,b,T,I){if(G&&typeof h=="object"&&typeof h.getAttributeType=="function"&&!T)switch(h.getAttributeType(p,b)){case"TrustedHTML":return B(I);case"TrustedScriptURL":return he(I)}return I},Si=function(p,b,T,I){try{return T?p.setAttributeNS(T,b,I):p.setAttribute(b,I),E(p)?(Rt(p),!1):!0}catch(V){return Ut(b,p),!1}},vi=function(p){W(Oe.beforeSanitizeAttributes,p,null);let b=p.attributes;if(!b||E(p))return;we=ue(Oe.uponSanitizeAttribute,we,an,qe);let T={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:we,forceKeepAttr:void 0},I=b.length,V=_e(p.nodeName);for(;I--;){let H=b[I],Pe=H.name,Qe=H.namespaceURI,Ke=H.value,Je=_e(Pe),_s=Ke,je=Pe==="value"?_s:T_(_s),Ea=!1;if(T.attrName=Je,T.attrValue=je,T.keepAttr=!0,T.forceKeepAttr=void 0,W(Oe.uponSanitizeAttribute,p,T),je=T.attrValue,ui&&(Je==="id"||Je==="name")&&M0(je,zi)!==0&&(Ut(Pe,p,H),je=zi+je,Ea=!0),se&&or(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,je)){Ut(Pe,p,H);continue}if(Je==="attributename"&&R0(je,"href")){Ut(Pe,p,H);continue}if(!T.forceKeepAttr){if(!T.keepAttr){Ut(Pe,p,H);continue}if(!jn&&or(j_,je)){Ut(Pe,p,H);continue}if(yt&&(je=S(je)),!Xe(V,Je,je)){Ut(Pe,p,H);continue}je=ir(V,Je,Qe,je),je!==_s&&Si(p,Pe,Qe,je)&&Ea&&E0(e.removed)}}W(Oe.afterSanitizeAttributes,p,null)},_n=function(p){let b=null,T=Q(p);for(W(Oe.beforeSanitizeShadowDOM,p,null);b=T.nextNode();)if(W(Oe.uponSanitizeShadowNode,b,null),Ie(b,p),vi(b),_(b.content)&&_n(b.content),X(b)===Vr.element){let I=M(b);_(I)&&(An(I),_n(I))}W(Oe.afterSanitizeShadowDOM,p,null)},An=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let T=b.pop();if(T.shadow){_n(T.shadow);continue}let I=T.node,H=X(I)===Vr.element,Pe=k(I);if(Pe)for(let Qe=Pe.length-1;Qe>=0;--Qe)b.push({node:Pe[Qe],shadow:null});if(H){let Qe=x?x(I):null;if(typeof Qe=="string"&&_e(Qe)==="template"){let Ke=I.content;_(Ke)&&b.push({node:Ke,shadow:null})}}if(H){let Qe=M(I);_(Qe)&&b.push({node:null,shadow:Qe},{node:Qe,shadow:null})}}};return e.sanitize=function(C){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,T=null,I=null,V=null;if(pi=!C,pi&&(C="<!-->"),typeof C!="string"&&!z(C)&&(C=R_(C),typeof C!="string"))throw Rs("dirty is not a string, aborting");if(!e.isSupported)return C;ne?(Se=me,we=qe):bi(p),(Oe.uponSanitizeElement.length>0||Oe.uponSanitizeAttribute.length>0)&&(Se=Yr(Se)),Oe.uponSanitizeAttribute.length>0&&(we=Yr(we)),e.removed=[];let H=nr&&typeof C!="string"&&z(C);if(H){Ca(C);let Ke=j(C);if(typeof Ke=="string"){let Je=_e(Ke);if(!Se[Je]||jt[Je])throw Ir(C),Rs("root node is forbidden and cannot be sanitized in-place")}if(E(C))throw Ir(C),Rs("root node is clobbered and cannot be sanitized in-place");try{An(C)}catch(Je){throw Ir(C),Je}}else if(z(C))b=y("<!---->"),T=b.ownerDocument.importNode(C,!0),T.nodeType===Vr.element&&T.nodeName==="BODY"||T.nodeName==="HTML"?b=T:b.appendChild(T),An(b);else{if(!Ge&&!yt&&!Y&&C.indexOf("<")===-1)return G&&rr?B(C):C;if(b=y(C),!b)return Ge?null:rr?ie:""}b&&Ne&&Rt(b.firstChild);let Pe=H?C:b;try{let Ke=Q(Pe);for(;I=Ke.nextNode();)Ie(I,Pe),vi(I),_(I.content)&&_n(I.content)}catch(Ke){throw H&&(Ir(C),Ms(e.removed,Je=>{Je.element&&Zr(Je.element)})),Ke}if(H)return Ms(e.removed,Ke=>{Ke.element&&Zr(Ke.element)}),yt&&A(C),C;if(Ge){if(yt&&A(b),vt)for(V=tt.call(b.ownerDocument);b.firstChild;)V.appendChild(b.firstChild);else V=b;return(we.shadowroot||we.shadowrootmode)&&(V=Zt.call(n,V,!0)),V}let Qe=Y?b.outerHTML:b.innerHTML;return Y&&Se["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&or(Y_,b.ownerDocument.doctype.name)&&(Qe="<!DOCTYPE "+b.ownerDocument.doctype.name+`>
`+Qe),yt&&(Qe=S(Qe)),G&&rr?B(Qe):Qe},e.setConfig=function(){let C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};bi(C),ne=!0,me=Se,qe=we},e.clearConfig=function(){Or=null,ne=!1,me=null,qe=null,G=U,ie=""},e.isValidAttribute=function(C,p,b){Or||bi({});let T=_e(C),I=_e(p);return Xe(T,I,b)},e.addHook=function(C,p){typeof p=="function"&&$r(Oe,C)&&Za(Oe[C],p)},e.removeHook=function(C,p){if($r(Oe,C)){if(p!==void 0){let b=$_(Oe[C],p);return b===-1?void 0:Q_(Oe[C],b,1)[0]}return E0(Oe[C])}},e.removeHooks=function(C){$r(Oe,C)&&(Oe[C]=[])},e.removeAllHooks=function(){Oe=Y0()},e}var Yi=U0();var K_=$f(),q0=["clk","reset"],Qf=class{constructor(e,t){this.lines=[];this.zoom=8;this.t0=0;this.tsel=-1;this.tnow=-1;this.hexformat=!0;this.scrollbarWidth=12;this.parent=e,this.wfp=t,this.parent.setAttribute("tabindex","-1"),this.parent.addEventListener("mousedown",n=>{n.preventDefault(),this.parent.focus()}),$0(this.parent,()=>this.getShortcuts()),T0(this.parent,"verilog-waveform"),this.recreate()}getShortcuts(){return[{key:"=",label:"Zoom In",fn:()=>this.setZoom(this.zoom*2)},{key:"-",label:"Zoom Out",fn:()=>this.setZoom(this.zoom/2)},{key:"ctrl+shift+left",label:"To Start",fn:()=>{this.setSelTime(0),this.setOrgTime(0)}},{key:"shift+left",label:"Page Left",fn:()=>this.setSelTime(this.tsel-this.clocksPerPage/4)},{key:"left",label:"Left",fn:()=>this.setSelTime(this.tsel-1)},{key:"right",label:"Right",fn:()=>this.setSelTime(this.tsel+1)},{key:"shift+right",label:"Page Right",fn:()=>this.setSelTime(this.tsel+this.clocksPerPage/4)},{key:"space",label:"Go To Current",fn:()=>{this.setOrgTime(this.tnow),this.setSelTime(this.tnow)}},{key:"h",label:"Hex/Dec",fn:()=>{this.hexformat=!this.hexformat,this.refresh()}}]}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 e=$(this.parent).width();this.pageWidth=e-this.scrollbarWidth;var t=40;this.setClocksPerPage(),this.clockMax=0,this.wavelist=new Br({w:e,h:$(this.parent).height(),itemHeight:t,totalRows:this.meta.length+1,generatorFn:o=>{var a=this.meta[o];let l=document.createElement("div"),c=document.createElement("canvas");return c.width=e-12,c.height=t,l.appendChild(c),l.classList.add("waverow"),this.lines[o]=c,this.refreshRow(o),a&&a.input&&q0.indexOf(a.label)<0&&(l.onmousedown=d=>{var h=this.meta[o];h&&h.input&&this.changeInputValue(o)},l.classList.add("editable"),l.style.cursor="grab"),l}});var n=this.wavelist.container;n.tabIndex=-1,this.toolbar=new Bi(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(n);var i=!1,s=o=>{this.setSelTime(o.offsetX/this.zoom+this.t0-.5)};$(n).mousedown(o=>{i=!0,s(o)}),$(n).mousemove(o=>{i&&s(o)}),$(n).mouseup(o=>{i=!1}),$(n).on("wheel",o=>{if(Math.abs(o.originalEvent.deltaX)>Math.abs(o.originalEvent.deltaY)){var a=Math.max(-1e3,Math.min(1e3,o.originalEvent.deltaX));a&&this.setOrgTime(this.t0+a)}}),this.toolbar.add("=","Zoom In","glyphicon-zoom-in",(o,a)=>{this.setZoom(this.zoom*2)}),this.toolbar.add("+","Zoom In",null,(o,a)=>{this.setZoom(this.zoom*2)}),this.toolbar.add("-","Zoom Out","glyphicon-zoom-out",(o,a)=>{this.setZoom(this.zoom/2)}),this.toolbar.add("ctrl+shift+left","Move to beginning","glyphicon-backward",(o,a)=>{this.setSelTime(0),this.setOrgTime(0)}),this.toolbar.add("shift+left","Move left 1/4 page","glyphicon-fast-backward",(o,a)=>{this.setSelTime(this.tsel-this.clocksPerPage/4)}),this.toolbar.add("left","Move left 1 clock","glyphicon-step-backward",(o,a)=>{this.setSelTime(this.tsel-1)}),this.toolbar.add("right","Move right 1 clock","glyphicon-step-forward",(o,a)=>{this.setSelTime(this.tsel+1)}),this.toolbar.add("shift+right","Move right 1/4 page","glyphicon-fast-forward",(o,a)=>{this.setSelTime(this.tsel+this.clocksPerPage/4)}),this.toolbar.add("space","Go to current time","glyphicon-flash",(o,a)=>{this.setOrgTime(this.tnow),this.setSelTime(this.tnow)}),this.toolbar.add("h","Switch between hex/decimal format","glyphicon-barcode",(o,a)=>{this.hexformat=!this.hexformat,this.refresh()}),$(window).resize(()=>{this.recreate()})}}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.clklabel.innerText=" clk "+this.tsel}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 n=this.hexformat?16:10,i=e.toString(n);return n==16&&t&&t.len>3&&(i=`${t.len}'h${i}`),i}refreshRow(e){var t=this.lines[e],n=this.meta[e];if(!t||!n)return;var i=n.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=[];n.input&&q0.indexOf(n.label)<0&&d.push("input");var h=12,u=h+4,f=4,m=o-u-f,g=n.len==32?4294967296:(1<<n.len)-1||0,v=this.wfp.getSignalData(e,this.t0,Math.ceil(s/this.zoom));this.clockMax=Math.max(this.clockMax,this.t0+v.length);var k=n.len>1&&this.zoom>=32,L=u+m-4;a.fillStyle="#336633",a.fillRect(0,h/2,3,u+m-h/2);let M=a.strokeStyle="#33dd33",D=a.fillStyle="#66ffff",w="#dddddd";a.beginPath();for(var x=0,R=0,X=-1,j=0;j<v.length;j++){var G=v[j];if(k&&G!=X&&x<s-100){var ie=L,U=this.value2str(G,null);U.length>4&&(a.font=c),a.fillText(U,x+this.zoom/4,ie)}j>0&&a.lineTo(x,R),R=u+(1-G/g)*m,i||(x+=this.zoom*(1/8)),j==0?a.moveTo(x,R):a.lineTo(x,R),this.zoom>.75&&X!=G&&Math.abs(X-G)<g*.1&&a.fillRect(x,R,1+this.zoom/4,1),i?x+=this.zoom:x+=this.zoom*(7/8),X=G}if(a.stroke(),a.font=l,this.tsel>=this.t0){a.strokeStyle=a.fillStyle="#ff66ff",a.beginPath(),x=(this.tsel-this.t0)*this.zoom+this.zoom/2,a.moveTo(x,0),a.lineTo(x,o),a.stroke();var G=v[this.tsel-this.t0];if(a.textAlign="right",G!==void 0){var ge=this.value2str(G,n),x=s-h,pe=a.measureText(ge);a.fillStyle="black",a.fillRect(x-pe.width-2,L-13,pe.width+4,17),a.fillStyle="#ff66ff",a.fillText(ge,x,L)}}this.tnow>=this.t0&&(a.strokeStyle=a.fillStyle="#6666cc",a.beginPath(),x=(this.tnow-this.t0)*this.zoom+this.zoom/2,a.moveTo(x,0),a.lineTo(x,o),a.stroke()),a.fillStyle=w,a.textAlign="left";var ke=n.label;d.length>0&&(ke+=" ("+d.join(", ")+")"),a.fillText(ke,5,h)}changeInputValue(e){var t=this.meta[e];if(t){var n=this.wfp.getSignalData(e,this.t0,1),i=n[0]||0,s=0,o=(1<<t.len)-1;if(o==1)this.wfp.setSignalValue(e,i>0?0:1);else{var a=`${s} to ${o}`;bootbox.prompt({value:i+"",inputType:"number",title:`Enter new value for "${Yi.sanitize(t.label)}" (${a}):`,callback:l=>{if(l!=null){var c=parseInt(l);c>=s&&c<=o&&this.wfp.setSignalValue(e,parseInt(l))}}})}}}},Qc=class{constructor(e,t){this.provider=t;var n=$("#emuoverlay").show();this.topdiv=$('<div class="emuspacer">').appendTo(n)[0],this.topdiv.appendChild(e),this.wavediv=$('<div class="emuscope">').appendTo(n)[0],this.split=K_([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 Qf(this.wavediv,this.provider))}resize(){this.waveview&&this.waveview.recreate()}};function G0(){d0({createScope:(r,e)=>new Qc(r,e),showVideoControls(r){$("#speed_bar, #run_bar, #dbg_record").toggle(r)},showSettleCount(r){r==null?$("#verilog_bar").hide():($("#verilog_bar").show(),$("#settle_label").text(r+""))}})}var it=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],J_=[...it,/^\s*[.]?(include|incbin)\s+([^\s;"]+)/gmi],eA=[...it,/^\s*#pragma\s+compile\s*\(\s*"([^"]+)"\s*\)/gmi],lt=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],Ba=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],tA=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function J0(r){let e=r&&qt(r);return e&&e.includeDirs&&e.includeDirs.length?tA:[]}var H0=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],rA=[/^[!]src\s+"(.+?)"/gmi],nA=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],iA=[/^\s*(import)\s*"(.+?)"/gmi],sA=[/^\s*%%\s*#include\s+"(.+?)"/gm],oA={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"}},K0={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:J_,linkPatterns:lt},acme:{id:"acme",name:"ACME",kind:"assembler",arch:"6502",extensions:[".acme"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/sehugg/acme/main/docs/QuickRef.txt",wasmModule:"acme",version:"0.97.1",includePatterns:[...it,...rA],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:it,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:it,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.10",includePatterns:[...it,...H0],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:K0,includePatterns:it,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:K0,includePatterns:it,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"],includeDirs:["/include"],editorStyle:"text/x-csrc",helpURL:"http://sdcc.sourceforge.net/doc/sdccman.pdf",wasmModule:"sdcc",version:"3.6.5",defineFlag:"-D",defineInline:!0,platforms:{default:{preloadFS:"sdcc"}},includePatterns:it,linkPatterns:lt},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasz80",version:"02.00",platforms:{default:{preloadFS:"sdcc"}},includePatterns:it,linkPatterns:lt},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:it,linkPatterns:lt},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdldz80",version:"03.00",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/sehugg/zmac/master/doc.txt",wasmModule:"zmac",version:"28jul2018",includePatterns:it,linkPatterns:lt},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:Ba,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...it,...H0],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:it,linkPatterns:lt},lwasm:{id:"lwasm",name:"LWASM",kind:"assembler",arch:"6809",extensions:[".lwasm"],editorStyle:"6809",wasmModule:"lwasm",version:"4.17",includePatterns:it,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:it,linkPatterns:lt},armips:{id:"armips",name:"armips",kind:"assembler",arch:"arm32",extensions:[".armips"],editorStyle:"vasm",wasmModule:"armips",version:"0.11.0",includePatterns:it,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:it,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:it,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:it,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:eA,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:it,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:it,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:it,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:it,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:nA},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:[...it,...iA]},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:sA},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:Ba,linkPatterns:[]},yosys:{id:"yosys",name:"Yosys",kind:"hdl",arch:"verilog",extensions:[],wasmModule:"yosys",includePatterns:Ba,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:Ba,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:it,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(r){return Qo[r.replace(/^remote:/,"")]}function ey(r,e){let t=qt(r);if(!t||!e)return;let n=oA[t.id];if(!n)return;let i=n[e];if(!i){let s=Xr(e);s&&s!==e&&(i=n[s])}return i}function ty(r){let e=[];for(let t in Qo){let n=Qo[t];for(let i of n.extensions)if(i&&r.endsWith(i)){e.push({meta:n,len:i.length});break}}return e.sort((t,n)=>n.len-t.len).map(t=>t.meta)}function aA(r,e){let t=r&&qt(r);if(!(!t||!t.platforms)){if(e){let n=t.platforms[e];if(n)return n;let i=Xr(e);if(i&&i!==e&&t.platforms[i])return t.platforms[i]}return t.platforms.default}}function lA(r,e){let t=qt(r);if(t&&t.platforms){if(e){let i=t.platforms[e];if(i&&i.preloadFS)return i.preloadFS;let s=Xr(e);if(s&&s!==e){let o=t.platforms[s];if(o&&o.preloadFS)return o.preloadFS}}let n=t.platforms.default;if(n&&n.preloadFS)return n.preloadFS}}function Tf(r){let e=qt(r);return e&&e.skeleton?e.skeleton:r.replace(/^remote:/,"")}function Tc(r,e){let t=r&&qt(r);return t&&t.includePatterns?t.includePatterns:e&&e.startsWith("verilog")?Ba:it}function _c(r,e){let t=r&&qt(r);return t&&t.linkPatterns?t.linkPatterns:e&&e.startsWith("verilog")?[]:lt}function ry(r){let e=r&&qt(r);return!!(e&&e.compileLinkedSources)}function Ac(r,e){e=e&&Xr(e);let t=r&&qt(r),n=t&&t.includeDirs||[];return n=n.map(i=>i.replace("$platform",e)),n}function Cc(r,e){var t=lA(r,e);if(t)return t;let n=aA(r,e);if(n&&n.wasiFSZip)return"wasi:"+n.wasiFSZip;let i=r&&qt(r);return i&&i.wasiFSZip?"wasi:"+i.wasiFSZip:void 0}function ny(r,e){let t=[],n=r.split(`
`);for(let i of e||[]){let s=i instanceof RegExp?{re:i}:i;for(let o of n){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 Cn={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"],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"],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,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"],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"]},"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"],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}};Cn["sms-sms-libcv"]=As(gt({},Cn["sms-sg1000-libcv"]),{extra_preproc_args:["-I",".","-D","CV_SMS","-D","CV_MODE4"]});Cn["sms-gg-libcv"]=Cn["sms-sms-libcv"];Cn["gb.color"]=As(gt({},Cn.gb),{extra_link_args:Cn.gb.extra_link_args.map(r=>r==="GB_CGB_FLAGS=0x0"?"GB_CGB_FLAGS=0x80":r)});var cA=10,dA=1e4,iy="/error.php",hA=2e3,sy=0,oy="",ay=0;function Fi(r,e){try{if(r==null)return"";var t=typeof r=="string"?r:typeof r=="object"?JSON.stringify(r):r+"";return t.substring(0,e)}catch(n){return""}}function ly(r,e,t){try{if(sy>=cA)return;var n=Date.now();if(r===oy&&n-ay<dA)return;sy++,oy=r,ay=n;var i={msg:Fi(r,500),stack:Fi(e&&e.stack,2e3),window:Fi(t&&t.window,200),platform:Fi(t&&t.platform,200),url:Fi(window.location.href,500),userAgent:Fi(navigator.userAgent,500),language:Fi(navigator.language,50),clientTime:new Date().toISOString()};if(t)for(var s in t)s in i||(i[s]=Fi(t[s],hA));var o=JSON.stringify(i);typeof navigator!="undefined"&&navigator.sendBeacon?navigator.sendBeacon(iy,new Blob([o],{type:"application/json"})):typeof fetch!="undefined"&&fetch(iy,{method:"POST",headers:{"Content-Type":"application/json"},body:o,keepalive:!0}).catch(function(){})}catch(a){}}function st(r){r?(En(0),$("#pleaseWaitModal").modal("show")):(En(1),$("#pleaseWaitModal").modal("hide"))}function En(r){$("#pleaseWaitProgressBar").css("width",r*100+"%").show()}function Re(r){st(!1),bootbox.alert({title:'<span class="glyphicon glyphicon-alert" aria-hidden="true"></span> Alert',message:Yi.sanitize(r)})}function ar(r){st(!1),bootbox.alert(Yi.sanitize(r))}function cy(r){throw Re(r),new Error(r)}var Af=[],fy=[];(()=>{let r="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<r.length;e++)(e%2?fy:Af).push(t=t+r[e])})();function uA(r){if(r<768)return!1;for(let e=0,t=Af.length;;){let n=e+t>>1;if(r<Af[n])t=n;else if(r>=fy[n])e=n+1;else return!0;if(e==t)return!1}}function dy(r){return r>=127462&&r<=127487}var hy=8205;function py(r,e,t=!0,n=!0){return(t?my:fA)(r,e,n)}function my(r,e,t){if(e==r.length)return e;e&&Oy(r.charCodeAt(e))&&gy(r.charCodeAt(e-1))&&e--;let n=_f(r,e);for(e+=uy(n);e<r.length;){let i=_f(r,e);if(n==hy||i==hy||t&&uA(i))e+=uy(i),n=i;else if(dy(i)){let s=0,o=e-2;for(;o>=0&&dy(_f(r,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}function fA(r,e,t){for(;e>1;){let n=my(r,e-2,t);if(n<e)return n;e--}return 0}function _f(r,e){let t=r.charCodeAt(e);if(!gy(t)||e+1==r.length)return t;let n=r.charCodeAt(e+1);return Oy(n)?(t-55296<<10)+(n-56320)+65536:t}function Oy(r){return r>=56320&&r<57344}function gy(r){return r>=55296&&r<56320}function uy(r){return r<65536?1:2}var Le=class r{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,n){[e,t]=Co(this,e,t);let i=[];return this.decompose(0,e,i,2),n.length&&n.decompose(0,n.length,i,3),this.decompose(t,this.length,i,1),To.from(i,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Co(this,e,t);let n=[];return this.decompose(e,t,n,0),To.from(n,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),n=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>=n)return!0}}iter(e=1){return new Zs(this,e)}iterRange(e,t=this.length){return new Dc(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t==null&&(t=this.lines+1);let i=this.line(e).from;n=this.iterRange(i,Math.max(i,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Ic(n)}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]?r.empty:e.length<=32?new Fr(e):To.from(Fr.split(e,[]))}},Fr=class r extends Le{constructor(e,t=pA(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,i){for(let s=0;;s++){let o=this.text[s],a=i+o.length;if((t?n:a)>=e)return new Ef(i,a,n,o);i=a+1,n++}}decompose(e,t,n,i){let s=e<=0&&t>=this.length?this:new r(by(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(i&1){let o=n.pop(),a=Lc(s.text,o.text.slice(),0,s.length);if(a.length<=32)n.push(new r(a,o.length+s.length));else{let l=a.length>>1;n.push(new r(a.slice(0,l)),new r(a.slice(l)))}}else n.push(s)}replace(e,t,n){if(!(n instanceof r))return super.replace(e,t,n);[e,t]=Co(this,e,t);let i=Lc(this.text,Lc(n.text,by(this.text,0,e)),t),s=this.length+n.length-(t-e);return i.length<=32?new r(i,s):To.from(r.split(i,[]),s)}sliceString(e,t=this.length,n=`
`){[e,t]=Co(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+=n),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 n=[],i=-1;for(let s of e)n.push(s),i+=s.length+1,n.length==32&&(t.push(new r(n,i)),n=[],i=-1);return i>-1&&t.push(new r(n,i)),t}},To=class r extends Le{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let n of e)this.lines+=n.lines}lineInner(e,t,n,i){for(let s=0;;s++){let o=this.children[s],a=i+o.length,l=n+o.lines-1;if((t?l:a)>=e)return o.lineInner(e,t,n,i);i=a+1,n=l+1}}decompose(e,t,n,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?n.push(a):a.decompose(e-o,t-o,n,c)}o=l+1}}replace(e,t,n){if([e,t]=Co(this,e,t),n.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,n),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 r(d,this.length-(t-e)+n.length)}return super.replace(s,a,l)}s=a+1}return super.replace(e,t,n)}sliceString(e,t=this.length,n=`
`){[e,t]=Co(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+=n),e<l&&t>o&&(i+=a.sliceString(e-o,t-o,n)),o=l+1}return i}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof r))return 0;let n=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 n;let l=this.children[i],c=e.children[s];if(l!=c)return n+l.scanIdentical(c,t);n+=l.length+1}}static from(e,t=e.reduce((n,i)=>n+i.length+1,-1)){let n=0;for(let f of e)n+=f.lines;if(n<32){let f=[];for(let m of e)m.flatten(f);return new Fr(f,t)}let i=Math.max(32,n>>5),s=i<<1,o=i>>1,a=[],l=0,c=-1,d=[];function h(f){let m;if(f.lines>s&&f instanceof r)for(let g of f.children)h(g);else f.lines>o&&(l>o||!l)?(u(),a.push(f)):f instanceof Fr&&l&&(m=d[d.length-1])instanceof Fr&&f.lines+m.lines<=32?(l+=f.lines,c+=f.length+1,d[d.length-1]=new Fr(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]:r.from(d,c)),c=-1,l=d.length=0)}for(let f of e)h(f);return u(),a.length==1?a[0]:new r(a,t)}};Le.empty=new Fr([""],0);function pA(r){let e=-1;for(let t of r)e+=t.length+1;return e}function Lc(r,e,t=0,n=1e9){for(let i=0,s=0,o=!0;s<r.length&&i<=n;s++){let a=r[s],l=i+a.length;l>=t&&(l>n&&(a=a.slice(0,n-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 by(r,e,t){return Lc(r,[""],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 Fr?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,i=this.nodes[n],s=this.offsets[n],o=s>>1,a=i instanceof Fr?i.text.length:i.children.length;if(o==(t>0?a:0)){if(n==0)return this.done=!0,this.value="",this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=`
`,this;e--}else if(i instanceof Fr){let l=i.text[o+(t<0?-1:0)];if(this.offsets[n]+=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[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof Fr?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)}},Dc=class{constructor(e,t,n){this.value="",this.done=!1,this.cursor=new Zs(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}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 n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:i}=this.cursor.next(e);return this.pos+=(i.length+e)*t,this.value=i.length<=n?i:t<0?i.slice(i.length-n):i.slice(0,n),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!=""}},Ic=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:n,value:i}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):n?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=i,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&(Le.prototype[Symbol.iterator]=function(){return this.iter()},Zs.prototype[Symbol.iterator]=Dc.prototype[Symbol.iterator]=Ic.prototype[Symbol.iterator]=function(){return this});var Ef=class{constructor(e,t,n,i){this.from=e,this.to=t,this.number=n,this.text=i}get length(){return this.to-this.from}};function Co(r,e,t){return e=Math.max(0,Math.min(r.length,e)),[e,Math.max(e,Math.min(r.length,t))]}function xt(r,e,t=!0,n=!0){return py(r,e,t,n)}function mA(r){return r>=56320&&r<57344}function OA(r){return r>=55296&&r<56320}function Mn(r,e){let t=r.charCodeAt(e);if(!OA(t)||e+1==r.length)return t;let n=r.charCodeAt(e+1);return mA(n)?(t-55296<<10)+(n-56320)+65536:t}function Bc(r){return r<=65535?String.fromCharCode(r):(r-=65536,String.fromCharCode((r>>10)+55296,(r&1023)+56320))}function ji(r){return r<65536?1:2}var Rf=/\r\n?|\n/,Lt=(function(r){return r[r.Simple=0]="Simple",r[r.TrackDel=1]="TrackDel",r[r.TrackBefore=2]="TrackBefore",r[r.TrackAfter=3]="TrackAfter",r})(Lt||(Lt={})),xi=class r{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 n=this.sections[t+1];e+=n<0?this.sections[t]:n}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,n=0,i=0;t<this.sections.length;){let s=this.sections[t++],o=this.sections[t++];o<0?(e(n,i,s),i+=s):i+=o,n+=s}}iterChangedRanges(e,t=!1){Mf(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let n=this.sections[t++],i=this.sections[t++];i<0?e.push(n,i):e.push(i,n)}return new r(e)}composeDesc(e){return this.empty?e:e.empty?this:wy(this,e)}mapDesc(e,t=!1){return e.empty?this:Lf(this,e,t)}mapPos(e,t=-1,n=Lt.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(n!=Lt.Simple&&c>=e&&(n==Lt.TrackDel&&i<e&&c>e||n==Lt.TrackBefore&&i<e||n==Lt.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 n=0,i=0;n<this.sections.length&&i<=t;){let s=this.sections[n++],o=this.sections[n++],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 n=this.sections[t++],i=this.sections[t++];e+=(e?" ":"")+n+(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 r(e)}static create(e){return new r(e)}},gr=class r extends xi{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 Mf(this,(t,n,i,s,o)=>e=e.replace(i,i+(n-t),o),!1),e}mapDesc(e,t=!1){return Lf(this,e,t,!0)}invert(e){let t=this.sections.slice(),n=[];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(;n.length<l;)n.push(Le.empty);n.push(o?e.slice(s,s+o):Le.empty)}s+=o}return new r(t,n)}compose(e){return this.empty?e:e.empty?this:wy(this,e,!0)}map(e,t=!1){return e.empty?this:Lf(this,e,t,!0)}iterChanges(e,t=!1){Mf(this,e,t)}get desc(){return xi.create(this.sections)}filter(e){let t=[],n=[],i=[],s=new Xs(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);lr(i,d,-1);let h=s.ins==-1?-1:s.off==0?s.ins:0;lr(t,d,h),h>0&&Ni(n,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);lr(t,d,-1),lr(i,d,s.ins==-1?-1:s.off==0?s.ins:0),s.forward(d),a+=d}}return{changes:new r(t,n),filtered:xi.create(i)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t],i=this.sections[t+1];i<0?e.push(n):i==0?e.push([n]):e.push([n].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,n){let i=[],s=[],o=0,a=null;function l(d=!1){if(!d&&!i.length)return;o<t&&lr(i,t-o,-1);let h=new r(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 r){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"?Le.of(f.split(n||Rf)):f:Le.empty,g=m.length;if(h==u&&g==0)return;h<o&&l(),h>o&&lr(i,h-o,-1),lr(i,u-h,g),Ni(s,i,m),o=u}}return c(e),l(!a),a}static empty(e){return new r(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],n=[];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(;n.length<i;)n.push(Le.empty);n[i]=Le.of(s.slice(1)),t.push(s[0],n[i].length)}}}return new r(t,n)}static createSet(e,t){return new r(e,t)}};function lr(r,e,t,n=!1){if(e==0&&t<=0)return;let i=r.length-2;i>=0&&t<=0&&t==r[i+1]?r[i]+=e:i>=0&&e==0&&r[i]==0?r[i+1]+=t:n?(r[i]+=e,r[i+1]+=t):r.push(e,t)}function Ni(r,e,t){if(t.length==0)return;let n=e.length-2>>1;if(n<r.length)r[r.length-1]=r[r.length-1].append(t);else{for(;r.length<n;)r.push(Le.empty);r.push(t)}}function Mf(r,e,t){let n=r.inserted;for(let i=0,s=0,o=0;o<r.sections.length;){let a=r.sections[o++],l=r.sections[o++];if(l<0)i+=a,s+=a;else{let c=i,d=s,h=Le.empty;for(;c+=a,d+=l,l&&n&&(h=h.append(n[o-2>>1])),!(t||o==r.sections.length||r.sections[o+1]<0);)a=r.sections[o++],l=r.sections[o++];e(i,c,s,d,h),i=c,s=d}}}function Lf(r,e,t,n=!1){let i=[],s=n?[]:null,o=new Xs(r),a=new Xs(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);lr(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(lr(i,a.ins,-1);c;){let d=Math.min(o.len,c);o.ins>=0&&l<o.i&&o.len<=d&&(lr(i,0,o.ins),s&&Ni(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;lr(i,c,l<o.i?o.ins:0),s&&l<o.i&&Ni(s,i,o.text),l=o.i,o.forward(o.len-d)}else{if(o.done&&a.done)return s?gr.createSet(i,s):xi.create(i);throw new Error("Mismatched change set lengths")}}}function wy(r,e,t=!1){let n=[],i=t?[]:null,s=new Xs(r),o=new Xs(e);for(let a=!1;;){if(s.done&&o.done)return i?gr.createSet(n,i):xi.create(n);if(s.ins==0)lr(n,s.len,0,a),s.next();else if(o.len==0&&!o.done)lr(n,0,o.ins,a),i&&Ni(i,n,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=n.length;if(s.ins==-1){let d=o.ins==-1?-1:o.off?0:o.ins;lr(n,l,d,a),i&&d&&Ni(i,n,o.text)}else o.ins==-1?(lr(n,s.off?0:s.len,l,a),i&&Ni(i,n,s.textBit(l))):(lr(n,s.off?0:s.len,o.off?0:o.ins,a),i&&!o.off&&Ni(i,n,o.text));a=(s.ins>l||o.ins>=0&&o.len>l)&&(a||n.length>c),s.forward2(l),o.forward(l)}}}}var Xs=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?Le.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?Le.empty:t[n].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)}},Ls=class r{constructor(e,t,n,i){this.from=e,this.to=t,this.flags=n,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 n,i;return this.empty?n=i=e.mapPos(this.from,t):(n=e.mapPos(this.from,1),i=e.mapPos(this.to,-1)),n==this.from&&i==this.to?this:new r(n,i,this.flags,this.goalColumn)}extend(e,t=e,n=0){if(e<=this.anchor&&t>=this.anchor)return Z.range(e,t,void 0,void 0,n);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return Z.range(this.anchor,i,void 0,void 0,n)}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,n,i){return new r(e,t,n,i)}},Z=class r{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:r.create(this.ranges.map(n=>n.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;n<this.ranges.length;n++)if(!this.ranges[n].eq(e.ranges[n],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new r([this.main],0)}addRange(e,t=!0){return r.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let n=this.ranges.slice();return n[t]=e,r.create(n,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 r(e.ranges.map(t=>Ls.fromJSON(t)),e.main)}static single(e,t=e){return new r([r.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 n=0,i=0;i<e.length;i++){let s=e[i];if(s.empty?s.from<=n:s.from<n)return r.normalized(e.slice(),t);n=s.to}return new r(e,t)}static cursor(e,t=0,n,i){return Ls.create(e,e,(t==0?0:t<0?8:16)|(n==null?7:Math.min(6,n)),i)}static range(e,t,n,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?Ls.create(t,e,o|32,n):Ls.create(e,t,o,n)}static undirectionalRange(e,t){return Ls.create(e,t,64,void 0)}static normalized(e,t=0){let n=e[t];e.sort((i,s)=>i.from-s.from),t=e.indexOf(n);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?r.range(l,a):r.range(a,l))}}return new r(e,t)}};function Py(r,e){for(let t of r.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var Ff=0,le=class r{constructor(e,t,n,i,s){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=i,this.id=Ff++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new r(e.combine||(t=>t),e.compareInput||((t,n)=>t===n),e.compare||(e.combine?(t,n)=>t===n:Nf),!!e.static,e.enables)}of(e){return new _o([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new _o(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new _o(e,this,2,t)}from(e,t){return t||(t=n=>n),this.compute([e],n=>t(n.field(e)))}};function Nf(r,e){return r==e||r.length==e.length&&r.every((t,n)=>t===e[n])}var _o=class{constructor(e,t,n,i){this.dependencies=e,this.facet=t,this.type=n,this.value=i,this.id=Ff++}dynamicSlot(e){var t;let n=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]=n(h),1},update(h,u){if(l&&u.docChanged||c&&(u.docChanged||u.selection)||Df(h,d)){let f=n(h);if(a?!yy(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 g=zc(u,m);if(this.dependencies.every(v=>v instanceof le?u.facet(v)===h.facet(v):v instanceof Ze?u.field(v,!1)==h.field(v,!1):!0)||(a?yy(f=n(h),g,i):i(f=n(h),g)))return h.values[o]=g,0}else f=n(h);return h.values[o]=f,1}}}get extension(){return this}};function yy(r,e,t){if(r.length!=e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function Df(r,e){let t=!1;for(let n of e)Ya(r,n)&1&&(t=!0);return t}function gA(r,e,t){let n=t.map(l=>r[l.id]),i=t.map(l=>l.type),s=n.filter(l=>!(l&1)),o=r[e.id]>>1;function a(l){let c=[];for(let d=0;d<n.length;d++){let h=zc(l,n[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 n)Ya(l,c);return l.values[o]=a(l),1},update(l,c){if(!Df(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=Df(l,n),h=c.config.facets[e.id],u=c.facet(e);if(h&&!d&&Nf(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 Ec=le.define({static:!0}),Ze=class r{constructor(e,t,n,i,s){this.id=e,this.createF=t,this.updateF=n,this.compareF=i,this.spec=s,this.provides=void 0}static define(e){let t=new r(Ff++,e.create,e.update,e.compare||((n,i)=>n===i),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Ec).find(n=>n.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:n=>(n.values[t]=this.create(n),1),update:(n,i)=>{let s=n.values[t],o=this.updateF(s,i);return this.compareF(s,o)?0:(n.values[t]=o,1)},reconfigure:(n,i)=>{let s=n.facet(Ec),o=i.facet(Ec),a;return(a=s.find(l=>l.field==this))&&a!=o.find(l=>l.field==this)?(n.values[t]=a.create(n),1):i.config.address[this.id]!=null?(n.values[t]=i.field(this),0):(n.values[t]=this.create(n),1)}}}init(e){return[this,Ec.of({field:this,create:e})]}get extension(){return this}},Ds={lowest:4,low:3,default:2,high:1,highest:0};function Va(r){return e=>new Zc(e,r)}var fn={highest:Va(Ds.highest),high:Va(Ds.high),default:Va(Ds.default),low:Va(Ds.low),lowest:Va(Ds.lowest)},Zc=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Bt=class r{of(e){return new Fa(this,e)}reconfigure(e){return r.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}},Xc=class r{constructor(e,t,n,i,s,o){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=i,this.staticValues=s,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<n.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,n){let i=[],s=Object.create(null),o=new Map;for(let u of bA(e,t,o))u instanceof Ze?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=n==null?void 0:n.config.facets;for(let u in s){let f=s[u],m=f[0].facet,g=d&&d[u]||[];if(f.every(v=>v.type==0))if(a[m.id]=l.length<<1|1,Nf(g,f))l.push(n.facet(m));else{let v=m.combine(f.map(k=>k.value));l.push(n&&m.compare(v,n.facet(m))?n.facet(m):v)}else{for(let v of f)v.type==0?(a[v.id]=l.length<<1|1,l.push(v.value)):(a[v.id]=c.length<<1,c.push(k=>v.dynamicSlot(k)));a[m.id]=c.length<<1,c.push(v=>gA(v,m,f))}}let h=c.map(u=>u(a));return new r(e,o,h,a,l,s)}};function bA(r,e,t){let n=[[],[],[],[],[]],i=new Map;function s(o,a){let l=i.get(o);if(l!=null){if(l<=a)return;let c=n[l].indexOf(o);c>-1&&n[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 Zc)s(o.inner,o.prec);else if(o instanceof Ze)n[a].push(o),o.provides&&s(o.provides,a);else if(o instanceof _o)n[a].push(o),o.facet.extensions&&s(o.facet.extensions,Ds.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(r,Ds.default),n.reduce((o,a)=>o.concat(a))}function Ya(r,e){if(e&1)return 2;let t=e>>1,n=r.status[t];if(n==4)throw new Error("Cyclic dependency between fields and/or facets");if(n&2)return n;r.status[t]=4;let i=r.computeSlot(r,r.config.dynamicSlots[t]);return r.status[t]=2|i}function zc(r,e){return e&1?r.config.staticValues[e>>1]:r.values[e>>1]}var ky=le.define(),If=le.define({combine:r=>r.some(e=>e),static:!0}),$y=le.define({combine:r=>r.length?r[0]:void 0,static:!0}),Qy=le.define(),Ty=le.define(),_y=le.define(),Ay=le.define({combine:r=>r.length?r[0]:!1}),Qr=class{constructor(e,t){this.type=e,this.value=t}static define(){return new Zf}},Zf=class{of(e){return new Qr(this,e)}},Xf=class{constructor(e){this.map=e}of(e){return new be(this,e)}},be=class r{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 r(this.type,t)}is(e){return this.type==e}static define(e={}){return new Xf(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let i of e){let s=i.map(t);s&&n.push(s)}return n}};be.reconfigure=be.define();be.appendConfig=be.define();var dt=class r{constructor(e,t,n,i,s,o){this.startState=e,this.changes=t,this.selection=n,this.effects=i,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,n&&Py(n,t.newLength),s.some(a=>a.type==r.time)||(this.annotations=s.concat(r.time.of(Date.now())))}static create(e,t,n,i,s,o){return new r(e,t,n,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(r.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};dt.time=Qr.define();dt.userEvent=Qr.define();dt.addToHistory=Qr.define();dt.remote=Qr.define();function yA(r,e){let t=[];for(let n=0,i=0;;){let s,o;if(n<r.length&&(i==e.length||e[i]>=r[n]))s=r[n++],o=r[n++];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 Cy(r,e,t){var n;let i,s,o;return t?(i=e.changes,s=gr.empty(e.changes.length),o=r.changes.compose(e.changes)):(i=e.changes.map(r.changes),s=r.changes.mapDesc(e.changes,!0),o=r.changes.compose(i)),{changes:o,selection:e.selection?e.selection.map(s):(n=r.selection)===null||n===void 0?void 0:n.map(i),effects:be.mapEffects(r.effects,i).concat(be.mapEffects(e.effects,s)),annotations:r.annotations.length?r.annotations.concat(e.annotations):e.annotations,scrollIntoView:r.scrollIntoView||e.scrollIntoView}}function zf(r,e,t){let n=e.selection,i=Ao(e.annotations);return e.userEvent&&(i=i.concat(dt.userEvent.of(e.userEvent))),{changes:e.changes instanceof gr?e.changes:gr.of(e.changes||[],t,r.facet($y)),selection:n&&(n instanceof Z?n:Z.single(n.anchor,n.head)),effects:Ao(e.effects),annotations:i,scrollIntoView:!!e.scrollIntoView}}function Ey(r,e,t){let n=zf(r,e.length?e[0]:{},r.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;n=Cy(n,zf(r,e[s],o?n.changes.newLength:r.doc.length),o)}let i=dt.create(r,n.changes,n.selection,n.effects,n.annotations,n.scrollIntoView);return vA(t?SA(i):i)}function SA(r){let e=r.startState,t=!0;for(let i of e.facet(Qy)){let s=i(r);if(s===!1){t=!1;break}Array.isArray(s)&&(t=t===!0?s:yA(t,s))}if(t!==!0){let i,s;if(t===!1)s=r.changes.invertedDesc,i=gr.empty(e.doc.length);else{let o=r.changes.filter(t);i=o.changes,s=o.filtered.mapDesc(o.changes).invertedDesc}r=dt.create(e,i,r.selection&&r.selection.map(s),be.mapEffects(r.effects,s),r.annotations,r.scrollIntoView)}let n=e.facet(Ty);for(let i=n.length-1;i>=0;i--){let s=n[i](r);s instanceof dt?r=s:Array.isArray(s)&&s.length==1&&s[0]instanceof dt?r=s[0]:r=Ey(e,Ao(s),!1)}return r}function vA(r){let e=r.startState,t=e.facet(_y),n=r;for(let i=t.length-1;i>=0;i--){let s=t[i](r);s&&Object.keys(s).length&&(n=Cy(n,zf(e,s,r.changes.newLength),!0))}return n==r?r:dt.create(e,r.changes,r.selection,n.effects,n.annotations,n.scrollIntoView)}var xA=[];function Ao(r){return r==null?xA:Array.isArray(r)?r:[r]}var rt=(function(r){return r[r.Word=0]="Word",r[r.Space=1]="Space",r[r.Other=2]="Other",r})(rt||(rt={})),wA=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Wf;try{Wf=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(r){}function PA(r){if(Wf)return Wf.test(r);for(let e=0;e<r.length;e++){let t=r[e];if(/\w/.test(t)||t>"\x80"&&(t.toUpperCase()!=t.toLowerCase()||wA.test(t)))return!0}return!1}function kA(r){return e=>{if(!/\S/.test(e))return rt.Space;if(PA(e))return rt.Word;for(let t=0;t<r.length;t++)if(e.indexOf(r[t])>-1)return rt.Word;return rt.Other}}var Me=class r{constructor(e,t,n,i,s,o){this.config=e,this.doc=t,this.selection=n,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++)Ya(this,a<<1);this.computeSlot=null}field(e,t=!0){let n=this.config.address[e.id];if(n==null){if(t)throw new RangeError("Field is not present in this state");return}return Ya(this,n),zc(this,n)}update(...e){return Ey(this,e,!0)}applyTransaction(e){let t=this.config,{base:n,compartments:i}=t;for(let a of e.effects)a.is(Bt.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(be.reconfigure)?(t=null,n=a.value):a.is(be.appendConfig)&&(t=null,n=Ao(n).concat(a.value));let s;t?s=e.startState.values.slice():(t=Xc.resolve(n,i,this),s=new r(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,c)=>c.reconfigure(l,this),null).values);let o=e.startState.facet(If)?e.newSelection:e.newSelection.asSingle();new r(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,n=e(t.ranges[0]),i=this.changes(n.changes),s=[n.range],o=Ao(n.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=be.mapEffects(o,d).concat(be.mapEffects(Ao(l.effects),h))}return{changes:i,selection:Z.create(s,t.mainIndex),effects:o}}changes(e=[]){return e instanceof gr?e:gr.of(e,this.doc.length,this.facet(r.lineSeparator))}toText(e){return Le.of(e.split(this.facet(r.lineSeparator)||Rf))}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:(Ya(this,t),zc(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let n in e){let i=e[n];i instanceof Ze&&this.config.address[i.id]!=null&&(t[n]=i.spec.toJSON(this.field(e[n]),this))}return t}static fromJSON(e,t={},n){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let i=[];if(n){for(let s in n)if(Object.prototype.hasOwnProperty.call(e,s)){let o=n[s],a=e[s];i.push(o.init(l=>o.spec.fromJSON(a,l)))}}return r.create({doc:e.doc,selection:Z.fromJSON(e.selection),extensions:t.extensions?i.concat([t.extensions]):i})}static create(e={}){let t=Xc.resolve(e.extensions||[],new Map),n=e.doc instanceof Le?e.doc:Le.of((e.doc||"").split(t.staticFacet(r.lineSeparator)||Rf)),i=e.selection?e.selection instanceof Z?e.selection:Z.single(e.selection.anchor,e.selection.head):Z.single(0);return Py(i,n.length),t.staticFacet(If)||(i=i.asSingle()),new r(t,n,i,t.dynamicSlots.map(()=>null),(s,o)=>o.create(s),null)}get tabSize(){return this.facet(r.tabSize)}get lineBreak(){return this.facet(r.lineSeparator)||`
`}get readOnly(){return this.facet(Ay)}phrase(e,...t){for(let n of this.facet(r.phrases))if(Object.prototype.hasOwnProperty.call(n,e)){e=n[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(n,i)=>{if(i=="$")return"$";let s=+(i||1);return!s||s>t.length?n:t[s-1]})),e}languageDataAt(e,t,n=-1){let i=[];for(let s of this.facet(ky))for(let o of s(this,t,n))Object.prototype.hasOwnProperty.call(o,e)&&i.push(o[e]);return i}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return kA(t.length?t[0]:"")}wordAt(e){let{text:t,from:n,length:i}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-n,a=e-n;for(;o>0;){let l=xt(t,o,!1);if(s(t.slice(l,o))!=rt.Word)break;o=l}for(;a<i;){let l=xt(t,a);if(s(t.slice(a,l))!=rt.Word)break;a=l}return o==a?null:Z.range(o+n,a+n)}};Me.allowMultipleSelections=If;Me.tabSize=le.define({combine:r=>r.length?r[0]:4});Me.lineSeparator=$y;Me.readOnly=Ay;Me.phrases=le.define({compare(r,e){let t=Object.keys(r),n=Object.keys(e);return t.length==n.length&&t.every(i=>r[i]==e[i])}});Me.languageData=ky;Me.changeFilter=Qy;Me.transactionFilter=Ty;Me.transactionExtender=_y;Bt.reconfigure=be.define();function Nr(r,e,t={}){let n={};for(let i of r)for(let s of Object.keys(i)){let o=i[s],a=n[s];if(a===void 0)n[s]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,s))n[s]=t[s](a,o);else throw new Error("Config merge conflict for field "+s)}for(let i in e)n[i]===void 0&&(n[i]=e[i]);return n}var un=class{eq(e){return this==e}range(e,t=e){return Na.create(e,t,this)}};un.prototype.startSide=un.prototype.endSide=0;un.prototype.point=!1;un.prototype.mapMode=Lt.TrackDel;function jf(r,e){return r==e||r.constructor==e.constructor&&r.eq(e)}var Na=class r{constructor(e,t,n){this.from=e,this.to=t,this.value=n}static create(e,t,n){return new r(e,t,n)}};function Bf(r,e){return r.from-e.from||r.value.startSide-e.value.startSide}var Vf=class r{constructor(e,t,n,i){this.from=e,this.to=t,this.value=n,this.maxPoint=i}get length(){return this.to[this.to.length-1]}findIndex(e,t,n,i=0){let s=n?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||(n?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,n,i){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(n,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 n=[],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)),n.push(c),i.push(u-o),s.push(f-o))}return{mapped:n.length?new r(i,s,n,a):null,pos:o}}},Te=class r{constructor(e,t,n,i){this.chunkPos=e,this.chunk=t,this.nextLayer=n,this.maxPoint=i}static create(e,t,n,i){return new r(e,t,n,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:n=!1,filterFrom:i=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(n&&(t=t.slice().sort(Bf)),this.isEmpty)return t.length?r.of(t):this;let a=new Wc(this,null,-1).goto(0),l=0,c=[],d=new Rn;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(Na.create(a.from,a.to,a.value))),a.next());return d.finishInner(this.nextLayer.isEmpty&&!c.length?r.empty:this.nextLayer.update({add:c,filter:o,filterFrom:i,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],n=[],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),n.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),n.push(h))}}let s=this.nextLayer.map(e);return t.length==0?s:new r(n,t,s||r.empty,i)}between(e,t,n){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,n)===!1)return}this.nextLayer.between(e,t,n)}}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,n,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=Sy(o,a,n),c=new Is(o,l,s),d=new Is(a,l,s);n.iterGaps((h,u,f)=>vy(c,h,d,u,f,i)),n.empty&&n.length==0&&vy(c,0,d,0,0,i)}static eq(e,t,n=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=Sy(s,o),l=new Is(s,a,0).goto(n),c=new Is(o,a,0).goto(n);for(;;){if(l.to!=c.to||!Yf(l.active,c.active)||l.point&&(!c.point||!jf(l.point,c.point)))return!1;if(l.to>i)return!0;l.next(),c.next()}}static spans(e,t,n,i,s=-1){let o=new Is(e,null,s).goto(t),a=t,l=o.openStart;for(;;){let c=Math.min(o.to,n);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>n)return l+(o.point&&o.to>n?1:0);a=o.to,o.next()}}static of(e,t=!1){let n=new Rn;for(let i of e instanceof Na?[e]:t?$A(e):e)n.add(i.from,i.to,i.value);return n.finish()}static join(e){if(!e.length)return r.empty;let t=e[e.length-1];for(let n=e.length-2;n>=0;n--)for(let i=e[n];i!=r.empty;i=i.nextLayer)t=new r(i.chunkPos,i.chunk,t,Math.max(i.maxPoint,t.maxPoint));return t}};Te.empty=new Te([],[],null,-1);function $A(r){if(r.length>1)for(let e=r[0],t=1;t<r.length;t++){let n=r[t];if(Bf(e,n)>0)return r.slice().sort(Bf);e=n}return r}Te.empty.nextLayer=Te.empty;var Rn=class r{finishChunk(e){this.chunks.push(new Vf(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,n){this.addInner(e,t,n)||(this.nextLayer||(this.nextLayer=new r)).add(e,t,n)}addInner(e,t,n){let i=e-this.lastTo||n.startSide-this.last.endSide;if(i<=0&&(e-this.lastFrom||n.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=n,this.lastFrom=e,this.lastTo=t,this.value.push(n),n.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 n=t.value.length-1;return this.last=t.value[n],this.lastFrom=t.from[n]+e,this.lastTo=t.to[n]+e,!0}finish(){return this.finishInner(Te.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=Te.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function Sy(r,e,t){let n=new Map;for(let s of r)for(let o=0;o<s.chunk.length;o++)s.chunk[o].maxPoint<=0&&n.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=n.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 Wc=class{constructor(e,t,n,i=0){this.layer=e,this.skip=t,this.minPoint=n,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,n){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++,n=!1}if(this.chunkIndex<this.layer.chunk.length){let i=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0);(!n||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],n=e+t.from[this.rangeIndex];if(this.from=n,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 r{constructor(e){this.heap=e}static from(e,t=null,n=-1){let i=[];for(let s=0;s<e.length;s++)for(let o=e[s];!o.isEmpty;o=o.nextLayer)o.maxPoint>=n&&i.push(new Wc(o,t,n,s));return i.length==1?i[0]:new r(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let n of this.heap)n.goto(e,t);for(let n=this.heap.length>>1;n>=0;n--)Cf(this.heap,n);return this.next(),this}forward(e,t){for(let n of this.heap)n.forward(e,t);for(let n=this.heap.length>>1;n>=0;n--)Cf(this.heap,n);(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(),Cf(this.heap,0)}}};function Cf(r,e){for(let t=r[e];;){let n=(e<<1)+1;if(n>=r.length)break;let i=r[n];if(n+1<r.length&&i.compare(r[n+1])>=0&&(i=r[n+1],n++),t.compare(i)<0)break;r[n]=t,r[e]=i,e=n}}var Is=class{constructor(e,t,n){this.minPoint=n,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,n)}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){Rc(this.active,e),Rc(this.activeTo,e),Rc(this.activeRank,e),this.minActive=xy(this.active,this.activeTo)}addActive(e){let t=0,{value:n,to:i,rank:s}=this.cursor;for(;t<this.activeRank.length&&(s-this.activeRank[t]||i-this.activeTo[t])>0;)t++;Mc(this.active,t,n),Mc(this.activeTo,t,i),Mc(this.activeRank,t,s),e&&Mc(e,t,this.cursor.from),this.minActive=xy(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let n=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),n&&Rc(n,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(n),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(n){this.openStart=0;for(let i=n.length-1;i>=0&&n[i]<e;i--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let t=[];for(let n=this.active.length-1;n>=0&&!(this.activeRank[n]<this.pointRank);n--)(this.activeTo[n]>e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&t.push(this.active[n]);return t.reverse()}openEnd(e){let t=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)t++;return t}};function vy(r,e,t,n,i,s){r.goto(e),t.goto(n);let o=n+i,a=n,l=n-e,c=!!s.boundChange;for(let d=!1;;){let h=r.to+l-t.to,u=h||r.endSide-t.endSide,f=u<0?r.to+l:t.to,m=Math.min(f,o);if(r.point||t.point?(r.point&&t.point&&jf(r.point,t.point)&&Yf(r.activeForPoint(r.to),t.activeForPoint(t.to))||s.comparePoint(a,m,r.point,t.point),d=!1):(d&&s.boundChange(a),m>a&&!Yf(r.active,t.active)&&s.compareRange(a,m,r.active,t.active),c&&m<o&&(h||r.openEnd(f)!=t.openEnd(f))&&(d=!0)),f>o)break;a=f,u<=0&&r.next(),u>=0&&t.next()}}function Yf(r,e){if(r.length!=e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!=e[t]&&!jf(r[t],e[t]))return!1;return!0}function Rc(r,e){for(let t=e,n=r.length-1;t<n;t++)r[t]=r[t+1];r.pop()}function Mc(r,e,t){for(let n=r.length-1;n>=e;n--)r[n+1]=r[n];r[e]=t}function xy(r,e){let t=-1,n=1e9;for(let i=0;i<e.length;i++)(e[i]-n||r[i].endSide-r[t].endSide)<0&&(t=i,n=e[i]);return t}function Gt(r,e,t=r.length){let n=0;for(let i=0;i<t&&i<r.length;)r.charCodeAt(i)==9?(n+=e-n%e,i++):(n++,i=xt(r,i));return n}function Vc(r,e,t,n){for(let i=0,s=0;;){if(s>=e)return i;if(i==r.length)break;s+=r.charCodeAt(i)==9?t-s%t:1,i=xt(r,i)}return n===!0?-1:r.length}var Ry=typeof Symbol=="undefined"?"__\u037C":Symbol.for("\u037C"),Uf=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),My=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{},pn=class{constructor(e,t){this.rules=[];let{finish:n}=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(g=>o.map(v=>g.replace(/&/,v))).reduce((g,v)=>g.concat(v)),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,g=>"-"+g.toLowerCase())+": "+m+";")}(d.length||u)&&l.push((n&&!h&&!c?o.map(n):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=My[Ry]||1;return My[Ry]=e+1,"\u037C"+e.toString(36)}static mount(e,t,n){let i=e[Uf],s=n&&n.nonce;i?s&&i.setNonce(s):i=new qf(e,s),i.mount(Array.isArray(t)?t:[t],e)}},Ly=new Map,qf=class{constructor(e,t){let n=e.ownerDocument||e,i=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&i.CSSStyleSheet){let s=Ly.get(n);if(s)return e[Uf]=s;this.sheet=new i.CSSStyleSheet,Ly.set(n,this)}else this.styleTag=n.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Uf]=this}mount(e,t){let n=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),n)for(let c=0;c<a.rules.length;c++)n.insertRule(a.rules[c],i++)}else{for(;s<l;)i+=this.modules[s++].rules.length;i+=a.rules.length,s++}}if(n)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:'"'},QA=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),TA=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Qt=0;Qt<10;Qt++)wi[48+Qt]=wi[96+Qt]=String(Qt);var Qt;for(Qt=1;Qt<=24;Qt++)wi[Qt+111]="F"+Qt;var Qt;for(Qt=65;Qt<=90;Qt++)wi[Qt]=String.fromCharCode(Qt+32),Eo[Qt]=String.fromCharCode(Qt);var Qt;for(Yc in wi)Eo.hasOwnProperty(Yc)||(Eo[Yc]=wi[Yc]);var Yc;function Dy(r){var e=QA&&r.metaKey&&r.shiftKey&&!r.ctrlKey&&!r.altKey||TA&&r.shiftKey&&r.key&&r.key.length==1||r.key=="Unidentified",t=!e&&r.key||(r.shiftKey?Eo:wi)[r.keyCode]||r.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 wt(){var r=arguments[0];typeof r=="string"&&(r=document.createElement(r));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var i=t[n];typeof i=="string"?r.setAttribute(n,i):i!=null&&(r[n]=i)}e++}for(;e<arguments.length;e++)Iy(r,arguments[e]);return r}function Iy(r,e){if(typeof e=="string")r.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)r.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)Iy(r,e[t]);else throw new RangeError("Unsupported child node: "+e)}var br=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},sp=typeof document!="undefined"?document:{documentElement:{style:{}}},op=/Edge\/(\d+)/.exec(br.userAgent),xS=/MSIE \d/.test(br.userAgent),ap=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(br.userAgent),wd=!!(xS||ap||op),Zy=!wd&&/gecko\/(\d+)/i.test(br.userAgent),Gf=!wd&&/Chrome\/(\d+)/.exec(br.userAgent),Xy="webkitFontSmoothing"in sp.documentElement.style,lp=!wd&&/Apple Computer/.test(br.vendor),zy=lp&&(/Mobile\/\w+/.test(br.userAgent)||br.maxTouchPoints>2),ce={mac:zy||/Mac/.test(br.platform),windows:/Win/.test(br.platform),linux:/Linux|X11/.test(br.platform),ie:wd,ie_version:xS?sp.documentMode||6:ap?+ap[1]:op?+op[1]:0,gecko:Zy,gecko_version:Zy?+(/Firefox\/(\d+)/.exec(br.userAgent)||[0,0])[1]:0,chrome:!!Gf,chrome_version:Gf?+Gf[1]:0,ios:zy,android:/Android\b/.test(br.userAgent),webkit:Xy,webkit_version:Xy?+(/\bAppleWebKit\/(\d+)/.exec(br.userAgent)||[0,0])[1]:0,safari:lp,safari_version:lp?+(/\bVersion\/(\d+(\.\d+)?)/.exec(br.userAgent)||[0,0])[1]:0,tabSize:sp.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Jp(r,e){for(let t in r)t=="class"&&e.class?e.class+=" "+r.class:t=="style"&&e.style?e.style+=";"+r.style:e[t]=r[t];return e}var sd=Object.create(null);function em(r,e,t){if(r==e)return!0;r||(r=sd),e||(e=sd);let n=Object.keys(r),i=Object.keys(e);if(n.length-(t&&n.indexOf(t)>-1?1:0)!=i.length-(t&&i.indexOf(t)>-1?1:0))return!1;for(let s of n)if(s!=t&&(i.indexOf(s)==-1||r[s]!==e[s]))return!1;return!0}function _A(r,e){for(let t=r.attributes.length-1;t>=0;t--){let n=r.attributes[t].name;e[n]==null&&r.removeAttribute(n)}for(let t in e){let n=e[t];t=="style"?r.style.cssText=n:r.getAttribute(t)!=n&&r.setAttribute(t,n)}}function Wy(r,e,t){let n=!1;if(e)for(let i in e)t&&i in t||(n=!0,i=="style"?r.style.cssText="":r.removeAttribute(i));if(t)for(let i in t)e&&e[i]==t[i]||(n=!0,i=="style"?r.style.cssText=t[i]:r.setAttribute(i,t[i]));return n}function AA(r){let e=Object.create(null);for(let t=0;t<r.attributes.length;t++){let n=r.attributes[t];e[n.name]=n.value}return e}var Tt=class{eq(e){return!1}updateDOM(e,t,n){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,n){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}},Ht=(function(r){return r[r.Text=0]="Text",r[r.WidgetBefore=1]="WidgetBefore",r[r.WidgetAfter=2]="WidgetAfter",r[r.WidgetRange=3]="WidgetRange",r})(Ht||(Ht={})),ee=class extends un{constructor(e,t,n,i){super(),this.startSide=e,this.endSide=t,this.widget=n,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)),n=!!e.block;return t+=n&&!e.inlineOrder?t>0?3e8:-4e8:t>0?1e8:-1e8,new Vs(e,t,t,n,e.widget||null,!1)}static replace(e){let t=!!e.block,n,i;if(e.isBlockGap)n=-5e8,i=4e8;else{let{start:s,end:o}=wS(e,t);n=(s?t?-3e8:-1:5e8)-1,i=(o?t?2e8:1:-6e8)+1}return new Vs(e,n,i,t,e.widget||null,!0)}static line(e){return new al(e)}static set(e,t=!1){return Te.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};ee.none=Te.empty;var ol=class r extends ee{constructor(e){let{start:t,end:n}=wS(e);super(t?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?Jp(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||sd}eq(e){return this==e||e instanceof r&&this.tagName==e.tagName&&em(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 r extends ee{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof r&&this.spec.class==e.spec.class&&em(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=Lt.TrackBefore;al.prototype.point=!0;var Vs=class r extends ee{constructor(e,t,n,i,s,o){super(t,n,s,e),this.block=i,this.isReplace=o,this.mapMode=i?t<=0?Lt.TrackBefore:Lt.TrackAfter:Lt.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 r&&CA(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)}};Vs.prototype.point=!0;function wS(r,e=!1){let{inclusiveStart:t,inclusiveEnd:n}=r;return t==null&&(t=r.inclusive),n==null&&(n=r.inclusive),{start:t!=null?t:e,end:n!=null?n:e}}function CA(r,e){return r==e||!!(r&&e&&r.compare(e))}function Zo(r,e,t,n=0){let i=t.length-1;i>=0&&t[i]+n>=r?t[i]=Math.max(t[i],e):t.push(r,e)}var od=class r extends un{constructor(e,t,n){super(),this.tagName=e,this.attributes=t,this.rank=n}eq(e){return e==this||e instanceof r&&this.tagName==e.tagName&&em(this.attributes,e.attributes)}static create(e){return new r(e.tagName,e.attributes||sd,e.rank==null?50:Math.max(0,Math.min(e.rank,100)))}static set(e,t=!1){return Te.of(e,t)}};od.prototype.startSide=od.prototype.endSide=-1;function ll(r){let e;return r.nodeType==11?e=r.getSelection?r:r.ownerDocument:e=r,e.getSelection()}function cp(r,e){return e?r==e||r.contains(e.nodeType!=1?e.parentNode:e):!1}function Ha(r,e){if(!e.anchorNode)return!1;try{return cp(r,e.anchorNode)}catch(t){return!1}}function ed(r){return r.nodeType==3?cl(r,0,r.nodeValue.length).getClientRects():r.nodeType==1?r.getClientRects():[]}function Ka(r,e,t,n){return t?By(r,e,t,n,-1)||By(r,e,t,n,1):!1}function Gi(r){for(var e=0;;e++)if(r=r.previousSibling,!r)return e}function ad(r){return r.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(r.nodeName)}function By(r,e,t,n,i){for(;;){if(r==t&&e==n)return!0;if(e==(i<0?0:$i(r))){if(r.nodeName=="DIV")return!1;let s=r.parentNode;if(!s||s.nodeType!=1)return!1;e=Gi(r)+(i<0?0:1),r=s}else if(r.nodeType==1){if(r=r.childNodes[e+(i<0?-1:0)],r.nodeType==1&&r.contentEditable=="false")return!1;e=i<0?$i(r):0}else return!1}}function $i(r){return r.nodeType==3?r.nodeValue.length:r.childNodes.length}function ld(r,e){let{left:t,right:n}=r;if(t==n)return r;let i=e?t:n;return{left:i,right:i,top:r.top,bottom:r.bottom}}function EA(r){let e=r.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:r.innerWidth,top:0,bottom:r.innerHeight}}function PS(r,e){let t=e.width/r.offsetWidth,n=e.height/r.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-r.offsetWidth)<1)&&(t=1),(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.height-r.offsetHeight)<1)&&(n=1),{scaleX:t,scaleY:n}}function RA(r,e,t,n,i,s,o,a){let l=r.ownerDocument,c=l.defaultView||window;for(let d=r,h=!1;d&&!h;)if(d.nodeType==1){let u,f=d==l.body,m=1,g=1;if(f)u=EA(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 L=d.getBoundingClientRect();({scaleX:m,scaleY:g}=PS(d,L)),u={left:L.left,right:L.left+d.clientWidth*m,top:L.top,bottom:L.top+d.clientHeight*g}}let v=0,k=0;if(i=="nearest")e.top<u.top+o?(k=e.top-(u.top+o),t>0&&e.bottom>u.bottom+k&&(k=e.bottom-u.bottom+o)):e.bottom>u.bottom-o&&(k=e.bottom-u.bottom+o,t<0&&e.top-k<u.top&&(k=e.top-(u.top+o)));else{let L=e.bottom-e.top,M=u.bottom-u.top;k=(i=="center"&&L<=M?e.top+L/2-M/2:i=="start"||i=="center"&&t<0?e.top-o:e.bottom-M+o)-u.top}if(n=="nearest"?e.left<u.left+s?(v=e.left-(u.left+s),t>0&&e.right>u.right+v&&(v=e.right-u.right+s)):e.right>u.right-s&&(v=e.right-u.right+s,t<0&&e.left<u.left+v&&(v=e.left-(u.left+s))):v=(n=="center"?e.left+(e.right-e.left)/2-(u.right-u.left)/2:n=="start"==a?e.left-s:e.right-(u.right-u.left)+s)-u.left,v||k)if(f)c.scrollBy(v,k);else{let L=0,M=0;if(k){let D=d.scrollTop;d.scrollTop+=k/g,M=(d.scrollTop-D)*g}if(v){let D=d.scrollLeft;d.scrollLeft+=v/m,L=(d.scrollLeft-D)*m}e={left:e.left-L,top:e.top-M,right:e.right-L,bottom:e.bottom-M},L&&Math.abs(L-v)<1&&(n="nearest"),M&&Math.abs(M-k)<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 kS(r,e=!0){let t=r.ownerDocument,n=null,i=null;for(let s=r.parentNode;s&&!(s==t.body||(!e||n)&&i);)if(s.nodeType==1)!i&&s.scrollHeight>s.clientHeight&&(i=s),e&&!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:i}}var dp=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:n}=e;this.set(t,Math.min(e.anchorOffset,t?$i(t):0),n,Math.min(e.focusOffset,n?$i(n):0))}set(e,t,n,i){this.anchorNode=e,this.anchorOffset=t,this.focusNode=n,this.focusOffset=i}};function $S(r){let e=[];for(let t=r;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 QS(r,e=!0){for(let{node:t,left:n,top:i}of r)e&&t.scrollTop!=i&&(t.scrollTop=i),t.scrollLeft!=n&&(t.scrollLeft=n)}var zs=null;ce.safari&&ce.safari_version>=26&&(zs=!1);function TS(r){if(r.setActive)return r.setActive();if(zs)return r.focus(zs);let e=$S(r);r.focus(zs==null?{get preventScroll(){return zs={preventScroll:!0},!0}}:void 0),zs||(zs=!1,QS(e))}var Vy;function cl(r,e,t=e){let n=Vy||(Vy=document.createRange());return n.setEnd(r,t),n.setStart(r,e),n}function Xo(r,e,t,n){let i={key:e,code:e,keyCode:t,which:t,cancelable:!0};n&&({altKey:i.altKey,ctrlKey:i.ctrlKey,shiftKey:i.shiftKey,metaKey:i.metaKey}=n);let s=new KeyboardEvent("keydown",i);s.synthetic=!0,r.dispatchEvent(s);let o=new KeyboardEvent("keyup",i);return o.synthetic=!0,r.dispatchEvent(o),s.defaultPrevented||o.defaultPrevented}function MA(r){for(;r;){if(r&&(r.nodeType==9||r.nodeType==11&&r.host))return r;r=r.assignedSlot||r.parentNode}return null}function LA(r,e){let t=e.focusNode,n=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=n)return!1;for(n=Math.min(n,$i(t));;)if(n){if(t.nodeType!=1)return!1;let i=t.childNodes[n-1];i.contentEditable=="false"?n--:(t=i,n=$i(t))}else{if(t==r)return!0;n=Gi(t),t=t.parentNode}}function _S(r){return r instanceof Window?r.pageYOffset>Math.max(0,r.document.documentElement.scrollHeight-r.innerHeight-4):r.scrollTop>Math.max(1,r.scrollHeight-r.clientHeight-4)}function AS(r,e){for(let t=r,n=e;;){if(t.nodeType==3&&n>0)return{node:t,offset:n};if(t.nodeType==1&&n>0){if(t.contentEditable=="false")return null;t=t.childNodes[n-1],n=$i(t)}else if(t.parentNode&&!ad(t))n=Gi(t),t=t.parentNode;else return null}}function CS(r,e){for(let t=r,n=e;;){if(t.nodeType==3&&n<t.nodeValue.length)return{node:t,offset:n};if(t.nodeType==1&&n<t.childNodes.length){if(t.contentEditable=="false")return null;t=t.childNodes[n],n=0}else if(t.parentNode&&!ad(t))n=Gi(t)+1,t=t.parentNode;else return null}}var Kn=class r{constructor(e,t,n=!0){this.node=e,this.offset=t,this.precise=n}static before(e,t){return new r(e.parentNode,Gi(e),t)}static after(e,t){return new r(e.parentNode,Gi(e)+1,t)}},et=(function(r){return r[r.LTR=0]="LTR",r[r.RTL=1]="RTL",r})(et||(et={})),Ys=et.LTR,tm=et.RTL;function ES(r){let e=[];for(let t=0;t<r.length;t++)e.push(1<<+r[t]);return e}var DA=ES("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),IA=ES("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),hp=Object.create(null),Hn=[];for(let r of["()","[]","{}"]){let e=r.charCodeAt(0),t=r.charCodeAt(1);hp[e]=t,hp[t]=-e}function RS(r){return r<=247?DA[r]:1424<=r&&r<=1524?2:1536<=r&&r<=1785?IA[r-1536]:1774<=r&&r<=2220?4:8192<=r&&r<=8204?256:64336<=r&&r<=65023?4:1}var ZA=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/,gn=class{get dir(){return this.level%2?tm:Ys}constructor(e,t,n){this.from=e,this.to=t,this.level=n}side(e,t){return this.dir==t==e?this.to:this.from}forward(e,t){return e==(this.dir==t)}static find(e,t,n,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==n)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 MS(r,e){if(r.length!=e.length)return!1;for(let t=0;t<r.length;t++){let n=r[t],i=e[t];if(n.from!=i.from||n.to!=i.to||n.direction!=i.direction||!MS(n.inner,i.inner))return!1}return!0}var ot=[];function XA(r,e,t,n,i){for(let s=0;s<=n.length;s++){let o=s?n[s-1].to:e,a=s<n.length?n[s].from:t,l=s?256:i;for(let c=o,d=l,h=l;c<a;c++){let u=RS(r.charCodeAt(c));u==512?u=d:u==8&&h==4&&(u=16),ot[c]=u==4?2:u,u&7&&(h=u),d=u}for(let c=o,d=l,h=l;c<a;c++){let u=ot[c];if(u==128)c<a-1&&d==ot[c+1]&&d&24?u=ot[c]=d:ot[c]=256;else if(u==64){let f=c+1;for(;f<a&&ot[f]==64;)f++;let m=c&&d==8||f<t&&ot[f]==8?h==1?1:8:256;for(let g=c;g<f;g++)ot[g]=m;c=f-1}else u==8&&h==1&&(ot[c]=1);d=u,u&7&&(h=u)}}}function zA(r,e,t,n,i){let s=i==1?2:1;for(let o=0,a=0,l=0;o<=n.length;o++){let c=o?n[o-1].to:e,d=o<n.length?n[o].from:t;for(let h=c,u,f,m;h<d;h++)if(f=hp[u=r.charCodeAt(h)])if(f<0){for(let g=a-3;g>=0;g-=3)if(Hn[g+1]==-f){let v=Hn[g+2],k=v&2?i:v&4?v&1?s:i:0;k&&(ot[h]=ot[Hn[g]]=k),a=g;break}}else{if(Hn.length==189)break;Hn[a++]=h,Hn[a++]=u,Hn[a++]=l}else if((m=ot[h])==2||m==1){let g=m==i;l=g?0:1;for(let v=a-3;v>=0;v-=3){let k=Hn[v+2];if(k&2)break;if(g)Hn[v+2]|=2;else{if(k&4)break;Hn[v+2]|=4}}}}}function WA(r,e,t,n){for(let i=0,s=n;i<=t.length;i++){let o=i?t[i-1].to:r,a=i<t.length?t[i].from:e;for(let l=o;l<a;){let c=ot[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(ot[d]==256)d++;else break;let h=s==1,u=(d<e?ot[d]:n)==1,f=h==u?h?1:2:n;for(let m=d,g=i,v=g?t[g-1].to:r;m>l;)m==v&&(m=t[--g].from,v=g?t[g-1].to:r),ot[--m]=f;l=d}else s=c,l++}}}function up(r,e,t,n,i,s,o){let a=n%2?2:1;if(n%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 g=ot[l];g!=a&&(d=!1,h=g==16)}let u=!d&&a==1?[]:null,f=d?n:n+1,m=l;e:for(;;)if(c<s.length&&m==s[c].from){if(h)break e;let g=s[c];if(!d)for(let v=g.to,k=c+1;;){if(v==t)break e;if(k<s.length&&s[k].from==v)v=s[k++].to;else{if(ot[v]==a)break e;break}}if(c++,u)u.push(g);else{g.from>l&&o.push(new gn(l,g.from,f));let v=g.direction==Ys!=!(f%2);fp(r,v?n+1:n,i,g.inner,g.from,g.to,o),l=g.to}m=g.to}else{if(m==t||(d?ot[m]!=a:ot[m]==a))break;m++}u?up(r,l,m,n+1,i,u,o):l<m&&o.push(new gn(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 g=ot[l-1];g!=a&&(d=!1,h=g==16)}let u=!d&&a==1?[]:null,f=d?n:n+1,m=l;e:for(;;)if(c&&m==s[c-1].to){if(h)break e;let g=s[--c];if(!d)for(let v=g.from,k=c;;){if(v==e)break e;if(k&&s[k-1].to==v)v=s[--k].from;else{if(ot[v-1]==a)break e;break}}if(u)u.push(g);else{g.to<l&&o.push(new gn(g.to,l,f));let v=g.direction==Ys!=!(f%2);fp(r,v?n+1:n,i,g.inner,g.from,g.to,o),l=g.from}m=g.from}else{if(m==e||(d?ot[m-1]!=a:ot[m-1]==a))break;m--}u?up(r,m,l,n+1,i,u,o):m<l&&o.push(new gn(m,l,f)),l=m}}function fp(r,e,t,n,i,s,o){let a=e%2?2:1;XA(r,i,s,n,a),zA(r,i,s,n,a),WA(i,s,n,a),up(r,i,s,e,t,n,o)}function BA(r,e,t){if(!r)return[new gn(0,0,e==tm?1:0)];if(e==Ys&&!t.length&&!ZA.test(r))return LS(r.length);if(t.length)for(;r.length>ot.length;)ot[ot.length]=256;let n=[],i=e==Ys?0:1;return fp(r,i,i,t,0,r.length,n),n}function LS(r){return[new gn(0,r,0)]}var DS="";function VA(r,e,t,n,i){var s;let o=n.head-r.from,a=gn.find(e,o,(s=n.bidiLevel)!==null&&s!==void 0?s:-1,n.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=xt(r.text,o,l.forward(i,t));(d<l.from||d>l.to)&&(d=c),DS=r.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)+r.from,h.forward(i,t)?1:-1,h.level):Z.cursor(d+r.from,l.forward(i,t)?-1:1,l.level)}function YA(r,e,t){for(let n=e;n<t;n++){let i=RS(r.charCodeAt(n));if(i==1)return Ys;if(i==2||i==4)return tm}return Ys}var IS=le.define(),ZS=le.define(),XS=le.define(),zS=le.define(),pp=le.define(),WS=le.define(),BS=le.define(),rm=le.define(),nm=le.define(),VS=le.define({combine:r=>r.some(e=>e)}),YS=le.define({combine:r=>r.some(e=>e)}),FS=le.define(),Ja=class r{constructor(e,t,n,i,s,o=!1){this.range=e,this.y=t,this.x=n,this.yMargin=i,this.xMargin=s,this.isSnapshot=o}map(e){return e.empty?this:new r(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 r(Z.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Fc=be.define({map:(r,e)=>r.map(e)}),NS=be.define();function jr(r,e,t){let n=r.facet(zS);n.length?n[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}var Pi=le.define({combine:r=>r.length?r[0]:!0}),FA=0,Mo=le.define({combine(r){return r.filter((e,t)=>{for(let n=0;n<t;n++)if(r[n].plugin==e.plugin)return!1;return!0})}}),at=class r{constructor(e,t,n,i,s){this.id=e,this.create=t,this.domEventHandlers=n,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:n,eventObservers:i,provide:s,decorations:o}=t||{};return new r(FA++,e,n,i,a=>{let l=[];return o&&l.push(Pd.of(c=>{let d=c.plugin(a);return d?o(d):ee.none})),s&&l.push(s(a)),l})}static fromClass(e,t){return r.define((n,i)=>new e(n,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(n){if(jr(t.state,n,"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){jr(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(n){jr(e.state,n,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},jS=le.define(),im=le.define(),Pd=le.define(),US=le.define(),sm=le.define(),ul=le.define(),qS=le.define();function Yy(r,e){let t=r.state.facet(qS);if(!t.length)return t;let n=t.map(s=>s instanceof Function?s(r):s),i=[];return Te.spans(n,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=YA(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 g={from:c,to:d,direction:f,inner:[]};h.push(g),h=g.inner}}}}),i}var GS=le.define();function om(r){let e=0,t=0,n=0,i=0;for(let s of r.state.facet(GS)){let o=s(r);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(n=Math.max(n,o.top)),o.bottom!=null&&(i=Math.max(i,o.bottom)))}return{left:e,right:t,top:n,bottom:i}}var Ua=le.define(),Dn=class r{constructor(e,t,n,i){this.fromA=e,this.toA=t,this.fromB=n,this.toB=i}join(e){return new r(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,n=this;for(;t>0;t--){let i=e[t-1];if(!(i.fromA>n.toA)){if(i.toA<n.fromA)break;n=n.join(i),e.splice(t-1,1)}}return e.splice(t,0,n),e}static extendWithRanges(e,t){if(t.length==0)return e;let n=[];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;n.push(new r(d,u,c,h))}return n}},cd=class r{constructor(e,t,n){this.view=e,this.state=t,this.transactions=n,this.flags=0,this.startState=e.state,this.changes=gr.empty(this.startState.doc.length);for(let s of n)this.changes=this.changes.compose(s.changes);let i=[];this.changes.iterChangedRanges((s,o,a,l)=>i.push(new Dn(s,o,a,l))),this.changedRanges=i}static create(e,t,n){return new r(e,t,n)}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}},NA=[],ut=class{constructor(e,t,n=0){this.dom=e,this.length=t,this.flags=n,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return NA}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&&_A(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 n=t;for(let i of this.children){if(i==e)return n;n+=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,n){return null}domPosFor(e,t){let n=Gi(this.dom),i=this.length?e>0:t>0;return new Kn(this.parent.dom,n+(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 ut{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,n=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=n?n.nextSibling:t.firstChild,s&&i!=a.dom&&(s.written=!0),a.dom.parentNode==t)for(;i&&i!=a.dom;)i=Fy(i);else t.insertBefore(a.dom,i);n=a.dom}for(i=n?n.nextSibling:t.firstChild,s&&i&&(s.written=!0);i;)i=Fy(i);this.length=o}};function Fy(r){let e=r.nextSibling;return r.parentNode.removeChild(r),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=ut.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],n=this,i=0,s=0;;)if(i==n.children.length){if(!t.length)return;n=n.parent,n.breakAfter&&s++,i=t.pop()}else{let o=n.children[i++];if(o instanceof ki)t.push(i),n=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 n,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&&(n=void 0)}(l<e||e==c&&(t<-1?a.length:a.covers(1)))&&(!n||!a.isWidget()&&n.isWidget())&&(n=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)}}),!n&&!s)throw new Error("No tile at position "+e);return n&&t<0||!s?{tile:n,offset:i}:{tile:s,offset:o}}},ki=class r 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 n=new r(t||document.createElement(e.tagName),e);return t||(n.flags|=4),n}},Bo=class r extends zo{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,n){let i=new r(t||document.createElement("div"),e);return(!t||!n)&&(i.flags|=4),i}get domAttrs(){return this.attrs}resolveInline(e,t,n){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],g=f+m.length;g>=h&&(m.isComposite()?l(m,h-f):(!o||o.isHidden&&(t>0&&!(o.flags&32)||n&&UA(o,m)))&&(g>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=g}}l(this,e);let c=(t<0?i:o)||i||o;return c?{tile:c,offset:c==i?s:a}:null}coordsIn(e,t,n){let i=this.resolveInline(e,t,!0);return i?i.tile.coordsIn(Math.max(0,i.offset),t,n):jA(this)}domIn(e,t){let n=this.resolveInline(e,t);if(n){let{tile:i,offset:s}=n;if(this.dom.contains(i.dom))return i.isText()?new Kn(i.dom,Math.min(i.dom.nodeValue.length,s)):i.domPosFor(s,i.flags&16?1:i.flags&32?-1:t);let o=n.tile.parent,a=!1;for(let l of o.children){if(a)return new Kn(l.dom,0);l==n.tile&&(a=!0)}}return new Kn(this.dom,0)}};function jA(r){let e=r.dom.lastChild;if(!e)return r.dom.getBoundingClientRect();let t=ed(e);return t[t.length-1]||null}function UA(r,e){let t=r.coordsIn(0,1),n=e.coordsIn(0,1);return t&&n&&n.top<t.bottom}var Tr=class r extends zo{constructor(e,t){super(e),this.mark=t}get domAttrs(){return this.mark.attrs}static of(e,t){let n=new r(t||document.createElement(e.tagName),e);return t||(n.flags|=4),n}},Ws=class r extends ut{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,n){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?ce.chrome||ce.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 ce.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),n==null?c:ld(c,(a?a>0:t<0)==n)}static of(e,t){let n=new r(t||document.createTextNode(e),e);return t||(n.flags|=2),n}},Fs=class r extends ut{constructor(e,t,n,i){super(e,t,i),this.widget=n}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,n){let i=this.widget.coordsAt(this.dom,e,t);if(i)return i;if(n)return ld(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 ld(o,!a)}}get overrideDOMText(){if(!this.length)return Le.empty;let{root:e}=this;if(!e)return Le.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,n,i,s){return s||(s=e.toDOM(t),e.editable||(s.contentEditable="false")),new r(s,n,e,i)}},Vo=class extends ut{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 Le.empty}coordsIn(e,t,n){let i=this.dom.getBoundingClientRect();return n==null?i:ld(i,t>0==n)}},mp=class{constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,n){let{tile:i,index:s,beforeBreak:o,parents:a}=this;for(;e||t>0;)if(i.isComposite())if(o){if(!e)break;n&&n.break(),e--,o=!1}else if(s==i.children.length){if(!e&&!a.length)break;n&&n.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)&&(!n||n.skip(l,0,l.length)!==!1||!l.isComposite)?(o=!!c,s++,e-=l.length):(a.push({tile:i,index:s}),i=l,s=0,n&&l.isComposite()&&n.enter(l))}else{let l=i.length;if(s<l&&e){let c=Math.min(e,l-s);n&&n.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}},Op=class{constructor(e,t,n,i){this.from=e,this.to=t,this.wrapper=n,this.rank=i}},gp=class{constructor(e,t,n){this.cache=e,this.root=t,this.blockWrappers=n,this.curLine=null,this.lastBlock=null,this.afterWidget=null,this.pos=0,this.wrappers=[],this.wrapperPos=0}addText(e,t,n,i){var s;this.flushBuffer();let o=this.ensureMarks(t,n),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 Ws(a.dom,a.text+e);l.parent=o}else o.append(i||Ws.of(e,(s=this.cache.find(Ws))===null||s===void 0?void 0:s.dom));this.pos+=e.length,this.afterWidget=null}addComposition(e,t){let n=this.curLine;n.dom!=t.line.dom&&(n.setDOM(this.cache.reused.has(t.line)?Hf(t.line.dom):t.line.dom),this.cache.reused.set(t.line,2));let i=n;for(let a=t.marks.length-1;a>=0;a--){let l=t.marks[a],c=i.lastChild;if(c instanceof Tr&&c.mark.eq(l.mark))c.dom!=l.dom&&c.setDOM(Hf(l.dom)),i=c;else{if(this.cache.reused.get(l)){let h=ut.get(l.dom);h&&h.setDOM(Hf(l.dom))}let d=Tr.of(l.mark,l.dom);i.append(d),i=d}this.cache.reused.set(l,2)}let s=ut.get(e.text);s&&this.cache.reused.set(s,2);let o=new Ws(e.text,e.text.nodeValue);o.flags|=8,this.pos=e.range.toB,i.append(o)}addInlineWidget(e,t,n){let i=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);i||this.flushBuffer();let s=this.ensureMarks(t,n);!i&&!(e.flags&16)&&s.append(this.getBuffer(1)),s.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,n){this.flushBuffer(),this.ensureMarks(t,n).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 n;e||(e=HS);let i=Bo.start(e,t||((n=this.cache.find(Bo))===null||n===void 0?void 0:n.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 n;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 Tr&&a.mark.eq(o))i=a,t--;else{let l=Tr.of(o,(n=this.cache.find(Tr,c=>c.mark.eq(o)))===null||n===void 0?void 0:n.dom);i.append(l),i=l,t=0}}return i}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!Ny(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(ce.ios&&Ny(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(Kf,0,32)||new Fs(Kf.toDOM(),0,Kf,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,n=new Op(e.from,e.to,e.value,t),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-n.rank||this.wrappers[i-1].to-n.to)<0;)i--;this.wrappers.splice(i,0,n)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let n of this.wrappers){let i=t.lastChild;if(n.from<this.pos&&i instanceof ki&&i.wrapper.eq(n.wrapper))t=i;else{let s=ki.of(n.wrapper,(e=this.cache.find(ki,o=>o.wrapper.eq(n.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),n=this.cache.find(Vo,void 0,1);return n&&(n.flags=t),n||new Vo(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},bp=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),n=this.text.slice(this.textOff,t);return this.textOff=t,n}},dd=[Fs,Bo,Ws,Tr,Vo,ki,Wo];for(let r=0;r<dd.length;r++)dd[r].bucket=r;var yp=class{constructor(e){this.view=e,this.buckets=dd.map(()=>[]),this.index=dd.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,n=this.buckets[t];n.length<6?n.push(e):n[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,n=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,n),c}return null}findWidget(e,t,n){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)==n?(this.reused.set(a,1),a):(this.reused.set(a,2),new Fs(a.dom,t,e,a.flags&-498|n))}}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}},Sp=class{constructor(e,t,n,i,s){this.view=e,this.decorations=i,this.disallowBlockEffectsFor=s,this.openWidget=!1,this.openMarks=0,this.cache=new yp(e),this.text=new bp(e.state.doc),this.builder=new gp(this.cache,new Wo(e,e.contentDOM),Te.iter(n)),this.cache.reused.set(t,2),this.old=new mp(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 n=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,n),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,n){let i=HA(this.old),s=this.openMarks;this.old.advance(e,n?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?Fs.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 Vo)this.cache.add(o);else if(o instanceof Tr)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 Tr&&i.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?i.length&&(i.length=s=0):o instanceof Tr&&(i.shift(),s=Math.min(s,i.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let n=null,i=this.builder,s=-1,o=Te.spans(this.decorations,e,t,{point:(a,l,c,d,h,u)=>{if(c instanceof Vs){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?Hi.block:Hi.inline),m=qA(c),g=this.cache.findWidget(f,l-a,m)||Fs.of(f,this.view,l-a,m);c.block?(c.startSide>0&&i.addLineStartIfNotCovered(n),i.addBlockWidget(g)):(i.ensureLine(n),i.addInlineWidget(g,d,h))}n=null}else n=GA(n,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(n),i.addBreak(),h++):(i.ensureLine(n),i.addText(u,c,h==a?d:c.length),h+=u.length),n=null}s=c.length}});s>-1&&(this.openWidget=o>s),this.openWidget||i.addLineStartIfNotCovered(n),this.openMarks=o}forward(e,t,n=1){t-e<=10?this.old.advance(t-e,n,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,n,this.reuseWalker))}getCompositionContext(e){let t=[],n=null;for(let i=e.parentNode;;i=i.parentNode){let s=ut.get(i);if(i==this.view.contentDOM)break;s instanceof Tr?t.push(s):s!=null&&s.isLine()?n=s:s instanceof ki||(i.nodeName=="DIV"&&!n&&i!=this.view.contentDOM?n=new Bo(i,HS):n||t.push(Tr.of(new ol({tagName:i.nodeName.toLowerCase(),attributes:AA(i)}),i)))}return{line:n,marks:t}}};function Ny(r,e){let t=n=>{for(let i of n.children)if((e?i.isText():i.length)||t(i))return!0;return!1};return t(r)}function qA(r){let e=r.isReplace?(r.startSide<0?64:0)|(r.endSide>0?128:0):r.startSide>0?32:16;return r.block&&(e|=256),e}var HS={class:"cm-line"};function GA(r,e){let t=e.spec.attributes,n=e.spec.class;return!t&&!n||(r||(r={class:"cm-line"}),t&&Jp(t,r),n&&(r.class+=" "+n)),r}function HA(r){let e=[];for(let t=r.parents.length;t>1;t--){let n=t==r.parents.length?r.tile:r.parents[t].tile;n instanceof Tr&&e.push(n.mark)}return e}function Hf(r){let e=ut.get(r);return e&&e.setDOM(r.cloneNode()),r}var Hi=class extends Tt{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}};Hi.inline=new Hi("span");Hi.block=new Hi("div");var Kf=new class extends Tt{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},hd=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=ee.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 Dn(0,0,0,e.state.doc.length)],null)}update(e){var t;let n=e.changedRanges;this.minWidth>0&&n.length&&(n.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:!sC(e.changes,this.hasComposition)&&!e.selectionSet&&(i=e.state.selection.main.head));let s=i>-1?JA(this.view,e.changes,i):null;if(this.domChanged=null,this.hasComposition){let{from:d,to:h}=this.hasComposition;n=new Dn(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(n.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(ce.ie||ce.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=rC(o,this.decorations,e.changes);l.length&&(n=Dn.extendWithRanges(n,l));let c=nC(a,this.blockWrappers,e.changes);return c.length&&(n=Dn.extendWithRanges(n,c)),s&&!n.some(d=>d.fromA<=s.range.fromA&&d.toA>=s.range.toA)&&(n=s.range.addToSet(n.slice())),this.tile.flags&2&&n.length==0?!1:(this.updateInner(n,s),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:n}=this.view;n.ignore(()=>{if(t||e.length){let o=this.tile,a=new Sp(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&ut.get(t.text)&&a.cache.reused.set(ut.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=ce.chrome||ce.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(s),s&&(s.written||n.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);n.updateGaps(i)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let n of t.effects)n.is(NS)&&(this.editContextFormatting=n.value)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let{dom:n}=this.tile,i=this.view.root.activeElement,s=i==n,o=!s&&!(this.view.state.facet(Pi)||n.tabIndex>-1)&&Ha(n,this.view.observer.selectionRange)&&!(i&&n.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)),ce.gecko&&l.empty&&!this.hasComposition&&KA(c)){let u=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(u,c.node.childNodes[c.offset]||null)),c=d=new Kn(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(()=>{ce.android&&ce.chrome&&n.contains(h.focusNode)&&iC(h.focusNode,n)&&(n.blur(),n.focus({preventScroll:!0}));let u=ll(this.view.root);if(u)if(l.empty){if(ce.gecko){let f=eC(c.node,c.offset);if(f&&f!=3){let m=(f==1?AS:CS)(c.node,c.offset);m&&(c=new Kn(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==n&&(n.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Kn(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Kn(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,n=ll(e.root),{anchorNode:i,anchorOffset:s}=e.observer.selectionRange;if(!n||!t.empty||!t.assoc||!n.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);n.collapse(d.node,d.offset),n.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&&n.collapse(i,s)}posFromDOM(e,t){let n=this.tile.nearest(e);if(!n)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let i=n.posAtStart;if(n.isComposite()){let s;if(e==n.dom)s=n.dom.childNodes[t];else{let o=$i(e)==0?0:t==0?-1:1;for(;;){let a=e.parentNode;if(a==n.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==n.dom.firstChild)return i;for(;s&&!ut.get(s);)s=s.nextSibling;if(!s)return i+n.length;for(let o=0,a=i;;o++){let l=n.children[o];if(l.dom==s)return a;a+=l.length+l.breakAfter}}else return n.isText()?e==n.dom?i+t:i+(t?n.length:0):i}domAtPos(e,t){let{tile:n,offset:i}=this.tile.resolveBlock(e,t);return n.isWidget()?n.domPosFor(i,t):n.domIn(i,t)}inlineDOMNearPos(e,t){let n,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&&(n=c,i=e-d,s=h<e),h>=e&&!o&&(o=c,a=e-d,l=d>e),d>e&&o)return!0}}),!n&&!o?this.domAtPos(e,t):(s&&o?n=null:l&&n&&(o=null),n&&t<0||!o?n.domIn(i,t):o.domIn(a,t))}coordsAt(e,t,n){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,n)}lineAt(e,t){let{tile:n}=this.tile.resolveBlock(e,t);return n.isLine()?n:null}coordsForChar(e){let{tile:t,offset:n}=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=xt(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,n)}measureVisibleLineHeights(e){let t=[],{from:n,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==et.LTR,c=0,d=(h,u,f)=>{for(let m=0;m<h.children.length&&!(u>i);m++){let g=h.children[m],v=u+g.length,k=g.dom.getBoundingClientRect(),{height:L}=k;if(f&&!m&&(c+=k.top-f.top),g instanceof ki)v>n&&d(g,u,k);else if(u>=n&&(c>0&&t.push(-c),t.push(L+c),c=0,o)){let M=g.dom.lastChild,D=M?ed(M):[];if(D.length){let w=D[D.length-1],x=l?w.right-k.left:k.right-w.left;x>a&&(a=x,this.minWidth=s,this.minWidthFrom=u,this.minWidthTo=v)}}f&&m==h.children.length-1&&(c+=f.bottom-k.bottom),u=v+g.breakAfter}};return d(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?et.RTL:et.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=ed(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"),n,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=ed(t.firstChild)[0];n=t.getBoundingClientRect().height,i=o&&o.width?o.width/27:7,s=o&&o.height?o.height:n,t.remove()}),{lineHeight:n,charWidth:i,textHeight:s}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let n=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>n){let a=(t.lineBlockAt(o).bottom-t.lineBlockAt(n).top)/this.view.scaleY;e.push(ee.replace({widget:new tl(a),block:!0,inclusive:!0,isBlockGap:!0}).range(n,o))}if(!s)break;n=s.to+1}return ee.set(e)}updateDeco(){let e=1,t=this.view.state.facet(Pd).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),n=!1,i=this.view.state.facet(sm).map((s,o)=>{let a=typeof s=="function";return a&&(n=!0),a?s(this.view):s});for(i.length&&(this.dynamicDecorationMap[e++]=n,t.push(Te.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(US).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(FS))try{if(c(this.view,e.range,e))return!0}catch(d){jr(this.view.state,d,"scroll handler")}let{range:t}=e,n=this.coordsAt(t.head,t.assoc||(t.head>t.anchor?-1:1)),i;if(!n)return;!t.empty&&(i=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(n={left:Math.min(n.left,i.left),top:Math.min(n.top,i.top),right:Math.max(n.right,i.right),bottom:Math.max(n.bottom,i.bottom)});let s=om(this.view),o={left:n.left-s.left,top:n.top-s.top,right:n.right+s.right,bottom:n.bottom+s.bottom},{offsetWidth:a,offsetHeight:l}=this.view.scrollDOM;if(RA(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==et.LTR),window.visualViewport&&window.innerHeight-window.visualViewport.height>1&&(n.top>window.visualViewport.offsetTop+window.visualViewport.height||n.bottom<window.visualViewport.offsetTop)){let c=this.view.docView.lineAt(t.head,1);if(c){let d=$S(c.dom);c.dom.scrollIntoView({block:"nearest"}),QS(d,!1)}}}lineHasWidget(e){let t=n=>n.isWidget()||n.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){vp(this.tile)}};function vp(r,e){let t=e==null?void 0:e.get(r);if(t!=1){t==null&&r.destroy();for(let n of r.children)vp(n,e)}}function KA(r){return r.node.nodeType==1&&r.node.firstChild&&(r.offset==0||r.node.childNodes[r.offset-1].contentEditable=="false")&&(r.offset==r.node.childNodes.length||r.node.childNodes[r.offset].contentEditable=="false")}function KS(r,e){let t=r.observer.selectionRange;if(!t.focusNode)return null;let n=AS(t.focusNode,t.focusOffset),i=CS(t.focusNode,t.focusOffset),s=n||i;if(i&&n&&i.node!=n.node){let a=ut.get(i.node);if(!a||a.isText()&&a.text!=i.node.nodeValue)s=i;else if(r.docView.lastCompositionAfterCursor){let l=ut.get(n.node);!l||l.isText()&&l.text!=n.node.nodeValue||(s=i)}}if(r.docView.lastCompositionAfterCursor=s!=n,!s)return null;let o=e-s.offset;return{from:o,to:o+s.node.nodeValue.length,node:s.node}}function JA(r,e,t){let n=KS(r,t);if(!n)return null;let{node:i,from:s,to:o}=n,a=i.nodeValue;if(/[\n\r]/.test(a)||r.state.doc.sliceString(n.from,n.to)!=a)return null;let l=e.invertedDesc;return{range:new Dn(l.mapPos(s),l.mapPos(o),s,o),text:i}}function eC(r,e){return r.nodeType!=1?0:(e&&r.childNodes[e-1].contentEditable=="false"?1:0)|(e<r.childNodes.length&&r.childNodes[e].contentEditable=="false"?2:0)}var tC=class{constructor(){this.changes=[]}compareRange(e,t){Zo(e,t,this.changes)}comparePoint(e,t){Zo(e,t,this.changes)}boundChange(e){Zo(e,e,this.changes)}};function rC(r,e,t){let n=new tC;return Te.compare(r,e,t,n),n.changes}var xp=class{constructor(){this.changes=[]}compareRange(e,t){Zo(e,t,this.changes)}comparePoint(){}boundChange(e){Zo(e,e,this.changes)}};function nC(r,e,t){let n=new xp;return Te.compare(r,e,t,n),n.changes}function iC(r,e){for(let t=r;t&&t!=e;t=t.assignedSlot||t.parentNode)if(t.nodeType==1&&t.contentEditable=="false")return!0;return!1}function sC(r,e){let t=!1;return e&&r.iterChangedRanges((n,i)=>{n<e.to&&i>e.from&&(t=!0)}),t}var tl=class extends Tt{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 oC(r,e,t=1){let n=r.charCategorizer(e),i=r.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=xt(i.text,s,!1):a=xt(i.text,s);let l=n(i.text.slice(o,a));for(;o>0;){let c=xt(i.text,o,!1);if(n(i.text.slice(c,o))!=l)break;o=c}for(;a<i.length;){let c=xt(i.text,a);if(n(i.text.slice(a,c))!=l)break;a=c}return Z.undirectionalRange(o+i.from,a+i.from)}function aC(r,e,t,n,i){let s=Math.round((n-e.left)*r.defaultCharacterWidth);if(r.lineWrapping&&t.height>r.defaultLineHeight*1.5){let a=r.viewState.heightOracle.textHeight,l=Math.floor((i-t.top-(r.defaultLineHeight-a)*.5)/a);s+=l*r.viewState.heightOracle.lineLength}let o=r.state.sliceDoc(t.from,t.to);return t.from+Vc(o,s,r.state.tabSize)}function wp(r,e,t){let n=r.lineBlockAt(e);if(Array.isArray(n.type)){let i;for(let s of n.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||n}return n}function lC(r,e,t,n){let i=wp(r,e.head,e.assoc||-1),s=!n||i.type!=Ht.Text||!(r.lineWrapping||i.widgetLineBreaks)?null:r.coordsAtPos(e.assoc<0&&e.head>i.from?e.head-1:e.head);if(s){let o=r.dom.getBoundingClientRect(),a=r.textDirectionAt(i.from),l=r.posAtCoords({x:t==(a==et.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 jy(r,e,t,n){let i=r.state.doc.lineAt(e.head),s=r.bidiSpans(i),o=r.textDirectionAt(i.from);for(let a=e,l=null;;){let c=VA(i,s,o,a,t),d=DS;if(!c){if(i.number==(t?r.state.doc.lines:1))return a;d=`
`,i=r.state.doc.line(i.number+(t?1:-1)),s=r.bidiSpans(i),c=r.visualLineSide(i,!t)}if(l){if(!l(d))return a}else{if(!n)return c;l=n(d)}a=c}}function cC(r,e,t){let n=r.state.charCategorizer(e),i=n(t);return s=>{let o=n(s);return i==rt.Space&&(i=o),i==o}}function dC(r,e,t,n){let i=e.head,s=t?1:-1;if(i==(t?r.state.doc.length:0))return Z.cursor(i,e.assoc);let o=e.goalColumn,a,l=r.contentDOM.getBoundingClientRect(),c=r.coordsAtPos(i,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),d=r.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let m=r.viewState.lineBlockAt(i);o==null&&(o=Math.min(l.right-l.left,r.defaultCharacterWidth*(i-m.from))),a=(s<0?m.top:m.bottom)+d}let h=l.left+o,u=r.viewState.heightOracle.textHeight>>1,f=n!=null?n:u;for(let m=0;;m+=u){let g=a+(f+m)*s,v=Pp(r,{x:h,y:g},!1,s);if(t?g>l.bottom:g<l.top)return Z.cursor(v.pos,v.assoc);let k=r.coordsAtPos(v.pos,v.assoc),L=k?(k.top+k.bottom)/2:0;if(!k||(t?L>a:L<a))return Z.cursor(v.pos,v.assoc,void 0,o)}}function rl(r,e,t){for(;;){let n=0;for(let i of r)i.between(e-1,e+1,(s,o,a)=>{if(e>s&&e<o){let l=n||t||(e-s<o-e?-1:1);e=l<0?s:o,n=l}});if(!n)return e}}function JS(r,e){let t=null;for(let n=0;n<e.ranges.length;n++){let i=e.ranges[n],s=null;if(i.empty){let o=rl(r,i.from,0);o!=i.from&&(s=Z.cursor(o,-1))}else{let o=rl(r,i.from,-1),a=rl(r,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[n]=s)}return t?Z.create(t,e.mainIndex):e}function Jf(r,e,t){let n=rl(r.state.facet(ul).map(i=>i(r)),t.from,e.head>t.from?-1:1);return n==t.from?t:Z.cursor(n,n<t.from?1:-1)}var On=class{constructor(e,t){this.pos=e,this.assoc=t}};function Pp(r,e,t,n){let i=r.contentDOM.getBoundingClientRect(),s=i.top+r.viewState.paddingTop,{x:o,y:a}=e,l=a-s,c;for(;;){if(l<0)return new On(0,1);if(l>r.viewState.docHeight)return new On(r.state.doc.length,-1);if(c=r.elementAtHeight(l),n==null)break;if(c.type==Ht.Text){if(n<0?c.to<r.viewport.from:c.from>r.viewport.to)break;let u=r.docView.coordsAt(n<0?c.from:c.to,n>0?-1:1);if(u&&(n<0?u.top<=l+s:u.bottom>=l+s))break}let h=r.viewState.heightOracle.textHeight/2;l=n>0?c.bottom+h:c.top-h}if(r.viewport.from>=c.to||r.viewport.to<=c.from){if(t)return null;if(c.type==Ht.Text){let h=aC(r,i,c,o,a);return new On(h,h==c.from?1:-1)}}if(c.type!=Ht.Text)return l<(c.top+c.bottom)/2?new On(c.from,1):new On(c.to,-1);let d=r.docView.lineAt(c.from,2);return(!d||d.length!=c.length)&&(d=r.docView.lineAt(c.from,-2)),new kp(r,o,a,r.textDirectionAt(c.from)).scanTile(d,c.from)}var kp=class{constructor(e,t,n,i){this.view=e,this.x=t,this.y=n,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:n,spans:i}=this.bidiSpansAt(e);return i[gn.find(i,e-n.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:n,spans:i}=this.bidiSpansAt(e);return i[gn.find(i,e-n.from,-1,t)].dir}bidiIn(e,t){let{spans:n,line:i}=this.bidiSpansAt(e);return n.length>1||n.length&&(n[0].level!=this.baseDir||n[0].to+i.from<t)}scan(e,t,n=!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,g=i+s>>1;t:if(o.has(g)){for(let L=1;L<m;L++){let M=g+L;if(M>=s&&(M-=m),!o.has(M)){g=M;break t}}break e}o.add(g);let v=t(g),k=0;if(v)for(let L=0;L<v.length;L++){let M=v[L];if(!(M.width==0&&v.length>1))if(M.bottom<this.y)(!l||l.bottom<M.bottom)&&(l=M),k=1;else if(M.top>this.y)(!c||c.top>M.top)&&(c=M),k=-1;else{let D=M.left>this.x?this.x-M.left:M.right<this.x?this.x-M.right:0,w=Math.abs(D);w<h&&(d=g,h=w,u=M),D&&(k=D<0==(this.baseDir==et.LTR)?-1:1)}}k==-1&&(!a||this.baseDirAt(e[g],1))?s=g:k==1&&(!a||this.baseDirAt(e[g+1],-1))&&(i=g+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&&!n){let{top:m,bottom:g}=u;if(l&&l.bottom>(m+m+g)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(m+g+g)/3)return this.y=c.top+1,this.scan(e,t,!0)}let f=(a?this.dirAt(e[d],1):this.baseDir)==et.LTR;return{i:d,after:this.x>(u.left+u.right)/2==f}}scanText(e,t){let n=[];for(let s=0;s<e.length;s=xt(e.text,s))n.push(t+s);n.push(t+e.length);let i=this.scan(n,s=>{let o=n[s]-t,a=n[s+1]-t;return cl(e.dom,o,a).getClientRects()});return i.after?new On(n[i.i+1],-1):new On(n[i.i],1)}scanTile(e,t){if(!e.length)return new On(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 n=[t];for(let a=0,l=t;a<e.children.length;a++)n.push(l+=e.children[a].length);let i=this.scan(n,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=n[i.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):i.after?new On(n[i.i+1],-1):new On(o,1)}},Ro="\uFFFF",$p=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 n=e.parentNode;for(let i=e;;){this.findPointBefore(n,i);let s=this.text.length;this.readNode(i);let o=ut.get(i),a=i.nextSibling;if(a==t){o!=null&&o.breakAfter&&!a&&n!=this.view.contentDOM&&this.lineBreak();break}let l=ut.get(a);(o&&l?o.breakAfter:(o?o.breakAfter:ad(i))||ad(a)&&(i.nodeName!="BR"||o!=null&&o.isWidget())&&this.text.length>s)&&!uC(a,t)&&this.lineBreak(),i=a}return this.findPointBefore(n,t),this}readTextNode(e){let t=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,t.length));for(let n=0,i=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,o=1,a;if(this.lineSeparator?(s=t.indexOf(this.lineSeparator,n),o=this.lineSeparator.length):(a=i.exec(t))&&(s=a.index,o=a[0].length),this.append(t.slice(n,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);n=s+o}}readNode(e){let t=ut.get(e),n=t&&t.overrideDOMText;if(n!=null){this.findPointInside(e,n.length);for(let i=n.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 n of this.points)n.node==e&&e.childNodes[n.offset]==t&&(n.pos=this.text.length)}findPointInside(e,t){for(let n of this.points)(e.nodeType==3?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+(hC(e,n.node,n.offset)?t:0))}};function hC(r,e,t){for(;;){if(!e||t<$i(e))return!1;if(e==r)return!0;t=Gi(e)+1,e=e.parentNode}}function uC(r,e){let t;for(;!(r==e||!r);r=r.nextSibling){let n=ut.get(r);if(!(n!=null&&n.isWidget()))return!1;n&&(t||(t=[])).push(n)}if(t)for(let n of t){let i=n.overrideDOMText;if(i!=null&&i.length)return!1}return!0}var ud=class{constructor(e,t){this.node=e,this.offset=t,this.pos=-1}},Qp=class{constructor(e,t,n,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,n,0))){let l=s||o?[]:pC(e),c=new $p(l,e);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=mC(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=s&&s.node==l.focusNode&&s.offset==l.focusOffset||!cp(e.contentDOM,l.focusNode)?a.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!cp(e.contentDOM,l.anchorNode)?a.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((ce.ios||ce.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,g=h.to-f;(m==0||m==1||u==0)&&(g==0||g==-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(r,e,t,n){if(r.isComposite()){let i=-1,s=-1,o=-1,a=-1;for(let l=0,c=n,d=n;l<r.children.length;l++){let h=r.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==r.dom){o=l,a=d;break}d=u,c=u+h.breakAfter}return{from:s,to:a<0?n+r.length:a,startDOM:(i?r.children[i-1].dom.nextSibling:null)||r.dom.firstChild,endDOM:o<r.children.length&&o>=0?r.children[o].dom:null}}else return r.isText()?{from:n,to:n+r.length,startDOM:r.dom,endDOM:r.dom.nextSibling}:null}function tv(r,e){let t,{newSel:n}=e,{state:i}=r,s=i.selection.main,o=r.inputState.lastKeyTime>Date.now()-100?r.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(o===8||ce.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:Le.of(e.text.slice(s.from-a,u).split(Ro))}:(f=rv(h,e.text,c-a,d))&&(ce.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:Le.of(e.text.slice(f.from,f.toB).split(Ro))})}else n&&(!r.hasFocus&&i.facet(Pi)||fd(n,s))&&(n=null);if(!t&&!n)return!1;if((ce.mac||ce.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&r.contentDOM.getAttribute("autocorrect")=="off"?(n&&t.insert.length==2&&(n=Z.single(n.main.anchor-1,n.main.head-1)),t={from:t.from,to:t.to,insert:Le.of([t.insert.toString().replace("."," ")])}):i.doc.lineAt(s.from).to<s.to&&r.docView.lineHasWidget(s.to)&&r.inputState.insertingTextAt>Date.now()-50?t={from:s.from,to:s.to,insert:i.toText(r.inputState.insertingText)}:ce.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==`
`&&r.lineWrapping&&(n&&(n=Z.single(n.main.anchor-1,n.main.head-1)),t={from:s.from,to:s.to,insert:Le.of([" "])}),t)return am(r,t,n,o);if(n&&!fd(n,s)){let a=!1,l="select";return r.inputState.lastSelectionTime>Date.now()-50&&(r.inputState.lastSelectionOrigin=="select"&&(a=!0),l=r.inputState.lastSelectionOrigin,l=="select.pointer"&&(n=JS(i.facet(ul).map(c=>c(r)),n))),r.dispatch({selection:n,scrollIntoView:a,userEvent:l}),!0}else return!1}function am(r,e,t,n=-1){if(ce.ios&&r.inputState.flushIOSKey(e))return!0;let i=r.state.selection.main;if(ce.android&&(e.to==i.to&&(e.from==i.from||e.from==i.from-1&&r.state.sliceDoc(e.from,i.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Xo(r.contentDOM,"Enter",13)||(e.from==i.from-1&&e.to==i.to&&e.insert.length==0||n==8&&e.insert.length<e.to-e.from&&e.to>i.head)&&Xo(r.contentDOM,"Backspace",8)||e.from==i.from&&e.to==i.to+1&&e.insert.length==0&&Xo(r.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();r.inputState.composing>=0&&r.inputState.composing++;let o,a=()=>o||(o=fC(r,e,t));return r.state.facet(WS).some(l=>l(r,e.from,e.to,s,a))||r.dispatch(a()),!0}function fC(r,e,t){let n,i=r.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=rl(i.facet(ul).map(h=>h(r)),c,l);e.from==d&&(o=d)}if(o>-1)n={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)&&r.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):"";n=i.replaceSelection(r.state.toText(l+e.insert.sliceString(0,void 0,r.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&&(r.inputState.composing>=0||r.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let d=r.state.sliceDoc(e.from,e.to),h,u=t&&KS(r,t.main.head);if(u){let m=e.insert.length-(e.to-e.from);h={from:u.from,to:u.to-m}}else h=r.state.doc.lineAt(s.head);let f=s.to-e.to;n=i.changeByRange(m=>{if(m.from==s.from&&m.to==s.to)return{changes:l,range:c||m.map(l)};let g=m.to-f,v=g-d.length;if(r.state.sliceDoc(v,g)!=d||g>=h.from&&v<=h.to)return{range:m};let k=i.changes({from:v,to:g,insert:e.insert}),L=m.to-s.to;return{changes:k,range:c?Z.range(Math.max(0,c.anchor+L),Math.max(0,c.head+L)):m.map(k)}})}else n={changes:l,selection:c&&i.selection.replaceRange(c)}}let a="input.type";return(r.composing||r.inputState.compositionPendingChange&&r.inputState.compositionEndedAt>Date.now()-50)&&(r.inputState.compositionPendingChange=!1,a+=".compose",r.inputState.compositionFirstChange&&(a+=".start",r.inputState.compositionFirstChange=!1)),i.update(n,{userEvent:a,scrollIntoView:!0})}function rv(r,e,t,n){let i=Math.min(r.length,e.length),s=0;for(;s<i&&r.charCodeAt(s)==e.charCodeAt(s);)s++;if(s==i&&r.length==e.length)return null;let o=r.length,a=e.length;for(;o>0&&a>0&&r.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(n=="end"){let l=Math.max(0,s-Math.min(o,a));t-=o+l-s}if(o<s&&r.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 pC(r){let e=[];if(r.root.activeElement!=r.contentDOM)return e;let{anchorNode:t,anchorOffset:n,focusNode:i,focusOffset:s}=r.observer.selectionRange;return t&&(e.push(new ud(t,n)),(i!=t||s!=n)&&e.push(new ud(i,s))),e}function mC(r,e){if(r.length==0)return null;let t=r[0].pos,n=r.length==2?r[1].pos:t;return t>-1&&n>-1?Z.single(t+e,n+e):null}function fd(r,e){return e.head==r.main.head&&e.anchor==r.main.anchor}var Tp=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,ce.safari&&e.contentDOM.addEventListener("input",()=>null),ce.gecko&&AC(e.contentDOM.ownerDocument)}handleEvent(e){!wC(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 n=this.handlers[e];if(n){for(let i of n.observers)i(this.view,t);for(let i of n.handlers){if(t.defaultPrevented)break;if(i(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=gC(e),n=this.handlers,i=this.view.contentDOM;for(let s in t)if(s!="scroll"){let o=!t[s].handlers.length,a=n[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 n)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&&iv.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),ce.android&&ce.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;if(ce.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&(nv.some(t=>t.keyCode==e.keyCode)&&!e.ctrlKey||bC.indexOf(e.key)>-1&&e.ctrlKey)){let t={ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey,shiftKey:e.shiftKey};return t.shiftKey&&ce.ios&&!/^(off|none)$/.test(this.view.contentDOM.autocapitalize)&&OC(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:ce.safari&&!ce.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 OC(r){return r.visualViewport?r.visualViewport.height*r.visualViewport.scale/r.document.documentElement.clientHeight<.85:!1}function Uy(r,e){return(t,n)=>{try{return e.call(r,n,t)}catch(i){jr(t.state,i)}}}function gC(r){let e=Object.create(null);function t(n){return e[n]||(e[n]={observers:[],handlers:[]})}for(let n of r){let i=n.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(Uy(n.value,l))}if(o)for(let a in o){let l=o[a];l&&t(a).observers.push(Uy(n.value,l))}}for(let n in In)t(n).handlers.push(In[n]);for(let n in yr)t(n).observers.push(yr[n]);return e}var nv=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],bC="dthko",iv=[16,17,18,20,91,92,224,225],Nc=6;function jc(r){return Math.max(0,r)*.7+8}function yC(r,e){return Math.max(Math.abs(r.clientX-e.clientX),Math.abs(r.clientY-e.clientY))}var _p=class{constructor(e,t,n,i){this.view=e,this.startEvent=t,this.style=n,this.mustSelect=i,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=kS(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)&&SC(e,t),this.dragging=xC(e,t)&&av(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&&yC(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,n=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=om(this.view);e.clientX-l.left<=i+Nc?t=-jc(i-e.clientX):e.clientX+l.right>=o-Nc&&(t=jc(e.clientX-o)),e.clientY-l.top<=s+Nc?n=-jc(s-e.clientY):e.clientY+l.bottom>=a-Nc&&(n=jc(e.clientY-a)),this.setScrollSpeed(t,n)}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,n=JS(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:n,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 SC(r,e){let t=r.state.facet(IS);return t.length?t[0](e):ce.mac?e.metaKey:e.ctrlKey}function vC(r,e){let t=r.state.facet(ZS);return t.length?t[0](e):ce.mac?!e.altKey:!e.ctrlKey}function xC(r,e){let{main:t}=r.state.selection;if(t.empty)return!1;let n=ll(r.root);if(!n||n.rangeCount==0)return!0;let i=n.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 wC(r,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,n;t!=r.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(n=ut.get(t))&&n.isWidget()&&!n.isHidden&&n.widget.ignoreEvent(e))return!1;return!0}var In=Object.create(null),yr=Object.create(null),sv=ce.ie&&ce.ie_version<15||ce.ios&&ce.webkit_version<604;function PC(r){let e=r.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{r.focus(),t.remove(),ov(r,t.value)},50)}function kd(r,e,t){for(let n of r.facet(e))t=n(t,r);return t}function ov(r,e){e=kd(r.state,rm,e);let{state:t}=r,n,i=1,s=t.toText(e),o=s.lines==t.selection.ranges.length;if(Ap!=null&&t.selection.ranges.every(l=>l.empty)&&Ap==s.toString()){let l=-1;n=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?n=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)}}):n=t.replaceSelection(s);r.dispatch(n,{userEvent:"input.paste",scrollIntoView:!0})}yr.scroll=r=>{let e=r.inputState;e.lastScrollTop=r.scrollDOM.scrollTop,e.lastScrollLeft=r.scrollDOM.scrollLeft,ce.ios&&!e.touchActive&&(e.lastIOSMomentumScroll=Date.now())};yr.wheel=yr.mousewheel=r=>{r.inputState.lastWheelEvent=Date.now()};In.keydown=(r,e)=>(r.inputState.setSelectionOrigin("select"),e.keyCode==27&&r.inputState.tabFocusMode!=0&&(r.inputState.tabFocusMode=Date.now()+2e3),!1);yr.touchstart=(r,e)=>{let t=r.inputState,n=e.targetTouches[0];t.touchActive=!0,t.lastTouchTime=Date.now(),n&&(t.lastTouchX=n.clientX,t.lastTouchY=n.clientY),t.setSelectionOrigin("select.pointer")};yr.touchmove=r=>{r.inputState.setSelectionOrigin("select.pointer")};yr.touchend=(r,e)=>{r.inputState.touchActive=!1};In.mousedown=(r,e)=>{if(r.observer.flush(),r.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let n of r.state.facet(XS))if(t=n(r,e),t)break;if(!t&&e.button==0&&(t=$C(r,e)),t){let n=!r.hasFocus;r.inputState.startMouseSelection(new _p(r,e,t,n)),n&&r.observer.ignore(()=>{TS(r.contentDOM);let s=r.root.activeElement;s&&!s.contains(r.contentDOM)&&s.blur()});let i=r.inputState.mouseSelection;if(i)return i.start(e),i.dragging===!1}else r.inputState.setSelectionOrigin("select.pointer");return!1};function qy(r,e,t,n){if(n==1)return Z.cursor(e,t);if(n==2)return oC(r.state,e,t);{let i=r.docView.lineAt(e,t),s=r.state.doc.lineAt(i?i.posAtEnd:e),o=i?i.posAtStart:s.from,a=i?i.posAtEnd:s.to;return a<r.state.doc.length&&a==s.to&&a++,Z.undirectionalRange(o,a)}}var kC=ce.ie&&ce.ie_version<=11,Gy=null,Hy=0,Ky=0;function av(r){if(!kC)return r.detail;let e=Gy,t=Ky;return Gy=r,Ky=Date.now(),Hy=!e||t>Date.now()-400&&Math.abs(e.clientX-r.clientX)<2&&Math.abs(e.clientY-r.clientY)<2?(Hy+1)%3:1}function $C(r,e){let t=r.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),n=av(e),i=r.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=r.posAndSideAtCoords({x:s.clientX,y:s.clientY},!1),c,d=qy(r,l.pos,l.assoc,n);if(t.pos!=l.pos&&!o){let h=qy(r,t.pos,t.assoc,n),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&&n==1&&i.ranges.length>1&&(c=QC(i,l.pos))?c:a?i.addRange(d):Z.create([d])}}}function QC(r,e){for(let t=0;t<r.ranges.length;t++){let{from:n,to:i}=r.ranges[t];if(n<=e&&i>=e)return Z.create(r.ranges.slice(0,t).concat(r.ranges.slice(t+1)),r.mainIndex==t?0:r.mainIndex-(r.mainIndex>t?1:0))}return null}In.dragstart=(r,e)=>{let{selection:{main:t}}=r.state;if(e.target.draggable){let i=r.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:n}=r;return n.mouseSelection&&(n.mouseSelection.dragging=!0),n.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",kd(r.state,nm,r.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};In.dragend=r=>(r.inputState.draggedContent=null,!1);function Jy(r,e,t,n){if(t=kd(r.state,rm,t),!t)return;let i=r.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=r.inputState,o=n&&s&&vC(r,e)?{from:s.from,to:s.to}:null,a={from:i,insert:t},l=r.state.changes(o?[o,a]:a);r.focus(),r.dispatch({changes:l,selection:{anchor:l.mapPos(i,-1),head:l.mapPos(i,1)},userEvent:o?"move.drop":"input.drop"}),r.inputState.draggedContent=null}In.drop=(r,e)=>{if(!e.dataTransfer)return!1;if(r.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let n=Array(t.length),i=0,s=()=>{++i==t.length&&Jy(r,e,n.filter(o=>o!=null).join(r.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)||(n[o]=a.result),s()},a.readAsText(t[o])}return!0}else{let n=e.dataTransfer.getData("Text");if(n)return Jy(r,e,n,!0),!0}return!1};In.paste=(r,e)=>{if(r.state.readOnly)return!0;r.observer.flush();let t=sv?null:e.clipboardData;return t?(ov(r,t.getData("text/plain")||t.getData("text/uri-list")),!0):(PC(r),!1)};function TC(r,e){let t=r.dom.parentNode;if(!t)return;let n=t.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout(()=>{n.remove(),r.focus()},50)}function _C(r){let e=[],t=[],n=!1;for(let i of r.selection.ranges)i.empty||(e.push(r.sliceDoc(i.from,i.to)),t.push(i));if(!e.length){let i=-1;for(let{from:s}of r.selection.ranges){let o=r.doc.lineAt(s);o.number>i&&(e.push(o.text),t.push({from:o.from,to:Math.min(r.doc.length,o.to+1)})),i=o.number}n=!0}return{text:kd(r,nm,e.join(r.lineBreak)),ranges:t,linewise:n}}var Ap=null;In.copy=In.cut=(r,e)=>{if(!Ha(r.contentDOM,r.observer.selectionRange))return!1;let{text:t,ranges:n,linewise:i}=_C(r.state);if(!t&&!i)return!1;Ap=i?t:null,e.type=="cut"&&!r.state.readOnly&&r.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"});let s=sv?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",t),!0):(TC(r,t),!1)};var lv=Qr.define();function cv(r,e){let t=[];for(let n of r.facet(BS)){let i=n(r,e);i&&t.push(i)}return t.length?r.update({effects:t,annotations:lv.of(!0)}):null}function dv(r){setTimeout(()=>{let e=r.hasFocus;if(e!=r.inputState.notifiedFocused){let t=cv(r.state,e);t?r.dispatch(t):r.update([])}},10)}yr.focus=r=>{r.inputState.lastFocusTime=Date.now(),!r.scrollDOM.scrollTop&&(r.inputState.lastScrollTop||r.inputState.lastScrollLeft)&&(r.scrollDOM.scrollTop=r.inputState.lastScrollTop,r.scrollDOM.scrollLeft=r.inputState.lastScrollLeft),dv(r)};yr.blur=r=>{r.observer.clearSelectionRange(),dv(r)};yr.compositionstart=yr.compositionupdate=r=>{r.observer.editContext||(r.inputState.compositionFirstChange==null&&(r.inputState.compositionFirstChange=!0),r.inputState.composing<0&&(r.inputState.composing=0))};yr.compositionend=r=>{r.observer.editContext||(r.inputState.composing=-1,r.inputState.compositionEndedAt=Date.now(),r.inputState.compositionPendingKey=!0,r.inputState.compositionPendingChange=r.observer.pendingRecords().length>0,r.inputState.compositionFirstChange=null,ce.chrome&&ce.android?r.observer.flushSoon():r.inputState.compositionPendingChange?Promise.resolve().then(()=>r.observer.flush()):setTimeout(()=>{r.inputState.composing<0&&r.docView.hasComposition&&r.update([])},50))};yr.contextmenu=r=>{r.inputState.lastContextMenu=Date.now()};In.beforeinput=(r,e)=>{var t,n;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(r.inputState.insertingText=e.data,r.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&r.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=r.posAtDOM(a.startContainer,a.startOffset),c=r.posAtDOM(a.endContainer,a.endOffset);return am(r,{from:l,to:c,insert:r.state.toText(s)},null),!0}}let i;if(ce.chrome&&ce.android&&(i=nv.find(s=>s.inputType==e.inputType))&&(r.observer.delayAndroidKey(i.key,i.keyCode),i.key=="Backspace"||i.key=="Delete")){let s=((n=window.visualViewport)===null||n===void 0?void 0:n.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>s+10&&r.hasFocus&&(r.contentDOM.blur(),r.focus())},100)}return ce.ios&&e.inputType=="deleteContentForward"&&r.observer.flushSoon(),ce.safari&&e.inputType=="insertText"&&r.inputState.composing>=0&&setTimeout(()=>yr.compositionend(r,e),20),!1};var eS=new Set;function AC(r){eS.has(r)||(eS.add(r),r.addEventListener("copy",()=>{}),r.addEventListener("cut",()=>{}))}var tS=["pre-wrap","normal","pre-line","break-spaces"],Yo=!1;function rS(){Yo=!1}var Cp=class{constructor(e){this.lineWrapping=e,this.doc=Le.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let n=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((t-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}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 tS.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let n=0;n<e.length;n++){let i=e[n];i<0?n++:this.heightSamples[Math.floor(i*10)]||(t=!0,this.heightSamples[Math.floor(i*10)]=!0)}return t}refresh(e,t,n,i,s,o){let a=tS.indexOf(e)>-1,l=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=a;if(this.lineWrapping=a,this.lineHeight=t,this.charWidth=n,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}},Ep=class{constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index<this.heights.length}},Ln=class r{constructor(e,t,n,i,s){this.from=e,this.length=t,this.top=n,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 Vs?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 r(this.from,this.length+e.length,this.top,this.height+e.height,t)}},ct=(function(r){return r[r.ByPos=0]="ByPos",r[r.ByHeight=1]="ByHeight",r[r.ByPosNoHeight=2]="ByPosNoHeight",r})(ct||(ct={})),td=.001,Ur=class r{constructor(e,t,n=2){this.length=e,this.height=t,this.flags=n}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)>td&&(Yo=!0),this.height=e)}replace(e,t,n){return r.of(n)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,n,i){let s=this,o=n.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,n.setDoc(t),0,0),f=u.to>=c?u:s.lineAt(c,ct.ByPosNoHeight,n,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,n,0,0));d+=u.from-l,l=u.from;let m=Mp.build(n.setDoc(o),e,d,h);s=pd(s,s.replace(l,c,m))}return s.updateHeight(n,0)}static empty(){return new mn(0,0,0)}static of(e){if(e.length==1)return e[0];let t=0,n=e.length,i=0,s=0;for(;;)if(t==n)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),n+=1+a.break,i-=a.size}else if(s>i*2){let a=e[n];a.break?e.splice(n,1,a.left,null,a.right):e.splice(n,1,a.left,a.right),n+=2+a.break,s-=a.size}else break;else if(i<s){let a=e[t++];a&&(i+=a.size)}else{let a=e[--n];a&&(s+=a.size)}let o=0;return e[t-1]==null?(o=1,t--):e[t]==null&&(o=1,n++),new Rp(r.of(e.slice(0,t)),o,r.of(e.slice(n)))}};function pd(r,e){return r==e?r:(r.constructor!=e.constructor&&(Yo=!0),e)}Ur.prototype.size=1;var CC=ee.replace({}),md=class extends Ur{constructor(e,t,n){super(e,t),this.deco=n,this.spaceAbove=0}mainBlock(e,t){return new Ln(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.deco||0)}blockAt(e,t,n,i){return this.spaceAbove&&e<n+this.spaceAbove?new Ln(i,0,n,this.spaceAbove,CC):this.mainBlock(n,i)}lineAt(e,t,n,i,s){let o=this.mainBlock(i,s);return this.spaceAbove?this.blockAt(0,n,i,s).join(o):o}forEachLine(e,t,n,i,s,o){e<=s+this.length&&t>=s&&o(this.lineAt(0,ct.ByPos,n,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,n=!1,i){return i&&i.from<=t&&i.more&&this.setMeasuredHeight(i),this.outdated=!1,this}toString(){return`block(${this.length})`}},mn=class r extends md{constructor(e,t,n){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=n}mainBlock(e,t){return new Ln(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,n){let i=n[0];return n.length==1&&(i instanceof r||i instanceof qi&&i.flags&4)&&Math.abs(this.length-i.length)<10?(i instanceof qi?i=new r(i.length,this.height,this.spaceAbove):i.height=this.height,this.outdated||(i.outdated=!1),i):Ur.of(n)}updateHeight(e,t=0,n=!1,i){return i&&i.from<=t&&i.more?this.setMeasuredHeight(i):(n||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:""})`}},qi=class r extends Ur{constructor(e){super(e,0)}heightMetrics(e,t){let n=e.doc.lineAt(t).number,i=e.doc.lineAt(t+this.length).number,s=i-n+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:n,lastLine:i,perLine:o,perChar:a}}blockAt(e,t,n,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-n)/this.height))*this.length)),d=t.doc.lineAt(c),h=a+d.length*l,u=Math.max(n,e-h/2);return new Ln(d.from,d.length,u,h,0)}else{let c=Math.max(0,Math.min(o-s,Math.floor((e-n)/a))),{from:d,length:h}=t.doc.line(s+c);return new Ln(d,h,n+a*c,a,0)}}lineAt(e,t,n,i,s){if(t==ct.ByHeight)return this.blockAt(e,n,i,s);if(t==ct.ByPosNoHeight){let{from:f,to:m}=n.doc.lineAt(e);return new Ln(f,m-f,0,0,0)}let{firstLine:o,perLine:a,perChar:l}=this.heightMetrics(n,s),c=n.doc.lineAt(e),d=a+c.length*l,h=c.number-o,u=i+a*h+l*(c.from-s-h);return new Ln(c.from,c.length,Math.max(i,Math.min(u,i+this.height-d)),d,0)}forEachLine(e,t,n,i,s,o){e=Math.max(e,s),t=Math.min(t,s+this.length);let{firstLine:a,perLine:l,perChar:c}=this.heightMetrics(n,s);for(let d=e,h=i;d<=t;){let u=n.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 Ln(u.from,u.length,h,f,0)),h+=f,d=u.to+1}}replace(e,t,n){let i=this.length-t;if(i>0){let s=n[n.length-1];s instanceof r?n[n.length-1]=new r(s.length+i):n.push(null,new r(i-1))}if(e>0){let s=n[0];s instanceof r?n[0]=new r(e+s.length):n.unshift(new r(e-1),null)}return Ur.of(n)}decomposeLeft(e,t){t.push(new r(e-1),null)}decomposeRight(e,t){t.push(null,new r(this.length-e-1))}updateHeight(e,t=0,n=!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 r(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)>=td&&(l=-2);let f=new mn(d,h,u);f.outdated=!1,o.push(f),a+=d+1}a<=s&&o.push(null,new r(s-a).updateHeight(e,a));let c=Ur.of(o);return(l<0||Math.abs(c.height-this.height)>=td||Math.abs(l-this.heightMetrics(e,t).perLine)>=td)&&(Yo=!0),pd(this,c)}else(n||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Rp=class extends Ur{constructor(e,t,n){super(e.length+t+n.length,e.height+n.height,t|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,t,n,i){let s=n+this.left.height;return e<s?this.left.blockAt(e,t,n,i):this.right.blockAt(e,t,s,i+this.left.length+this.break)}lineAt(e,t,n,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,n,i,s):this.right.lineAt(e,t,n,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,n,o,a)):this.left.lineAt(a,d,n,i,s).join(c)}forEachLine(e,t,n,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,n,i,s,o),t>=l&&this.right.forEachLine(e,t,n,a,l,o);else{let c=this.lineAt(l,ct.ByPos,n,i,s);e<c.from&&this.left.forEachLine(e,c.from-1,n,i,s,o),c.to>=e&&c.from<=t&&o(c),t>c.to&&this.right.forEachLine(c.to+1,t,n,a,l,o)}}replace(e,t,n){let i=this.left.length+this.break;if(t<i)return this.balanced(this.left.replace(e,t,n),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-i,t-i,n));let s=[];e>0&&this.decomposeLeft(e,s);let o=s.length;for(let a of n)s.push(a);if(e>0&&nS(s,o-1),t<this.length){let a=s.length;this.decomposeRight(t,s),nS(s,a)}return Ur.of(s)}decomposeLeft(e,t){let n=this.left.length;if(e<=n)return this.left.decomposeLeft(e,t);t.push(this.left),this.break&&(n++,e>=n&&t.push(null)),e>n&&this.right.decomposeLeft(e-n,t)}decomposeRight(e,t){let n=this.left.length,i=n+this.break;if(e>=i)return this.right.decomposeRight(e-i,t);e<n&&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?Ur.of(this.break?[e,null,t]:[e,t]):(this.left=pd(this.left,e),this.right=pd(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,n=!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,n,i):s.updateHeight(e,t,n),i&&i.from<=a+o.length&&i.more?l=o=o.updateHeight(e,a,n,i):o.updateHeight(e,a,n),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 nS(r,e){let t,n;r[e]==null&&(t=r[e-1])instanceof qi&&(n=r[e+1])instanceof qi&&r.splice(e-1,3,new qi(t.length+1+n.length))}var EC=5,Mp=class r{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 n=Math.min(t,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof mn?i.length+=n-this.pos:(n>this.pos||!this.isCovered)&&this.nodes.push(new mn(n-this.pos,-1,0)),this.writtenTo=n,t>n&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,n){if(e<t||n.heightRelevant){let i=n.widget?n.widget.estimatedHeight:0,s=n.widget?n.widget.lineBreaks:0;i<0&&(i=this.oracle.lineHeight);let o=t-e;n.block?this.addBlock(new md(o,i,n)):(o||s||i>=EC)&&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 mn(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let n=new qi(t-e);return this.oracle.doc.lineAt(e).to==t&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof mn)return e;let t=new mn(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,n){let i=this.ensureLine();i.length+=n,i.collapsed+=n,i.widgetHeight=Math.max(i.widgetHeight,e),i.breaks+=t,this.writtenTo=this.pos=this.pos+n}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof mn)&&!this.isCovered?this.nodes.push(new mn(0,-1,0)):(this.writtenTo<this.pos||t==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let n=e;for(let i of this.nodes)i instanceof mn&&i.updateHeight(this.oracle,n),n+=i?i.length:1;return this.nodes}static build(e,t,n,i){let s=new r(n,e);return Te.spans(t,n,i,s,0),s.finish(n)}};function RC(r,e,t){let n=new Lp;return Te.compare(r,e,t,n,0),n.changes}var Lp=class{constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,n,i){(e<t||n&&n.heightRelevant||i&&i.heightRelevant)&&Zo(e,t,this.changes,5)}};function MC(r,e){let t=r.getBoundingClientRect(),n=r.ownerDocument,i=n.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=r.parentNode;c&&c!=n.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==r.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 LC(r){let e=r.getBoundingClientRect(),t=r.ownerDocument.defaultView||window;return e.left<t.innerWidth&&e.right>0&&e.top<t.innerHeight&&e.bottom>0}function DC(r,e){let t=r.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var nl=class{constructor(e,t,n,i){this.from=e,this.to=t,this.size=n,this.displaySize=i}static same(e,t){if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++){let i=e[n],s=t[n];if(i.from!=s.from||i.to!=s.to||i.size!=s.size)return!1}return!0}draw(e,t){return ee.replace({widget:new Dp(this.displaySize*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}},Dp=class extends Tt{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}},Od=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=iS,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=et.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let n=t.facet(im).some(i=>typeof i!="function"&&i.class=="cm-lineWrapping");this.heightOracle=new Cp(n),this.stateDeco=sS(t),this.heightMap=Ur.empty().applyChanges(this.stateDeco,Le.empty,this.heightOracle.setDoc(t.doc),[new Dn(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=ee.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 n=0;n<=1;n++){let i=n?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((n,i)=>n.from-i.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?iS:new Ip(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 n=this.stateDeco;this.stateDeco=sS(this.state);let i=e.changedRanges,s=Dn.extendWithRanges(i,RC(n,this.stateDeco,e?e.changes:gr.empty(this.state.doc.length))),o=this.heightMap.height,a=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);rS(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(this.heightMap.height!=o||Yo)&&(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(YS)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,n=window.getComputedStyle(t),i=this.heightOracle,s=n.whiteSpace;this.defaultTextDirection=n.direction=="rtl"?et.RTL:et.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:w,scaleY:x}=PS(t,a);(w>.005&&Math.abs(this.scaleX-w)>.005||x>.005&&Math.abs(this.scaleY-x)>.005)&&(this.scaleX=w,this.scaleY=x,c|=16,o=l=!0)}let h=(parseInt(n.paddingTop)||0)*this.scaleY,u=(parseInt(n.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=kS(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=_S(this.scrollParent||e.win);let g=(this.printing?DC:MC)(t,this.paddingTop),v=g.top-this.pixelViewport.top,k=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let L=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(L!=this.inView&&(this.inView=L,L&&(l=!0)),!this.inView&&!this.scrollTarget&&!LC(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 w=e.docView.measureVisibleLineHeights(this.viewport);if(i.mustRefreshForHeights(w)&&(o=!0),o||i.lineWrapping&&Math.abs(M-this.contentDOMWidth)>i.charWidth){let{lineHeight:x,charWidth:R,textHeight:X}=e.docView.measureTextSize();o=x>0&&i.refresh(s,x,R,X,Math.max(5,M/R),w),o&&(e.docView.minWidth=0,c|=16)}v>0&&k>0?d=Math.max(v,k):v<0&&k<0&&(d=Math.min(v,k)),rS();for(let x of this.viewports){let R=x.from==this.viewport.from?w:e.docView.measureVisibleLineHeights(x);this.heightMap=(o?Ur.empty().applyChanges(this.stateDeco,Le.empty,this.heightOracle,[new Dn(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(i,0,o,new Ep(x.from,R))}Yo&&(c|=2)}let D=!this.viewportIsAppropriate(this.viewport,d)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return D&&(c&2&&(c|=this.updateScaler()),this.viewport=this.getViewport(d,this.scrollTarget),c|=this.updateForViewport()),(c&2||D)&&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 n=.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-n*1e3,ct.ByHeight,s,0,0).from,i.lineAt(a+(1-n)*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 n=t.mapPos(e.from,-1),i=t.mapPos(e.to,1);return new Lo(this.heightMap.lineAt(n,ct.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(i,ct.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},n=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(-n,250)))&&(t==this.state.doc.length||s>=a+Math.max(10,Math.min(n,250)))&&i>o-2*1e3&&s<a+2*1e3}mapLineGaps(e,t){if(!e.length||t.empty)return e;let n=[];for(let i of e)t.touchesRange(i.from,i.to)||n.push(new nl(t.mapPos(i.from),t.mapPos(i.to),i.size,i.displaySize));return n}ensureLineGaps(e,t){let n=this.heightOracle.lineWrapping,i=n?1e4:2e3,s=i>>1,o=i<<1;if(this.defaultTextDirection!=et.LTR&&!n)return[];let a=[],l=(d,h,u,f)=>{if(h-d<s)return;let m=this.state.selection.main,g=[m.from];m.empty||g.push(m.to);for(let k of g)if(k>d&&k<h){l(d,k-10,u,f),l(k+10,h,u,f);return}let v=ZC(e,k=>k.from>=u.from&&k.to<=u.to&&Math.abs(k.from-d)<s&&Math.abs(k.to-h)<s&&!g.some(L=>k.from<L&&k.to>L));if(!v){if(h<u.to&&t&&n&&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 k=this.gapSize(u,d,h,f),L=n||k<2e6?k:2e6;v=new nl(d,h,k,L)}a.push(v)},c=d=>{if(d.length<o||d.type!=Ht.Text)return;let h=IC(d.from,d.to,this.stateDeco);if(h.total<o)return;let u=this.scrollTarget?this.scrollTarget.range.head:null,f,m;if(n){let g=i/this.heightOracle.lineLength*this.heightOracle.lineHeight,v,k;if(u!=null){let L=qc(h,u),M=((this.visibleBottom-this.visibleTop)/2+g)/d.height;v=L-M,k=L+M}else v=(this.visibleTop-d.top-g)/d.height,k=(this.visibleBottom-d.top+g)/d.height;f=Uc(h,v),m=Uc(h,k)}else{let g=h.total*this.heightOracle.charWidth,v=i*this.heightOracle.charWidth,k=0;if(g>2e6)for(let x of e)x.from>=d.from&&x.from<d.to&&x.size!=x.displaySize&&x.from*this.heightOracle.charWidth+k<this.pixelViewport.left&&(k=x.size-x.displaySize);let L=this.pixelViewport.left+k,M=this.pixelViewport.right+k,D,w;if(u!=null){let x=qc(h,u),R=((M-L)/2+v)/g;D=x-R,w=x+R}else D=(L-v)/g,w=(M+v)/g;f=Uc(h,D),m=Uc(h,w)}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,n,i){let s=qc(i,n)-qc(i,t);return this.heightOracle.lineWrapping?e.height*s:i.total*this.heightOracle.charWidth*s}updateLineGaps(e){nl.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=ee.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 n=[];Te.spans(t,this.viewport.from,this.viewport.to,{span(s,o){n.push({from:s,to:o})},point(){}},20);let i=0;if(n.length!=this.visibleRanges.length)i=12;else for(let s=0;s<n.length&&!(i&8);s++){let o=this.visibleRanges[s],a=n[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=n,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 IC(r,e,t){let n=[],i=r,s=0;return Te.spans(t,r,e,{span(){},point(o,a){o>i&&(n.push({from:i,to:o}),s+=o-i),i=a}},20),i<e&&(n.push({from:i,to:e}),s+=e-i),{total:s,ranges:n}}function Uc({total:r,ranges:e},t){if(t<=0)return e[0].from;if(t>=1)return e[e.length-1].to;let n=Math.floor(r*t);for(let i=0;;i++){let{from:s,to:o}=e[i],a=o-s;if(n<=a)return s+n;n-=a}}function qc(r,e){let t=0;for(let{from:n,to:i}of r.ranges){if(e<=i){t+=e-n;break}t+=i-n}return t/r.total}function ZC(r,e){for(let t of r)if(e(t))return t}var iS={toDOM(r){return r},fromDOM(r){return r},scale:1,eq(r){return r==this}};function sS(r){let e=r.facet(Pd).filter(n=>typeof n!="function"),t=r.facet(sm).filter(n=>typeof n!="function");return t.length&&e.push(Te.join(t)),e}var Ip=class r{constructor(e,t,n){let i=0,s=0,o=0;this.viewports=n.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,n=0,i=0;;t++){let s=t<this.viewports.length?this.viewports[t]:null;if(!s||e<s.top)return i+(e-n)*this.scale;if(e<=s.bottom)return s.domTop+(e-s.top);n=s.bottom,i=s.domBottom}}fromDOM(e){for(let t=0,n=0,i=0;;t++){let s=t<this.viewports.length?this.viewports[t]:null;if(!s||e<s.domTop)return n+(e-i)/this.scale;if(e<=s.domBottom)return s.top+(e-s.domTop);n=s.bottom,i=s.domBottom}}eq(e){return e instanceof r?this.scale==e.scale&&this.viewports.length==e.viewports.length&&this.viewports.every((t,n)=>t.from==e.viewports[n].from&&t.to==e.viewports[n].to):!1}};function qa(r,e){if(e.scale==1)return r;let t=e.toDOM(r.top),n=e.toDOM(r.bottom);return new Ln(r.from,r.length,t,n-t,Array.isArray(r._content)?r._content.map(i=>qa(i,e)):r._content)}var Gc=le.define({combine:r=>r.join(" ")}),Zp=le.define({combine:r=>r.indexOf(!0)>-1}),Xp=pn.newName(),hv=pn.newName(),uv=pn.newName(),fv={"&light":"."+hv,"&dark":"."+uv};function zp(r,e,t){return new pn(e,{finish(n){return/&/.test(n)?n.replace(/&\w*/,i=>{if(i=="&")return r;if(!t||!t[i])throw new RangeError(`Unsupported selector: ${i}`);return t[i]}):r+" "+n}})}var XC=zp("."+Xp,{"&":{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),zC={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},ep=ce.ie&&ce.ie_version<=11,Wp=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new dp,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 n of t)this.queue.push(n);(ce.ie&&ce.ie_version<=11||ce.ios&&e.composing)&&t.some(n=>n.type=="childList"&&n.removedNodes.length||n.type=="characterData"&&n.oldValue.length>n.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&ce.android&&e.constructor.EDIT_CONTEXT!==!1&&!(ce.chrome&&ce.chrome_version<126)&&(this.editContext=new Bp(e),e.state.facet(Pi)&&(e.contentDOM.editContext=this.editContext.editContext)),ep&&(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,n)=>t!=e[n]))){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:n}=this,i=this.selectionRange;if(n.state.facet(Pi)?n.root.activeElement!=this.dom:!Ha(this.dom,i))return;let s=i.anchorNode&&n.docView.tile.nearest(i.anchorNode);if(s&&s.isWidget()&&s.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(ce.ie&&ce.ie_version<=11||ce.android&&ce.chrome)&&!n.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 n=ce.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&WC(this.view,t)||t;if(!n||this.selectionRange.eq(n))return!1;let i=Ha(this.dom,n);return i&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&LA(this.dom,n)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(n),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 n=this.dom;n;)if(n.nodeType==1)!t&&e<this.scrollTargets.length&&this.scrollTargets[e]==n?e++:t||(t=this.scrollTargets.slice(0,e)),t&&t.push(n),n=n.assignedSlot||n.parentNode;else if(n.nodeType==11)n=n.host;else break;if(e<this.scrollTargets.length&&!t&&(t=this.scrollTargets.slice(0,e)),t){for(let n of this.scrollTargets)n.removeEventListener("scroll",this.onScroll);for(let n of this.scrollTargets=t)n.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,zC),ep&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),ep&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){var n;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||!!(!((n=this.delayedAndroidKey)===null||n===void 0)&&n.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,n=-1,i=!1;for(let s of e){let o=this.readMutation(s);o&&(o.typeOver&&(i=!0),t==-1?{from:t,to:n}=o:(t=Math.min(o.from,t),n=Math.max(o.to,n)))}return{from:t,to:n,typeOver:i}}readChange(){let{from:e,to:t,typeOver:n}=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 Qp(this.view,e,t,n);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 n=this.view.state,i=tv(this.view,t);return this.view.state==n&&(t.domChanged||t.newSel&&!fd(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 n=oS(t,e.previousSibling||e.target.previousSibling,-1),i=oS(t,e.nextSibling||e.target.nextSibling,1);return{from:n?t.posAfter(n):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(Pi)!=e.state.facet(Pi)&&(e.view.contentDOM.editContext=e.state.facet(Pi)?this.editContext.editContext:null))}destroy(){var e,t,n;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(n=this.resizeScroll)===null||n===void 0||n.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 oS(r,e,t){for(;e;){let n=ut.get(e);if(n&&n.parent==r)return n;let i=e.parentNode;e=i!=r.dom?i:t>0?e.nextSibling:e.previousSibling}return null}function aS(r,e){let t=e.startContainer,n=e.startOffset,i=e.endContainer,s=e.endOffset,o=r.docView.domAtPos(r.state.selection.main.anchor,1);return Ka(o.node,o.offset,i,s)&&([t,n,i,s]=[i,s,t,n]),{anchorNode:t,anchorOffset:n,focusNode:i,focusOffset:s}}function WC(r,e){if(e.getComposedRanges){let i=e.getComposedRanges(r.root)[0];if(i)return aS(r,i)}let t=null;function n(i){i.preventDefault(),i.stopImmediatePropagation(),t=i.getTargetRanges()[0]}return r.contentDOM.addEventListener("beforeinput",n,!0),r.dom.ownerDocument.execCommand("indent"),r.contentDOM.removeEventListener("beforeinput",n,!0),t?aS(r,t):null}var Bp=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=n=>{let i=e.state.selection.main,{anchor:s,head:o}=i,a=this.toEditorPos(n.updateRangeStart),l=this.toEditorPos(n.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:n.updateRangeStart,editorBase:a,drifted:!1});let c=l-a>n.text.length;a==this.from&&s<this.from?a=s:l==this.to&&s>this.to&&(l=s);let d=rv(e.state.sliceDoc(a,l),n.text,(c?i.from:i.to)-a,c?"end":null);if(!d){let u=Z.single(this.toEditorPos(n.selectionStart),this.toEditorPos(n.selectionEnd));fd(u,i)||e.dispatch({selection:u,userEvent:"select"});return}let h={from:d.from+a,to:d.toA+a,insert:Le.of(n.text.slice(d.from,d.toB).split(`
`))};if((ce.mac||ce.android)&&h.from==o-1&&/^\. ?$/.test(n.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(h={from:a,to:l,insert:Le.of([n.text.replace("."," ")])}),this.pendingContextChange=h,!e.state.readOnly){let u=this.to-this.from+(h.to-h.from+h.insert.length);am(e,h,Z.single(this.toEditorPos(n.selectionStart,u),this.toEditorPos(n.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,n.updateRangeStart-1),Math.min(t.text.length,n.updateRangeStart+1)))&&this.handlers.compositionend(n)},this.handlers.characterboundsupdate=n=>{let i=[],s=null;for(let o=this.toEditorPos(n.rangeStart),a=this.toEditorPos(n.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(n.rangeStart,i)},this.handlers.textformatupdate=n=>{let i=[];for(let s of n.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(ee.mark({attributes:{style:d}}).range(l,c))}}}e.dispatch({effects:NS.of(ee.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:n}=this.composing;this.composing=null,n&&this.reset(e.state)}};for(let n in this.handlers)t.addEventListener(n,this.handlers[n]);this.measureReq={read:n=>{let i=ll(n.root);i&&i.rangeCount&&this.editContext.updateSelectionBounds(i.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,n=!1,i=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(n)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){n=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=d}t+=d}),i&&!n&&this.revertPending(e.state),!n}update(e){let t=this.pendingContextChange,n=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(n.from,n.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,n=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),i=this.toContextPos(t.head);(this.editContext.selectionStart!=n||this.editContext.selectionEnd!=i)&&this.editContext.updateSelection(n,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 n=this.composing;return n&&n.drifted?n.editorBase+(e-n.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])}},N=class r{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:n}=e;this.dispatchTransactions=e.dispatchTransactions||n&&(i=>i.forEach(s=>n(s,this)))||(i=>this.update(i)),this.dispatch=this.dispatch.bind(this),this._root=e.root||MA(e.parent)||document,this.viewState=new Od(this,e.state||Me.create(e)),e.scrollTo&&e.scrollTo.is(Fc)&&(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 Wp(this),this.inputState=new Tp(this),this.inputState.ensureHandlers(this.plugins),this.docView=new hd(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 dt?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,n=!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(lv))?(this.inputState.notifiedFocused=o,a=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,l=cv(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=cd.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:g}=this.state.facet(r.cursorScrollMargin);h=new Ja(f.empty?f:Z.cursor(f.head,f.head>f.anchor?-1:1),"nearest","nearest",g,m)}for(let f of u.effects)f.is(Fc)&&(h=f.value.clip(this.state))}this.viewState.update(i,h),this.bidiCache=gd.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(),n=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(i.startState.facet(Gc)!=i.state.facet(Gc)&&(this.viewState.mustMeasureContent=!0),(t||n||h||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!i.empty)for(let u of this.state.facet(pp))try{u(i)}catch(f){jr(this.state,f,"update listener")}(l||d)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),d&&!tv(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 n of this.plugins)n.destroy(this);this.viewState=new Od(this,e),this.plugins=e.facet(Mo).map(n=>new el(n)),this.pluginMap.clear();for(let n of this.plugins)n.update(this);this.docView.destroy(),this.docView=new hd(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),n=e.state.facet(Mo);if(t!=n){let i=[];for(let s of n){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!=n&&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(n){jr(this.state,n,"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,n=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(_S(n||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(g){return jr(this.state,g),lS}}),u=cd.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]!=lS)try{let g=d[m];g.write&&g.write(h[m],this)}catch(g){jr(this.state,g)}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 g=(s<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(s).top)/this.viewState.scaleY-o/a;if((g>1||g<-1)&&!(ce.ios&&this.inputState.lastIOSMomentumScroll>Date.now()-100)&&(n==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){i=i+g,n?s<0?n.scrollTop=n.scrollHeight:n.scrollTop+=g:this.win.scrollBy(0,g),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(pp))l(t)}get themeClasses(){return Xp+" "+(this.state.facet(Zp)?uv:hv)+" "+this.state.facet(Gc)}updateAttrs(){let e=cS(this,jS,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Pi)?"true":"false",class:"cm-content",style:`${ce.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),cS(this,im,t);let n=this.observer.ignore(()=>{let i=Wy(this.contentDOM,this.contentAttrs,t),s=Wy(this.dom,this.editorAttrs,e);return i||s});return this.editorAttrs=e,this.contentAttrs=t,n}showAnnouncements(e){let t=!0;for(let n of e)for(let i of n.effects)if(i.is(r.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(r.cspNonce);pn.mount(this.root,this.styleModules.concat(XC).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(n=>n.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,n){return Jf(this,e,jy(this,e,t,n))}moveByGroup(e,t){return Jf(this,e,jy(this,e,t,n=>cC(this,e.head,n)))}visualLineSide(e,t){let n=this.bidiSpans(e),i=this.textDirectionAt(e.from),s=n[t?n.length-1:0];return Z.cursor(s.side(t,i)+e.from,s.forward(!t,i)?1:-1)}moveToLineBoundary(e,t,n=!0){return lC(this,e,t,n)}moveVertically(e,t,n){return Jf(this,e,dC(this,e,t,n))}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 n=Pp(this,e,t);return n&&n.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),Pp(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let n=this.state.doc.lineAt(e),i=this.bidiSpans(n),s=i[gn.find(i,e-n.from,-1,t)];return this.docView.coordsAt(e,t,s.dir==et.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(VS)||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>BC)return LS(e.length);let t=this.textDirectionAt(e.from),n;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==t&&(s.fresh||MS(s.isolates,n=Yy(this,e))))return s.order;n||(n=Yy(this,e));let i=BA(e.text,t,n);return this.bidiCache.push(new gd(e.from,e.to,t,n,!0,i)),i}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||ce.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{TS(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 n,i,s,o;return Fc.of(new Ja(typeof e=="number"?Z.cursor(e):e,(n=t.y)!==null&&n!==void 0?n:"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,n=this.viewState.scrollAnchorAt(e);return Fc.of(new Ja(Z.cursor(n.from),"start","start",n.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 at.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return at.define(()=>({}),{eventObservers:e})}static theme(e,t){let n=pn.newName(),i=[Gc.of(n),Ua.of(zp(`.${n}`,e))];return t&&t.dark&&i.push(Zp.of(!0)),i}static baseTheme(e){return fn.lowest(Ua.of(zp("."+Xp,e,fv)))}static findFromDOM(e){var t;let n=e.querySelector(".cm-content"),i=n&&ut.get(n)||ut.get(e);return((t=i==null?void 0:i.root)===null||t===void 0?void 0:t.view)||null}};N.styleModule=Ua;N.inputHandler=WS;N.clipboardInputFilter=rm;N.clipboardOutputFilter=nm;N.scrollHandler=FS;N.focusChangeEffect=BS;N.perLineTextDirection=VS;N.exceptionSink=zS;N.updateListener=pp;N.editable=Pi;N.mouseSelectionStyle=XS;N.dragMovesSelection=ZS;N.clickAddsSelectionRange=IS;N.decorations=Pd;N.blockWrappers=US;N.outerDecorations=sm;N.atomicRanges=ul;N.bidiIsolatedRanges=qS;N.cursorScrollMargin=le.define({combine:r=>{let e=5,t=5;for(let n of r)typeof n=="number"?e=t=n:{x:e,y:t}=n;return{x:e,y:t}}});N.scrollMargins=GS;N.darkTheme=Zp;N.cspNonce=le.define({combine:r=>r.length?r[0]:""});N.contentAttributes=im;N.editorAttributes=jS;N.lineWrapping=N.contentAttributes.of({class:"cm-lineWrapping"});N.announce=be.define();var BC=4096,lS={},gd=class r{constructor(e,t,n,i,s,o){this.from=e,this.to=t,this.dir=n,this.isolates=i,this.fresh=s,this.order=o}static update(e,t){if(t.empty&&!e.some(s=>s.fresh))return e;let n=[],i=e.length?e[e.length-1].dir:et.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)&&n.push(new r(t.mapPos(o.from,1),t.mapPos(o.to,-1),o.dir,o.isolates,!1,o.order))}return n}};function cS(r,e,t){for(let n=r.state.facet(e),i=n.length-1;i>=0;i--){let s=n[i],o=typeof s=="function"?s(r):s;o&&Jp(o,t)}return t}var VC=ce.mac?"mac":ce.windows?"win":ce.linux?"linux":"key";function YC(r,e){let t=r.split(/-(?!$)/),n=t[t.length-1];n=="Space"&&(n=" ");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&&(n="Alt-"+n),s&&(n="Ctrl-"+n),a&&(n="Meta-"+n),o&&(n="Shift-"+n),n}function Hc(r,e,t){return e.altKey&&(r="Alt-"+r),e.ctrlKey&&(r="Ctrl-"+r),e.metaKey&&(r="Meta-"+r),t!==!1&&e.shiftKey&&(r="Shift-"+r),r}var FC=fn.default(N.domEventHandlers({keydown(r,e){return Ov(pv(e.state),r,e,"editor")}})),Sr=le.define({enables:FC}),dS=new WeakMap;function pv(r){let e=r.facet(Sr),t=dS.get(e);return t||dS.set(e,t=jC(e.reduce((n,i)=>n.concat(i),[]))),t}function mv(r,e,t){return Ov(pv(r.state),e,r,t)}var Ui=null,NC=4e3;function jC(r,e=VC){let t=Object.create(null),n=Object.create(null),i=(o,a)=>{let l=n[o];if(l==null)n[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(k=>YC(k,e));for(let k=1;k<m.length;k++){let L=m.slice(0,k).join(" ");i(L,!0),f[L]||(f[L]={preventDefault:!0,stopPropagation:!1,run:[M=>{let D=Ui={view:M,prefix:L,scope:o};return setTimeout(()=>{Ui==D&&(Ui=null)},NC),!0}]})}let g=m.join(" ");i(g,!1);let v=f[g]||(f[g]={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&&v.run.push(l),c&&(v.preventDefault=!0),d&&(v.stopPropagation=!0)};for(let o of r){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,Vp))}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 Vp=null;function Ov(r,e,t,n){Vp=e;let i=Dy(e),s=Mn(i,0),o=ji(s)==i.length&&i!=" ",a="",l=!1,c=!1,d=!1;Ui&&Ui.view==t&&Ui.scope==n&&(a=Ui.prefix+" ",iv.indexOf(e.keyCode)<0&&(c=!0,Ui=null));let h=new Set,u=v=>{if(v){for(let k of v.run)if(!h.has(k)&&(h.add(k),k(t)))return v.stopPropagation&&(d=!0),!0;v.preventDefault&&(v.stopPropagation&&(d=!0),c=!0)}return!1},f=r[n],m,g;return f&&(u(f[a+Hc(i,e,!o)])?l=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(ce.windows&&e.ctrlKey&&e.altKey)&&!(ce.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(m=wi[e.keyCode])&&m!=i?(u(f[a+Hc(m,e,!0)])||e.shiftKey&&(g=Eo[e.keyCode])!=i&&g!=m&&u(f[a+Hc(g,e,!1)]))&&(l=!0):o&&e.shiftKey&&u(f[a+Hc(i,e,!0)])&&(l=!0),!l&&u(f._any)&&(l=!0)),c&&(l=!0),l&&d&&e.stopPropagation(),Vp=null,l}var Bs=class r{constructor(e,t,n,i,s){this.className=e,this.left=t,this.top=n,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,n){if(n.empty){let i=e.coordsAtPos(n.head,n.assoc||1);if(!i)return[];let s=gv(e);return[new r(t,i.left-s.left,i.top-s.top,null,i.bottom-i.top)]}else return UC(e,t,n)}};function gv(r){let e=r.scrollDOM.getBoundingClientRect();return{left:(r.textDirection==et.LTR?e.left:e.right-r.scrollDOM.clientWidth*r.scaleX)-r.scrollDOM.scrollLeft*r.scaleX,top:e.top-r.scrollDOM.scrollTop*r.scaleY}}function hS(r,e,t,n){let i=r.coordsAtPos(e,t*2);if(!i)return n;let s=r.dom.getBoundingClientRect(),o=(i.top+i.bottom)/2,a=r.posAtCoords({x:s.left+1,y:o}),l=r.posAtCoords({x:s.right-1,y:o});return a==null||l==null?n:{from:Math.max(n.from,Math.min(a,l)),to:Math.min(n.to,Math.max(a,l))}}function UC(r,e,t){if(t.to<=r.viewport.from||t.from>=r.viewport.to)return[];let n=Math.max(t.from,r.viewport.from),i=Math.min(t.to,r.viewport.to),s=r.textDirection==et.LTR,o=r.contentDOM,a=o.getBoundingClientRect(),l=gv(r),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=wp(r,n,1),m=wp(r,i,-1),g=f.type==Ht.Text?f:null,v=m.type==Ht.Text?m:null;if(g&&(r.lineWrapping||f.widgetLineBreaks)&&(g=hS(r,n,1,g)),v&&(r.lineWrapping||m.widgetLineBreaks)&&(v=hS(r,i,-1,v)),g&&v&&g.from==v.from&&g.to==v.to)return L(M(t.from,t.to,g));{let w=g?M(t.from,null,g):D(f,!1),x=v?M(null,t.to,v):D(m,!0),R=[];return(g||f).to<(v||m).from-(g&&v?1:0)||f.widgetLineBreaks>1&&w.bottom+r.defaultLineHeight/2<x.top?R.push(k(h,w.bottom,u,x.top)):w.bottom<x.top&&r.elementAtHeight((w.bottom+x.top)/2).type==Ht.Text&&(w.bottom=x.top=(w.bottom+x.top)/2),L(w).concat(R).concat(L(x))}function k(w,x,R,X){return new Bs(e,w-l.left,x-l.top,Math.max(0,R-w),X-x)}function L({top:w,bottom:x,horizontal:R}){let X=[];for(let j=0;j<R.length;j+=2)X.push(k(R[j],w,R[j+1],x));return X}function M(w,x,R){let X=1e9,j=-1e9,G=[];function ie(pe,ke,B,he,J){let ve=r.coordsAtPos(pe,pe==R.to?-2:2),$e=r.coordsAtPos(B,B==R.from?2:-2);!ve||!$e||(X=Math.min(ve.top,$e.top,X),j=Math.max(ve.bottom,$e.bottom,j),J==et.LTR?G.push(s&&ke?h:ve.left,s&&he?u:$e.right):G.push(!s&&he?h:$e.left,!s&&ke?u:ve.right))}let U=w!=null?w:R.from,ge=x!=null?x:R.to;for(let pe of r.visibleRanges)if(pe.to>U&&pe.from<ge)for(let ke=Math.max(pe.from,U),B=Math.min(pe.to,ge);;){let he=r.state.doc.lineAt(ke);for(let J of r.bidiSpans(he)){let ve=J.from+he.from,$e=J.to+he.from;if(ve>=B)break;$e>ke&&ie(Math.max(ve,ke),w==null&&ve<=U,Math.min($e,B),x==null&&$e>=ge,J.dir)}if(ke=he.to+1,ke>=B)break}return G.length==0&&ie(U,w==null,ge,x==null,r.textDirection),{top:X,bottom:j,horizontal:G}}function D(w,x){let R=a.top+(x?w.top:w.bottom);return{top:R,bottom:R,horizontal:[]}}}function qC(r,e){return r.constructor==e.constructor&&r.eq(e)}var Yp=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(rd)!=e.state.facet(rd)&&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,n=e.facet(rd);for(;t<n.length&&n[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,n)=>!qC(t,this.drawn[n]))){let t=this.dom.firstChild,n=0;for(let i of e)i.update&&t&&i.constructor&&this.drawn[n].constructor&&i.update(t,this.drawn[n])?(t=t.nextSibling,n++):this.dom.insertBefore(i.draw(),t);for(;t;){let i=t.nextSibling;t.remove(),t=i}this.drawn=e,ce.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},rd=le.define();function bv(r){return[at.define(e=>new Yp(e,r)),rd.of(r)]}var Fo=le.define({combine(r){return Nr(r,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function $d(r={}){return[Fo.of(r),GC,HC,JC,YS.of(!0)]}function yv(r){return r.startState.facet(Fo)!=r.state.facet(Fo)}var GC=bv({above:!0,markers(r){let{state:e}=r,t=e.facet(Fo),n=[];for(let i of e.selection.ranges){let s=i==e.selection.main;if(i.empty||t.drawRangeCursor&&!(s&&ce.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 Bs.forRange(r,o,a))n.push(l)}}return n},update(r,e){r.transactions.some(n=>n.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=yv(r);return t&&uS(r.state,e),r.docChanged||r.selectionSet||t},mount(r,e){uS(e.state,r)},class:"cm-cursorLayer"});function uS(r,e){e.style.animationDuration=r.facet(Fo).cursorBlinkRate+"ms"}var HC=bv({above:!1,markers(r){let e=[],{main:t,ranges:n}=r.state.selection;for(let i of n)if(!i.empty)for(let s of Bs.forRange(r,"cm-selectionBackground",i))e.push(s);if(ce.ios&&!t.empty&&r.state.facet(Fo).iosSelectionHandles){for(let i of Bs.forRange(r,"cm-selectionHandle cm-selectionHandle-start",Z.cursor(t.from,1)))e.push(i);for(let i of Bs.forRange(r,"cm-selectionHandle cm-selectionHandle-end",Z.cursor(t.to,1)))e.push(i)}return e},update(r,e){return r.docChanged||r.selectionSet||r.viewportChanged||yv(r)},class:"cm-selectionLayer"}),KC=ce.gecko&&ce.gecko_version==153?"#ffffff01":"transparent",JC=fn.highest(N.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:`${KC} !important`},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Sv=be.define({map(r,e){return r==null?null:e.mapPos(r)}}),Ga=Ze.define({create(){return null},update(r,e){return r!=null&&(r=e.changes.mapPos(r)),e.effects.reduce((t,n)=>n.is(Sv)?n.value:t,r)}}),eE=at.fromClass(class{constructor(r){this.view=r,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(r){var e;let t=r.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"),(r.startState.field(Ga)!=t||r.docChanged||r.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:r}=this,e=r.state.field(Ga),t=e!=null&&r.coordsAtPos(e);if(!t)return null;let n=r.scrollDOM.getBoundingClientRect();return{left:t.left-n.left+r.scrollDOM.scrollLeft*r.scaleX,top:t.top-n.top+r.scrollDOM.scrollTop*r.scaleY,height:t.bottom-t.top}}drawCursor(r){if(this.cursor){let{scaleX:e,scaleY:t}=this.view;r?(this.cursor.style.left=r.left/e+"px",this.cursor.style.top=r.top/t+"px",this.cursor.style.height=r.height/t+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(r){this.view.state.field(Ga)!=r&&this.view.dispatch({effects:Sv.of(r)})}},{eventObservers:{dragover(r){this.setDropPos(this.view.posAtCoords({x:r.clientX,y:r.clientY}))},dragleave(r){(r.target==this.view.contentDOM||!this.view.contentDOM.contains(r.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function vv(){return[Ga,eE]}function fS(r,e,t,n,i){e.lastIndex=0;for(let s=r.iterRange(t,n),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 tE(r,e){let t=r.visibleRanges;if(t.length==1&&t[0].from==r.viewport.from&&t[0].to==r.viewport.to)return t;let n=[];for(let{from:i,to:s}of t)i=Math.max(r.state.doc.lineAt(i).from,i-e),s=Math.min(r.state.doc.lineAt(s).to,s+e),n.length&&n[n.length-1].to>=i?n[n.length-1].to=s:n.push({from:i,to:s});return n}var dl=class{constructor(e){let{regexp:t,decoration:n,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 n=="function")this.addMatch=(a,l,c,d)=>{let h=n(a,l,c);h&&d(c,c+a[0].length,h)};else if(n)this.addMatch=(a,l,c,d)=>d(c,c+a[0].length,n);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=s,this.maxLength=o}createDeco(e){let t=new Rn,n=t.add.bind(t);for(let{from:i,to:s}of tE(e,this.maxLength))fS(e.state.doc,this.regexp,i,s,(o,a)=>this.addMatch(a,e,o,n));return t.finish()}updateDeco(e,t){let n=1e9,i=-1;return e.docChanged&&e.changes.iterChanges((s,o,a,l)=>{l>=e.view.viewport.from&&a<=e.view.viewport.to&&(n=Math.min(a,n),i=Math.max(l,i))}),e.viewportMoved||i-n>1e3?this.createDeco(e.view):i>-1?this.updateRange(e.view,t.map(e.changes),n,i):t}updateRange(e,t,n,i){for(let s of e.visibleRanges){let o=Math.max(s.from,n),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=(g,v,k)=>u.push(k.range(g,v));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,(g,v)=>this.addMatch(v,e,g,m));t=t.update({filterFrom:d,filterTo:h,filter:(g,v)=>g<d||v>h,add:u})}}return t}},Fp=/x/.unicode!=null?"gu":"g",rE=new RegExp(`[\0-\b
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,Fp),nE={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"},tp=null;function iE(){var r;if(tp==null&&typeof document!="undefined"&&document.body){let e=document.body.style;tp=((r=e.tabSize)!==null&&r!==void 0?r:e.MozTabSize)!=null}return tp||!1}var nd=le.define({combine(r){let e=Nr(r,{render:null,specialChars:rE,addSpecialChars:null});return(e.replaceTabs=!iE())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Fp)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Fp)),e}});function xv(r={}){return[nd.of(r),sE()]}var pS=null;function sE(){return pS||(pS=at.fromClass(class{constructor(r){this.view=r,this.decorations=ee.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(r.state.facet(nd)),this.decorations=this.decorator.createDeco(r)}makeDecorator(r){return new dl({regexp:r.specialChars,decoration:(e,t,n)=>{let{doc:i}=t.state,s=Mn(e[0],0);if(s==9){let o=i.lineAt(n),a=t.state.tabSize,l=Gt(o.text,a,n-o.from);return ee.replace({widget:new jp((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=ee.replace({widget:new Np(r,s)}))},boundary:r.replaceTabs?void 0:/[^]/})}update(r){let e=r.state.facet(nd);r.startState.facet(nd)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(r.view)):this.decorations=this.decorator.updateDeco(r,this.decorations)}},{decorations:r=>r.decorations}))}var oE="\u2022";function aE(r){return r>=32?oE:r==10?"\u2424":String.fromCharCode(9216+r)}var Np=class extends Tt{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=aE(this.code),n=e.state.phrase("Control character")+" "+(nE[this.code]||"0x"+this.code.toString(16)),i=this.options.render&&this.options.render(this.code,n,t);if(i)return i;let s=document.createElement("span");return s.textContent=t,s.title=n,s.setAttribute("aria-label",n),s.className="cm-specialChar",s}ignoreEvent(){return!1}},jp=class extends Tt{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 Qd(){return cE}var lE=ee.line({class:"cm-activeLine"}),cE=at.fromClass(class{constructor(r){this.decorations=this.getDeco(r)}update(r){(r.docChanged||r.selectionSet)&&(this.decorations=this.getDeco(r.view))}getDeco(r){let e=-1,t=[];for(let n of r.state.selection.ranges){let i=r.lineBlockAt(n.head);i.from>e&&(t.push(lE.range(i.from)),e=i.from)}return ee.set(t)}},{decorations:r=>r.decorations});var Up=2e3;function dE(r,e,t){let n=Math.min(e.line,t.line),i=Math.max(e.line,t.line),s=[];if(e.off>Up||t.off>Up||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=n;l<=i;l++){let c=r.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=n;l<=i;l++){let c=r.doc.line(l),d=Vc(c.text,o,r.tabSize,!0);if(d<0)s.push(Z.cursor(c.to));else{let h=Vc(c.text,a,r.tabSize);s.push(Z.range(c.from+d,c.from+h))}}}return s}function hE(r,e){let t=r.coordsAtPos(r.viewport.from);return t?Math.round(Math.abs((t.left-e)/r.defaultCharacterWidth)):-1}function mS(r,e){let t=r.posAtCoords({x:e.clientX,y:e.clientY},!1),n=r.state.doc.lineAt(t),i=t-n.from,s=i>Up?-1:i==n.length?hE(r,e.clientX):Gt(n.text,r.state.tabSize,t-n.from);return{line:n.number,col:s,off:i}}function uE(r,e){let t=mS(r,e),n=r.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)},n=n.map(i.changes)}},get(i,s,o){let a=mS(r,i);if(!a)return n;let l=dE(r.state,t,a);return l.length?o?Z.create(l.concat(n.ranges)):Z.create(l):n}}:null}function Td(r){let e=(r==null?void 0:r.eventFilter)||(t=>t.altKey&&t.button==0);return N.mouseSelectionStyle.of((t,n)=>e(n)?uE(t,n):null)}var fE={Alt:[18,r=>!!r.altKey],Control:[17,r=>!!r.ctrlKey],Shift:[16,r=>!!r.shiftKey],Meta:[91,r=>!!r.metaKey]},pE={style:"cursor: crosshair"};function _d(r={}){let[e,t]=fE[r.key||"Alt"],n=at.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[n,N.contentAttributes.of(i=>{var s;return!((s=i.plugin(n))===null||s===void 0)&&s.isDown?pE:null})]}var Kc="-10000px",bd=class{constructor(e,t,n,i){this.facet=t,this.createTooltipView=n,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=n(o,s))}update(e,t){var n;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),(n=l.destroy)===null||n===void 0||n.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 mE(r){let e=r.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}var rp=le.define({combine:r=>{var e,t,n;return{position:ce.ios?"absolute":((e=r.find(i=>i.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=r.find(i=>i.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((n=r.find(i=>i.tooltipSpace))===null||n===void 0?void 0:n.tooltipSpace)||mE}}}),OS=new WeakMap,wv=at.fromClass(class{constructor(r){this.view=r,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=r.state.facet(rp);this.position=e.position,this.parent=e.parent,this.classes=r.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 bd(r,lm,(t,n)=>this.createTooltip(t,n),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(),r.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 r of this.manager.tooltipViews)this.intersectionObserver.observe(r.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(r){r.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(r,this.above);e&&this.observeIntersection();let t=e||r.geometryChanged,n=r.state.facet(rp);if(n.position!=this.position&&!this.madeAbsolute){this.position=n.position;for(let i of this.manager.tooltipViews)i.dom.style.position=this.position;t=!0}if(n.parent!=this.parent){this.parent&&this.container.remove(),this.parent=n.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(r,e){let t=r.create(this.view),n=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),r.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=Kc,t.dom.style.left="0px",this.container.insertBefore(t.dom,n),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var r,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let n of this.manager.tooltipViews)n.dom.remove(),(r=n.destroy)===null||r===void 0||r.call(n);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 r=1,e=1,t=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:s}=this.manager.tooltipViews[0];if(ce.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&&(r=s.width/this.parent.offsetWidth,e=s.height/this.parent.offsetHeight)}else({scaleX:r,scaleY:e}=this.view.viewState);let n=this.view.scrollDOM.getBoundingClientRect(),i=om(this.view);return{visible:{left:n.left+i.left,top:n.top+i.top,right:n.right-i.right,bottom:n.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(rp).tooltipSpace(this.view),scaleX:r,scaleY:e,makeAbsolute:t}}writeMeasure(r){var e;if(r.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let a of this.manager.tooltipViews)a.dom.style.position="absolute"}let{visible:t,space:n,scaleX:i,scaleY:s}=r,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=r.pos[a],u=r.size[a];if(!h||l.clip!==!1&&(h.bottom<=Math.max(t.top,n.top)||h.top>=Math.min(t.bottom,n.bottom)||h.right<Math.max(t.left,n.left)-.1||h.left>Math.min(t.right,n.right)+.1)){d.style.top=Kc;continue}let f=l.arrow?c.dom.querySelector(".cm-tooltip-arrow"):null,m=f?7:0,g=u.right-u.left,v=(e=OS.get(c))!==null&&e!==void 0?e:u.bottom-u.top,k=c.offset||gE,L=this.view.textDirection==et.LTR,M=u.width>n.right-n.left?L?n.left:n.right-u.width:L?Math.max(n.left,Math.min(h.left-(f?14:0)+k.x,n.right-g)):Math.min(Math.max(n.left,h.left-g+(f?14:0)-k.x),n.right-g),D=this.above[a];!l.strictSide&&(D?h.top-v-m-k.y<n.top:h.bottom+v+m+k.y>n.bottom)&&D==n.bottom-h.bottom>h.top-n.top&&(D=this.above[a]=!D);let w=(D?h.top-n.top:n.bottom-h.bottom)-m;if(w<v&&c.resize!==!1){if(w<this.view.defaultLineHeight){d.style.top=Kc;continue}OS.set(c,v),d.style.height=(v=w)/s+"px"}else d.style.height&&(d.style.height="");let x=D?h.top-v-m-k.y:h.bottom+m+k.y,R=M+g;if(c.overlap!==!0)for(let X of o)X.left<R&&X.right>M&&X.top<x+v&&X.bottom>x&&(x=D?X.top-v-2-m:X.bottom+m+2);if(this.position=="absolute"?(d.style.top=(x-r.parent.top)/s+"px",gS(d,(M-r.parent.left)/i)):(d.style.top=x/s+"px",gS(d,M/i)),f){let X=h.left+(L?k.x:-k.x)-(M+14-7);f.style.left=X/i+"px"}c.overlap!==!0&&o.push({left:M,top:x,right:R,bottom:x+v}),d.classList.toggle("cm-tooltip-above",D),d.classList.toggle("cm-tooltip-below",!D),c.positioned&&c.positioned(r.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 r of this.manager.tooltipViews)r.dom.style.top=Kc}},{eventObservers:{scroll(){this.maybeMeasure()}}});function gS(r,e){let t=parseInt(r.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(r.style.left=e+"px")}var OE=N.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"}}}),gE={x:0,y:0},lm=le.define({enables:[wv,OE]}),yd=le.define({combine:r=>r.reduce((e,t)=>e.concat(t),[])}),Sd=class r{static create(e){return new r(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new bd(e,yd,(t,n)=>this.createHostedView(t,n),t=>t.dom.remove())}createHostedView(e,t){let n=e.create(this.view);return n.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(n.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&n.mount&&n.mount(this.view),n}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 n of this.manager.tooltipViews){let i=n[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")}},bE=lm.compute([yd],r=>{let e=r.facet(yd);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var n;return(n=t.end)!==null&&n!==void 0?n:t.pos})),create:Sd.create,above:e[0].above,arrow:e.some(t=>t.arrow)}}),yE=le.define(),qp=class{constructor(e,t,n,i,s,o){this.view=e,this.source=t,this.field=n,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,n=e.docView.tile.nearest(t.target);if(!n)return;let i,s=1;if(n.isWidget())i=n.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==et.RTL?-1:1;s=t.x<o.left?-l:l}this.activateHover(e,i,s)}activateHover(e,t,n,i){let s=this.source(e,t,n),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=>jr(e.state,l,"hover tooltip"))}else o(s)}get tooltip(){let e=this.view.plugin(wv),t=e?e.manager.tooltips.findIndex(n=>n.create==Sd.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,n;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&&!SE(s.dom,e)||this.pending){let{pos:o}=i[0]||this.pending,a=(n=(t=i[0])===null||t===void 0?void 0:t.end)!==null&&n!==void 0?n:o;(o==a?this.view.posAtCoords(this.lastMove)!=o:!vE(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:n}=this;n&&n.dom.contains(e.relatedTarget)?this.watchTooltipLeave(n.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=n=>{e.removeEventListener("mouseleave",t);let{active:i}=this;i.length&&!this.locked.has(i)&&!this.view.dom.contains(n.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)}},Jc=4;function SE(r,e){let{left:t,right:n,top:i,bottom:s}=r.getBoundingClientRect(),o;if(o=r.querySelector(".cm-tooltip-arrow")){let a=o.getBoundingClientRect();i=Math.min(a.top,i),s=Math.max(a.bottom,s)}return e.clientX>=t-Jc&&e.clientX<=n+Jc&&e.clientY>=i-Jc&&e.clientY<=s+Jc}function vE(r,e,t,n,i,s){let o=r.scrollDOM.getBoundingClientRect(),a=r.documentTop+r.documentPadding.top+r.contentHeight;if(o.left>n||o.right<n||o.top>i||Math.min(o.bottom,a)<i)return!1;let l=r.posAtCoords({x:n,y:i},!1);return l>=e&&l<=t}function Pv(r,e={}){let t=be.define(),n=new WeakMap,i=Ze.define({create(){return[]},update(o,a){let l=n.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,Lt.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(xE)&&!c.value||c.value==i)&&(o=[]);return o.length&&l&&n.set(o,l),o},provide:o=>yd.from(o)}),s=at.define(o=>new qp(o,r,i,n,t,e.hoverTime||300));return{active:i,extension:[i,s,yE.of(s),bE]}}var xE=be.define();var bS=le.define({combine(r){let e,t;for(let n of r)e=e||n.topContainer,t=t||n.bottomContainer;return{topContainer:e,bottomContainer:t}}});function cm(r,e){let t=r.plugin(kv),n=t?t.specs.indexOf(e):-1;return n>-1?t.panels[n]:null}var kv=at.fromClass(class{constructor(r){this.input=r.state.facet(hl),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(r));let e=r.state.facet(bS);this.top=new Do(r,!0,e.topContainer),this.bottom=new Do(r,!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(r){let e=r.state.facet(bS);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Do(r.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Do(r.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=r.state.facet(hl);if(t!=this.input){let n=t.filter(l=>l),i=[],s=[],o=[],a=[];for(let l of n){let c=this.specs.indexOf(l),d;c<0?(d=l(r.view),a.push(d)):(d=this.panels[c],d.update&&d.update(r)),i.push(d),(d.top?s:o).push(d)}this.specs=n,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 n of this.panels)n.update&&n.update(r)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:r=>N.scrollMargins.of(e=>{let t=e.plugin(r);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})}),Do=class{constructor(e,t,n){this.view=e,this.top=t,this.container=n,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=yS(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=yS(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 yS(r){let e=r.nextSibling;return r.remove(),e}var hl=le.define({enables:kv});function $v(r,e){let t,n=new Promise(o=>t=o),i=o=>wE(o,e,t);r.state.field(np,!1)?r.dispatch({effects:Qv.of(i)}):r.dispatch({effects:be.appendConfig.of(np.init(()=>[i]))});let s=Tv.of(i);return{close:s,result:n.then(o=>((r.win.queueMicrotask||(l=>r.win.setTimeout(l,10)))(()=>{r.state.field(np).indexOf(i)>-1&&r.dispatch({effects:s})}),o))}}var np=Ze.define({create(){return[]},update(r,e){for(let t of e.effects)t.is(Qv)?r=[t.value].concat(r):t.is(Tv)&&(r=r.filter(n=>n!=t.value));return r},provide:r=>hl.computeN([r],e=>e.field(r))}),Qv=be.define(),Tv=be.define();function wE(r,e,t){let n=e.content?e.content(r,()=>o(null)):null;if(!n){if(n=wt("form"),e.input){let a=wt("input",e.input);/^(text|password|number|email|tel|url)$/.test(a.type)&&a.classList.add("cm-textfield"),a.name||(a.name="input"),n.appendChild(wt("label",(e.label||"")+": ",a))}else n.appendChild(document.createTextNode(e.label||""));n.appendChild(document.createTextNode(" ")),n.appendChild(wt("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let i=n.nodeName=="FORM"?[n]:n.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=wt("div",n,wt("button",{onclick:()=>o(null),"aria-label":r.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)&&r.focus(),t(a)}return{dom:s,top:e.top,mount:()=>{if(e.focus){let a;typeof e.focus=="string"?a=n.querySelector(e.focus):a=n.querySelector("input")||n.querySelector("button"),a&&"select"in a?a.select():a&&"focus"in a&&a.focus()}}}}var Pt=class extends un{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};Pt.prototype.elementClass="";Pt.prototype.toDOM=void 0;Pt.prototype.mapMode=Lt.TrackBefore;Pt.prototype.startSide=Pt.prototype.endSide=-1;Pt.prototype.point=!0;var id=le.define(),PE=le.define(),kE={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Te.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},il=le.define();function Ki(r){return[_v(),il.of(gt(gt({},kE),r))]}var Gp=le.define({combine:r=>r.some(e=>e)});function _v(r){let e=[$E];return r&&r.fixed===!1&&e.push(Gp.of(!0)),e}var $E=at.fromClass(class{constructor(r){this.view=r,this.domAfter=null,this.prevViewport=r.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=r.state.facet(il).map(e=>new vd(r,e)),this.fixed=!r.state.facet(Gp);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),r.scrollDOM.insertBefore(this.dom,r.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(r){if(this.updateGutters(r)){let e=this.prevViewport,t=r.view.viewport,n=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(n<(t.to-t.from)*.8)}if(r.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(Gp)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=r.view.viewport}syncGutters(r){let e=this.dom.nextSibling;r&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=Te.iter(this.view.state.facet(id),this.view.viewport.from),n=[],i=this.gutters.map(s=>new Kp(s,this.view.viewport,-this.view.documentPadding.top));for(let s of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(s.type)){let o=!0;for(let a of s.type)if(a.type==Ht.Text&&o){Hp(t,n,a.from);for(let l of i)l.line(this.view,a,n);o=!1}else if(a.widget)for(let l of i)l.widget(this.view,a)}else if(s.type==Ht.Text){Hp(t,n,s.from);for(let o of i)o.line(this.view,s,n)}else if(s.widget)for(let o of i)o.widget(this.view,s);for(let s of i)s.finish();r&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(r){let e=r.startState.facet(il),t=r.state.facet(il),n=r.docChanged||r.heightChanged||r.viewportChanged||!Te.eq(r.startState.facet(id),r.state.facet(id),r.view.viewport.from,r.view.viewport.to);if(e==t)for(let i of this.gutters)i.update(r)&&(n=!0);else{n=!0;let i=[];for(let s of t){let o=e.indexOf(s);o<0?i.push(new vd(this.view,s)):(this.gutters[o].update(r),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 n}destroy(){for(let r of this.gutters)r.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:r=>N.scrollMargins.of(e=>{let t=e.plugin(r);if(!t||t.gutters.length==0||!t.fixed)return null;let n=t.dom.offsetWidth*e.scaleX,i=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==et.LTR?{left:n,right:i}:{right:n,left:i}})});function SS(r){return Array.isArray(r)?r:[r]}function Hp(r,e,t){for(;r.value&&r.from<=t;)r.from==t&&e.push(r.value),r.next()}var Kp=class{constructor(e,t,n){this.gutter=e,this.height=n,this.i=0,this.cursor=Te.iter(e.markers,t.from)}addElement(e,t,n){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 xd(e,o,s,n);i.elements.push(a),i.dom.appendChild(a.dom)}else i.elements[this.i].update(e,o,s,n);this.height=t.bottom,this.i++}line(e,t,n){let i=[];Hp(this.cursor,i,t.from),n.length&&(i=i.concat(n));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 n=this.gutter.config.widgetMarker(e,t.widget,t),i=n?[n]:null;for(let s of e.state.facet(PE)){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()}}},vd=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 n in t.domEventHandlers)this.dom.addEventListener(n,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[n](e,a,i)&&i.preventDefault()});this.markers=SS(t.markers(e)),t.initialSpacer&&(this.spacer=new xd(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=SS(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 n=e.view.viewport;return!Te.eq(this.markers,t,n.from,n.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},xd=class{constructor(e,t,n,i){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,n,i)}update(e,t,n,i){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=n&&(this.dom.style.marginTop=(this.above=n)?n+"px":""),QE(this.markers,i)||this.setMarkers(e,i)}setMarkers(e,t){let n="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&&(n+=" "+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=n,this.markers=t}destroy(){this.setMarkers(null,[])}};function QE(r,e){if(r.length!=e.length)return!1;for(let t=0;t<r.length;t++)if(!r[t].compare(e[t]))return!1;return!0}var TE=le.define(),_E=le.define(),Io=le.define({combine(r){return Nr(r,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){let n=Object.assign({},e);for(let i in t){let s=n[i],o=t[i];n[i]=s?(a,l,c)=>s(a,l,c)||o(a,l,c):o}return n}})}}),sl=class extends Pt{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function ip(r,e){return r.state.facet(Io).formatNumber(e,r.state)}var AE=il.compute([Io],r=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(TE)},lineMarker(e,t,n){return n.some(i=>i.toDOM)?null:new sl(ip(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,n)=>{for(let i of e.state.facet(_E)){let s=i(e,t,n);if(s)return s}return null},lineMarkerChange:e=>e.startState.facet(Io)!=e.state.facet(Io),initialSpacer(e){return new sl(ip(e,vS(e.state.doc.lines)))},updateSpacer(e,t){let n=ip(t.view,vS(t.view.state.doc.lines));return n==e.number?e:new sl(n)},domEventHandlers:r.facet(Io).domEventHandlers,side:"before"}));function Ad(r={}){return[Io.of(r),_v(),AE]}function vS(r){let e=9;for(;e<r;)e=e*10+9;return e}var CE=new class extends Pt{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},EE=id.compute(["selection"],r=>{let e=[],t=-1;for(let n of r.selection.ranges){let i=r.doc.lineAt(n.head).from;i>t&&(t=i,e.push(CE.range(i)))}return Te.of(e)});function Av(){return EE}function Cv(r){return at.define(e=>({decorations:r.createDeco(e),update(t){this.decorations=r.updateDeco(t,this.decorations)}}),{decorations:e=>e.decorations})}var RE=ee.mark({class:"cm-highlightTab"}),ME=ee.mark({class:"cm-highlightSpace"}),LE=Cv(new dl({regexp:/\t| /g,decoration:r=>r[0]==" "?RE:ME,boundary:/\S/}));function Ev(){return LE}var DE=Cv(new dl({regexp:/\s+$/g,decoration:ee.mark({class:"cm-trailingSpace"})}));function Rv(){return DE}var IE=0,_r=class{constructor(e,t){this.from=e,this.to=t}},xe=class{constructor(e={}){this.id=IE++,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=bt.match(e)),t=>{let n=e(t);return n===void 0?null:[this,n]}}};xe.closedBy=new xe({deserialize:r=>r.split(" ")});xe.openedBy=new xe({deserialize:r=>r.split(" ")});xe.group=new xe({deserialize:r=>r.split(" ")});xe.isolate=new xe({deserialize:r=>{if(r&&r!="rtl"&&r!="ltr"&&r!="auto")throw new RangeError("Invalid value for isolate: "+r);return r||"auto"}});xe.contextHash=new xe({perNode:!0});xe.lookAhead=new xe({perNode:!0});xe.mounted=new xe({perNode:!0});var Ji=class{constructor(e,t,n,i=!1){this.tree=e,this.overlay=t,this.parser=n,this.bracketed=i}static get(e){return e&&e.props&&e.props[xe.mounted.id]}},ZE=Object.create(null),bt=class r{constructor(e,t,n,i=0){this.name=e,this.props=t,this.id=n,this.flags=i}static define(e){let t=e.props&&e.props.length?Object.create(null):ZE,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),i=new r(e.name||"",t,e.id,n);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 n in e)for(let i of n.split(" "))t[i]=e[n];return n=>{for(let i=n.prop(xe.group),s=-1;s<(i?i.length:0);s++){let o=t[s<0?n.name:i[s]];if(o)return o}}}};bt.none=new bt("",Object.create(null),0,8);var Qi=class r{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 n of this.types){let i=null;for(let s of e){let o=s(n);if(o){i||(i=Object.assign({},n.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 bt(n.name,i,n.id,n.flags):n)}return new r(t)}},Cd=new WeakMap,Mv=new WeakMap,We;(function(r){r[r.ExcludeBuffers=1]="ExcludeBuffers",r[r.IncludeAnonymous=2]="IncludeAnonymous",r[r.IgnoreMounts=4]="IgnoreMounts",r[r.IgnoreOverlays=8]="IgnoreOverlays",r[r.EnterBracketed=16]="EnterBracketed"})(We||(We={}));var Ee=class r{constructor(e,t,n,i,s){if(this.type=e,this.children=t,this.positions=n,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=Ji.get(this);if(e&&!e.overlay)return e.tree.toString();let t="";for(let n of this.children){let i=n.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 No(this.topNode,e)}cursorAt(e,t=0,n=0){let i=Cd.get(this)||this.topNode,s=new No(i);return s.moveTo(e,t),Cd.set(this,s._tree),s}get topNode(){return new Ar(this,0,0,null)}resolve(e,t=0){let n=fl(Cd.get(this)||this.topNode,e,t,!1);return Cd.set(this,n),n}resolveInner(e,t=0){let n=fl(Mv.get(this)||this.topNode,e,t,!0);return Mv.set(this,n),n}resolveStack(e,t=0){return XE(this,e,t)}iterate(e){let{enter:t,leave:n,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&&n&&(a||!l.type.isAnonymous)&&n(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:Sm(bt.none,this.children,this.positions,0,this.children.length,0,this.length,(t,n,i)=>new r(this.type,t,n,i,this.propValues),e.makeTree||((t,n,i)=>new r(bt.none,t,n,i)))}static build(e){return zE(e)}};Ee.empty=new Ee(bt.none,[],[],0);var dm=class r{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 r(this.buffer,this.index)}},es=class r{constructor(e,t,n){this.buffer=e,this.length=t,this.set=n}get type(){return bt.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],n=this.buffer[e+3],i=this.set.types[t],s=i.name;if(/\W/.test(s)&&!i.isError&&(s=JSON.stringify(s)),e+=4,n==e)return s;let o=[];for(;e<n;)o.push(this.childString(e)),e=this.buffer[e+3];return s+"("+o.join(",")+")"}findChild(e,t,n,i,s){let{buffer:o}=this,a=-1;for(let l=e;l!=t&&!(Wv(s,i,o[l+1],o[l+2])&&(a=l,n>0));l=o[l+3]);return a}slice(e,t,n){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++]-n;let c=s[l++]=i[a++]-n;s[l++]=i[a++]-e,o=Math.max(o,c)}return new r(s,o,this.set)}};function Wv(r,e,t,n){switch(r){case-2:return t<e;case-1:return n>=e&&t<e;case 0:return t<e&&n>e;case 1:return t<=e&&n>e;case 2:return n>e;case 4:return!0}}function fl(r,e,t,n){for(var i;r.from==r.to||(t<1?r.from>=e:r.from>e)||(t>-1?r.to<=e:r.to<e);){let o=!n&&r instanceof Ar&&r.index<0?null:r.parent;if(!o)return r;r=o}let s=n?0:We.IgnoreOverlays;if(n)for(let o=r,a=o.parent;a;o=a,a=o.parent)o instanceof Ar&&o.index<0&&((i=a.enter(e,t,s))===null||i===void 0?void 0:i.from)!=o.from&&(r=a);for(;;){let o=r.enter(e,t,s);if(!o)return r;r=o}}var Rd=class{cursor(e=0){return new No(this,e)}getChild(e,t=null,n=null){let i=Lv(this,e,t,n);return i.length?i[0]:null}getChildren(e,t=null,n=null){return Lv(this,e,t,n)}resolve(e,t=0){return fl(this,e,t,!1)}resolveInner(e,t=0){return fl(this,e,t,!0)}matchContext(e){return hm(this.parent,e)}enterUnfinishedNodesBefore(e){let t=this.childBefore(e),n=this;for(;t;){let i=t.lastChild;if(!i||i.to!=t.to)break;i.type.isError&&i.from==i.to?(n=t,t=i.prevSibling):t=i}return n}get node(){return this}get next(){return this.parent}},Ar=class r extends Rd{constructor(e,t,n,i){super(),this._tree=e,this.from=t,this.index=n,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,n,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=Ji.get(d))&&!u.overlay&&u.bracketed&&n>=h&&n<=h+d.length)&&!Wv(i,n,h,h+d.length))){if(d instanceof es){if(s&We.ExcludeBuffers)continue;let f=d.findChild(0,d.buffer.length,t,n-h,i);if(f>-1)return new Ns(new um(o,d,e,h),null,f)}else if(s&We.IncludeAnonymous||!d.type.isAnonymous||ym(d)){let f;if(!(s&We.IgnoreMounts)&&(f=Ji.get(d))&&!f.overlay)return new r(f.tree,h,e,o);let m=new r(d,h,e,o);return s&We.IncludeAnonymous||!m.type.isAnonymous?m:m.nextChild(t<0?d.children.length-1:0,t,n,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,n=0){let i;if(!(n&We.IgnoreOverlays)&&(i=Ji.get(this._tree))&&i.overlay){let s=e-this.from,o=n&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 r(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,n)}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 Lv(r,e,t,n){let i=r.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(n!=null&&i.type.is(n))return s;if(i.type.is(e)&&s.push(i.node),!i.nextSibling())return n==null?s:[]}}function hm(r,e,t=e.length-1){for(let n=r;t>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[t]&&e[t]!=n.name)return!1;t--}}return!0}var um=class{constructor(e,t,n,i){this.parent=e,this.buffer=t,this.index=n,this.start=i}},Ns=class r extends Rd{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,n){super(),this.context=e,this._parent=t,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,t,n){let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.context.start,n);return s<0?null:new r(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,n=0){if(n&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 r(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 r(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 r(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:n}=this.context,i=this.index+4,s=n.buffer[this.index+3];if(s>i){let o=n.buffer[this.index+1];e.push(n.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 Bv(r){if(!r.length)return null;let e=0,t=r[0];for(let s=1;s<r.length;s++){let o=r[s];(o.from>t.from||o.to<t.to)&&(t=o,e=s)}let n=t instanceof Ar&&t.index<0?null:t.parent,i=r.slice();return n?i[e]=n:i.splice(e,1),new fm(i,t)}var fm=class{constructor(e,t){this.heads=e,this.node=t}get next(){return Bv(this.heads)}};function XE(r,e,t){let n=r.resolveInner(e,t),i=null;for(let s=n instanceof Ar?n:n.context.parent;s;s=s.parent)if(s.index<0){let o=s.parent;(i||(i=[n])).push(o.resolve(e,t)),s=o}else{let o=Ji.get(s.tree);if(o&&o.overlay&&o.overlay[0].from<=e&&o.overlay[o.overlay.length-1].to>=e){let a=new Ar(o.tree,o.overlay[0].from+s.from,-1,s);(i||(i=[n])).push(fl(a,e,t,!1))}}return i?Bv(i):n}var No=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 Ar)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let n=e._parent;n;n=n._parent)this.stack.unshift(n.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:n,buffer:i}=this.buffer;return this.type=t||i.set.types[i.buffer[e]],this.from=n+i.buffer[e+1],this.to=n+i.buffer[e+2],!0}yield(e){return e?e instanceof Ar?(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,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,n,this.mode));let{buffer:i}=this.buffer,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.buffer.start,n);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,n=this.mode){return this.buffer?n&We.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,n))}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,n=this.stack.length-1;if(e<0){let i=n<0?0:this.stack[n]+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<(n<0?t.buffer.length:t.buffer[this.stack[n]+3]))return this.yieldBuf(i)}return n<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,n,{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:n}=i)}else({index:t,_parent:n}=this._tree);for(;n;{index:t,_parent:n}=n)if(t>-1)for(let s=t+e,o=e<0?-1:n._tree.children.length;s!=o;s+=e){let a=n._tree.children[s];if(this.mode&We.IncludeAnonymous||a instanceof es||!a.type.isAnonymous||ym(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,n=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,n=s+1;break e}i=this.stack[--s]}for(let i=n;i<this.stack.length;i++)t=new Ns(this.buffer,t,this.stack[i]);return this.bufferNode=new Ns(this.buffer,t,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,t){for(let n=0;;){let i=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){n++;continue}this.type.isAnonymous||(i=!0)}for(;;){if(i&&t&&t(this),i=this.type.isAnonymous,!n)return;if(this.nextSibling())break;this.parent(),n--,i=!0}}}matchContext(e){if(!this.buffer)return hm(this.node.parent,e);let{buffer:t}=this.buffer,{types:n}=t.set;for(let i=e.length-1,s=this.stack.length-1;i>=0;s--){if(s<0)return hm(this._tree,e,i);let o=n[t.buffer[this.stack[s]]];if(!o.isAnonymous){if(e[i]&&e[i]!=o.name)return!1;i--}}return!0}};function ym(r){return r.children.some(e=>e instanceof es||!e.type.isAnonymous||ym(e))}function zE(r){var e;let{buffer:t,nodeSet:n,maxBufferLength:i=1024,reused:s=[],minRepeatType:o=n.types.length}=r,a=Array.isArray(t)?new dm(t,t.length):t,l=n.types,c=0,d=0;function h(w,x,R,X,j,G){let{id:ie,start:U,end:ge,size:pe}=a,ke=d,B=c;if(pe<0)if(a.next(),pe==-1){let Ue=s[ie];R.push(Ue),X.push(U-w);return}else if(pe==-3){c=ie;return}else if(pe==-4){d=ie;return}else throw new RangeError(`Unrecognized record size: ${pe}`);let he=l[ie],J,ve,$e=U-w;if(ge-U<=i&&(ve=v(a.pos-x,j))){let Ue=new Uint16Array(ve.size-ve.skip),tt=a.pos-ve.size,pt=Ue.length;for(;a.pos>tt;)pt=k(ve.start,Ue,pt);J=new es(Ue,ge-ve.start,n),$e=ve.start-w}else{let Ue=a.pos-pe;a.next();let tt=[],pt=[],Zt=ie>=o?ie:-1,Oe=0,nn=ge;for(;a.pos>Ue;)Zt>=0&&a.id==Zt&&a.size>=0?(a.end<=nn-i&&(m(tt,pt,U,Oe,a.end,nn,Zt,ke,B),Oe=tt.length,nn=a.end),a.next()):G>2500?u(U,Ue,tt,pt):h(U,Ue,tt,pt,Zt,G+1);if(Zt>=0&&Oe>0&&Oe<tt.length&&m(tt,pt,U,Oe,U,nn,Zt,ke,B),tt.reverse(),pt.reverse(),Zt>-1&&Oe>0){let sn=f(he,B);J=Sm(he,tt,pt,0,tt.length,0,ge-U,sn,sn)}else J=g(he,tt,pt,ge-U,ke-ge,B)}R.push(J),X.push($e)}function u(w,x,R,X){let j=[],G=0,ie=-1;for(;a.pos>x;){let{id:U,start:ge,end:pe,size:ke}=a;if(ke>4)a.next();else{if(ie>-1&&ge<ie)break;ie<0&&(ie=pe-i),j.push(U,ge,pe),G++,a.next()}}if(G){let U=new Uint16Array(G*4),ge=j[j.length-2];for(let pe=j.length-3,ke=0;pe>=0;pe-=3)U[ke++]=j[pe],U[ke++]=j[pe+1]-ge,U[ke++]=j[pe+2]-ge,U[ke++]=ke;R.push(new es(U,j[2]-ge,n)),X.push(ge-w)}}function f(w,x){return(R,X,j)=>{let G=0,ie=R.length-1,U,ge;if(ie>=0&&(U=R[ie])instanceof Ee){if(!ie&&U.type==w&&U.length==j)return U;(ge=U.prop(xe.lookAhead))&&(G=X[ie]+U.length+ge)}return g(w,R,X,j,G,x)}}function m(w,x,R,X,j,G,ie,U,ge){let pe=[],ke=[];for(;w.length>X;)pe.push(w.pop()),ke.push(x.pop()+R-j);w.push(g(n.types[ie],pe,ke,G-j,U-G,ge)),x.push(j-R)}function g(w,x,R,X,j,G,ie){if(G){let U=[xe.contextHash,G];ie=ie?[U].concat(ie):[U]}if(j>25){let U=[xe.lookAhead,j];ie=ie?[U].concat(ie):[U]}return new Ee(w,x,R,X,ie)}function v(w,x){let R=a.fork(),X=0,j=0,G=0,ie=R.end-i,U={size:0,start:0,skip:0};e:for(let ge=R.pos-w;R.pos>ge;){let pe=R.size;if(R.id==x&&pe>=0){U.size=X,U.start=j,U.skip=G,G+=4,X+=4,R.next();continue}let ke=R.pos-pe;if(pe<0||ke<ge||R.start<ie)break;let B=R.id>=o?4:0,he=R.start;for(R.next();R.pos>ke;){if(R.size<0)if(R.size==-3||R.size==-4)B+=4;else break e;else R.id>=o&&(B+=4);R.next()}j=he,X+=pe,G+=B}return(x<0||X==w)&&(U.size=X,U.start=j,U.skip=G),U.size>4?U:void 0}function k(w,x,R){let{id:X,start:j,end:G,size:ie}=a;if(a.next(),ie>=0&&X<o){let U=R;if(ie>4){let ge=a.pos-(ie-4);for(;a.pos>ge;)R=k(w,x,R)}x[--R]=U,x[--R]=G-w,x[--R]=j-w,x[--R]=X}else ie==-3?c=X:ie==-4&&(d=X);return R}let L=[],M=[];for(;a.pos>0;)h(r.start||0,r.bufferStart||0,L,M,-1,0);let D=(e=r.length)!==null&&e!==void 0?e:L.length?M[0]+L[0].length:0;return new Ee(l[r.topID],L.reverse(),M.reverse(),D)}var Dv=new WeakMap;function Ed(r,e){if(!r.isAnonymous||e instanceof es||e.type!=r)return 1;let t=Dv.get(e);if(t==null){t=1;for(let n of e.children){if(n.type!=r||!(n instanceof Ee)){t=1;break}t+=Ed(r,n)}Dv.set(e,t)}return t}function Sm(r,e,t,n,i,s,o,a,l){let c=0;for(let m=n;m<i;m++)c+=Ed(r,e[m]);let d=Math.ceil(c*1.5/8),h=[],u=[];function f(m,g,v,k,L){for(let M=v;M<k;){let D=M,w=g[M],x=Ed(r,m[M]);for(M++;M<k;M++){let R=Ed(r,m[M]);if(x+R>=d)break;x+=R}if(M==D+1){if(x>d){let R=m[D];f(R.children,R.positions,0,R.children.length,g[D]+L);continue}h.push(m[D])}else{let R=g[M-1]+m[M-1].length-w;h.push(Sm(r,m,g,D,M,w,R,null,l))}u.push(w+L-s)}}return f(e,t,n,i,0),(a||l)(h,u,o)}var jo=class{constructor(){this.map=new WeakMap}setBuffer(e,t,n){let i=this.map.get(e);i||this.map.set(e,i=new Map),i.set(t,n)}getBuffer(e,t){let n=this.map.get(e);return n&&n.get(t)}set(e,t){e instanceof Ns?this.setBuffer(e.context.buffer,e.index,t):e instanceof Ar&&this.map.set(e.tree,t)}get(e){return e instanceof Ns?this.getBuffer(e.context.buffer,e.index):e instanceof Ar?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)}},Ti=class r{constructor(e,t,n,i,s=!1,o=!1){this.from=e,this.to=t,this.tree=n,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=[],n=!1){let i=[new r(0,e.length,e,0,!1,n)];for(let s of t)s.to>e.length&&i.push(s);return i}static applyChanges(e,t,n=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>=n)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 r(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}},_i=class{startParse(e,t,n){return typeof e=="string"&&(e=new pm(e)),n=n?n.length?n.map(i=>new _r(i.from,i.to)):[new _r(0,0)]:[new _r(0,e.length)],this.createParse(e,t||[],n)}parse(e,t,n){let i=this.startParse(e,t,n);for(;;){let s=i.advance();if(s)return s}}},pm=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 Dd(r){return(e,t,n,i)=>new gm(e,r,t,n,i)}var Md=class{constructor(e,t,n,i,s,o){this.parser=e,this.parse=t,this.overlay=n,this.bracketed=i,this.target=s,this.from=o}};function Iv(r){if(!r.length||r.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(r))}var mm=class{constructor(e,t,n,i,s,o,a,l){this.parser=e,this.predicate=t,this.mounts=n,this.index=i,this.start=s,this.bracketed=o,this.target=a,this.prev=l,this.depth=0,this.ranges=[]}},Om=new xe({perNode:!0}),gm=class{constructor(e,t,n,i,s){this.nest=t,this.input=n,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 n=this.baseParse.advance();if(!n)return null;if(this.baseParse=null,this.baseTree=n,this.startInner(),this.stoppedAt!=null)for(let i of this.inner)i.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let n=this.baseTree;return this.stoppedAt!=null&&(n=new Ee(n.type,n.children,n.positions,n.length,n.propValues.concat([[Om,this.stoppedAt]]))),n}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let n=Object.assign(Object.create(null),e.target.props);n[xe.mounted.id]=new Ji(t,e.overlay,e.parser,e.bracketed),e.target.props=n}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 bm(this.fragments),t=null,n=null,i=new No(new Ar(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(n&&(o=WE(n.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||(BE(i),t&&t.depth++,n&&n.depth++);let c=e.findMounts(i.from,s.parser);if(typeof s.overlay=="function")t=new mm(s.parser,s.overlay,c,this.inner.length,i.from,!!s.bracketed,i.tree,t);else{let d=Xv(this.ranges,s.overlay||(i.from<i.to?[new _r(i.from,i.to)]:[]));d.length&&Iv(d),(d.length||!s.overlay)&&this.inner.push(new Md(s.parser,d.length?s.parser.startParse(this.input,zv(c,d),d):s.parser.startParse(""),s.overlay?s.overlay.map(h=>new _r(h.from-i.from,h.to-i.from)):null,!!s.bracketed,i.tree,d.length?d[0].from:i.from)),s.overlay?d.length&&(n={ranges:d,depth:0,prev:n}):a=!1}}else if(t&&(l=t.predicate(i))&&(l===!0&&(l=new _r(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++,n&&n.depth++;else for(;!i.nextSibling();){if(!i.parent())break e;if(t&&!--t.depth){let c=Xv(this.ranges,t.ranges);c.length&&(Iv(c),this.inner.splice(t.index,0,new Md(t.parser,t.parser.startParse(this.input,zv(t.mounts,c),c),t.ranges.map(d=>new _r(d.from-t.start,d.to-t.start)),t.bracketed,t.target,c[0].from))),t=t.prev}n&&!--n.depth&&(n=n.prev)}}}};function WE(r,e,t){for(let n of r){if(n.from>=t)break;if(n.to>e)return n.from<=e&&n.to>=t?2:1}return 0}function Zv(r,e,t,n,i,s){if(e<t){let o=r.buffer[e+1];n.push(r.slice(e,t,o)),i.push(o-s)}}function BE(r){let{node:e}=r,t=[],n=e.context.buffer;do t.push(r.index),r.parent();while(!r.tree);let i=r.tree,s=i.children.indexOf(n),o=i.children[s],a=o.buffer,l=[s];function c(d,h,u,f,m,g){let v=t[g],k=[],L=[];Zv(o,d,v,k,L,f);let M=a[v+1],D=a[v+2];l.push(k.length);let w=g?c(v+4,a[v+3],o.set.types[a[v]],M,D-M,g-1):e.toTree();return k.push(w),L.push(M-f),Zv(o,a[v+3],h,k,L,f),new Ee(u,k,L,m)}i.children[s]=c(0,a.length,bt.none,0,o.length,t.length-1);for(let d of l){let h=r.tree.children[d],u=r.tree.positions[d];r.yield(new Ar(h,u+r.from,d,r._tree))}}var Ld=class{constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(We.IncludeAnonymous|We.IgnoreMounts)}moveTo(e){let{cursor:t}=this,n=e-this.offset;for(;!this.done&&t.from<n;)if(!(t.to>=e&&t.enter(n,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}},bm=class{constructor(e){var t;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let n=this.curFrag=e[0];this.curTo=(t=n.tree.prop(Om))!==null&&t!==void 0?t:n.to,this.inner=new Ld(n.tree,-n.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(Om))!==null&&e!==void 0?e:t.to,this.inner=new Ld(t.tree,-t.offset)}}findMounts(e,t){var n;let i=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let s=this.inner.cursor.node;s;s=s.parent){let o=(n=s.tree)===null||n===void 0?void 0:n.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 Xv(r,e){let t=null,n=e;for(let i=1,s=0;i<r.length;i++){let o=r[i-1].to,a=r[i].from;for(;s<n.length;s++){let l=n[s];if(l.from>=a)break;l.to<=o||(t||(n=t=e.slice()),l.from<o?(t[s]=new _r(l.from,o),l.to>a&&t.splice(s+1,0,new _r(a,l.to))):l.to>a?t[s--]=new _r(a,l.to):t.splice(s--,1))}}return n}function VE(r,e,t,n){let i=0,s=0,o=!1,a=!1,l=-1e9,c=[];for(;;){let d=i==r.length?1e9:o?r[i].to:r[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,n);u<f&&c.push(new _r(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 zv(r,e){let t=[];for(let{pos:n,mount:i,frag:s}of r){let o=n+(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 _r(u.from+n,u.to+n)),h=VE(e,d,l,c);for(let u=0,f=l;;u++){let m=u==h.length,g=m?c:h[u].from;if(g>f&&t.push(new Ti(f,g,i.tree,-o,s.from>=f||s.openStart,s.to<=g||s.openEnd)),m)break;f=h[u].to}}else t.push(new Ti(l,c,i.tree,-o,s.from>=o||s.openStart,s.to<=a||s.openEnd))}return t}var YE=0,qr=class r{constructor(e,t,n,i){this.name=e,this.set=t,this.base=n,this.modified=i,this.id=YE++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let n=typeof e=="string"?e:"?";if(e instanceof r&&(t=e),t!=null&&t.base)throw new Error("Can not derive from a modified tag");let i=new r(n,[],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 zd(e);return n=>n.modified.indexOf(t)>-1?n:zd.get(n.base||n,n.modified.concat(t).sort((i,s)=>i.id-s.id))}},FE=0,zd=class r{constructor(e){this.name=e,this.instances=[],this.id=FE++}static get(e,t){if(!t.length)return e;let n=t[0].instances.find(a=>a.base==e&&NE(t,a.modified));if(n)return n;let i=[],s=new qr(e.name,i,e,t);for(let a of t)a.instances.push(s);let o=jE(t);for(let a of e.set)if(!a.modified.length)for(let l of o)i.push(r.get(a,l));return s}};function NE(r,e){return r.length==e.length&&r.every((t,n)=>t==e[n])}function jE(r){let e=[[]];for(let t=0;t<r.length;t++)for(let n=0,i=e.length;n<i;n++)e.push(e[n].concat(r[t]));return e.sort((t,n)=>n.length-t.length)}function Kt(r){let e=Object.create(null);for(let t in r){let n=r[t];Array.isArray(n)||(n=[n]);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 Us(n,o,l>0?s.slice(0,l):null);e[c]=d.sort(e[c])}}return Fv.add(e)}var Fv=new xe({combine(r,e){let t,n,i;for(;r||e;){if(!r||e&&r.depth>=e.depth?(i=e,e=e.next):(i=r,r=r.next),t&&t.mode==i.mode&&!i.context&&!t.context)continue;let s=new Us(i.tags,i.mode,i.context);t?t.next=s:n=s,t=s}return n}}),Us=class{constructor(e,t,n,i){this.tags=e,this.mode=t,this.context=n,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}};Us.empty=new Us([],2,null);function Pm(r,e){let t=Object.create(null);for(let s of r)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:n,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:n}}function UE(r,e){let t=null;for(let n of r){let i=n.style(e);i&&(t=t?t+" "+i:i)}return t}function Nv(r,e,t,n=0,i=r.length){let s=new xm(n,Array.isArray(e)?e:[e],t);s.highlightRange(r.cursor(),n,i,"",s.highlighters),s.flush(i)}var xm=class{constructor(e,t,n){this.at=e,this.highlighters=t,this.span=n,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,n,i,s){let{type:o,from:a,to:l}=e;if(a>=n||l<=t)return;o.isTop&&(s=this.highlighters.filter(f=>!f.scope||f.scope(o)));let c=i,d=km(e)||Us.empty,h=UE(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(v=>!v.scope||v.scope(u.tree.type)),g=e.firstChild();for(let v=0,k=a;;v++){let L=v<u.overlay.length?u.overlay[v]:null,M=L?L.from+a:l,D=Math.max(t,k),w=Math.min(n,M);if(D<w&&g)for(;e.from<w&&(this.highlightRange(e,D,w,i,s),this.startSpan(Math.min(w,e.to),c),!(e.to>=M||!e.nextSibling())););if(!L||M>n)break;k=L.to+a,k>t&&(this.highlightRange(f.cursor(),Math.max(t,L.from+a),Math.min(n,k),"",m),this.startSpan(Math.min(n,k),c))}g&&e.parent()}else if(e.firstChild()){u&&(i="");do if(!(e.to<=t)){if(e.from>=n)break;this.highlightRange(e,t,n,i,s),this.startSpan(Math.min(n,e.to),c)}while(e.nextSibling());e.parent()}}};function km(r){let e=r.type.prop(Fv);for(;e&&e.context&&!r.matchContext(e.context);)e=e.next;return e||null}var oe=qr.define,Id=oe(),ts=oe(),Vv=oe(ts),Yv=oe(ts),rs=oe(),Zd=oe(rs),vm=oe(rs),ti=oe(),js=oe(ti),Jn=oe(),ei=oe(),wm=oe(),pl=oe(wm),Xd=oe(),O={comment:Id,lineComment:oe(Id),blockComment:oe(Id),docComment:oe(Id),name:ts,variableName:oe(ts),typeName:Vv,tagName:oe(Vv),propertyName:Yv,attributeName:oe(Yv),className:oe(ts),labelName:oe(ts),namespace:oe(ts),macroName:oe(ts),literal:rs,string:Zd,docString:oe(Zd),character:oe(Zd),attributeValue:oe(Zd),number:vm,integer:oe(vm),float:oe(vm),bool:oe(rs),regexp:oe(rs),escape:oe(rs),color:oe(rs),url:oe(rs),keyword:Jn,self:oe(Jn),null:oe(Jn),atom:oe(Jn),unit:oe(Jn),modifier:oe(Jn),operatorKeyword:oe(Jn),controlKeyword:oe(Jn),definitionKeyword:oe(Jn),moduleKeyword:oe(Jn),operator:ei,derefOperator:oe(ei),arithmeticOperator:oe(ei),logicOperator:oe(ei),bitwiseOperator:oe(ei),compareOperator:oe(ei),updateOperator:oe(ei),definitionOperator:oe(ei),typeOperator:oe(ei),controlOperator:oe(ei),punctuation:wm,separator:oe(wm),bracket:pl,angleBracket:oe(pl),squareBracket:oe(pl),paren:oe(pl),brace:oe(pl),content:ti,heading:js,heading1:oe(js),heading2:oe(js),heading3:oe(js),heading4:oe(js),heading5:oe(js),heading6:oe(js),contentSeparator:oe(ti),list:oe(ti),quote:oe(ti),emphasis:oe(ti),strong:oe(ti),link:oe(ti),monospace:oe(ti),strikethrough:oe(ti),inserted:oe(),deleted:oe(),changed:oe(),invalid:oe(),meta:Xd,documentMeta:oe(Xd),annotation:oe(Xd),processingInstruction:oe(Xd),definition:qr.defineModifier("definition"),constant:qr.defineModifier("constant"),function:qr.defineModifier("function"),standard:qr.defineModifier("standard"),local:qr.defineModifier("local"),special:qr.defineModifier("special")};for(let r in O){let e=O[r];e instanceof qr&&(e.name=r)}var m8=Pm([{tag:O.link,class:"tok-link"},{tag:O.heading,class:"tok-heading"},{tag:O.emphasis,class:"tok-emphasis"},{tag:O.strong,class:"tok-strong"},{tag:O.keyword,class:"tok-keyword"},{tag:O.atom,class:"tok-atom"},{tag:O.bool,class:"tok-bool"},{tag:O.url,class:"tok-url"},{tag:O.labelName,class:"tok-labelName"},{tag:O.inserted,class:"tok-inserted"},{tag:O.deleted,class:"tok-deleted"},{tag:O.literal,class:"tok-literal"},{tag:O.string,class:"tok-string"},{tag:O.number,class:"tok-number"},{tag:[O.regexp,O.escape,O.special(O.string)],class:"tok-string2"},{tag:O.variableName,class:"tok-variableName"},{tag:O.local(O.variableName),class:"tok-variableName tok-local"},{tag:O.definition(O.variableName),class:"tok-variableName tok-definition"},{tag:O.special(O.variableName),class:"tok-variableName2"},{tag:O.definition(O.propertyName),class:"tok-propertyName tok-definition"},{tag:O.typeName,class:"tok-typeName"},{tag:O.namespace,class:"tok-namespace"},{tag:O.className,class:"tok-className"},{tag:O.macroName,class:"tok-macroName"},{tag:O.propertyName,class:"tok-propertyName"},{tag:O.operator,class:"tok-operator"},{tag:O.comment,class:"tok-comment"},{tag:O.meta,class:"tok-meta"},{tag:O.invalid,class:"tok-invalid"},{tag:O.punctuation,class:"tok-punctuation"}]);var $m,Ai=new xe;function Uo(r){return le.define({combine:r?e=>e.concat(r):void 0})}var Yd=new xe,cr=class{constructor(e,t,n=[],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=jv(s,o,a),c=l.type.prop(Ai);if(!c)return[];let d=s.facet(c),h=l.type.prop(Yd);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(n)}isActiveAt(e,t,n=-1){return jv(e,t,n).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 n=[],i=(s,o)=>{if(s.prop(Ai)==this.data){n.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)n.push({from:l.from+o,to:l.to+o});else n.push({from:o,to:o+s.length});return}else if(a.overlay){let l=n.length;if(i(a.tree,a.overlay[0].from+o),n.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),n}get allowsNesting(){return!0}};cr.setState=be.define();function jv(r,e,t){let n=r.facet(ri),i=ze(r).topNode;if(!n||n.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 r extends cr{constructor(e,t,n){super(e,t,[],n),this.parser=t}static define(e){let t=Uo(e.languageData);return new r(t,e.parser.configure({props:[Ai.add(n=>n.isTop?t:void 0)]}),e.name)}configure(e,t){return new r(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function ze(r){let e=r.field(cr.state,!1);return e?e.tree:Ee.empty}var Am=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 n=this.cursorPos-this.string.length;return e<n||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-n,t-n)}},ml=null,qs=class r{constructor(e,t,n=[],i,s,o,a,l){this.parser=e,this.state=t,this.fragments=n,this.tree=i,this.treeLen=s,this.viewport=o,this.skipped=a,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(e,t,n){return new r(e,t,[],Ee.empty,0,n,[],null)}startParse(){return this.parser.startParse(new Am(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 n;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(Ti.addTree(i,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(n=this.parse.stoppedAt)!==null&&n!==void 0?n: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(Ti.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=Uv(e,t.from,t.to);return e}changes(e,t){let{fragments:n,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})),n=Ti.applyChanges(n,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 r(this.parser,t,n,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 n=0;n<this.skipped.length;n++){let{from:i,to:s}=this.skipped[n];i<e.to&&s>e.from&&(this.fragments=Uv(this.fragments,i,s),this.skipped.splice(n--,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 _i{createParse(t,n,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(bt.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 Uv(r,e,t){return Ti.applyChanges(r,[{fromA:e,toA:t,fromB:e,toB:t}])}var gl=class r{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),n=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,n)||t.takeTree(),new r(t)}static init(e){let t=Math.min(3e3,e.doc.length),n=qs.create(e.facet(ri).parser,e,{from:0,to:t});return n.work(20,t)||n.takeTree(),new r(n)}};cr.state=Ze.define({create:gl.init,update(r,e){for(let t of e.effects)if(t.is(cr.setState))return t.value;return e.startState.facet(ri)!=e.state.facet(ri)?gl.init(e.state):r.apply(e)}});var nx=r=>{let e=setTimeout(()=>r(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(nx=r=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(r,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var Qm=typeof navigator!="undefined"&&(!(($m=navigator.scheduling)===null||$m===void 0)&&$m.isInputPending)?()=>navigator.scheduling.isInputPending():null,qE=at.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(cr.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(cr.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=nx(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:n,viewport:{to:i}}=this.view,s=n.field(cr.state);if(s.tree==s.context.tree&&s.context.isDone(i+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,e&&!Qm?Math.max(25,e.timeRemaining()-5):1e9),a=s.context.treeLen<i&&n.doc.length>i+1e3,l=s.context.work(()=>Qm&&Qm()||Date.now()>o,i+(a?0:1e5));this.chunkBudget-=Date.now()-t,(l||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:cr.setState.of(new gl(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=>jr(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=le.define({combine(r){return r.length?r[0]:null},enables:r=>[cr.state,qE,N.contentAttributes.compute([r],e=>{let t=e.facet(r);return t&&t.name?{"data-language":t.name}:{}})]}),Fe=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}},bl=class r{constructor(e,t,n,i,s,o=void 0){this.name=e,this.alias=t,this.extensions=n,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:n}=e;if(!t){if(!n)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");t=()=>Promise.resolve(n)}return new r(e.name,(e.alias||[]).concat(e.name).map(i=>i.toLowerCase()),e.extensions||[],e.filename,t,n)}static matchFilename(e,t){for(let i of e)if(i.filename&&i.filename.test(t))return i;let n=/\.([^.]+)$/.exec(t);if(n){for(let i of e)if(i.extensions.indexOf(n[1])>-1)return i}return null}static matchLanguageName(e,t,n=!0){t=t.toLowerCase();for(let i of e)if(i.alias.some(s=>s==t))return i;if(n)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}},Xm=le.define(),bn=le.define({combine:r=>{if(!r.length)return" ";let e=r[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(r[0]));return e}});function ni(r){let e=r.facet(bn);return e.charCodeAt(0)==9?r.tabSize*e.length:e.length}function qo(r,e){let t="",n=r.tabSize,i=r.facet(bn)[0];if(i==" "){for(;e>=n;)t+=" ",e-=n;i=" "}for(let s=0;s<e;s++)t+=i;return t}function Fd(r,e){r instanceof Me&&(r=new Gs(r));for(let n of r.state.facet(Xm)){let i=n(r,e);if(i!==void 0)return i}let t=ze(r.state);return t.length>=e?GE(r,t,e):null}var Gs=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=ni(e)}lineAt(e,t=1){let n=this.state.doc.lineAt(e),{simulateBreak:i,simulateDoubleBreak:s}=this.options;return i!=null&&i>=n.from&&i<=n.to?s&&i==e?{text:"",from:e}:(t<0?i<e:i<=e)?{text:n.text.slice(i-n.from),from:i}:{text:n.text.slice(0,i-n.from),from:n.from}:n}textAfterPos(e,t=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:n,from:i}=this.lineAt(e,t);return n.slice(e-i,Math.min(n.length,e+100-i))}column(e,t=1){let{text:n,from:i}=this.lineAt(e,t),s=this.countColumn(n,e-i),o=this.options.overrideIndentation?this.options.overrideIndentation(i):-1;return o>-1&&(s+=o-this.countColumn(n,n.search(/\S|$/))),s}countColumn(e,t=e.length){return Gt(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:n,from:i}=this.lineAt(e,t),s=this.options.overrideIndentation;if(s){let o=s(i);if(o>-1)return o}return this.countColumn(n,n.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Cr=new xe;function GE(r,e,t){let n=e.resolveStack(t),i=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(i!=n.node){let s=[];for(let o=i;o&&!(o.from<n.node.from||o.to>n.node.to||o.from==n.node.from&&o.type==n.node.type);o=o.parent)s.push(o);for(let o=s.length-1;o>=0;o--)n={node:s[o],next:n}}return ix(n,r,t)}function ix(r,e,t){for(let n=r;n;n=n.next){let i=KE(n.node);if(i)return i(Cm.create(e,t,n))}return 0}function HE(r){return r.pos==r.options.simulateBreak&&r.options.simulateDoubleBreak}function KE(r){let e=r.type.prop(Cr);if(e)return e;let t=r.firstChild,n;if(t&&(n=t.type.prop(xe.closedBy))){let i=r.lastChild,s=i&&n.indexOf(i.name)>-1;return o=>sx(o,!0,1,void 0,s&&!HE(o)?i.from:void 0)}return r.parent==null?JE:null}function JE(){return 0}var Cm=class r extends Gs{constructor(e,t,n){super(e.state,e.options),this.base=e,this.pos=t,this.context=n}get node(){return this.context.node}static create(e,t,n){return new r(e,t,n)}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 n=e.resolve(t.from);for(;n.parent&&n.parent.from==n.from;)n=n.parent;if(eR(n,e))break;t=this.state.doc.lineAt(n.from)}return this.lineIndent(t.from)}continue(){return ix(this.context.next,this.base,this.pos)}};function eR(r,e){for(let t=e;t;t=t.parent)if(r==t)return!0;return!1}function tR(r){let e=r.node,t=e.childAfter(e.from),n=e.lastChild;if(!t)return null;let i=r.options.simulateBreak,s=r.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==n)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:r,align:e=!0,units:t=1}){return n=>sx(n,e,t,r)}function sx(r,e,t,n,i){let s=r.textAfter,o=s.match(/^\s*/)[0].length,a=n&&s.slice(o,o+n.length)==n||i==r.pos+o,l=e?tR(r):null;return l?a?r.column(l.from):r.column(l.to):r.baseIndent+(a?0:r.unit*t)}var ox=r=>r.baseIndent;function Gr({except:r,units:e=1}={}){return t=>{let n=r&&r.test(t.textAfter);return t.baseIndent+(n?0:e*t.unit)}}var rR=200;function ax(){return Me.transactionFilter.of(r=>{if(!r.docChanged||!r.isUserEvent("input.type")&&!r.isUserEvent("input.complete"))return r;let e=r.startState.languageDataAt("indentOnInput",r.startState.selection.main.head);if(!e.length)return r;let t=r.newDoc,{head:n}=r.newSelection.main,i=t.lineAt(n);if(n>i.from+rR)return r;let s=t.sliceString(i.from,n);if(!e.some(c=>c.test(s)))return r;let{state:o}=r,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=Fd(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?[r,{changes:l,sequential:!0}]:r})}var zm=le.define(),dr=new xe;function Vt(r){let e=r.firstChild,t=r.lastChild;return e&&e.to<t.from?{from:e.to,to:t.type.isError?r.to:t.from}:null}function nR(r,e,t){let n=ze(r);if(n.length<t)return null;let i=n.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(dr);if(l&&(a.to<n.length-50||n.length==r.doc.length||!iR(a))){let c=l(a,r);c&&c.from<=t&&c.from>=e&&c.to>t&&(s=c)}}return s}function iR(r){let e=r.lastChild;return e&&e.to==r.to&&e.type.isError}function qv(r,e,t){for(let n of r.facet(zm)){let i=n(r,e,t);if(i)return i}return nR(r,e,t)}function lx(r,e){let t=e.mapPos(r.from,1),n=e.mapPos(r.to,-1);return t>=n?void 0:{from:t,to:n}}var cx=be.define({map:lx}),Wm=be.define({map:lx});var Wd=Ze.define({create(){return ee.none},update(r,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,i)=>r=Gv(r,n,i)),r=r.map(e.changes);let t=[];for(let n of e.effects)n.is(cx)&&!sR(r,n.value.from,n.value.to)?t.push(n.value):n.is(Wm)&&(r=r.update({filter:(i,s)=>n.value.from!=i||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));if(t.length){let{preparePlaceholder:n}=e.state.facet(Bm),i=t.map(s=>(n?ee.replace({widget:new Rm(n(e.state,s))}):Hv).range(s.from,s.to));r=r.update({add:i})}return e.selection&&(r=Gv(r,e.selection.main.head)),r},provide:r=>N.decorations.from(r),toJSON(r,e){let t=[];return r.between(0,e.doc.length,(n,i)=>{t.push(n,i)}),t},fromJSON(r){if(!Array.isArray(r)||r.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t<r.length;){let n=r[t++],i=r[t++];if(typeof n!="number"||typeof i!="number")throw new RangeError("Invalid JSON for fold state");e.push(Hv.range(n,i))}return ee.set(e,!0)}});function Gv(r,e,t=e){let n=!1;return r.between(e,t,(i,s)=>{i<t&&s>e&&(n=!0)}),n?r.update({filterFrom:e,filterTo:t,filter:(i,s)=>i>=t||s<=e}):r}function Em(r,e,t){var n;let i=null;return(n=r.field(Wd,!1))===null||n===void 0||n.between(e,t,(s,o)=>{(!i||i.from>s)&&(i={from:s,to:o})}),i}function sR(r,e,t){let n=!1;return r.between(e,e,(i,s)=>{i==e&&s==t&&(n=!0)}),n}var oR={placeholderDOM:null,preparePlaceholder:null,placeholderText:"\u2026"},Bm=le.define({combine(r){return Nr(r,oR)}});function aR(r){let e=[Wd,cR];return r&&e.push(Bm.of(r)),e}function dx(r,e){let{state:t}=r,n=t.facet(Bm),i=o=>{let a=r.lineBlockAt(r.posAtDOM(o.target)),l=Em(r.state,a.from,a.to);l&&r.dispatch({effects:Wm.of(l)}),o.preventDefault()};if(n.placeholderDOM)return n.placeholderDOM(r,i,e);let s=document.createElement("span");return s.textContent=n.placeholderText,s.setAttribute("aria-label",t.phrase("folded code")),s.title=t.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=i,s}var Hv=ee.replace({widget:new class extends Tt{toDOM(r){return dx(r,null)}}}),Rm=class extends Tt{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return dx(e,this.value)}},lR={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1},Ol=class extends Pt{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 hx(r={}){let e=gt(gt({},lR),r),t=new Ol(e,!0),n=new Ol(e,!1),i=at.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(Wd,!1)!=o.state.field(Wd,!1)||ze(o.startState)!=ze(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let a=new Rn;for(let l of o.viewportLineBlocks){let c=Em(o.state,l.from,l.to)?n:qv(o.state,l.from,l.to)?t:null;c&&a.add(l.from,l.from,c)}return a.finish()}}),{domEventHandlers:s}=e;return[i,Ki({class:"cm-foldGutter",markers(o){var a;return((a=o.plugin(i))===null||a===void 0?void 0:a.markers)||Te.empty},initialSpacer(){return new Ol(e,!1)},domEventHandlers:As(gt({},s),{click:(o,a,l)=>{if(s.click&&s.click(o,a,l))return!0;let c=Em(o.state,a.from,a.to);if(c)return o.dispatch({effects:Wm.of(c)}),!0;let d=qv(o.state,a.from,a.to);return d?(o.dispatch({effects:cx.of(d)}),!0):!1}})}),aR()]}var cR=N.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 r{constructor(e,t){this.specs=e;let n;function i(a){let l=pn.newName();return(n||(n=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 cr?a=>a.prop(Ai)==o.data:o?a=>a==o:void 0,this.style=Pm(e.map(a=>({tag:a.tag,class:a.class||i(Object.assign({},a,{tag:null}))})),{all:s}).style,this.module=n?new pn(n):null,this.themeType=t.themeType}static define(e,t){return new r(e,t||{})}},Mm=le.define(),ux=le.define({combine(r){return r.length?[r[0]]:null}});function Tm(r){let e=r.facet(Mm);return e.length?e:r.facet(ux)}function Nd(r,e){let t=[dR],n;return r instanceof ns&&(r.module&&t.push(N.styleModule.of(r.module)),n=r.themeType),e!=null&&e.fallback?t.push(ux.of(r)):n?t.push(Mm.computeN([N.darkTheme],i=>i.facet(N.darkTheme)==(n=="dark")?[r]:[])):t.push(Mm.of(r)),t}var Lm=class{constructor(e){this.markCache=Object.create(null),this.tree=ze(e.state),this.decorations=this.buildDeco(e,Tm(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=ze(e.state),n=Tm(e.state),i=n!=Tm(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,n),this.decoratedTo=s.to)}buildDeco(e,t){if(!t||!this.tree.length)return ee.none;let n=new Rn;for(let{from:i,to:s}of e.visibleRanges)Nv(this.tree,t,(o,a,l)=>{n.add(o,a,this.markCache[l]||(this.markCache[l]=ee.mark({class:l})))},i,s);return n.finish()}},dR=fn.high(at.fromClass(Lm,{decorations:r=>r.decorations})),w8=ns.define([{tag:O.meta,color:"#404740"},{tag:O.link,textDecoration:"underline"},{tag:O.heading,textDecoration:"underline",fontWeight:"bold"},{tag:O.emphasis,fontStyle:"italic"},{tag:O.strong,fontWeight:"bold"},{tag:O.strikethrough,textDecoration:"line-through"},{tag:O.keyword,color:"#708"},{tag:[O.atom,O.bool,O.url,O.contentSeparator,O.labelName],color:"#219"},{tag:[O.literal,O.inserted],color:"#164"},{tag:[O.string,O.deleted],color:"#a11"},{tag:[O.regexp,O.escape,O.special(O.string)],color:"#e40"},{tag:O.definition(O.variableName),color:"#00f"},{tag:O.local(O.variableName),color:"#30a"},{tag:[O.typeName,O.namespace],color:"#085"},{tag:O.className,color:"#167"},{tag:[O.special(O.variableName),O.macroName],color:"#256"},{tag:O.definition(O.propertyName),color:"#00c"},{tag:O.comment,color:"#940"},{tag:O.invalid,color:"#f00"}]),hR=N.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),fx=1e4,px="()[]{}",mx=le.define({combine(r){return Nr(r,{afterCursor:!0,brackets:px,maxScanDistance:fx,renderMatch:pR})}}),uR=ee.mark({class:"cm-matchingBracket"}),fR=ee.mark({class:"cm-nonmatchingBracket"});function pR(r){let e=[],t=r.matched?uR:fR;return e.push(t.range(r.start.from,r.start.to)),r.end&&e.push(t.range(r.end.from,r.end.to)),e}function Kv(r){let e=[],t=r.facet(mx);for(let n of r.selection.ranges){if(!n.empty)continue;let i=Zn(r,n.head,-1,t)||n.head>0&&Zn(r,n.head-1,1,t)||t.afterCursor&&(Zn(r,n.head,1,t)||n.head<r.doc.length&&Zn(r,n.head+1,-1,t));i&&(e=e.concat(t.renderMatch(i,r)))}return ee.set(e,!0)}var mR=at.fromClass(class{constructor(r){this.paused=!1,this.decorations=Kv(r.state)}update(r){(r.docChanged||r.selectionSet||this.paused)&&(r.view.composing?(this.decorations=this.decorations.map(r.changes),this.paused=!0):(this.decorations=Kv(r.state),this.paused=!1))}},{decorations:r=>r.decorations}),OR=[mR,hR];function Ox(r={}){return[mx.of(r),OR]}var Vm=new xe;function Dm(r,e,t){let n=r.prop(e<0?xe.openedBy:xe.closedBy);if(n)return n;if(r.name.length==1){let i=t.indexOf(r.name);if(i>-1&&i%2==(e<0?1:0))return[t[i+e]]}return null}function Im(r){let e=r.type.prop(Vm);return e?e(r.node):r}function Zn(r,e,t,n={}){let i=n.maxScanDistance||fx,s=n.brackets||px,o=ze(r),a=o.resolveInner(e,t);for(let l=a;l;l=l.parent){let c=Dm(l.type,t,s);if(c&&l.from<l.to){let d=Im(l);if(d&&(t>0?e>=d.from&&e<d.to:e>d.from&&e<=d.to))return gR(r,e,t,l,d,c,s)}}return bR(r,e,t,o,a.type,i,s)}function gR(r,e,t,n,i,s,o){let a=n.parent,l={from:i.from,to:i.to},c=0,d=a==null?void 0:a.cursor();if(d&&(t<0?d.childBefore(n.from):d.childAfter(n.to)))do if(t<0?d.to<=n.from:d.from>=n.to){if(c==0&&s.indexOf(d.type.name)>-1&&d.from<d.to){let h=Im(d);return{start:l,end:h?{from:h.from,to:h.to}:void 0,matched:!0}}else if(Dm(d.type,t,o))c++;else if(Dm(d.type,-t,o)){if(c==0){let h=Im(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 bR(r,e,t,n,i,s,o){if(t<0?!e:e==r.doc.length)return null;let a=t<0?r.sliceDoc(e-1,e):r.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=r.doc.iterRange(e,t>0?r.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 g=t>0?0:f.length-1,v=t>0?f.length:-1;g!=v;g+=t){let k=o.indexOf(f[g]);if(!(k<0||n.resolveInner(m+g,1).type!=i))if(k%2==0==t>0)h++;else{if(h==1)return{start:c,end:{from:m+g,to:m+g+1},matched:k>>1==l>>1};h--}}t>0&&(u+=f.length)}return d.done?{start:c,matched:!1}:null}function Jv(r,e,t,n=0,i=0){e==null&&(e=r.search(/[^\s\u00a0]/),e==-1&&(e=r.length));let s=i;for(let o=n;o<e;o++)r.charCodeAt(o)==9?s+=t-s%t:s++;return s}var Bd=class{constructor(e,t,n,i){this.string=e,this.tabSize=t,this.indentUnit=n,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),n;if(typeof e=="string"?n=t==e:n=t&&(e instanceof RegExp?e.test(t):e(t)),n)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=Jv(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:Jv(this.string,null,this.tabSize)}match(e,t,n){if(typeof e=="string"){let i=o=>n?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 yR(r){return{name:r.name||"",token:r.token,blankLine:r.blankLine||(()=>{}),startState:r.startState||(()=>!0),copyState:r.copyState||SR,indent:r.indent||(()=>null),languageData:r.languageData||{},tokenTable:r.tokenTable||Fm,mergeTokens:r.mergeTokens!==!1}}function SR(r){if(typeof r!="object")return r;let e={};for(let t in r){let n=r[t];e[t]=n instanceof Array?n.slice():n}return e}var ex=new WeakMap,Dt=class r extends cr{constructor(e){let t=Uo(e.languageData),n=yR(e),i,s=new class extends _i{createParse(o,a,l){return new Zm(i,o,a,l)}};super(t,s,[],e.name),this.topNode=PR(t,this),i=this,this.streamParser=n,this.stateAfter=new xe({perNode:!0}),this.tokenTable=e.tokenTable?new Vd(n.tokenTable):wR}static define(e){return new r(e)}getIndent(e){let t,{overrideIndentation:n}=e.options;n&&(t=ex.get(e.state),t!=null&&t<e.pos-1e4&&(t=void 0));let i=Ym(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=n?n(l.from):-1,h=new Bd(l.text,e.state.tabSize,e.unit,d<0?void 0:d);for(;h.pos<c-l.from;)bx(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 n&&t==null&&ex.set(e.state,a.from),this.streamParser.indent(o,/^\s*(.*)/.exec(a.text)[1],e)}get allowsNesting(){return!1}};function Ym(r,e,t,n,i){let s=t>=n&&t+e.length<=i&&e.prop(r.stateAfter);if(s)return{state:r.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&&Ym(r,a,l,n,i);if(c)return c}return null}function gx(r,e,t,n,i){if(i&&t<=0&&n>=e.length)return e;!i&&t==0&&e.type==r.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<n&&a instanceof Ee){if(!(l=gx(r,a,t-o,n-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 vR(r,e,t,n,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&&Ym(r,s.tree,0-s.offset,t,a),c;if(l&&l.pos<=n&&(c=gx(r,s.tree,t+s.offset,l.pos+s.offset,!1)))return{state:l.state,tree:c}}return{state:r.streamParser.startState(i?ni(i):4),tree:Ee.empty}}var Zm=class{constructor(e,t,n,i){this.lang=e,this.input=t,this.fragments=n,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=qs.get(),o=i[0].from,{state:a,tree:l}=vR(e,n,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(ni(s.state)),s.skipUntilInView(this.parsedPos,s.viewport.from),this.parsedPos=s.viewport.from),this.moveRangeIndex()}advance(){let e=qs.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),n=Math.min(t,this.chunkStart+512);for(e&&(n=Math.min(n,e.viewport.to));this.parsedPos<n;)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 n=t.indexOf(`
`);n>-1&&(t=t.slice(0,n))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),n=e+t.length;for(let i=this.rangeIndex;;){let s=this.ranges[i].to;if(s>=n||(t=t.slice(0,s-(n-t.length)),i++,i==this.ranges.length))break;let o=this.ranges[i].from,a=this.lineAfter(o);t+=a,n=o+a.length}return{line:t,end:n}}skipGapsTo(e,t,n){for(;;){let i=this.ranges[this.rangeIndex].to,s=e+t;if(n>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,n,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(n,i,-1),n+=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]=n:this.chunk.push(e,t,n,s),i}parseLine(e){let{line:t,end:n}=this.nextLine(),i=0,{streamParser:s}=this.lang,o=new Bd(t,e?e.state.tabSize:4,e?ni(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=bx(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=n,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:xR,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 bx(r,e,t){e.start=e.pos;for(let n=0;n<10;n++){let i=r(e,t);if(e.pos>e.start)return i}throw new Error("Stream parser failed to advance stream.")}var Fm=Object.create(null),yl=[bt.none],xR=new Qi(yl),tx=[],rx=Object.create(null),yx=Object.create(null);for(let[r,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"]])yx[r]=Sx(Fm,e);var Vd=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),yx)}resolve(e){return e?this.table[e]||(this.table[e]=Sx(this.extra,e)):0}},wR=new Vd(Fm);function _m(r,e){tx.indexOf(r)>-1||(tx.push(r),console.warn(e))}function Sx(r,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let d=r[c]||O[c];d?typeof d=="function"?l.length?l=l.map(d):_m(c,`Modifier ${c} used at start of tag`):l.length?_m(c,`Tag ${c} used as modifier`):l=Array.isArray(d)?d:[d]:_m(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let n=e.replace(/ /g,"_"),i=n+" "+t.map(a=>a.id),s=rx[i];if(s)return s.id;let o=rx[i]=bt.define({id:yl.length,name:n,props:[Kt({[n]:t})]});return yl.push(o),o.id}function PR(r,e){let t=bt.define({id:yl.length,name:"Document",props:[Ai.add(()=>r),Cr.add(()=>n=>e.getIndent(n))],top:!0});return yl.push(t),t}var P8={rtl:ee.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:et.RTL}),ltr:ee.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:et.LTR}),auto:ee.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var jd=class{constructor(e,t,n,i){this.state=e,this.pos=t,this.explicit=n,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),n=Math.max(t.from,this.pos-250),i=t.text.slice(n-t.from,this.pos-t.from),s=i.search($R(e,!1));return s<0?null:{from:n+s,to:this.pos,text:i.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,n){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),n&&n.onDocChange&&(this.abortOnDocChange=!0))}};function vx(r){let e=Object.keys(r).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function kR(r){let e=Object.create(null),t=Object.create(null);for(let{label:i}of r){e[i[0]]=!0;for(let s=1;s<i.length;s++)t[i[s]]=!0}let n=vx(e)+vx(t)+"*$";return[new RegExp("^"+n),new RegExp(n)]}function kx(r){let e=r.map(i=>typeof i=="string"?{label:i}:i),[t,n]=e.every(i=>/^\w+$/.test(i.label))?[/\w*$/,/\w+$/]:kR(e);return i=>{let s=i.matchBefore(n);return s||i.explicit?{from:s?s.from:i.pos,options:e,validFor:t}:null}}function $x(r,e){return t=>{for(let n=ze(t.state).resolveInner(t.pos,-1);n;n=n.parent){if(r.indexOf(n.name)>-1)return null;if(n.type.isTop)break}return e(t)}}function $R(r,e){var t;let{source:n}=r,i=e&&n[0]!="^",s=n[n.length-1]!="$";return!i&&!s?r:new RegExp(`${i?"^":""}(?:${n})${s?"$":""}`,(t=r.flags)!==null&&t!==void 0?t:r.ignoreCase?"i":"")}var QR=Qr.define();var D8=typeof navigator=="object"&&/Win/.test(navigator.platform);var TR=N.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"}}}),jm=class{constructor(e,t,n,i){this.field=e,this.line=t,this.from=n,this.to=i}},Um=class r{constructor(e,t,n){this.field=e,this.from=t,this.to=n}map(e){let t=e.mapPos(this.from,-1,Lt.TrackDel),n=e.mapPos(this.to,1,Lt.TrackDel);return t==null||n==null?null:new r(this.field,t,n)}},qm=class r{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let n=[],i=[t],s=e.doc.lineAt(t),o=/^\s*/.exec(s.text)[0];for(let l of this.lines){if(n.length){let c=o,d=/^\t*/.exec(l)[0].length;for(let h=0;h<d;h++)c+=e.facet(bn);i.push(t+c.length-d),l=c+l.slice(d)}n.push(l),t+=l.length+1}let a=this.fieldPositions.map(l=>new Um(l.field,i[l.line]+l.from,i[l.line]+l.to));return{text:n,ranges:a}}static parse(e){let t=[],n=[],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==n.length&&h.from>s.index){let u=s[2]?3+(s[1]||"").length:2;h.from-=u,h.to-=u}i.push(new jm(c,n.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==n.length&&d.from>c&&(d.from--,d.to--);return l}),n.push(o)}return new r(n,i)}},_R=ee.widget({widget:new class extends Tt{toDOM(){let r=document.createElement("span");return r.className="cm-snippetFieldPosition",r}ignoreEvent(){return!1}}}),AR=ee.mark({class:"cm-snippetField"}),Ho=class r{constructor(e,t){this.ranges=e,this.active=t,this.deco=ee.set(e.map(n=>(n.from==n.to?_R:AR).range(n.from,n.to)),!0)}map(e){let t=[];for(let n of this.ranges){let i=n.map(e);if(!i)return null;t.push(i)}return new r(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(n=>n.field==this.active&&n.from<=t.from&&n.to>=t.to))}},xl=be.define({map(r,e){return r&&r.map(e)}}),CR=be.define(),Sl=Ze.define({create(){return null},update(r,e){for(let t of e.effects){if(t.is(xl))return t.value;if(t.is(CR)&&r)return new Ho(r.ranges,t.value)}return r&&e.docChanged&&(r=r.map(e.changes)),r&&e.selection&&!r.selectionInsideField(e.selection)&&(r=null),r},provide:r=>N.decorations.from(r,e=>e?e.deco:ee.none)});function Gm(r,e){return Z.create(r.filter(t=>t.field==e).map(t=>Z.range(t.from,t.to)))}function ER(r){let e=qm.parse(r);return(t,n,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:Le.of(o)},scrollIntoView:!0,annotations:n?[QR.of(n),dt.userEvent.of("input.complete")]:void 0};if(a.length&&(c.selection=Gm(a,0)),a.some(d=>d.field>0)){let d=new Ho(a,0),h=c.effects=[xl.of(d)];t.state.field(Sl,!1)===void 0&&h.push(be.appendConfig.of([Sl,IR,ZR,TR]))}t.dispatch(t.state.update(c))}}function Qx(r){return({state:e,dispatch:t})=>{let n=e.field(Sl,!1);if(!n||r<0&&n.active==0)return!1;let i=n.active+r,s=r>0&&!n.ranges.some(o=>o.field==i+r);return t(e.update({selection:Gm(n.ranges,i),effects:xl.of(s?null:new Ho(n.ranges,i)),scrollIntoView:!0})),!0}}var RR=({state:r,dispatch:e})=>r.field(Sl,!1)?(e(r.update({effects:xl.of(null)})),!0):!1,MR=Qx(1),LR=Qx(-1);var DR=[{key:"Tab",run:MR,shift:LR},{key:"Escape",run:RR}],xx=le.define({combine(r){return r.length?r[0]:DR}}),IR=fn.highest(Sr.compute([xx],r=>r.facet(xx)));function vr(r,e){return As(gt({},e),{apply:ER(r)})}var ZR=N.domEventHandlers({mousedown(r,e){let t=e.state.field(Sl,!1),n;if(!t||(n=e.posAtCoords({x:r.clientX,y:r.clientY}))==null)return!1;let i=t.ranges.find(s=>s.from<=n&&s.to>=n);return!i||i.field==t.active?!1:(e.dispatch({selection:Gm(t.ranges,i.field),effects:xl.of(t.ranges.some(s=>s.field>i.field)?new Ho(t.ranges,i.field):null),scrollIntoView:!0}),!0)}});var vl={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Hs=be.define({map(r,e){let t=e.mapPos(r,-1,Lt.TrackAfter);return t==null?void 0:t}}),Hm=new class extends un{};Hm.startSide=1;Hm.endSide=-1;var Tx=Ze.define({create(){return Te.empty},update(r,e){if(r=r.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);r=r.update({filter:n=>n>=t.from&&n<=t.to})}for(let t of e.effects)t.is(Hs)&&(r=r.update({add:[Hm.range(t.value,t.value+1)]}));return r}});function _x(){return[zR,Tx]}var Nm="()[]{}<>\xAB\xBB\xBB\xAB\uFF3B\uFF3D\uFF5B\uFF5D";function Ax(r){for(let e=0;e<Nm.length;e+=2)if(Nm.charCodeAt(e)==r)return Nm.charAt(e+1);return Bc(r<128?r:r+1)}function Cx(r,e){return r.languageDataAt("closeBrackets",e)[0]||vl}var XR=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),zR=N.inputHandler.of((r,e,t,n)=>{if((XR?r.composing:r.compositionStarted)||r.state.readOnly)return!1;let i=r.state.selection.main;if(n.length>2||n.length==2&&ji(Mn(n,0))==1||e!=i.from||t!=i.to)return!1;let s=WR(r.state,n);return s?(r.dispatch(s),!0):!1}),Ex=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let n=Cx(r,r.selection.main.head).brackets||vl.brackets,i=null,s=r.changeByRange(o=>{if(o.empty){let a=BR(r.doc,o.head);for(let l of n)if(l==a&&Ud(r.doc,o.head)==Ax(Mn(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(r.update(s,{scrollIntoView:!0,userEvent:"delete.backward"})),!i};function WR(r,e){let t=Cx(r,r.selection.main.head),n=t.brackets||vl.brackets;for(let i of n){let s=Ax(Mn(i,0));if(e==i)return s==i?FR(r,i,n.indexOf(i+i+i)>-1,t):VR(r,i,s,t.before||vl.before);if(e==s&&Rx(r,r.selection.main.from))return YR(r,i,s)}return null}function Rx(r,e){let t=!1;return r.field(Tx).between(0,r.doc.length,n=>{n==e&&(t=!0)}),t}function Ud(r,e){let t=r.sliceString(e,e+2);return t.slice(0,ji(Mn(t,0)))}function BR(r,e){let t=r.sliceString(e-2,e);return ji(Mn(t,0))==t.length?t:t.slice(1)}function VR(r,e,t,n){let i=null,s=r.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:Hs.of(o.to+e.length),range:Z.range(o.anchor+e.length,o.head+e.length)};let a=Ud(r.doc,o.head);return!a||/\s/.test(a)||n.indexOf(a)>-1?{changes:{insert:e+t,from:o.head},effects:Hs.of(o.head+e.length),range:Z.cursor(o.head+e.length)}:{range:i=o}});return i?null:r.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function YR(r,e,t){let n=null,i=r.changeByRange(s=>s.empty&&Ud(r.doc,s.head)==t?{changes:{from:s.head,to:s.head+t.length,insert:t},range:Z.cursor(s.head+t.length)}:n={range:s});return n?null:r.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function FR(r,e,t,n){let i=n.stringPrefixes||vl.stringPrefixes,s=null,o=r.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:e,from:a.to}],effects:Hs.of(a.to+e.length),range:Z.range(a.anchor+e.length,a.head+e.length)};let l=a.head,c=Ud(r.doc,l),d;if(c==e){if(wx(r,l))return{changes:{insert:e+e,from:l},effects:Hs.of(l+e.length),range:Z.cursor(l+e.length)};if(Rx(r,l)){let u=t&&r.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&&r.sliceDoc(l-2*e.length,l)==e+e&&(d=Px(r,l-2*e.length,i))>-1&&wx(r,d))return{changes:{insert:e+e+e+e,from:l},effects:Hs.of(l+e.length),range:Z.cursor(l+e.length)};if(r.charCategorizer(l)(c)!=rt.Word&&Px(r,l,i)>-1&&!NR(r,l,e,i))return{changes:{insert:e+e,from:l},effects:Hs.of(l+e.length),range:Z.cursor(l+e.length)}}return{range:s=a}});return s?null:r.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function wx(r,e){let t=ze(r).resolveInner(e+1);return t.parent&&t.from==e}function NR(r,e,t,n){let i=ze(r).resolveInner(e,-1),s=n.reduce((o,a)=>Math.max(o,a.length),0);for(let o=0;o<5;o++){let a=r.sliceDoc(i.from,Math.min(i.to,i.from+t.length+s)),l=a.indexOf(t);if(!l||l>-1&&n.indexOf(a.slice(0,l))>-1){let d=i.firstChild;for(;d&&d.from==i.from&&d.to-d.from>t.length+l;){if(r.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 Px(r,e,t){let n=r.charCategorizer(e);if(n(r.sliceDoc(e-1,e))!=rt.Word)return e;for(let i of t){let s=e-i.length;if(r.sliceDoc(s,e)==i&&n(r.sliceDoc(s-1,s))!=rt.Word)return s}return-1}var Mx=Pv((r,e,t)=>{let n=ze(r.state).resolveInner(e,t),i=km(n),s="";if(i)for(let c of i.tags)s+=c.set.join(" < ")+`
`;let o=r.state.facet(ri),a=o instanceof Jt?"Lezer LRLanguage":o instanceof Dt?"StreamLanguage":"Unknown",l=o instanceof Jt?"AST ":o instanceof Dt?"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}: ${n.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 jR=r=>{let{state:e}=r,t=e.doc.lineAt(e.selection.main.from),n=nO(r.state,t.from);return n.line?UR(r):n.block?GR(r):!1};function rO(r,e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let i=r(e,t);return i?(n(t.update(i)),!0):!1}}var UR=rO(JR,0);var qR=rO(Vx,0);var GR=rO((r,e)=>Vx(r,e,KR(e)),0);function nO(r,e){let t=r.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var wl=50;function HR(r,{open:e,close:t},n,i){let s=r.sliceDoc(n-wl,n),o=r.sliceDoc(i,i+wl),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:n-a,margin:a&&1},close:{pos:i+l,margin:l&&1}};let d,h;i-n<=2*wl?d=h=r.sliceDoc(n,i):(d=r.sliceDoc(n,n+wl),h=r.sliceDoc(i-wl,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:n+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 KR(r){let e=[];for(let t of r.selection.ranges){let n=r.doc.lineAt(t.from),i=t.to<=n.to?n:r.doc.lineAt(t.to);i.from>n.from&&i.from==t.to&&(i=t.to==n.to+1?n:r.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>n.from?e[s].to=i.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:i.to})}return e}function Vx(r,e,t=e.selection.ranges){let n=t.map(s=>nO(e,s.from).block);if(!n.every(s=>s))return null;let i=t.map((s,o)=>HR(e,n[o],s.from,s.to));if(r!=2&&!i.every(s=>s))return{changes:e.changes(t.map((s,o)=>i[o]?[]:[{from:s.from,insert:n[o].open+" "},{from:s.to,insert:" "+n[o].close}]))};if(r!=1&&i.some(s=>s)){let s=[];for(let o=0,a;o<i.length;o++)if(a=i[o]){let l=n[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 JR(r,e,t=e.selection.ranges){let n=[],i=-1;e:for(let{from:s,to:o}of t){let a=n.length,l=1e9,c;for(let d=s;d<=o;){let h=e.doc.lineAt(d);if(c==null&&(c=nO(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),n.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<n.length;d++)n[d].indent<n[d].line.text.length&&(n[d].indent=l);n.length==a+1&&(n[a].single=!0)}if(r!=2&&n.some(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:d,single:h}of n)(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(r!=1&&n.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of n)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 Jm=Qr.define(),Hd=Qr.define(),e2=le.define(),Yx=le.define({combine(r){return Nr(r,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,i)=>e(n,i)||t(n,i)})}}),Fx=Ze.define({create(){return Ks.empty},update(r,e){let t=e.state.facet(Yx),n=e.annotation(Jm);if(n){let l=Xn.fromTransaction(e,n.selection),c=n.side,d=c==0?r.undone:r.done;return l?d=Gd(d,d.length,t.minDepth,l):d=Ux(d,e.startState.selection),new Ks(c==0?n.rest:d,c==0?d:n.rest)}let i=e.annotation(Hd);if((i=="full"||i=="before")&&(r=r.isolate()),e.annotation(dt.addToHistory)===!1)return e.changes.empty?r:r.addMapping(e.changes.desc);let s=Xn.fromTransaction(e),o=e.annotation(dt.time),a=e.annotation(dt.userEvent);return s?r=r.addChanges(s,o,a,t,e):e.selection&&(r=r.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(i=="full"||i=="after")&&(r=r.isolate()),r},toJSON(r){return{done:r.done.map(e=>e.toJSON()),undone:r.undone.map(e=>e.toJSON())}},fromJSON(r){return new Ks(r.done.map(Xn.fromJSON),r.undone.map(Xn.fromJSON))}});function Nx(r={}){return[Fx,Yx.of(r),N.domEventHandlers({beforeinput(e,t){let n=e.inputType=="historyUndo"?Pl:e.inputType=="historyRedo"?Ko:null;return n?(e.preventDefault(),n(t)):!1}})]}function Kd(r,e){return function({state:t,dispatch:n}){if(!e&&t.readOnly)return!1;let i=t.field(Fx,!1);if(!i)return!1;let s=i.pop(r,t,e);return s?(n(s),!0):!1}}var Pl=Kd(0,!1),Ko=Kd(1,!1),t2=Kd(0,!0),r2=Kd(1,!0);var Xn=class r{constructor(e,t,n,i,s){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=i,this.selectionsAfter=s}setSelAfter(e){return new r(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,n;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:(n=this.startSelection)===null||n===void 0?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(i=>i.toJSON())}}static fromJSON(e){return new r(e.changes&&gr.fromJSON(e.changes),[],e.mapped&&xi.fromJSON(e.mapped),e.startSelection&&Z.fromJSON(e.startSelection),e.selectionsAfter.map(Z.fromJSON))}static fromTransaction(e,t){let n=yn;for(let i of e.startState.facet(e2)){let s=i(e);s.length&&(n=n.concat(s))}return!n.length&&e.changes.empty?null:new r(e.changes.invert(e.startState.doc),n,void 0,t||e.startState.selection,yn)}static selection(e){return new r(void 0,yn,void 0,void 0,e)}};function Gd(r,e,t,n){let i=e+1>t+20?e-t-1:0,s=r.slice(i,e);return s.push(n),s}function n2(r,e){let t=[],n=!1;return r.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&&(n=!0)}}),n}function i2(r,e){return r.ranges.length==e.ranges.length&&r.ranges.filter((t,n)=>t.empty!=e.ranges[n].empty).length===0}function jx(r,e){return r.length?e.length?r.concat(e):r:e}var yn=[],s2=200;function Ux(r,e){if(r.length){let t=r[r.length-1],n=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-s2));return n.length&&n[n.length-1].eq(e)?r:(n.push(e),Gd(r,r.length-1,1e9,t.setSelAfter(n)))}else return[Xn.selection([e])]}function o2(r){let e=r[r.length-1],t=r.slice();return t[r.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function Km(r,e){if(!r.length)return r;let t=r.length,n=yn;for(;t;){let i=a2(r[t-1],e,n);if(i.changes&&!i.changes.empty||i.effects.length){let s=r.slice(0,t);return s[t-1]=i,s}else e=i.mapped,t--,n=i.selectionsAfter}return n.length?[Xn.selection(n)]:yn}function a2(r,e,t){let n=jx(r.selectionsAfter.length?r.selectionsAfter.map(a=>a.map(e)):yn,t);if(!r.changes)return Xn.selection(n);let i=r.changes.map(e),s=e.mapDesc(r.changes,!0),o=r.mapped?r.mapped.composeDesc(s):s;return new Xn(i,be.mapEffects(r.effects,e),o,r.startSelection.map(s),n)}var l2=/^(input\.type|delete)($|\.)/,Ks=class r{constructor(e,t,n=0,i=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=i}isolate(){return this.prevTime?new r(this.done,this.undone):this}addChanges(e,t,n,i,s){let o=this.done,a=o[o.length-1];return a&&a.changes&&!a.changes.empty&&e.changes&&(!n||l2.test(n))&&(!a.selectionsAfter.length&&t-this.prevTime<i.newGroupDelay&&i.joinToEvent(s,n2(a.changes,e.changes))||n=="input.type.compose")?o=Gd(o,o.length-1,i.minDepth,new Xn(e.changes.compose(a.changes),jx(be.mapEffects(e.effects,a.changes),a.effects),a.mapped,a.startSelection,yn)):o=Gd(o,o.length,i.minDepth,e),new r(o,yn,t,n)}addSelection(e,t,n,i){let s=this.done.length?this.done[this.done.length-1].selectionsAfter:yn;return s.length>0&&t-this.prevTime<i&&n==this.prevUserEvent&&n&&/^select($|\.)/.test(n)&&i2(s[s.length-1],e)?this:new r(Ux(this.done,e),this.undone,t,n)}addMapping(e){return new r(Km(this.done,e),Km(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,n){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(n&&s.selectionsAfter.length)return t.update({selection:s.selectionsAfter[s.selectionsAfter.length-1],annotations:Jm.of({side:e,rest:o2(i),selection:o}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(s.changes){let a=i.length==1?yn:i.slice(0,i.length-1);return s.mapped&&(a=Km(a,s.mapped)),t.update({changes:s.changes,selection:s.startSelection,effects:s.effects,annotations:Jm.of({side:e,rest:a,selection:o}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}};Ks.empty=new Ks(yn,yn);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:t2,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:r2,preventDefault:!0}];function Jo(r,e){return Z.create(r.ranges.map(e),r.mainIndex)}function zn(r,e){return r.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function Wn({state:r,dispatch:e},t){let n=Jo(r.selection,t);return n.eq(r.selection,!0)?!1:(e(zn(r,n)),!0)}function Jd(r,e){return Z.cursor(e?r.to:r.from)}function Gx(r,e){return Wn(r,t=>t.empty?r.moveByChar(t,e):Jd(t,e))}function hr(r){return r.textDirectionAt(r.state.selection.main.head)==et.LTR}var Hx=r=>Gx(r,!hr(r)),Kx=r=>Gx(r,hr(r));function Jx(r,e){return Wn(r,t=>t.empty?r.moveByGroup(t,e):Jd(t,e))}var c2=r=>Jx(r,!hr(r)),d2=r=>Jx(r,hr(r));var q8=typeof Intl!="undefined"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function h2(r,e,t){if(e.type.prop(t))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(r.sliceDoc(e.from,e.to)))||e.firstChild}function eh(r,e,t){let n=ze(r).resolveInner(e.head),i=t?xe.closedBy:xe.openedBy;for(let l=e.head;;){let c=t?n.childAfter(l):n.childBefore(l);if(!c)break;h2(r,c,i)?n=c:l=t?c.to:c.from}let s=n.type.prop(i),o,a;return s&&(o=t?Zn(r,n.from,1):Zn(r,n.to,-1))&&o.matched?a=t?o.end.to:o.end.from:a=t?n.to:n.from,Z.cursor(a,t?-1:1)}var u2=r=>Wn(r,e=>eh(r.state,e,!hr(r))),f2=r=>Wn(r,e=>eh(r.state,e,hr(r)));function ew(r,e){return Wn(r,t=>{if(!t.empty)return Jd(t,e);let n=r.moveVertically(t,e);return n.head!=t.head?n:r.moveToLineBoundary(t,e)})}var tw=r=>ew(r,!1),rw=r=>ew(r,!0);function nw(r){let e=r.scrollDOM.clientHeight<r.scrollDOM.scrollHeight-2,t=0,n=0,i;if(e){for(let s of r.state.facet(N.scrollMargins)){let o=s(r);o!=null&&o.top&&(t=Math.max(o==null?void 0:o.top,t)),o!=null&&o.bottom&&(n=Math.max(o==null?void 0:o.bottom,n))}i=r.scrollDOM.clientHeight-t-n}else i=(r.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:t,marginBottom:n,selfScroll:e,height:Math.max(r.defaultLineHeight,i-5)}}function iw(r,e){let t=nw(r),{state:n}=r,i=Jo(n.selection,o=>o.empty?r.moveVertically(o,e,t.height):Jd(o,e));if(i.eq(n.selection))return!1;let s;if(t.selfScroll){let o=r.coordsAtPos(n.selection.main.head),a=r.scrollDOM.getBoundingClientRect(),l=a.top+t.marginTop,c=a.bottom-t.marginBottom;o&&o.top>l&&o.bottom<c&&(s=N.scrollIntoView(i.main.head,{y:"start",yMargin:o.top-l}))}return r.dispatch(zn(n,i),{effects:s}),!0}var Lx=r=>iw(r,!1),eO=r=>iw(r,!0);function is(r,e,t){let n=r.lineBlockAt(e.head),i=r.moveToLineBoundary(e,t);if(i.head==e.head&&i.head!=(t?n.to:n.from)&&(i=r.moveToLineBoundary(e,t,!1)),!t&&i.head==n.from&&n.length){let s=/^\s*/.exec(r.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;s&&e.head!=n.from+s&&(i=Z.cursor(n.from+s))}return i}var p2=r=>Wn(r,e=>is(r,e,!0)),m2=r=>Wn(r,e=>is(r,e,!1)),O2=r=>Wn(r,e=>is(r,e,!hr(r))),g2=r=>Wn(r,e=>is(r,e,hr(r))),b2=r=>Wn(r,e=>Z.cursor(r.lineBlockAt(e.head).from,1)),y2=r=>Wn(r,e=>Z.cursor(r.lineBlockAt(e.head).to,-1));function S2(r,e,t){let n=!1,i=Jo(r.selection,s=>{let o=Zn(r,s.head,-1)||Zn(r,s.head,1)||s.head>0&&Zn(r,s.head-1,1)||s.head<r.doc.length&&Zn(r,s.head+1,-1);if(!o||!o.end)return s;n=!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 n?(e(zn(r,i)),!0):!1}var v2=({state:r,dispatch:e})=>S2(r,e,!1);function Sn(r,e,t){let n=Jo(r.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 n.eq(r.state.selection)?!1:(r.dispatch(zn(r.state,n)),!0)}function sw(r,e){return Sn(r,e,t=>r.moveByChar(t,e))}var ow=r=>sw(r,!hr(r)),aw=r=>sw(r,hr(r));function lw(r,e){return Sn(r,e,t=>r.moveByGroup(t,e))}var x2=r=>lw(r,!hr(r)),w2=r=>lw(r,hr(r));var P2=r=>{let e=!hr(r);return Sn(r,e,t=>eh(r.state,t,e))},k2=r=>{let e=hr(r);return Sn(r,e,t=>eh(r.state,t,e))};function cw(r,e){return Sn(r,e,t=>r.moveVertically(t,e))}var dw=r=>cw(r,!1),hw=r=>cw(r,!0);function uw(r,e){return Sn(r,e,t=>r.moveVertically(t,e,nw(r).height))}var Dx=r=>uw(r,!1),Ix=r=>uw(r,!0),$2=r=>Sn(r,!0,e=>is(r,e,!0)),Q2=r=>Sn(r,!1,e=>is(r,e,!1)),T2=r=>{let e=!hr(r);return Sn(r,e,t=>is(r,t,e))},_2=r=>{let e=hr(r);return Sn(r,e,t=>is(r,t,e))},A2=r=>Sn(r,!1,e=>Z.cursor(r.lineBlockAt(e.head).from)),C2=r=>Sn(r,!0,e=>Z.cursor(r.lineBlockAt(e.head).to)),Zx=({state:r,dispatch:e})=>(e(zn(r,{anchor:0})),!0),Xx=({state:r,dispatch:e})=>(e(zn(r,{anchor:r.doc.length})),!0),zx=({state:r,dispatch:e})=>(e(zn(r,{anchor:r.selection.main.anchor,head:0})),!0),Wx=({state:r,dispatch:e})=>(e(zn(r,{anchor:r.selection.main.anchor,head:r.doc.length})),!0),E2=({state:r,dispatch:e})=>(e(r.update({selection:{anchor:0,head:r.doc.length},userEvent:"select"})),!0),R2=({state:r,dispatch:e})=>{let t=th(r).map(({from:n,to:i})=>Z.undirectionalRange(n,Math.min(i+1,r.doc.length)));return e(r.update({selection:Z.create(t),userEvent:"select"})),!0},M2=({state:r,dispatch:e})=>{let t=Jo(r.selection,n=>{let i=ze(r),s=i.resolveStack(n.from,1);if(n.empty){let o=i.resolveStack(n.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<n.from&&a.to>=n.to||a.to>n.to&&a.from<=n.from)&&o.next)return Z.undirectionalRange(a.from,a.to)}return n});return t.eq(r.selection)?!1:(e(zn(r,t)),!0)};function fw(r,e){let{state:t}=r,n=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<r.state.doc.length:o.from>0)for(let a=s;;){let l=r.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==n.ranges.length?!1:(r.dispatch(zn(t,Z.create(i,i.length-1))),!0)}var L2=r=>fw(r,!1),D2=r=>fw(r,!0),I2=({state:r,dispatch:e})=>{let t=r.selection,n=null;return t.ranges.length>1?n=Z.create([t.main]):t.main.empty||(n=Z.create([Z.cursor(t.main.head)])),n?(e(zn(r,n)),!0):!1};function kl(r,e){if(r.state.readOnly)return!1;let t="delete.selection",{state:n}=r,i=n.changeByRange(s=>{let{from:o,to:a}=s;if(o==a){let l=e(s);l<o?(t="delete.backward",l=qd(r,l,!1)):l>o&&(t="delete.forward",l=qd(r,l,!0)),o=Math.min(o,l),a=Math.max(a,l)}else o=qd(r,o,!1),a=qd(r,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:(r.dispatch(n.update(i,{scrollIntoView:!0,userEvent:t,effects:t=="delete.selection"?N.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function qd(r,e,t){if(r instanceof N)for(let n of r.state.facet(N.atomicRanges).map(i=>i(r)))n.between(e,e,(i,s)=>{i<e&&s>e&&(e=t?s:i)});return e}var pw=(r,e,t)=>kl(r,n=>{let i=n.from,{state:s}=r,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%ni(s)||ni(s);for(let h=0;h<d&&a[a.length-1-h]==" ";h++)i--;l=i}else l=xt(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=xt(o.text,l-o.from,!1,!1)+o.from);return l}),tO=r=>pw(r,!1,!0);var mw=r=>pw(r,!0,!1),Ow=(r,e)=>kl(r,t=>{let n=t.head,{state:i}=r,s=i.doc.lineAt(n),o=i.charCategorizer(n);for(let a=null;;){if(n==(e?s.to:s.from)){n==t.head&&s.number!=(e?i.doc.lines:1)&&(n+=e?1:-1);break}let l=xt(s.text,n-s.from,e)+s.from,c=s.text.slice(Math.min(n,l)-s.from,Math.max(n,l)-s.from),d=o(c);if(a!=null&&d!=a)break;(c!=" "||n!=t.head)&&(a=d),n=l}return n}),gw=r=>Ow(r,!1),Z2=r=>Ow(r,!0);var X2=r=>kl(r,e=>{let t=r.lineBlockAt(e.head).to;return e.head<t?t:Math.min(r.state.doc.length,e.head+1)});var z2=r=>kl(r,e=>{let t=r.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),W2=r=>kl(r,e=>{let t=r.moveToLineBoundary(e,!0).head;return e.head<t?t:Math.min(r.state.doc.length,e.head+1)});var B2=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=r.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:Le.of(["",""])},range:Z.cursor(n.from)}));return e(r.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},V2=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=r.changeByRange(n=>{if(!n.empty||n.from==0||n.from==r.doc.length)return{range:n};let i=n.from,s=r.doc.lineAt(i),o=i==s.from?i-1:xt(s.text,i-s.from,!1)+s.from,a=i==s.to?i+1:xt(s.text,i-s.from,!0)+s.from;return{changes:{from:o,to:a,insert:r.doc.slice(i,a).append(r.doc.slice(o,i))},range:Z.cursor(a)}});return t.changes.empty?!1:(e(r.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function th(r){let e=[],t=-1;for(let n of r.selection.ranges){let i=r.doc.lineAt(n.from),s=r.doc.lineAt(n.to);if(!n.empty&&n.to==s.from&&(s=r.doc.lineAt(n.to-1)),t>=i.number){let o=e[e.length-1];o.to=s.to,o.ranges.push(n)}else e.push({from:i.from,to:s.to,ranges:[n]});t=s.number+1}return e}function bw(r,e,t){if(r.readOnly)return!1;let n=[],i=[];for(let s of th(r)){if(t?s.to==r.doc.length:s.from==0)continue;let o=r.doc.lineAt(t?s.to+1:s.from-1),a=o.length+1;if(t){n.push({from:s.to,to:o.to},{from:s.from,insert:o.text+r.lineBreak});for(let l of s.ranges)i.push(Z.range(Math.min(r.doc.length,l.anchor+a),Math.min(r.doc.length,l.head+a)))}else{n.push({from:o.from,to:s.from},{from:s.to,insert:r.lineBreak+o.text});for(let l of s.ranges)i.push(Z.range(l.anchor-a,l.head-a))}}return n.length?(e(r.update({changes:n,scrollIntoView:!0,selection:Z.create(i,r.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Y2=({state:r,dispatch:e})=>bw(r,e,!1),F2=({state:r,dispatch:e})=>bw(r,e,!0);function yw(r,e,t){if(r.readOnly)return!1;let n=[];for(let s of th(r))t?n.push({from:s.from,insert:r.doc.slice(s.from,s.to)+r.lineBreak}):n.push({from:s.to,insert:r.lineBreak+r.doc.slice(s.from,s.to)});let i=r.changes(n);return e(r.update({changes:i,selection:r.selection.map(i,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var N2=({state:r,dispatch:e})=>yw(r,e,!1),j2=({state:r,dispatch:e})=>yw(r,e,!0),iO=r=>{if(r.state.readOnly)return!1;let{state:e}=r,t=e.changes(th(e).map(({from:i,to:s})=>(i>0?i--:s<e.doc.length&&s++,{from:i,to:s}))),n=Jo(e.selection,i=>{let s;if(r.lineWrapping){let o=r.lineBlockAt(i.head),a=r.coordsAtPos(i.head,i.assoc||1);a&&(s=o.bottom+r.documentTop-a.bottom+r.defaultLineHeight/2)}return r.moveVertically(i,!0,s)}).map(t);return r.dispatch({changes:t,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0},Sw=({state:r,dispatch:e})=>(e(r.update(r.replaceSelection(r.lineBreak),{scrollIntoView:!0,userEvent:"input"})),!0);function U2(r,e){if(/\(\)|\[\]|\{\}/.test(r.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=ze(r).resolveInner(e),n=t.childBefore(e),i=t.childAfter(e),s;return n&&i&&n.to<=e&&i.from>=e&&(s=n.type.prop(xe.closedBy))&&s.indexOf(i.name)>-1&&r.doc.lineAt(n.to).from==r.doc.lineAt(i.from).from&&!/\S/.test(r.sliceDoc(n.to,i.from))?{from:n.to,to:i.from}:null}var Bx=vw(!1),q2=vw(!0);function vw(r){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(i=>{let{from:s,to:o}=i,a=e.doc.lineAt(s),l=!r&&s==o&&U2(e,s);r&&(s=o=(o<=a.to?a:e.doc.lineAt(o)).to);let c=new Gs(e,{simulateBreak:s,simulateDoubleBreak:!!l}),d=Fd(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:Le.of(h)},range:Z.cursor(s+1+h[1].length)}});return t(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0}}function sO(r,e){let t=-1;return r.changeByRange(n=>{let i=[];for(let o=n.from;o<=n.to;){let a=r.doc.lineAt(o);a.number>t&&(n.empty||n.to>a.from)&&(e(a,i,n),t=a.number),o=a.to+1}let s=r.changes(i);return{changes:i,range:Z.range(s.mapPos(n.anchor,1),s.mapPos(n.head,1))}})}var G2=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=Object.create(null),n=new Gs(r,{overrideIndentation:s=>{let o=t[s];return o==null?-1:o}}),i=sO(r,(s,o,a)=>{let l=Fd(n,s.from);if(l==null)return;/\S/.test(s.text)||(l=0);let c=/^\s*/.exec(s.text)[0],d=qo(r,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(r.update(i,{userEvent:"indent"})),!0},rh=({state:r,dispatch:e})=>r.readOnly?!1:(e(r.update(sO(r,(t,n)=>{n.push({from:t.from,insert:r.facet(bn)})}),{userEvent:"input.indent"})),!0),nh=({state:r,dispatch:e})=>r.readOnly?!1:(e(r.update(sO(r,(t,n)=>{let i=/^\s*/.exec(t.text)[0];if(!i)return;let s=Gt(i,r.tabSize),o=0,a=qo(r,Math.max(0,s-ni(r)));for(;o<i.length&&o<a.length&&i.charCodeAt(o)==a.charCodeAt(o);)o++;n.push({from:t.from+o,to:t.from+i.length,insert:a.slice(o)})}),{userEvent:"delete.dedent"})),!0),H2=r=>(r.setTabFocusMode(),!0);var xw=({state:r,dispatch:e})=>r.selection.ranges.some(t=>!t.empty)?rh({state:r,dispatch:e}):(e(r.update(r.replaceSelection(" "),{scrollIntoView:!0,userEvent:"input"})),!0),K2=[{key:"Ctrl-b",run:Hx,shift:ow,preventDefault:!0},{key:"Ctrl-f",run:Kx,shift:aw},{key:"Ctrl-p",run:tw,shift:dw},{key:"Ctrl-n",run:rw,shift:hw},{key:"Ctrl-a",run:b2,shift:A2},{key:"Ctrl-e",run:y2,shift:C2},{key:"Ctrl-d",run:mw},{key:"Ctrl-h",run:tO},{key:"Ctrl-k",run:X2},{key:"Ctrl-Alt-h",run:gw},{key:"Ctrl-o",run:B2},{key:"Ctrl-t",run:V2},{key:"Ctrl-v",run:eO}],J2=[{key:"ArrowLeft",run:Hx,shift:ow,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:c2,shift:x2,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:O2,shift:T2,preventDefault:!0},{key:"ArrowRight",run:Kx,shift:aw,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:d2,shift:w2,preventDefault:!0},{mac:"Cmd-ArrowRight",run:g2,shift:_2,preventDefault:!0},{key:"ArrowUp",run:tw,shift:dw,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Zx,shift:zx},{mac:"Ctrl-ArrowUp",run:Lx,shift:Dx},{key:"ArrowDown",run:rw,shift:hw,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Xx,shift:Wx},{mac:"Ctrl-ArrowDown",run:eO,shift:Ix},{key:"PageUp",run:Lx,shift:Dx},{key:"PageDown",run:eO,shift:Ix},{key:"Home",run:m2,shift:Q2,preventDefault:!0},{key:"Mod-Home",run:Zx,shift:zx},{key:"End",run:p2,shift:$2,preventDefault:!0},{key:"Mod-End",run:Xx,shift:Wx},{key:"Enter",run:Bx,shift:Bx},{key:"Mod-a",run:E2},{key:"Backspace",run:tO,shift:tO,preventDefault:!0},{key:"Delete",run:mw,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:gw,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:Z2,preventDefault:!0},{mac:"Mod-Backspace",run:z2,preventDefault:!0},{mac:"Mod-Delete",run:W2,preventDefault:!0}].concat(K2.map(r=>({mac:r.key,run:r.run,shift:r.shift}))),ww=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:u2,shift:P2},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:f2,shift:k2},{key:"Alt-ArrowUp",run:Y2},{key:"Shift-Alt-ArrowUp",run:N2},{key:"Alt-ArrowDown",run:F2},{key:"Shift-Alt-ArrowDown",run:j2},{key:"Mod-Alt-ArrowUp",run:L2},{key:"Mod-Alt-ArrowDown",run:D2},{key:"Escape",run:I2},{key:"Mod-Enter",run:q2},{key:"Alt-l",mac:"Ctrl-l",run:R2},{key:"Mod-i",run:M2,preventDefault:!0},{key:"Mod-[",run:nh},{key:"Mod-]",run:rh},{key:"Mod-Alt-\\",run:G2},{key:"Shift-Mod-k",run:iO},{key:"Shift-Mod-\\",run:v2},{key:"Mod-/",run:jR},{key:"Alt-A",mac:"Ctrl-A",run:qR},{key:"Ctrl-m",mac:"Shift-Alt-m",run:H2}].concat(J2);function eM(r,e){let t=r.doc.lineAt(e),n=t.text.slice(0,e-t.from),i=Gt(n,r.tabSize),s=/^\s*$/.test(n)?ni(r):r.tabSize;return" ".repeat(s-i%s)}function Pw(r){let e=new Map,t=0,n=0,i=0;for(let a of r.split(`
`,2e3)){if(!a.trim())continue;if(a[0]==" "){t++;continue}let l=a.length-a.trimStart().length;l>0&&n++;let c=l-i;c>=2&&c<=8&&e.set(c,(e.get(c)||0)+1),i=l}if(t>n)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 tM(r){let e=r.state;return e.selection.ranges.some(t=>!t.empty)?rh(r):(r.dispatch(e.changeByRange(t=>{let n=eM(e,t.head);return{changes:{from:t.head,insert:n},range:Z.cursor(t.head+n.length)}}),{scrollIntoView:!0,userEvent:"input"}),!0)}function rM(r){for(let e=1;e<=r.doc.lines;e++)if(/^\d\d/.test(r.doc.line(e).text))return!0;return!1}var kw=[{key:"Enter",run:r=>rM(r.state)&&Sw(r)}],$w=[{key:"Tab",run:tM},{key:"Shift-Tab",run:nh}],Qw=[{key:"Tab",run:xw},{key:"Shift-Tab",run:nh}],$l=50,ih=8,nM=!0;function ea(r){nM&&console.log("[asm-tab] "+r)}function ta(r,e){let t=0;for(let n=0;n<e;n++)t=r.charCodeAt(n)==9?(Math.floor(t/ih)+1)*ih:t+1;return t}function oO(r,e){r>0&&e.set(r,(e.get(r)||0)+1)}function iM(r,e){let t=[],n=/\S+/g,i;for(;(i=n.exec(r))!==null&&r[i.index]!=";";)t.push(ta(r,i.index));let s=/(^|\s);/.exec(r);s&&oO(ta(r,s.index+s[1].length),e);let o=t.length&&t[0]==0?t.slice(1):t;o.length>=1&&oO(o[0],e),o.length>=2&&oO(o[1],e)}var sM=3;function Tw(r,e){let t=r.doc.lineAt(e),n=r.doc.lines,i=(a,l,c,d)=>{let h=0;for(let u=a;u!=l&&h<$l;u+=c){let f=r.doc.line(u);f.text.trim()&&(iM(f.text,d),h++)}return h},s=new Map;return i(t.number+1,Math.min(n,t.number+$l)+1,1,s)<sM&&i(t.number-1,Math.max(1,t.number-$l)-1,-1,s),s}function oM(r,e,t){let n=-1,i=0;for(let[s,o]of r)s>e&&(o>i||o==i&&s<n)&&(n=s,i=o);return n>=0?n:(Math.floor(e/t)+1)*t}function aM(r,e,t){let n=-1,i=0;for(let[s,o]of r)s<e&&(o>i||o==i&&s>n)&&(n=s,i=o);return n>=0?n:Math.max(0,Math.min(Math.floor((e-1)/t)*t,e-1))}function _w(r,e){let t=r.doc.lineAt(e),n=Math.max(1,t.number-$l),i=Math.min(r.doc.lines,t.number+$l);for(let s=n;s<=i;s++)if(r.doc.line(s).text.includes(" "))return!0;return!1}function Aw(r){return"["+[...r.entries()].sort((e,t)=>e[0]-t[0]).map(([e,t])=>`${e}:${t}`).join(" ")+"]"}function lM(r,e){let t=r.doc.lineAt(e),n=ta(t.text,e-t.from),i=_w(r,e),s=i?ih:r.tabSize,o=Tw(r,e),a=oM(o,n,s);return ea(`Tab @ line ${t.number} col ${n}: stops(col:freq)=${Aw(o)} ${i?"grid=8 (file has tabs)":`grid=${r.tabSize}`} -> target=${a} | line=${JSON.stringify(t.text.slice(0,n))}+CURSOR`),a<=n?null:{from:e,insert:" ".repeat(a-n)}}function cM(r,e){let t=r.doc.lineAt(e),n=e-t.from;if(n==0)return ea(`Backspace @ line ${t.number} col 0: start of line, using default`),null;if(t.text[n-1]==" ")return ea(`Backspace @ line ${t.number} col ${ta(t.text,n)}: deleting one tab char`),{from:e-1,to:e};if(!/^[ \t]+$/.test(t.text.slice(0,n)))return ea(`Backspace @ line ${t.number} col ${ta(t.text,n)}: cursor not in leading whitespace, using default`),null;let i=_w(r,e),s=i?ih:r.tabSize,o=ta(t.text,n),a=Tw(r,e),l=aM(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)=${Aw(a)} ${i?"grid=8 (file has tabs)":`grid=${r.tabSize}`} -> deleting cols ${l}..${o} | line=${JSON.stringify(t.text.slice(0,n))}+CURSOR`),{from:c,to:e}}function dM(r){let e=r.state;if(e.selection.ranges.some(n=>!n.empty))return!1;let t=e.changeByRange(n=>{let i=lM(e,n.head);return i?{changes:i,range:Z.cursor(n.head+i.insert.length)}:{range:n}});return r.dispatch(t),!0}function hM(r){let e=r.state,t=e.selection.main;if(!t.empty)return!1;let n=cM(e,t.head);return n?(r.dispatch(e.update({changes:n,selection:Z.cursor(n.from)})),!0):!1}function Cw(r){return[{key:"Tab",run:e=>r()&&dM(e)},{key:"Backspace",run:e=>r()&&hM(e)}]}var uM=new Bt,fM=new Bt,pM=new Bt,mM=new Bt,OM=new Bt,gM=new Bt,bM=new Bt,yM=new Bt,Rw="8bitworkshop/editorSettings",Ew={tabSize:8,tabsToSpaces:!0,highlightSpecialChars:!1,highlightWhitespace:!1,highlightTrailingWhitespace:!1,closeBrackets:!1,debugHighlightTags:!1,showLineNumbers:!1,showStatusBar:!0};function ra(){try{var r=localStorage.getItem(Rw);if(r)return gt(gt({},Ew),JSON.parse(r))}catch(e){}return gt({},Ew)}function SM(r){localStorage.setItem(Rw,JSON.stringify(r))}var Mw=[[mM,r=>[Me.tabSize.of(r.tabSize),bn.of(" ".repeat(r.tabSize))]],[gM,r=>Sr.of(r.tabsToSpaces?$w:Qw)],[uM,r=>r.highlightSpecialChars?xv():[]],[fM,r=>r.highlightWhitespace?Ev():[]],[pM,r=>r.highlightTrailingWhitespace?Rv():[]],[OM,r=>r.closeBrackets?[_x(),Sr.of([{key:"Backspace",run:Ex}])]:[]],[bM,r=>r.debugHighlightTags?Mx:[]],[yM,r=>r.showLineNumbers?Ad():[]]];function Lw(r){return Mw.map(([e,t])=>e.of(t(r)))}var Dw=new Set;function Iw(r){Dw.add(r)}function vM(r){var e=Mw.map(([n,i])=>n.reconfigure(i(r)));for(var t of Dw)t.dispatch({effects:e})}function Zw(){var r=ra(),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="${r.tabSize}" style="width:4em"></label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_tabsToSpaces" ${r.tabsToSpaces?"checked":""}> Insert spaces when pressing TAB</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightSpecialChars" ${r.highlightSpecialChars?"checked":""}> Highlight special characters</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightWhitespace" ${r.highlightWhitespace?"checked":""}> Highlight whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightTrailingWhitespace" ${r.highlightTrailingWhitespace?"checked":""}> Highlight unwanted trailing whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showLineNumbers" ${r.showLineNumbers?"checked":""}> Show line numbers</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_closeBrackets" ${r.closeBrackets?"checked":""}> Automatically add and remove closing brackets</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showStatusBar" ${r.showStatusBar?"checked":""}> Show keyboard shortcuts / status bar</label></div>
${e?`
<hr>
<h5>Internal</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${r.debugHighlightTags?"checked":""}> Debug editor syntax highlighting tags</label></div>
`:""}
</form>`,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{r.tabSize=parseInt($("#setting_tabSize").val())||8,r.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),r.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),r.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),r.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),r.closeBrackets=$("#setting_closeBrackets").is(":checked"),r.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(r.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),r.showStatusBar=$("#setting_showStatusBar").is(":checked"),SM(r),vM(r),kc(r.showStatusBar)}}}})}function sh(){return typeof navigator!="undefined"?navigator.storage:null}function xM(r){var e=r!==void 0?r:sh();return!!(e&&typeof e.persist=="function")}async function wM(r){var e=r!==void 0?r:sh();try{if(e&&typeof e.estimate=="function"){var t=await e.estimate();return{usage:t&&t.usage,quota:t&&t.quota}}}catch(n){console.log("storage.estimate() failed",n)}return{}}async function PM(r){var e=r!==void 0?r:sh(),t={supported:xM(e),persisted:!1};try{e&&typeof e.persisted=="function"&&(t.persisted=await e.persisted())}catch(i){console.log("storage.persisted() failed",i)}var n=await wM(e);return t.usage=n.usage,t.quota=n.quota,t}async function lO(r){var e=r!==void 0?r:sh(),t=await PM(e);if(!t.supported||t.persisted)return t.granted=!1,t;try{t.persisted=await e.persist(),t.granted=t.persisted}catch(n){console.log("storage.persist() failed",n),t.granted=!1}return t}function kM(r){return r==null&&(r=typeof navigator!="undefined"?navigator.userAgent:""),r?/Edg\/|OPR\/|Chrome\/|Chromium\//.test(r)?"chromium":/Firefox\/|FxiOS\//.test(r)?"firefox":/Safari\//.test(r)?"safari":"other":"other"}function Xw(r){if(typeof r!="number"||!isFinite(r))return"?";for(var e=["bytes","KB","MB","GB","TB"],t=0;r>=1024&&t<e.length-1;)r/=1024,t++;return(t==0?r.toFixed(0):r.toFixed(1))+" "+e[t]}function zw(r){return r.usage==null&&r.quota==null?"":"This site is using "+Xw(r.usage)+" of the "+Xw(r.quota)+" your browser allows."}var aO="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 Ww(r){switch(r||kM()){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 $M(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+aO}function Bw(r,e){var t=zw(r),n;return r.supported?r.persisted?n=(r.granted?"Your browser just granted persistent storage. ":"Your browser is already persisting your local file edits. ")+aO:n="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+Ww()+"<br><br>"+aO:n=$M(),t?n+"<br><br>"+t:n}function Vw(r){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+zw(r)+" Delete unused projects, or use <b>File &gt; Download All Changes as ZIP</b> to back up your work before it is lost."+(r.supported&&!r.persisted?"<br><br>"+Ww():"")}var Jw=Hu(af());var na=class{constructor(e,t){e=e||[],this.lines=e,this.text=t,this.offset2loc=new Map,this.line2offset=new Map;for(var n of e)n.offset>=0&&(this.offset2loc.has(n.offset)||this.offset2loc.set(n.offset,n),this.line2offset.has(n.line)||this.line2offset.set(n.line,n.offset));this.sortedOffsets=Array.from(this.offset2loc.keys()).sort((i,s)=>i-s)}findLineForOffset(e,t){let n=this.sortedOffsets;for(var i=0,s=n.length-1,o=-1;i<=s;){var a=i+s>>1;n[a]<=e?(o=a,i=a+1):s=a-1}if(o<0)return null;var l=n[o];return e-l>t?null:this.offset2loc.get(l)}lineCount(){return this.lines.length}};function Yw(r){return"errors"in r}function Fw(r){return"output"in r}function ia(r,e){if(e){var t=La(e);t!=""&&r.startsWith(t+"/")&&(r=r.substring(t.length+1))}return r}function QM(r,e){var t=La(e);return t.length>0&&t!="local"?[t+"/"+r,r]:[r]}function TM(r,e,t,n){var i=s=>ny(r,s).map(o=>QM(o,e));return{includes:i(Tc(t,n)),links:i(_c(t,n))}}async function jw(r,e,t,n,i){for(var s=[],o=new Set([ia(e,e)]),a=[{path:e,text:t,tool:i(e)}];a.length;){var{path:l,text:c,tool:d}=a.shift(),h=TM(c,l,d,n),u=h.includes.map(L=>({candidates:L,link:!1})).concat(h.links.map(L=>({candidates:L,link:!0})));for(var{candidates:f,link:m}of u)for(var g of f){var v=ia(g,e);if(o.has(v))break;var k=await r.readFile(g);if(k!=null){o.add(v),s.push({path:g,filename:v,link:m,data:k}),typeof k=="string"&&a.push({path:g,text:k,tool:m?i(g):d});break}}}return s}function Uw(r,e){var t={updates:[],buildsteps:[]},n={},i=[],s=g=>{g&&i.indexOf(g)<0&&i.push(g)},o=ia(r.mainPath,r.mainPath);t.updates.push({path:o,data:r.mainData}),n[o]=r.mainPath;var a=r.getToolForFilename(r.mainPath);s(a);var l=a.startsWith("remote:"),c=ry(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)),n[u.filename]=u.path;var f={path:o,files:[o].concat(d),platform:r.platformId,tool:a,mainfile:!0};if(h.length&&(f.linkfiles=h),r.symbols&&(f.symbols=r.symbols),r.buildArgs&&(f.buildArgs=r.buildArgs),t.buildsteps.push(f),!l&&!c){for(var u of e)if(u.data&&u.link){var m=r.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:r.platformId,tool:m})}}return r.dataItems&&(t.setitems=r.dataItems),{msg:t,filename2path:n,preloads:i}}function qw(r){if(r)for(var e in r){var t=r[e];if(t.lines){t.sourcefile=new na(t.lines,t.text);var n={};for(var i of t.lines){var s=i.path||"";(n[s]||(n[s]=[])).push(i)}var o=Object.keys(n);if(o.length>1||o.length==1&&o[0]!=""){t.sourcefiles={};for(var s of o)t.sourcefiles[s]=new na(n[s],t.text)}}t.asmlines&&(t.assemblyfile=new na(t.asmlines,t.text))}}function Gw(r,e){if(!r||!r.sourcefiles)return null;var t=St(zt(e));for(var n in r.sourcefiles)if(St(zt(n))==t)return r.sourcefiles[n];return null}function Nw(r,e){var t=Gw(r,e);return t?Object.assign({},r,{sourcefile:t}):r}function Hw(r,e,t){if(r){var n=ia(e,t),i=zt(n);for(var s in r)if(s==e||s==n)return Nw(r[s],n);for(var s in r)if(zt(s)==i)return Nw(r[s],n);for(var s in r){var o=Gw(r[s],n);if(o)return Object.assign({},r[s],{sourcefile:o})}}}function Kw(r,e){var t=r||[];return t.forEach(n=>n.source="native"),e&&(e.forEach(n=>n.source="linker"),t=t.concat(e)),t.sort((n,i)=>n.start-i.start),t}var oh=class{constructor(e){this.preset_id=sr(e)}async getRemoteFile(e){return new Promise((t,n)=>Da(e,t,Cs(e)?"arraybuffer":"text"))}async getFileData(e){var t="presets/"+this.preset_id+"/"+e,n=await this.getRemoteFile(t);return n&&console.log("read",t,n.length,"bytes"),n}async setFileData(e,t){}onFileSystemUpdate(e){}};var sa=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)}},ah=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 lh=class{constructor(e,t,n,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,n;return(n=(t=(await this.loadFiles([e]))[0])==null?void 0:t.data)!=null?n:null}};this.worker=e,this.platform_id=t,this.platform=n,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 n=this.pendingWorkerMessages>1;n?(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&&Fw(e)?this.processBuildResult(e):Yw(e)&&this.processBuildListings(e),this.callbackBuildResult(e)}queryWorker(e){return new Promise(t=>{var n=++this.queryCounter;this.pendingQueries[n]=s=>{clearTimeout(i),t(s)};var i=setTimeout(()=>{delete this.pendingQueries[n],t(null)},15e3);e.qid=n,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 jw(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:n,preloads:i}=Uw({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,n);for(var s of i)this.preloadTool(s);return t}async loadFiles(e){var t=[],n=(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&&n(i,s)}else{var s=await this.filesystem.getFileData(i);s?(this.filedata[i]=s,n(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(n=>{n||(n=[]);var i=this.buildWorkerMessage(n);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,qw(this.listings))}processBuildResult(e){this.processBuildListings(e),this.processBuildSegments(e)}processBuildSegments(e){var t=this.platform.getMemoryMap&&this.platform.getMemoryMap().main;this.segments=Kw(t,e.segments)}getListings(){return this.listings}getListingForFile(e){return Hw(this.getListings(),e,this.mainPath)}stripLocalPath(e){return ia(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 ch(r){var e=Jw.default.createInstance({name:"__"+r,version:2});return e}var _M=`$NAME
=====
[Open this project in 8bitworkshop](http://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE).
`;function Js(){for(var r={},e=0;e<localStorage.length;e++){var t=localStorage.key(e);if(t.startsWith("__repo__")){var n=JSON.parse(localStorage.getItem(t)),i=t.substring(8);r[i]=n}}return r}function Ql(r){var e=r.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 dh=class{constructor(e,t,n,i){this.githubCons=e,this.githubToken=t,this.store=n,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,n)=>{t()});var e=new firebase.auth.GithubAuthProvider;return e.addScope("repo"),firebase.auth().signInWithPopup(e).then(t=>{this.githubToken=t.credential.accessToken;var n=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 n=Js()[t.repopath],i=t.branch||n&&n.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:n?n.platform_id:null};return o}getGithubHEADTree(e){var t;return this.getGithubSession(e).then(n=>(t=n,t.repo.git.refs.heads(t.branch).fetch())).then(n=>(t.head=n,t.sha=n.object.sha,t.repo.git.trees(t.sha).fetch())).then(n=>{if(t.subtreepath){for(let i of n.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 "+n.sha)}return n}).then(n=>(t.tree=n,t))}bind(e,t){var n="__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(n,JSON.stringify(i))}else localStorage.removeItem(n)}import(e){var t;return this.getGithubSession(e).then(n=>(t=n,t.repo.contents("README.md").read())).catch(n=>(console.log(n),console.log("no README.md found"),t.repo.fetch().then(i=>""))).then(n=>{var i;if(i=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(n),i&&i[1]&&(console.log("main path: '"+i[1]+"'"),t.mainPath=i[1]),i=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(n),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 n;return this.getGithubHEADTree(e).then(i=>{n=i;let s=[];return n.paths=[],n.tree.tree.forEach(o=>{if(console.log(o.path,o.type,o.size),n.paths.push(o.path),o.type=="blob"&&!this.isFileIgnored(o.path)){var a=n.repo.git.blobs(o.sha).fetch().then(l=>{var c=n.prefix+o.path,d=o.size,h=l.encoding,u=l.content;if(l.encoding=="base64"){var f=Oc(atob(u)),m=Cs(o.path,f);u=m?f:bc(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=>n)}importAndPull(e){return this.import(e).then(t=>this.pull(e))}publish(e,t,n,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:n}).then(l=>{s=l;var c=_M;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,n){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(n.map(o=>typeof o.data=="string"?i.repo.git.blobs.create({content:o.data,encoding:"utf-8"}):i.repo.git.blobs.create({content:btoa(gc(o.data)),encoding:"base64"})))}).then(s=>i.repo.git.trees.create({tree:n.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 hh=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 n=eo.CLOCK_RATE*e;this.tapData.push(0),this.tapData.push(n&255),this.tapData.push(n>>8&255),this.tapData.push(n>>16&255)}addCycle(e){this.tapData.push(e);let t=Math.floor(this.sampleRate*eo.TAP_LENGTH_IN_SECONDS*e);for(let n=0;n<t;n++){let i;this.options.sine_wave?i=-Math.sin(n/t*2*Math.PI):n<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}},De=class De{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=De.FILE_TYPE_NONE,this.waveFile=null}makeFilename(e){let t=[];e=e.toUpperCase();for(let i=0;i<De.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(De.SHORT_PULSE),this.addTapCycle(De.MEDIUM_PULSE)):(this.addTapCycle(De.MEDIUM_PULSE),this.addTapCycle(De.SHORT_PULSE))}addDataMarker(e){e?(this.addTapCycle(De.LONG_PULSE),this.addTapCycle(De.MEDIUM_PULSE)):(this.addTapCycle(De.LONG_PULSE),this.addTapCycle(De.SHORT_PULSE))}resetChecksum(){this.checksum=0}addByteFrame(e,t){let n=1;for(let i=0;i<8;i++){let s=(e&1<<i)!==0?1:0;this.addBit(s),n^=s}this.addBit(n),this.addDataMarker(t),this.checksum^=e}addLeader(e){let t;e===De.LEADER_TYPE_HEADER?t=27136:e===De.LEADER_TYPE_CONTENT?t=6656:t=79;for(let n=0;n<t;n++)this.addTapCycle(De.SHORT_PULSE)}addSyncChain(e){let t;e?t=9:t=137;let n=9;for(;n>0;)this.addByteFrame(t,!0),t-=1,n-=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(De.LEADER_TYPE_REPEATED):this.addLeader(De.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<De.NUMBER_OF_PADDING_BYTES;t++)this.addByteFrame(De.PADDING_CHARACTER,!0);this.addByteFrame(this.checksum,!1)}addFile(){let e=!1;for(let t=0;t<2;t++)e?this.addLeader(De.LEADER_TYPE_REPEATED):this.addLeader(De.LEADER_TYPE_CONTENT),this.addDataMarker(!0),this.addSyncChain(e),this.resetChecksum(),this.addData(),this.addByteFrame(this.checksum,!1),e=!0;this.addLeader(1)}};De.CLOCK_RATE=985248,De.TAP_LENGTH_IN_SECONDS=8/De.CLOCK_RATE,De.FILENAME_BUFFER_SIZE=16,De.FILE_TYPE_NONE=0,De.FILE_TYPE_RELOCATABLE=1,De.FILE_TYPE_SEQUENTIAL=2,De.FILE_TYPE_NON_RELOCATABLE=3,De.LEADER_TYPE_HEADER=0,De.LEADER_TYPE_CONTENT=1,De.LEADER_TYPE_REPEATED=2,De.NUMBER_OF_PADDING_BYTES=171,De.PADDING_CHARACTER=32,De.SHORT_PULSE=48,De.MEDIUM_PULSE=66,De.LONG_PULSE=86;var eo=De;var ii=Hu(s_());function eP(r){return xr()==null?(Re("Please fix errors before sharing."),!0):xr()instanceof Uint8Array?(AM(),dn("lib/liblzg.js").then(()=>{var e=i0(window.Module,Array.from(xr()));window.Module=null;var t=btoa(gc(e)),n={p:fe,r:t},i=$.param(n),s=CM(i,"player.html"),o='<iframe width=640 height=600 src="'+s+'">';$("#embedLinkTextarea").text(s),$("#embedIframeTextarea").text(o),$("#embedLinkModal").modal("show"),$("#embedAdviceWarnAll").hide(),$("#embedAdviceWarnIE").hide(),s.length>=65536?$("#embedAdviceWarnAll").show():s.length>=5120&&$("#embedAdviceWarnIE").show()}),!0):(Re("Can't share a Verilog executable yet. (It's not actually a ROM...)"),!0)}function AM(){console.log("clipboard"),import("./clipboard-DZNV6N6T.js").then(r=>{let e=r.default;new e(".btn")})}function CM(r,e){console.log(r);var t=window.location,n=t.pathname.replace("index.html",""),i=t.host=="8bitworkshop.com"?"https:":t.protocol,s=i+"//"+t.host+n+e+"?"+r;return s}function EM(r){var t;var e=(t=Tl())==null?void 0:t.code_start;dn("lib/c2t.js").then(()=>{var n="",i=function(u){n+=u+`
`},s=window.c2t({noInitialRun:!0,print:i,printErr:i}),o=s.FS,a=kt()+".bin",l=kt()+".wav";o.writeFile(a,xr(),{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,ii.saveAs)(h,l),n+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",ar(n)}})}function RM(r){dn("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var n=zt(kt());let i=n+".bin",s=n+".wav";window.makewav({noInitialRun:!1,print:t,printErr:t,arguments:["-ts","-f0","-v10",i],preRun:a=>{a.FS.writeFile(i,xr(),{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,ii.saveAs)(h,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,ar(e)}})})}function MM(r){var e=zt(kt());let t=e+".tap",n=new eo(e),i=new hh({sine_wave:!0}),s=xr(),o=s[0]+s[1]*256;s=s.slice(2),n.setContent({data:s,startAddress:o,type:eo.FILE_TYPE_NON_RELOCATABLE}),n.generateSound(i);let a=i.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,ii.saveAs)(l,t)}}function dO(){switch(sr(fe)){case"vcs":return RM;case"apple2":return EM;case"c64":return MM}}function tP(r){if(xr()==null)return Re("Please fix errors before exporting."),!0;var e=dO();if(e===void 0)return Re("Cassette export is not supported on this platform."),!0;e(r)}function rP(r){if(xr()==null)return Re("Please finish compiling with no errors before downloading ROM."),!0;var e=zt(kt());if(P.getDownloadFile){var t=P.getDownloadFile(),e=zt(kt());(0,ii.saveAs)(t.blob,e+t.extension)}else if(xr()instanceof Uint8Array){var n=new Blob([xr()],{type:"application/octet-stream"}),i=P.getROMExtension&&P.getROMExtension(xr())||"-"+sr(fe)+".bin";(0,ii.saveAs)(n,e+i)}else Re(`The "${fe}" platform doesn't have downloadable ROMs.`)}function nP(r){var e=F.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,ii.saveAs)(t,cP(),{autoBom:!1})}async function iP(){let r=(await import("./jszip.min-EENSZHRN.js")).default;return new r}async function sP(r){var e=await iP();Ci().iterateFiles((t,n)=>{n&&e.file(St(t),n)}),e.generateAsync({type:"blob"}).then(t=>{(0,ii.saveAs)(t,kt()+"-"+sr(fe)+".zip")})}function oP(r){let e=P.getDebugSymbolFile&&P.getDebugSymbolFile();if(!e){Re("This project does not have debug information.");return}var t=zt(kt());(0,ii.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function aP(r){var e=await iP(),t=await ss().keys();st(!0);try{var n=0;await Promise.all(t.map(s=>ss().getItem(s).then(o=>{En(n++/(t.length+1)),o&&e.file(s,o)})));var i=await e.generateAsync({type:"blob"});(0,ii.saveAs)(i,sr(fe)+"-all.zip")}finally{st(!1)}}var cO=!1;function lP(){cO||dn("lib/gif.js").then(()=>{var r=$("#emulator").find("canvas")[0];if(!r){Re("Could not find canvas element to record video!");return}var e=0;r.style&&r.style.transform&&(r.style.transform.indexOf("rotate(-90deg)")>=0?e=-1:r.style.transform.indexOf("rotate(90deg)")>=0&&(e=1));var t=new GIF({workerScript:"lib/gif.worker.js",workers:4,quality:10,rotate:e}),n=$("#videoPreviewImage");t.on("progress",l=>{En(l)}),t.on("finished",l=>{n.attr("src",URL.createObjectURL(l)),st(!1),P.resume(),$("#videoPreviewModal").modal("show")});var i=20,s=300,o=0;console.log("Recording video",r),$("#emulator").css("backgroundColor","#cc3333");var a=()=>{o++>s?(console.log("Rendering video"),$("#emulator").css("backgroundColor","inherit"),st(!0),P.pause(),t.render(),cO=!1):(t.addFrame(r,{delay:i,copy:!0}),setTimeout(a,i),cO=!0)};a()})}var hO;async function to(){if(!hO){await dn("lib/octokat.js"),await dn("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await dn("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await dn("https://8bitworkshop.com/config.js");var r=yc("__github_key");hO=new dh(Octokat,r,ss(),Ci()),console.log("loaded github service")}return hO}function _l(){var r=(_t||"").split("/");return r.length!=2?(Re("You are not in a GitHub repository. Choose one from the pulldown, or Import or Publish one."),null):"https://github.com/"+r[0]+"/"+r[1]}async function Al(r,e){var t,n=Ql(r);if(!n){Re("Could not parse GitHub URL.");return}var i=Js()[n.repopath];if(!(i&&!confirm("You've already imported "+n.repopath+" -- do you want to replace all local files?"))){st(!0);var s=ch(n.repopath);En(.25);var o=await to();return o.import(r).then(a=>(t=a,En(.75),o.pull(r,s))).then(a=>{st(!1),ro(e,{repo:n.repopath})}).catch(a=>{st(!1),console.log(a),Re("Could not import "+r+". "+a)})}}async function dP(r){var e=await to();e.login().then(()=>{ar("You are signed in to GitHub.")}).catch(t=>{Re("Could not sign in."+t)})}async function hP(r){var e=await to();e.logout().then(()=>{ar("You are logged out of GitHub.")})}function uP(r){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",n=>{n.key==="Enter"&&(n.preventDefault(),t.trigger("click"))}),t.off("click").on("click",()=>{var n=$("#importGithubURL").val()+"";e.modal("hide"),Al(n,!1)})}function fP(r){if(!(_t&&!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(St(Ci().mainPath))),e.modal("show"),t.off("click").on("click",async()=>{var n=$("#githubRepoName").val()+"",i=$("#githubRepoDesc").val()+"",s=$("#githubRepoPrivate").val()=="private",o=$("#githubRepoLicense").val()+"",a;if(!n){Re("You did not enter a project name.");return}e.modal("hide"),st(!0);var l=await to();l.login().then(()=>(En(.25),l.publish(n,i,o,s))).then(c=>(a=c,En(.5),OP("initial import from 8bitworkshop.com"))).then(()=>{Al(a.url,!1)}).catch(c=>{st(!1),console.log(c),Re("Could not publish GitHub repository: "+c)})})}}function pP(r){var e=_l();if(e){var t=$("#pushGithubModal"),n=$("#pushGithubButton");t.modal("show"),n.off("click").on("click",()=>{var i=$("#githubCommitMsg").val()+"";t.modal("hide"),OP(i)})}}function mP(r){var e=_l();e&&bootbox.confirm("Pull from repository and replace all local files? Any changes you've made will be overwritten.",async t=>{if(t){st(!0);var n=await to();n.pull(e).then(i=>{st(!1),F.updateAllOpenWindows(ss())})}})}function LM(r){return new Promise((e,t)=>{var n=r.commit.files;if(console.log(n),n.length==0){st(!1),ar("No files changed.");return}var i="";for(var s of n)i+=Yi.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(r):st(!1)})})}async function OP(r){var e=_l();if(e){var t=[];for(var n in Ci().filedata){var i=Ci().stripLocalPath(n),s=Ci().filedata[n];i&&s&&t.push({path:i,data:s})}if(xr()instanceof Uint8Array){let a="bin/"+kt()+".rom";t.push({path:a,data:xr()})}st(!0);var o=await to();return o.login().then(()=>(En(.5),o.commit(e,r,t))).then(a=>LM(a)).then(a=>o.push(a)).then(a=>(st(!1),ar("Pushed files to "+e),a)).catch(a=>{st(!1),console.log(a),Re("Could not push GitHub repository: "+a)})}}function gP(){var r=_l();r&&bootbox.prompt("<p>Are you sure you want to delete this repository ("+Yi.sanitize(r)+") 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"&&DM()})}async function DM(){var r=_l();st(!0);let e=await to(),t=await e.getGithubSession(r);e.bind(t,!1),await ss().keys().then(n=>Promise.all(n.map(i=>ss().removeItem(i)))),st(!1),ro(!1,{repo:"/"})}var bP={project:1.3,toolchain:1,docs:.7,debugger:.9},yP={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},IM=4,ZM=1e3;function uO(r){if(r){if(typeof r=="function")return r;if(typeof r.default=="function")return r.default;if(typeof r.MiniSearch=="function")return r.MiniSearch;if(typeof r.uFuzzy=="function")return r.uFuzzy}}var oa=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(n=>n.length>0)}}async init(){let e=await import("./uFuzzy-K7J24OJ4.js"),t=uO(e);t&&(this.uf=new t(this.ufOptions));let n=await import("./es-CJMK4PHF.js"),i=uO(n);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-CJMK4PHF.js"),n=uO(t);n&&(this.ms=new n(this.msOptions),this.ms.loadJS(e))}query(e,t){var o,a;if(this.records.length===0||!e)return[];let n=[];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],g=this.records[m];if(!g)continue;let k=this.baseScore(e,c,f)*bP[g.source]*((o=yP[g.kind])!=null?o:1);n.push({record:g,score:k,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>=IM||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&&!n.some(h=>h.record.id===d.id)&&n.push({record:d,score:(c.score||0)*bP[d.source]*yP[c.kind]*1e3})}}catch(l){console.debug("MiniSearch error:",l)}n.sort((l,c)=>c.score-l.score);let i=new Set;return n.filter(l=>i.has(l.record.id)?!1:(i.add(l.record.id),!0)).slice(0,t)}baseScore(e,t,n){var m,g,v,k,L,M,D,w,x,R,X,j;let i=(g=(m=t.chars)==null?void 0:m[n])!=null?g:0,s=(k=(v=t.interIns)==null?void 0:v[n])!=null?k:0,o=(M=(L=t.intraIns)==null?void 0:L[n])!=null?M:0,a=(w=(D=t.start)==null?void 0:D[n])!=null?w:0,l=(R=(x=t.interLft2)==null?void 0:x[n])!=null?R:0,c=(j=(X=t.interRgt2)==null?void 0:X[n])!=null?j:0,d=i>=e.length,h=o===0&&s===0,u=a===0,f=ZM;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 fO(r,e,t,n){let i=[],s=r.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:n,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:n,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:n,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:n,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:n,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:n,file:e,line:l})}return i}var SP=()=>null;function vP(r){SP=r}function aa(){return SP()}var uh=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new oa([])}async ready(){await this.index.init(),this.rebuilt||(this.rebuilt=!0,await this.rebuild())}query(e,t){let n=this.index.query(e,t),i=this.fulltextQuery(e,t),s=n.concat(i);return s.sort((o,a)=>a.score-o.score),s.slice(0,t)}fulltextQuery(e,t){if(e.length<2)return[];let n=e.toLowerCase(),i=[],s=Math.max(t,10),o=aa();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(n);if(m>=0){let g=u.trim();if(!g)continue;if(i.push({record:{id:`text:${a}:${h+1}`,name:g.length>80?g.slice(0,80)+"\u2026":g,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 n=this.extractSymbolsFromFile(e,t,"project");this.index.pushRecords(n)}extractSymbolsFromFile(e,t,n){if(typeof t!="string")return[];let i=this.detectEditorStyle(e);return fO(t,e,i,n)}detectEditorStyle(e){var n;switch((n=e.split(".").pop())==null?void 0:n.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=aa();if(!e)return;let t=[];e.iterateFiles((n,i)=>{if(typeof i!="string")return;let s=this.detectEditorStyle(n),o=fO(i,n,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var XM=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),zM=20,fh=class{constructor(){this.id="toolchain";this.kind="toolchain";this.fsName=null;this.files=[];this.loaded=new Map;this.readyPromise=null;this.batchSize=zM}async ready(){return this.readyPromise||(this.readyPromise=this.load()),this.readyPromise}async load(){let e=aa();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let n=Cc(t,e.platform_id),i=Ac(t,e.platform_id);if(!n||!i.length)return;this.fsName=n;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=aa();if(!t||!this.fsName||!t.queryWorker)return[];try{let n={preload_fs:this.fsName,listshared:e,updates:[],buildsteps:[]},i=await t.queryWorker(n),s=i&&i.output;return Array.isArray(s)?s:[]}catch(n){return console.debug("Toolchain list error:",n),[]}}async readFile(e){let t=aa();if(!t||!this.fsName||!t.queryWorker)return null;try{let n={preload_fs:this.fsName,readshared:e,updates:[],buildsteps:[]},i=await t.queryWorker(n),s=i&&i.output;return s instanceof Uint8Array&&s.length>0?new TextDecoder().decode(s):null}catch(n){return console.debug("Toolchain read error:",n),null}}isSearchable(e){let t=e.split("/").pop()||e,n=t.lastIndexOf(".");return n<0?!0:XM.has(t.substring(n+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 n=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(n);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 xP=()=>[];function wP(r){xP=r}var WM=/<h([1-3])\b[^>]*>([\s\S]*?)<\/h\1>/gi;function BM(r){return r.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 pO(r){return BM(r.replace(/<[^>]+>/g," ")).replace(/\s+/g," ").trim()}function VM(r,e=180){let t=r.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 YM(r){let e=[],t="#help/"+r.id,n=r.title||r.id,i=r.html||"",s=[],o=new RegExp(WM.source,"gi"),a;for(;a=o.exec(i);)s.push({name:pO(a[2]),start:a.index,end:o.lastIndex});let l=(u,f,m)=>{if(!f)return;let g=VM(m),v=g&&m.startsWith(g)?m.slice(g.length).trim():m;e.push({id:`${r.id}:${u}`,name:f,kind:"doc",brief:g,detail:v||void 0,source:"docs",file:n,url:t})},c=s.length?s[0].start:i.length,d=pO(i.slice(0,c)),h=s.length&&s[0].start===0?s[0].name||r.title:r.title||r.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,pO(i.slice(s[u].end,f)))}return e}var ph=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=xP()||[];if(e.length===0)return;let t=[];for(let i of e)t.push(...YM(i));if(t.length===0)return;let n=new oa(t);await n.init(),this.index=n}async query(e,t){return await this.ready(),this.index?this.index.query(e,t):[]}};var FM=50,mO=class r{constructor(){this.sources=new Map;this.projectSource=new uh,this.toolchainSource=new fh,this.docsSource=new ph,this.sources.set("project",this.projectSource),this.sources.set("toolchain",this.toolchainSource),this.sources.set("docs",this.docsSource)}static getInstance(){return r.instance||(r.instance=new r),r.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=FM){let{needle:n,filter:i}=this.parseQuery(e);if(!n)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(n,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)}},PP=mO.getInstance();var kP=typeof String.prototype.normalize=="function"?r=>r.normalize("NFKD"):r=>r,as=class{constructor(e,t,n=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(n,i),this.bufferStart=n,this.normalize=s?a=>s(kP(a)):kP,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 Mn(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=Bc(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=ji(e);let i=this.normalize(t);if(i.length)for(let s=0,o=n,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,n,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:n&&s}:this.matches.push({from:t,index:1,precise:n})),o&&this.test&&!this.test(o.from,o.to,this.buffer,this.bufferStart)&&(o=null),o}};typeof Symbol!="undefined"&&(as.prototype[Symbol.iterator]=function(){return this});var TP={from:-1,to:-1,match:/.*/.exec(""),precise:!0},xO="gm"+(/x/.unicode==null?"":"u"),gh=class{constructor(e,t,n,i=0,s=e.length){if(this.text=e,this.to=s,this.curLine="",this.done=!1,this.value=TP,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new yh(e,t,n,i,s);this.re=new RegExp(t,xO+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.iter=e.iter();let o=e.lineAt(i);this.curLineStart=o.from,this.matchPos=Sh(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 n=this.curLineStart+t.index,i=n+t[0].length;if(this.matchPos=Sh(this.text,i+(n==i?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(n<i||n>this.value.to)&&(!this.test||this.test(n,i,t)))return this.value={from:n,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}}},OO=new WeakMap,bh=class r{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,n){let i=OO.get(e);if(!i||i.from>=n||i.to<=t){let a=new r(t,e.sliceString(t,n));return OO.set(e,a),a}if(i.from==t&&i.to==n)return i;let{text:s,from:o}=i;return o>t&&(s=e.sliceString(t,o)+s,o=t),i.to<n&&(s+=e.sliceString(i.to,n)),OO.set(e,new r(o,s)),new r(t,s.slice(t-o,n-o))}},yh=class{constructor(e,t,n,i,s){this.text=e,this.to=s,this.done=!1,this.value=TP,this.matchPos=Sh(e,i),this.re=new RegExp(t,xO+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.flat=bh.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 n=this.flat.from+t.index,i=n+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,i,t)))return this.value={from:n,to:i,precise:!0,match:t},this.matchPos=Sh(this.text,i+(n==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=bh.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}};typeof Symbol!="undefined"&&(gh.prototype[Symbol.iterator]=yh.prototype[Symbol.iterator]=function(){return this});function NM(r){try{return new RegExp(r,xO),!0}catch(e){return!1}}function Sh(r,e){if(e>=r.length)return e;let t=r.lineAt(e),n;for(;e<t.to&&(n=t.text.charCodeAt(e-t.from))>=56320&&n<57344;)e++;return e}var jM=r=>{let{state:e}=r,t=String(e.doc.lineAt(r.state.selection.main.head).number),{close:n,result:i}=$v(r,{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){r.dispatch({effects:n});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 v=f/100;l&&(v=v*(l=="-"?-1:1)+a.number/e.doc.lines),f=Math.round(e.doc.lines*v)}else c&&l&&(f=f*(l=="-"?-1:1)+a.number);let m=e.doc.line(Math.max(1,Math.min(e.doc.lines,f))),g=Z.cursor(m.from+Math.max(0,Math.min(u,m.length)));r.dispatch({effects:[n,N.scrollIntoView(g.from,{y:"center"})],selection:g})}),!0},UM={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},_P=le.define({combine(r){return Nr(r,UM,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})}});function $h(r){let e=[JM,KM];return r&&e.push(_P.of(r)),e}var qM=ee.mark({class:"cm-selectionMatch"}),GM=ee.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function $P(r,e,t,n){return(t==0||r(e.sliceDoc(t-1,t))!=rt.Word)&&(n==e.doc.length||r(e.sliceDoc(n,n+1))!=rt.Word)}function HM(r,e,t,n){return r(e.sliceDoc(t,t+1))==rt.Word&&r(e.sliceDoc(n-1,n))==rt.Word}var KM=at.fromClass(class{constructor(r){this.decorations=this.getDeco(r)}update(r){(r.selectionSet||r.docChanged||r.viewportChanged)&&(this.decorations=this.getDeco(r.view))}getDeco(r){let e=r.state.facet(_P),{state:t}=r,n=t.selection;if(n.ranges.length>1)return ee.none;let i=n.main,s,o=null;if(i.empty){if(!e.highlightWordAroundCursor)return ee.none;let l=t.wordAt(i.head);if(!l)return ee.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 ee.none;if(e.wholeWords){if(s=t.sliceDoc(i.from,i.to),o=t.charCategorizer(i.head),!($P(o,t,i.from,i.to)&&HM(o,t,i.from,i.to)))return ee.none}else if(s=t.sliceDoc(i.from,i.to),!s)return ee.none}let a=[];for(let l of r.visibleRanges){let c=new as(t.doc,s,l.from,l.to);for(;!c.next().done;){let{from:d,to:h}=c.value;if((!o||$P(o,t,d,h))&&(i.empty&&d<=i.from&&h>=i.to?a.push(GM.range(d,h)):(d>=i.to||h<=i.from)&&a.push(qM.range(d,h)),a.length>e.maxMatches))return ee.none}}return ee.set(a)}},{decorations:r=>r.decorations}),JM=N.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),eL=({state:r,dispatch:e})=>{let{selection:t}=r,n=Z.create(t.ranges.map(i=>r.wordAt(i.head)||Z.cursor(i.head)),t.mainIndex);return n.eq(t)?!1:(e(r.update({selection:n})),!0)};function tL(r,e){let{main:t,ranges:n}=r.selection,i=r.wordAt(t.head),s=i&&i.from==t.from&&i.to==t.to;for(let o=!1,a=new as(r.doc,e,n[n.length-1].to);;)if(a.next(),a.done){if(o)return null;a=new as(r.doc,e,0,Math.max(0,n[n.length-1].from-1)),o=!0}else{if(o&&n.some(l=>l.from==a.value.from))continue;if(s){let l=r.wordAt(a.value.from);if(!l||l.from!=a.value.from||l.to!=a.value.to)continue}return a.value}}var wO=({state:r,dispatch:e})=>{let{ranges:t}=r.selection;if(t.some(s=>s.from===s.to))return eL({state:r,dispatch:e});let n=r.sliceDoc(t[0].from,t[0].to);if(r.selection.ranges.some(s=>r.sliceDoc(s.from,s.to)!=n))return!1;let i=tL(r,n);return i?(e(r.update({selection:r.selection.addRange(Z.range(i.from,i.to),!1),effects:N.scrollIntoView(i.to)})),!0):!1},no=le.define({combine(r){return Nr(r,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new SO(e),scrollToMatch:e=>N.scrollIntoView(e)})}});function PO(r){return r?[no.of(r),vO]:vO}var vh=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||NM(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,n)=>n=="n"?`
`:n=="r"?"\r":n=="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 bO(this):new gO(this)}getCursor(e,t=0,n){let i=e.doc?e:Me.create({doc:e});return n==null&&(n=i.doc.length),this.regexp?ca(this,i,t,n):la(this,i,t,n)}},xh=class{constructor(e){this.spec=e}};function rL(r,e,t){return(n,i,s,o)=>{if(t&&!t(n,i,s,o))return!1;let a=n>=o&&i<=o+s.length?s.slice(n-o,i-o):e.doc.sliceString(n,i);return r(a,e,n,i)}}function la(r,e,t,n){let i;return r.wholeWord&&(i=nL(e.doc,e.charCategorizer(e.selection.main.head))),r.test&&(i=rL(r.test,e,i)),new as(e.doc,r.unquoted,t,n,r.caseSensitive?void 0:s=>s.toLowerCase(),i)}function nL(r,e){return(t,n,i,s)=>((s>t||s+i.length<n)&&(s=Math.max(0,t-2),i=r.sliceString(s,Math.min(r.length,n+2))),(e(wh(i,t-s))!=rt.Word||e(Ph(i,t-s))!=rt.Word)&&(e(Ph(i,n-s))!=rt.Word||e(wh(i,n-s))!=rt.Word))}var gO=class extends xh{constructor(e){super(e)}nextMatch(e,t,n){let i=la(this.spec,e,n,e.doc.length).nextOverlapping();if(i.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);i=la(this.spec,e,0,s).nextOverlapping()}return i.done||i.value.from==t&&i.value.to==n?null:i.value}prevMatchInRange(e,t,n){for(let i=n;;){let s=Math.max(t,i-1e4-this.spec.unquoted.length),o=la(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,n){let i=this.prevMatchInRange(e,0,t);return i||(i=this.prevMatchInRange(e,Math.max(0,n-this.spec.unquoted.length),e.doc.length)),i&&(i.from!=t||i.to!=n)?i:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let n=la(this.spec,e,0,e.doc.length),i=[];for(;!n.next().done;){if(i.length>=t)return null;i.push(n.value)}return i}highlight(e,t,n,i){let s=la(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)i(s.value.from,s.value.to)}};function iL(r,e,t){return(n,i,s)=>(!t||t(n,i,s))&&r(s[0],e,n,i)}function ca(r,e,t,n){let i;return r.wholeWord&&(i=sL(e.charCategorizer(e.selection.main.head))),r.test&&(i=iL(r.test,e,i)),new gh(e.doc,r.search,{ignoreCase:!r.caseSensitive,test:i},t,n)}function wh(r,e){return r.slice(xt(r,e,!1),e)}function Ph(r,e){return r.slice(e,xt(r,e))}function sL(r){return(e,t,n)=>!n[0].length||(r(wh(n.input,n.index))!=rt.Word||r(Ph(n.input,n.index))!=rt.Word)&&(r(Ph(n.input,n.index+n[0].length))!=rt.Word||r(wh(n.input,n.index+n[0].length))!=rt.Word)}var bO=class extends xh{nextMatch(e,t,n){let i=ca(this.spec,e,n,e.doc.length).next();return i.done&&(i=ca(this.spec,e,0,t).next()),i.done?null:i.value}prevMatchInRange(e,t,n){for(let i=1;;i++){let s=Math.max(t,n-i*1e4),o=ca(this.spec,e,s,n),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,n){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let i=n.length;i>0;i--){let s=+n.slice(0,i);if(s>0&&s<e.match.length)return e.match[s]+n.slice(i)}return t})}matchAll(e,t){let n=ca(this.spec,e,0,e.doc.length),i=[];for(;!n.next().done;){if(i.length>=t)return null;i.push(n.value)}return i}highlight(e,t,n,i){let s=ca(this.spec,e,Math.max(0,t-250),Math.min(n+250,e.doc.length));for(;!s.next().done;)i(s.value.from,s.value.to)}},El=be.define(),kO=be.define(),os=Ze.define({create(r){return new Cl(yO(r).create(),null)},update(r,e){for(let t of e.effects)t.is(El)?r=new Cl(t.value.create(),r.panel):t.is(kO)&&(r=new Cl(r.query,t.value?$O:null));return r},provide:r=>hl.from(r,e=>e.panel)});var Cl=class{constructor(e,t){this.query=e,this.panel=t}},oL=ee.mark({class:"cm-searchMatch"}),aL=ee.mark({class:"cm-searchMatch cm-searchMatch-selected"}),lL=at.fromClass(class{constructor(r){this.view=r,this.decorations=this.highlight(r.state.field(os))}update(r){let e=r.state.field(os);(e!=r.startState.field(os)||r.docChanged||r.selectionSet||r.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:r,panel:e}){if(!e||!r.spec.valid)return ee.none;let{view:t}=this,n=new Rn;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;r.highlight(t.state,a,l,(c,d)=>{let h=t.state.selection.ranges.some(u=>u.from==c&&u.to==d);n.add(c,d,h?aL:oL)})}return n.finish()}},{decorations:r=>r.decorations});function Rl(r){return e=>{let t=e.state.field(os,!1);return t&&t.query.spec.valid?r(e,t):Qh(e)}}var da=Rl((r,{query:e})=>{let{to:t}=r.state.selection.main,n=e.nextMatch(r.state,t,t);if(!n)return!1;let i=Z.single(n.from,n.to),s=r.state.facet(no);return r.dispatch({selection:i,effects:[QO(r,n),s.scrollToMatch(i.main,r)],userEvent:"select.search"}),CP(r),!0}),kh=Rl((r,{query:e})=>{let{state:t}=r,{from:n}=t.selection.main,i=e.prevMatch(t,n,n);if(!i)return!1;let s=Z.single(i.from,i.to),o=r.state.facet(no);return r.dispatch({selection:s,effects:[QO(r,i),o.scrollToMatch(s.main,r)],userEvent:"select.search"}),CP(r),!0}),cL=Rl((r,{query:e})=>{let t=e.matchAll(r.state,1e3);return!t||!t.length?!1:(r.dispatch({selection:Z.create(t.map(n=>Z.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),dL=({state:r,dispatch:e})=>{let t=r.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:n,to:i}=t.main,s=[],o=0;for(let a=new as(r.doc,r.sliceDoc(n,i));!a.next().done;){if(s.length>1e3)return!1;a.value.from==n&&(o=s.length),s.push(Z.range(a.value.from,a.value.to))}return e(r.update({selection:Z.create(s,o),userEvent:"select.search.matches"})),!0},QP=Rl((r,{query:e})=>{let{state:t}=r,{from:n,to:i}=t.selection.main;if(t.readOnly)return!1;let s=e.nextMatch(t,n,n);if(!s)return!1;let o=s,a=[],l,c,d=[];o.precise?o.from==n&&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(N.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(n).number)+"."))):o=e.nextMatch(t,o.from,o.to);let h=r.state.changes(a);return o&&(l=Z.single(o.from,o.to).map(h),d.push(QO(r,o)),d.push(t.facet(no).scrollToMatch(l.main,r))),r.dispatch({changes:h,selection:l,effects:d,userEvent:"input.replace"}),!0}),hL=Rl((r,{query:e})=>{if(r.state.readOnly)return!1;let t=[];for(let i of e.matchAll(r.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 n=r.state.phrase("replaced $ matches",t.length)+".";return r.dispatch({changes:t,effects:N.announce.of(n),userEvent:"input.replace.all"}),!0});function $O(r){return r.state.facet(no).createPanel(r)}function yO(r,e){var t,n,i,s,o;let a=r.selection.main,l=a.empty||a.to>a.from+100?"":r.sliceDoc(a.from,a.to);if(e&&!l)return e;let c=r.facet(no);return new vh({search:((t=e==null?void 0:e.literal)!==null&&t!==void 0?t:c.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:(n=e==null?void 0:e.caseSensitive)!==null&&n!==void 0?n: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 AP(r){let e=cm(r,$O);return e&&e.dom.querySelector("[main-field]")}function CP(r){let e=AP(r);e&&e==r.root.activeElement&&e.select()}var Qh=r=>{let e=r.state.field(os,!1);if(e&&e.panel){let t=AP(r);if(t&&t!=r.root.activeElement){let n=yO(r.state,e.query.spec);n.valid&&r.dispatch({effects:El.of(n)}),t.focus(),t.select()}}else r.dispatch({effects:[kO.of(!0),e?El.of(yO(r.state,e.query.spec)):be.appendConfig.of(vO)]});return!0},EP=r=>{let e=r.state.field(os,!1);if(!e||!e.panel)return!1;let t=cm(r,$O);return t&&t.dom.contains(r.root.activeElement)&&r.focus(),r.dispatch({effects:kO.of(!1)}),!0},RP=[{key:"Mod-f",run:Qh,scope:"editor search-panel"},{key:"F3",run:da,shift:kh,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:da,shift:kh,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:EP,scope:"editor search-panel"},{key:"Mod-Shift-l",run:dL},{key:"Mod-Alt-g",run:jM},{key:"Mod-d",run:wO,preventDefault:!0}],SO=class{constructor(e){this.view=e;let t=this.query=e.state.field(os).query.spec;this.commit=this.commit.bind(this),this.searchField=wt("input",{value:t.search,placeholder:Hr(e,"Find"),"aria-label":Hr(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=wt("input",{value:t.replace,placeholder:Hr(e,"Replace"),"aria-label":Hr(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=wt("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=wt("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=wt("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function n(i,s,o){return wt("button",{class:"cm-button",name:i,onclick:s,type:"button"},o)}this.dom=wt("div",{onkeydown:i=>this.keydown(i),class:"cm-search"},[this.searchField,n("next",()=>da(e),[Hr(e,"next")]),n("prev",()=>kh(e),[Hr(e,"previous")]),n("select",()=>cL(e),[Hr(e,"all")]),wt("label",null,[this.caseField,Hr(e,"match case")]),wt("label",null,[this.reField,Hr(e,"regexp")]),wt("label",null,[this.wordField,Hr(e,"by word")]),...e.state.readOnly?[]:[wt("br"),this.replaceField,n("replace",()=>QP(e),[Hr(e,"replace")]),n("replaceAll",()=>hL(e),[Hr(e,"replace all")])],wt("button",{name:"close",onclick:()=>EP(e),"aria-label":Hr(e,"close"),type:"button"},["\xD7"])])}commit(){let e=new vh({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:El.of(e)}))}keydown(e){mv(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?kh:da)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),QP(this.view))}update(e){for(let t of e.transactions)for(let n of t.effects)n.is(El)&&!n.value.eq(this.query)&&this.setQuery(n.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(no).top}};function Hr(r,e){return r.state.phrase(e)}var mh=30,Oh=/[\s\.,:;?!]/;function QO(r,{from:e,to:t}){let n=r.state.doc.lineAt(e),i=r.state.doc.lineAt(t).to,s=Math.max(n.from,e-mh),o=Math.min(i,t+mh),a=r.state.sliceDoc(s,o);if(s!=n.from){for(let l=0;l<mh;l++)if(!Oh.test(a[l+1])&&Oh.test(a[l])){a=a.slice(l);break}}if(o!=i){for(let l=a.length-1;l>a.length-mh;l--)if(!Oh.test(a[l-1])&&Oh.test(a[l])){a=a.slice(0,l);break}}return N.announce.of(`${r.state.phrase("current match")}. ${a} ${r.state.phrase("on line")} ${n.number}.`)}var uL=N.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"}}),vO=[os,fn.low(lL),uL];var AO=class r{constructor(e,t,n,i,s,o,a,l,c,d=0,h){this.p=e,this.stack=t,this.state=n,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,n=0){let i=e.parser.context;return new r(e,[],t,n,n,0,[],0,i?new Th(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 n=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),n==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-(n-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,n,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==n)return;if(this.buffer[o-2]>=t){this.buffer[o-2]=n;return}}}if(!s||this.pos==n)this.buffer.push(e,t,n,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]>n;l-=4)if(this.buffer[l-1]>=0){a=!0;break}if(a)for(;o>0&&this.buffer[o-2]>n;)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]=n,this.buffer[o+3]=i}}shift(e,t,n,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>n||t<=o.maxNode)&&(this.reducePos=i),this.pushState(s,a?n:Math.min(n,this.reducePos)),this.shiftContext(t,n),t<=o.maxNode&&this.buffer.push(t,n,i,4)}else this.pos=i,this.shiftContext(t,n),t<=this.p.parser.maxNode&&this.buffer.push(t,n,i,4)}apply(e,t,n,i){e&65536?this.reduce(e):this.shift(e,t,n,i)}useNode(e,t){let n=this.p.reused.length-1;(n<0||this.p.reused[n]!=e)&&(this.p.reused.push(e),n++);let i=this.pos;this.reducePos=this.pos=i+e.length,this.pushState(t,i),this.buffer.push(n,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 n=e.buffer.slice(t),i=e.bufferBase+t;for(;e&&i==e.bufferBase;)e=e.parent;return new r(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,n,i,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let n=e<=this.p.parser.maxNode;n&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,n?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new CO(this);;){let n=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(n==0)return!1;if((n&65536)==0)return!0;t.reduce(n)}}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 n=[];for(let i=0;i<t.length&&n.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,n.push(o)}return n}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 n=t>>19,i=t&65535,s=this.stack.length-n*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=[],n=(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=n(o,s+1);if(a!=null)return a}})};return n(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 Th(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()}},Th=class{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}},CO=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,n=e>>19;n==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(n-1)*3;let i=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=i}},EO=class r{constructor(e,t,n){this.stack=e,this.pos=t,this.index=n,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new r(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 r(this.stack,this.pos,this.index)}};function Ml(r,e=Uint16Array){if(typeof r!="string")return r;let t=null;for(let n=0,i=0;n<r.length;){let s=0;for(;;){let o=r.charCodeAt(n++),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 ha=class{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},MP=new ha,RO=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=MP,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 n=this.range,i=this.rangeIndex,s=this.pos+e;for(;s<n.from;){if(!i)return null;let o=this.ranges[--i];s-=n.from-o.to,n=o}for(;t<0?s>n.to:s>=n.to;){if(i==this.ranges.length-1)return null;let o=this.ranges[++i];s+=o.from-n.to,n=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,n,i;if(t>=0&&t<this.chunk.length)n=this.pos+e,i=this.chunk.charCodeAt(t);else{let s=this.resolveOffset(e,1);if(s==null)return-1;if(n=s,n>=this.chunk2Pos&&n<this.chunk2Pos+this.chunk2.length)i=this.chunk2.charCodeAt(n-this.chunk2Pos);else{let o=this.rangeIndex,a=this.range;for(;a.to<=n;)a=this.ranges[++o];this.chunk2=this.input.chunk(this.chunk2Pos=n),n+this.chunk2.length>a.to&&(this.chunk2=this.chunk2.slice(0,a.to-n)),i=this.chunk2.charCodeAt(0)}}return n>=this.token.lookAhead&&(this.token.lookAhead=n+1),i}acceptToken(e,t=0){let n=t?this.resolveOffset(t,-1):this.pos;if(n==null||n<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=n}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=MP,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 n="";for(let i of this.ranges){if(i.from>=t)break;i.to>e&&(n+=this.input.read(Math.max(i.from,e),Math.min(i.to,t)))}return n}},ls=class{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:n}=t.p;XP(this.data,e,t,this.id,n.data,n.tokenPrecTable)}};ls.prototype.contextual=ls.prototype.fallback=ls.prototype.extend=!1;var si=class{constructor(e,t,n){this.precTable=t,this.elseToken=n,this.data=typeof e=="string"?Ml(e):e}token(e,t){let n=e.pos,i=0;for(;;){let s=e.next<0,o=e.resolveOffset(1,1);if(XP(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(n,e.token),e.acceptToken(this.elseToken,i))}};si.prototype.contextual=ls.prototype.fallback=ls.prototype.extend=!1;var At=class{constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}};function XP(r,e,t,n,i,s){let o=0,a=1<<n,{dialect:l}=t.p.parser;e:for(;(a&r[o])!=0;){let c=r[o+1];for(let f=o+3;f<c;f+=2)if((r[f+1]&a)>0){let m=r[f];if(l.allows(m)&&(e.token.value==-1||e.token.value==m||pL(m,e.token.value,i,s))){e.acceptToken(m);break}}let d=e.next,h=0,u=r[o+2];if(e.next<0&&u>h&&r[c+u*3-3]==65535){o=r[c+u*3-1];continue e}for(;h<u;){let f=h+u>>1,m=c+f+(f<<1),g=r[m],v=r[m+1]||65536;if(d<g)u=f;else if(d>=v)h=f+1;else{o=r[m+2],e.advance();continue e}}break}}function LP(r,e,t){for(let n=e,i;(i=r[n])!=65535;n++)if(i==t)return n-e;return-1}function pL(r,e,t,n){let i=LP(t,n,e);return i<0||LP(t,n,r)<i}var Kr=typeof process!="undefined"&&process.env&&/\bparse\b/.test(process.env.LOG),TO=null;function DP(r,e,t){let n=r.cursor(We.IncludeAnonymous);for(n.moveTo(e);;)if(!(t<0?n.childBefore(e):n.childAfter(e)))for(;;){if((t<0?n.to<e:n.from>e)&&!n.type.isError)return t<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(r.length,Math.max(n.from+1,e+25));if(t<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return t<0?0:r.length}}var MO=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 n=this.trees[t],i=this.index[t];if(i==n.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let s=n.children[i],o=this.start[t]+n.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}}},LO=class{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(n=>new ha)}getActions(e){let t=0,n=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(!(n&&!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&&(n=h,t>u))break}}for(;this.actions.length>t;)this.actions.pop();return l&&e.setLookAhead(l),!n&&e.pos==this.stream.end&&(n=new ha,n.value=e.p.parser.eofTerm,n.start=n.end=e.pos,t=this.addActions(e,n.value,n.end,t)),this.mainToken=n,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new ha,{pos:n,p:i}=e;return t.start=n,t.end=Math.min(n+1,i.stream.end),t.value=n==i.stream.end?i.parser.eofTerm:0,t}updateCachedToken(e,t,n){let i=this.stream.clipPos(n.pos);if(t.token(this.stream.reset(i,e),n),e.value>-1){let{parser:s}=n.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),n);if(a>=0&&n.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,n,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++]=n,i}addActions(e,t,n,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=Ei(a,c+2);else{i==0&&a[c+1]==2&&(i=this.putAction(Ei(a,c+2),t,n,i));break}a[c]==t&&(i=this.putAction(Ei(a,c+1),t,n,i))}return i}},DO=class{constructor(e,t,n,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 RO(t,i),this.tokens=new LO(e,this.stream),this.topTerm=e.top[1];let{from:s}=i[0];this.stacks=[AO.start(this,e.top[0],s)],this.fragments=n.length&&this.stream.end-s>e.bufferLength*4?new MO(n,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,n=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)n.push(a);else{if(this.advanceStack(a,n,e))continue;{i||(i=[],s=[]),i.push(a);let l=this.tokens.getMainToken(a);s.push(l.value,l.end)}}break}}if(!n.length){let o=i&&mL(i);if(o)return Kr&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Kr&&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,n);if(o)return Kr&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(n.length>o)for(n.sort((a,l)=>l.score-a.score);n.length>o;)n.pop();n.some(a=>a.reducePos>t)&&this.recovering--}else if(n.length>1){e:for(let o=0;o<n.length-1;o++){let a=n[o];for(let l=o+1;l<n.length;l++){let c=n[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)n.splice(l--,1);else{n.splice(o--,1);continue e}}}n.length>12&&(n.sort((o,a)=>a.score-o.score),n.splice(12,n.length-12))}this.minStackPos=n[0].pos;for(let o=1;o<n.length;o++)n[o].pos<this.minStackPos&&(this.minStackPos=n[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,n){let i=e.pos,{parser:s}=this,o=Kr?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),Kr&&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),Kr&&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||!n,m=f?e:e.split(),g=this.tokens.mainToken;if(m.apply(d,h,g?g.start:m.pos,u),Kr&&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):n.push(m)}return!1}advanceFully(e,t){let n=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>n)return IP(e,t),!0}}runRecovery(e,t,n){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=Kr?this.stackID(a)+" -> ":"";if(a.deadEnd&&(s||(s=!0,a.restart(),Kr&&console.log(d+this.stackID(a)+" (restarted)"),this.advanceFully(a,n))))continue;let h=a.split(),u=d;for(let f=0;f<10&&h.forceReduce()&&(Kr&&console.log(u+this.stackID(h)+" (via force-reduce)"),!this.advanceFully(h,n));f++)Kr&&(u=this.stackID(h)+" -> ");for(let f of a.recoverByInsert(l))Kr&&console.log(d+this.stackID(f)+" (via recover-insert)"),this.advanceFully(f,n);this.stream.end>a.pos?(c==a.pos&&(c++,l=0),a.recoverByDelete(l,c),Kr&&console.log(d+this.stackID(a)+` (via recover-delete ${this.parser.getName(l)})`),IP(a,n)):(!i||i.score<h.score)&&(i=h)}return i}stackToTree(e){return e.close(),Ee.build({buffer:EO.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=(TO||(TO=new WeakMap)).get(e);return t||TO.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}};function IP(r,e){for(let t=0;t<e.length;t++){let n=e[t];if(n.pos==r.pos&&n.sameState(r)){e[t].score<r.score&&(e[t]=r);return}}e.push(r)}var IO=class{constructor(e,t,n){this.source=e,this.flags=t,this.disabled=n}allows(e){return!this.disabled||this.disabled[e]==0}},_O=r=>r,ua=class{constructor(e){this.start=e.start,this.shift=e.shift||_O,this.reduce=e.reduce||_O,this.reuse=e.reuse||_O,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}},Er=class r extends _i{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 n=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 Qi(t.map((a,l)=>bt.define({name:l>=this.minRepeatTerm?void 0:a,id:l,props:i[l],top:n.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=Ml(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(ZP),this.states=Ml(e.states,Uint32Array),this.data=Ml(e.stateData),this.goto=Ml(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(a=>typeof a=="number"?new ls(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,n){let i=new DO(this,e,t,n);for(let s of this.wrappers)i=s(i,e,t,n);return i}getGoto(e,t,n=!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&&n)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 n=this.data;for(let i=0;i<2;i++)for(let s=this.stateSlot(e,i?2:1),o;;s+=3){if((o=n[s])==65535)if(n[s+1]==1)o=n[s=Ei(n,s+2)];else{if(n[s+1]==2)return Ei(n,s+2);break}if(o==t||o==0)return Ei(n,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,n=>n==t?!0:null)}allActions(e,t){let n=this.stateSlot(e,4),i=n?t(n):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=Ei(this.data,s+2);else break;i=t(Ei(this.data,s+1))}return i}nextStates(e){let t=[];for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=Ei(this.data,n+2);else break;if((this.data[n+2]&1)==0){let i=this.data[n+1];t.some((s,o)=>o&1&&s==i)||t.push(this.data[n],i)}}return t}configure(e){let t=Object.assign(Object.create(r.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let n=this.topRules[e.top];if(!n)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=n}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(n=>{let i=e.tokenizers.find(s=>s.from==n);return i?i.to:n})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((n,i)=>{let s=e.specializers.find(a=>a.from==n.external);if(!s)return n;let o=Object.assign(Object.assign({},n),{external:s.to});return t.specializers[i]=ZP(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),n=t.map(()=>!1);if(e)for(let s of e.split(" ")){let o=t.indexOf(s);o>=0&&(n[o]=!0)}let i=null;for(let s=0;s<t.length;s++)if(!n[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 IO(e,n,i)}static deserialize(e){return new r(e)}};function Ei(r,e){return r[e]|r[e+1]<<16}function mL(r){let e=null;for(let t of r){let n=t.p.stoppedAt;(t.pos==t.p.stream.end||n!=null&&t.pos>n)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.score<t.score)&&(e=t)}return e}function ZP(r){if(r.external){let e=r.extend?1:0;return(t,n)=>r.external(t,n)<<1|e}return r.get}var _h=Kt({"typedef struct union enum":O.definitionKeyword,"extern static auto register thread_local _Thread_local inline const volatile restrict _Atomic":O.modifier,"if else switch for while do case default return break continue goto":O.controlKeyword,"sizeof _Alignof __alignof__ _Generic _Static_assert static_assert":O.operatorKeyword,NULL:O.null,"true false":O.bool,"PrimitiveType TypeSize":O.typeName,TypeIdentifier:O.typeName,FieldIdentifier:O.propertyName,"CallExpression/FieldExpression/FieldIdentifier":O.function(O.propertyName),StatementIdentifier:O.labelName,Identifier:O.variableName,"CallExpression/Identifier":O.function(O.variableName),"FunctionDeclarator/Identifier":O.function(O.definition(O.variableName)),ArithOp:O.arithmeticOperator,LogicOp:O.logicOperator,BitOp:O.bitwiseOperator,CompareOp:O.compareOperator,UpdateOp:O.updateOperator,LineComment:O.lineComment,BlockComment:O.blockComment,Number:O.number,String:O.string,SystemLibString:O.special(O.string),CharLiteral:O.character,EscapeSequence:O.escape,PreprocArg:O.meta,"PreprocDirectiveName #include #ifdef #ifndef #if #define #else #endif #elif":O.processingInstruction,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace,". ->":O.derefOperator,", ;":O.separator});var OL={__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},zP=Er.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:[_h],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 si("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:r=>OL[r]||-1}],tokenPrec:6541});var gL=zP.configure({props:[_h,Cr.add({CompoundStatement:Go({closing:"}"}),IfStatement:r=>{if(r.matchCh("else"))return r.continue()},ForStatement:Gr({except:/^\s*\}/}),SwitchStatement:Gr({except:/^\s*\}/}),DoStatement:Gr({except:/^\s*\}/}),WhileStatement:Gr({except:/^\s*\}/})}),dr.add({CompoundStatement:Vt,FieldDeclarationList:Vt,EnumeratorList:Vt,ParameterList:Vt,ArgumentList:Vt,InitializerList:Vt,BlockComment:Vt})]}),WP=Jt.define({parser:gL,languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(\}|\)$|case |default:)$/,closeBrackets:{brackets:["(","[","{","'",'"']},wordChars:"_"}});var bL=Go({closing:"}"}),BP=/^\s*(case\b|default\b|\})/,yL=new Set(["{","BlockComment","LineComment","PreprocDirective"]);function SL(r){let e=r.state.doc,t=e.lineAt(r.node.from).number;for(let n=r.node.childBefore(r.pos);n;n=n.prevSibling){if(yL.has(n.name)||n.type.isError)continue;let i=e.lineAt(n.from);if(i.number<=t)break;if(/^\s*$/.test(i.text.slice(0,n.from-i.from)))return r.lineIndent(n.from)}return null}function Ah(r){if(!/^\s*\}/.test(r.textAfter)){let e=SL(r);if(e!=null)return e}return bL(r)}var vL=WP.configure({props:[Cr.add({IfStatement:Gr({except:/^\s*({|else\b)/}),CompoundStatement:r=>{var e;if(((e=r.node.parent)==null?void 0:e.name)=="SwitchStatement"&&!BP.test(r.textAfter)){let t=r.node.childBefore(r.pos);if((t==null?void 0:t.name)=="CaseStatement")return r.lineIndent(t.from)+r.unit}return Ah(r)},FieldDeclarationList:Ah,EnumeratorList:Ah,InitializerList:Ah,CaseStatement:r=>r.baseIndent+(BP.test(r.textAfter)?0:r.unit)})]});function ZO(){return new Fe(vL)}var VP=["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"],YP=["slo","aso","rla","sre","lse","rra","sax","aax","lax","dcp","dcm","isc","isb","anc","alr","asr","arr","sbx","axs","las","lar"];var FP=["a","x","y"],NP=["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 jP=["if","else","endif","ifconst","ifnconst"];var UP=["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 qP=["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"],GP=["nz","z","nc","c","po","pe","p","m"],HP=["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 KP=["if","else","endif","ifdef","ifndef","cond","endc","ifeq","ifne","iflt","ifgt"];function XO(r){return r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102}var ML=new Set(VP),LL=new Set(YP),DL=new Set(FP),t1=new Set(NP),r1={mac:9,macro:9,endm:10,mexit:13,repeat:11,repend:12},n1=new Set(jP),IL=new Set(["on","off"]);function zO(r){let e=r.startsWith(".")?r.slice(1):r;return t1.has(e.toLowerCase())?7:-1}function WO(r){var t;let e=r.startsWith(".")?r.slice(1):r;return(t=r1[e.toLowerCase()])!=null?t:-1}function BO(r){let e=r.startsWith(".")?r.slice(1):r;return n1.has(e.toLowerCase())?13:-1}function VO(r){if(!r.startsWith(".")||r.length<=1)return-1;let e=r.slice(1).toLowerCase();return t1.has(e)||e in r1||n1.has(e)?-1:8}function YO(r){let e=r.toLowerCase();return ML.has(e)?5:LL.has(e)?6:-1}function FO(r){return DL.has(r.toLowerCase())?2:-1}function NO(r){return IL.has(r.toLowerCase())?3:-1}function jO(r){return r.toLowerCase()==="hex"?4:-1}var i1=new At(r=>{if(!XO(r.peek(0))||!XO(r.peek(1)))return;let e=2;for(;XO(r.peek(e));)e++;e%2===0&&r.acceptToken(1,e)});var ZL={__proto__:null,".":122},s1=Er.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:[i1,0,1],topRules:{Program:[0,15]},specialized:[{term:18,get:(r,e)=>FO(r,e)<<1,external:FO},{term:18,get:(r,e)=>NO(r,e)<<1,external:NO},{term:18,get:(r,e)=>jO(r,e)<<1,external:jO},{term:18,get:(r,e)=>YO(r,e)<<1,external:YO},{term:18,get:(r,e)=>zO(r,e)<<1,external:zO},{term:18,get:(r,e)=>VO(r,e)<<1,external:VO},{term:18,get:(r,e)=>WO(r,e)<<1,external:WO},{term:18,get:(r,e)=>BO(r,e)<<1,external:BO},{term:18,get:r=>ZL[r]||-1}],tokenPrec:628});var XL=Jt.define({parser:s1.configure({props:[dr.add({MacroDef:Vt,RepeatBlock:Vt}),Kt({Identifier:O.variableName,LocalIdentifier:O.local(O.variableName),CurrentAddress:O.self,PseudoOp:O.keyword,Equals:O.keyword,Opcode:O.standard(O.keyword),IllegalOpcode:O.special(O.keyword),Label:O.labelName,String:O.string,Char:O.character,Number:O.number,OnOff:O.bool,Register:O.standard(O.modifier),ImmediatePrefix:O.constant(O.modifier),Comment:O.comment,ArithOp:O.arithmeticOperator,Plus:O.arithmeticOperator,Minus:O.arithmeticOperator,Percent:O.arithmeticOperator,BitOp:O.bitwiseOperator,Tilde:O.bitwiseOperator,LogicOp:O.logicOperator,Not:O.logicOperator,CompareOp:O.compareOperator,BinaryLt:O.compareOperator,BinaryGt:O.compareOperator,UnaryLt:O.arithmeticOperator,UnaryGt:O.arithmeticOperator,HexOp:O.keyword,HexByte:O.number,Mac:O.definitionKeyword,MacEnd:O.definitionKeyword,Repeat:O.controlKeyword,RepEnd:O.controlKeyword,"MacroDef/Identifier":O.macroName,ControlOp:O.controlKeyword,Comma:O.separator,Colon:O.separator,"( )":O.paren})]}),languageData:{commentTokens:{line:";"}}});function o1(){return new Fe(XL)}var jL=new Set(HP),UL={macro:2,endm:3,exitm:5,rept:4},qL=new Set(KP),GL=new Set(UP),HL=new Set(qP),KL=new Set(GP);function UO(r){let e=r.startsWith(".")?r.slice(1):r;return jL.has(e.toLowerCase())?1:-1}function qO(r){var t;let e=r.startsWith(".")?r.slice(1):r;return(t=UL[e.toLowerCase()])!=null?t:-1}function GO(r){let e=r.startsWith(".")?r.slice(1):r;return qL.has(e.toLowerCase())?5:-1}function HO(r){return GL.has(r.toLowerCase())?6:-1}function KO(r){return HL.has(r.toLowerCase())?7:-1}function JO(r){return KL.has(r.toLowerCase())?8:-1}var l1=Er.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:(r,e)=>UO(r,e)<<1,external:UO},{term:30,get:(r,e)=>qO(r,e)<<1,external:qO},{term:30,get:(r,e)=>GO(r,e)<<1,external:GO},{term:30,get:(r,e)=>HO(r,e)<<1,external:HO},{term:30,get:(r,e)=>KO(r,e)<<1,external:KO},{term:30,get:(r,e)=>JO(r,e)<<1,external:JO}],tokenPrec:548});var JL=Jt.define({parser:l1.configure({props:[dr.add({MacroDef:Vt,RepeatBlock:Vt}),Kt({Identifier:O.variableName,PseudoOp:O.keyword,Opcode:O.standard(O.keyword),Register:O.standard(O.modifier),Condition:O.standard(O.modifier),Label:O.labelName,String:O.string,Char:O.character,Number:O.number,Comment:O.comment,ArithOp:O.arithmeticOperator,Plus:O.arithmeticOperator,Minus:O.arithmeticOperator,Percent:O.arithmeticOperator,BitOp:O.bitwiseOperator,Tilde:O.bitwiseOperator,LogicOp:O.logicOperator,Not:O.logicOperator,CompareOp:O.compareOperator,BinaryLt:O.compareOperator,BinaryGt:O.compareOperator,UnaryLt:O.arithmeticOperator,UnaryGt:O.arithmeticOperator,Mac:O.definitionKeyword,MacEnd:O.definitionKeyword,Repeat:O.controlKeyword,"MacroDef/Identifier":O.macroName,ControlOp:O.controlKeyword,Comma:O.separator,Colon:O.separator,"( )":O.paren})]}),languageData:{commentTokens:{line:";"}}});function c1(){return new Fe(JL)}function eD(){function r(d){return new Set(d.split(" "))}let e=r("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=r("u8 u16 u24 u32 u64 i8 i16 i24 i32 i64 bool iexpr"),n=r("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(n.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 eg=eD();function d1(){return new Fe(Dt.define(eg))}function tg(r){let e={},t=r.split(" ");for(let n=0;n<t.length;++n)e[t[n]]=!0;return e}function tD(r={}){let e=r.statementIndentUnit||3,t=r.dontAlignCalls,n=r.compilerDirectivesUseRegularIndentation,i=r.noIndentKeywords||[],s=r.multiLineStrings,o=tg("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,g=/^((`?\w+)|[)}\]])/,v=/[)}\]]/,k=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"),L=/^(`(?:ifdef|ifndef|elsif|else))\b/,M=/^(`(?:elsif|else|endif))\b/,D,w,x=tg("case checker class clocking config function generate interface module package primitive program property specify sequence table task"),R={};for(let B in x)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=tg("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while extern typedef");function j(B,he){let J=B.peek(),ve;if(/[,;:\.]/.test(J))return D=B.next(),null;if(l.test(J))return D=B.next(),"bracket";if(J=="`")if(B.next(),B.eatWhile(/[\w\$_]/)){let $e=B.current();if(w=$e,$e.startsWith("`uvm_")&&$e.endsWith("_begin")){let Ue=w.substr(0,w.length-5)+"end";R[$e]=Ue,D="newblock"}else{B.eatSpace(),B.peek()=="("&&(D="newmacro");let Ue=B.current();B.backUp(Ue.length-$e.length)}return"keyword.control"}else return null;if(J=="$")return B.next(),B.eatWhile(/[\w\$_]/)?"meta":null;if(J=="#")return B.next(),B.eatWhile(/[\d_.]/),"keyword.control";if(J=="@")return B.next(),B.eatWhile(/[@]/),"keyword.control";if(J=='"')return B.next(),he.tokenize=G(J),he.tokenize(B,he);if(J=="/"){if(B.next(),B.eat("*"))return he.tokenize=ie,ie(B,he);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 D=B.current(),"meta";if(B.eatWhile(/[\w\$_]/)){let $e=B.current();return o[$e]?(R[$e]&&(D="newblock",$e==="fork"&&(B.eatSpace(),B.peek()==";"&&(D="newstatement"),B.backUp(B.current().length-$e.length))),X[$e]&&(D="newstatement"),w=$e,"keyword"):"variableName"}return B.next(),null}function G(B){return function(he,J){let ve=!1,$e,Ue=!1;for(;($e=he.next())!=null;){if($e==B&&!ve){Ue=!0;break}ve=!ve&&$e=="\\"}return(Ue||!(ve||s))&&(J.tokenize=j),"string"}}function ie(B,he){let J=!1,ve;for(;ve=B.next();){if(ve=="/"&&J){he.tokenize=j;break}J=ve=="*"}return"comment"}function U(B,he,J,ve){let Ue={indented:B.indented,column:he,type:J,scopekind:ve||"",align:null,prev:B.context};return B.context=Ue}function ge(B){let he=B.context.type;return(he==")"||he=="]"||he=="}")&&(B.indented=B.context.indented),B.context=B.context.prev}function pe(B,he){if(B==he)return!0;{let J=he.split(";");for(let ve in J)if(B==J[ve])return!0;return!1}}function ke(B,he){return B==null?!1:B.scopekind===he?!0:ke(B.prev,he)}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,he){let J=he.context;if(B.sol()&&(J.align==null&&(J.align=!1),he.indented=B.indentation(),he.startOfLine=!0),B.eatSpace())return null;D=null,w=null;let ve=(he.tokenize||j)(B,he);if(ve=="comment"||ve=="meta"||ve=="variableName")return(D==="="||D==="<=")&&!ke(J,"assignment")&&(U(he,B.column()+D.length,"assignment","assignment"),J.align==null&&(J.align=!0)),ve;J.align==null&&(J.align=!0);let $e=J.type=="assignment"&&v.test(D)&&J.prev&&J.prev.type===D;if(D==J.type||$e){if($e&&(J=ge(he)),J=ge(he),D==")"){if(J&&J.type==="macro")for(J=ge(he);J&&(J.type=="statement"||J.type=="assignment");)J=ge(he)}else if(D=="}"&&J&&J.type==="statement")for(;J&&J.type=="statement";)J=ge(he)}else if((D==";"||D==",")&&(J.type=="statement"||J.type=="assignment")||J.type&&pe(w,J.type))for(J=ge(he);J&&(J.type=="statement"||J.type=="assignment");)J=ge(he);else if(D=="{")U(he,B.column(),"}");else if(D=="[")U(he,B.column(),"]");else if(D=="(")U(he,B.column(),")");else if(J&&J.type=="endcase"&&D==":")U(he,B.column(),"statement","case");else if(D=="newstatement")U(he,B.column(),"statement",w);else if(D=="newblock"){if(!(w=="function"&&J&&(J.type=="statement"||J.type=="endgroup"))){if(!(w=="task"&&J&&J.type=="statement")){if(!(w=="class"&&J&&J.type=="statement")){let Ue=R[w];U(he,B.column(),Ue,w)}}}}else(D=="newmacro"||w&&w.match(k))&&(D=="newmacro"&&U(he,B.column(),"macro","macro"),w&&w.match(M)&&(he.compilerDirectiveIndented-=e),w&&w.match(L)&&(he.compilerDirectiveIndented+=e));return he.startOfLine=!1,ve},blankLine(B){}}}var rg=tD();function h1(){return new Fe(Dt.define(rg))}function rD(){let r="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("|"),n="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")),r.forEach(d=>s.set(d,"keyword")),t.forEach(d=>s.set(d,"keyword")),n.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 ng=rD();function u1(){return new Fe(Dt.define(ng))}function nD(){let r=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,n){if(t.eatSpace())return null;let i=t.peek();return t.match("%%")?(t.skipToEnd(),"comment"):t.match(/\\./)?"escape":i=="("||i==")"?(t.next(),n.depth+=i=="("?1:-1,n.depth<0&&(n.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()\[\]{}$#@~*|\\%]+/)?n.depth>0&&r.has(t.current().toLowerCase())?"keyword":n.depth>0?null:"string":(t.next(),null)}return{startState(){return{depth:0}},token:e,languageData:{commentTokens:{line:"%%"}}}}var ig=nD();function f1(){return new Fe(Dt.define(ig))}var iD={startState(){return{tokenize:sg,currentIndent:0,doInCurrentLine:!1}},token(r,e){return r.sol()&&(e.doInCurrentLine=!1),e.tokenize(r,e)},indent(r,e,t){let n=t.unit;return/^\s*\d/.test(e)?0:/^(?:next|end|wend|else|to|then)\b/i.test(e)?(r.currentIndent-1)*n:r.currentIndent*n},languageData:{commentTokens:{line:"'"}}};function cs(r){return new RegExp("^(("+r.join(")|(")+"))\\b","i")}var sD=/^[\+\-\*/%&\\|\^~<>!]/,oD=/^[\(\)\[\]\{\}@,:`=;\.]/,aD=/^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(\/\/)|(\*\*))/,lD=/^((\+=)|(\-=)|(\*=)|(%=)|(\/=)|(&=)|(\|=)|(\^=))/,cD=/^(((\/\/)=)|(>>=)|(<<=)|(\*\*=))/,dD=/^[_A-Za-z][_A-Za-z0-9]*/,hD=["if","for","while"],uD=["to","then","else"],fD=["next","end","wend"],pD=["and","or","not","xor","eqv","imp","mod"],mD=["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"],OD=["xxxxbyte","xxxxword"],gD=cs(mD),bD=cs(OD),yD=cs(hD),SD=cs(uD),vD=cs(fD),xD=cs(["end"]),wD=cs(["do"]),PD=cs(pD);function sg(r,e){if(r.eatSpace())return null;let t=r.peek();if(t==="'")return r.skipToEnd(),"comment";if(r.match(/^(\$)?[0-9\.a-f]/i,!1)){if(r.match(/^\d*\.\d+F?/i)||r.match(/^\d+\.\d*F?/)||r.match(/^\.\d+F?/))return r.eat(/J/i),"number";if(r.match(/^\$[0-9a-f]+/i)||r.match(/^&O[0-7]+/i)||r.match(/^\d+F?/)||r.match(/^0(?![\dx])/i))return r.eat(/J/i),r.eat(/L/i),"number"}return r.match(/\bREM/i)?(r.skipToEnd(),"comment"):t==='"'?(e.tokenize=kD,e.tokenize(r,e)):r.match(cD)||r.match(lD)?null:r.match(aD)||r.match(sD)||r.match(PD)?"operator":r.match(oD)?null:r.match(wD)?(e.currentIndent++,e.doInCurrentLine=!0,"keyword"):r.match(yD)?(e.doInCurrentLine?e.doInCurrentLine=!1:e.currentIndent++,"keyword"):r.match(SD)?"keyword":r.match(xD)?(e.currentIndent-=2,"keyword"):r.match(vD)?(e.currentIndent--,"keyword"):r.match(bD)||r.match(gD)?"keyword":r.match(dD)?"variable":(r.next(),"error")}function kD(r,e){for(r.next();!r.eol();)if(r.eatWhile(/[^"]/),r.eat('"'))return e.tokenize=sg,"string";return e.tokenize=sg,"string"}var og=iD;function p1(){return new Fe(Dt.define(og))}function $D(){function r(w){return new RegExp("^(("+w.join(")|(")+"))\\b","i")}let e=/^[\+\-\*/%&\\|^\~<>!]/,t=/^[\(\)\[\]\{\}@,:`=;\\.]/,n=/^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(\/\/)|(\*\*))/,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=r(h),m=r(u),g=r(a),v=r(l),k=r(c),L=r(d);function M(w,x){if(w.eatSpace())return null;if(w.peek()==="'")return w.skipToEnd(),"comment";if(w.match(/^(\$)?[0-9\.a-f]/i,!1)){let X=!1;if((w.match(/^\d*\.\d+F?/i)||w.match(/^\d+\.\d*F?/)||w.match(/^\.\d+F?/))&&(X=!0),X)return w.eat(/J/i),"number";let j=!1;if(w.match(/^\$[0-9a-f]+/i)||w.match(/^&O[0-7]+/i)?j=!0:w.match(/^[1-9]\d*F?/)?(w.eat(/J/i),j=!0):w.match(/^0(?![\dx])/i)&&(j=!0),j)return w.eat(/L/i),"number"}return w.eat('"')?(x.tokenize=D,D(w,x)):w.match(s)||w.match(i)?null:w.match(n)||w.match(e)||w.match(L)?"operator":w.match(t)?null:w.match(g)||w.match(v)||w.match(k)||w.match(m)||w.match(f)?"keyword":w.match(o)?"variableName":(w.next(),null)}function D(w,x){for(;!w.eol();){if(w.eatWhile(/[^'"]/),w.eat('"'))return x.tokenize=M,"string";w.eat(/['"]/)}return x.tokenize=M,"string"}return{startState(){return{tokenize:M}},token(w,x){return x.tokenize(w,x)}}}var ag=$D();function m1(){return new Fe(Dt.define(ag))}function QD(){let r=["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;r.forEach(n=>e.set(n,"keyword"));let t=/^([$][0-9a-f]+|[%][01]+|[0-9.]+)/i;return{startState(){return{context:0}},token(n,i){if(!n.column()&&(i.context=0,n.eatWhile(/[\w.]/)))return n.current().toLowerCase()=="end"?"keyword":"meta";if(n.eatSpace())return null;let s;if(n.eatWhile(/[$%A-Z0-9]/i)){s=n.current();let o=s.toLowerCase(),a=e.get(o);return o=="rem"?(n.eatWhile(/./),"comment"):a||(t.test(s)?"number":null)}else n.next();return null}}}var lg=QD();function O1(){return new Fe(Dt.define(lg))}var Rh=class r{static create(e,t,n,i,s){let o=i+(i<<8)+e+(t<<4)|0;return new r(e,t,n,o,s,[],[])}constructor(e,t,n,i,s,o,a){this.type=e,this.value=t,this.from=n,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 n=this.children.length-1;return n>=0&&(t=Math.max(t,this.positions[n]+this.children[n].length+this.from)),new Ee(e.types[this.type],this.children,this.positions,t-this.from).balance({makeTree:(i,s,o)=>new Ee(bt.none,i,s,o,this.hashProp)})}},te;(function(r){r[r.Document=1]="Document",r[r.CodeBlock=2]="CodeBlock",r[r.FencedCode=3]="FencedCode",r[r.Blockquote=4]="Blockquote",r[r.HorizontalRule=5]="HorizontalRule",r[r.BulletList=6]="BulletList",r[r.OrderedList=7]="OrderedList",r[r.ListItem=8]="ListItem",r[r.ATXHeading1=9]="ATXHeading1",r[r.ATXHeading2=10]="ATXHeading2",r[r.ATXHeading3=11]="ATXHeading3",r[r.ATXHeading4=12]="ATXHeading4",r[r.ATXHeading5=13]="ATXHeading5",r[r.ATXHeading6=14]="ATXHeading6",r[r.SetextHeading1=15]="SetextHeading1",r[r.SetextHeading2=16]="SetextHeading2",r[r.HTMLBlock=17]="HTMLBlock",r[r.LinkReference=18]="LinkReference",r[r.Paragraph=19]="Paragraph",r[r.CommentBlock=20]="CommentBlock",r[r.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",r[r.Escape=22]="Escape",r[r.Entity=23]="Entity",r[r.HardBreak=24]="HardBreak",r[r.Emphasis=25]="Emphasis",r[r.StrongEmphasis=26]="StrongEmphasis",r[r.Link=27]="Link",r[r.Image=28]="Image",r[r.InlineCode=29]="InlineCode",r[r.HTMLTag=30]="HTMLTag",r[r.Comment=31]="Comment",r[r.ProcessingInstruction=32]="ProcessingInstruction",r[r.Autolink=33]="Autolink",r[r.HeaderMark=34]="HeaderMark",r[r.QuoteMark=35]="QuoteMark",r[r.ListMark=36]="ListMark",r[r.LinkMark=37]="LinkMark",r[r.EmphasisMark=38]="EmphasisMark",r[r.CodeMark=39]="CodeMark",r[r.CodeText=40]="CodeText",r[r.CodeInfo=41]="CodeInfo",r[r.LinkTitle=42]="LinkTitle",r[r.LinkLabel=43]="LinkLabel",r[r.URL=44]="URL"})(te||(te={}));var hg=class{constructor(e,t){this.start=e,this.content=t,this.marks=[],this.parsers=[]}},ug=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 Dl(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,n=0){for(let i=t;i<e;i++)n+=this.text.charCodeAt(i)==9?4-n%4:1;return n}findColumn(e){let t=0;for(let n=0;t<this.text.length&&n<e;t++)n+=this.text.charCodeAt(t)==9?4-n%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 g1(r,e,t){if(t.pos==t.text.length||r!=e.block&&t.indent>=e.stack[t.depth+1].value+t.baseIndent)return!0;if(t.indent>=t.baseIndent+4)return!1;let n=(r.type==te.OrderedList?Pg:wg)(t,e,!1);return n>0&&(r.type!=te.BulletList||xg(t,e,!1)<0)&&t.text.charCodeAt(t.pos+n-1)==r.value}var T1={[te.Blockquote](r,e,t){return t.next!=62?!1:(t.markers.push(Be(te.QuoteMark,e.lineStart+t.pos,e.lineStart+t.pos+1)),t.moveBase(t.pos+(vn(t.text.charCodeAt(t.pos+1))?2:1)),r.end=e.lineStart+t.text.length,!0)},[te.ListItem](r,e,t){return t.indent<t.baseIndent+r.value&&t.next>-1?!1:(t.moveBaseColumn(t.baseIndent+r.value),!0)},[te.OrderedList]:g1,[te.BulletList]:g1,[te.Document](){return!0}};function vn(r){return r==32||r==9||r==10||r==13}function Dl(r,e=0){for(;e<r.length&&vn(r.charCodeAt(e));)e++;return e}function b1(r,e,t){for(;e>t&&vn(r.charCodeAt(e-1));)e--;return e}function _1(r){if(r.next!=96&&r.next!=126)return-1;let e=r.pos+1;for(;e<r.text.length&&r.text.charCodeAt(e)==r.next;)e++;if(e<r.pos+3)return-1;if(r.next==96){for(let t=e;t<r.text.length;t++)if(r.text.charCodeAt(t)==96)return-1}return e}function A1(r){return r.next!=62?-1:r.text.charCodeAt(r.pos+1)==32?2:1}function xg(r,e,t){if(r.next!=42&&r.next!=45&&r.next!=95)return-1;let n=1;for(let i=r.pos+1;i<r.text.length;i++){let s=r.text.charCodeAt(i);if(s==r.next)n++;else if(!vn(s))return-1}return t&&r.next==45&&R1(r)>-1&&r.depth==e.stack.length&&e.parser.leafBlockParsers.indexOf(I1.SetextHeading)>-1||n<3?-1:1}function C1(r,e){for(let t=r.stack.length-1;t>=0;t--)if(r.stack[t].type==e)return!0;return!1}function wg(r,e,t){return(r.next==45||r.next==43||r.next==42)&&(r.pos==r.text.length-1||vn(r.text.charCodeAt(r.pos+1)))&&(!t||C1(e,te.BulletList)||r.skipSpace(r.pos+2)<r.text.length)?1:-1}function Pg(r,e,t){let n=r.pos,i=r.next;for(;i>=48&&i<=57;){n++;if(n==r.text.length)return-1;i=r.text.charCodeAt(n)}return n==r.pos||n>r.pos+9||i!=46&&i!=41||n<r.text.length-1&&!vn(r.text.charCodeAt(n+1))||t&&!C1(e,te.OrderedList)&&(r.skipSpace(n+1)==r.text.length||n>r.pos+1||r.next!=49)?-1:n+1-r.pos}function E1(r){if(r.next!=35)return-1;let e=r.pos+1;for(;e<r.text.length&&r.text.charCodeAt(e)==35;)e++;if(e<r.text.length&&r.text.charCodeAt(e)!=32)return-1;let t=e-r.pos;return t>6?-1:t}function R1(r){if(r.next!=45&&r.next!=61||r.indent>=r.baseIndent+4)return-1;let e=r.pos+1;for(;e<r.text.length&&r.text.charCodeAt(e)==r.next;)e++;let t=e;for(;e<r.text.length&&vn(r.text.charCodeAt(e));)e++;return e==r.text.length?t:-1}var fg=/^[ \t]*$/,M1=/-->/,L1=/\?>/,pg=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*<!--/,M1],[/^\s*<\?/,L1],[/^\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,fg],[/^\s*(?:<\/[a-z][\w-]*\s*>|<[a-z][\w-]*(\s+[a-z:_][\w-.]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*>)\s*$/i,fg]];function D1(r,e,t){if(r.next!=60)return-1;let n=r.text.slice(r.pos);for(let i=0,s=pg.length-(t?1:0);i<s;i++)if(pg[i][0].test(n))return i;return-1}function y1(r,e){let t=r.countIndent(e,r.pos,r.indent),n=r.skipSpace(e),i=r.countIndent(n,e,t);return i>=t+5||n==r.text.length?t+1:i}function ds(r,e,t){let n=r.length-1;n>=0&&r[n].to==e&&r[n].type==te.CodeText?r[n].to=t:r.push(Be(te.CodeText,e,t))}var Ch={LinkReference:void 0,IndentedCode(r,e){let t=e.baseIndent+4;if(e.indent<t)return!1;let n=e.findColumn(t),i=r.lineStart+n,s=r.lineStart+e.text.length,o=[],a=[];for(ds(o,i,s);r.nextLine()&&e.depth>=r.stack.length;)if(e.pos==e.text.length){ds(a,r.lineStart-1,r.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==te.CodeText?ds(o,c.from,c.to):o.push(c);a=[]}ds(o,r.lineStart-1,r.lineStart);for(let c of e.markers)o.push(c);s=r.lineStart+e.text.length;let l=r.lineStart+e.findColumn(e.baseIndent+4);l<s&&ds(o,l,s)}}return a.length&&(a=a.filter(l=>l.type!=te.CodeText),a.length&&(e.markers=a.concat(e.markers))),r.addNode(r.buffer.writeElements(o,-i).finish(te.CodeBlock,s-i),i),!0},FencedCode(r,e){let t=_1(e);if(t<0)return!1;let n=r.lineStart+e.pos,i=e.next,s=t-e.pos,o=e.skipSpace(t),a=b1(e.text,e.text.length,o),l=[Be(te.CodeMark,n,n+s)];o<a&&l.push(Be(te.CodeInfo,r.lineStart+o,r.lineStart+a));for(let c=!0,d=!0,h=!1;r.nextLine()&&e.depth>=r.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&&ds(l,r.lineStart-1,r.lineStart),l.push(Be(te.CodeMark,r.lineStart+e.pos,r.lineStart+u)),r.nextLine();break}else{h=!0,c||(ds(l,r.lineStart-1,r.lineStart),d=!1);for(let g of e.markers)l.push(g);let f=r.lineStart+e.basePos,m=r.lineStart+e.text.length;f<m&&(ds(l,f,m),d=!1)}}return r.addNode(r.buffer.writeElements(l,-n).finish(te.FencedCode,r.prevLineEnd()-n),n),!0},Blockquote(r,e){let t=A1(e);return t<0?!1:(r.startContext(te.Blockquote,e.pos),r.addNode(te.QuoteMark,r.lineStart+e.pos,r.lineStart+e.pos+1),e.moveBase(e.pos+t),null)},HorizontalRule(r,e){if(xg(e,r,!1)<0)return!1;let t=r.lineStart+e.pos;return r.nextLine(),r.addNode(te.HorizontalRule,t),!0},BulletList(r,e){let t=wg(e,r,!1);if(t<0)return!1;r.block.type!=te.BulletList&&r.startContext(te.BulletList,e.basePos,e.next);let n=y1(e,e.pos+1);return r.startContext(te.ListItem,e.basePos,n-e.baseIndent),r.addNode(te.ListMark,r.lineStart+e.pos,r.lineStart+e.pos+t),e.moveBaseColumn(n),null},OrderedList(r,e){let t=Pg(e,r,!1);if(t<0)return!1;r.block.type!=te.OrderedList&&r.startContext(te.OrderedList,e.basePos,e.text.charCodeAt(e.pos+t-1));let n=y1(e,e.pos+t);return r.startContext(te.ListItem,e.basePos,n-e.baseIndent),r.addNode(te.ListMark,r.lineStart+e.pos,r.lineStart+e.pos+t),e.moveBaseColumn(n),null},ATXHeading(r,e){let t=E1(e);if(t<0)return!1;let n=e.pos,i=r.lineStart+n,s=b1(e.text,e.text.length,n),o=s;for(;o>n&&e.text.charCodeAt(o-1)==e.next;)o--;(o==s||o==n||!vn(e.text.charCodeAt(o-1)))&&(o=e.text.length);let a=r.buffer.write(te.HeaderMark,0,t).writeElements(r.parser.parseInline(e.text.slice(n+t+1,o),i+t+1),-i);o<e.text.length&&a.write(te.HeaderMark,o-n,s-n);let l=a.finish(te.ATXHeading1-1+t,e.text.length-n);return r.nextLine(),r.addNode(l,i),!0},HTMLBlock(r,e){let t=D1(e,r,!1);if(t<0)return!1;let n=r.lineStart+e.pos,i=pg[t][1],s=[],o=i!=fg;for(;!i.test(e.text)&&r.nextLine();){if(e.depth<r.stack.length){o=!1;break}for(let c of e.markers)s.push(c)}o&&r.nextLine();let a=i==M1?te.CommentBlock:i==L1?te.ProcessingInstructionBlock:te.HTMLBlock,l=r.prevLineEnd();return r.addNode(r.buffer.writeElements(s,-n).finish(a,l-n),n),!0},SetextHeading:void 0},mg=class{constructor(e){this.stage=0,this.elts=[],this.pos=0,this.start=e.start,this.advance(e.content)}nextLine(e,t,n){if(this.stage==-1)return!1;let i=n.content+`
`+t.scrub(),s=this.advance(i);return s>-1&&s<i.length?this.complete(e,n,s):!1}finish(e,t){return(this.stage==2||this.stage==3)&&Dl(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,n){return e.addLeafElement(t,Be(te.LinkReference,this.start,this.start+n,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(Y1(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(Be(te.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(B1(e,Dl(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=Dl(e,this.pos),n=0;if(t>this.pos){let i=V1(e,t,this.start);if(i){let s=cg(e,i.to-this.start);s>0&&(this.nextStage(i),n=s)}}return n||(n=cg(e,this.pos)),n>0&&n<e.length?n:-1}else return cg(e,this.pos)}}};function cg(r,e){for(;e<r.length;e++){let t=r.charCodeAt(e);if(t==10)break;if(!vn(t))return-1}return e}var Og=class{nextLine(e,t,n){let i=t.depth<e.stack.length?-1:R1(t),s=t.next;if(i<0)return!1;let o=Be(te.HeaderMark,e.lineStart+t.pos,e.lineStart+i);return e.nextLine(),e.addLeafElement(n,Be(s==61?te.SetextHeading1:te.SetextHeading2,n.start,e.prevLineEnd(),[...e.parser.parseInline(n.content,n.start),o])),!0}finish(){return!1}},I1={LinkReference(r,e){return e.content.charCodeAt(0)==91?new mg(e):null},SetextHeading(){return new Og}},TD=[(r,e)=>E1(e)>=0,(r,e)=>_1(e)>=0,(r,e)=>A1(e)>=0,(r,e)=>wg(e,r,!0)>=0,(r,e)=>Pg(e,r,!0)>=0,(r,e)=>xg(e,r,!0)>=0,(r,e)=>D1(e,r,!0)>=0],_D={text:"",end:0},gg=class{constructor(e,t,n,i){this.parser=e,this.input=t,this.ranges=i,this.line=new ug,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=Rh.create(te.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=n.length?new Sg(n,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 n=0;;){let i=e.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;n<e.markers.length&&(!i||e.markers[n].from<i.end);){let s=e.markers[n++];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 n of this.parser.blockParsers)if(n){let i=n(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 hg(this.lineStart+e.pos,e.text.slice(e.pos));for(let n of this.parser.leafBlockParsers)if(n){let i=n(this,t);i&&t.parsers.push(i)}e:for(;this.nextLine()&&e.pos!=e.text.length;){if(e.indent<e.baseIndent+4){for(let n of this.parser.endLeafBlock)if(n(this,e,t))break e}for(let n of t.parsers)if(n.nextLine(this,e,t))return null;t.content+=`
`+e.scrub();for(let n of e.markers)t.marks.push(n)}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=F1(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=_D;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 n=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-n)+o,n=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:n}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=n,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 "+te[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),n;if(this.input.lineChunks)n=t==`
`?"":t;else{let i=t.indexOf(`
`);n=i<0?t:t.slice(0,i)}return e+n.length>this.to?n.slice(0,this.to-e):n}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,n=0){this.block=Rh.create(e,n,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,n=0){this.startContext(this.parser.getNodeType(e),t,n)}addNode(e,t,n){typeof e=="number"&&(e=new Ee(this.parser.nodeSet.types[e],fa,fa,(n!=null?n: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(yg(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?Z1(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let n of e.parsers)if(n.finish(this,e))return;let t=yg(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(te.Paragraph,e.content.length),e.start)}elt(e,t,n,i){return typeof e=="string"?Be(this.parser.getNodeType(e),t,n,i):new Lh(e,t)}get buffer(){return new Mh(this.parser.nodeSet)}};function Z1(r,e,t,n,i){let s=r[e].to,o=[],a=[],l=t.from+n;function c(d,h){for(;h?d>=s:d>s;){let u=r[e+1].from-s;n+=u,d+=u,e++,s=r[e].to}}for(let d=t.firstChild;d;d=d.nextSibling){c(d.from+n,!0);let h=d.from+n,u,f=i.get(d.tree);f?u=f:d.to+n>s?(u=Z1(r,e,d,n,i),c(d.to+n,!1)):u=d.toTree(),o.push(u),a.push(h-l)}return c(t.to+n,!1),new Ee(t.type,o,a,t.to+n-l,t.tree?t.tree.propValues:void 0)}var Zl=class r extends _i{constructor(e,t,n,i,s,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=n,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,n){let i=new gg(this,e,t,n);for(let s of this.wrappers)i=s(i,e,t,n);return i}configure(e){let t=bg(e);if(!t)return this;let{nodeSet:n,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(Ll(t.defineNodes)){i=Object.assign({},i);let u=n.types.slice(),f;for(let m of t.defineNodes){let{name:g,block:v,composite:k,style:L}=typeof m=="string"?{name:m}:m;if(u.some(w=>w.name==g))continue;k&&(i[u.length]=(w,x,R)=>k(x,R,w.value));let M=u.length,D=k?["Block","BlockContext"]:v?M>=te.ATXHeading1&&M<=te.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;u.push(bt.define({id:M,name:g,props:D&&[[xe.group,D]]})),L&&(f||(f={}),Array.isArray(L)||L instanceof qr?f[g]=L:Object.assign(f,L))}n=new Qi(u),f&&(n=n.extend(Kt(f)))}if(Ll(t.props)&&(n=n.extend(...t.props)),Ll(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(Ll(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?Eh(a,u.before):u.after?Eh(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(Ll(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?Eh(c,u.before):u.after?Eh(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 r(n,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 n=new zl(this,e,t);e:for(let i=t;i<n.end;){let s=n.char(i);for(let o of this.inlineParsers)if(o){let a=o(n,s,i);if(a>=0){i=a;continue e}}i++}return n.resolveMarkers(0)}};function Ll(r){return r!=null&&r.length>0}function bg(r){if(!Array.isArray(r))return r;if(r.length==0)return null;let e=bg(r[0]);if(r.length==1)return e;let t=bg(r.slice(1));if(!t||!e)return e||t;let n=(o,a)=>(o||fa).concat(a||fa),i=e.wrap,s=t.wrap;return{props:n(e.props,t.props),defineNodes:n(e.defineNodes,t.defineNodes),parseBlock:n(e.parseBlock,t.parseBlock),parseInline:n(e.parseInline,t.parseInline),remove:n(e.remove,t.remove),wrap:i?s?(o,a,l,c)=>i(s(o,a,l,c),a,l,c):i:s}}function Eh(r,e){let t=r.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var X1=[bt.none];for(let r=1,e;e=te[r];r++)X1[r]=bt.define({id:r,name:e,props:r>=te.Escape?[]:[[xe.group,r in T1?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var fa=[],Mh=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,n,i=0){return this.content.push(e,t,n,4+i*4),this}writeElements(e,t=0){for(let n of e)n.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,n,i=fa){this.type=e,this.from=t,this.to=n,this.children=i}writeTo(e,t){let n=e.content.length;e.writeElements(this.children,t),e.content.push(this.type,this.from+t,this.to+t,e.content.length+4-n)}toTree(e){return new Mh(e).writeElements(this.children,-this.from).finish(this.type,this.to-this.from)}},Lh=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 fa}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 Be(r,e,t,n){return new so(r,e,t,n)}var z1={resolve:"Emphasis",mark:"EmphasisMark"},W1={resolve:"Emphasis",mark:"EmphasisMark"},io={},Dh={},wr=class{constructor(e,t,n,i){this.type=e,this.from=t,this.to=n,this.side=i}},S1="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",Xl=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\u2010-\u2027]/;try{Xl=new RegExp("[\\p{S}|\\p{P}]","u")}catch(r){}var dg={Escape(r,e,t){if(e!=92||t==r.end-1)return-1;let n=r.char(t+1);for(let i=0;i<S1.length;i++)if(S1.charCodeAt(i)==n)return r.append(Be(te.Escape,t,t+2));return-1},Entity(r,e,t){if(e!=38)return-1;let n=/^(?:#\d+|#x[a-f\d]+|\w+);/i.exec(r.slice(t+1,t+31));return n?r.append(Be(te.Entity,t,t+1+n[0].length)):-1},InlineCode(r,e,t){if(e!=96||t&&r.char(t-1)==96)return-1;let n=t+1;for(;n<r.end&&r.char(n)==96;)n++;let i=n-t,s=0;for(;n<r.end;n++)if(r.char(n)==96){if(s++,s==i&&r.char(n+1)!=96)return r.append(Be(te.InlineCode,t,n+1,[Be(te.CodeMark,t,t+i),Be(te.CodeMark,n+1-i,n+1)]))}else s=0;return-1},HTMLTag(r,e,t){if(e!=60||t==r.end-1)return-1;let n=r.slice(t+1,r.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(n);if(i)return r.append(Be(te.Autolink,t,t+1+i[0].length,[Be(te.LinkMark,t,t+1),Be(te.URL,t+1,t+i[0].length),Be(te.LinkMark,t+i[0].length,t+1+i[0].length)]));let s=/^!--[^>](?:-[^-]|[^-])*?-->/i.exec(n);if(s)return r.append(Be(te.Comment,t,t+1+s[0].length));let o=/^\?[^]*?\?>/.exec(n);if(o)return r.append(Be(te.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(n);return a?r.append(Be(te.HTMLTag,t,t+1+a[0].length)):-1},Emphasis(r,e,t){if(e!=95&&e!=42)return-1;let n=t+1;for(;r.char(n)==e;)n++;let i=r.slice(t-1,t),s=r.slice(n,n+1),o=Xl.test(i),a=Xl.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 r.append(new wr(e==95?z1:W1,t,n,(u?1:0)|(f?2:0)))},HardBreak(r,e,t){if(e==92&&r.char(t+1)==10)return r.append(Be(te.HardBreak,t,t+2));if(e==32){let n=t+1;for(;r.char(n)==32;)n++;if(r.char(n)==10&&n>=t+2)return r.append(Be(te.HardBreak,t,n+1))}return-1},Link(r,e,t){return e==91?r.append(new wr(io,t,t+1,1)):-1},Image(r,e,t){return e==33&&r.char(t+1)==91?r.append(new wr(Dh,t,t+2,1)):-1},LinkEnd(r,e,t){if(e!=93)return-1;for(let n=r.parts.length-1;n>=0;n--){let i=r.parts[n];if(i instanceof wr&&(i.type==io||i.type==Dh)){if(!i.side||r.skipSpace(i.to)==t&&!/[(\[]/.test(r.slice(t+1,t+2)))return r.parts[n]=null,-1;let s=r.takeContent(n),o=r.parts[n]=AD(r,s,i.type==io?te.Link:te.Image,i.from,t+1);if(i.type==io)for(let a=0;a<n;a++){let l=r.parts[a];l instanceof wr&&l.type==io&&(l.side=0)}return o.to}}return-1}};function AD(r,e,t,n,i){let{text:s}=r,o=r.char(i),a=i;if(e.unshift(Be(te.LinkMark,n,n+(t==te.Image?2:1))),e.push(Be(te.LinkMark,i-1,i)),o==40){let l=r.skipSpace(i+1),c=B1(s,l-r.offset,r.offset),d;c&&(l=r.skipSpace(c.to),l!=c.to&&(d=V1(s,l-r.offset,r.offset),d&&(l=r.skipSpace(d.to)))),r.char(l)==41&&(e.push(Be(te.LinkMark,i,i+1)),a=l+1,c&&e.push(c),d&&e.push(d),e.push(Be(te.LinkMark,l,a)))}else if(o==91){let l=Y1(s,i-r.offset,r.offset,!1);l&&(e.push(l),a=l.to)}return Be(t,n,a,e)}function B1(r,e,t){if(r.charCodeAt(e)==60){for(let i=e+1;i<r.length;i++){let s=r.charCodeAt(i);if(s==62)return Be(te.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<r.length;s++){let a=r.charCodeAt(s);if(vn(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?Be(te.URL,e+t,s+t):s==r.length?null:!1}}function V1(r,e,t){let n=r.charCodeAt(e);if(n!=39&&n!=34&&n!=40)return!1;let i=n==40?41:n;for(let s=e+1,o=!1;s<r.length;s++){let a=r.charCodeAt(s);if(o)o=!1;else{if(a==i)return Be(te.LinkTitle,e+t,s+1+t);a==92&&(o=!0)}}return null}function Y1(r,e,t,n){for(let i=!1,s=e+1,o=Math.min(r.length,s+999);s<o;s++){let a=r.charCodeAt(s);if(i)i=!1;else{if(a==93)return n?!1:Be(te.LinkLabel,e+t,s+1+t);if(n&&!vn(a)&&(n=!1),a==91)return!1;a==92&&(i=!0)}}return null}var zl=class{constructor(e,t,n){this.parser=e,this.text=t,this.offset=n,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,n,i,s){return this.append(new wr(e,t,n,(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 wr&&(t.type==io||t.type==Dh))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let n=e;n<this.parts.length;n++){let i=this.parts[n];if(!(i instanceof wr&&i.type.resolve&&i.side&2))continue;let s=i.type==z1||i.type==W1,o=i.to-i.from,a,l=n-1;for(;l>=e;l--){let g=this.parts[l];if(g instanceof wr&&g.side&1&&g.type==i.type&&!(s&&(i.side&1||g.side&2)&&(g.to-g.from+o)%3==0&&((g.to-g.from)%3||o%3))){a=g;break}}if(!a)continue;let c=i.type.resolve,d=[],h=a.from,u=i.to;if(s){let g=Math.min(2,a.to-a.from,o);h=a.to-g,u=i.from+g,c=g==1?"Emphasis":"StrongEmphasis"}a.type.mark&&d.push(this.elt(a.type.mark,h,a.to));for(let g=l+1;g<n;g++)this.parts[g]instanceof so&&d.push(this.parts[g]),this.parts[g]=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 wr(a.type,a.from,h,a.side):null,(this.parts[n]=s&&i.to!=u?new wr(i.type,u,i.to,i.side):null)?this.parts.splice(n,0,f):this.parts[n]=f}let t=[];for(let n=e;n<this.parts.length;n++){let i=this.parts[n];i instanceof so&&t.push(i)}return t}findOpeningDelimiter(e){for(let t=this.parts.length-1;t>=0;t--){let n=this.parts[t];if(n instanceof wr&&n.type==e&&n.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 wr?t:null}skipSpace(e){return Dl(this.text,e-this.offset)+this.offset}elt(e,t,n,i){return typeof e=="string"?Be(this.parser.getNodeType(e),t,n,i):new Lh(e,t)}};zl.linkStart=io;zl.imageStart=Dh;function yg(r,e){if(!e.length)return r;if(!r.length)return e;let t=r.slice(),n=0;for(let i of e){for(;n<t.length&&t[n].to<i.to;)n++;if(n<t.length&&t[n].from<i.from){let s=t[n];s instanceof so&&(t[n]=new so(s.type,s.from,s.to,yg(s.children,[i])))}else t.splice(n++,0,i)}return t}var CD=[te.CodeBlock,te.ListItem,te.OrderedList,te.BulletList],Sg=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 n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let i=e+this.fragment.offset;for(;n.to<=i;)if(!n.parent())return!1;for(;;){if(n.from>=i)return this.fragment.from<=t;if(!n.childAfter(i))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(xe.contextHash)==e}takeNodes(e){let t=this.cursor,n=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-n>i){if(t.type.isAnonymous&&t.firstChild())continue;break}let d=F1(t.from-n,e.ranges);if(t.to-n<=e.ranges[e.rangeI].to)e.addNode(t.tree,d);else{let h=new Ee(e.parser.nodeSet.types[te.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(h,t.tree),e.addNode(h,d)}if(t.type.is("Block")&&(CD.indexOf(t.type.id)<0?(o=t.to-n,a=e.block.children.length):(o=l,a=c),l=t.to-n,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 F1(r,e){let t=r;for(let n=1;n<e.length;n++){let i=e[n-1].to,s=e[n].from;i<r&&(t-=s-i)}return t}var ED=Kt({"Blockquote/...":O.quote,HorizontalRule:O.contentSeparator,"ATXHeading1/... SetextHeading1/...":O.heading1,"ATXHeading2/... SetextHeading2/...":O.heading2,"ATXHeading3/...":O.heading3,"ATXHeading4/...":O.heading4,"ATXHeading5/...":O.heading5,"ATXHeading6/...":O.heading6,"Comment CommentBlock":O.comment,Escape:O.escape,Entity:O.character,"Emphasis/...":O.emphasis,"StrongEmphasis/...":O.strong,"Link/... Image/...":O.link,"OrderedList/... BulletList/...":O.list,"BlockQuote/...":O.quote,"InlineCode CodeText":O.monospace,"URL Autolink":O.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":O.processingInstruction,"CodeInfo LinkLabel":O.labelName,LinkTitle:O.string,Paragraph:O.content}),N1=new Zl(new Qi(X1).extend(ED),Object.keys(Ch).map(r=>Ch[r]),Object.keys(Ch).map(r=>I1[r]),Object.keys(Ch),TD,T1,Object.keys(dg).map(r=>dg[r]),Object.keys(dg),[]);function RD(r,e,t){let n=[];for(let i=r.firstChild,s=e;;i=i.nextSibling){let o=i?i.from:t;if(o>s&&n.push({from:s,to:o}),!i)break;s=i.to}return n}function j1(r){let{codeParser:e,htmlParser:t}=r;return{wrap:Dd((i,s)=>{let o=i.type.id;if(e&&(o==te.CodeBlock||o==te.FencedCode)){let a="";if(o==te.FencedCode){let c=i.node.getChild(te.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==te.CodeText,bracketed:o==te.FencedCode}}else if(t&&(o==te.HTMLBlock||o==te.HTMLTag||o==te.CommentBlock))return{parser:t,overlay:RD(i.node,i.from,i.to)};return null})}}var MD={resolve:"Strikethrough",mark:"StrikethroughMark"},LD={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":O.strikethrough}},{name:"StrikethroughMark",style:O.processingInstruction}],parseInline:[{name:"Strikethrough",parse(r,e,t){if(e!=126||r.char(t+1)!=126||r.char(t+2)==126)return-1;let n=r.slice(t-1,t),i=r.slice(t+2,t+3),s=/\s|^$/.test(n),o=/\s|^$/.test(i),a=Xl.test(n),l=Xl.test(i);return r.addDelimiter(MD,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function Il(r,e,t=0,n,i=0){let s=0,o=!0,a=-1,l=-1,c=!1,d=()=>{n.push(r.elt("TableCell",i+a,i+l,r.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,n&&(a>-1&&d(),n.push(r.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++,n&&d()),s}function v1(r,e){for(let t=e;t<r.length;t++){let n=r.charCodeAt(t);if(n==124)return!0;n==92&&t++}return!1}var U1=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Ih=class{constructor(){this.rows=null}nextLine(e,t,n){if(this.rows==null){this.rows=!1;let i;if((t.next==45||t.next==58||t.next==124)&&U1.test(i=t.text.slice(t.pos))){let s=[];Il(e,n.content,0,s,n.start)==Il(e,i,0)&&(this.rows=[e.elt("TableHeader",n.start,n.start+n.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}},DD={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":O.heading}},"TableRow",{name:"TableCell",style:O.content},{name:"TableDelimiter",style:O.processingInstruction}],parseBlock:[{name:"Table",leaf(r,e){return v1(e.content,0)?new Ih:null},endLeaf(r,e,t){if(t.parsers.some(i=>i instanceof Ih)||!v1(e.text,e.basePos))return!1;let n=r.peekLine();return U1.test(n)&&Il(r,e.text,e.basePos)==Il(r,n,e.basePos)},before:"SetextHeading"}]},vg=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}},ID={defineNodes:[{name:"Task",block:!0,style:O.list},{name:"TaskMarker",style:O.atom}],parseBlock:[{name:"TaskList",leaf(r,e){return/^\[[ xX]\][ \t]/.test(e.content)&&r.parentType().name=="ListItem"?new vg:null},after:"SetextHeading"}]},x1=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,w1=/[\w-]+(\.[\w-]+)+(:\d+)?(\/[^\s<]*)?/gy,ZD=/[\w-]+\.[\w-]+($|[/:])/,P1=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,k1=/\/[a-zA-Z\d@.]+/gy;function $1(r,e,t,n){let i=0;for(let s=e;s<t;s++)r[s]==n&&i++;return i}function XD(r,e){w1.lastIndex=e;let t=w1.exec(r);if(!t||ZD.exec(t[0])[0].indexOf("_")>-1)return-1;let n=e+t[0].length;for(;;){let i=r[n-1],s;if(/[?!.,:*_~]/.test(i)||i==")"&&$1(r,e,n,")")>$1(r,e,n,"("))n--;else if(i==";"&&(s=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(r.slice(e,n))))n=e+s.index;else break}return n}function Q1(r,e){P1.lastIndex=e;let t=P1.exec(r);if(!t)return-1;let n=t[0][t[0].length-1];return n=="_"||n=="-"?-1:e+t[0].length-(n=="."?1:0)}var zD={parseInline:[{name:"Autolink",parse(r,e,t){let n=t-r.offset;if(n&&/\w/.test(r.text[n-1]))return-1;x1.lastIndex=n;let i=x1.exec(r.text),s=-1;if(!i)return-1;if(i[1]||i[2]){if(s=XD(r.text,n+i[0].length),s>-1&&r.hasOpenLink){let o=/([^\[\]]|\[[^\]]*\])*/.exec(r.text.slice(n,s));s=n+o[0].length}}else i[3]?s=Q1(r.text,n):(s=Q1(r.text,n+i[0].length),s>-1&&i[0]=="xmpp:"&&(k1.lastIndex=s,i=k1.exec(r.text),i&&(s=i.index+i[0].length)));return s<0?-1:(r.addElement(r.elt("URL",t,s+r.offset)),s+r.offset)}}]},q1=[DD,ID,LD,zD];function G1(r,e,t){return(n,i,s)=>{if(i!=r||n.char(s+1)==r)return-1;let o=[n.elt(t,s,s+1)];for(let a=s+1;a<n.end;a++){let l=n.char(a);if(l==r)return n.addElement(n.elt(e,s,a+1,o.concat(n.elt(t,a,a+1))));if(l==92&&o.push(n.elt("Escape",a,a+++2)),vn(l))break}return-1}}var H1={defineNodes:[{name:"Superscript",style:O.special(O.content)},{name:"SuperscriptMark",style:O.processingInstruction}],parseInline:[{name:"Superscript",parse:G1(94,"Superscript","SuperscriptMark")}]},K1={defineNodes:[{name:"Subscript",style:O.special(O.content)},{name:"SubscriptMark",style:O.processingInstruction}],parseInline:[{name:"Subscript",parse:G1(126,"Subscript","SubscriptMark")}]},J1={defineNodes:[{name:"Emoji",style:O.character}],parseInline:[{name:"Emoji",parse(r,e,t){let n;return e!=58||!(n=/^[a-zA-Z_0-9]+:/.exec(r.slice(t+1,r.end)))?-1:r.addElement(r.elt("Emoji",t,t+1+n[0].length))}}]};var WD=55,BD=1,VD=56,YD=2,FD=57,ND=3,ek=4,jD=5,_g=6,lk=7,ck=8,dk=9,hk=10,UD=11,qD=12,GD=13,kg=58,HD=14,KD=15,tk=59,uk=21,JD=23,fk=24,eI=25,Qg=27,pk=28,tI=29,rI=32,nI=35,iI=37,sI=38,oI=0,aI=1,lI={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},cI={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},rk={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 dI(r){return r==45||r==46||r==58||r>=65&&r<=90||r==95||r>=97&&r<=122||r>=161}var nk=null,ik=null,sk=0;function Tg(r,e){let t=r.pos+e;if(sk==t&&ik==r)return nk;let n=r.peek(e),i="";for(;dI(n);)i+=String.fromCharCode(n),n=r.peek(++e);return ik=r,sk=t,nk=i?i.toLowerCase():n==hI||n==uI?void 0:null}var mk=60,Zh=62,Ag=47,hI=63,uI=33,fI=45;function ok(r,e){this.name=r,this.parent=e}var pI=[_g,hk,lk,ck,dk],mI=new ua({start:null,shift(r,e,t,n){return pI.indexOf(e)>-1?new ok(Tg(n,1)||"",r):r},reduce(r,e){return e==uk&&r?r.parent:r},reuse(r,e,t,n){let i=e.type.id;return i==_g||i==iI?new ok(Tg(n,1)||"",r):r},strict:!1}),OI=new At((r,e)=>{if(r.next!=mk){r.next<0&&e.context&&r.acceptToken(kg);return}r.advance();let t=r.next==Ag;t&&r.advance();let n=Tg(r,0);if(n===void 0)return;if(!n)return r.acceptToken(t?KD:HD);let i=e.context?e.context.name:null;if(t){if(n==i)return r.acceptToken(UD);if(i&&cI[i])return r.acceptToken(kg,-2);if(e.dialectEnabled(oI))return r.acceptToken(qD);for(let s=e.context;s;s=s.parent)if(s.name==n)return;r.acceptToken(GD)}else{if(n=="script")return r.acceptToken(lk);if(n=="style")return r.acceptToken(ck);if(n=="textarea")return r.acceptToken(dk);if(lI.hasOwnProperty(n))return r.acceptToken(hk);i&&rk[i]&&rk[i][n]?r.acceptToken(kg,-1):r.acceptToken(_g)}},{contextual:!0}),gI=new At(r=>{for(let e=0,t=0;;t++){if(r.next<0){t&&r.acceptToken(tk);break}if(r.next==fI)e++;else if(r.next==Zh&&e>=2){t>=3&&r.acceptToken(tk,-2);break}else e=0;r.advance()}});function bI(r){for(;r;r=r.parent)if(r.name=="svg"||r.name=="math")return!0;return!1}var yI=new At((r,e)=>{if(r.next==Ag&&r.peek(1)==Zh){let t=e.dialectEnabled(aI)||bI(e.context);r.acceptToken(t?jD:ek,2)}else r.next==Zh&&r.acceptToken(ek,1)});function Cg(r,e,t){let n=2+r.length;return new At(i=>{for(let s=0,o=0,a=0;;a++){if(i.next<0){a&&i.acceptToken(e);break}if(s==0&&i.next==mk||s==1&&i.next==Ag||s>=2&&s<n&&i.next==r.charCodeAt(s-2))s++,o++;else if(s==n&&i.next==Zh){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 SI=Cg("script",WD,BD),vI=Cg("style",VD,YD),xI=Cg("textarea",FD,ND),wI=Kt({"Text RawText IncompleteTag IncompleteCloseTag":O.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":O.angleBracket,TagName:O.tagName,"MismatchedCloseTag/TagName":[O.tagName,O.invalid],AttributeName:O.attributeName,"AttributeValue UnquotedAttributeValue":O.attributeValue,Is:O.definitionOperator,"EntityReference CharacterReference":O.character,Comment:O.blockComment,ProcessingInst:O.processingInstruction,DoctypeDecl:O.documentMeta}),Ok=Er.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:mI,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:[wI],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:[SI,vI,xI,yI,OI,gI,0,1,2,3,4,5],topRules:{Document:[0,16]},dialects:{noMatch:0,selfClosing:515},tokenPrec:517});function gk(r,e){let t=Object.create(null);for(let n of r.getChildren(fk)){let i=n.getChild(eI),s=n.getChild(Qg)||n.getChild(pk);i&&(t[e.read(i.from,i.to)]=s?s.type.id==Qg?e.read(s.from+1,s.to-1):e.read(s.from,s.to):"")}return t}function ak(r,e){let t=r.getChild(JD);return t?e.read(t.from,t.to):" "}function $g(r,e,t){let n;for(let i of t)if(!i.attrs||i.attrs(n||(n=gk(r.node.parent.firstChild,e))))return{parser:i.parser,bracketed:!0};return null}function Eg(r=[],e=[]){let t=[],n=[],i=[],s=[];for(let a of r)(a.tag=="script"?t:a.tag=="style"?n: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 Dd((a,l)=>{let c=a.type.id;if(c==tI)return $g(a,l,t);if(c==rI)return $g(a,l,n);if(c==nI)return $g(a,l,i);if(c==uk&&s.length){let d=a.node,h=d.firstChild,u=h&&ak(h,l),f;if(u){for(let m of s)if(m.tag==u&&(!m.attrs||m.attrs(f||(f=gk(h,l))))){let g=d.lastChild,v=g.type.id==sI?g.from:d.to;if(v>h.to)return{parser:m.parser,overlay:[{from:h.to,to:v}]}}}}if(o&&c==fk){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!=ak(d.parent,l))continue;let m=d.lastChild;if(m.type.id==Qg){let g=m.from+1,v=m.lastChild,k=m.to-(v&&v.isError?0:1);if(k>g)return{parser:f.parser,overlay:[{from:g,to:k}],bracketed:!0}}else if(m.type.id==pk)return{parser:f.parser,overlay:[{from:m.from,to:m.to}]}}}}return null})}var PI=148,bk=1,kI=149,$I=150,Sk=2,QI=151,TI=3,_I=4,vk=[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],AI=58,CI=40,xk=95,EI=91,Xh=45,RI=46,MI=35,LI=37,DI=38,II=92,ZI=10,XI=42;function Wl(r){return r>=65&&r<=90||r>=97&&r<=122||r>=161}function Rg(r){return r>=48&&r<=57}function yk(r){return Rg(r)||r>=97&&r<=102||r>=65&&r<=70}var wk=(r,e,t)=>(n,i)=>{for(let s=!1,o=0,a=0;;a++){let{next:l}=n;if(Wl(l)||l==Xh||l==xk||s&&Rg(l))!s&&(l!=Xh||a>0)&&(s=!0),o===a&&l==Xh&&o++,n.advance();else if(l==II&&n.peek(1)!=ZI){if(n.advance(),yk(n.next)){do n.advance();while(yk(n.next));n.next==32&&n.advance()}else n.next>-1&&n.advance();s=!0}else{s&&n.acceptToken(o==2&&i.canShift(Sk)?e:l==CI?t:r);break}}},zI=new At(wk(kI,Sk,$I),{contextual:!0}),WI=new At(wk(QI,TI,_I),{contextual:!0}),BI=new At(r=>{if(vk.includes(r.peek(-1))){let{next:e}=r;(Wl(e)||e==xk||e==MI||e==RI||e==XI||e==EI||e==AI&&Wl(r.peek(1))||e==Xh||e==DI)&&r.acceptToken(PI)}}),VI=new At(r=>{if(!vk.includes(r.peek(-1))){let{next:e}=r;if(e==LI&&(r.advance(),r.acceptToken(bk)),Wl(e)){do r.advance();while(Wl(r.next)||Rg(r.next));r.acceptToken(bk)}}}),YI=Kt({"AtKeyword import charset namespace keyframes media supports font-feature-values":O.definitionKeyword,"from to selector scope MatchFlag":O.keyword,NamespaceName:O.namespace,KeyframeName:O.labelName,KeyframeRangeName:O.operatorKeyword,TagName:O.tagName,ClassName:O.className,PseudoClassName:O.constant(O.className),IdName:O.labelName,"FeatureName PropertyName":O.propertyName,AttributeName:O.attributeName,NumberLiteral:O.number,KeywordQuery:O.keyword,UnaryQueryOp:O.operatorKeyword,"CallTag ValueName FontName":O.atom,VariableName:O.variableName,Callee:O.operatorKeyword,Unit:O.unit,"UniversalSelector NestingSelector":O.definitionOperator,"MatchOp CompareOp":O.compareOperator,"ChildOp SiblingOp, LogicOp":O.logicOperator,BinOp:O.arithmeticOperator,Important:O.modifier,Comment:O.blockComment,ColorLiteral:O.color,"ParenthesizedContent StringLiteral":O.string,":":O.punctuation,"PseudoOp #":O.derefOperator,"; , |":O.separator,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace}),FI={__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},NI={__proto__:null,or:104,and:104,not:112,only:112,layer:212},jI={__proto__:null,selector:118,style:124,layer:208},UI={__proto__:null,"@import":204,"@media":216,"@charset":220,"@namespace":224,"@keyframes":230,"@supports":242,"@scope":246,"@font-feature-values":252},qI={__proto__:null,to:249},Pk=Er.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:[YI],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:[BI,VI,zI,WI,1,2,3,4,new si("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:r=>FI[r]||-1},{term:151,get:r=>NI[r]||-1},{term:4,get:r=>jI[r]||-1},{term:28,get:r=>UI[r]||-1},{term:149,get:r=>qI[r]||-1}],tokenPrec:2444});var Mg=null;function Lg(){if(!Mg&&typeof document=="object"&&document.body){let{style:r}=document.body,e=[],t=new Set;for(let n in r)n!="cssText"&&n!="cssFloat"&&typeof r[n]=="string"&&(/[A-Z]/.test(n)&&(n=n.replace(/[A-Z]/g,i=>"-"+i.toLowerCase())),t.has(n)||(e.push(n),t.add(n)));Mg=e.sort().map(n=>({type:"property",label:n,apply:n+": "}))}return Mg||[]}var kk=["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(r=>({type:"class",label:r})),$k=["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(r=>({type:"keyword",label:r})).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(r=>({type:"constant",label:r}))),GI=["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(r=>({type:"type",label:r})),HI=["@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(r=>({type:"keyword",label:r})),Ri=/^(\w[\w-]*|-\w[\w-]*|)$/,KI=/^-(-[\w-]*)?$/;function JI(r,e){var t;if((r.name=="("||r.type.isError)&&(r=r.parent||r),r.name!="ArgList")return!1;let n=(t=r.parent)===null||t===void 0?void 0:t.firstChild;return(n==null?void 0:n.name)!="Callee"?!1:e.sliceString(n.from,n.to)=="var"}var Qk=new jo,eZ=["Declaration"];function tZ(r){for(let e=r;;){if(e.type.isTop)return e;if(!(e=e.parent))return r}}function Tk(r,e,t){if(e.to-e.from>4096){let n=Qk.get(e);if(n)return n;let i=[],s=new Set,o=e.cursor(We.IncludeAnonymous);if(o.firstChild())do for(let a of Tk(r,o.node,t))s.has(a.label)||(s.add(a.label),i.push(a));while(o.nextSibling());return Qk.set(e,i),i}else{let n=[],i=new Set;return e.cursor().iterate(s=>{var o;if(t(s)&&s.matchContext(eZ)&&((o=s.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let a=r.sliceString(s.from,s.to);i.has(a)||(i.add(a),n.push({label:a,type:"variable"}))}}),n}}var rZ=r=>e=>{let{state:t,pos:n}=e,i=ze(t).resolveInner(n,-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:Lg(),validFor:Ri};if(i.name=="ValueName")return{from:i.from,options:$k,validFor:Ri};if(i.name=="PseudoClassName")return{from:i.from,options:kk,validFor:Ri};if(r(i)||(e.explicit||s)&&JI(i,t.doc))return{from:r(i)||s?i.from:n,options:Tk(t.doc,tZ(i),r),validFor:KI};if(i.name=="TagName"){for(let{parent:l}=i;l;l=l.parent)if(l.name=="Block")return{from:i.from,options:Lg(),validFor:Ri};return{from:i.from,options:GI,validFor:Ri}}if(i.name=="AtKeyword")return{from:i.from,options:HI,validFor:Ri};if(!e.explicit)return null;let o=i.resolve(n),a=o.childBefore(n);return a&&a.name==":"&&o.name=="PseudoClassSelector"?{from:n,options:kk,validFor:Ri}:a&&a.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:n,options:$k,validFor:Ri}:o.name=="Block"||o.name=="Styles"?{from:n,options:Lg(),validFor:Ri}:null},nZ=rZ(r=>r.name=="VariableName"),Bl=Jt.define({name:"css",parser:Pk.configure({props:[Cr.add({Declaration:Gr()}),dr.add({"Block KeyframeList":Vt})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function _k(){return new Fe(Bl,Bl.data.of({autocomplete:nZ}))}var iZ=316,sZ=317,Ak=1,oZ=2,aZ=3,lZ=4,cZ=318,dZ=320,hZ=321,uZ=5,fZ=6,pZ=0,Ig=[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],Ck=125,mZ=59,Zg=47,OZ=42,gZ=43,bZ=45,yZ=60,SZ=44,vZ=63,xZ=46,wZ=91,PZ=new ua({start:!1,shift(r,e){return e==uZ||e==fZ||e==dZ?r:e==hZ},strict:!1}),kZ=new At((r,e)=>{let{next:t}=r;(t==Ck||t==-1||e.context)&&r.acceptToken(cZ)},{contextual:!0,fallback:!0}),$Z=new At((r,e)=>{let{next:t}=r,n;Ig.indexOf(t)>-1||t==Zg&&((n=r.peek(1))==Zg||n==OZ)||t!=Ck&&t!=mZ&&t!=-1&&!e.context&&r.acceptToken(iZ)},{contextual:!0}),QZ=new At((r,e)=>{r.next==wZ&&!e.context&&r.acceptToken(sZ)},{contextual:!0}),TZ=new At((r,e)=>{let{next:t}=r;if(t==gZ||t==bZ){if(r.advance(),t==r.next){r.advance();let n=!e.context&&e.canShift(Ak);r.acceptToken(n?Ak:oZ)}}else t==vZ&&r.peek(1)==xZ&&(r.advance(),r.advance(),(r.next<48||r.next>57)&&r.acceptToken(aZ))},{contextual:!0});function Dg(r,e){return r>=65&&r<=90||r>=97&&r<=122||r==95||r>=192||!e&&r>=48&&r<=57}var _Z=new At((r,e)=>{if(r.next!=yZ||!e.dialectEnabled(pZ)||(r.advance(),r.next==Zg))return;let t=0;for(;Ig.indexOf(r.next)>-1;)r.advance(),t++;if(Dg(r.next,!0)){for(r.advance(),t++;Dg(r.next,!1);)r.advance(),t++;for(;Ig.indexOf(r.next)>-1;)r.advance(),t++;if(r.next==SZ)return;for(let n=0;;n++){if(n==7){if(!Dg(r.next,!0))return;break}if(r.next!="extends".charCodeAt(n))break;r.advance(),t++}}r.acceptToken(lZ,-t)}),AZ=Kt({"get set async static":O.modifier,"for while do if else switch try catch finally return throw break continue default case defer":O.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":O.operatorKeyword,"let var const using function class extends":O.definitionKeyword,"import export from":O.moduleKeyword,"with debugger new":O.keyword,TemplateString:O.special(O.string),super:O.atom,BooleanLiteral:O.bool,this:O.self,null:O.null,Star:O.modifier,VariableName:O.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":O.function(O.variableName),VariableDefinition:O.definition(O.variableName),Label:O.labelName,PropertyName:O.propertyName,PrivatePropertyName:O.special(O.propertyName),"CallExpression/MemberExpression/PropertyName":O.function(O.propertyName),"FunctionDeclaration/VariableDefinition":O.function(O.definition(O.variableName)),"ClassDeclaration/VariableDefinition":O.definition(O.className),"NewExpression/VariableName":O.className,PropertyDefinition:O.definition(O.propertyName),PrivatePropertyDefinition:O.definition(O.special(O.propertyName)),UpdateOp:O.updateOperator,"LineComment Hashbang":O.lineComment,BlockComment:O.blockComment,Number:O.number,String:O.string,Escape:O.escape,ArithOp:O.arithmeticOperator,LogicOp:O.logicOperator,BitOp:O.bitwiseOperator,CompareOp:O.compareOperator,RegExp:O.regexp,Equals:O.definitionOperator,Arrow:O.function(O.punctuation),": Spread":O.punctuation,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace,"InterpolationStart InterpolationEnd":O.special(O.brace),".":O.derefOperator,", ;":O.separator,"@":O.meta,TypeName:O.typeName,TypeDefinition:O.definition(O.typeName),"type enum interface implements namespace module declare":O.definitionKeyword,"abstract global Privacy readonly override":O.modifier,"is keyof unique infer asserts":O.operatorKeyword,JSXAttributeValue:O.attributeValue,JSXText:O.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":O.angleBracket,"JSXIdentifier JSXNameSpacedName":O.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":O.attributeName,"JSXBuiltin/JSXIdentifier":O.standard(O.tagName)}),CZ={__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},EZ={__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},RZ={__proto__:null,"<":193},Ek=Er.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:PZ,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:[AZ],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:[$Z,QZ,TZ,_Z,2,3,4,5,6,7,8,9,10,11,12,13,14,kZ,new si("$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 si("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:r=>CZ[r]||-1},{term:343,get:r=>EZ[r]||-1},{term:95,get:r=>RZ[r]||-1}],tokenPrec:15201});var Dk=[vr("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),vr("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),vr("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),vr("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),vr("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),vr(`try {
\${}
} catch (\${error}) {
\${}
}`,{label:"try",detail:"/ catch block",type:"keyword"}),vr("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),vr(`if (\${}) {
\${}
} else {
\${}
}`,{label:"if",detail:"/ else block",type:"keyword"}),vr(`class \${name} {
constructor(\${params}) {
\${}
}
}`,{label:"class",detail:"definition",type:"keyword"}),vr('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),vr('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],MZ=Dk.concat([vr("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),vr("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),vr("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Rk=new jo,Ik=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Vl(r){return(e,t)=>{let n=e.node.getChild("VariableDefinition");return n&&t(n,r),!0}}var LZ=["FunctionDeclaration"],DZ={FunctionDeclaration:Vl("function"),ClassDeclaration:Vl("class"),ClassExpression:()=>!0,EnumDeclaration:Vl("constant"),TypeAliasDeclaration:Vl("type"),NamespaceDeclaration:Vl("namespace"),VariableDefinition(r,e){r.matchContext(LZ)||e(r,"variable")},TypeDefinition(r,e){e(r,"type")},__proto__:null};function Zk(r,e){let t=Rk.get(e);if(t)return t;let n=[],i=!0;function s(o,a){let l=r.sliceString(o.from,o.to);n.push({label:l,type:a})}return e.cursor(We.IncludeAnonymous).iterate(o=>{if(i)i=!1;else if(o.name){let a=DZ[o.name];if(a&&a(o,s)||Ik.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of Zk(r,o.node))n.push(a);return!1}}),Rk.set(e,n),n}var Mk=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,Xk=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function IZ(r){let e=ze(r.state).resolveInner(r.pos,-1);if(Xk.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&Mk.test(r.state.sliceDoc(e.from,e.to));if(!t&&!r.explicit)return null;let n=[];for(let i=e;i;i=i.parent)Ik.has(i.name)&&(n=n.concat(Zk(r.state.doc,i)));return{options:n,from:t?e.from:r.pos,validFor:Mk}}var Bn=Jt.define({name:"javascript",parser:Ek.configure({props:[Cr.add({IfStatement:Gr({except:/^\s*({|else\b)/}),TryStatement:Gr({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:ox,SwitchBody:r=>{let e=r.textAfter,t=/^\s*\}/.test(e),n=/^\s*(case|default)\b/.test(e);return r.baseIndent+(t?0:n?1:2)*r.unit},Block:Go({closing:"}"}),ArrowFunction:r=>r.baseIndent+r.unit,"TemplateString BlockComment":()=>null,"Statement Property":Gr({except:/^\s*{/}),JSXElement(r){let e=/^\s*<\//.test(r.textAfter);return r.lineIndent(r.node.from)+(e?0:r.unit)},JSXEscape(r){let e=/\s*\}/.test(r.textAfter);return r.lineIndent(r.node.from)+(e?0:r.unit)},"JSXOpenTag JSXSelfClosingTag"(r){return r.column(r.node.from)+r.unit}}),dr.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":Vt,BlockComment(r){return{from:r.from+2,to:r.to-2}},JSXElement(r){let e=r.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=r.lastChild;return{from:e.to,to:t.type.isError?r.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(r){var e;let t=(e=r.firstChild)===null||e===void 0?void 0:e.nextSibling,n=r.lastChild;return!t||t.type.isError?null:{from:t.to,to:n.type.isError?r.to:n.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),zk={test:r=>/^JSX/.test(r.name),facet:Uo({commentTokens:{block:{open:"{/*",close:"*/}"}}})},Xg=Bn.configure({dialect:"ts"},"typescript"),zg=Bn.configure({dialect:"jsx",props:[Yd.add(r=>r.isTop?[zk]:void 0)]}),Wg=Bn.configure({dialect:"jsx ts",props:[Yd.add(r=>r.isTop?[zk]:void 0)]},"typescript"),Wk=r=>({label:r,type:"keyword"}),Bk="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(Wk),ZZ=Bk.concat(["declare","implements","private","protected","public"].map(Wk));function Vk(r={}){let e=r.jsx?r.typescript?Wg:zg:r.typescript?Xg:Bn,t=r.typescript?MZ.concat(ZZ):Dk.concat(Bk);return new Fe(e,[Bn.data.of({autocomplete:$x(Xk,kx(t))}),Bn.data.of({autocomplete:IZ}),r.jsx?WZ:[]])}function XZ(r){for(;;){if(r.name=="JSXOpenTag"||r.name=="JSXSelfClosingTag"||r.name=="JSXFragmentTag")return r;if(r.name=="JSXEscape"||!r.parent)return null;r=r.parent}}function Lk(r,e,t=r.length){for(let n=e==null?void 0:e.firstChild;n;n=n.nextSibling)if(n.name=="JSXIdentifier"||n.name=="JSXBuiltin"||n.name=="JSXNamespacedName"||n.name=="JSXMemberExpression")return r.sliceString(n.from,Math.min(n.to,t));return""}var zZ=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),WZ=N.inputHandler.of((r,e,t,n,i)=>{if((zZ?r.composing:r.compositionStarted)||r.state.readOnly||e!=t||n!=">"&&n!="/"||!Bn.isActiveAt(r.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)!=n||h.name=="JSXAttributeValue"&&h.to>d)){if(n==">"&&h.name=="JSXFragmentTag")return{range:l,changes:{from:d,insert:"</>"}};if(n=="/"&&h.name=="JSXStartCloseTag"){let f=h.parent,m=f.parent;if(m&&f.from==d-2&&((u=Lk(o.doc,m.firstChild,d))||((c=m.firstChild)===null||c===void 0?void 0:c.name)=="JSXFragmentTag")){let g=`${u}>`;return{range:Z.cursor(d+g.length,-1),changes:{from:d,insert:g}}}}else if(n==">"){let f=XZ(h);if(f&&f.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(d,d+2))&&(u=Lk(o.doc,f,d)))return{range:l,changes:{from:d,insert:`</${u}>`}}}}return{range:l}});return a.changes.empty?!1:(r.dispatch([s,o.update(a,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var Yl=["_blank","_self","_top","_parent"],Bg=["ascii","utf-8","utf-16","latin1","latin1"],Vg=["get","post","put","delete"],Yg=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],Jr=["true","false"],ye={},BZ={a:{attrs:{href:null,ping:null,type:null,media:null,target:Yl,hreflang:null}},abbr:ye,address:ye,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:ye,aside:ye,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:ye,base:{attrs:{href:null,target:Yl}},bdi:ye,bdo:ye,blockquote:{attrs:{cite:null}},body:ye,br:ye,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:Yg,formmethod:Vg,formnovalidate:["novalidate"],formtarget:Yl,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:ye,center:ye,cite:ye,code:ye,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:ye,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:ye,div:ye,dl:ye,dt:ye,em:ye,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:ye,figure:ye,footer:ye,form:{attrs:{action:null,name:null,"accept-charset":Bg,autocomplete:["on","off"],enctype:Yg,method:Vg,novalidate:["novalidate"],target:Yl}},h1:ye,h2:ye,h3:ye,h4:ye,h5:ye,h6:ye,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:ye,hgroup:ye,hr:ye,html:{attrs:{manifest:null}},i:ye,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:Yg,formmethod:Vg,formnovalidate:["novalidate"],formtarget:Yl,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:ye,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:ye,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:ye,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:Bg,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:ye,noscript:ye,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:ye,param:{attrs:{name:null,value:null}},pre:ye,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:ye,rt:ye,ruby:ye,samp:ye,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:Bg}},section:ye,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:ye,source:{attrs:{src:null,type:null,media:null}},span:ye,strong:ye,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:ye,summary:ye,sup:ye,table:ye,tbody:ye,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:ye,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:ye,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:ye,time:{attrs:{datetime:null}},title:ye,tr:ye,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:ye,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:ye},jk={accesskey:null,class:null,contenteditable:Jr,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:Jr,autocorrect:Jr,autocapitalize:Jr,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":Jr,"aria-autocomplete":["inline","list","both","none"],"aria-busy":Jr,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":Jr,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":Jr,"aria-hidden":Jr,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":Jr,"aria-multiselectable":Jr,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":Jr,"aria-relevant":null,"aria-required":Jr,"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},Uk="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(r=>"on"+r);for(let r of Uk)jk[r]=null;var oo=class{constructor(e,t){this.tags=gt(gt({},BZ),e),this.globalAttrs=gt(gt({},jk),t),this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};oo.default=new oo;function ao(r,e,t=r.length){if(!e)return"";let n=e.firstChild,i=n&&n.getChild("TagName");return i?r.sliceString(i.from,Math.min(i.to,t)):""}function pa(r,e=!1){for(;r;r=r.parent)if(r.name=="Element")if(e)e=!1;else return r;return null}function qk(r,e,t){let n=t.tags[ao(r,pa(e))];return(n==null?void 0:n.children)||t.allTags}function Fg(r,e){let t=[];for(let n=pa(e);n&&!n.type.isTop;n=pa(n.parent)){let i=ao(r,n);if(i&&n.lastChild.name=="CloseTag")break;i&&t.indexOf(i)<0&&(e.name=="EndTag"||e.from>=n.firstChild.to)&&t.push(i)}return t}var Gk=/^[:\-\.\w\u00b7-\uffff]*$/;function Yk(r,e,t,n,i){let s=/\s*>/.test(r.sliceDoc(i,i+5))?"":">",o=pa(t,t.name=="StartTag"||t.name=="TagName");return{from:n,to:i,options:qk(r.doc,o,e).map(a=>({label:a,type:"type"})).concat(Fg(r.doc,t).map((a,l)=>({label:"/"+a,apply:"/"+a+s,type:"type",boost:99-l}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function Fk(r,e,t,n){let i=/\s*>/.test(r.sliceDoc(n,n+5))?"":">";return{from:t,to:n,options:Fg(r.doc,e).map((s,o)=>({label:s,apply:s+i,type:"type",boost:99-o})),validFor:Gk}}function VZ(r,e,t,n){let i=[],s=0;for(let o of qk(r.doc,t,e))i.push({label:"<"+o,type:"type"});for(let o of Fg(r.doc,t))i.push({label:"</"+o+">",type:"type",boost:99-s++});return{from:n,to:n,options:i,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function YZ(r,e,t,n,i){let s=pa(t),o=s?e.tags[ao(r.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:n,to:i,options:l.map(c=>({label:c,type:"property"})),validFor:Gk}}function FZ(r,e,t,n,i){var s;let o=(s=t.parent)===null||s===void 0?void 0:s.getChild("AttributeName"),a=[],l;if(o){let c=r.sliceDoc(o.from,o.to),d=e.globalAttrs[c];if(!d){let h=pa(t),u=h?e.tags[ao(r.doc,h)]:null;d=(u==null?void 0:u.attrs)&&u.attrs[c]}if(d){let h=r.sliceDoc(n,i).toLowerCase(),u='"',f='"';/^['"]/.test(h)?(l=h[0]=='"'?/^[^"]*$/:/^[^']*$/,u="",f=r.sliceDoc(i,i+1)==h[0]?"":h[0],h=h.slice(1),n++):l=/^[^\s<>='"]*$/;for(let m of d)a.push({label:m,apply:u+m+f,type:"constant"})}}return{from:n,to:i,options:a,validFor:l}}function Hk(r,e){let{state:t,pos:n}=e,i=ze(t).resolveInner(n,-1),s=i.resolve(n);for(let o=n,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)?Fk(t,i,i.from,n):Yk(t,r,i,i.from,n):i.name=="StartTag"||i.name=="IncompleteTag"?Yk(t,r,i,n,n):i.name=="StartCloseTag"||i.name=="IncompleteCloseTag"?Fk(t,i,n,n):i.name=="OpenTag"||i.name=="SelfClosingTag"||i.name=="AttributeName"?YZ(t,r,i,i.name=="AttributeName"?i.from:n,n):i.name=="Is"||i.name=="AttributeValue"||i.name=="UnquotedAttributeValue"?FZ(t,r,i,i.name=="Is"?n:i.from,n):e.explicit&&(s.name=="Element"||s.name=="Text"||s.name=="Document")?VZ(t,r,i,n):null}function Kk(r){return Hk(oo.default,r)}function NZ(r){let{extraTags:e,extraGlobalAttributes:t}=r,n=t||e?new oo(e,t):oo.default;return i=>Hk(n,i)}var jZ=Bn.parser.configure({top:"SingleExpression"}),Jk=[{tag:"script",attrs:r=>r.type=="text/typescript"||r.lang=="ts",parser:Xg.parser},{tag:"script",attrs:r=>r.type=="text/babel"||r.type=="text/jsx",parser:zg.parser},{tag:"script",attrs:r=>r.type=="text/typescript-jsx",parser:Wg.parser},{tag:"script",attrs(r){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(r.type)},parser:jZ},{tag:"script",attrs(r){return!r.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(r.type)},parser:Bn.parser},{tag:"style",attrs(r){return(!r.lang||r.lang=="css")&&(!r.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(r.type))},parser:Bl.parser}],e$=[{name:"style",parser:Bl.parser.configure({top:"Styles"})}].concat(Uk.map(r=>({name:r,parser:Bn.parser}))),t$=Jt.define({name:"html",parser:Ok.configure({props:[Cr.add({Element(r){let e=/^(\s*)(<\/)?/.exec(r.textAfter);return r.node.to<=r.pos+e[0].length?r.continue():r.lineIndent(r.node.from)+(e[2]?0:r.unit)},"OpenTag CloseTag SelfClosingTag"(r){return r.column(r.node.from)+r.unit},Document(r){if(r.pos+/\s*/.exec(r.textAfter)[0].length<r.node.to)return r.continue();let e=null,t;for(let n=r.node;;){let i=n.lastChild;if(!i||i.name!="Element"||i.to!=n.to)break;e=n=i}return e&&!((t=e.lastChild)&&(t.name=="CloseTag"||t.name=="SelfClosingTag"))?r.lineIndent(e.from)+r.unit:null}}),dr.add({Element(r){let e=r.firstChild,t=r.lastChild;return!e||e.name!="OpenTag"?null:{from:e.to,to:t.name=="CloseTag"?t.from:r.to}}}),Vm.add({"OpenTag CloseTag":r=>r.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:"<!--",close:"-->"}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),zh=t$.configure({wrap:Eg(Jk,e$)});function r$(r={}){let e="",t;r.matchClosingTags===!1&&(e="noMatch"),r.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(r.nestedLanguages&&r.nestedLanguages.length||r.nestedAttributes&&r.nestedAttributes.length)&&(t=Eg((r.nestedLanguages||[]).concat(Jk),(r.nestedAttributes||[]).concat(e$)));let n=t?t$.configure({wrap:t,dialect:e}):e?zh.configure({dialect:e}):zh;return new Fe(n,[zh.data.of({autocomplete:NZ(r)}),r.autoCloseTags!==!1?qZ:[],Vk().support,_k().support])}var Nk=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" "));function UZ(r,e,t){for(var n;;){if(((n=e.lastChild)===null||n===void 0?void 0:n.name)!="CloseTag")return!1;let i=e.parent;if(!i||ao(r,i)!=t)return!0;e=i}}var qZ=N.inputHandler.of((r,e,t,n,i)=>{if(r.composing||r.state.readOnly||e!=t||n!=">"&&n!="/"||!zh.isActiveAt(r.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)==n,{head:h}=l,u=ze(o).resolveInner(h,-1),f;if(d&&n==">"&&u.name=="EndTag"){let m=u.parent;if((f=ao(o.doc,m.parent,h))&&!Nk.has(f)&&!UZ(o.doc,m.parent,f)){let g=h+(o.doc.sliceString(h,h+1)===">"?1:0),v=`</${f}>`;return{range:l,changes:{from:h,to:g,insert:v}}}}else if(d&&n=="/"&&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))&&!Nk.has(f)){let g=h+(o.doc.sliceString(h,h+1)===">"?1:0),v=`${f}>`;return{range:Z.cursor(h+v.length,-1),changes:{from:h,to:g,insert:v}}}}return{range:l}});return a.changes.empty?!1:(r.dispatch([s,o.update(a,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var s$=Uo({commentTokens:{block:{open:"<!--",close:"-->"}}}),o$=new xe,a$=N1.configure({props:[dr.add(r=>!r.is("Block")||r.is("Document")||Ug(r)!=null||GZ(r)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),o$.add(Ug),Cr.add({Document:()=>null}),Ai.add({Document:s$})]});function Ug(r){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(r.name);return e?+e[1]:void 0}function GZ(r){return r.name=="OrderedList"||r.name=="BulletList"}function HZ(r,e){let t=r;for(;;){let n=t.nextSibling,i;if(!n||(i=Ug(n.type))!=null&&i<=e)break;t=n}return t.to}var KZ=zm.of((r,e,t)=>{for(let n=ze(r).resolveInner(t,-1);n&&!(n.from<e);n=n.parent){let i=n.type.prop(o$);if(i==null)continue;let s=HZ(n,i);if(s>t)return{from:t,to:s}}return null});function qg(r){return new cr(s$,r,[],"markdown")}var JZ=qg(a$),e5=a$.configure([q1,K1,H1,J1,{props:[dr.add({Table:(r,e)=>({from:e.doc.lineAt(r.from).to,to:r.to})})]}]),Wh=qg(e5);function t5(r,e){return t=>{if(t&&r){let n=null;if(t=/\S*/.exec(t)[0],typeof r=="function"?n=r(t):n=bl.matchLanguageName(r,t,!0),n instanceof bl)return n.support?n.support.language.parser:qs.getSkippingParser(n.load());if(n)return n.parser}return e?e.parser:null}}var Fl=class{constructor(e,t,n,i,s,o,a){this.node=e,this.from=t,this.to=n,this.spaceBefore=i,this.spaceAfter=s,this.type=o,this.item=a}blank(e,t=!0){let n=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;n.length<e;)n+=" ";return n}else{for(let i=this.to-this.from-n.length-this.spaceAfter.length;i>0;i--)n+=" ";return n+(t?this.spaceAfter:"")}}marker(e,t){let n=this.node.name=="OrderedList"?String(+c$(this.item,e)[2]+t):"";return this.spaceBefore+n+this.type+this.spaceAfter}};function l$(r,e){let t=[],n=[];for(let i=r;i;i=i.parent){if(i.name=="FencedCode")return n;(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))))n.push(new Fl(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),n.push(new Fl(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]/," ")),n.push(new Fl(s.parent,l,l+d,o[1],c,h,s))}}return n}function c$(r,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(r.from,r.from+10))}function Ng(r,e,t,n=0){for(let i=-1,s=r;;){if(s.name=="ListItem"){let a=c$(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+n)})}i=l}let o=s.nextSibling;if(!o)break;s=o}}function Gg(r,e){let t=/^[ \t]*/.exec(r)[0].length;if(!t||e.facet(bn)!=" ")return r;let n=Gt(r,4,t),i="";for(let s=n;s>0;)s>=4?(i+=" ",s-=4):(i+=" ",s--);return i+r.slice(t)}var r5=(r={})=>({state:e,dispatch:t})=>{let n=ze(e),{doc:i}=e,s=null,o=e.changeByRange(a=>{if(!a.empty||!Wh.isActiveAt(e,a.from,-1)&&!Wh.isActiveAt(e,a.from,1))return s={range:a};let l=a.from,c=i.lineAt(l),d=l$(n.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 k=h.node.firstChild,L=h.node.getChild("ListItem","ListItem");if(k.to>=l||L&&L.to<l||c.from>0&&!/[^\s>]/.test(i.lineAt(c.from-1).text)||r.nonTightLists===!1){let M=d.length>1?d[d.length-2]:null,D,w="";M&&M.item?(D=c.from+M.from,w=M.marker(i,1)):D=c.from+(M?M.to:0);let x=[{from:D,to:l,insert:w}];return h.node.name=="OrderedList"&&Ng(h.item,i,x,-2),M&&M.node.name=="OrderedList"&&Ng(M.item,i,x),{range:Z.cursor(D+w.length),changes:x}}else{let M=i$(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 k=i.lineAt(c.from-1),L=/>\s*$/.exec(k.text);if(L&&L.index==h.from){let M=e.changes([{from:k.from+L.index,to:k.to},{from:c.from+h.from,to:c.to}]);return{range:a.map(M),changes:M}}}let f=[];h.node.name=="OrderedList"&&Ng(h.item,i,f);let m=h.item&&h.item.from<c.from,g="";if(!m||/^[\s\d.)\-+*>]*/.exec(c.text)[0].length>=h.to)for(let k=0,L=d.length-1;k<=L;k++)g+=k==L&&!m?d[k].marker(i,1):d[k].blank(k<L?Gt(c.text,4,d[k+1].from)-g.length:null);let v=l;for(;v>c.from&&/\s/.test(c.text.charAt(v-c.from-1));)v--;return g=Gg(g,e),i5(h.node,e.doc)&&(g=i$(d,e,c)+e.lineBreak+g),f.push({from:v,to:l,insert:e.lineBreak+g}),{range:Z.cursor(v+g.length+1),changes:f}});return s?!1:(t(e.update(o,{scrollIntoView:!0,userEvent:"input"})),!0)},n5=r5();function n$(r){return r.name=="QuoteMark"||r.name=="ListMark"}function i5(r,e){if(r.name!="OrderedList"&&r.name!="BulletList")return!1;let t=r.firstChild,n=r.getChild("ListItem","ListItem");if(!n)return!1;let i=e.lineAt(t.to),s=e.lineAt(n.from),o=/^[\s>]*$/.test(i.text);return i.number+(o?0:1)<s.number}function i$(r,e,t){let n="";for(let i=0,s=r.length-2;i<=s;i++)n+=r[i].blank(i<s?Gt(t.text,4,r[i+1].from)-n.length:null,i<s);return Gg(n,e)}function s5(r,e){let t=r.resolveInner(e,-1),n=e;n$(t)&&(n=t.from,t=t.parent);for(let i;i=t.childBefore(n);)if(n$(i))n=i.from;else if(i.name=="OrderedList"||i.name=="BulletList")t=i.lastChild,n=t.to;else break;return t}var o5=({state:r,dispatch:e})=>{let t=ze(r),n=null,i=r.changeByRange(s=>{let o=s.from,{doc:a}=r;if(s.empty&&Wh.isActiveAt(r,s.from)){let l=a.lineAt(o),c=l$(s5(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=Gg(f,r)),{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 n={range:s}});return n?!1:(e(r.update(i,{scrollIntoView:!0,userEvent:"delete"})),!0)},a5=[{key:"Enter",run:n5},{key:"Backspace",run:o5}],d$=r$({matchClosingTags:!1});function h$(r={}){let{codeLanguages:e,defaultCodeLanguage:t,addKeymap:n=!0,base:{parser:i}=JZ,completeHTMLTags:s=!0,pasteURLAsLink:o=!0,htmlTagLanguage:a=d$}=r;if(!(i instanceof Zl))throw new RangeError("Base parser provided to `markdown` should be a Markdown parser");let l=r.extensions?[r.extensions]:[],c=[a.support,KZ],d;o&&c.push(h5),t instanceof Fe?(c.push(t.support),d=t.language):t&&(d=t);let h=e||d?t5(e,d):void 0;l.push(j1({codeParser:h,htmlParser:a.language.parser})),n&&c.push(fn.high(Sr.of(a5)));let u=qg(i.configure(l));return s&&c.push(u.data.of({autocomplete:l5})),new Fe(u,c)}function l5(r){let{state:e,pos:t}=r,n=/<[:\-\.\w\u00b7-\uffff]*$/.exec(e.sliceDoc(t-25,t));if(!n)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-n[0].length,to:t,options:c5(),validFor:/^<[:\-\.\w\u00b7-\uffff]*$/}}var jg=null;function c5(){if(jg)return jg;let r=Kk(new jd(Me.create({extensions:d$}),0,!0));return jg=r?r.options:[]}var d5=/code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i,h5=N.domEventHandlers({paste:(r,e)=>{var t;let{main:n}=e.state.selection;if(n.empty)return!1;let i=(t=r.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),!Wh.isActiveAt(e.state,n.from,1)))return!1;let s=ze(e.state),o=!1;return s.iterate({from:n.from,to:n.to,enter:a=>{(a.from>n.from||d5.test(a.name))&&(o=!0)},leave:a=>{a.to<n.to&&(o=!0)}}),o?!1:(e.dispatch({changes:[{from:n.from,insert:"["},{from:n.to,insert:`](${i})`}],userEvent:"input.paste",scrollIntoView:!0}),!0)}});var Hg={"text/x-csrc":{language:ZO(),parser:null},6502:{language:o1(),parser:null},z80:{language:c1(),parser:null},"text/x-wiz":{language:d1(),parser:eg},verilog:{language:h1(),parser:rg},inform6:{language:u1(),parser:ng},dialog:{language:f1(),parser:ig},basic:{language:p1(),parser:og},fastbasic:{language:m1(),parser:ag},bataribasic:{language:O1(),parser:lg},markdown:{language:h$(),parser:null},6809:{language:null,parser:null},vasm:{language:null,parser:null},gas:{language:null,parser:null},ecs:{language:null,parser:null}};function u$(r){var t;let e=Hg[r];return(t=e==null?void 0:e.language)!=null?t:null}function Kg(){return ZO()}var u5=N.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}),f5=ns.define([{tag:O.standard(O.keyword),color:"#99ff99"},{tag:[O.name,O.standard(O.name)],color:"#eee"},{tag:O.variableName,color:"#76f6ff"},{tag:O.local(O.variableName),color:"#ffff99"},{tag:[O.deleted,O.macroName],color:"#ffbb99"},{tag:[O.processingInstruction,O.keyword,O.controlKeyword],color:"#c5bdff"},{tag:[O.string,O.inserted],color:"#68ff98"},{tag:[O.number,O.modifier],color:"#ff99ff"},{tag:[O.atom,O.bool,O.special(O.variableName)],color:"#ffc261"},{tag:O.definition(O.variableName),color:"#fff"},{tag:[O.propertyName,O.attributeName,O.tagName,O.self],color:"#b2ebf2"},{tag:O.definition(O.name),color:"#f0f0f0"},{tag:O.typeName,color:"#9be8c5"},{tag:O.bracket,color:"#d8d8d8"},{tag:O.comment,color:"#999"},{tag:O.link,color:"#c3b1e1"},{tag:O.meta,color:"#ffd9a0"},{tag:O.invalid,color:"#ff6666"},{tag:O.operator,color:"#ffa3f0"}]),Bh=[u5,Nd(f5)];var f$=N.theme({"&":{maxHeight:"100%"}});var Jg=N.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":{backgroundColor:"rgba(129, 123, 249, 0.15)"},".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 p5=N.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}),m5=ns.define([{tag:[O.processingInstruction],color:"#ff9cf7"},{tag:[O.keyword,O.controlKeyword,O.modifier],color:"#ffb928"},{tag:[O.name,O.standard(O.name),O.variableName],color:"#ffffec"},{tag:[O.deleted,O.macroName],color:"#00a8c6"},{tag:[O.string,O.inserted],color:"#b4fdb7"},{tag:[O.number],color:"#3abff8"},{tag:[O.atom,O.bool],color:"#02c7ea"},{tag:O.definition(O.variableName),color:"#88eeff"},{tag:[O.propertyName,O.attributeName,O.tagName,O.self],color:"#9ddfe9"},{tag:O.definition(O.name),color:"#88eeff"},{tag:[O.special(O.keyword),O.special(O.variableName)],color:"#fdda93"},{tag:[O.typeName,O.standard(O.keyword)],color:"#ffb928"},{tag:[O.bracket,O.constant(O.modifier)],color:"#8fdedd",fontWeight:"bold"},{tag:O.comment,color:"#95958a"},{tag:O.link,color:"#f54b07"},{tag:O.meta,color:"#aaddaa"},{tag:O.namespace,color:"#ffffec"},{tag:O.invalid,color:"#ffffec",borderBottom:"1px solid #636363"}]),Vh=[p5,Nd(m5)];var O5=["<<",">>","<=",">=","==","!=","&&","||"],g5="+-*/%<>!~&|^()[]#";function b5(r){let e=[],t=0;for(;t<r.length;){let n=r[t];if(/\s/.test(n)){t++;continue}if(n=="$"&&/[0-9a-fA-F]/.test(r[t+1]||"")){let s=t+1;for(;s<r.length&&/[0-9a-fA-F]/.test(r[s]);)s++;e.push({t:"num",v:r.substring(t,s),num:parseInt(r.substring(t+1,s),16)}),t=s;continue}if(/[0-9]/.test(n)){if(n=="0"&&(r[t+1]=="x"||r[t+1]=="X")){let s=t+2;for(;s<r.length&&/[0-9a-fA-F]/.test(r[s]);)s++;if(s==t+2)throw new Error("bad hex number");e.push({t:"num",v:r.substring(t,s),num:parseInt(r.substring(t+2,s),16)}),t=s}else{let s=t;for(;s<r.length&&/[0-9]/.test(r[s]);)s++;e.push({t:"num",v:r.substring(t,s),num:parseInt(r.substring(t,s),10)}),t=s}continue}if(/[A-Za-z_.]/.test(n)){let s=t;for(;s<r.length&&/[A-Za-z0-9_.$]/.test(r[s]);)s++;e.push({t:"id",v:r.substring(t,s)}),t=s;continue}let i=r.substring(t,t+2);if(O5.includes(i)){e.push({t:"op",v:i}),t+=2;continue}if(g5.includes(n)){e.push({t:"op",v:n}),t++;continue}throw new Error("unexpected character '"+n+"'")}return e}var eb=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 n=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:n}}return{t:"hw",name:t.v}}throw new Error("unexpected '"+e.v+"'")}};function ma(r,e){switch(r.t){case"num":{let t=r.v;return()=>t}case"id":{let t=r.name;if(e.cpuFields.has(t))return i=>{let s=i[t];return typeof s=="number"?s:0};let n=e.symbol(t);if(typeof n=="number"){let i=n;return()=>i}throw new Error("unknown identifier '"+t+"'")}case"mem":{let t=ma(r.a,e);return n=>{if(!e.readMem)throw new Error("memory reads not supported");let i=e.readMem(t(n)&65535);if(typeof i!="number")throw new Error("cannot read memory");return i}}case"read":{let t=ma(r.a,e),n=r.space,i=r.width;return s=>{let o=n=="vram"?e.readVRAM:e.readMem;if(!o)throw new Error(n=="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=r.name,n=e.hw&&e.hw[t];if(!n)throw new Error("unknown '#"+t+"'");return()=>{let i=n();return typeof i=="number"?i:0}}case"un":{let t=ma(r.a,e);switch(r.op){case"-":return n=>-t(n);case"~":return n=>~t(n);case"!":return n=>t(n)?0:1;case"+":return t}break}case"bin":{let t=ma(r.a,e),n=ma(r.b,e);switch(r.op){case"||":return i=>t(i)||n(i)?1:0;case"&&":return i=>t(i)&&n(i)?1:0;case"|":return i=>t(i)|n(i);case"^":return i=>t(i)^n(i);case"&":return i=>t(i)&n(i);case"==":return i=>t(i)==n(i)?1:0;case"!=":return i=>t(i)!=n(i)?1:0;case"<":return i=>t(i)<n(i)?1:0;case"<=":return i=>t(i)<=n(i)?1:0;case">":return i=>t(i)>n(i)?1:0;case">=":return i=>t(i)>=n(i)?1:0;case"<<":return i=>t(i)<<n(i);case">>":return i=>t(i)>>n(i);case"+":return i=>t(i)+n(i);case"-":return i=>t(i)-n(i);case"*":return i=>t(i)*n(i);case"/":return i=>{let s=n(i);return s===0?0:t(i)/s|0};case"%":return i=>{let s=n(i);return s===0?0:t(i)%s}}break}}throw new Error("bad expression node")}function p$(r,e){let t=new eb(b5(r)).parse(),n=ma(t,e);return i=>{try{return n(i)!=0}catch(s){return!1}}}function m$(r,e){let t=(r||"").trim();if(!t)return{error:"empty address"};let n;if((n=t.match(/^\$([0-9a-fA-F]+)$/))||(n=t.match(/^0[xX]([0-9a-fA-F]+)$/)))return{pc:parseInt(n[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 tb(r,e){if(!r)return;if(e in r)return r[e];if("_"+e in r)return r["_"+e];let t=e.replace(/^\./,"");if(t!==e&&t in r)return r[t]}function y5(r){let e=r.platform,t=new Set;try{let i=e&&e.getCPUState&&e.getCPUState();i&&(t=new Set(Object.keys(i)))}catch(i){}let n=null;return e&&(e.getRasterScanline&&(n=n||{},n.scanline=()=>e.getRasterScanline()),e.getRasterLineClock&&(n=n||{},n.lineclock=()=>e.getRasterLineClock())),{cpuFields:t,symbol:i=>tb(r.symbols,i),readMem:e&&e.readAddress?i=>e.readAddress(i):void 0,readVRAM:e&&e.readVRAMAddress?i=>e.readVRAMAddress(i):void 0,hw:n}}function O$(r){return!!(r&&(r.runEval||r.runToPC||r.runEvalAtPC))}function g$(r,e){try{let t;if(r.type=="source"){let i=e.getListingForFile&&e.getListingForFile(r.file),s=i&&(i.sourcefile||i.assemblyfile);if(!s)return{bp:r,error:"no debug info (build first?)"};if(t=s.line2offset.get(r.line),!(t>=0))return{bp:r,error:"line has no code"}}else{let i=m$(r.target,s=>tb(e.symbols,s));if(i.error)return{bp:r,error:i.error};t=i.pc}let n;return r.condition&&r.condition.trim()&&(n=p$(r.condition,y5(e))),{bp:r,pc:t,condFn:n}}catch(t){return{bp:r,error:String(t.message||t)}}}var rb="8bitworkshop.breakpoints.v1",nb=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 n={id:this.nextId++,type:"source",file:e,line:t,enabled:!0};return this.breakpoints.push(n),this.changed(),n}addAddressBreakpoint(e,t){let n=(e||"").trim().toLowerCase(),i=this.breakpoints.find(o=>o.type=="address"&&(o.target||"").trim().toLowerCase()==n);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 n=this.breakpoints.find(i=>i.id==e);n&&n.enabled!=t&&(n.enabled=t,this.changed())}update(e,t){let n=this.breakpoints.find(i=>i.id==e);n&&(Object.assign(n,t),this.changed())}toggleSourceLine(e,t){let n=this.breakpoints.find(i=>i.type=="source"&&i.file==e&&i.line==t);n?this.remove(n.id):this.addSourceBreakpoint(e,t)}load(){if(typeof localStorage!="undefined")try{let t=JSON.parse(localStorage.getItem(rb)||"{}")[this.contextFn()];this.breakpoints=Array.isArray(t)?t:[],this.nextId=1;for(let n of this.breakpoints)this.nextId=Math.max(this.nextId,n.id+1)}catch(e){this.breakpoints=[]}}save(){if(typeof localStorage!="undefined")try{let e={},t=localStorage.getItem(rb);t&&(e=JSON.parse(t)),e[this.contextFn()]=this.breakpoints,localStorage.setItem(rb,JSON.stringify(e))}catch(e){console.log("breakpoints: save failed",e)}}},Yt=new nb;function S5(){return{symbols:P&&P.debugSymbols&&P.debugSymbols.symbolmap,getListingForFile:r=>ae&&ae.getListingForFile(r),platform:P}}function Yh(){return O$(P)}function Fh(){let r=S5();return Yt.getAll().map(e=>g$(e,r))}var ib=class extends Tt{constructor(t,n){super();this.header=t;this.handleClick=n}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",n=>{n.preventDefault(),n.stopPropagation(),this.handleClick(t)}),t}eq(t){return this.header===t.header}ignoreEvent(){return!1}},b$=/[/;][*;](\{.+?\})[*;][/;]/g;function y$(r,e){let t=[];for(let{from:n,to:i}of r.visibleRanges){let s=r.state.sliceDoc(n,i),o=n,a=s.split(`
`);for(let l of a){b$.lastIndex=0;let c=b$.exec(l);if(c){let d=o+c.index+c[0].length;t.push(ee.widget({widget:new ib(c[0],e),side:-1}).range(d))}o+=l.length+1}}return ee.set(t,!0)}function S$(r){let e;function t(n){let i=e.posAtDOM(n);r(e.state.doc.lineAt(i).number)}return at.fromClass(class{constructor(n){e=n,this.decorations=y$(n,t)}update(n){e=n.view,(n.docChanged||n.viewportChanged)&&(this.decorations=y$(n.view,t))}},{decorations:n=>n.decorations})}var sb=class extends Tt{constructor(t,n,i){super();this.filename=t;this.system=n;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",n=>{n.preventDefault(),n.stopPropagation(),this.handleClick(this.filename,this.system)}),t}eq(t){return this.filename===t.filename&&this.system===t.system}ignoreEvent(){return!1}};function v5(r,e,t){let n=[],i=r.state.doc,s=new Set;for(let{from:o,to:a}of r.visibleRanges){let l=r.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),g=i.lineAt(m),v=g.number+":"+f;s.has(v)||(s.add(v),n.push(ee.widget({widget:new sb(f,!!d.system,t),side:1}).range(g.to)))}}}return ee.set(n,!0)}function v$(r,e){function t(n){let i=r();return!i||!i.length?ee.none:v5(n,i,e)}return at.fromClass(class{constructor(n){this.decorations=t(n)}update(n){(n.docChanged||n.viewportChanged)&&(this.decorations=t(n.view))}},{decorations:n=>n.decorations})}var hs=window.matchMedia&&window.matchMedia("only screen and (max-width: 760px)").matches;function xn(r,e){var t=$(document.createElement("div"));return r&&t.appendTo(r),e&&t.addClass(e),t}function x5(r){return Me.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent("input")||!r.input)return e;let t=[],n=!1;if(e.changes.iterChanges((o,a,l,c,d)=>{let h=d.toString(),u=r.input(h);t.push({from:o,to:a,insert:u}),u!==h&&(n=!0)}),!n)return e;let i=e.annotation(dt.userEvent),s=e.annotation(dt.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...i!=null?[dt.userEvent.of(i)]:[],...s!=null?[dt.addToHistory.of(s)]:[]]}})}var ob=new Bt;function x$(r){return ob.reconfigure(x5(r))}var w$=be.define(),P$=be.define(),k$=be.define(),$$=be.define(),Q$=be.define(),T$=be.define(),_$=be.define(),lb=be.define(),A$=be.define(),C$=Ze.define({create(){return Te.empty},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(w$)){let n=t.value,i=[];for(let[s,o]of n.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;i.push(new Nh(Ce(o,4)).range(a))}r=Te.of(i,!0)}return r}}),E$=Ze.define({create(){return Te.empty},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(P$)){let n=t.value,i=[];for(let[s,o]of n.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;i.push(new jh(o).range(a))}r=Te.of(i,!0)}return r}}),R$=Ze.define({create(){return Te.empty},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(k$)){let n=t.value,i=[];for(let[s,o]of n.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;i.push(new Uh(o).range(a))}r=Te.of(i,!0)}return r}}),M$=Ze.define({create(){return Te.empty},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(Q$)){let n=[],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;n.push((s.enabled?P5:k5).range(o))}r=Te.of(n,!0)}return r}}),ab=Ze.define({create(){return Te.empty},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(T$)){let n=t.value,i=[];for(let[s,o]of n.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;i.push(new Gh(s,o).range(a))}r=Te.of(i,!0)}return r}}),L$=Ze.define({create(){return Te.empty},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(_$))if(t.value===null)r=Te.empty;else{let n=t.value;if(n>=1&&n<=e.state.doc.lines){let i=e.state.doc.line(n).from;r=Te.of(D$.range(i))}}return r}}),Nh=class extends Pt{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}},jh=class extends Pt{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},Uh=class extends Pt{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},w5=new class extends Pt{toDOM(){let r=document.createElement("span");return r.className="gutter-breakpoint-placeholder",r.textContent="\u25CF",r}},qh=class extends Pt{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}},P5=new qh(!0),k5=new qh(!1),Gh=class extends Pt{constructor(t,n){super();this.line=t;this.msg=n}toDOM(){let t=document.createElement("span");return t.className="gutter-error",t.innerHTML="\u24E7",t.title=this.msg,t}eq(t){return this.line==t.line&&this.msg==t.msg}},$5=new class extends Pt{toDOM(){let r=document.createElement("span");return r.className="gutter-currentpc-placeholder",r.textContent="\u25B6",r.title="Click to run to here",r}},D$=new class extends Pt{toDOM(){let r=document.createElement("span");return r.className="gutter-currentpc",r.innerHTML="\u25B6",r.title="Current PC",r}},Q5=Ki({class:"gutter-offset",markers:r=>r.state.field(C$),initialSpacer:()=>new Nh("0000"),domEventHandlers:{click(r,e){let t=r.state.doc.lineAt(e.from).number;return r.dispatch({effects:lb.of(t)}),!0}}}),T5=Ki({class:"gutter-bytes",markers:r=>r.state.field(E$),initialSpacer:()=>new jh("00 00 00")}),_5=Ki({class:"gutter-clock",markers:r=>r.state.field(R$),initialSpacer:()=>new Uh("00")}),A5=Ki({class:"gutter-status",lineMarker(r,e,t){return t.length===0?w5:null},markers:r=>{let e=r.state.field(ab);return e.size>0?e:r.state.field(M$)},initialSpacer:()=>new Gh(0,"\u24E7"),domEventHandlers:{click(r,e){let t=r.state.field(ab);if(t.size>0){let n=e.from,i="";if(t.between(n,n,(s,o,a)=>{i=a.msg}),i){let s=r.state.doc.lineAt(e.from).number;r.dispatch({effects:A$.of({line:s,msg:i,toggle:!0})})}}else if(Yh()){let n=r.state.doc.lineAt(e.from).number;r.dispatch({effects:$$.of(n)})}return!0}}}),C5=Ki({class:"gutter-currentpc",lineMarker(r,e,t){return t.length===0?$5:null},markers:r=>r.state.field(L$),initialSpacer:()=>D$,domEventHandlers:{click(r,e){let t=r.state.doc.lineAt(e.from).number;return r.dispatch({effects:lb.of(t)}),!0}}}),Hh={set:w$,field:C$,gutter:Q5},Nl={set:P$,field:E$,gutter:T5},Kh={set:k$,field:R$,gutter:_5},Jh={requestToggle:$$,setAll:Q$,field:M$},lo={set:T$,field:ab,showMessage:A$},I$={gutter:A5},Oa={set:_$,runToLine:lb,field:L$,gutter:C5};var Z$=be.define(),X$=ee.line({attributes:{class:"cm-currentpc"}}),E5=Ze.define({create(){return ee.none},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(Z$)){if(t.value===null)return ee.none;let n=e.state.doc.line(t.value);return ee.set([X$.range(n.from)])}return r},provide:r=>N.decorations.from(r)}),jl=class extends Tt{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}},R5=Ze.define({create(){return ee.none},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(lo.showMessage)){if(t.value===null||!t.value)return ee.none;if(t.value.toggle){let n=[],i=new Map;return r.between(0,e.state.doc.length,(a,l,c)=>{try{let d=e.state.doc.lineAt(l).number;c.spec.widget instanceof jl&&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);n.push(ee.widget({widget:new jl(i.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),ee.set(n,!0)}}return r},provide:r=>N.decorations.from(r)}),cb=class extends Tt{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}},z$=be.define(),M5=Ze.define({create(){return ee.none},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(z$)){if(t.value===null||!t.value)return ee.none;let n=e.state.doc.lineAt(t.value.range.to);return ee.set([ee.widget({widget:new cb(t.value.val),block:!0,side:1}).range(n.to)])}return r},provide:r=>N.decorations.from(r)}),W$=be.define(),L5=ee.mark({attributes:{class:"cm-error-span"}}),D5=Ze.define({create(){return ee.none},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(W$)){if(t.value===null)return ee.none;let n=[];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&&n.push(L5.range(o,a))}catch(s){}return ee.set(n,!0)}return r},provide:r=>N.decorations.from(r)}),B$=be.define(),I5=ee.line({attributes:{class:"highlight-lines"}}),Z5=Ze.define({create(){return ee.none},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(B$)){if(t.value===null)return ee.none;let{start:n,end:i}=t.value,s=[];for(let o=n;o<=i;o++)try{let a=e.state.doc.line(o);s.push(I5.range(a.from))}catch(a){}return ee.set(s)}return r!==ee.none&&(e.docChanged||e.selection)?ee.none:r},provide:r=>N.decorations.from(r)}),V$={field:R5,widget:jl},Ul={effect:Z$,decoration:X$,field:E5},eu={effect:z$,field:M5},tu={effect:W$,field:D5},ru={effect:B$,field:Z5},Y$=be.define(),X5=ee.line({attributes:{class:"cm-traced-line"}}),z5=Ze.define({create(){return ee.none},update(r,e){r=r.map(e.changes);for(let t of e.effects)if(t.is(Y$)){let n=[];for(let i of t.value)try{let s=e.state.doc.line(i);n.push(X5.range(s.from))}catch(s){}return ee.set(n,!0)}return r},provide:r=>N.decorations.from(r)}),nu={effect:Y$,field:z5};var W5=[...ff(ww,uf),{key:"Mod-Shift-Backspace",run:iO}],j$=ff(RP,uf),ga=64,U$=be.define(),q$=be.define(),db=Ze.define({create(){return new Map},update(r,e){let t=r;for(let n of e.effects)if(n.is(q$))t=new Map;else if(n.is(U$)){t===r&&(t=new Map(r));for(let i of n.value)t.set(i.id,{from:i.from,to:i.to})}if(!e.changes.empty){let n=new Map;for(let[i,s]of t)n.set(i,{from:e.changes.mapPos(s.from,-1),to:e.changes.mapPos(s.to,1)});return n}return t}}),B5=200,hb={default:{theme:Vh},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:Bh},dialog:{theme:Bh,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0,lineBased:!0},ecs:{theme:Vh}},G$={input:null};function H$(r){G$.input=r?e=>e.toUpperCase():null}function pb(r){if(!r)return"";let e=r.state.selection.main;return e.empty?"":r.state.sliceDoc(e.from,e.to)}var ql=class ql{constructor(e,t){this.updateTimer=null;this.indentUnitCompartment=new Bt;this.isAsm=!1;this.dirtylisting=!0;this.refreshDelayMsec=300;this.probe=null;this.path=e,this.mode=t}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var n=ae.getFile(this.path),i=n&&this.mode=="verilog"&&/__asm\b([\s\S]+?)\b__endasm\b/.test(n);return this.newEditor(t,n,i),this.editor.dispatch({effects:x$(G$)}),this.syncBreakpoints(),ae.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),ql.tracingEnabled&&this.startTracing()):this.stopTracing()}getShortcuts(){if(!this.editor)return[];var e=this.editor,t=(n,i,s)=>({key:n,label:i,fn:()=>{s(e),e.focus()}});return[t("mod+f","Find",Qh),t("mod+g","Find Next",da),t("mod+d","Next Occurrence",wO),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())}stopTracing(){this.probe&&(P.stopProbing(),this.probe=null),this.editor.dispatch({effects:nu.effect.of([])})}setTracingEnabled(e){ql.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,n){var i=hb[this.mode]||hb.default,s=n||i.isAsm,o=!!i.lineWrap,a=i.theme||hb.default.theme,l=i.useLineNumbers&&!hs;de.embed&&(l=!1,s=!1),this.isAsm=s;let c=i.noGutters||hs;var d;let h=Hg[this.mode];h?d=h.language:(console.warn("Unknown mode: "+this.mode),d=null),this.editor=new N({parent:e,doc:t,extensions:[this.indentUnitCompartment.of(this.indentUnitFor(t)),s?Xm.of((u,f)=>{let m=u.state.doc.lineAt(f).number;if(m>=0){let g=u.state.doc.line(m);if(g.text.trim())return u.lineIndent(g.from)}return 0}):[],...s?[Sr.of(Cw(()=>ra().tabsToSpaces))]:[],i.lineBased?Sr.of(kw):[],...Lw(ra()),Sr.of(W5),l?Ad():[],Nx(),Sr.of(qx),hx(),vv(),Me.allowMultipleSelections.of(!0),$d(),ax(),Ox(),Td(),_d(),Qd(),Av(),$h(),PO({top:!0}),Sr.of(j$),d||[],a,Jg,o?N.lineWrapping:[],Ul.field,c?[]:[Hh.field,Hh.gutter],s&&!c?[Nl.field,Nl.gutter,Kh.field,Kh.gutter]:[],Jh.field,I$.gutter,N.updateListener.of(u=>{for(let f of u.transactions.flatMap(m=>m.effects))if(f.is(Jh.requestToggle)&&Yt.toggleSourceLine(this.path,f.value),f.is(Oa.runToLine)){let m=f.value;if(this.sourcefile&&this.sourcefile.line2offset){let g=this.sourcefile.line2offset.get(m);g>=0&&Hl([g])}}}),lo.field,V$.field,tu.field,Oa.field,Oa.gutter,ru.field,nu.field,db,S$(u=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+u}),de.embed?[]:v$(()=>{var u=ae&&ae.getToolForFilename(this.path),f=ae&&ae.platform_id;return[...Tc(u,f),..._c(u,f),...J0(u)]},(u,f)=>{if(!f){var m=K$(u);if(m){window.location.hash="#"+encodeURIComponent(m);return}}Gl(u)}),ob.of([]),N.updateListener.of(u=>{u.docChanged&&this.editorChanged()}),eu.field,N.updateListener.of(u=>{u.selectionSet&&this.inspectUnderCursor(u)})]}),Iw(this.editor)}editorChanged(){clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>{ae.updateFile(this.path,this.editor.state.doc.toString())},this.refreshDelayMsec)}flushChanges(){this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=null,ae.updateFile(this.path,this.editor.state.doc.toString()))}inspectUnderCursor(e){let t=e.state.selection.main,n=e.state.sliceDoc(t.from,t.to).trim();var i;P.inspect&&(i=P.inspect(n)),!t.empty&&i&&i.length<80?e.view.dispatch({effects:eu.effect.of({range:t,val:i})}):e.view.dispatch({effects:eu.effect.of(null)})}indentUnitFor(e){return this.isAsm?[]:bn.of(Pw(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:Hd.of("full"),effects:this.indentUnitCompartment.reconfigure(this.indentUnitFor(e))})}replaceTextRange(e,t,n){let i=this.editor.state.doc.lineAt(e).from;this.editor.dispatch({changes:{from:e,to:t,insert:n},annotations:Hd.of("full"),selection:{anchor:e+n.length,head:e},effects:[N.scrollIntoView(i,{y:"start",yMargin:100})]})}setAssetRange(e,t,n){this.editor.dispatch({effects:U$.of([{id:e,from:t,to:n}])})}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 n=this.editor.state.field(db).get(e);n&&this.replaceTextRange(n.from,n.to,t)}clearAssetRanges(){this.editor.dispatch({effects:q$.of(void 0)})}insertLinesBefore(e){let t=this.editor.state.selection.main.from,n=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(n-1,n+s-2)}highlightLines(e,t){let n=this.editor.state.doc.line(e+1);this.editor.dispatch({effects:[ru.effect.of({start:e+1,end:t+1}),N.scrollIntoView(n.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:[ru.effect.of({start:e,end:e}),N.scrollIntoView(t.from,{y:"center"})]}),this.editor.focus()}getValue(){return this.editor.state.doc.toString()}getSelectionText(){return pb(this.editor)}getPath(){return this.path}markErrors(e){this.clearErrors(),e=e.slice(0,B5);let t=new Map,n=[];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),t.set(o,i.msg),i.start!=null&&i.end!=null&&i.end>i.start&&n.push({line:o,start:i.start,end:i.end})}this.editor.dispatch({effects:[lo.set.of(t),tu.effect.of(n.length>0?n:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[lo.set.of(new Map),lo.showMessage.of(null),tu.effect.of(null)]})}getSourceFile(){return this.sourcefile}updateListing(){this.clearErrors();var e=this.sourcefile.lines||[];let t=new Map,n=new Map,i=new Map;for(var s of e)if(s.offset>=0&&t.set(s.line,Ce(s.offset&65535,4)),s.insns){var o=s.insns.length>9?"...":s.insns;if(n.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:[Hh.set.of(t),Nl.set.of(n),Kh.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 n=l&&l.minclocks,i=l&&l.maxclocks;if(n>=0&&i>=0){var s;i==n?s=n+"":s=n+"-"+i,i==e.MAX_CLOCKS&&(s+="+"),t.set(o,s)}}this.editor.dispatch({effects:[Nl.set.of(t)]})}}setCurrentLine(e,t){var n=i=>{this.editor.dispatch({effects:[Oa.set.of(i.line),Ul.effect.of(i.line),...t?[N.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(n(e),t){let s=this.editor.state.doc.line(e.line).from+(e.start||0);this.editor.dispatch({selection:{anchor:s,head:s},effects:N.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:[Oa.set.of(null),Ul.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=er&&er.c;if(!e&&P.getCPUState&&!P.isRunning()&&(e=P.getCPUState()),e){var t=e&&(e.EPC||e.PC),n=this.sourcefile.findLineForOffset(t,ga);return n}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=ae.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 n=0;n<e.idx;n++){let i=e.buf[n];if((i&4278190080)===16777216){let s=this.sourcefile.findLineForOffset(i&65535,ga);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:nu.effect.of(Array.from(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:Jh.setAll.of(e)})}};ql.tracingEnabled=!1;var Pr=ql,ub=1024,Mi=class{getSelectionText(){return pb(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 N({parent:e,extensions:[Td(),_d(),Me.allowMultipleSelections.of(!0),$d(),Qd(),$h(),f$,Bh,Ul.field,Me.tabSize.of(8),Me.readOnly.of(!0)]})}refresh(e,t){let n=er||P.saveState(),i=t!==void 0?t:n.c?n.c.PC:0,s=0,o=0,a=P.debugSymbols&&P.debugSymbols.addr2symbol||{},l=(h,u)=>{let f="",m=0;for(;m<u;){let g=h+m|0,v=P.disassemble(g,P.readAddress.bind(P)),k="",L="";for(let w=0;w<v.nbytes;w++)k+=Ce(P.readAddress(g+w));for(;k.length<14;)k+=" ";let M=v.line;if(a&&v.isaddr&&(M=M.replace(/([^#])[$]([0-9A-F]+)/,(w,...x)=>{let R=parseInt(x[1],16),X=a[R];return X?x[0]+X:(X=a[R-1],X?x[0]+X+"+1":w)})),a){let w=a[g];w&&(L="; "+w)}let D=Ce(g,4)+" "+Ma(k,14)+" "+Ma(M,30)+L+`
`;f+=D,g==i&&(o=s),s++,m+=v.nbytes||1}return f};var c=i<0?i-ub:Math.max(0,i-ub);let d=l(c,i-c)+l(i,ub);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:N.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=Ce(e,4),n=this.disasmview.state.doc;for(let i=1;i<=n.lines;i++){let s=n.line(i);if(s.text.startsWith(t+" "))return this.disasmview.dispatch({selection:{anchor:s.from,head:s.from+t.length},effects:N.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}},iu=class extends Mi{constructor(e){super(),this.path=e}refreshListing(){var e=ae.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 n=er||P.saveState(),i=n.c?n.c.EPC||n.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:N.scrollIntoView(o.from,{y:"center"})})}}}}}goToAddress(e){this.refreshListing();let t=this.assemblyfile&&this.assemblyfile.findLineForOffset(e,ga);if(t){let n=this.disasmview.state.doc.line(t.line);this.disasmview.dispatch({selection:{anchor:n.from,head:n.from},effects:N.scrollIntoView(n.from,{y:"center"})})}this.disasmview.focus()}};function K$(r){let e=[r];try{var t=La(ae.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+r)}catch(s){}for(var n of e){var i=ae&&ae.getFile(n);if(typeof i=="string")return n}return null}function F$(r){for(var e of ty(r))if(e.editorStyle){var t=u$(e.editorStyle);if(t)return t}return null}var fb=new Map;function V5(r){let e=ae.getToolForFilename(ae.mainPath),t=Cc(e,ae.platform_id),n=Ac(e,ae.platform_id);if(!t||!n.length)return Promise.resolve(null);let i=t+":"+r;return fb.has(i)||fb.set(i,(async()=>{var s=[...n.map(d=>d+"/"+r),r];for(var o of s){var a={preload_fs:t,readshared:o,updates:[],buildsteps:[]},l=await ae.queryWorker(a),c=l&&l.output;if(c instanceof Uint8Array&&c.length>0)return new TextDecoder().decode(c)}return null})()),fb.get(i)}var us=class{constructor(e){this.fn=e;this.languageCompartment=new Bt}getSelectionText(){return pb(this.view)}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var n=F$(this.fn||this.currentPath||"")||Kg();return this.view=new N({parent:t,extensions:[Td(),_d(),Me.allowMultipleSelections.of(!0),$d(),Qd(),$h(),PO({top:!0}),Sr.of(j$),this.languageCompartment.of(n),Vh,Jg,Me.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=F$(this.currentPath||this.fn||"")||Kg();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 n=window.location.hash;if(!n||!n.startsWith("#headerview/"))return;t=this.fn=decodeURIComponent(n.substring(12))}this.loadIncludeFile(t)}async loadIncludeFile(e){this.requestedFn=e;var t=K$(e);if(t){this.currentPath=t,this.setHeaderText(ae.getFile(t));return}var n=await V5(e);if(this.requestedFn===e){if(n!=null){this.currentPath=e,this.setHeaderText(n);return}this.currentPath=e,this.setHeaderText("// "+e+` was not found.
// Project include files are loaded during a build -- try building first.
// Toolchain headers are only available when the tool has a bundled filesystem.`)}}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:[N.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,n){this.getLineAt=n,this.memorylist=new Br({w:$(e).width(),h:$(e).height(),itemHeight:mb(),totalRows:t,generatorFn:i=>{var s=n(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)}refresh(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var n=t,i=parseInt(n.getAttribute("data-index")),s=n.innerText,o=this.getLineAt(i),a=o.text;if(s!=a&&(n.innerText=a,o.clas!=null&&!n.classList.contains(o.clas))){var l=Array.from(n.classList);l.forEach(c=>n.classList.remove(c)),n.classList.add("vrow"),n.classList.add(o.clas)}})}};function mb(){return $("#dropdownMenuButton").first().height()}function Y5(r){return r.start+Math.max(1,r.size||0)}function F5(r,e){r.sort((s,o)=>s.start-o.start||o.end-s.end);let t=[],n=[],i=[];for(let s of r){let o=t.findIndex(a=>a<=s.start);if(o<0&&t.length<e&&(o=t.length),o<0){let a=n[e-1];(a.hidden=a.hidden||[]).push(s);continue}t[o]=s.end,n[o]=s,s.lane=o,i.push(s)}return i}function Ob(r,e,t,n){t=F5(t,n);let i=Math.max(1,...t.map(s=>s.lane+1));return{id:r,title:e,lanes:i,blocks:t}}function J$(r,e,t,n){let i=r.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:n,lane:0}),o=Math.max(o,a.end);return r.concat(s)}function eQ(r){return{name:r.name,start:r.start,end:Y5(r),type:r.type,lane:0}}function N5(r){return r.startsWith("__")||/^[sl]__/.test(r)||r.startsWith(".")}function j5(r,e,t,n){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(!r||!o.length)return[];let a=f=>n==null?void 0:n[f],l=new Map;for(let[f,m]of Object.entries(r)){if(typeof m!="number"||N5(f))continue;let g=l.get(m);(g==null||!a(g)&&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],g=null;for(let w of o)m>=w.start&&m<w.start+w.size&&(!g||w.size<g.size)&&(g=w);if(!g)continue;let v=l.get(m),k=a(v);if(k!=null){k>=i&&d.push({name:v,start:m,end:m+k,type:"var",lane:0});continue}let L=g.start+g.size,M=f+1<c.length?c[f+1]:1/0;if(M>=L&&g.source!="linker")continue;let D=Math.min(M,L);D-m>=i&&d.push({name:v,start:m,end:D,type:"var",lane:0,approx:!0})}return d.sort((f,m)=>m.end-m.start-(f.end-f.start)),d.slice(0,s)}function tQ(r,e,t,n){var h;r=r||[];let i=(h=t==null?void 0:t.maxLanes)!=null?h:2,s=[],o=r.filter(u=>u.source=="native").map(eQ),a=r.filter(u=>u.source!="native").map(eQ);if(o.length&&s.push(Ob("native","System",J$(o,0,"","unmapped"),i)),a.length){let u=Math.min(...a.map(f=>f.start));s.push(Ob("linker","Segments",J$(a,u,"","free"),i))}let l=j5(e,r,t,n);l.length&&s.push(Ob("vars","Objects",l,i));let c=new Set;for(let u of s)for(let f of u.blocks)c.add(f.start),c.add(f.end);return{bounds:Array.from(c).sort((u,f)=>u-f),columns:s}}function rQ(r){return r.endsWith("_SIZE__")||r.endsWith("_LAST__")||r.endsWith("STACKSIZE__")||r.endsWith("FILEOFFS__")||r.startsWith("l__")||r.startsWith("s__")||r.startsWith(".__.")}var fs=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){this.memorylist=new Br({w:$(e).width(),h:$(e).height(),itemHeight:mb(),totalRows:this.totalRows,generatorFn:i=>{var s=this.getMemoryLineAt(i),o=document.createElement("div");if(this.dumplines){var a=this.dumplines[i];a&&o.classList.add("seg_"+this.getMemorySegment(this.dumplines[i].a|this.hibits))}return i==this.gotoRow&&o.classList.add("goto_line"),o.appendChild(document.createTextNode(s)),o}}),$(t).append(this.memorylist.container),this.tick();let n=Tl();n&&this.dumplines&&this.scrollToAddress(n.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(),n;if(t&&t.length?n=this.findMemoryWindowLine(e&65535):n=(e&65535)>>4,n!==void 0){if(this.gotoRow=n,this.memorylist){var i=this.memorylist.container,s=n*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 n=$(t),i=parseInt(n.attr("data-index")),s=n.text(),o=this.getMemoryLineAt(i);s!=o&&n.text(o),n.toggleClass("goto_line",i==this.gotoRow)})}getMemoryLineAt(e){var t=e*16,n=0,i=16,s;if(this.getDumpLines()){var o=this.dumplines[e];if(o)t=o.a&65520,n=o.a-t,i=n+o.l,s=o.s;else return"."}for(var a=Ce(t+n,4)+" ",l=0;l<n;l++)a+=" ";n>8&&(a+=" ");for(var l=n;l<i;l++){var c=this.readAddress(t+l|this.hibits);l==8&&(a+=" "),a+=" "+(typeof c=="number"?Ce(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 e=P.debugSymbols&&P.debugSymbols.addr2symbol||{};if(this.dumplines==null){this.dumplines=[];var t=0,n;for(let a of Object.keys(e)){var i=parseInt(a),s=e[i|this.hibits];if(n)for(rQ(n)&&(n="");t<i&&this.dumplines.length<65536;){var o=t+16&1048560;o>i&&(o=i),this.dumplines.push({a:t,l:o-t,s:n}),t=o}n=s}}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 n=ae.segments;if(n){for(var i of n)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}},su=class extends fs{constructor(){super(...arguments);this.totalRows=2048}readAddress(t){return P.readVRAMAddress(t)}getMemorySegment(t){return"video"}getDumpLines(){return null}},Kl=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,n=0,i=16,s=Ce(t+n,4)+" ",o=0;o<n;o++)s+=" ";n>8&&(s+=" ");for(var o=n;o<i;o++){var a=this.data[t+o];o==8&&(s+=" "),s+=" "+(a>=0?Ce(a,2):" ")}return{text:s}}refresh(){this.vlist.refresh()}getPath(){return this.path}},ou=class{createDiv(e){return this.maindiv=xn(e,"vertical-scroll memmap"),this.maindiv[0]}addBlock(e,t,n,i){var s=$('<div class="segment"/>'),o=d=>`${d.name?d.name+": ":""}$${Ce(d.start,4)} - $${Ce(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",`${n+e.lane} / span ${l}`),s.click(()=>{var d=F.createOrShow("#memory");d.scrollToAddress(e.start)}),this.maindiv.append(s)}refresh(){var h,u;this.maindiv.empty();var e=tQ(ae.segments,(h=P.debugSymbols)==null?void 0:h.symbolmap,null,(u=P.debugSymbols)==null?void 0:u.symbolsizes),t=e.bounds;if(t.length){var n=["5em"],i=2,s=$('<div class="memmap-header" style="grid-row:1;grid-column:1"/>').text("Address");this.maindiv.append(s);for(var o of e.columns){for(var a=0;a<o.lanes;a++)n.push("minmax(0,1fr)");$('<div class="memmap-header"/>').text(o.title).css("grid-row","1").css("grid-column",`${i} / span ${o.lanes}`).appendTo(this.maindiv);for(var l of o.blocks)this.addBlock(l,o,i,t);i+=o.lanes}for(var c=["auto"],a=0;a+1<t.length;a++){var d=t[a+1]-t[a];c.push(Math.max(3,Math.log(d+1))*.5+"em"),$('<div class="segment-offset"/>').text("$"+Ce(t[a],4)).css("grid-row",`${a+2}`).css("grid-column","1").appendTo(this.maindiv)}this.maindiv.css("grid-template-columns",n.join(" ")),this.maindiv.css("grid-template-rows",c.join(" "))}}},Vn=4278190080,ps=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(n){}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"?"$"+Ce(e)+" ("+t+")":"$"+Ce(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)){var n=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&Vn;switch(d){case 2113929216:n++,i=0;break;case 2130706432:n=0,i=0;break;case 0:i+=l,s+=l;break;case 167772160:case 184549376:this.sp=l;default:e(d,l,i,n,s,c);break}}}}opToString(e,t,n){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 n=="number"&&(i+=" = $"+Ce(n,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}}},gb=class extends ps{constructor(){super(...arguments);this.recreateOnResize=!0}createCanvas(t,n,i){var s=document.createElement("div"),o=document.createElement("canvas");return o.width=n,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=Sc(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,n){return null}getOpAtPos(t,n,i){t=t|0,n=n|0;let s=0;return this.redraw((o,a,l,c,d,h)=>{!s&&c==n&&l>=t&&(o&i)!=0&&(s=o|a)}),s}clear(){}tick(){this.clear(),this.redraw(this.drawEvent.bind(this))}},au=class extends gb{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,n){t=t|0,n=n|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==n&&d<=t&&(d!=a&&(i="",a=d),i==""&&s&&(i+=`
`+s),i+=`
`+this.opToString(l,c,f))}),"X: "+t+" Y: "+n+" "+i}refresh(){this.tick(),this.datau32.fill(Vn)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(Vn)}},lu=class extends au{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Sc(this.canvas,e),n=Math.floor(t.x)+Math.floor(t.y)*256,i=-1,s=-1;this.redraw((o,a)=>{s<0&&i>=0&&a==n&&(s=i),o==16777216&&(i=a)}),s>=0&&Hl([s])}}clear(){for(var e=0;e<=65535;e++){var t=P.readAddress(e),n=t>>2|t&31;n|=n<<8|n<<16,this.datau32[e]=n|Vn}}drawEvent(e,t,n,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|Vn,this.datau32[t&65535]=l}}getTooltipText(e,t){var n=(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 g=c|s;d==n&&!o[g]&&(i==""&&a&&(i+=`
`+a),i+=`
PC `+this.addr2str(s)+" "+this.opToString(c,null,m),o[g]=1)}),this.addr2str(n)+i}},bb=class extends au{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Sc(this.canvas,e),n=Math.floor(t.x),i=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(oi("toline"),P.runEval(()=>{let o=P.getRasterScanline&&P.getRasterScanline()>=i;return o&&P.getRasterLineClock?o&&P.getRasterLineClock()>n:o}))}}drawEvent(e,t,n,i){var s=this.getOpRGB(e,t);if(s){var o=n+i*this.canvas.width,a=s|Vn;this.datau32[o]|=a}}drawImage(){let e=Vn;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==Vn?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},cu=class extends bb{constructor(){super(...arguments);this.interrupt=0;this.rgb=0;this.lastpc=0}drawEvent(t,n,i,s){var o=i+s*this.canvas.width;if(t==134217728&&(this.interrupt=1),this.interrupt==1&&t==167772160&&(this.interrupt=n),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)-n>16&&(l+=1),Math.abs(this.lastpc)-n>256&&(l+=1),a=this.rgb=526344*l+2105376,this.lastpc=n}this.interrupt&&(a|=8388672),this.datau32[o]==Vn&&(this.datau32[o]=a|Vn)}}},du=class extends ps{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 n="",i="seg_data",s=this.dumplines&&this.dumplines[t];if(s!=null){var o=s.info.join(", ");n="("+Gn(s.row,4)+", "+Gn(s.col,4)+") "+Ma(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(i="seg_io")}return{text:n,clas:i}}refresh(){this.tick()}tick(){let t=P instanceof sf||P instanceof nf;this.dumplines={},this.redraw((n,i,s,o,a,l)=>{t&&(a>>=2);var c=this.dumplines[a];switch(c==null&&(c={op:n,addr:i,row:o,col:s,asm:null,info:[]},this.dumplines[a]=c),n){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(n,i,l);h!=""&&c.info.push(h);break}}),this.vlist.refresh()}},hu=class extends ps{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 n=Gn(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&Vn;if(d==16777216)n+=",";else{var h=Ce(c);n+=h,a+=h.length-1}}else n+=a==o?"|":"."}return s[-1]&&(n+=" "+s[-1]),{text:n,clas:i}}refresh(){this.tick()}tick(){let t=P instanceof sf||P instanceof nf;this.dumplines={},this.redraw((n,i,s,o,a,l)=>{var c=this.dumplines[o];switch(c==null&&(this.dumplines[o]=c=[]),n){case 16777216:var d=P.debugSymbols.addr2symbol[i];d&&(c[-1]=d);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=n|i;break}}),this.vlist.refresh()}},uu=class extends ps{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(n=>!rQ(n))):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:Gn("Symbol",35)+Gn("Reads",8)+Gn("Writes",8)};var n=this.keys[t-1],i=this.dumplines&&this.dumplines[n];function s(l){var c=i[l]|0;return Gn(c?c.toString():"",8)}var o,a;return i!=null?(o=Gn(n,35)+s(301989888)+s(318767104),i[16777216]?a="seg_code":i[335544320]||i[352321536]?a="seg_io":a="seg_data"):(o=Gn(n,35),a="seg_unknown"),{text:o,clas:a}}refresh(){this.tick()}tick(){this.dumplines={},this.redraw((t,n,i,s,o,a)=>{var l=P.debugSymbols.addr2symbol[n];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()}},fu=class{constructor(){this.editingId=null}createDiv(e){return this.maindiv=xn(e,"vertical-scroll bp-view"),this.render(),this.maindiv[0]}refresh(e){this.render()}render(){let e=this.maindiv.empty(),t=Fh(),n=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(n&&n.bp.type=="address"?n.bp.target:""),o=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","condition (e.g. A>=$20, #scanline==222)").val(n&&n.bp.condition||""),a=$('<button class="btn btn-default btn-xs bp-submit"/>').text(n?"Save":"Add"),l=$('<button class="btn btn-default btn-xs bp-submit"/>').text("Cancel");l.toggle(n!=null),l.click(()=>{this.editingId=null,this.render()});let c=()=>{let d=String(s.val()||"").trim(),h=String(o.val()||"").trim()||void 0;n?(n.bp.type=="address"?Yt.update(n.bp.id,{target:d,condition:h}):Yt.update(n.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,n=$('<div class="bp-row"/>'),i=er&&er.c,s=i?i.EPC!=null?i.EPC:i.PC:void 0;e.pc!=null&&s===e.pc&&n.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)});n.append(o);let a;t.type=="source"?a=St(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=F.createOrShow(t.file);f&&f.highlightLines&&f.highlightLines(t.line-1,t.line-1)})):e.pc!=null&&(l.attr("title",a+" ($"+Ce(e.pc,4)+", click to open)"),l.on("click",()=>nQ(e.pc))),n.append(l);let c=$('<span class="bp-addr"/>');e.pc!=null?c.text("$"+Ce(e.pc,4)):c.text(e.error||"?").addClass("bp-error").attr("title",e.error),n.append(c);let d=$('<span class="bp-cond"/>').text(t.condition?"if "+t.condition:"").attr("title",t.condition?"if "+t.condition:"");n.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 n.append(h,u),t.enabled||n.addClass("bp-disabled"),n}};function pu(r,e){if(r=r.trim(),!r)return null;if(e){if(r in e)return{addr:e[r],isSymbol:!0};let n=r.toLowerCase();for(var t in e)if(t.toLowerCase()===n)return{addr:e[t],isSymbol:!0}}return/^(0x|\$)[0-9a-f]+$/i.test(r)?{addr:parseInt(r.replace(/^(0x|\$)/i,""),16),isSymbol:!1}:/^[0-9a-f]+$/i.test(r)?{addr:parseInt(r,16),isSymbol:!1}:null}function U5(r,e){for(let t of e||[]){let n=t.last!=null?t.last:t.start+t.size-1;if(r>=t.start&&r<=n)return t}return null}function iQ(r,e,t){let n=U5(e.addr,t),i=(n==null?void 0:n.type)==="rom";return{record:{id:"debugger:"+r.toLowerCase(),name:r,kind:i?"label":"var",brief:i?"open in Disassembly":"open in Memory Browser",source:"debugger",file:"",addr:e.addr},score:500}}function sQ(r,e){return r.isSymbol||!e}function q5(r,e){let t=null;return()=>{t&&clearTimeout(t),t=setTimeout(r,e)}}var G5=30;function mu(r){return String(r).replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function H5(){let r=F&&F.getActive&&F.getActive();if(r&&r.getSelectionText){let e=r.getSelectionText();if(e&&e.indexOf(`
`)<0&&e.indexOf("\r")<0)return e.trim()}return""}function K5(r){var t;let e=r.record;if(e.source==="project"){let n=e.file;if(!n||!F.isWindow(n))return;let i=F.createOrShow(n);i instanceof Pr&&e.line&&i.navigateToLine(e.line)}else if(e.source==="toolchain"){let n=e.file;if(!n)return;Gl(n);let i=F.createOrShow("#headerview/"+n);i instanceof us&&e.line&&i.navigateToLine(e.line)}else if(e.source==="debugger"){let n=(t=e.addr)!=null?t:-1;if(n<0)return;if(e.kind==="label"&&F.isWindow("#disasm")){let i=F.createOrShow("#disasm");i instanceof Mi&&i.goToAddress(n)}else{let i=F.createOrShow("#memory");i instanceof fs&&i.goToAddress(n)}}else if(e.source==="docs"){let n=e.url||"";n.startsWith("#help/")?F.createOrShow(n):n&&window.open(n,"_blank")}}function yb(){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"),n=[],i=-1,s=d=>{if(i=Math.max(-1,Math.min(d,n.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(),g=f.getBoundingClientRect(),v=g.top-m.top;v<0?h.scrollTop+=v:v+g.height>m.height&&(h.scrollTop+=v+g.height-m.height)}}},o=(d=i)=>{let h=n[d];h&&(K5(h),bootbox.hideAll())},a=d=>{if(n=d||[],n.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 n){let f=u.record,m=f.source,g=f.kind==="func"?"\u0192":f.kind==="macro"?"#":f.kind==="label"?":":f.kind==="struct"?"S":f.kind==="enum"?"E":f.kind==="text"?"\u2261":"\u2022",v=f.source==="debugger"?Ce(f.addr,4):f.file&&f.line?`${f.file}:${f.line}`:f.file||"",k=f.kind!=="text",L=$('<li class="list-group-item search-hit" style="cursor:pointer;padding:6px 10px;display:flex;align-items:center;overflow:hidden"></li>');L.html(`<span class="search-kind" style="margin-right:6px;font-weight:bold;flex:0 0 auto">${g}</span><span class="search-name" style="flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">`+(k?`<strong>${mu(f.name)}</strong>`:`<span class="search-dumb">${mu(f.name)}</span>`)+(f.brief?` <span class="text-muted">- ${mu(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">${v?mu(v):""}</span>`),L.click(()=>{o(n.indexOf(u))}),h.append(L)}t.empty().append(h),s(0)},l=q5(async()=>{let d=e.val();if(!d){n=[],i=-1,t.empty();return}try{let h=await PP.query(d,G5),u=pu(d,P&&P.debugSymbols&&P.debugSymbols.symbolmap);u&&sQ(u,h.length>0)&&h.push(iQ(d,u,ae&&ae.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(n.length-1))});let c=H5();c&&(e.val(c),l())}var J5=800,eX=1e3,tX=16;function hQ(r){var e={};return r.forEach(t=>{e[t.name]=(e[t.name]||0)+1}),r.forEach(t=>{e[t.name]>1&&t.group&&(t.name=t.group+": "+t.name)}),r}function oQ(r){return r.art?r.brev?0:7:null}var Ou=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function kb(r){return r.replace(/(\shex\s+)([0-9a-f]+)/ig,function(e,t,n){for(var i=t,s=0;s<n.length;s+=2)i+="0x"+n.substr(s,2)+",";return i})}function uQ(r){for(var e=[],t;t=Ou.exec(r);){var n;t[4]?n=parseInt(t[5],2):t[2].startsWith("%")?n=parseInt(t[3],2):t[2].startsWith("x")||t[2].startsWith("$")||t[2].endsWith("h")?n=parseInt(t[3],16):n=parseInt(t[3]),e.push(n)}return e}function rX(r,e,t){r=kb(r);for(var n="",i,s=0,o=0,a=Math.ceil(t/4);i=Ou.exec(r);)n+=r.slice(s,Ou.lastIndex-i[0].length),s=Ou.lastIndex,i[4]?n+=i[4]+Ku(e[o++],parseInt(i[4])):i[2].startsWith("%")?n+=i[1]+i[2]+Ku(e[o++],t):i[2].endsWith("h")?n+=i[1]+i[2]+Ce(e[o++],parseInt(i[2])):i[2].startsWith("x")?n+=i[1]+"x"+Ce(e[o++],a):i[2].startsWith("$")?n+=i[1]+"$"+Ce(e[o++],a):n+=i[1]+e[o++].toString();return n+=r.slice(s),n=n.replace(/(\shex\s+)([,x0-9a-f]+)/ig,(l,c,d)=>{var h=c+d;return h=h.replace(/0x/ig,"").replace(/,/ig,""),h}),n}function $b(r,e){if(!e)return r;for(var t=0,n=0;n<e.length;n++){var i=e[n];i<0&&(i=-i-1,t^=1<<i),r&1<<n&&(t^=1<<i)}return t}function Qb(r,e){var t=e[r%e.length];return[t>>3,t&7]}var nX=[[0,0,4],[8,0,0]],iX=[[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 sX(r,e,t,n,i,s){for(var o=0;o<8;o++)for(var a=r[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+n+c]=d}}function oX(r,e,t,n,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+n+c]||0)&3;d&1&&(a|=1<<l),d&2&&(a|=1<<l+4)}r[e+o]=a}}function Tb(r){return r.w===16&&r.h===16?iX:nX}function fQ(r){return Tb(r).length*8}function aX(r,e){for(var t=e.w,n=e.h,i=e.count||1,s=e.wpimg||fQ(e),o=Tb(e),a=[],l=0;l<i;l++){for(var c=new Array(t*n).fill(0),d=l*s,h=0;h<o.length;h++){var[u,f,m]=o[h];sX(r,d+u,c,f,m,t)}a.push(new Uint8Array(c))}return a}function lX(r,e){for(var t=e.w,n=e.h,i=e.count||r.length,s=e.wpimg||fQ(e),o=Tb(e),a=new Array(s*i).fill(0),l=0;l<i;l++)for(var c=r[l]||new Uint8Array(t*n),d=l*s,h=0;h<o.length;h++){var[u,f,m]=o[h];oX(a,d+u,c,f,m,t)}return a}function cX(r,e){if(e.pacstrip)return aX(r,e);var t=e.w,n=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*n*i,h=e.skip||0,u=e.wpimg||l*n,f=l;e.il&&(u=l,f=l*i);for(var m=[],g=0;g<i;g++){for(var v=[],k=0;k<n;k++)for(var L=e.flip?n-1-k:k,M=u*g+L*f,D=0,w=0;w<t;w++){var x=0,R=$b(M,e.remap);e.reindex&&([R,D]=Qb(w,e.reindex),R+=M);for(var X=0;X<o;X++){var j=r[R+X*d+h];x|=((e.brev?j>>a-D-s:j>>D)&c)<<X*s}v.push(x),D+=s,D>=a&&!e.reindex&&(M+=1,D=0)}m.push(new Uint8Array(v))}return m}function pQ(r){var e=r.count||1,t=r.bpp||1,n=r.np||1,i=r.bpw||8,s=r.sl||Math.ceil(r.w*t/i),o=r.pofs||s*r.h*e,a=r.skip||0,l=r.wpimg||(r.map==="nesnt"?1024:s*r.h),c=s;r.il&&(l=s,c=s*e);var d=0;if(r.reindex)for(var h=0;h<r.w;h++)d=Math.max(d,Qb(h,r.reindex)[0]);for(var u=0,f=0;f<e;f++)for(var m=0;m<r.h;m++)for(var g=r.flip?r.h-1-m:m,v=l*f+g*c,k=Math.ceil(r.w*t/i),L=0;L<k;L++){var M=r.reindex?v+d:$b(v,r.remap);u=Math.max(u,M+(n-1)*o+a),v++}return Math.max(l*e,u+1)}function mQ(r,e){var t=uQ(kb(r));if(e.comp=="rletag"&&(t=Array.from(Ju(new Uint8Array(t)))),e.w>0&&e.h>0){var n=pQ(e);if(t.length!=n)return`Expected ${n} 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 OQ(r,e){if(e.comp=="rletag")return null;if(e.w>0&&e.h>0){var t=pQ(e);if(r!=t)return`Expected ${t} byte(s), found ${r}`}else if(e.pal&&r<1)return`Palette requires at least 1 byte, found ${r}`;return null}function aQ(r,e){let t=1;for(let n=0;n<e&&n<r.length;n++)r[n]===`
`&&t++;return t}function gQ(r,e){for(var t=/[/;][*;]([{].+[}])[*;][/;]/g,n=[],i;i=t.exec(r);){var s=i.index+i[0].length,o;e?o=r.indexOf("end",s):i[0].startsWith(";;")?(o=r.indexOf(";;",s),o==r.indexOf(";;{",s)&&(o=-1)):o=r.indexOf(";",s);var a=aQ(r,i.index),l=i[0],c=o>=0?aQ(r,o):"???";if(o<0){var d=e?'"end"':i[0].startsWith(";;")?'";;"':'";"';n.push({header:l,startline:a,endline:c,error:`No closing ${d} found after asset header`})}else if(o<=s)n.push({header:l,startline:a,endline:c,error:"Empty data block after asset header"});else try{var h=i[1].replace(/([A-Za-z]+):/g,'"$1":'),u=JSON.parse(h),f=/#embed\s+"(.+?)"/.exec(r.substring(s,o)),m=f?f[1]:void 0;n.push({header:l,startline:a,endline:c,fmt:u,start:s,end:o,embedFile:m})}catch(g){n.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${g.message}`})}}return n}function bQ(r,e,t){if(t(e))return e;var n=r.lastIndexOf("/");if(n>=0){var i=r.substring(0,n+1)+e;if(t(i))return i}return null}function dX(r,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return lX(r,e);var t=e.w,n=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*n*i,h=e.skip||0,u=e.wpimg||l*n,f=l;e.il&&(u=l,f=l*i);var m=e.il?f*n:u*i,g;o>0&&e.sl?g=new Uint8Array(m):a<=8?g=new Uint8Array(m*o):g=new Uint32Array(m*o);for(var v=0;v<i;v++)for(var k=r[v],L=0,M=0;M<n;M++)for(var D=e.flip?n-1-M:M,w=v*u+D*f,x=0,R=0;R<t;R++){var X=k[L++],j=$b(w,e.remap);e.reindex&&([j,x]=Qb(R,e.reindex),j+=w);for(var G=0;G<o;G++){var ie=X>>G*s&c;g[j+G*d+h]|=e.brev?ie<<a-x-s:ie<<x}x+=s,x>=a&&!e.reindex&&(w+=1,x=0)}return g}function lQ(r,e,t,n,i,s,o){for(var a=[],l=0;l<r.length;l++){var c=r[l],d=4278190080;d|=(c>>e&(1<<t)-1)<<8-t,d|=(c>>n&(1<<i)-1)<<16-i,d|=(c>>s&(1<<o)-1)<<24-o,a.push(d)}return a}function hX(r){var e=(r>>0&1)*33+(r>>1&1)*71+(r>>2&1)*151,t=(r>>3&1)*33+(r>>4&1)*71+(r>>5&1)*151,n=(r>>6&1)*81+(r>>7&1)*174;return 4278190080|n<<16|t<<8|e}function uX(r){var e=r.pal;if(typeof e=="number"){var t=Math.floor(Math.abs(e/100)%10),n=Math.floor(Math.abs(e/10)%10),i=Math.floor(Math.abs(e)%10);return 1<<t+n+i}else{if(e==="pacman")return 256;var s=yQ[e];if(s)return s.length;throw new Error("No palette named "+e)}}function Sb(r,e){var t=e.pal,n;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?n=lQ(r,0,i,i,s,i+s,o):n=lQ(r,i+s,o,i,s,0,i)}else if(t==="pacman"){n=[];for(var a=0;a<r.length;a++)n.push(hX(r[a]))}else{var l=yQ[t];if(l)n=new Uint32Array(r).map(c=>l[c&l.length-1]|4278190080);else throw new Error("No palette named "+t)}return n}function ec(r){var e=r.pal;if(typeof e!="number"||!isFinite(e))return null;var t=Math.floor(Math.abs(e/100)%10),n=Math.floor(Math.abs(e/10)%10),i=Math.floor(Math.abs(e)%10);return t+n+i<=0?null:e>=0?{r:t,g:n,b:i,rshift:0,gshift:t,bshift:t+n}:{r:i,g:n,b:t,rshift:t+n,gshift:t,bshift:0}}function cQ(r,e,t,n){var i=ec(r);return i?(e&(1<<i.r)-1)<<i.rshift|(t&(1<<i.g)-1)<<i.gshift|(n&(1<<i.b)-1)<<i.bshift:0}function fX(r,e){var t=ec(r);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 yQ={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]},dQ=[["Background",0,16],["Sprite",16,16]],pX={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:dQ,gg:dQ};function SQ(r,e,t,n,i){var s=[];return e&&e.forEach(([o,a,l])=>{if(!(a>=r.length)){if(l==t)s.push({node:n,name:o,group:i,palette:r.slice(a,a+l)});else if(-l==t){var c=r.slice(a,a-l);c.reverse(),s.push({node:n,name:o,group:i,palette:c})}else if(l+1==t){var d=new Uint32Array(t);d[0]=r[0],d.set(r.slice(a,a+l),1),s.push({node:n,name:o,group:i,palette:d})}}}),s}function tc(r,e){if(r==null||e==null||r.length!==e.length)return!1;if(r===e)return!0;for(var t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}function Qu(r,e){if(r==null||e==null||r.length!==e.length)return!1;if(r===e)return!0;for(var t=0;t<r.length;t++)if(!tc(r[t],e[t]))return!1;return!0}var Yn=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}},gu=class extends Yn{},ba=class extends gu{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}},$u=class $u extends gu{constructor(e,t,n,i,s,o){super(),this.project=e,this.fileid=t,this.label=n,this.bpw=o||8,this.rangeId=`asset_${$u.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=rX(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=kb(e);var t=uQ(e);return this.words=t,!0}};$u.nextRangeId=0;var bu=$u,yu=class extends Yn{updateLeft(){return!1}updateRight(){return this.words=Ju(new Uint8Array(this.left.words)),!0}},Su=class extends Yn{constructor(e){super(),this.fmt=e}updateLeft(){return this.images=this.right.images,this.words=dX(this.images,this.fmt),!0}updateRight(){return tc(this.words,this.left.words)?!1:(this.words=this.left.words,this.images=cX(this.words,this.fmt),!0)}},vb=class{constructor(e){this.palcols=e}indexOf(e){return this.palcols.indexOf(e)}},ho=class extends Yn{constructor(t,n){super();this.palindex=0;this.palselected=!1;this.context=t,n.pacstrip?this.ncolors=4:this.ncolors=1<<(n.bpp||1)*(n.np||1),this.palname=n.palname}updateLeft(){this.right&&(this.rgbimgs=this.right.rgbimgs);var t=new vb(this.palette),n=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=n,!0}updateRight(){if(!this.updateRefs()&&Qu(this.images,this.left.images))return!1;this.images=this.left.images;var t=this.palette.length-1;return this.rgbimgs=this.images.map(n=>{for(var i=new Uint32Array(n.length),s=0;s<n.length;s++)i[s]=this.palette[n[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 n=this.paloptions.findIndex(i=>i.name===this.palname);n>=0&&(this.palindex=n)}t=this.paloptions[this.palindex].palette}return t==null&&(this.ncolors<=2?t=new Uint32Array([4278190080,4294967295]):t=new Uint32Array([4278190080,4294902015,4294967040,4294967295])),tc(this.palette,t)?!1:(this.palette=t,!0)}};function mX(r){for(var e=new Map,t=new Uint32Array(r.length),n=0,i=0;i<r.length;i++){for(var s=r[i];e[s];)s^=++n;t[i]=s,e[s]=1}return t}var Jl=class extends Yn{constructor(e){super(),this.palfmt=e}updateLeft(){return!0}updateRight(){if(tc(this.words,this.left.words))return!1;this.words=this.left.words;var e=Sb(this.words,this.palfmt);return this.palette=this.palfmt.layout||this.palfmt.pal==="pacman"?new Uint32Array(e):mX(e),this.layout=pX[this.palfmt.layout],this.rgbimgs=[],this.palette.forEach(t=>{this.rgbimgs.push(new Uint32Array([t]))}),!0}getAllColors(){for(var e=[],t=0;t<uX(this.palfmt);t++)e.push(t);return Sb(e,this.palfmt)}},vu=class extends Yn{constructor(e){super(),this.updateCells=e}updateLeft(){return!0}updateRight(){return this.updateCells(),!0}},xb=class extends Yn{constructor(t){super();this.tileindex=0;this.context=t}updateRefs(){var t=this.tilemap;return this.context!=null&&(this.tileoptions=this.context.getTilemaps(256),this.tileoptions&&this.tileoptions.length>0&&(this.tilemap=this.tileoptions[this.tileindex].images)),!Qu(t,this.tilemap)}};var xu=class extends xb{constructor(e){super(e)}updateLeft(){return!1}updateRight(){if(!this.updateRefs()&&tc(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,n,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);n=t&11264|960|t&3072|t>>4&56|t>>2&7;for(var l=this.words[n],c=o^l<<9^2147483648,d=i*this.cols*8*8+s*8,h=0,u=(s&2)+((t&64)>>4),f=(l>>u&3)<<2,m=0;m<8;m++){for(var g=0;g<8;g++){var v=a[h++];v&&(v+=f),e[d++]=v}d+=this.cols*8-8}t++}return!0}},wb=class{constructor(){this.gapX=null}recreate(e,t){var n=$('<div class="asset_grid"/>');e.empty().append(n),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 ya;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="$"+Ce(l),c.updateImage(a),$(c.canvas).addClass("asset_cell"),$(c.canvas).click(h=>{t(l,c)}),this.viewers.push(c),o||(o=$("<span/>"),n.append(o)),o.append(c.canvas);var d=l%s==s-1;d&&(n.append($("<br/>")),o=null)})}updateImages(e){this.rgbimgs=e;for(var t=0;t<this.viewers.length;t++)this.viewers[t].updateImage(e[t])}},wu=class{constructor(e,t,n){this.viewers=[];this.sliders=[];this.currentWord=0;this.palfmt=e,this.rgbimgs=t,this.channels=ec(e),this.onpick=n}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=Sb([e],this.palfmt);return t&&t[0]||4278190080}updateColorWidgets(e){var t=this.paletteColor(e),n="#"+Ce(vo(t&16777215),6);this.previewEl&&this.previewEl.css("background-color",n),this.colorInput&&this.colorInput.value!==n&&(this.colorInput.value=n),this.hexEl&&this.hexEl.text(n+" $"+Ce(e,4))}setCurrent(e){if(this.currentWord=e,this.channels){var t=fX(this.palfmt,e);if(t)for(var n of this.sliders){var i=n.channel==="r"?t.r:n.channel==="g"?t.g:t.b;n.input.value=String(i),n.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 n=cQ(this.palfmt,e.r,e.g,e.b);this.setCurrent(n),this.onpick(n)}createSliders(e){var t=this.channels,n=Rr(e,"asset_colorpicker");this.previewEl=Rr(n,"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",n.append(this.colorInput)),this.hexEl=Rr(n,"asset_colorpicker_hex");var i=Rr(n,"asset_colorpicker_controls");for(var s of["r","g","b"]){var o=this.channelBits(s);if(!(o<=0)){var a=Rr(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=cQ(this.palfmt,h>>8-t.r,u>>8-t.g,f>>8-t.b);this.setCurrent(m),this.onpick(m)})}createGrid(e){var t=Rr(e,"asset_colorpicker_grid"),n=Rr(t,"asset_grid"),i=16,s=null;this.rgbimgs.forEach((o,a)=>{var l=new ya;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","$"+Ce(a)+" #"+Ce(vo(o[0]&16777215),6)),$(l.canvas).click(()=>{this.setCurrent(a),this.onpick(a)}),this.viewers.push(l),s||(s=$("<span/>"),n.append(s)),s.append(l.canvas),a%i===i-1&&(n.append($("<br/>")),s=null)})}};function Rr(r,e){var t=$(document.createElement("div"));return r&&t.appendTo(r),e&&t.addClass(e),t}var Pu=class extends Yn{constructor(e,t,n){super(),this.context=e,this.parentdiv=t,this.fmt=n}updateLeft(){return!0}updateRight(){if(Qu(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=Rr(this.parentdiv.empty(),"asset_dual"),n=Rr(t),i=Rr(t,"asset_editor").hide(),s=this.chooser=new wb;s.rgbimgs=this.rgbimgs,s.width=this.fmt.w||1,s.height=this.fmt.h||1;var o=oQ(this.fmt);if(o!=null&&(s.gapX=this.fmt.brev?o+1:o),s.recreate(n,(c,d)=>{let h=this.fmt.aspect||1,u=Math.min(tX,J5/(d.displayWidth*h),eX/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(n).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=oQ(this.fmt),n=this.left.images;if(n)for(var i=0;i<this.chooser.viewers.length;i++){var s=this.chooser.viewers[i];s.artInfo={artBit:t,bitsperword:e,indexedImage:n[i]}}}}createEditor(e,t,n,i){var s=new Pb;s.createWith(t),s.updateImage();var o=s.displayWidth*n,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}},ku=class extends Yn{constructor(e,t,n){super(),this.context=e,this.parentdiv=t,this.fmt=n}updateLeft(){return!0}updateRight(){if(Qu(this.rgbimgs,this.left.rgbimgs))return!1;this.rgbimgs=this.left.rgbimgs;var e=Rr(this.parentdiv.empty(),"asset_dual"),t=Rr(e),n=Rr(e,"asset_editor").hide(),i=new ya;return i.width=this.fmt.w,i.height=this.fmt.h,i.recreate(),i.updateImage(this.rgbimgs[0]),t.append(i.canvas),!0}},ya=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,n=l.displayWidth,i=0;i<this.height;i++){for(var s=i*this.width,o=i*n,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)}},vQ=null;function OX(){return vQ}function gX(r){vQ=r}function bX(r,e,t,n,i){for(var s=new Map,o=0;o<r.palette.length;o++)s.has(r.palette[o])||s.set(r.palette[o],i[o&i.length-1]);for(var a=e.slice(),l=Math.min(r.width,t),c=Math.min(r.height,n),d=0;d<c;d++)for(var h=0;h<l;h++){var u=r.pixels[d*r.width+h],f=s.get(u);a[d*t+h]=f!==void 0?f:u}return a}var Pb=class extends ya{constructor(){super(...arguments);this.curpalcol=-1;this.offscreen=new Map}getPositionFromEvent(t){var n=this.displayWidth,i=Math.floor(t.offsetX*n/$(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,n,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))}),n.empty(),this.aeditor=n,this.createToolbarButtons(n[0]),n.append(this.canvas),n.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,n){var i=this.artInfo;if(!i)return-1;var s=n*this.width+t,o=i.indexedImage[s]?0:1;return this.setArtPixel(t,n,o),o}setArtPixel(t,n,i){var s=this.artInfo;if(s&&!(t<0||t>=this.width||n<0||n>=this.height)){var o=n*this.width+t;s.indexedImage[o]!=i&&(s.indexedImage[o]=i,this.rgbdata[o]=this.palette[i],this.updateImage())}}getPixel(t,n){if(t=Math.round(t),n=Math.round(n),t<0||t>=this.width||n<0||n>=this.height)return this.offscreen[t+","+n]|this.palette[0];var i=t+n*this.width;return this.rgbdata[i]}setPixel(t,n,i){if(t=Math.round(t),n=Math.round(n),t<0||t>=this.width||n<0||n>=this.height)this.offscreen[t+","+n]=i;else{var s=t+n*this.width,o=this.rgbdata[s];o!=i&&(this.rgbdata[s]=i,this.updateImage())}}createPaletteButtons(){this.palbtns=[];for(var t=this.palbtnspan=Rr(null,"asset_toolbar"),n=0;n<this.palette.length;n++){var i=$(document.createElement("button")).addClass("palbtn"),s=this.palette[n]&16777215,o="#"+Ce(vo(s),6);i.click(this.setPaletteColor.bind(this,n)),i.css("backgroundColor",o).text(n.toString(16)),i.css("color",s&32768?"black":"white"),t.append(i),this.palbtns.push(i)}return t}createToolbarButtons(t){var n=new Bi(t,t);n.add("ctrl+shift+h","Flip X","glyphicon-resize-horizontal",this.flipX.bind(this)),n.add("ctrl+shift+v","Flip Y","glyphicon-resize-vertical",this.flipY.bind(this)),n.add("ctrl+shift+9","Rotate","glyphicon-repeat",this.rotate90.bind(this)),n.add("ctrl+shift+left","Move Left","glyphicon-arrow-left",this.translate.bind(this,1,0)),n.add("ctrl+shift+right","Move Right","glyphicon-arrow-right",this.translate.bind(this,-1,0)),n.add("ctrl+shift+up","Move Up","glyphicon-arrow-up",this.translate.bind(this,0,1)),n.add("ctrl+shift+down","Move Down","glyphicon-arrow-down",this.translate.bind(this,0,-1)),n.newGroup(),n.add(null,"Copy Image","glyphicon-copy",this.copyImage.bind(this)),n.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,n=this.width-Math.floor(this.width/t),i=new Uint32Array(n*this.height);return this.copyNonArtPixels(i,n,this.rgbdata,this.width),{pixels:i,width:n}}copyImage(){var{pixels:t,width:n}=this.getStrippedPixels();gX({width:n,height:this.height,pixels:t,palette:this.palette.slice()})}pasteImage(){var t=OX();if(t){var{pixels:n,width:i}=this.getStrippedPixels(),s=bX(t,n,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,n,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*n+l]=i[o*s+a]),(!d||s===this.width)&&a++,(!d||n===this.width)&&l++}}remapPixels(t){var n=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=n,this.width=i,this.artInfo?this.copyNonArtPixels(this.rgbdata,this.width,c,o):this.rgbdata.set(c),this.commit()}rotate(t){var n=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*n+this.width/2-.5,d=l*i+a*n+this.height/2-.5;return this.getPixel(c,d)})}rotate90(){this.rotate(90)}flipX(){this.remapPixels((t,n)=>this.getPixel(this.width-1-t,n))}flipY(){this.remapPixels((t,n)=>this.getPixel(t,this.height-1-n))}translate(t,n){this.remapPixels((i,s)=>this.getPixel(i+t,s+n))}};function xQ(){return h0()}var Tu=class{createDiv(e){this.maindiv=xn(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:()=>F.undoStep()},{key:"mod+shift+z",label:"Redo",fn:()=>F.redoStep()}]}clearAssets(){this.rootnodes=[],this.deferrednodes=[]}registerAsset(e,t,n){this.rootnodes.push(t),n?n>1?this.deferrednodes.push(t):this.deferrednodes.unshift(t):t.refreshRight()}getPalettes(e){var t=[],n=0;return this.rootnodes.forEach(i=>{for(;i!=null;){if(i instanceof Jl){var s=i.palette;n++;var o=i.palfmt.name||"Palette "+n;e==s.length&&t.push({node:i,name:o,palette:s}),i.layout&&t.push(...SQ(s,i.layout,e,i,o));break}i=i.right}}),hQ(t),t.length==0&&fe&&fe.startsWith("gb")&&(e==4?t.push({node:null,name:"DMG Green",palette:new Uint32Array(vc)}):e==2&&t.push({node:null,name:"DMG Green",palette:new Uint32Array([vc[0],vc[3]])})),t}getTilemaps(e){var t=[];return this.rootnodes.forEach(n=>{for(;n!=null;){if(n instanceof ho){var i=n.rgbimgs;i&&i.length>=e&&t.push({node:n,name:"Tilemap",images:n.images,rgbimgs:i})}n=n.right}}),t}isEditing(){return this.cureditordiv!=null}getCurrentEditNode(){return this.cureditnode}setCurrentEditor(e,t,n){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"));n.left;)n=n.left;this.cureditnode=n,this.updateHashForSelection(e)}updateHashForSelection(e){if(typeof window!="undefined"){var t=e?e.closest(".asset_block[data-fileid]"):null,n=t&&t.attr("data-fileid"),i=t&&t.attr("data-startline"),s="#asseteditor";n&&i&&(s+="/"+encodeURIComponent(n)+"/"+i),window.location.hash!==s&&history.replaceState(null,"",s)}}scanFileTextForAssets(e,t){var n=gQ(t,fe.includes("verilog")),i=n.map(s=>gt({fileid:e},s));return i}addPaletteEditorViews(e,t,n){var i=$('<div class="asset_dual"/>').appendTo(e),s=$('<div class="asset_editor"/>').hide(),o=ec(t.palfmt),a=[];o||t.getAllColors().forEach(v=>{a.push(new Uint32Array([v]))});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(v,k){var L=t.words[k],M=t.palette[k],D="#"+Ce(vo(M),6),w=M&32768?"black":"white";v.text(Ce(L,2)).css("background-color",D).css("color",w)}function g(){f.forEach(({cell:v,index:k})=>m(v,k))}return c.forEach(([v,k,L])=>{if(k<t.palette.length){var M=$("<tr/>").appendTo(l);$("<td/>").text(v).appendTo(M);for(var D=[],w=k;w<k+Math.abs(L);w++)D.push(w);L<0&&D.reverse(),D.forEach((x,R)=>{R>0&&x%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:x}),m(X,x),X.click(j=>{var G=new wu(t.palfmt,a,ie=>{n(x,ie),m(X,x)});G.recreate(s,t.words[x]),this.setCurrentEditor(s,X,t)})})}}),g}addPixelEditor(e,t,n){n.xform="scale(2)";var i=new Su(n);t.addRight(i);var s=new ho(this,n);i.addRight(s),s.addRight(new Pu(this,xn(e),n))}addPaletteEditor(e,t,n){var i=new Jl(n);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 vu(s))}ensureFileDiv(e){var t=this.getFileDivId(e),n=$(document.getElementById(t));if(n.length===0){var i=xn(this.maindiv,"asset_file"),s=xn(i,"asset_file_header").text(e);n=xn(i).attr("id",t).addClass("disable-select")}return n}refreshAssetsInFile(e,t){let n=0;if(fe.startsWith("nes")&&e.endsWith(".chr")&&t instanceof Uint8Array){let o=new ba(F,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),n++}else if(fe.startsWith("nes")&&e.endsWith(".pal")&&t instanceof Uint8Array){let o=new ba(F,e),a={pal:"nes",layout:"nes"};this.addPaletteEditor(this.ensureFileDiv(e),o,a),this.registerAsset("palette",o,0),n++}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=F.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&&ae.getFile(h);if(!h||!(u instanceof Uint8Array)){$('<div class="asset_error_msg"/>').text(`#embed: file not found: "${a.embedFile}"`).appendTo(l);continue}let f=OQ(u.length,a.fmt);if(f){$('<div class="asset_error_msg"/>').text(f).appendTo(l);continue}c=new ba(F,h)}else{let h=mQ(t.substring(a.start,a.end),a.fmt);if(h){$('<div class="asset_error_msg"/>').text(h).appendTo(l);continue}let u=e;c=new bu(F,e,u,a.start,a.end,a.fmt.bpw)}if(d=c,a.fmt.comp=="rletag"&&(c=c.addRight(new yu)),a.fmt.map=="nesnt"){c=c.addRight(new xu(this)),c=c.addRight(new ho(this,{w:8,h:8,bpp:4}));let h={w:8*(a.fmt.w||32),h:8*(a.fmt.h||30),count:1};c=c.addRight(new ku(this,xn(l),h)),this.registerAsset("nametable",d,2),n++}else a.fmt.w>0&&a.fmt.h>0?(this.addPixelEditor(l,c,a.fmt),this.registerAsset("charmap",d,1),n++):a.fmt.pal&&(this.addPaletteEditor(l,c,a.fmt),this.registerAsset("palette",d,0),n++)}}}return n}resolveEmbedFile(e,t){return bQ(e,t,n=>ae.getFile(n)!==void 0)}getFileDivId(e){return"__asset__"+s0(e)}refresh(e){if(e)this.maindiv.empty(),this.clearAssets(),ae.iterateFiles((n,i)=>{try{F.clearAssetRanges(n);var s=this.refreshAssetsInFile(n,i)}catch(o){console.log(o),this.ensureFileDiv(n).text(o+"")}}),console.log("Found "+this.rootnodes.length+" assets"),this.deferrednodes.forEach(n=>{try{n.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("/"),n=decodeURIComponent(t.slice(1,-1).join("/")),i=t[t.length-1];!n||!i||setTimeout(()=>{let s=this.maindiv.find(`.asset_block[data-fileid="${n}"][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){F.flushAllWindows(),F.undoStack=[],F.redoStack=[];let t=xQ();t.bind&&(t.bind("mod+z",n=>(F.undoStep(),!1)),t.bind("mod+shift+z",n=>(F.redoStep(),!1))),this.maindiv&&this.maindiv[0]&&this.maindiv[0].focus()}else{let t=xQ();t.unbind&&(t.unbind("mod+z"),t.unbind("mod+shift+z"))}}};var wQ=`<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>
<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="callstack.md">Call Stack</a></td>
<td>Call graph 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 PQ=`<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 kQ=`<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 $Q=`<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>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 QQ=`<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 TQ=`<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 _Q=`<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 AQ=`<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 CQ=`<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 one clock tick:</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 EQ=`<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 RQ=`<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 MQ=`<h1>Call Stack</h1>
<p>The Call Stack window reconstructs the program\u2019s call graph from runtime
stack activity. 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. A node shows how many times it was called and (while expanded)
the scanline range where it ran. Because the tree is built from stack
pushes and pops plus the observed jump distances, it reflects what the
program actually did rather than what the source says.</p>
<p>Counts 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 and calls are going.</p>
`;var LQ=`<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="callstack.md">Call Stack</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 DQ=`<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 IQ=`<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 ZQ=`<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 XQ=`<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 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>For the linker phase, the supported parameters are:</p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>cfgfile</code></td>
<td>linker configuration file to use (e.g. for CC65\u2019s ld65)</td>
</tr>
<tr>
<td><code>libargs</code></td>
<td>comma-separated list of library/symbol arguments</td>
</tr>
</tbody>
</table>
<pre><code class="language-c">//#tooldef ld cfgfile=apple2-hgr2.cfg
//#tooldef ld libargs=,nes.lib
</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 <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>Either pragma slows builds but produces faster and smaller code.</p>
<h3>Game Boy ROM banks</h3>
<p>On the Game Boy, <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>.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 zQ=`<!-- 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/sehugg/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.10</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>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>02.00</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</td>
<td><code>.c</code> <code>.h</code></td>
</tr>
<tr>
<td><code>sdldz80</code></td>
<td>sdldz80</td>
<td>linker</td>
<td>z80</td>
<td>03.00</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/sehugg/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>.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>.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>.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>.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>.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>.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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>.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>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>.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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>.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>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>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 WQ=`<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, 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>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 BQ=`<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 VQ=`<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 tz=Ib(),Au=[{id:"index",title:"IDE Help",html:wQ},{id:"editor",title:"Editor",html:PQ},{id:"disasm",title:"Disassembly",html:kQ},{id:"memory",title:"Memory Browser",html:$Q},{id:"memmap",title:"Memory Map",html:QQ},{id:"vram",title:"VRAM Browser",html:TQ},{id:"memprobe",title:"Memory Probe",html:_Q},{id:"crtprobe",title:"CRT Probe",html:AQ},{id:"probelog",title:"Probe Log",html:CQ},{id:"scanlineio",title:"Scanline I/O",html:EQ},{id:"symbols",title:"Symbol Profiler",html:RQ},{id:"callstack",title:"Call Stack",html:MQ},{id:"debugtree",title:"Debug Tree",html:LQ},{id:"breakpoints",title:"Breakpoints",html:DQ},{id:"asseteditor",title:"Asset Editor",html:IQ},{id:"managing-files",title:"Managing Files",html:ZQ},{id:"build-directives",title:"Build Directives",html:XQ},{id:"toolchains",title:"Toolchains & Platforms",html:zQ},{id:"asset-headers",title:"Asset Headers",html:WQ},{id:"embedding-ide",title:"Embedding the IDE",html:BQ},{id:"verilog-waveform",title:"Waveform Viewer",html:VQ}],Zb={};for(let r of Au)Zb[r.id]=r;wP(()=>Au);function Xb(r){let e=r||"";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(/^\.\//,""),Zb[e]?e:"index"}function rz(r){return Zb[Xb(r)]}var nz={"#disasm":"disasm","#memory":"memory","#memmap":"memmap","#vram":"vram","#memprobe":"memprobe","#crtprobe":"crtprobe","#probelog":"probelog","#scanlineio":"scanlineio","#symbols":"symbols","#callstack":"callstack","#debugtree":"debugtree","#breakpoints":"breakpoints","#asseteditor":"asseteditor"};function dT(r,e){return e?"editor":r&&nz[r]||"index"}function iz(r){r.querySelectorAll("a[href]").forEach(t=>{let n=t.getAttribute("href");if(!n)return;if(/^[a-z][a-z0-9+.-]*:/i.test(n)){t.setAttribute("target","_blank"),t.setAttribute("rel","noopener noreferrer");return}if(n.startsWith("/")||n.startsWith("#"))return;let i=n.indexOf("#"),s=i>=0?n.substring(0,i):n;s.endsWith(".md")&&(t.setAttribute("href","#help/"+Xb(s)),t.removeAttribute("target"))})}function sz(r,e){let t=rz(e);r.innerHTML=tz.sanitize(t.html),iz(r)}var oc=class{constructor(e){this.id=Xb(e||"index")}getPath(){return"#help/"+this.id}createDiv(e){return this.maindiv=xn(e,"vertical-scroll help-view"),sz(this.maindiv[0],this.id),this.maindiv[0]}refresh(e){}};var ac=256,hT=100,uT=!1,Cu=class r{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+" ($"+Ce(e)+")";else if(typeof e=="boolean")t=e.toString();else if(typeof e=="string")e.length<hT?t=e:t=e.substring(0,hT)+"...";else if(e.buffer&&e.length<=ac)t=a0(e,0,e.length);else if(typeof e=="object"||typeof e=="function")if(this._content!=null){if(e.slice&&e.length>ac){let l={},c=e;for(var n=ac;e.length/n>ac;)n*=2;for(let d=0;d<c.length;d+=n)l["$"+Ce(d)]={$$:()=>c.slice(d,d+n)};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>ac){let l={},c=e;for(var n=100;o.length/n>100;)n*=2;for(let h=0;h<o.length;h+=n){for(var i={},s=h;s<h+n;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=!uT&&typeof l=="string"&&l.startsWith("$$");if(!c){let d=this.children.get(l);d==null&&(d=new r(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 fT(r,e){var t=new Cu(null,null);t.view=e,t._content=r;var n=new Cu(t,"/");return n.expanded=!0,n.getDiv(),n._div.style.padding="0px",n}var zb=class{createDiv(e){return this.root=fT(e,this),this.root.getDiv()}refresh(){this.tick()}tick(){this.root.update(this.getRootObject())}};var Eu=class extends zb{getRootObject(){return P.getDebugTree()}},Ru=class extends ps{constructor(){super(...arguments);this.cumulativeData=!0}createDiv(t){return this.clear(),this.treeroot=fT(t,this),this.treeroot.getDiv()}refresh(){this.tick()}tick(){this.treeroot.update(this.getRootObject()),this.probe&&this.probe.clear()}clear(){this.graph=null,this.reset()}reset(){this.stack=[],this.lastsp=-1,this.lastpc=0,this.jsr=!1,this.rts=!1}newNode(t,n){return{$$SP:n,$$PC:t,count:0,startLine:null,endLine:null,calls:{}}}newRoot(t,n){this.stack.length==0?(this.graph=this.newNode(null,n),this.stack.unshift(this.graph)):n>this.stack[0].$$SP&&(this.graph=this.newNode(null,n),this.graph.calls[this.addr2str(t)]=this.stack[0],this.stack.unshift(this.graph))}getRootObject(){return this.redraw((t,n,i,s,o,a)=>{switch(t){case 184549376:this.newRoot(this.lastpc,this.lastsp);case 167772160:if(this.stack.length){let c=this.stack[this.stack.length-1];var l=this.lastsp-n;(l==2||l==3)&&n<c.$$SP&&(this.jsr=!0),(l==-2||l==-3)&&this.stack.length>1&&n>c.$$SP&&(this.rts=!0)}this.lastsp=n;break;case 16777216:if(Math.abs(n-this.lastpc)>=4){if(this.jsr&&this.stack.length){let c=this.stack[this.stack.length-1],d=this.addr2str(n),h=c.calls[d];h==null?h=c.calls[d]=this.newNode(n,this.lastsp):h.$$PC==null&&(h.$$PC=n),this.stack.push(h),h.count++,h.startLine=s}this.jsr=!1,this.rts&&this.stack.length&&(this.stack.pop().endLine=s),this.rts=!1}this.lastpc=n;break}}),this.graph&&(this.graph.$$Stack=this.stack),uT?this.graph:this.graph&&this.graph.calls}};var Mu=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 n=this.id2div[e];return n||(n=this.id2div[e]=t.createDiv(this.containerdiv),$(n).hide()),t}createOrShow(e,t){var n=this.create(e),i=this.id2div[e];if(this.activewnd!=n?(this.activediv&&$(this.activediv).hide(),this.activewnd&&this.activewnd.setVisible&&this.activewnd.setVisible(!1),this.activediv=i,this.activewnd=n,this.activeid=e,$(i).show(),this.refresh(!0),this.refreshErrors(),n.setVisible&&n.setVisible(!0),this.id2showfn[e]&&this.id2showfn[e](e,n),Wr()):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 n}updateTitle(e){if(this.titlePrefix){var t=St(this.project.mainPath);if(e===this.project.mainPath)document.title=this.titlePrefix+t;else{var n=e.startsWith("#headerview/")?e.substring(12):e.startsWith("#help/")?e.substring(6):e.startsWith("#")?e:St(e);document.title=this.titlePrefix+t+" | "+n}}}put(e,t){this.id2window[e]=t}refresh(e){this.activewnd&&this.activewnd.refresh&&this.activewnd.refresh(e)}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 n=this.project.getFile(e);this.undoStack.push({fileid:e,data:n instanceof Uint8Array?new Uint8Array(n):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,n,i){var s=this.id2window[e]||this.create(e);s.setAssetRange&&s.setAssetRange(t,n,i)}getAssetText(e,t){var n=this.id2window[e]||this.create(e);return n.getAssetText?n.getAssetText(t):null}replaceAssetText(e,t,n){var i=this.id2window[e]||this.create(e);i.replaceAssetText&&i.replaceAssetText(t,n),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 n=this.id2window[e.fileid];if(n&&n.undoStep)n.undoStep(),n.getValue&&this.project.updateFile(e.fileid,n.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 n=this.id2window[e.fileid];if(n&&n.redoStep)n.redoStep(),n.getValue&&this.project.updateFile(e.fileid,n.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 n=this.id2window[t];n&&n.setText&&e.getItem(t).then(i=>{this.updateFile(t,i)})}}findWindowWithFilePrefix(e){e=St(zt(e));for(var t in this.id2createfn)if(!(t.toLowerCase().endsWith(".h")||t.toLowerCase().endsWith(".inc")||t.toLowerCase().endsWith(".bas"))&&St(zt(t))==e)return t;return null}};var oz=$f(),az=["#sidebar","#workspace","#emulator"],Wb={sidebar:[100,0,0],editor:[0,100,0],emulator:[0,0,100]},Nt=null,Li=null,mo=!1,ai="workspace",Lu=null,lc=null,po=typeof window!="undefined"&&window.matchMedia?window.matchMedia("only screen and (max-width: 760px)"):null,pT=!1;function Bb(){return po?po.matches:hs}function Vb(r){Li&&(Li.destroy(),Li=null),Li=oz(az,{sizes:r,minSize:mo?[0,0,0]:[0,250,250],onDrag:()=>{Nt.resizePlatform()},onDragEnd:()=>{!mo&&Nt.hasLocalStorage&&localStorage.setItem(lc,JSON.stringify(Li.getSizes())),Nt.resizeWindows()}})}function OT(){Li.setSizes(Wb[ai]||Wb.editor)}function gT(r){ai=Wb[r]?r:"editor",$("#mobiletabs .mobiletab").removeClass("active"),$("#mobiletabs .mobiletab[data-tab='"+ai+"']").addClass("active"),$("#sidebar,#workspace,#emulator").removeClass("active");var e=ai==="sidebar"?"#sidebar":ai==="emulator"?"#emulator":"#workspace";$(e).addClass("active"),mo&&Nt&&Nt.onTabChanged&&Nt.onTabChanged(ai)}function Yb(r){mo=r,typeof document!="undefined"&&$("body").toggleClass("tab-layout",r)}function Du(r){gT(r),!(!mo||!Li)&&(OT(),setTimeout(()=>{ai==="emulator"&&Nt.resizePlatform(),ai==="editor"&&Nt.resizeWindows()},0))}function mT(){var r=Bb();r!==mo&&(r?(Li&&(Lu=Li.getSizes()),Yb(!0),Vb(Lu||[0,55,45]),Du(ai)):(Yb(!1),$("#sidebar,#workspace,#emulator").removeClass("active"),Nt&&Nt.onTabChanged&&Nt.onTabChanged("emulator"),Vb(Lu||[12,44,44]),Nt.resizePlatform(),Nt.resizeWindows()))}function bT(r){Nt=r;var e=Nt.getPlatformId();lc="workspace-split3-"+e,Nt.isEmbed&&(lc="embed-"+lc);var t;e.startsWith("vcs")?t=[0,50,50]:Nt.isEmbed||hs?t=[0,55,45]:t=[12,44,44];var n=Nt.hasLocalStorage&&localStorage.getItem(lc);if(n)try{t=JSON.parse(n)}catch(i){console.log(i)}Bb()&&(Lu=t),Yb(Bb()),Vb(t),mo?(OT(),gT(ai)):$("#sidebar,#workspace,#emulator").removeClass("active"),pT||(pT=!0,$("#mobiletabs").on("click",".mobiletab",function(){Du($(this).attr("data-tab"))}),$("#sidebar").on("click","a",function(){Du("editor")}),po&&(po.addEventListener?po.addEventListener("change",mT):po.addListener&&po.addListener(mT)))}function yT(r,e,t){let n=null,i=256,s=0,o=e.listings;if(o)for(let a in o){let l=o[a],c=l.assemblyfile||l.sourcefile,d=e.filename2path[a]||a;if(c==l.sourcefile&&(d=e.findWindowWithFilePrefix(a)),d&&e.isWindow(d)){let h=c&&c.findLineForOffset(r,t);if(h){let u=c.lines[h.line+1];if(!u||r<u.offset){let f=r-h.offset;f<i&&(n=d,i=f,s=h.line)}}}}return n?{wndid:n,line:s}:null}var Os=Ib(),de=ef(window.location.search||"?"),fe,Oo,_t,P,ae,F,er,PT,uc,hc=$("#controls_top"),ft,kr,Wu,Fb=!1,gs,Di,Zu,Pn,Pa=xo(de.electron),tr=xo(de.embed),dc,cc,Xu=!1,wa=!1,fc=null,kT=null,Gb=!1;function ss(){return Pn}function Ci(){return ae}function xr(){return Di}function Tl(){return PT}function lz(){return new Worker("./gen/worker/bundle.js")}var Lr=(function(){try{let e="__some_random_key_you_are_not_going_to_use__";localStorage.setItem(e,e);var r=localStorage.getItem(e)==e;return localStorage.removeItem(e),r}catch(e){return!1}})(),Nb=class{setLastPreset(e){Lr&&!tr&&(_t&&fe&&!Pa?localStorage.setItem("__lastrepo_"+fe,_t):localStorage.removeItem("__lastrepo_"+fe),localStorage.setItem("__lastplatform",fe),localStorage.setItem("__lastid_"+Oo,e))}unsetLastPreset(){Lr&&!tr&&(delete de.file,localStorage.removeItem("__lastid_"+Oo))}getLastPreset(){return Lr&&!tr&&localStorage.getItem("__lastid_"+Oo)}getLastPlatformID(){return Lr&&!tr&&localStorage.getItem("__lastplatform")}getLastRepoID(e){return Lr&&!tr&&e&&localStorage.getItem("__lastrepo_"+e)}shouldCompleteTour(){return Lr&&!tr&&!localStorage.getItem("8bitworkshop.hello")}completedTour(){Lr&&!tr&&localStorage.setItem("8bitworkshop.hello","true")}shouldWarnAboutPersistence(){return Lr&&!tr&&!localStorage.getItem("8bitworkshop.persistwarn")}warnedAboutPersistence(){Lr&&!tr&&localStorage.setItem("8bitworkshop.persistwarn","true")}},Zi=new Nb;async function $T(r,e){if(Pa){r&&ar(`The desktop version keeps your files in the "8bitworkshop" directory, so browser storage permissions don't apply.`);return}if(tr){r&&ar("Embedded pages can't be granted persistent storage. Open 8bitworkshop in its own tab to keep your edits.");return}var t=await lO();if(console.log("requestPersistPermission =",t),!!r&&!(t.persisted&&e)){if(!t.persisted&&e){if(!Zi.shouldWarnAboutPersistence())return;Zi.warnedAboutPersistence()}ar(Bw(t,!0))}}var ST=!1;async function cz(){if(!ST){ST=!0;var r=await lO();console.log("storageQuotaExceeded =",r),Re(Vw(r))}}function dz(){return Zu?Zu.title||Zu.name||ae.mainPath||"ROM":ae.mainPath||"ROM"}async function hz(){var r=new oh(fe);return Pa?(console.log("using electron with local filesystem",alternateLocalFilesystem),new sa(r,alternateLocalFilesystem)):de.localfs!=null?new sa(r,await wz(de.localfs)):new sa(r,new ah(Pn))}async function uz(){var r=await hz();ae=new lh(lz(),fe,P,r),vP(()=>ae),ae.remoteTool=de.tool||null,F=new Mu($("#workspace")[0],ae),ae.callbackBuildResult=e=>{Az(e)},ae.callbackBuildStatus=e=>{fz(e)},ae.onFileChanged=(e,t)=>{var n=F.id2window[e];n&&(n instanceof Pr&&typeof t=="string"?n.setText(t):n instanceof Kl&&t instanceof Uint8Array?n.setData(t):console.warn("onFileChanged: unknown view or data type"));var i=F.id2window["#asseteditor"];i&&i===F.getActive()&&i.refresh(!0)}}function fz(r){r?hc.addClass("is-busy"):hc.removeClass("is-busy"),$("#compile_spinner").css("visibility",r?"visible":"hidden")}function Bu(r,e){var t=document.createElement("li"),n=document.createElement("a");n.setAttribute("class","dropdown-item");var i=r.startsWith("#")?r:"#"+encodeURIComponent(r);return n.setAttribute("href",i),r==F.getActiveID()&&$(n).addClass("dropdown-item-checked"),n.appendChild(document.createTextNode(e)),t.appendChild(n),{li:t,a:n}}var jb=[];function Gl(r){jb.includes(r)||(jb.push(r),F.setCreateFunc("#headerview/"+r,()=>new us(r)),xa());var e="#headerview/"+r;window.location.hash!==e&&(window.location.hash=e.substring(1))}function xa(){var r=$("#windowMenuList").empty(),e=!1;function t(l,c,d){e&&(r.append(document.createElement("hr")),e=!1);let{li:h,a:u}=Bu(l,c);if(r.append(h),d){var f=(m,g)=>{r.find("a").removeClass("dropdown-item-checked"),$(u).addClass("dropdown-item-checked")};F.setCreateFunc(l,d),F.setShowFunc(l,f),$(u).click(m=>{fc=l})}}function n(l){var h;var c=P.getToolForFilename(l);c=="dasm"&&l.endsWith(".h")&&kt().endsWith(".c")&&(c="cc65");var d=c&&((h=qt(c))==null?void 0:h.editorStyle);return new Pr(l,d)}function i(l){t(l,St(l),()=>{var c=ae.getFile(l);if(typeof c=="string")return n(l);if(c instanceof Uint8Array)return new Kl(l,c)})}i(ae.mainPath),ae.iterateFiles((l,c)=>{c&&l!=ae.mainPath&&i(l)}),e=!0;var s=ae.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,St(o),l=>new iu(l))}for(let l of jb){let c="#headerview/"+l;F.setCreateFunc(c,()=>new us(l)),t(c,St(l),()=>new us(l))}e=!0,P.disassemble&&P.saveState&&t("#disasm","Disassembly",()=>new Mi),P.readAddress&&t("#memory","Memory Browser",()=>new fs),ae.segments&&ae.segments.length&&t("#memmap","Memory Map",()=>new ou),P.readVRAMAddress&&t("#vram","VRAM Browser",()=>new su),P.startProbing&&(t("#memprobe","Memory Probe",()=>new lu),t("#crtprobe","CRT Probe",()=>new cu),t("#probelog","Probe Log",()=>new du),t("#scanlineio","Scanline I/O",()=>new hu),t("#symbols","Symbol Profiler",()=>new uu),t("#callstack","Call Stack",()=>new Ru)),P.getDebugTree&&t("#debugtree","Debug Tree",()=>new Eu),Yh()&&t("#breakpoints","Breakpoints",()=>new fu),t("#asseteditor","Asset Editor",()=>new Tu),t("#help","Help",()=>new oc("#help"));for(let l of Au)F.setCreateFunc("#help/"+l.id,()=>new oc(l.id))}function pz(r,e){if(e){var t=de.highlight.split(","),n=parseInt(t[0])-1,i=parseInt(t[1])-1,s=F.createOrShow(r);s.highlightLines(n,i)}}async function vT(r){var e=ae.getFile(r);typeof e=="string"&&await ae.loadFileDependencies(e),xa(),F.createOrShow(r),ae.setMainFile(r),pz(r,de.highlight)}async function mz(r){ae.mainPath=r,Yt.setContextFn(()=>fe+"/"+ae.mainPath),Yt.load(),Zi.setLastPreset(r);var e=await ae.loadFiles([r]);if(e&&e.length)await vT(r);else{var t=P.getToolForFilename(r),n=await Oz(r);ae.filedata[r]=n||`
`,await vT(r),de.newfile?!n&&!t?Re('No build tool for "'+r+'" on this platform; project will not build.'):n?$T(!0,!0):ar("No skeleton file for "+t+" on this platform; using blank file."):ar('Could not find file "'+r+'"<br><br>Creating new '+(n?t:"blank")+" file."),delete de.newfile,qu()}}function Hb(r){if(r=="/")de={repo:"/"};else if(r.indexOf("://")>=0){var e=Ql(r);e&&(de={repo:e.repopath})}else de.platform=fe,de.file=r;ro()}async function Oz(r){var e=Tf(P.getToolForFilename(r));try{return await $.get("presets/"+sr(fe)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function Kb(r){return r.indexOf(" ")>=0?(Re("No spaces in filenames, please."),!1):!0}async function gz(r){var e=sr(fe),t={},n=[];for(var i of r){var s=P.getToolForFilename("test"+i);t[s]||(t[s]=[],n.push(s)),t[s].push(i)}var o=n.map(d=>$.ajax({url:"presets/"+e+"/skeleton."+Tf(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 bz(r){var e=await gz(P.getDefaultExtensions()),t,n;return e.length===0?(t=P.getDefaultExtensions(),n=t.join(" ")):(t=e.reduce((i,s)=>i.concat(s.extensions),[]),n=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'>"+n+"</span>",placeholder:"newfile"+t[0],callback:i=>{if(i&&i.trim().length>0){if(!Kb(i))return;i.indexOf(".")<0&&(i+=t[0]);var s=i;de.newfile="1",Hb(s)}}}),!0}function yz(r){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(n=>{Sz(t.files)}),e.click()}function Sz(r){console.log(r);var e=0;function t(){var n=r[e++];if(!n)console.log("Done uploading",e),e>2?(ar("Files uploaded."),setTimeout(pc,1e3)):(de.file=r[0].name,bootbox.confirm({message:"Open '"+Os.sanitize(de.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?ro():setTimeout(pc,1e3)}}));else{var i=n.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);Cs(i,l)||(l=bc(l).replace(`\r
`,`
`)),F.updateFile(i,l),console.log("Uploaded "+i+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(n)}}r&&t()}async function vz(r){var e=window.showDirectoryPicker;e||Re("This browser can't open local files on your computer, yet. Try Chrome.");var t=await e(),n=t.name,i="__localfs__"+n,s={handle:t},o=qb.createInstance({name:i,version:2});await o.setItem(i,s),de={localfs:n},ro(!0)}async function xz(r){return new Promise((e,t)=>{bootbox.prompt(Os.sanitize(r),n=>{e(n)})})}async function wz(r){let e={mode:"readwrite"};var t="__localfs__"+r,n=qb.createInstance({name:t,version:2}),i=await n.getItem(t),s=i.handle;console.log(i,s);var o=await s.queryPermission(e);if(console.log(o),o!=="granted"&&(await xz("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(),h=await(Cs(l)?d.arrayBuffer():d.text());return h instanceof ArrayBuffer?new Uint8Array(h):h},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 kt(){return St(ae.mainPath)}function cP(){return St(F.getActiveID())}function Pz(r){var e=F.getActive(),t=F.getActiveID(),n=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var i="presets/"+sr(fe)+"/"+t;Da(i,s=>{if(s==null){_t?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 '"+Os.sanitize(t)+"' to default?",o=>{o&&(n?(e.setData(s),ae.updateFile(t,s)):e.setText(s))})},n?"arraybuffer":"text")}else Re("Cannot revert the active window. Please choose a text file.")}function kz(r){var e=F.getActive();if(e&&e.getPath){var t=F.getActiveID();bootbox.confirm("Delete '"+Os.sanitize(t)+"'?",n=>{n&&Pn.removeItem(t).then(()=>{de.file==t?(Zi.unsetLastPreset(),ro()):(pc(),ar("Deleted "+t))})})}else Re("Cannot delete the active window.")}function $z(r){var e=F.getActive();if(e&&e.getPath&&ae.getFile(e.getPath())){var t=F.getActiveID();bootbox.prompt({title:"Rename '"+Os.sanitize(t)+"' to?",value:t,callback:n=>{var i=ae.getFile(e.getPath());if(n&&n!=t&&i){if(!Kb(n))return;Pn.removeItem(t).then(()=>Pn.setItem(n,i)).then(()=>{pc(),alert("Renamed "+t+" to "+n),t==ae.mainPath&&Hb(n)})}}})}else Re("Cannot rename the active window.")}function Qz(r){let e={},t,n=P.getPresets?P.getPresets():[];for(var i=0;i<n.length;i++){var s=n[i],o=s.chapter?s.chapter+". "+s.name:s.name,a=s.id==ae.mainPath;s.category?t=$("<optgroup />").attr("label","Examples: "+s.category).appendTo(r):t||(t=$("<optgroup />").attr("label","Examples").appendTo(r)),t.append($("<option />").val(s.id).text(o).attr("selected",a?"selected":null)),a&&(Zu=s),e[s.id]=o}return e}function Tz(r){if(Lr&&!Pa){var e=0,t=Js();if(t){let i=$("<optgroup />").attr("label","Repositories").appendTo(r);for(let s in t){var n=t[s];n.platform_id&&sr(n.platform_id)==sr(fe)&&i.append($("<option />").val(n.url).text(n.url.substring(n.url.indexOf("/"))))}}}}async function xT(r,e,t,n){let i=await Pn.keys();i||(i=[]);let s;for(var o=0;o<i.length;o++){let a=i[o];if(a.startsWith(t)&&!n[a]){s||(s=$("<optgroup />").attr("label",e).appendTo(r));let l=a.substring(t.length);s.append($("<option />").val(a).text(l).attr("selected",a==ae.mainPath?"selected":null))}}}function wT(r){r.css("visibility","visible");var e=ae.mainPath;r.val()!=e&&r.append($("<option />").val(e).text(e).attr("selected","selected"))}async function pc(){var r=$("#preset_select").empty();if(_t)r.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(St(_t)+"/").show(),await xT(r,_t,"",{}),wT(r);else{Tz(r);var e=Qz(r);await xT(r,"Local Files","",e),wT(r)}r.off("change").change(function(t){Hb($(this).val().toString())})}function _z(r){var e=$("<p/>");if(r.path!=null){var t=r.line?r.label?`(${r.path} @ ${r.label})`:`(${r.path}:${r.line})`:`(${r.path})`,n=$("<a/>").text(t),i=r.path;i==kt()&&(i=ae.mainPath),F.isWindow(i)&&n.click(s=>{var o=F.createOrShow(i);o instanceof Pr&&o.navigateToLine(r.line)}),e.append(n),e.append("&nbsp;")}return e.append($("<span/>").text(r.msg)),e}function QT(){$("#error_alert").hide(),Gb=!1}function Jb(r,e){var t=$("#error_alert_msg").empty();for(var n of r.slice(0,10))t.append(_z(n));$("#error_alert").show(),Gb=e;var i=r.find(o=>o.path!=null),s;i&&F.isWindow(i.path==kt()?ae.mainPath:i.path)&&(s=()=>{Ez(i)})}function TT(r,e){if(e!=null){var t={msg:e,line:0};r instanceof rf&&r.$loc&&(t=Object.create(r.$loc),t.msg=e,console.log(t)),Jb([t],!0)}}async function Az(r){if("uppercaseOnly"in r&&H$(r.uppercaseOnly),"errors"in r&&r.errors.length>0)hc.addClass("has-errors"),F.setErrors(r.errors),xa(),Jb(r.errors,!1);else{if(hc.removeClass("has-errors"),F.setErrors(null),QT(),r==null||"unchanged"in r&&r.unchanged||!("output"in r))return;P.debugSymbols=new l0(r.symbolmap,r.debuginfo,r.symbolsizes),PT=r.params;var e=r.output;if(e!=null)if(Di&&r0(e,Di))console.log("unchanged, skipping loadROM");else try{ka(),jT(),await P.loadROM(dz(),e,r.origin),Di=e,Wu||(Yt.getEnabled().length==0||!ju())&&li(),mW()}catch(t){console.log(t),hc.addClass("has-errors"),TT(t,t+""),Di=null,xa();return}xa(),F.refresh(!1)}}async function Cz(){if(P.loadBIOS){var r=fe+".rom",e=await Pn.getItem(r);e instanceof Uint8Array?(console.log("loading BIOS",r,e.length+" bytes"),P.loadBIOS(r,e)):console.log("BIOS file must be binary")}}function Fu(){var r=$("#mem_info");r.hide(),dc=null}function mc(r){if(c0(P)){var e=$("#mem_info"),t=$("#mem_info_msg"),n=P.getDebugCategories();n&&!cc&&(cc=n[0]);var i=r&&P.getDebugInfo(cc,r);if(typeof i=="string"){var s=dc?n0(dc,i):i;e.show(),t.html(s);var o=$('<div class="mem_info_links">'),a=c=>{var d=$("<a>"+c+"</a>");c==cc&&d.addClass("selected"),d.click(h=>{cc=c,dc=null,mc(er)}),o.append(d),o.append("<span> </span>")};for(var l of n)a(l);t.append("<br>"),t.append(o),dc=i}else Fu()}}function Nu(r,e){$("#debug_bar, #run_bar").find("button").removeClass("btn_active").removeClass("btn_stopped"),$("#dbg_"+r).addClass("btn_"+e),Wr()}function Ez(r){var e=r.path==kt()?ae.mainPath:r.path;if(F.isWindow(e)){var t=F.createOrShow(e);t instanceof Pr&&t.navigateToLine(r.line)}}function _T(){var r=F.getActive();return r instanceof Mi||r instanceof fs?r:null}function Rz(r){var e=pu(r,P&&P.debugSymbols&&P.debugSymbols.symbolmap);return e?e.addr:-1}function AT(){var r=_T();if(!r)return!1;var e=r.getCursorPC?r.getCursorPC():-1;return bootbox.prompt({title:"Go to Address",placeholder:"address in hex",value:e>=0?Ce(e,4):"",callback:t=>{if(t){var n=Rz(t);if(isNaN(n)||n<0){Re("Can't find address or symbol: "+Os.sanitize(t));return}r.goToAddress(n)}}}),!0}function Mz(){var r=[];return P&&go()&&(r.push({key:"F1",label:"Help",fn:qT}),P.isRunning&&r.push({key:"F8",label:P.isRunning()?"Pause":"Resume",fn:LT}),P.setupDebug&&P.runEval&&r.push({key:"mod+shift+d",label:"Reset & Break",fn:FT}),gs||(r.push({key:"mod+shift+r",label:"Reset & Run",fn:YT}),r.push({key:"mod+shift+f",label:"Search",fn:yb})),_T()&&r.push({key:"mod+shift+g",label:"Go To Address",fn:AT})),r}function Lz(){var r=[];if(!gs||!P||!go())return r;var e=P.isRunning&&P.isRunning();return P.step&&r.push({key:"mod+shift+l",label:"Step",fn:DT}),P.stepOver&&r.push({key:"mod+shift+k",label:"Step Over",fn:IT}),P.runUntilReturn&&r.push({key:"mod+shift+i",label:"Step Out",fn:BT}),P.stepBack&&r.push({key:"mod+shift+j",label:"Step Back",fn:VT}),P.runToVsync&&r.push({key:"mod+shift+x",label:"Next Frame",fn:ZT}),P.restartAtPC&&r.push({key:"mod+shift+a",label:"Restart at Cursor",fn:zT}),(P.runEval||P.runToPC)&&!fe.startsWith("verilog")&&r.push({key:"mod+shift+y",label:"Run To Line",fn:WT}),r}function go(){return P&&Di!=null}function rn(){return go()?!0:(Re("Can't do this until build successfully completes."),!1)}function CT(r){return yT(r,{listings:ae.getListings(),filename2path:ae.filename2path,isWindow:e=>F.isWindow(e),findWindowWithFilePrefix:e=>F.findWindowWithFilePrefix(e)},ga)}function ET(r){if(fc&&fc.startsWith("#")||["toline","restart","tovsync","stepover"].includes(kT)||!P.disassemble)return;let e=r.c?r.c.EPC||r.c.PC:0,t=CT(e);F.createOrShow(t?t.wndid:"#disasm",!0)}function nQ(r){if(!P.disassemble)return;let e=CT(r),t=F.createOrShow(e?e.wndid:"#disasm",!0);e&&t instanceof Pr?t.highlightLines(e.line-1,e.line-1):t instanceof Mi&&t.goToAddress(r)}function zu(r){gs=!0,er=r,mc(r),ET(r),F.refresh(!0),Xu=!0}function RT(r){P.setupDebug&&(P.setupDebug((e,t)=>{zu(e),Nu(r||"pause","stopped"),t&&Jb([{msg:"STOPPED: "+t,line:0}],!0)}),kT=r)}function oi(r){rn()&&(gs=!0,e0(),RT(r),r&&Nu(r,"active"),Wr())}function Ii(){gs=!0,P&&P.isRunning()&&(P.pause(),console.log("Paused")),Nu("pause","stopped")}function MT(){rn()&&(ka(),Ii(),Wu=!0,Wr())}function LT(){rn()&&(P.isRunning&&P.isRunning()?MT():Vu())}function li(){P.isRunning()||(P.resume(),console.log("Resumed")),Nu("go","active"),Gb&&QT()}function Vu(){if(rn()){if(Yt.getEnabled().length>0&&ju()){P.isRunning()||F.refresh(!1),Wu=!1,fc=null;return}ka(),gs=!1,P.isRunning()||F.refresh(!1),li(),Wu=!1,fc=null,Wr()}}function DT(){rn()&&(oi("step"),P.step())}function IT(){if(rn()){if(oi("stepover"),P.hasCustomStepOver&&P.hasCustomStepOver()){P.stepOver();return}if(F.getActiveID()!="#disasm"){var r=Dz();if(r.size>0&&Iz(r))return}P.stepOver?P.stepOver():P.step()}}var Iu=null;function Dz(){var r=ae.getListings();if(!Iu||Iu.listings!==r){var e=new Set;if(r)for(var t in r){var n=r[t].sourcefile;if(n)for(var i of n.lines)i.offset>=0&&e.add(i.offset)}Iu={listings:r,pcs:e}}return Iu.pcs}function Iz(r){var o;if(!P.runEval||!er||!er.c)return!1;var e=er.c.EPC||er.c.PC,t=P.getSP?P.getSP():null,n=!1,i=(o=P.readAddress)==null?void 0:o.bind(P);if(i&&P.disassemble){var s=P.disassemble(e,i);n=!!(s&&s.iscall)}return P.runEval(a=>{var l=a.EPC||a.PC;return l==e||n&&t!=null&&a.SP<t?!1:r.has(l)}),!0}function ZT(){rn()&&(oi("tovsync"),P.runToVsync())}function XT(){var r=F.getActive();return r&&r.getCursorPC&&r.getCursorPC()}function ju(){if(!rn())return!1;let r=Fh().filter(t=>t.bp.enabled&&!t.error&&t.pc>=0);if(r.length==0)return!1;er=null,Fu(),F.refresh(!1),oi("toline");let e=new Map;for(let t of r)e.set(t.pc,t.condFn||null);if(P.runEvalAtPC)P.runEvalAtPC(e);else if(P.runToPC)r.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 n=t.EPC!=null?t.EPC:t.PC,i=e.get(n);return i!==void 0&&(i?i(t):!0)});else return!1;return!0}function Zz(){for(var r in F.id2window){var e=F.id2window[r];if(e instanceof Pr)try{e.syncBreakpoints()}catch(t){}}}Yt.subscribe(()=>{Zz(),F.getActiveID()=="#breakpoints"&&F.refresh(!1),go()&&P.isRunning()&&(Yt.getEnabled().length>0?ju():ka())});function Hl(r){if(rn()&&!(r.length===0||r.some(e=>!(e>=0))))if(er=null,Fu(),F.refresh(!1),oi("toline"),console.log("runToPC",r.map(e=>e.toString(16)).join(" ")),P.runToPC)P.runToPC(r);else{let e=new Set(r);P.runEval(t=>e.has(t.PC))}}function zT(){P.restartAtPC(XT())?Vu():Re("Could not restart program at selected line.")}function WT(){Hl([XT()])}function BT(){rn()&&(oi("stepout"),P.runUntilReturn())}function VT(){rn()&&(oi("stepback"),P.stepBack())}function ka(){er=null,P.clearDebug&&P.clearDebug(),RT(),mc()}function Ub(){P.reset(),jT()}function YT(){rn()&&(ka(),Ub(),Yt.getEnabled().length>0&&ju()?gs=!0:(gs=!1,F.refresh(!1),li()),Wr())}function FT(){if(rn()){var r=wa;e0(),P.setupDebug&&P.runEval?(ka(),li(),Ub(),oi("restart"),P.runEval(e=>!0)):(Ub(),li()),r&&UT()}}function NT(){P.isRunning()?(F.tick(),Xu=!1):Xu||(F.tick(),Xu=!0),setTimeout(NT,100)}function Uu(r){P.setFrameRate(r),r>.01?$("#fps_label").text(r.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/r))}function Xz(){var r=P.getFrameRate();r=r/2,r>1e-5&&Uu(r)}function zz(){var r=P.getFrameRate();r=Math.min(60,r*2),Uu(r)}function Wz(){Uu(60/65536)}function Bz(){li(),Uu(60)}function Vz(){F.refresh(!1);var r=F.getActive();if(r.getSourceFile&&r.setTimingResult){var e=P.newCodeAnalyzer();e.showLoopTimingForPC(0),r.setTimingResult(e)}}function e0(){wa&&(P.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),Fu(),wa=!1)}function jT(){wa&&kr.reset()}function UT(){kr.reset(),P.setRecorder(kr),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),wa=!0}function Yz(){wa?e0():UT(),Wr()}function Fz(){var r=!Pr.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",r);var e=F.getActive();e instanceof Pr?e.setTracingEnabled(r):Pr.tracingEnabled=r}function Fn(r,e,t){var n=F.getActive();n&&n.insertLinesBefore?bootbox.prompt({title:"Add "+Os.sanitize(r)+" File to Project",value:"filename"+Os.sanitize(e),callback:i=>{if(i&&i.trim().length>0){if(!Kb(i))return;var s=i,o=`
`+t(i)+`
`;ae.loadFiles([s]).then(a=>{a&&a.length?Re(i+" already exists; including anyway"):ae.updateFile(s,`
`),n.insertLinesBefore(o),xa()})}}}):Re("Can't insert text in this window -- switch back to main file")}function Nz(){var r=kt(),e=P.getToolForFilename(r);r.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"||e=="oscar64"?Fn("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?Fn("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?Fn("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?Fn("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?Fn("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?Fn("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?Fn("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?Fn("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?Fn("Include",".dg",t=>'%% #include "'+t+'"'):Re("Can't add include file to this project type ("+e+")")}function jz(){var r=kt(),e=P.getToolForFilename(r);r.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Fn("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):r.endsWith("asm")||r.endsWith(".s")||e=="ca65"||e=="lwasm"?Fn("Linked ASM",".inc",t=>';#link "'+t+'"'):Re("Can't add linked file to this project type ("+e+")")}function Uz(){if(ft=new Bi($("#toolbar")[0],null),ft.grp.prop("id","run_bar"),ft.add("mod+shift+r","Reset","glyphicon-refresh",YT).prop("id","dbg_reset"),ft.add("mod+shift+h","Pause","glyphicon-pause",MT).prop("id","dbg_pause"),ft.add("mod+shift+g","Go To Address","",r=>{AT()||Vu()}),ft.add("mod+shift+g","Resume","glyphicon-play",Vu).prop("id","dbg_go"),ft.add("F8","Pause/Resume","",LT),ft.add("F1","Help","",qT),P.restartAtPC&&ft.add("mod+shift+a","Restart at Cursor","glyphicon-play-circle",zT).prop("id","dbg_restartatline"),ft.newGroup(),ft.grp.prop("id","debug_bar"),P.runEval&&ft.add("mod+shift+d","Reset and Debug","glyphicon-fast-backward",FT).prop("id","dbg_restart"),P.stepBack&&ft.add("mod+shift+j","Step Backwards","glyphicon-step-backward",VT).prop("id","dbg_stepback"),P.step&&ft.add("mod+shift+l","Single Step","glyphicon-step-forward",DT).prop("id","dbg_step"),P.stepOver&&ft.add("mod+shift+k","Step Over","glyphicon-hand-right",IT).prop("id","dbg_stepover"),P.runUntilReturn&&ft.add("mod+shift+i","Step Out of Subroutine","glyphicon-hand-up",BT).prop("id","dbg_stepout"),P.runToVsync&&ft.add("mod+shift+x","Next Frame/Interrupt","glyphicon-forward",ZT).prop("id","dbg_tovsync"),(P.runEval||P.runToPC)&&!fe.startsWith("verilog")&&ft.add("mod+shift+y","Run To Line","glyphicon-save",WT).prop("id","dbg_toline"),ft.newGroup(),ft.grp.prop("id","xtra_bar"),ft.add("mod+shift+f","Search","glyphicon-search",yb).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(bz),$("#item_upload_file").click(yz),$("#item_open_directory").click(vz),$("#item_github_login").click(dP),$("#item_github_logout").click(hP),$("#item_github_import").click(uP),$("#item_github_publish").click(fP),$("#item_github_push").click(pP),$("#item_github_pull").click(mP),$("#item_repo_delete").click(gP),$("#item_share_file").click(eP),$("#item_reset_file").click(Pz),$("#item_rename_file").click($z),$("#item_delete_file").click(kz),$("#item_download_rom").click(rP),$("#item_download_file").click(nP),$("#item_download_zip").click(sP),P.getDebugSymbolFile?$("#item_download_sym").click(oP):$("#item_download_sym").hide(),$("#item_download_allzip").click(aP),$("#item_record_video").click(lP),dO()?$("#item_export_cassette").click(tP):$("#item_export_cassette").hide(),P.setFrameRate&&P.getFrameRate&&($("#dbg_slower").click(Xz),$("#dbg_faster").click(zz),$("#dbg_slowest").click(Wz),$("#dbg_fastest").click(Bz)),$("#item_addfile_include").click(Nz),$("#item_addfile_link").click(jz),$("#item_request_persist").click(()=>$T(!0,!1)),$("#item_settings").click(Zw),NT(),P.newCodeAnalyzer&&ft.add(null,"Analyze CPU Timing","glyphicon-time",Vz),P.startProbing&&ft.add(null,"Highlight Executed Lines","glyphicon-fire",Fz).prop("id","dbg_tracelines"),P.setRecorder&&P.advance&&Hz(),P.showHelp){let{li:r,a:e}=Bu("help__"+fe,uc+" Info");$("#help_menu").append(r),$(e).click(t=>{t.preventDefault(),window.open(P.showHelp(),"_8bws_help")})}Gz();{let{li:r}=Bu("#help","IDE Help");$("#help_menu").prepend(r)}$("#item_tool_versions").click(qz)}function qT(){if(F){var r=_0(),e=F.getActive()instanceof Pr,t=r||dT(F.getActiveID(),e),n="#help/"+t;window.location.hash===n?F.createOrShow(n):window.location.hash=n}}function qz(){let r=u=>String(u==null?"":u).replace(/[&<>"]/g,f=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[f]),e=(u,f)=>"$"+Ce(u,4).toUpperCase()+(f!=null?"+$"+Ce(f,4).toUpperCase():""),t=Cn[fe]||Cn[sr(fe)]||Cn[Xr(fe)],n=t&&t.arch||"\u2014",i=[];t&&(t.rom_start!=null&&i.push("rom "+e(t.rom_start,t.rom_size)),t.code_start!=null&&i.push("code "+e(t.code_start,t.code_size)),t.data_start!=null&&i.push("data "+e(t.data_start,t.data_size)),t.stack_end!=null&&i.push("stack $"+Ce(t.stack_end,4).toUpperCase()));let s=new Set([".a"]);for(let u in Qo)for(let f of Qo[u].extensions||[])s.add(f);let o={},a=[],l=(u,f)=>{u&&(o[u]||(o[u]=[],a.push(u)),f&&o[u].indexOf(f)<0&&o[u].push(f))};if(P.getDefaultExtensions)for(let u of s){let f=P.getToolForFilename("test"+u),m=f&&qt(f);(m&&(m.extensions||[]).indexOf(u)>=0||u===".a"&&f==="dasm")&&l(f,u)}let c=kt();if(c){let u=P.getToolForFilename(c),f=c.lastIndexOf(".");l(u,f>=0?c.substring(f):"")}a.sort((u,f)=>{var m,g;return(((m=qt(u))==null?void 0:m.name)||u).localeCompare(((g=qt(f))==null?void 0:g.name)||f)});let d=`
<table class="help">
<tr><th>Architecture</th><td>${r(n)}</td></tr>
<tr><th>Memory</th><td>${i.length?i.join(" \xB7 "):"\u2014"}</td></tr>
${t&&t.cfgfile?`<tr><th>Linker config</th><td>${r(t.cfgfile)}</td></tr>`:""}
${t&&t.libargs&&t.libargs.length?`<tr><th>Link libraries</th><td>${r(t.libargs.join(" "))}</td></tr>`:""}
${t&&t.define&&t.define.length?`<tr><th>Defines</th><td>${r(t.define.join(" "))}</td></tr>`:""}
</table>`,h=a.map(u=>{let f=qt(u),m=f&&f.version||"\u2014",g=f&&f.kind||"\u2014",v=o[u].length?o[u].map(L=>`<code>${r(L)}</code>`).join(" "):"\u2014",k=f&&f.name||u;return`<tr><td>${r(k)}</td><td>${r(g)}</td><td>${r(m)}</td><td>${v}</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">${r(uc)} <small>${r(fe)}</small></h5>
${d}
<h5 class="dialog-title">Tools on this platform</h5>
<table class="help">
<tr><th>Tool</th><th>Kind</th><th>Version</th><th>Extensions</th></tr>
${h}
</table>
</div>`})}function Gz(){let r=P.getToolForFilename(kt());if(!r)return;let e=qt(r);if(!e)return;let t=e.version?" ("+e.version+")":"",n=(s,o,a)=>{let{li:l,a:c}=Bu(s,o);$("#help_menu").append(l),$(c).click(d=>{d.preventDefault(),window.open(a,"_8bws_help")})};e.helpURL&&n("help__"+r,e.name+" Help"+t,e.helpURL);let i=ey(r,fe);i&&n("help__"+r+"__"+fe,e.name+" Help for "+uc,i)}function Hz(){var r=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),n=$("#replay_clock");P.advanceFrameClock||$("#clockdiv").hide();var i=()=>{t.text(kr.lastSeekFrame+""),n.text(kr.lastSeekStep+"")},s=l=>{Ii();var c=parseInt(r.val().toString()),d=parseInt(e.val().toString());kr.loadFrame(c,d)>=0&&(e.attr("min",0),e.attr("max",kr.lastStepCount),i(),zu(P.saveState()))},o=l=>{Ii(),kr.loadFrame(l)>=0&&(r.val(l),i(),zu(P.saveState()))},a=l=>{Ii();var c=parseInt(r.val().toString());kr.loadFrame(c,l)>=0&&(e.val(l),i(),zu(P.saveState()))};kr.callbackStateChanged=()=>{r.attr("min",0),r.attr("max",kr.numFrames()),r.val(kr.currentFrame()),e.val(kr.currentStep()),i(),mc(P.saveState())},r.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(kr.numFrames())}),$("#replay_back").click(()=>{o(parseInt(r.val().toString())-1)}),$("#replay_fwd").click(()=>{o(parseInt(r.val().toString())+1)}),$("#clock_back").click(()=>{a(parseInt(e.val().toString())-1)}),$("#clock_fwd").click(()=>{a(parseInt(e.val().toString())+1)}),$("#replay_bar").show(),ft.add("mod+shift+e","Start/Stop Replay Recording","glyphicon-record",Yz).prop("id","dbg_record")}async function Kz(){if(Zi.shouldCompleteTour()){await dn("lib/bootstrap-tourist.js");var r=fe.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+fe+'</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:r?"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!"})),Pa&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Developer Analytics",content:"BTW, we send stack traces to sentry.io 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 Yu(r){var e=(r.message||r.error||r)+"";if(e.indexOf("QuotaExceededError")>=0)cz();else{var t=r.error||r.reason;t!=null&&t instanceof rf?GT(t):wo()&&ly(e,t,{platform:fe,window:F?F.getActiveID():"",errors:F.lasterrors||[]})}}function GT(r){console.log("haltEmulation"),Ii(),pW(r)}function Jz(){window.addEventListener("error",Yu),window.addEventListener("unhandledrejection",Yu)}function HT(){window.removeEventListener("error",Yu),window.removeEventListener("unhandledrejection",Yu)}function ro(r,e){e&&(de=e),HT(),r?window.location.replace("?"+$.param(de)):window.location.href="?"+$.param(de)}function qu(){fe&&(de.platform=fe),delete de[""],history.replaceState({},"","?"+$.param(de)+window.location.hash)}function KT(r){if(!r||r==="#")return null;var e=decodeURIComponent(r.substring(1));return e.startsWith("asseteditor/")?"#asseteditor":e.startsWith("headerview/")?(Gl(e.substring(11)),"#"+e):F.isWindow("#"+e)?"#"+e:F.isWindow(e)?e:null}function eW(){function r(){let e=window.location.hash,t=e&&e!=="#"?KT(e):null;if(t)t!==F.getActiveID()&&F.createOrShow(t);else{let n=ae.mainPath;n&&F.getActiveID()!=n&&F.createOrShow(n)}}window.addEventListener("popstate",r),window.addEventListener("hashchange",r)}function tW(r){if(r&&r!=="#"){let e=KT(r)||ae.mainPath;history.replaceState(null,"",r),F.createOrShow(e)}}function rW(){var r=!1;document.addEventListener("visibilitychange",()=>{document.visibilityState=="hidden"&&P&&P.isRunning()?(Ii(),r=!0):document.visibilityState=="visible"&&r&&(li(),r=!1)}),$(window).on("focus",()=>{r&&(li(),r=!1)}),$(window).on("blur",()=>{P&&P.isRunning()&&(Ii(),r=!0)}),$(window).on("orientationchange",()=>{P&&P.resize&&setTimeout(P.resize.bind(P),200)})}function nW(r){r.empty();for(var e of O0[Xr(fe)]||[]){var t=$('<span class="control-def"/>').appendTo(r);for(var n of e.keys){var i=$('<span class="control-key"/>').toggleClass("small",/[a-z]/i.test(n)).appendTo(t);n.indexOf(`
`)>=0?(i.css({display:"inline-block","font-family":"monospace"}),n.split(`
`).forEach((s,o)=>{o&&i.append("<br>"),i.append(document.createTextNode(s))})):i.text(n)}t.append(document.createTextNode(" "+e.action)),r.append(" ")}return r.children().length>0}function iW(){var r=$("#emucontrols");if(nW(r)){fe.endsWith(".mame")&&r.show();var e=$("#emulator").find("canvas");e&&(e.on("focus",()=>{P.isRunning()&&(r.fadeIn(200),P.resume())}),e.on("blur",()=>{r.fadeOut(200)}))}}async function sW(){if(!tf[fe])throw Error("Invalid platform '"+fe+"'.");let r=$("#emuscreen")[0],e=ef(de.options||"");P=new tf[fe](r,e),dW(),kr=new u0(P);let t=P.getPresets?P.getPresets():[];if(!de.file){var n=Zi.getLastPreset(),i=n||(_t?null:t[0]&&t[0].id);de.file=i||"DEFAULT",i||Re("There is no default main file for this project. Try selecting one from the pulldown.")}fe=="vcs"&&de.file.startsWith("examples/")&&!de.file.endsWith(".a")&&(de.file+=".a");var s=window.location.hash;qu(),Jz(),o0(GT),G0(),await P.start(),await Cz(),await uz(),await mz(de.file),tW(s),eW(),P.sourceFileFetch=o=>ae.filedata[o],Uz(),!hs&&$("#shortcuts_bar").length&&(S0($("#shortcuts_bar")[0]),w0(Mz),P0(()=>{var o=F.id2div[F.activeid],a=o&&document.activeElement&&o.contains(document.activeElement),l=F.getActive(),c=a&&l&&l.getShortcuts?l.getShortcuts():[];return[...Lz(),...c]}),$(document).on("focusin focusout",()=>Wr()),Wr(),kc(ra().showStatusBar)),rW(),iW(),tr?oW():(pc(),aW(),Kz()),JT()}function oW(){$("#dropdownMenuButton").hide(),$("#platformsMenuButton").hide(),$("#booksMenuButton").hide()}function aW(){Xr(fe)=="nes"?$(".book-nes").addClass("book-active"):Xr(fe)=="vcs"?$(".book-vcs").addClass("book-active"):Xr(fe)=="verilog"?$(".book-verilog").addClass("book-active"):Xr(fe)=="c64"?$(".book-c64").addClass("book-active"):P.getToolForFilename(kt())=="sdcc"&&$(".book-arcade").addClass("book-active")}function JT(){setTimeout(()=>{$("#controls_dynamic").css("visibility","inherit")},250)}function lW(r){let e=xo(de.ignore)||tr;st(!0),Da(r,async t=>{if(t){var n=St(r);console.log("Importing "+t.length+" bytes as "+n);try{var i=await Pn.getItem(n);st(!1),i!=null&&e||(i==null||confirm("Replace existing file '"+n+"'?"))&&await Pn.setItem(n,t),delete de.importURL,de.file=n,qu(),t_()}finally{st(!1)}}else Re("Could not load source code from URL: "+r),st(!1)},"text")}async function cW(){var r=xo(de.ignore),e=xo(de.force);tr?r=!e:e=!1;for(var t=0;t<20;t++){let i=de["file"+t+"_name"],s=de["file"+t+"_data"];if(i==null||s==null)break;var n=await Pn.getItem(i);if(!(r&&n)){let o=s;de["file"+t+"_type"]=="binary"&&(o=Oc(atob(o))),(!n||e||confirm("Replace existing file '"+i+"'?"))&&await Pn.setItem(i,o)}t==0&&(de.file=i),delete de["file"+t+"_name"],delete de["file"+t+"_data"],delete de["file"+t+"_type"]}delete de.ignore,delete de.force,qu()}function dW(){var r=P.getPlatformName&&P.getPlatformName(),e=$('a[href="?platform='+fe+'"]');e.length&&(e.addClass("dropdown-item-checked"),r=r||e.text()||r),uc=r||fe,$(".platform_name").text(uc)}function hW(){if(fe=de.platform||Zi.getLastPlatformID(),_t=de.repo,!de.repo&&!de.file&&(_t=Zi.getLastRepoID(fe)),Lr&&_t&&_t!=="/"){var r=Js()[_t];r&&(console.log(fe,de,r),de.repo=_t,r.platform_id&&!de.platform&&(de.platform=fe=r.platform_id),r.mainPath&&!de.file&&(de.file=r.mainPath))}else _t="",delete de.repo;fe||(tr&&cy("The 'platform' must be specified when embed=1"),fe=de.platform="vcs")}async function e_(){if(de.githubURL){Al(de.githubURL,!0);return}if(Lr&&de.repo&&!Js()[de.repo]&&de.repo!=="/"){if(confirm(`Repository '${de.repo}' was not found locally. Import it from GitHub?`)){Al("https://github.com/"+de.repo,!0);return}delete de.repo}if(hW(),bT({getPlatformId:()=>fe,isEmbed:tr,hasLocalStorage:Lr,resizePlatform:()=>{P&&P.resize&&P.resize()},resizeWindows:()=>{F&&F.resize()},onTabChanged:r=>{go()&&(r!=="emulator"?P.isRunning()&&(Ii(),Fb=!0):Fb&&(Fb=!1,P.isRunning()||li()))}}),Oo=_t||sr(fe),tr&&(Oo=(document.referrer||document.location.href)+Oo),Pn=ch(Oo),de.importURL){lW(de.importURL);return}de.file0_name&&await cW(),t_()}async function t_(){try{var r=await f0(Xr(fe));console.log("starting platform",fe),await sW(),F.titlePrefix=document.title+" ["+fe+"] - "+(_t?"["+_t+"] - ":""),F.updateTitle(F.getActiveID()||ae.mainPath)}catch(e){console.log(e),Re('Platform "'+fe+'" failed to load.')}finally{JT()}}var t0="__use_https";function r_(r){document.cookie=t0+"="+r+";domain=8bitworkshop.com;path=/;max-age=315360000"}function uW(){var r=yc(t0);if(typeof r=="string")return!!r;var e=Lr&&!localStorage.getItem("__lastplatform")?1:0;return r_(e),!!e}function fW(){bootbox.confirm('<p>Do you want to force the browser to use HTTPS from now on?</p><p>WARNING: This will make all of your local files unavailable, so you should "Download All Changes" first for each platform where you have done work.</p><p>You can go back to HTTP by setting the "'+t0+'" cookie to 0.</p>',r=>{r&&(r_(1),n_())})}function n_(){window.location.protocol=="http:"&&wo()&&(uW()?(HT(),window.location.replace(window.location.href.replace(/^http:/,"https:"))):$("#item_switch_https").click(fW).show())}n_();function H6(r,e){P.writeFile(r,e)}function K6(r){return P.readFile(r)}function J6(){return P.saveState()}function pW(r){var e=r&&r.message||e;if(TT(r,e),F.refresh(!1),P.saveState){let t=P.saveState();mc(t),ET(t)}}async function e3(r){var e=ae.filedata[r];e!=null&&(F.updateFile(r,await alternateLocalFilesystem.getFileData(r)),console.log("updating file",r))}function mW(){if(Pa&&Di instanceof Uint8Array){var r=zt(kt()),e=P.getROMExtension&&P.getROMExtension(Di)||"-"+sr(fe)+".bin";alternateLocalFilesystem.setFileData(`bin/${r}${e}`,Di)}}function OW(){let r=!1;new IntersectionObserver((t,n)=>{for(var i of t)i.isIntersecting&&!r&&(e_(),r=!0),i.intersectionRatio==0&&go()&&P.isRunning()&&Ii(),i.intersectionRatio>0&&go()&&!P.isRunning()&&li()},{}).observe($("#emulator")[0])}typeof process=="undefined"&&(tr&&typeof IntersectionObserver=="function"?OW():e_());export{ju as armBreakpoints,ka as clearBreakpoint,ae as current_project,pW as emulationHalted,cP as getCurrentEditorFilename,kt as getCurrentMainFilename,xr as getCurrentOutput,Ci as getCurrentProject,hW as getPlatformAndRepo,ss as getPlatformStore,J6 as getSaveState,K6 as getTestOutput,Tl as getWorkerParams,ro as gotoNewLocation,GT as haltEmulation,er as lastDebugState,Gl as openHeaderFile,nQ as openLocationForPC,Rz as parseGoToTarget,P as platform,fe as platform_id,F as projectWindows,de as qs,e3 as reloadWorkspaceFile,_t as repo_id,Hl as runToPC,Uu as setFrameRateUI,H6 as setTestInput,oi as setupBreakpoint,bT as setupSplits,Du as showTab,e_ as startUI,Oo 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.15 | (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.15/LICENSE *)
*/
//# sourceMappingURL=ui.js.map