-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathindex.js
2 lines (2 loc) · 80.2 KB
/
index.js
1
2
const e=(e,t=document)=>[...t.querySelectorAll(e)],t=(e,t=document)=>{const n=(new XPathEvaluator).createExpression(e).evaluate(t,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE),r=[];for(let e=0,{snapshotLength:t}=n;e<t;e++)r.push(n.snapshotItem(e));return r},n=Object.getOwnPropertyDescriptors(Response.prototype),r=e=>"function"==typeof e,s={get:(e,t)=>n.hasOwnProperty(t)?((e,t,{get:n,value:s})=>n||!r(s)?e.then((e=>e[t])):(...n)=>e.then((e=>e[t](...n))))(e,t,n[t]):((e,t)=>r(t)?t.bind(e):t)(e,e[t])};var o=(e,...t)=>new Proxy(fetch(e,...t),s);const a=new Proxy(new Map,{get:(e,t)=>(e.has(t)||e.set(t,Promise.withResolvers()),e.get(t))}),i=new Set(["__dict__","constructor","get","has","includes","next","set","then"]),c=new Proxy(Object.freeze({}),{get:(e,t)=>"string"!=typeof t||i.has(t)?void 0:a[t].promise.then((e=>e.sync))}),l="object"==typeof self?self:globalThis,u=e=>((e,t)=>{const n=(t,n)=>(e.set(n,t),t),r=s=>{if(e.has(s))return e.get(s);const[o,a]=t[s];switch(o){case 0:case-1:return n(a,s);case 1:{const e=n([],s);for(const t of a)e.push(r(t));return e}case 2:{const e=n({},s);for(const[t,n]of a)e[r(t)]=r(n);return e}case 3:return n(new Date(a),s);case 4:{const{source:e,flags:t}=a;return n(new RegExp(e,t),s)}case 5:{const e=n(new Map,s);for(const[t,n]of a)e.set(r(t),r(n));return e}case 6:{const e=n(new Set,s);for(const t of a)e.add(r(t));return e}case 7:{const{name:e,message:t}=a;return n(new l[e](t),s)}case 8:return n(BigInt(a),s);case"BigInt":return n(Object(BigInt(a)),s)}return n(new l[o](a),s)};return r})(new Map,e)(0),p="",{toString:f}={},{keys:h}=Object,d=e=>{const t=typeof e;if("object"!==t||!e)return[0,t];const n=f.call(e).slice(8,-1);switch(n){case"Array":return[1,p];case"Object":return[2,p];case"Date":return[3,p];case"RegExp":return[4,p];case"Map":return[5,p];case"Set":return[6,p]}return n.includes("Array")?[1,n]:n.includes("Error")?[7,n]:[2,n]},g=([e,t])=>0===e&&("function"===t||"symbol"===t),y=(e,{json:t,lossy:n}={})=>{const r=[];return((e,t,n,r)=>{const s=(e,t)=>{const s=r.push(e)-1;return n.set(t,s),s},o=r=>{if(n.has(r))return n.get(r);let[a,i]=d(r);switch(a){case 0:{let t=r;switch(i){case"bigint":a=8,t=r.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+i);t=null;break;case"undefined":return s([-1],r)}return s([a,t],r)}case 1:{if(i)return s([i,[...r]],r);const e=[],t=s([a,e],r);for(const t of r)e.push(o(t));return t}case 2:{if(i)switch(i){case"BigInt":return s([i,r.toString()],r);case"Boolean":case"Number":case"String":return s([i,r.valueOf()],r)}if(t&&"toJSON"in r)return o(r.toJSON());const n=[],c=s([a,n],r);for(const t of h(r))!e&&g(d(r[t]))||n.push([o(t),o(r[t])]);return c}case 3:return s([a,r.toISOString()],r);case 4:{const{source:e,flags:t}=r;return s([a,{source:e,flags:t}],r)}case 5:{const t=[],n=s([a,t],r);for(const[n,s]of r)(e||!g(d(n))&&!g(d(s)))&&t.push([o(n),o(s)]);return n}case 6:{const t=[],n=s([a,t],r);for(const n of r)!e&&g(d(n))||t.push(o(n));return n}}const{message:c}=r;return s([a,{name:i,message:c}],r)};return o})(!(t||n),!!t,new Map,r)(e),r},{parse:w,stringify:m}=JSON,_={json:!0,lossy:!0};var b=Object.freeze({__proto__:null,parse:e=>u(w(e)),stringify:e=>m(y(e,_))});const v="array",E="function",k="null",x="number",T="object",S="string",A="symbol",j="undefined";let O=0;const R=new Map,$=new Map,P=e=>$.get(e),I=e=>{if(!R.has(e)){let t;for(;$.has(t=O++););R.set(e,t),$.set(t,e)}return R.get(e)},{ArrayBuffer:M,Atomics:N,Promise:F}=globalThis,{isArray:W}=Array,{create:H,getPrototypeOf:D,values:L}=Object,C=D(Int32Array),U=H(N),B=()=>F.withResolvers();let q=0;const J=new Map,z=(e,t)=>class extends e{constructor(e,...n){super(e,...n),e instanceof t&&J.set(this,[q++,0,B()])}},G=new WeakSet,Y=e=>(G.add(e),e),K=(e,t)=>{const{data:n}=e,r=W(n)&&(n.at(0)===t||0===n.at(1)&&!t);return r&&(e.stopImmediatePropagation(),e.preventDefault()),r},X=e=>null!==e&&"object"==typeof e&&!G.has(e),V=new WeakMap,Q=(e,t,n)=>{if(J.has(e))t.set(e,J.get(e)[0]);else if(!(e instanceof C||e instanceof M))for(const r of L(e))X(r)&&!n.has(r)&&(n.add(r),Q(r,t,n))},Z=(...e)=>({value:new F((t=>{let n=new Worker("data:application/javascript,onmessage%3De%3D%3EpostMessage(!Atomics.wait(...e.data))");n.onmessage=()=>t("ok"),n.postMessage(e)}))}),ee=(e,t,n)=>{for(const[n,r]of t)V.set(n,[r,e.currentTarget]);(({currentTarget:e,type:t,origin:n,lastEventId:r,source:s,ports:o},a)=>{e.dispatchEvent(new MessageEvent(t,{data:a,origin:n,lastEventId:r,source:s,ports:o}))})(e,n)};let{BigInt64Array:te,Int32Array:ne,SharedArrayBuffer:re,Worker:se}=globalThis,oe=e=>e,ae=!1;const ie=e=>({...e,type:"module"});try{new re(4),se=class extends se{constructor(e,t){super(e,ie(t))}},U.waitAsync||(U.waitAsync=Z)}catch(e){const t=crypto.randomUUID(),n=new Map,r=(e,t,n,...r)=>{e.addEventListener(t,n,...r)},s=({serviceWorker:e},s,o)=>{let a,i=!0;r(e,"message",(e=>{if(K(e,t)){const[r,s,o]=e.data,i=[s,o].join(","),c=e=>{n.delete(i),a.postMessage([t,s,o,e])},l=n.get(i);if(l)c(l);else{const{promise:e,resolve:t}=B();n.set(i,t),e.then(c)}}})),e.getRegistration(s).then((t=>t??e.register(s))).then((function t(n){i=i&&!!e.controller,a=n.installing||n.waiting||n.active,"activated"===a.state?i?o():location.reload():r(a,"statechange",(()=>t(n)),{once:!0})}))};oe=Y,ae=!0,U.notify=(e,r)=>{const[s,o]=(e=>V.get(e))(e),a=[s,r].join(","),i=n.get(a);return i?i(e):n.set(a,e),o.postMessage([t,1,e,s,r]),0},U.waitAsync=(e,...t)=>{const[n,r]=((e,t)=>{const n=J.get(e),[r,s,{promise:o}]=n;return n[1]=t,[r,o]})(e,...t);return{value:r}},re=class extends M{},te=z(te,re),ne=z(ne,re);let o=null;se=class extends se{constructor(e,n){let a=n?.serviceWorker||"";if(a){if(a=new URL(a,location.href).href,n={...n,serviceWorker:a},!o){const{promise:e,resolve:t}=B();s(navigator,a,t),o=e}o.then((()=>super.postMessage([t,3])))}super(e,ie(n)),super.postMessage([t,0,n]),r(this,"message",(e=>{if(K(e,t)){const[t,n,...r]=e.data;switch(n){case 1:((e,t,n)=>{for(const[r,[s,o,{resolve:a}]]of J)if(t===s&&n===o){for(let t=0;t<e.length;t++)r[t]=e[t];J.delete(r),a("ok");break}})(...r);break;case 2:ee(e,...r)}}}))}postMessage(e,...n){return super.postMessage(((e,t)=>{const n=new Map;return X(t)&&Q(t,n,new Set),n.size?[e,2,n,t]:t})(t,e),...n)}}}const{BYTES_PER_ELEMENT:ce}=Int32Array,{BYTES_PER_ELEMENT:le}=Uint16Array,{notify:ue}=U,pe=new TextDecoder("utf-16"),fe=new WeakSet,he=(...e)=>(fe.add(e),e);let de="";let ge=0;const ye=([e,t,n,r,s,o,a,i,c],l)=>(...u)=>{let p=""!==de,f=0;p&&(f=((e,t)=>setTimeout(console.warn,1e3,`💀🔒 - proxy.${e}() in proxy.${t}()`))(l,de));const h=ge++,d=[];fe.has(u.at(-1)||d)&&fe.delete(d=u.pop());const g=n(i?u.map(i):u);let y=t(2*ce);return a([e,2,l,h,y,g,r],{transfer:d}),c(y,0).value.then((()=>{p&&clearTimeout(f);const n=y[1];if(!n)return;const r=le*n;return y=t(r+r%ce),a([e,1,h,y]),c(y,0).value.then((()=>{const e=new Uint16Array(y.buffer),t=o?e.subarray(0,n):e.slice(0,n);return s(pe.decode(t))}))}))};var we=({parse:e,stringify:t,transform:n}=JSON)=>{const r=((e,t)=>async(n,r,[s,o,a,i,c])=>{c&&(de=s);try{const s=await n(...i);if(void 0!==s){const n=e(t?t(s):s);r.set(o,n),a[1]=n.length}}finally{c&&(de=""),a[0]=1,ue(a,0)}})(t,n),s=crypto.randomUUID();return{Worker:class extends se{constructor(t,o){const a=new Map,i=new Map;super(t,o),this.proxy=((e,t)=>new Proxy(t,{get:(t,n)=>{let r;return"then"!==n&&(r=t.get(n),r||(r=ye(e,n),t.set(n,r))),r},set:(e,t,n)=>"then"!==t&&!!e.set(t,n)}))([s,e=>new ne(new re(e)),oe,!1,e,ae,(...e)=>this.postMessage(...e),n,U.waitAsync],a),this.postMessage(oe([s,0,o])),this.addEventListener("message",(e=>{if(K(e,s)){const[t,n,...s]=e.data;switch(n){case 2:((e,t,n,r)=>{const[s]=r,o=n.get(s);if(!o)throw new Error(`Unknown proxy.${s}()`);e(o,t,r)})(r,i,a,s);break;case 1:((e,[t,n])=>{const r=e.get(t);e.delete(t);for(let e=new Uint16Array(n.buffer),t=0,{length:s}=r;t<s;t++)e[t]=r.charCodeAt(t);ue(n,0)})(i,s)}}}))}},polyfill:ae,transfer:he}},me=Object.fromEntries([v,"bigint","boolean",E,k,x,T,S,A,j].map(((e,t)=>[e,t])));const _e="ownKeys",be="destruct",{[_e]:ve}=Reflect,Ee=new Map(ve(Symbol).filter((e=>typeof Symbol[e]===A)).map((e=>[Symbol[e],e]))),ke=e=>Ee.get(e)||`.${Symbol.keyFor(e)||""}`,xe="42fb1e9a-1373-441e-813f-357c3deaee87",Te="M"+xe,Se="W"+xe,Ae=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`Held value ${String(t)} not relevant anymore`),e(t)})),je=Object.create(null),Oe=(e,t,{debug:n,handler:r,return:s,token:o=e}=je)=>{const a=s||new Proxy(e,r||je),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),Ae.register(...i),a},{addEventListener:Re}=EventTarget.prototype,$e=new WeakMap;Reflect.defineProperty(EventTarget.prototype,"addEventListener",{value(e,t,...n){const r=n.at(0)?.invoke;if(r){let t=$e.get(this);t||(t=new Map,$e.set(this,t)),t.set(e,[].concat(r)),delete n[0].invoke}return Re.call(this,e,t,...n)}});const{isArray:Pe}=Array;const{url:Ie}=import.meta,Me=/import\((['"])([^)]+?\.js)\1\)/g,Ne=(e,t,n)=>`import(${t}${new URL(n,Ie).href}${t})`,{Worker:Fe}=(e=>{const t=we(e),n=e=>{const t=typeof e;switch(t){case T:return null===e?[me[k],e]:e===globalThis?[me[T],null]:Pe(e)?[me[v],I(e)]:[me[T],e instanceof C?e:I(e)];case E:return[me[E],I(e)];case A:return[me[A],ke(e)];default:return[me[t],e]}};class r extends t.Worker{constructor(e,t){const{proxy:r}=super(e,t),{[Se]:s}=r,o=new Map,a=e=>{o.delete(e),s(be,e)},i=([e,t])=>{switch(e){case me[T]:if(null===t)return globalThis;if(typeof t===x)return P(t);if(!(t instanceof C))for(const e in t)t[e]=i(t[e]);return t;case me[v]:return typeof t===x?P(t):t.map(i);case me[E]:switch(typeof t){case x:return P(t);case S:{let e=o.get(t)?.deref();return e||(e=Oe(t,a,{token:!1,return:function(...e){return e.length&&e[0]instanceof Event&&(e=>{const{currentTarget:t,target:n,type:r}=e,s=$e.get(t||n)?.get(r);if(s)for(const t of s)e[t]()})(e[0]),s("apply",t,n(this),e.map(n)).then(i)}}),o.set(t,new WeakRef(e))),e}}case me[A]:return(e=>{if(e.startsWith("."))return Symbol.for(e.slice(1));for(const[t,n]of Ee)if(n===e)return t})(t);default:return t}};r[Te]=(e,t,...r)=>{if(e===be)(e=>{const[t,n]=typeof e===x?[$,R]:[R,$],r=t.has(e);r&&(n.delete(t.get(e)),t.delete(e))})(t);else{const s=Reflect[e],o=null==t?globalThis:P(t);switch(e){case"defineProperty":{const[e,t]=r.map(i);return n(s(o,e,t))}case"getOwnPropertyDescriptor":{const e=s(o,...r.map(i));if(e){const{get:t,set:r,value:s}=e;t&&(e.get=n(t)),r&&(e.set=n(r)),s&&(e.value=n(s))}return[me[e?T:j],e]}case _e:return[me[v],s(o).map(n)];default:return((e,t,r)=>n(e(t,...r.map(i))))(s,o,r)}}}}}return{...t,Worker:r}})(b);const We=new WeakMap,He=e=>{const t=e||console,n={buffered:Le,stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>n.stderr(...e),stdout:(...e)=>n.stdout(...e),async get(e){const t=await e;return We.set(t,n),t}}},De=new TextDecoder,Le=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(De.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},Ce=new Map,Ue=e=>Ce.get(e),Be=(e,t)=>{try{return Function("require",t)(Ue)}catch(t){We.get(e).stderr(t)}};var qe={type:"dummy",module:()=>"data:application/javascript,",engine:e=>He().get(e),registerJSModule(e,t,n){Ce.set(t,n)},run:Be,runAsync:Be,runEvent:async(e,t,n)=>{try{await Function("require","e",`return ${t}(e)`)(Ue,n)}catch(t){We.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};Promise.withResolvers||(Promise.withResolvers=function(){var e,t,n=new this((function(n,r){e=n,t=r}));return{resolve:e,reject:t,promise:n}});const Je={object(...e){return this.string(function(e){for(var t=e[0],n=1,r=arguments.length;n<r;n++)t+=arguments[n]+e[n];return t}(...e))},string(e){for(const t of e.split(/[\r\n]+/))if(t.trim().length){/^(\s+)/.test(t)&&(e=e.replace(new RegExp("^"+RegExp.$1,"gm"),""));break}return e}},{replace:ze}="",Ge=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,Ye={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'},Ke=e=>Ye[e],Xe=(e,...t)=>Je[typeof e](e,...t),Ve=e=>ze.call(e,Ge,Ke),{isArray:Qe}=Array,{assign:Ze,create:et,defineProperties:tt,defineProperty:nt,entries:rt}=Object,{all:st,resolve:ot}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),at=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,"")).href;let it=0;const ct=(e,t)=>({id:e.id||(e.id=`${t}-w${it++}`),tag:e.tagName}),lt=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},ut=(e,t,n,r)=>({type:t,config:n,interpreter:r,io:We.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}),pt=e=>e.replace(/^(?:\n|\r\n)/,""),ft=(e,t,n,r)=>{const s=e[t].bind(e);e[t]="run"===t?(e,t,...o)=>{n&&s(e,n,...o);const a=s(e,pt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,pt(t),...o);return r&&await s(e,r,...o),a}},ht=Symbol.for("polyscript.js_modules"),dt=new Map;nt(globalThis,ht,{value:dt});const gt=new Proxy(dt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]}),yt=(e,t)=>!t.startsWith("_"),wt=(e,t)=>new Proxy(e,{has:yt,get:(e,n)=>e[t][n]}),mt=(e,t,n,r)=>{if("pyodide"===e)return;const s="polyscript.js_modules";for(const e of Reflect.ownKeys(r))t.registerJSModule(n,`${s}.${e}`,wt(r,e));t.registerJSModule(n,s,r)},_t=(e,t)=>import(e).then((e=>{dt.set(t,{...e})})),bt=e=>new Promise(((t,n)=>{document.querySelector(`link[rel="stylesheet"][href="${e}"]`)?t():document.head.append(Ze(document.createElement("link"),{rel:"stylesheet",href:e,onload:t,onerror:n}))})),vt=e=>/\.css$/i.test(new URL(e).pathname),Et=!globalThis.window,kt=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):Tt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},xt=e=>{const t=e.split("/");return t.pop(),t.join("/")},Tt=(e,t)=>{const n=[];for(const r of t.split("/"))"."!==r&&".."!==r&&(n.push(r),r&&e.mkdir(n.join("/")))},St=(e,t)=>{const n=[];for(const e of t.split("/"))switch(e){case"":case".":break;case"..":n.pop();break;default:n.push(e)}return[e.cwd()].concat(n).join("/").replace(/^\/+/,"/")},At=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},jt=(e,t)=>o(at(e,t)).arrayBuffer(),Ot=(e,t,n,r)=>st((e=>{for(const{files:t,to_file:n,from:r=""}of e){if(void 0!==t&&void 0!==n)throw new Error("Cannot use 'to_file' and 'files' parameters together!");if(void 0===t&&void 0===n&&r.endsWith("/"))throw new Error(`Couldn't determine the filename from the path ${r}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e="",to_folder:t=".",to_file:n,files:r})=>{if(Qe(r))return r.map((n=>({url:At([e,n]),path:At([t,n])})));const s=n||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:At([t,s])}]}))})(n).map((({url:n,path:s})=>jt(n,r).then((n=>e.writeFile(t,s,n)))))),Rt=(e,t)=>t.endsWith("/")?`${t}${e.split("/").pop()}`:t,$t=(e,t)=>e.replace(/\{.+?\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),Pt=(e,t,n,r)=>st((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of rt(e))if(/^\{.+\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,$t(o,t))}else{const e=$t(s,t),a=Rt(e,$t(o||"./",t));if(n.has(a))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>jt(n,r).then((r=>e.writeFile(t,s,r,n)))))),It=({main:e,worker:t},n)=>{const r=[];if(t&&Et)for(let[e,s]of rt(t))e=at(e,n),r.push(_t(e,s));if(e&&!Et)for(let[t,s]of rt(e))t=at(t,n),vt(t)?bt(t):r.push(_t(t,s));return st(r)},{assign:Mt}=Object,Nt="entries",Ft="readonly",Wt="readwrite",Ht={durability:"default",prefix:"IDBMap"},Dt=({target:{result:e}})=>e;class Lt extends EventTarget{#e;#t;#n;async#r(e,t){const n=(await this.#e).transaction(Nt,t,this.#t);return new Promise(((t,r)=>Mt(e(n.objectStore(Nt)),{onsuccess:t,onerror:r})))}constructor(e,{durability:t=Ht.durability,prefix:n=Ht.prefix}=Ht){super(),this.#n=n,this.#t={durability:t},this.#e=new Promise(((t,n)=>{Mt(indexedDB.open(`${this.#n}/${e}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(Nt),n.oncomplete=()=>t(e)},onsuccess(e){t(Dt(e))},onerror(e){n(e),this.dispatchEvent(e)}})})).then((e=>{const t=this.dispatchEvent.bind(this);for(const n in e)n.startsWith("on")&&(e[n]=t);return e}))}dispatchEvent(e){const{type:t,message:n,isTrusted:r}=e;return super.dispatchEvent(r?Mt(new Event(t),{message:n}):e)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),Ft).then(Dt)}async clear(){await this.#r((e=>e.clear()),Wt)}async delete(e){await this.#r((t=>t.delete(e)),Wt)}async entries(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e).then((t=>[e,t])))))}async forEach(e,t=this){for(const[n,r]of await this.entries())await e.call(t,r,n,this)}async get(e){return await this.#r((t=>t.get(e)),Ft).then(Dt)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),Ft).then(Dt)}async keys(){return await this.#r((e=>e.getAllKeys()),Ft).then(Dt)}async set(e,t){return await this.#r((n=>n.put(t,e)),Wt),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class Ct extends Map{#s;#o;constructor(...e){super(),this.#s=new Lt(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async sync(){await this.#o}clear(){return this.#o=this.#o.then((()=>this.#s.clear())),super.clear()}delete(e){return this.#o=this.#o.then((()=>this.#s.delete(e))),super.delete(e)}set(e,t){return this.#o=this.#o.then((()=>this.#s.set(e,t))),super.set(e,t)}}const Ut=new WeakMap,Bt=(e,t,n)=>{"polyscript"===t&&(n.lazy_py_modules=async(...t)=>(await Ut.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new Ct(e);return await t.sync(),t},n.JSON=b),e.registerJsModule(t,n)},qt=(e,t)=>{if(e.endsWith("/*")){if(/\.(zip|whl|tgz|tar(?:\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return""},Jt=(e,t,...n)=>{try{return e.runPython(Xe(t),...n)}catch(t){We.get(e).stderr(t)}},zt=async(e,t,...n)=>{try{return await e.runPythonAsync(Xe(t),...n)}catch(t){We.get(e).stderr(t)}},Gt=async(e,t,n)=>{const[r,...s]=t.split(".");let o,a=e.globals.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){We.get(e).stderr(t)}};var Yt=(new TextEncoder).encode('from uio import StringIO\nimport sys\n\nclass Response:\n def __init__(self, f):\n self.raw = f\n self.encoding = "utf-8"\n self._cached = None\n\n def close(self):\n if self.raw:\n self.raw.close()\n self.raw = None\n self._cached = None\n\n @property\n def content(self):\n if self._cached is None:\n try:\n self._cached = self.raw.read()\n finally:\n self.raw.close()\n self.raw = None\n return self._cached\n\n @property\n def text(self):\n return str(self.content, self.encoding)\n\n def json(self):\n import ujson\n\n return ujson.loads(self.content)\n\n\n# TODO try to support streaming xhr requests, a-la pyodide-http\nHEADERS_TO_IGNORE = ("user-agent",)\n\n\ntry:\n import js\nexcept Exception as err:\n raise OSError("This version of urequests can only be used in the browser")\n\n# TODO try to support streaming xhr requests, a-la pyodide-http\n\nHEADERS_TO_IGNORE = ("user-agent",)\n\n\ndef request(\n method,\n url,\n data=None,\n json=None,\n headers={},\n stream=None,\n auth=None,\n timeout=None,\n parse_headers=True,\n):\n from js import XMLHttpRequest\n\n xhr = XMLHttpRequest.new()\n xhr.withCredentials = False\n\n if auth is not None:\n import ubinascii\n\n username, password = auth\n xhr.open(method, url, False, username, password)\n else:\n xhr.open(method, url, False)\n\n for name, value in headers.items():\n if name.lower() not in HEADERS_TO_IGNORE:\n xhr.setRequestHeader(name, value)\n\n if timeout:\n xhr.timeout = int(timeout * 1000)\n\n if json is not None:\n assert data is None\n import ujson\n\n data = ujson.dumps(json)\n # s.write(b"Content-Type: application/json\\r\\n")\n xhr.setRequestHeader("Content-Type", "application/json")\n\n xhr.send(data)\n\n # Emulates the construction process in the original urequests\n resp = Response(StringIO(xhr.responseText))\n resp.status_code = xhr.status\n resp.reason = xhr.statusText\n resp.headers = xhr.getAllResponseHeaders()\n\n return resp\n\n\n# Other methods - head, post, put, patch, delete - are not used by\n# mip and therefore not included\n\n\ndef get(url, **kw):\n return request("GET", url, **kw)\n\n\n# Content below this line is from the Micropython MIP package and is covered\n# by the applicable MIT license:\n# \n# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING \n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER \n# DEALINGS IN THE SOFTWARE.\n\n# MicroPython package installer\n# MIT license; Copyright (c) 2022 Jim Mussared\n\n\n_PACKAGE_INDEX = const("https://micropython.org/pi/v2")\n_CHUNK_SIZE = 128\n\n\n# This implements os.makedirs(os.dirname(path))\ndef _ensure_path_exists(path):\n import os\n\n split = path.split("/")\n\n # Handle paths starting with "/".\n if not split[0]:\n split.pop(0)\n split[0] = "/" + split[0]\n\n prefix = ""\n for i in range(len(split) - 1):\n prefix += split[i]\n try:\n os.stat(prefix)\n except:\n os.mkdir(prefix)\n prefix += "/"\n\n\n# Copy from src (stream) to dest (function-taking-bytes)\ndef _chunk(src, dest):\n buf = memoryview(bytearray(_CHUNK_SIZE))\n while True:\n n = src.readinto(buf)\n if n == 0:\n break\n dest(buf if n == _CHUNK_SIZE else buf[:n])\n\n\n# Check if the specified path exists and matches the hash.\ndef _check_exists(path, short_hash):\n import os\n\n try:\n import binascii\n import hashlib\n\n with open(path, "rb") as f:\n hs256 = hashlib.sha256()\n _chunk(f, hs256.update)\n existing_hash = str(binascii.hexlify(hs256.digest())[: len(short_hash)], "utf-8")\n return existing_hash == short_hash\n except:\n return False\n\n\ndef _rewrite_url(url, branch=None):\n if not branch:\n branch = "HEAD"\n if url.startswith("github:"):\n url = url[7:].split("/")\n url = (\n "https://raw.githubusercontent.com/"\n + url[0]\n + "/"\n + url[1]\n + "/"\n + branch\n + "/"\n + "/".join(url[2:])\n )\n return url\n\n\ndef _download_file(url, dest):\n response = get(url)\n try:\n if response.status_code != 200:\n print("Error", response.status_code, "requesting", url)\n return False\n\n print("Copying:", dest)\n _ensure_path_exists(dest)\n with open(dest, "wb") as f:\n _chunk(response.raw, f.write)\n\n return True\n finally:\n response.close()\n\n\ndef _install_json(package_json_url, index, target, version, mpy):\n response = get(_rewrite_url(package_json_url, version))\n try:\n if response.status_code != 200:\n print("Package not found:", package_json_url)\n return False\n\n package_json = response.json()\n finally:\n response.close()\n for target_path, short_hash in package_json.get("hashes", ()):\n fs_target_path = target + "/" + target_path\n if _check_exists(fs_target_path, short_hash):\n print("Exists:", fs_target_path)\n else:\n file_url = "{}/file/{}/{}".format(index, short_hash[:2], short_hash)\n if not _download_file(file_url, fs_target_path):\n print("File not found: {} {}".format(target_path, short_hash))\n return False\n for target_path, url in package_json.get("urls", ()):\n fs_target_path = target + "/" + target_path\n if not _download_file(_rewrite_url(url, version), fs_target_path):\n print("File not found: {} {}".format(target_path, url))\n return False\n for dep, dep_version in package_json.get("deps", ()):\n if not _install_package(dep, index, target, dep_version, mpy):\n return False\n return True\n\n\ndef _install_package(package, index, target, version, mpy):\n if (\n package.startswith("http://")\n or package.startswith("https://")\n or package.startswith("github:")\n ):\n if package.endswith(".py") or package.endswith(".mpy"):\n print("Downloading {} to {}".format(package, target))\n return _download_file(\n _rewrite_url(package, version), target + "/" + package.rsplit("/")[-1]\n )\n else:\n if not package.endswith(".json"):\n if not package.endswith("/"):\n package += "/"\n package += "package.json"\n print("Installing {} to {}".format(package, target))\n else:\n if not version:\n version = "latest"\n print("Installing {} ({}) from {} to {}".format(package, version, index, target))\n\n mpy_version = (\n sys.implementation._mpy & 0xFF if mpy and hasattr(sys.implementation, "_mpy") else "py"\n )\n\n # WARNING: mpy_version fails miserably with 1.22.0-380\n package = "{}/package/{}/{}/{}.json".format(index, "py", package, version)\n\n return _install_json(package, index, target, version, mpy)\n\n\ndef install(package, index=None, target=None, version=None, mpy=True):\n if not target:\n for p in sys.path:\n if p.endswith("/lib"):\n target = p\n break\n else:\n print("Unable to find lib dir in sys.path")\n return\n\n if not index:\n index = _PACKAGE_INDEX\n\n if _install_package(package, index.rstrip("/"), target, version, mpy):\n print("Done")\n else:\n print("Package may be partially installed")\n');const Kt=async e=>(await import("./toml-DiUM0_qs.js")).parse(e),Xt=(e,t)=>{try{e.mkdir(t)}catch(e){}};var Vt={type:"micropython",module:(e="1.24.0-preview-114")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,n,r){const{stderr:s,stdout:o,get:a}=He({stderr:Le(console.error),stdout:Le(console.log)});n=n.replace(/\.m?js$/,".wasm");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=Qt.bind(this,i,r);return Ut.set(i,c),t.files&&await Pt(this,i,t.files,r),t.fetch&&await Ot(this,i,t.fetch,r),t.js_modules&&await It(t.js_modules,r),this.writeFile(i,"./mip.py",Yt),t.packages&&await c(t.packages),i},registerJSModule:Bt,run:Jt,runAsync:zt,runEvent:Gt,transform:(e,t)=>e.PyProxy.toJs(t),writeFile:(e,t,n,r)=>{const{FS:s,_module:{PATH:o,PATH_FS:a}}=e,i={FS:s,PATH:o,PATH_FS:a},c=qt(t,r);if(c){const r=t.slice(0,-1);switch("./"!==r&&s.mkdir(r),c){case"whl":case"zip":{const e=new Blob([n],{type:"application/zip"});return import("./zip-gl8b5xR3.js").then((async({BlobReader:t,Uint8ArrayWriter:n,ZipReader:a})=>{const i=new a(new t(e));for(const e of await i.getEntries()){const{directory:t,filename:a}=e,i=r+a;if(t)Xt(s,i);else{Xt(s,o.dirname(i));const t=await e.getData(new n);s.writeFile(i,t,{canOwn:!0})}}i.close()}))}case"tgz":case"tar.gz":{const t="./_.tar.gz";return kt(i,t,n),void e.runPython(`\n import os, gzip, tarfile\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open("${t}", "rb")))\n for f in tar:\n name = f"${r}{f.name}"\n if f.type == tarfile.DIRTYPE:\n if f.name != "./":\n os.mkdir(name.strip("/"))\n else:\n dir = os.path.dirname(name)\n if not os.path.exists(dir):\n os.mkdir(dir)\n source = tar.extractfile(f)\n with open(name, "wb") as dest:\n dest.write(source.read())\n dest.close()\n tar.close()\n os.remove("${t}")\n `)}}}return kt(i,t,n)}};async function Qt(e,t,n){let r;for(const s of n)if(s.endsWith(".whl")){const n=at(s,t),r=await o(n).arrayBuffer();await this.writeFile(e,"./*",r,n)}else r||(r=e.pyimport("mip")),r.install(s)}const Zt={dict_converter:Object.fromEntries};let en=!1;const tn=e=>(...t)=>{try{return en=!0,e(...t)}finally{en=!1}};let nn=!1;const rn=()=>{if(nn)return;nn=!0;const e=new WeakMap,t=e=>e.destroy(),n=n=>{for(let r=0;r<n.length;r++){const s=n[r];if("function"==typeof s&&"copy"in s){en=!1;let o=e.get(s)?.deref();if(!o)try{o=Oe(s.copy(),t),e.set(s,new WeakRef(o))}catch(e){console.error(e)}o&&(n[r]=o),en=!0}}},{call:r}=Function,s=r.bind(r,r.apply);Object.defineProperties(Function.prototype,{apply:{value(e,t){return en&&n(t),s(this,e,t)}},call:{value(e,...t){return en&&n(t),s(this,e,t)}}})};var sn={type:"pyodide",module:(e="0.26.1")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){Et||"auto"!==t.experimental_create_proxy||rn();const{stderr:s,stdout:o,get:a}=He(),i=n.slice(0,n.lastIndexOf("/")),c=await a(e({stderr:s,stdout:o,indexURL:i})),l=on.bind(c);return Ut.set(c,l),t.files&&await Pt(this,c,t.files,r),t.fetch&&await Ot(this,c,t.fetch,r),t.js_modules&&await It(t.js_modules,r),t.packages&&await l(t.packages),c},registerJSModule:Bt,run:tn(Jt),runAsync:tn(zt),runEvent:tn(Gt),transform:({ffi:{PyProxy:e}},t)=>t instanceof e?t.toJs(Zt):t,writeFile:(e,t,n,r)=>{const s=qt(t,r);if(s)return e.unpackArchive(n,s,{extractDir:t.slice(0,-1)});const{FS:o,PATH:a,_module:{PATH_FS:i}}=e;return kt({FS:o,PATH:a,PATH_FS:i},t,n)}};async function on(e){await this.loadPackage("micropip");const t=this.pyimport("micropip");await t.install(e,{keep_going:!0}),t.destroy()}const an="ruby-wasm-wasi",cn=an.replace(/\W+/g,"_");var ln={type:an,experimental:!0,module:(e="2.6.2")=>`https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${e}/dist/browser/+esm`,async engine({DefaultRubyVM:e},t,n,r){n=n.replace(/\/browser\/\+esm$/,"/ruby.wasm");const s=await o(n).arrayBuffer(),a=await WebAssembly.compile(s),{vm:i}=await e(a);return t.files&&await Pt(this,i,t.files,r),t.fetch&&await Ot(this,i,t.fetch,r),t.js_modules&&await It(t.js_modules,r),i},registerJSModule(e,t,n){t=t.replace(/\W+/g,"__");const r=`__module_${cn}_${t}`;globalThis[r]=n,this.run(e,`require "js";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(Xe(t),...n),runAsync:(e,t,...n)=>e.evalAsync(Xe(t),...n),async runEvent(e,t,n){if(/^xworker\.(on\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${cn}_event`;globalThis[r]=n,this.run(e,`require "js";$xworker.call("${t}",JS.global[:${r}])`),delete globalThis[r]}else{const r=this.run(e,`method(:${t})`);await r.call(t,e.wrap(n))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${an}`)}};var un={type:"wasmoon",module:(e="1.16.0")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},n,r,s){const{stderr:o,stdout:a,get:i}=He(),c=await i((new e).createEngine());return c.global.getTable(t.Base,(e=>{c.global.setField(e,"print",a),c.global.setField(e,"printErr",o)})),n.files&&await Pt(this,c,n.files,s),n.fetch&&await Ot(this,c,n.fetch,s),n.js_modules&&await It(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(Xe(t),...n)}catch(t){We.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(Xe(t),...n)}catch(t){We.get(e).stderr(t)}},runEvent:async(e,t,n)=>{const[r,...s]=t.split(".");let o,a=e.global.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){We.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(Tt(e,xt(t)),t=St(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const pn=new WeakMap,fn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=pn.get(e),{output:o,result:a}=await n.captureR(Xe(t));for(const{type:e,data:t}of o)s[e](t);return Oe(a,r,{token:!1})};var hn={type:"webr",experimental:!0,module:(e="0.4.0")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=He(),o=new e.WebR;await s(o.init().then((()=>o)));const a=await new o.Shelter;return pn.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:We.get(o)}),t.files&&await Pt(this,o,t.files,r),t.fetch&&await Ot(this,o,t.fetch,r),t.js_modules&&await It(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:fn,runAsync:fn,async runEvent(e,t,n){await e.evalRVoid(`${t}(event)`,{env:{event:{type:[n.type]}}})},transform:(e,t)=>(console.log("transforming",t),t),writeFile:()=>{}};const dn=new Map,gn=new Map,yn=[],wn=[],mn=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split("@"),s=dn.get(n),o=/^(?:\.?\.?\/|https?:\/\/)/i.test(r)?r.join("@"):s.module(...r);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:n,module:r,engine:s}=e.get(t);return(e,o)=>r.then((r=>(gn.set(t,e),s(r,e,n,o))))}}),_n=e=>{for(const t of[].concat(e.type))dn.set(t,e),yn.push(`script[type="${t}"]`),wn.push(`${t}-`)};for(const e of[qe,Vt,sn,ln,un,hn])_n(e);const{parse:bn}=JSON,vn=(e,t="./config.txt")=>{let n=typeof e;return"string"===n&&/\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[at(e),n]},En=e=>{try{return bn(e)}catch(t){return Kt(e)}},kn=(e,t,n,r={})=>{if(t){const[e,s]=vn(t,n);"json"===s?r=o(e).json():"toml"===s?r=o(e).text().then(Kt):"string"===s?r=En(t):"object"===s&&t?r=t:"txt"===s&&"string"==typeof r&&(r=En(r)),t=e}return ot(r).then((n=>mn[e](n,t)))},xn=(e,t="")=>`${e}@${t}`.replace(/@$/,"");function Tn(e=this){return String(e).replace(/^(async\s*)?(\bfunction\b)?(.*?)\(/,((e,t,n,r)=>r&&!n?`${t||""}function ${r}(`:e))}const Sn="BeforeRun",An="AfterRun",jn=[`code${Sn}`,`code${Sn}Async`,`code${An}`,`code${An}Async`],On=["onWorker","onReady",`on${Sn}`,`on${Sn}Async`,`on${An}`,`on${An}Async`];function Rn(e,t){const{run:n,runAsync:r}=dn.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const $n=(e,t,n,r,s,o)=>{if(s||o){const a=Rn.bind(e,t),i=r?"runAsync":"run",c=e[i];e[i]=r?async function(e,t,...r){s&&await s.call(this,a(e),n);const i=await c.call(this,e,t,...r);return o&&await o.call(this,a(e),n),i}:function(e,t,...r){s&&s.call(this,a(e),n);const i=c.call(this,e,t,...r);return o&&o.call(this,a(e),n),i}}};let Pn=class{constructor(e,t={}){const{main:n,worker:r}=t;this.interpreter=e,this.onWorker=n?.onWorker;for(const e of On.slice(1))this[e]=r?.[e];for(const e of jn)this[e]=r?.[e]}toJSON(){const e={};for(const t of On.slice(1))this[t]&&(e[t]=Tn(this[t]));for(const t of jn)this[t]&&(e[t]=Xe(this[t]()));return e}};var In=(...e)=>function(t,n){if(e.length){const[t,r]=e;(n=Ze({},n||{type:t,version:r})).type||(n.type=t)}const[r]=vn(n.config,n.configURL),s=((...e)=>new Fe(URL.createObjectURL(new Blob(['const e="object"==typeof self?self:globalThis,t=t=>((t,n)=>{const r=(e,n)=>(t.set(n,e),e),s=o=>{if(t.has(o))return t.get(o);const[a,i]=n[o];switch(a){case 0:case-1:return r(i,o);case 1:{const e=r([],o);for(const t of i)e.push(s(t));return e}case 2:{const e=r({},o);for(const[t,n]of i)e[s(t)]=s(n);return e}case 3:return r(new Date(i),o);case 4:{const{source:e,flags:t}=i;return r(new RegExp(e,t),o)}case 5:{const e=r(new Map,o);for(const[t,n]of i)e.set(s(t),s(n));return e}case 6:{const e=r(new Set,o);for(const t of i)e.add(s(t));return e}case 7:{const{name:t,message:n}=i;return r(new e[t](n),o)}case 8:return r(BigInt(i),o);case"BigInt":return r(Object(BigInt(i)),o)}return r(new e[a](i),o)};return s})(new Map,t)(0),n="",{toString:r}={},{keys:s}=Object,o=e=>{const t=typeof e;if("object"!==t||!e)return[0,t];const s=r.call(e).slice(8,-1);switch(s){case"Array":return[1,n];case"Object":return[2,n];case"Date":return[3,n];case"RegExp":return[4,n];case"Map":return[5,n];case"Set":return[6,n]}return s.includes("Array")?[1,s]:s.includes("Error")?[7,s]:[2,s]},a=([e,t])=>0===e&&("function"===t||"symbol"===t),i=(e,{json:t,lossy:n}={})=>{const r=[];return((e,t,n,r)=>{const i=(e,t)=>{const s=r.push(e)-1;return n.set(t,s),s},c=r=>{if(n.has(r))return n.get(r);let[l,u]=o(r);switch(l){case 0:{let t=r;switch(u){case"bigint":l=8,t=r.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+u);t=null;break;case"undefined":return i([-1],r)}return i([l,t],r)}case 1:{if(u)return i([u,[...r]],r);const e=[],t=i([l,e],r);for(const t of r)e.push(c(t));return t}case 2:{if(u)switch(u){case"BigInt":return i([u,r.toString()],r);case"Boolean":case"Number":case"String":return i([u,r.valueOf()],r)}if(t&&"toJSON"in r)return c(r.toJSON());const n=[],p=i([l,n],r);for(const t of s(r))!e&&a(o(r[t]))||n.push([c(t),c(r[t])]);return p}case 3:return i([l,r.toISOString()],r);case 4:{const{source:e,flags:t}=r;return i([l,{source:e,flags:t}],r)}case 5:{const t=[],n=i([l,t],r);for(const[n,s]of r)(e||!a(o(n))&&!a(o(s)))&&t.push([c(n),c(s)]);return n}case 6:{const t=[],n=i([l,t],r);for(const n of r)!e&&a(o(n))||t.push(c(n));return n}}const{message:p}=r;return i([l,{name:u,message:p}],r)};return c})(!(t||n),!!t,new Map,r)(e),r},{parse:c,stringify:l}=JSON,u={json:!0,lossy:!0};var p=Object.freeze({__proto__:null,parse:e=>t(c(e)),stringify:e=>l(i(e,u))});const f="array",d="function",h="null",y="number",g="object",w="symbol",m="undefined",_="apply",b="construct",E="defineProperty",v="deleteProperty",T="get",x="getOwnPropertyDescriptor",k="getPrototypeOf",S="has",O="isExtensible",A="ownKeys",j="preventExtensions",R="set",P="setPrototypeOf";var $=Object.freeze({__proto__:null,APPLY:_,CONSTRUCT:b,DEFINE_PROPERTY:E,DELETE_PROPERTY:v,GET:T,GET_OWN_PROPERTY_DESCRIPTOR:x,GET_PROTOTYPE_OF:k,HAS:S,IS_EXTENSIBLE:O,OWN_KEYS:A,PREVENT_EXTENSION:j,SET:R,SET_PROTOTYPE_OF:P});function I(){return this}const N=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`Held value ${String(t)} not relevant anymore`),e(t)})),M=Object.create(null),F=(e,t,{debug:n,handler:r,return:s,token:o=e}=M)=>{const a=s||new Proxy(e,r||M),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),N.register(...i),a},{Object:W,Proxy:H,Reflect:D}=globalThis,{isArray:C}=Array,{ownKeys:L}=D,{create:B,hasOwn:q,values:U}=W,J=(e,t)=>t===f?e[0]:t===d?e():t===g?e.$:e,z=(e,t,n,r)=>{const s={type:{value:t}},o=q(e,"valueOf");for(const a of U($)){let i=r(e[a]||D[a]);if(o&&a===T){const{valueOf:r}=e,{value:s}=i;i={value(e,o,...a){return o===n?r.call(this,J(e,t)):s.call(this,e,o,...a)}}}s[a]=i}return B(e,s)},G=(e,t,n,r=e)=>{if(r===e)switch(typeof e){case g:case m:r||(r=!1);case d:break;default:r=!1,t===e&&(t=W(e))}const s=new H(t,n),{destruct:o}=n;return o?F(e,o,{token:r,return:s}):s},Y=e=>t=>{const n=typeof t;return n===g?t?e.get(t)?.[0]??(e=>C(e)?f:g)(t):h:n},K=e=>t=>{let n=typeof t;switch(n){case g:if(!t){n=h;break}case d:const r=e.get(t);r&&([n,t]=r)}return[n,t]},X=e=>((e=>{N.unregister(e)})(e),e);var V=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:X,pair:K(t),typeOf:Y(t),isProxy:e=>t.has(e),valueOf:e=>e[n]??e.valueOf()};for(const t of L(e)){if(q(o,t))continue;const a=e[t];switch(t){case f:{const e=z(a,t,n,(e=>({value([t],...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(G(t,[t],e,...n),f,t);break}case d:{const e=z(a,t,n,(e=>({value(t,...n){return e.call(this,t(),...n)}})));r[t]=(t,...n)=>{return s(G(t,(r=t,I.bind(r)),e,...n),d,t);var r};break}case g:{const e=z(a,t,n,(e=>({value({$:t},...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(G(t,{$:t},e,...n),g,t);break}default:{const e=z(a,t,n,(e=>({value:e})));r[t]=(n,...r)=>s(G(n,n,e,...r),t,n);break}}}return o};let Z=0;const Q=new Map,ee=new Map,te=e=>ee.get(e),ne=e=>{if(!Q.has(e)){let t;for(;ee.has(t=Z++););Q.set(e,t),ee.set(t,e)}return Q.get(e)},{ArrayBuffer:re,Atomics:se,Promise:oe}=globalThis,{isArray:ae}=Array,{create:ie,getPrototypeOf:ce,values:le}=Object,ue=ce(Int32Array),pe=ie(se),fe=({currentTarget:e,type:t,origin:n,lastEventId:r,source:s,ports:o},a)=>e.dispatchEvent(new MessageEvent(t,{data:a,origin:n,lastEventId:r,source:s,ports:o})),de=()=>oe.withResolvers();let he=0;const ye=new Map,ge=(e,t)=>class extends e{constructor(e,...n){super(e,...n),e instanceof t&&ye.set(this,[he++,0,de()])}},we=new WeakSet,me=e=>(we.add(e),e),_e=(e,t)=>{const{data:n}=e,r=ae(n)&&(n.at(0)===t||0===n.at(1)&&!t);return r&&(e.stopImmediatePropagation(),e.preventDefault()),r},be=e=>null!==e&&"object"==typeof e&&!we.has(e),Ee=new WeakMap,ve=(e,t,n)=>{if(ye.has(e))t.set(e,ye.get(e)[0]);else if(!(e instanceof ue||e instanceof re))for(const r of le(e))be(r)&&!n.has(r)&&(n.add(r),ve(r,t,n))},Te=(...e)=>({value:new oe((t=>{let n=new Worker("data:application/javascript,onmessage%3De%3D%3EpostMessage(!Atomics.wait(...e.data))");n.onmessage=()=>t("ok"),n.postMessage(e)}))}),xe=(e,t)=>{const n=ye.get(e),[r,s,{promise:o}]=n;return n[1]=t,[r,o]};let{BigInt64Array:ke,Int32Array:Se,SharedArrayBuffer:Oe,addEventListener:Ae,postMessage:je}=globalThis,Re=!0,Pe=e=>e,$e=!1;const Ie=de();try{new Oe(4),pe.waitAsync||(pe.waitAsync=Te),Ie.resolve()}catch(e){const t=je,n=Ae,r=[];let s="",o="";Oe=class extends re{},ke=ge(ke,Oe),Se=ge(Se,Oe),Pe=me,$e=!0,pe.notify=(e,n)=>{const[r]=(e=>Ee.get(e))(e);return t([s,1,e,r,n]),0},pe.waitAsync=(...e)=>{const[t,n]=xe(...e);return{value:n}},pe.wait=(e,t,...n)=>{const[r]=xe(e,t,...n),a=new XMLHttpRequest;a.responseType="json",a.open("POST",`${o}?sabayon`,!1),a.setRequestHeader("Content-Type","application/json"),a.send(`["${s}",${r},${t}]`);const{response:i}=a;ye.delete(e);for(let t=0;t<i.length;t++)e[t]=i[t];return"ok"},n("message",(e=>{if(_e(e,s)){const[t,n,...r]=e.data;switch(n){case 0:s=t,o=r.at(0)?.serviceWorker||"",o||(pe.wait=null,Ie.resolve());break;case 1:((e,t,n)=>{for(const[r,[s,o,{resolve:a}]]of ye)if(t===s&&n===o){for(let t=0;t<e.length;t++)r[t]=e[t];ye.delete(r),a("ok");break}})(...r);break;case 2:((e,t,n)=>{for(const[n,r]of t)Ee.set(n,[r,e.currentTarget]);fe(e,n)})(e,...r);break;case 3:Ie.resolve()}}else if(Re){const{currentTarget:t,type:n,origin:s,lastEventId:o,source:a,ports:i}=e;r.push([{currentTarget:t,type:n,origin:s,lastEventId:o,source:a,ports:i},e.data])}})),Ae=(e,...t)=>{if(n(e,...t),r.length)for(const e of r.splice(0))fe(...e)},je=(e,...n)=>t(((e,t)=>{const n=new Map;return be(t)&&ve(t,n,new Set),n.size?[e,2,n,t]:t})(s,e),...n)}await Ie.promise,Re=!1;const{BYTES_PER_ELEMENT:Ne}=Int32Array,{BYTES_PER_ELEMENT:Me}=Uint16Array,{notify:Fe}=pe,We=new TextDecoder("utf-16"),He=new WeakSet,De=(...e)=>(He.add(e),e);let Ce="";const Le=(e,t,n,r)=>{const[s]=r,o=n.get(s);if(!o)throw new Error(`Unknown proxy.${s}()`);e(o,t,r)};let Be=0;const qe=([e,t,n,r,s,o,a,i,c],l)=>(...u)=>{let p=""!==Ce,f=0;p&&(f=((e,t)=>setTimeout(console.warn,1e3,`💀🔒 - proxy.${e}() in proxy.${t}()`))(l,Ce));const d=Be++,h=[];He.has(u.at(-1)||h)&&He.delete(h=u.pop());const y=n(i?u.map(i):u);let g=t(2*Ne);return a([e,2,l,d,g,y,r],{transfer:h}),c(g,0).value.then((()=>{p&&clearTimeout(f);const n=g[1];if(!n)return;const r=Me*n;return g=t(r+r%Ne),a([e,1,d,g]),c(g,0).value.then((()=>{const e=new Uint16Array(g.buffer),t=o?e.subarray(0,n):e.slice(0,n);return s(We.decode(t))}))}))},Ue=(e,t)=>new Proxy(t,{get:(t,n)=>{let r;return"then"!==n&&(r=t.get(n),r||(r=qe(e,n),t.set(n,r))),r},set:(e,t,n)=>"then"!==t&&!!e.set(t,n)}),{wait:Je,waitAsync:ze}=pe;var Ge=({parse:e,stringify:t,transform:n,interrupt:r}=JSON)=>{const s=((e,t)=>async(n,r,[s,o,a,i,c])=>{c&&(Ce=s);try{const s=await n(...i);if(void 0!==s){const n=e(t?t(s):s);r.set(o,n),a[1]=n.length}}finally{c&&(Ce=""),a[0]=1,Fe(a,0)}})(t,n),o=de(),a=new Map,i=new Map;let c="",l=Je;if(Je&&r){const{handler:e,timeout:t=42}=r;l=(n,r,s)=>{for(;"timed-out"===(s=Je(n,r,0,t));)e();return s}}return Ae("message",(t=>{if(_e(t,c)){const[r,u,...p]=t.data;switch(u){case 0:{const t=!!Je;c=r,o.resolve({polyfill:$e,sync:t,transfer:De,proxy:Ue([c,e=>new Se(new Oe(e)),Pe,t,e,$e,je,n,t?(...e)=>({value:{then:t=>t(l(...e))}}):ze],a)});break}case 2:a.size?Le(s,i,a,p):setTimeout(Le,0,s,i,a,p);break;case 1:((e,[t,n])=>{const r=e.get(t);e.delete(t);for(let e=new Uint16Array(n.buffer),t=0,{length:s}=r;t<s;t++)e[t]=r.charCodeAt(t);Fe(n,0)})(i,p)}}})),o.promise},Ye=Object.fromEntries([f,"bigint","boolean",d,h,y,g,"string",w,m].map(((e,t)=>[e,t])));const Ke="destruct",{[A]:Xe}=Reflect,Ve=new Map(Xe(Symbol).filter((e=>typeof Symbol[e]===w)).map((e=>[Symbol[e],e]))),Ze=e=>Ve.get(e)||`.${Symbol.keyFor(e)||""}`,Qe="42fb1e9a-1373-441e-813f-357c3deaee87",et="M"+Qe,tt="W"+Qe,{[_]:nt}=Reflect;const rt={object(...e){return this.string(function(e){for(var t=e[0],n=1,r=arguments.length;n<r;n++)t+=arguments[n]+e[n];return t}(...e))},string(e){for(const t of e.split(/[\\r\\n]+/))if(t.trim().length){/^(\\s+)/.test(t)&&(e=e.replace(new RegExp("^"+RegExp.$1,"gm"),""));break}return e}},st=new WeakMap,ot=e=>{const t=e||console,n={buffered:it,stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>n.stderr(...e),stdout:(...e)=>n.stdout(...e),async get(e){const t=await e;return st.set(t,n),t}}},at=new TextDecoder,it=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(at.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},ct=(e,...t)=>rt[typeof e](e,...t),{isArray:lt}=Array,{assign:ut,create:pt,defineProperties:ft,defineProperty:dt,entries:ht}=Object,{all:yt,resolve:gt}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),wt=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,"")).href,mt=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},_t=e=>Function(`\'use strict\';return (${e})`)(),bt=e=>e.replace(/^(?:\\n|\\r\\n)/,""),Et=Symbol.for("polyscript.js_modules"),vt=new Map;dt(globalThis,Et,{value:vt}),new Proxy(vt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const Tt=(e,t)=>!t.startsWith("_"),xt=(e,t)=>new Proxy(e,{has:Tt,get:(e,n)=>e[t][n]}),kt=(e,t)=>import(e).then((e=>{vt.set(t,{...e})})),St=e=>new Promise(((t,n)=>{document.querySelector(`link[rel="stylesheet"][href="${e}"]`)?t():document.head.append(ut(document.createElement("link"),{rel:"stylesheet",href:e,onload:t,onerror:n}))})),Ot=e=>/\\.css$/i.test(new URL(e).pathname),At=(e,t)=>e.has(t),jt=e=>[...e.keys()];var Rt=(e,t,n,r)=>{const s=globalThis[Et];if(n)for(let[e,t]of ht(n)){let n=s.get(t);n&&!lt(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:At,ownKeys:jt,get:(e,s)=>{let o=e.get(s);if(lt(o)){let a=o;o=null;for(let e of a)e=wt(e,r),Ot(e)?n.importCSS(e):(n.importJS(e,s),o=t[Et].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const Pt=new Map,$t=e=>Pt.get(e),It=(e,t)=>{try{return Function("require",t)($t)}catch(t){st.get(e).stderr(t)}};var Nt={type:"dummy",module:()=>"data:application/javascript,",engine:e=>ot().get(e),registerJSModule(e,t,n){Pt.set(t,n)},run:It,runAsync:It,runEvent:async(e,t,n)=>{try{await Function("require","e",`return ${t}(e)`)($t,n)}catch(t){st.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const Mt=Object.getOwnPropertyDescriptors(Response.prototype),Ft=e=>"function"==typeof e,Wt={get:(e,t)=>Mt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!Ft(r)?e.then((e=>e[t])):(...n)=>e.then((e=>e[t](...n))))(e,t,Mt[t]):((e,t)=>Ft(t)?t.bind(e):t)(e,e[t])};var Ht=(e,...t)=>new Proxy(fetch(e,...t),Wt);Promise.withResolvers||(Promise.withResolvers=function(){var e,t,n=new this((function(n,r){e=n,t=r}));return{resolve:e,reject:t,promise:n}});const Dt=!globalThis.window,Ct=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):Bt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},Lt=e=>{const t=e.split("/");return t.pop(),t.join("/")},Bt=(e,t)=>{const n=[];for(const r of t.split("/"))"."!==r&&".."!==r&&(n.push(r),r&&e.mkdir(n.join("/")))},qt=(e,t)=>{const n=[];for(const e of t.split("/"))switch(e){case"":case".":break;case"..":n.pop();break;default:n.push(e)}return[e.cwd()].concat(n).join("/").replace(/^\\/+/,"/")},Ut=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},Jt=(e,t)=>Ht(wt(e,t)).arrayBuffer(),zt=(e,t,n,r)=>yt((e=>{for(const{files:t,to_file:n,from:r=""}of e){if(void 0!==t&&void 0!==n)throw new Error("Cannot use \'to_file\' and \'files\' parameters together!");if(void 0===t&&void 0===n&&r.endsWith("/"))throw new Error(`Couldn\'t determine the filename from the path ${r}, please supply \'to_file\' parameter.`)}return e.flatMap((({from:e="",to_folder:t=".",to_file:n,files:r})=>{if(lt(r))return r.map((n=>({url:Ut([e,n]),path:Ut([t,n])})));const s=n||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:Ut([t,s])}]}))})(n).map((({url:n,path:s})=>Jt(n,r).then((n=>e.writeFile(t,s,n)))))),Gt=(e,t)=>t.endsWith("/")?`${t}${e.split("/").pop()}`:t,Yt=(e,t)=>e.replace(/\\{.+?\\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),Kt=(e,t,n,r)=>yt((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of ht(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,Yt(o,t))}else{const e=Yt(s,t),a=Gt(e,Yt(o||"./",t));if(n.has(a))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>Jt(n,r).then((r=>e.writeFile(t,s,r,n)))))),Xt=({main:e,worker:t},n)=>{const r=[];if(t&&Dt)for(let[e,s]of ht(t))e=wt(e,n),r.push(kt(e,s));if(e&&!Dt)for(let[t,s]of ht(e))t=wt(t,n),Ot(t)?St(t):r.push(kt(t,s));return yt(r)},{assign:Vt}=Object,Zt="entries",Qt="readonly",en="readwrite",tn={durability:"default",prefix:"IDBMap"},nn=({target:{result:e}})=>e;class rn extends EventTarget{#e;#t;#n;async#r(e,t){const n=(await this.#e).transaction(Zt,t,this.#t);return new Promise(((t,r)=>Vt(e(n.objectStore(Zt)),{onsuccess:t,onerror:r})))}constructor(e,{durability:t=tn.durability,prefix:n=tn.prefix}=tn){super(),this.#n=n,this.#t={durability:t},this.#e=new Promise(((t,n)=>{Vt(indexedDB.open(`${this.#n}/${e}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(Zt),n.oncomplete=()=>t(e)},onsuccess(e){t(nn(e))},onerror(e){n(e),this.dispatchEvent(e)}})})).then((e=>{const t=this.dispatchEvent.bind(this);for(const n in e)n.startsWith("on")&&(e[n]=t);return e}))}dispatchEvent(e){const{type:t,message:n,isTrusted:r}=e;return super.dispatchEvent(r?Vt(new Event(t),{message:n}):e)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),Qt).then(nn)}async clear(){await this.#r((e=>e.clear()),en)}async delete(e){await this.#r((t=>t.delete(e)),en)}async entries(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e).then((t=>[e,t])))))}async forEach(e,t=this){for(const[n,r]of await this.entries())await e.call(t,r,n,this)}async get(e){return await this.#r((t=>t.get(e)),Qt).then(nn)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),Qt).then(nn)}async keys(){return await this.#r((e=>e.getAllKeys()),Qt).then(nn)}async set(e,t){return await this.#r((n=>n.put(t,e)),en),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class sn extends Map{#s;#o;constructor(...e){super(),this.#s=new rn(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async sync(){await this.#o}clear(){return this.#o=this.#o.then((()=>this.#s.clear())),super.clear()}delete(e){return this.#o=this.#o.then((()=>this.#s.delete(e))),super.delete(e)}set(e,t){return this.#o=this.#o.then((()=>this.#s.set(e,t))),super.set(e,t)}}const on=new WeakMap,an=(e,t,n)=>{"polyscript"===t&&(n.lazy_py_modules=async(...t)=>(await on.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new sn(e);return await t.sync(),t},n.JSON=p),e.registerJsModule(t,n)},cn=(e,t)=>{if(e.endsWith("/*")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return""},ln=(e,t,...n)=>{try{return e.runPython(ct(t),...n)}catch(t){st.get(e).stderr(t)}},un=async(e,t,...n)=>{try{return await e.runPythonAsync(ct(t),...n)}catch(t){st.get(e).stderr(t)}},pn=async(e,t,n)=>{const[r,...s]=t.split(".");let o,a=e.globals.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){st.get(e).stderr(t)}};var fn=(new TextEncoder).encode(\'from uio import StringIO\\nimport sys\\n\\nclass Response:\\n def __init__(self, f):\\n self.raw = f\\n self.encoding = "utf-8"\\n self._cached = None\\n\\n def close(self):\\n if self.raw:\\n self.raw.close()\\n self.raw = None\\n self._cached = None\\n\\n @property\\n def content(self):\\n if self._cached is None:\\n try:\\n self._cached = self.raw.read()\\n finally:\\n self.raw.close()\\n self.raw = None\\n return self._cached\\n\\n @property\\n def text(self):\\n return str(self.content, self.encoding)\\n\\n def json(self):\\n import ujson\\n\\n return ujson.loads(self.content)\\n\\n\\n# TODO try to support streaming xhr requests, a-la pyodide-http\\nHEADERS_TO_IGNORE = ("user-agent",)\\n\\n\\ntry:\\n import js\\nexcept Exception as err:\\n raise OSError("This version of urequests can only be used in the browser")\\n\\n# TODO try to support streaming xhr requests, a-la pyodide-http\\n\\nHEADERS_TO_IGNORE = ("user-agent",)\\n\\n\\ndef request(\\n method,\\n url,\\n data=None,\\n json=None,\\n headers={},\\n stream=None,\\n auth=None,\\n timeout=None,\\n parse_headers=True,\\n):\\n from js import XMLHttpRequest\\n\\n xhr = XMLHttpRequest.new()\\n xhr.withCredentials = False\\n\\n if auth is not None:\\n import ubinascii\\n\\n username, password = auth\\n xhr.open(method, url, False, username, password)\\n else:\\n xhr.open(method, url, False)\\n\\n for name, value in headers.items():\\n if name.lower() not in HEADERS_TO_IGNORE:\\n xhr.setRequestHeader(name, value)\\n\\n if timeout:\\n xhr.timeout = int(timeout * 1000)\\n\\n if json is not None:\\n assert data is None\\n import ujson\\n\\n data = ujson.dumps(json)\\n # s.write(b"Content-Type: application/json\\\\r\\\\n")\\n xhr.setRequestHeader("Content-Type", "application/json")\\n\\n xhr.send(data)\\n\\n # Emulates the construction process in the original urequests\\n resp = Response(StringIO(xhr.responseText))\\n resp.status_code = xhr.status\\n resp.reason = xhr.statusText\\n resp.headers = xhr.getAllResponseHeaders()\\n\\n return resp\\n\\n\\n# Other methods - head, post, put, patch, delete - are not used by\\n# mip and therefore not included\\n\\n\\ndef get(url, **kw):\\n return request("GET", url, **kw)\\n\\n\\n# Content below this line is from the Micropython MIP package and is covered\\n# by the applicable MIT license:\\n# \\n# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING \\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER \\n# DEALINGS IN THE SOFTWARE.\\n\\n# MicroPython package installer\\n# MIT license; Copyright (c) 2022 Jim Mussared\\n\\n\\n_PACKAGE_INDEX = const("https://micropython.org/pi/v2")\\n_CHUNK_SIZE = 128\\n\\n\\n# This implements os.makedirs(os.dirname(path))\\ndef _ensure_path_exists(path):\\n import os\\n\\n split = path.split("/")\\n\\n # Handle paths starting with "/".\\n if not split[0]:\\n split.pop(0)\\n split[0] = "/" + split[0]\\n\\n prefix = ""\\n for i in range(len(split) - 1):\\n prefix += split[i]\\n try:\\n os.stat(prefix)\\n except:\\n os.mkdir(prefix)\\n prefix += "/"\\n\\n\\n# Copy from src (stream) to dest (function-taking-bytes)\\ndef _chunk(src, dest):\\n buf = memoryview(bytearray(_CHUNK_SIZE))\\n while True:\\n n = src.readinto(buf)\\n if n == 0:\\n break\\n dest(buf if n == _CHUNK_SIZE else buf[:n])\\n\\n\\n# Check if the specified path exists and matches the hash.\\ndef _check_exists(path, short_hash):\\n import os\\n\\n try:\\n import binascii\\n import hashlib\\n\\n with open(path, "rb") as f:\\n hs256 = hashlib.sha256()\\n _chunk(f, hs256.update)\\n existing_hash = str(binascii.hexlify(hs256.digest())[: len(short_hash)], "utf-8")\\n return existing_hash == short_hash\\n except:\\n return False\\n\\n\\ndef _rewrite_url(url, branch=None):\\n if not branch:\\n branch = "HEAD"\\n if url.startswith("github:"):\\n url = url[7:].split("/")\\n url = (\\n "https://raw.githubusercontent.com/"\\n + url[0]\\n + "/"\\n + url[1]\\n + "/"\\n + branch\\n + "/"\\n + "/".join(url[2:])\\n )\\n return url\\n\\n\\ndef _download_file(url, dest):\\n response = get(url)\\n try:\\n if response.status_code != 200:\\n print("Error", response.status_code, "requesting", url)\\n return False\\n\\n print("Copying:", dest)\\n _ensure_path_exists(dest)\\n with open(dest, "wb") as f:\\n _chunk(response.raw, f.write)\\n\\n return True\\n finally:\\n response.close()\\n\\n\\ndef _install_json(package_json_url, index, target, version, mpy):\\n response = get(_rewrite_url(package_json_url, version))\\n try:\\n if response.status_code != 200:\\n print("Package not found:", package_json_url)\\n return False\\n\\n package_json = response.json()\\n finally:\\n response.close()\\n for target_path, short_hash in package_json.get("hashes", ()):\\n fs_target_path = target + "/" + target_path\\n if _check_exists(fs_target_path, short_hash):\\n print("Exists:", fs_target_path)\\n else:\\n file_url = "{}/file/{}/{}".format(index, short_hash[:2], short_hash)\\n if not _download_file(file_url, fs_target_path):\\n print("File not found: {} {}".format(target_path, short_hash))\\n return False\\n for target_path, url in package_json.get("urls", ()):\\n fs_target_path = target + "/" + target_path\\n if not _download_file(_rewrite_url(url, version), fs_target_path):\\n print("File not found: {} {}".format(target_path, url))\\n return False\\n for dep, dep_version in package_json.get("deps", ()):\\n if not _install_package(dep, index, target, dep_version, mpy):\\n return False\\n return True\\n\\n\\ndef _install_package(package, index, target, version, mpy):\\n if (\\n package.startswith("http://")\\n or package.startswith("https://")\\n or package.startswith("github:")\\n ):\\n if package.endswith(".py") or package.endswith(".mpy"):\\n print("Downloading {} to {}".format(package, target))\\n return _download_file(\\n _rewrite_url(package, version), target + "/" + package.rsplit("/")[-1]\\n )\\n else:\\n if not package.endswith(".json"):\\n if not package.endswith("/"):\\n package += "/"\\n package += "package.json"\\n print("Installing {} to {}".format(package, target))\\n else:\\n if not version:\\n version = "latest"\\n print("Installing {} ({}) from {} to {}".format(package, version, index, target))\\n\\n mpy_version = (\\n sys.implementation._mpy & 0xFF if mpy and hasattr(sys.implementation, "_mpy") else "py"\\n )\\n\\n # WARNING: mpy_version fails miserably with 1.22.0-380\\n package = "{}/package/{}/{}/{}.json".format(index, "py", package, version)\\n\\n return _install_json(package, index, target, version, mpy)\\n\\n\\ndef install(package, index=None, target=None, version=None, mpy=True):\\n if not target:\\n for p in sys.path:\\n if p.endswith("/lib"):\\n target = p\\n break\\n else:\\n print("Unable to find lib dir in sys.path")\\n return\\n\\n if not index:\\n index = _PACKAGE_INDEX\\n\\n if _install_package(package, index.rstrip("/"), target, version, mpy):\\n print("Done")\\n else:\\n print("Package may be partially installed")\\n\');const dn=async e=>(await import("./toml-DiUM0_qs.js")).parse(e),hn=(e,t)=>{try{e.mkdir(t)}catch(e){}};var yn={type:"micropython",module:(e="1.24.0-preview-114")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,n,r){const{stderr:s,stdout:o,get:a}=ot({stderr:it(console.error),stdout:it(console.log)});n=n.replace(/\\.m?js$/,".wasm");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=gn.bind(this,i,r);return on.set(i,c),t.files&&await Kt(this,i,t.files,r),t.fetch&&await zt(this,i,t.fetch,r),t.js_modules&&await Xt(t.js_modules,r),this.writeFile(i,"./mip.py",fn),t.packages&&await c(t.packages),i},registerJSModule:an,run:ln,runAsync:un,runEvent:pn,transform:(e,t)=>e.PyProxy.toJs(t),writeFile:(e,t,n,r)=>{const{FS:s,_module:{PATH:o,PATH_FS:a}}=e,i={FS:s,PATH:o,PATH_FS:a},c=cn(t,r);if(c){const r=t.slice(0,-1);switch("./"!==r&&s.mkdir(r),c){case"whl":case"zip":{const e=new Blob([n],{type:"application/zip"});return import("./zip-gl8b5xR3.js").then((async({BlobReader:t,Uint8ArrayWriter:n,ZipReader:a})=>{const i=new a(new t(e));for(const e of await i.getEntries()){const{directory:t,filename:a}=e,i=r+a;if(t)hn(s,i);else{hn(s,o.dirname(i));const t=await e.getData(new n);s.writeFile(i,t,{canOwn:!0})}}i.close()}))}case"tgz":case"tar.gz":{const t="./_.tar.gz";return Ct(i,t,n),void e.runPython(`\\n import os, gzip, tarfile\\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open("${t}", "rb")))\\n for f in tar:\\n name = f"${r}{f.name}"\\n if f.type == tarfile.DIRTYPE:\\n if f.name != "./":\\n os.mkdir(name.strip("/"))\\n else:\\n dir = os.path.dirname(name)\\n if not os.path.exists(dir):\\n os.mkdir(dir)\\n source = tar.extractfile(f)\\n with open(name, "wb") as dest:\\n dest.write(source.read())\\n dest.close()\\n tar.close()\\n os.remove("${t}")\\n `)}}}return Ct(i,t,n)}};async function gn(e,t,n){let r;for(const s of n)if(s.endsWith(".whl")){const n=wt(s,t),r=await Ht(n).arrayBuffer();await this.writeFile(e,"./*",r,n)}else r||(r=e.pyimport("mip")),r.install(s)}const wn={dict_converter:Object.fromEntries};let mn=!1;const _n=e=>(...t)=>{try{return mn=!0,e(...t)}finally{mn=!1}};let bn=!1;const En=()=>{if(bn)return;bn=!0;const e=new WeakMap,t=e=>e.destroy(),n=n=>{for(let r=0;r<n.length;r++){const s=n[r];if("function"==typeof s&&"copy"in s){mn=!1;let o=e.get(s)?.deref();if(!o)try{o=F(s.copy(),t),e.set(s,new WeakRef(o))}catch(e){console.error(e)}o&&(n[r]=o),mn=!0}}},{call:r}=Function,s=r.bind(r,r.apply);Object.defineProperties(Function.prototype,{apply:{value(e,t){return mn&&n(t),s(this,e,t)}},call:{value(e,...t){return mn&&n(t),s(this,e,t)}}})};var vn={type:"pyodide",module:(e="0.26.1")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){Dt||"auto"!==t.experimental_create_proxy||En();const{stderr:s,stdout:o,get:a}=ot(),i=n.slice(0,n.lastIndexOf("/")),c=await a(e({stderr:s,stdout:o,indexURL:i})),l=Tn.bind(c);return on.set(c,l),t.files&&await Kt(this,c,t.files,r),t.fetch&&await zt(this,c,t.fetch,r),t.js_modules&&await Xt(t.js_modules,r),t.packages&&await l(t.packages),c},registerJSModule:an,run:_n(ln),runAsync:_n(un),runEvent:_n(pn),transform:({ffi:{PyProxy:e}},t)=>t instanceof e?t.toJs(wn):t,writeFile:(e,t,n,r)=>{const s=cn(t,r);if(s)return e.unpackArchive(n,s,{extractDir:t.slice(0,-1)});const{FS:o,PATH:a,_module:{PATH_FS:i}}=e;return Ct({FS:o,PATH:a,PATH_FS:i},t,n)}};async function Tn(e){await this.loadPackage("micropip");const t=this.pyimport("micropip");await t.install(e,{keep_going:!0}),t.destroy()}const xn="ruby-wasm-wasi",kn=xn.replace(/\\W+/g,"_");var Sn={type:xn,experimental:!0,module:(e="2.6.2")=>`https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${e}/dist/browser/+esm`,async engine({DefaultRubyVM:e},t,n,r){n=n.replace(/\\/browser\\/\\+esm$/,"/ruby.wasm");const s=await Ht(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await Kt(this,a,t.files,r),t.fetch&&await zt(this,a,t.fetch,r),t.js_modules&&await Xt(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,"__");const r=`__module_${kn}_${t}`;globalThis[r]=n,this.run(e,`require "js";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(ct(t),...n),runAsync:(e,t,...n)=>e.evalAsync(ct(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${kn}_event`;globalThis[r]=n,this.run(e,`require "js";$xworker.call("${t}",JS.global[:${r}])`),delete globalThis[r]}else{const r=this.run(e,`method(:${t})`);await r.call(t,e.wrap(n))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${xn}`)}};var On={type:"wasmoon",module:(e="1.16.0")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},n,r,s){const{stderr:o,stdout:a,get:i}=ot(),c=await i((new e).createEngine());return c.global.getTable(t.Base,(e=>{c.global.setField(e,"print",a),c.global.setField(e,"printErr",o)})),n.files&&await Kt(this,c,n.files,s),n.fetch&&await zt(this,c,n.fetch,s),n.js_modules&&await Xt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(ct(t),...n)}catch(t){st.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(ct(t),...n)}catch(t){st.get(e).stderr(t)}},runEvent:async(e,t,n)=>{const[r,...s]=t.split(".");let o,a=e.global.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){st.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(Bt(e,Lt(t)),t=qt(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const An=new WeakMap,jn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=An.get(e),{output:o,result:a}=await n.captureR(ct(t));for(const{type:e,data:t}of o)s[e](t);return F(a,r,{token:!1})};var Rn={type:"webr",experimental:!0,module:(e="0.4.0")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=ot(),o=new e.WebR;await s(o.init().then((()=>o)));const a=await new o.Shelter;return An.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:st.get(o)}),t.files&&await Kt(this,o,t.files,r),t.fetch&&await zt(this,o,t.fetch,r),t.js_modules&&await Xt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:jn,runAsync:jn,async runEvent(e,t,n){await e.evalRVoid(`${t}(event)`,{env:{event:{type:[n.type]}}})},transform:(e,t)=>(console.log("transforming",t),t),writeFile:()=>{}};const Pn=new Map,$n=new Map,In=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split("@"),s=Pn.get(n),o=/^(?:\\.?\\.?\\/|https?:\\/\\/)/i.test(r)?r.join("@"):s.module(...r);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:n,module:r,engine:s}=e.get(t);return(e,o)=>r.then((r=>($n.set(t,e),s(r,e,n,o))))}}),Nn=e=>{for(const t of[].concat(e.type))Pn.set(t,e)};for(const e of[Nt,yn,vn,Sn,On,Rn])Nn(e);const{parse:Mn}=JSON,Fn=e=>{try{return Mn(e)}catch(t){return dn(e)}},Wn=(e,t,n,r={})=>{if(t){const[e,s]=((e,t="./config.txt")=>{let n=typeof e;return"string"===n&&/\\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[wt(e),n]})(t,n);"json"===s?r=Ht(e).json():"toml"===s?r=Ht(e).text().then(dn):"string"===s?r=Fn(t):"object"===s&&t?r=t:"txt"===s&&"string"==typeof r&&(r=Fn(r)),t=e}return gt(r).then((n=>In[e](n,t)))},Hn="BeforeRun",Dn="AfterRun",Cn=[`code${Hn}`,`code${Hn}Async`,`code${Dn}`,`code${Dn}Async`],Ln=["onWorker","onReady",`on${Hn}`,`on${Hn}Async`,`on${Dn}`,`on${Dn}Async`];function Bn(e,t){const{run:n,runAsync:r}=Pn.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const qn=(e,t,n,r,s,o)=>{if(s||o){const a=Bn.bind(e,t),i=r?"runAsync":"run",c=e[i];e[i]=r?async function(e,t,...r){s&&await s.call(this,a(e),n);const i=await c.call(this,e,t,...r);return o&&await o.call(this,a(e),n),i}:function(e,t,...r){s&&s.call(this,a(e),n);const i=c.call(this,e,t,...r);return o&&o.call(this,a(e),n),i}}};let Un,Jn,zn;const Gn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Un,Jn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{parse:Yn,stringify:Kn}=p,{proxy:Xn,sync:Vn,polyfill:Zn,window:Qn,isWindowProxy:er}=await(async e=>{const t=await Ge(e),n=e?.transform||(e=>e),{[et]:r}=t.proxy,s=new Map,o=(e,t)=>{let n=s.get(e)?.deref();return n||s.set(e,new WeakRef(n=t(e))),n},a=([e,t])=>{switch(e){case Ye[g]:return null==t?globalThis:typeof t===y?o(t,p.object):t;case Ye[f]:return typeof t===y?o(t,p.array):t;case Ye[d]:return typeof t===y?o(t,p.function):te(parseInt(t));case Ye[w]:return(e=>{if(e.startsWith("."))return Symbol.for(e.slice(1));for(const[t,n]of Ve)if(n===e)return t})(t);default:return t}},i=e=>{let[t,r]=m(e);switch(t){case g:if(r==globalThis||null==r)r=null;else if(typeof r===g&&!(r instanceof ue)){r=n(r);for(const e in r)r[e]=i(r[e])}return[Ye[g],r];case f:return[Ye[f],typeof r===y?r:n(r).map(i)];case d:return[Ye[d],typeof r===d?String(ne(n(r))):r];case w:return[Ye[w],Ze(e)];default:return[Ye[t],r]}},c=(...e)=>a(r(...e)),l={[E]:(e,t,n)=>c(E,e,i(t),i(n)),[v]:(e,t)=>c(v,e,i(t)),[T]:(e,t)=>c(T,e,i(t)),[k]:e=>c(k,e),[x]:(e,t)=>{const n=c(x,e,i(t));if(n){const{get:e,set:t,value:r}=n;e&&(n.get=a(e)),t&&(n.set=a(t)),r&&(n.value=a(r))}return n},[S]:(e,t)=>c(S,e,i(t)),[O]:e=>c(O,e),[A]:e=>c(A,e).map(a),[j]:e=>c(j,e),[R]:(e,t,n)=>c(R,e,i(t),i(n)),[P]:(e,t)=>c(P,e,i(t)),[Ke](e){s.delete(e),r(Ke,e)}},u={object:l,array:l,function:{...l,[_]:(e,...t)=>c(_,e,...t.map(i)),[b]:(e,...t)=>c(b,e,...t.map(i))}},{proxy:p,isProxy:h,pair:m}=V(u),$=p.object(null);return t.proxy[tt]=(e,t,...n)=>{const r=parseInt(t);switch(e){case _:{const[e,t]=n;return i(nt(te(r),a(e),t.map(a)))}case Ke:(e=>{const[t,n]=typeof e===y?[ee,Q]:[Q,ee],r=t.has(e);r&&(n.delete(t.get(e)),t.delete(e))})(r)}},{...t,window:$,isWindowProxy:h}})({parse:Yn,stringify:Kn,transform:e=>zn?zn(e):e}),tr={polyfill:Zn,sync:Xn,window:Vn?Qn:null,isWindowProxy:er,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Gn("message",(({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Un=(async()=>{try{const{id:o,tag:a,type:i,custom:c,version:l,config:u,async:p}=e,f=((e,t="")=>`${e}@${t}`.replace(/@$/,""))(i,l),d=await Wn(f,t,n,u),{js_modules:h}=$n.get(f),y=h?.main,g=pt(Pn.get(i)),w=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:st.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(g,c||i,u||{},d);let m="run";if(p&&(m+="Async"),s){let e,t,n="",r="";for(const e of Cn){const t=s[e];if(t){const s=e.endsWith("Async");(s&&p||!s&&!p)&&(e.startsWith("codeBefore")?n=t:r=t)}}(n||r)&&((e,t,n,r)=>{const s=e[t].bind(e);e[t]="run"===t?(e,t,...o)=>{n&&s(e,n,...o);const a=s(e,bt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,bt(t),...o);return r&&await s(e,r,...o),a}})(g,m,n,r);for(const n of Ln.slice(2)){const r=s[n];if(r){const s=n.endsWith("Async");if(s&&p||!s&&!p){const s=_t(r);n.startsWith("onBefore")?e=s:t=s}}}qn(g,w,tr,p,e,t)}let _,b,E,v=null,T="";Vn&&(({CustomEvent:_,document:b}=Qn),v=o&&b.getElementById(o)||null,E=e=>mt(v,c||i,e,!0,_));const x=Rt(Qn,Xn,y,t);if(((e,t,n,r)=>{if("pyodide"===e)return;const s="polyscript.js_modules";for(const e of Reflect.ownKeys(r))t.registerJSModule(n,`${s}.${e}`,xt(r,e));t.registerJSModule(n,s,r)})(i,g,d,x),g.registerJSModule(d,"polyscript",{xworker:tr,currentScript:v,config:w.config,js_modules:x,get target(){return!T&&v&&("SCRIPT"===a?v.after(ut(b.createElement(`script-${c||i}`),{id:T=`${o}-target`})):(T=o,v.replaceChildren(),v.style.display="block")),T}}),Jn=g.runEvent.bind(g,d),zn=g.transform.bind(g,d),v&&E("ready"),s?.onReady&&_t(s?.onReady).call(g,Bn.call(g,w,d),tr),await g[m](d,r),["micropython","pyodide"].includes(g.type)){const e="polyscript",t=`__${e}_workers__`,n="__export__";d.runPython([`import js as ${t}`,`${t}.${t} = "${n}" in locals() and ${n} or []`,`del ${t}`].join("\\n"));const r=[...globalThis[t]];delete globalThis[t],r.length&&d.runPython([`from ${e} import xworker as ${t}`,...r.map((e=>`${t}.sync.${e} = ${e}`)),`del ${t}`].join("\\n"))}return v&&E("done"),postMessage("polyscript:done"),d}catch(e){postMessage(e)}})(),Gn("error"),Gn("message"),Gn("messageerror")}));\n'.replace(Me,Ne)],{type:"application/javascript"})),...e))({serviceWorker:n?.serviceWorker||n?.service_worker}),{postMessage:a}=s,i=this instanceof Pn,c=Ze(s.proxy,{importJS:_t,importCSS:bt}),l=Promise.withResolvers();let u=o(t).text().then((e=>{const t=i?this.toJSON():void 0;a.call(s,{options:n,config:r,code:e,hooks:t})})).then((()=>{u={then:e=>e()}}));return tt(s,{sync:{value:c},ready:{value:l.promise},postMessage:{value:(e,...t)=>u.then((()=>a.call(s,e,...t)))},onerror:{writable:!0,configurable:!0,value:console.error}}),s.addEventListener("message",(e=>{const{data:t}=e,n=t instanceof Error;(n||"polyscript:done"===t)&&(e.stopImmediatePropagation(),n?(l.reject(t),s.onerror(et(e,{type:{value:"error"},error:{value:t}}))):l.resolve(s))})),i&&this.onWorker?.(this.interpreter,s),s};const Mn="Invalid content",Nn="Invalid worker attribute",Fn="Invalid worker attribute";var Wn=e=>{const{src:t,worker:n}=e.attributes;if(n){let{value:r}=n;if(r)throw new SyntaxError(Fn);if(r=t?.value,!r){if(t)throw new SyntaxError(Nn);if(e.childElementCount){const{innerHTML:t,localName:n,type:s}=e,o=s||n.replace(/-script$/,"");r=Ve(t),console.warn(`Deprecated: use <script type="${o}"> for an always safe content parsing:\n`,r)}else r=e.textContent;return URL.createObjectURL(new Blob([Xe(r)],{type:"text/plain"}))}return r}if(t&&e.textContent.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*(?:\/\/|#).*/gm,"").trim())throw new SyntaxError(Mn)};const Hn=(e,t)=>{const n=(e=>{let t=e;for(;t.parentNode;)t=t.parentNode;return t})(e);return n.getElementById(t)||((e,t=document)=>t.querySelector(e))(t,n)},Dn=new WeakMap,Ln={get(){let e=Dn.get(this);return e||(e=document.createElement(`${this.type}-script`),Dn.set(this,e),Jn(this)),e},set(e){"string"==typeof e?Dn.set(this,Hn(this,e)):(Dn.set(this,e),Jn(this))}},Cn=new WeakMap,Un=new Map,Bn=(e,t)=>{const n=e?.value;return n?t+n:""},qn=(e,t,n,r,s,o,a=e)=>{if(!Un.has(t)){const i={interpreter:kn(n,s,o),queue:ot(),XWorker:In(e,r)};Un.set(t,i),Un.has(e)||Un.set(e,i),Un.has(a)||Un.set(a,i)}return Un.get(t)},Jn=async e=>{if(Cn.has(e)){const{target:t}=e;t&&(e.closest("head")?document.body.append(t):e.after(t))}else{const{attributes:{async:t,config:n,env:r,name:s,target:i,version:l,"service-worker":u},src:p,type:f}=e,h=l?.value,d=xn(f,h);let g=Bn(n,"|");const y=Bn(r,"")||`${d}${g}`;g=g.slice(1);const w=Wn(e);if(w){const n=new(In(f,h))(w,{...ct(e,f),async:!!t,config:g,serviceWorker:u?.value});Cn.set(nt(e,"xworker",{value:n}),{xworker:n});const r=s?.value;return void(r&&a[r].resolve(n.ready))}const m=Bn(i,""),_=qn(f,y,d,h,g);Cn.set(nt(e,"target",Ln),_),m&&Dn.set(e,Hn(e,m));const b=p?o(p).text():e.textContent;_.queue=_.queue.then((()=>(async(e,t,n,r)=>{const{type:s}=e,o=dn.get(s);o.experimental&&console.warn(`The ${s} interpreter is experimental`);const[a,i]=await st([Cn.get(e).interpreter,t]);try{nt(document,"currentScript",{configurable:!0,get:()=>e}),mt(s,o,a,gt),o.registerJSModule(a,"polyscript",{XWorker:n,currentScript:e,js_modules:gt,workers:c}),lt(e,s,"ready");const t=o[r?"runAsync":"run"](a,i),l=lt.bind(null,e,s,"done");return r?t.then(l):l(),t}finally{delete document.currentScript}})(e,b,_.XWorker,!!t)))}},zn=new Proxy(et(null),{get:(e,t)=>new Promise(queueMicrotask).then((()=>Gn(t)))}),Gn=async e=>{if(Un.has(e)){const{interpreter:t,queue:n}=Un.get(e);return(await st([t,n]))[0]}const t=Un.size?`Available interpreters are: ${[...Un.keys()].map((e=>`"${e}"`)).join(", ")}.`:"There are no interpreters in this page.";throw new Error(`The interpreter "${e}" was not found. ${t}`)},Yn=async e=>{const{type:n,currentTarget:r}=e;if(wn.length)for(let{name:s,value:o,ownerElement:a}of t(`./@*[${wn.map((e=>`name()="${e}${n}"`)).join(" or ")}]`,r)){s=s.slice(0,-(n.length+1));const t=await Gn(a.getAttribute(`${s}-env`)||s);dn.get(s).runEvent(t,o,e)}},Kn=e=>{if(wn.length)for(let{name:n,ownerElement:r}of t(`.//@*[${wn.map((e=>`starts-with(name(),"${e}")`)).join(" or ")}]`,e)){const e=n.lastIndexOf("-"),t=n.slice(e+1);"env"!==t&&(r.addEventListener(t,Yn),"disabled"in r&&!r.disabled&&(r.disabled=!0,zn[n.slice(0,e)].then((()=>{r.disabled=!1}))))}},Xn=In(),Vn=[],Qn=new Map,Zn=new Map,er=new Map,tr=async e=>{for(const t of Vn)if(e.matches(t)){const n=Zn.get(t),r=nr.get(n),{resolve:s}=er.get(n),{options:o,known:i}=r;if(i.has(e))return;i.add(e);for(const[t,n]of Qn)e.matches(t)&&await n(e);const{interpreter:l,configURL:u,config:p,version:f,env:h,onerror:d,hooks:g}=o;let y;try{const t=Wn(e);if(t){const r=Xn.call(new Pn(null,g),t,{...ct(e,n),version:f,configURL:u,type:l,custom:n,config:e.getAttribute("config")||p||{},async:e.hasAttribute("async"),serviceWorker:e.getAttribute("service-worker")});nt(e,"xworker",{value:r}),s({type:n,xworker:r});const o=e.getAttribute("name");return void(o&&a[o].resolve(r.ready))}}catch(e){y=e}const w=xn(l,f),m=h||`${w}${p?`|${p}`:""}`,{interpreter:_,XWorker:b}=qn(n,m,w,f,p,u,l),v=await _,E=et(dn.get(l)),k=new Pn(v,g),x=function(...e){return b.apply(k,e)},T={...ut(E,n,structuredClone(gn.get(w)),v),XWorker:x};mt(l,E,v,gt),E.registerJSModule(v,"polyscript",{XWorker:x,config:T.config,currentScript:n.startsWith("_")?null:e,js_modules:gt,workers:c});for(const t of["Run","RunAsync"]){let n,r,s="",o="";for(const e of jn){const n=g?.main?.[e];n&&e.endsWith(t)&&(e.startsWith("codeBefore")?s=Xe(n()):o=Xe(n()))}(s||o)&&ft(E,`r${t.slice(1)}`,s,o);for(let e=2;e<On.length;e++){const s=On[e],o=g?.main?.[s];o&&s.endsWith(t)&&(s.startsWith("onBefore")?n=o:r=o)}$n(E,T,e,t.endsWith("Async"),n,r)}r.queue=r.queue.then((()=>(s(T),y&&d?.(y,e),g?.main?.onReady?.(T,e))))}},nr=new Map;let rr=0;const sr=e=>(er.has(e)||er.set(e,Promise.withResolvers()),er.get(e).promise),[{customObserver:or,define:ar,whenDefined:ir,env:cr,Hook:lr,XWorker:ur},pr]=((e,t,n=globalThis)=>{const r=Symbol.for(e),s=r in n;return[s?n[r]:Object.defineProperty(n,r,{value:t})[r],s]})("polyscript",{customObserver:Qn,define:(t,n)=>{let r=null==t;if(r)t="_ps"+rr++;else if(dn.has(t)||nr.has(t))throw new Error(`<script type="${t}"> already registered`);if(!dn.has(n?.interpreter))throw new Error("Unspecified interpreter");dn.set(t,dn.get(n.interpreter));const s=[`script[type="${t}"]`];if(sr(t),r){const{hooks:e}=n,r=e?.main?.onReady;n={...n,hooks:{...e,main:{...e?.main,onReady(e,n){Vn.splice(Vn.indexOf(t),1),dn.delete(t),nr.delete(t),er.delete(t),n.remove(),r?.(e)}}}},document.head.append(Ze(document.createElement("script"),{type:t}))}else s.push(`${t}-script`),wn.push(`${t}-`);for(const e of s)Zn.set(e,t);Vn.push(...s),nr.set(t,{options:Ze({env:t},n),known:new WeakSet,queue:Promise.resolve()}),r||Kn(document),e(s.join(",")).forEach(tr)},whenDefined:sr,env:zn,Hook:Pn,XWorker:Xn});if(!pr){const t=new MutationObserver((e=>{const t=yn.join(",");for(const{type:r,target:s,attributeName:o,addedNodes:a}of e)if("attributes"!==r)for(const e of a)1===e.nodeType&&(Kn(e),t&&e.matches(t)?Jn(e):n(t,e,!0));else{const e=o.lastIndexOf("-")+1;if(e){const t=o.slice(0,e);for(const n of wn)if(t===n){const t=o.slice(e);if("env"!==t){const e=s.hasAttribute(o)?"add":"remove";s[`${e}EventListener`](t,Yn)}break}}}})),n=(t,n,r)=>{t&&e(t,n).forEach(Jn),(t=Vn.join(","))&&(r&&tr(n),e(t,n).forEach(tr))},r=e=>(t.observe(e,{childList:!0,subtree:!0,attributes:!0}),e),{attachShadow:s}=Element.prototype;Ze(Element.prototype,{attachShadow(e){return r(s.call(this,e))}}),queueMicrotask((()=>{Kn(r(document)),n(yn.join(","),document,!1)}))}export{lr as Hook,Mn as INVALID_CONTENT,Nn as INVALID_SRC_ATTR,Fn as INVALID_WORKER_ATTR,ur as XWorker,or as customObserver,ar as define,cr as env,ir as whenDefined};
//# sourceMappingURL=index.js.map