polyscript
Advanced tools
Comparing version
@@ -1,2 +0,2 @@ | ||
import * as FLATTED from '@webreflection/coincident/flatted'; | ||
import * as FLATTED from 'coincident/flatted'; | ||
const JSON = { parse: FLATTED.decode, stringify: FLATTED.encode }; | ||
@@ -3,0 +3,0 @@ |
@@ -30,3 +30,3 @@ import fetch from '@webreflection/fetch'; | ||
type, | ||
module: (version = '1.24.1') => | ||
module: (version = '1.25.0') => | ||
`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${version}/micropython.mjs`, | ||
@@ -33,0 +33,0 @@ async engine({ loadMicroPython }, config, url, baseURL) { |
@@ -10,4 +10,4 @@ // ⚠️ This file is used to generate xworker.js | ||
import { decoder } from '@webreflection/coincident/flatted/decoder'; | ||
import coincident from '@webreflection/coincident/window/worker'; | ||
import { decoder } from 'coincident/flatted/decoder'; | ||
import coincident from 'coincident/window/worker'; | ||
@@ -44,2 +44,3 @@ import { assign, create, createFunction, createOverload, createResolved, dispatch, registerJSModules } from '../utils.js'; | ||
decoder, | ||
transfer: false, | ||
transform: value => transform ? transform(value) : value | ||
@@ -46,0 +47,0 @@ }); |
@@ -5,6 +5,6 @@ /* c8 ignore start */ | ||
const place = (_,q,f) => `import(${q}${new URL(f,url).href}${q})`; | ||
import { encoder } from '@webreflection/coincident/flatted/encoder'; | ||
import coincident from '@webreflection/coincident/window/main'; | ||
const { Worker } = coincident({ encoder }); | ||
export default (...args) => new Worker(URL.createObjectURL(new Blob(["const{assign:e}=Object,t=\"entries\",n=\"readonly\",r=\"readwrite\",s={durability:\"default\",prefix:\"IDBMap\"},o=({target:{result:e}})=>e;class a extends EventTarget{#e;#t;#n;async#r(n,r){const s=(await this.#e).transaction(t,r,this.#t);return new Promise(((r,o)=>e(n(s.objectStore(t)),{onsuccess:r,onerror:o})))}constructor(n,{durability:r=s.durability,prefix:a=s.prefix}=s){super(),this.#n=a,this.#t={durability:r},this.#e=new Promise(((r,s)=>{e(indexedDB.open(`${this.#n}/${n}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(t),n.oncomplete=()=>r(e)},onsuccess(e){r(o(e))},onerror(e){s(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(t){const{type:n,message:r,isTrusted:s}=t;return super.dispatchEvent(s?e(new Event(n),{message:r}):t)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),n).then(o)}async clear(){await this.#r((e=>e.clear()),r)}async delete(e){await this.#r((t=>t.delete(e)),r)}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)),n).then(o)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),n).then(o)}async keys(){return await this.#r((e=>e.getAllKeys()),n).then(o)}async set(e,t){return await this.#r((n=>n.put(t,e)),r),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class i extends Map{#s;#o;constructor(...e){super(),this.#s=new a(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async close(){await this.#o,await this.#s.close()}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)}}let c=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),c+=crypto.randomUUID()}catch(An){c+=Math.random().toString(36).substring(2)}const{fromCharCode:l}=String,{min:u}=Math;const{defineProperty:p}=Object,d=e=>{switch(e[y++]){case 1:{const t=e[y++],n=[];e[y-2]=n;for(let r=0;r<t;r++)n[r]=d(e);return n}case 2:{const t=e[y++],n={};e[y-2]=n;for(let r=0;r<t;r++)n[d(e)]=d(e);return n}case 4:{const t=e[y++];return e[y-2]=t,t}case 0:return e[e[y++]];case 3:return e[y++];case 12:return BigInt(e[y++]);case 5:return!0;case 6:return!1;case 7:return null;case 13:return;case 8:{const t=e[y++],n=e[y++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[y-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[y++];return s}case 9:{const t=e[y++],n=e[y++],r=e[y++],s=[d(e),n];r&&s.push(r);const o=new globalThis[t](...s);return e[y-4]=o,o}case 10:return(t=e[y++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case 11:{const t=new Date(e[y++]);return e[y-2]=t,t}case 14:{const t=e[y++],n=new Map;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e),r=d(e);void 0!==t&&n.set(t,r)}return n}case 15:{const t=e[y++],n=new Set;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e);void 0!==t&&n.add(t)}return n}case 16:{const t=e[y++],n=e[y++],r=new RegExp(t,n);return e[y-3]=r,r}case 17:{const t=globalThis[e[y++]]||Error,n=e[y++],r=e[y++],s=new t(n,{cause:e[y++]});return e[y-5]=p(s,\"stack\",{value:r}),s}default:throw new Error(`Unknown type: ${e[y-1]}`)}var t},{parse:f}=JSON;let y=0;const h=(e=>({byteOffset:t})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=u(a+65535,n);o+=l.apply(null,s.subarray(a,e)),a=e}return e(o)})((e=>{y=0;const t=f(e);return t.length?d(t):void 0})),m=\"592e34ef\",w=\"=\"+m,g=\"-\"+m,{create:b}=Object;let _=\"coincident-\",A=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),_+=crypto.randomUUID()}catch(e){A=!1,_+=Math.random().toString(36).substring(2)}const E=2*Int32Array.BYTES_PER_ELEMENT,v={byteOffset:E,useUTF16:!0,circular:!0},S=new Map,k=(e,t,n)=>{const r=\"then\"!==t;return r&&(e[t]=n),r},x=()=>Promise.withResolvers(),{fromCharCode:j}=String,{min:B}=Math;var P=e=>({byteOffset:t})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=B(a+65535,n);o+=j.apply(null,s.subarray(a,e)),a=e}return e(o)};const{parse:$}=JSON,O=P($),F=\"array\",T=\"bigint\",R=\"function\",M=\"null\",D=\"number\",L=\"object\",C=\"symbol\",I=\"undefined\";var N=Object.fromEntries([F,T,\"boolean\",R,M,D,L,\"string\",C,I,\"view\"].map(((e,t)=>[e,t])));const{parse:U}=JSON,H=P((e=>{const t=U(e);switch(t[0]){case N.view:{const[e,n]=t[1],r=new Uint8Array(n);t[1]=new globalThis[e](r.buffer);break}case N[I]:t[1]=void 0;break;case N[T]:t[1]=BigInt(t[1])}return t})),W=x();addEventListener(\"message\",(e=>{(e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),W.resolve([e.data,e.ports[0]])}),{once:!0});var J=async e=>{const[t,n]=await W.promise,r=A&&!!t,s=e?.transform,o=(e?.decoder||O)(v);let a,i;if(A){const t=new SharedArrayBuffer(e?.minByteLength||65535,{maxByteLength:e?.maxByteLength||16777216});a=new Int32Array(t),i=Atomics.wait}const[c,l]=((e,t=0)=>[n=>{const r=x();do{n=e(t++)}while(S.has(n));return S.set(n,r),[n,r]},(e,t,n)=>{const r=S.get(e);S.delete(e),n?r.reject(n):r.resolve(t)}])(String),u=new Map,p=b(null),d=new Proxy(p,{get(e,l){if(\"then\"===l)return;let p=u.get(l);return p||u.set(l,p=(...e)=>{const u=[a,l,s?e.map(s):e];if(A){r?postMessage({ID:t,data:u}):n.postMessage(u),i(a,0),a[0]=0;const e=a[1]?o(a[1],a.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=c();return u[0]=e,n.postMessage(u),t.promise}}),p},set:k});return n.onmessage=async({data:e})=>{\"string\"==typeof e[0]?l.apply(null,e):(await(async(e,t,n)=>{try{const r=await t[e[1]].apply(null,e[2]);e[1]=n?n(r):r,e[2]=null}catch(t){e[2]=t}})(e,p,s),n.postMessage(e))},{native:A,proxy:d}};const q=\"apply\",z=\"construct\",K=\"defineProperty\",G=\"deleteProperty\",Y=\"get\",V=\"getOwnPropertyDescriptor\",X=\"getPrototypeOf\",Z=\"has\",Q=\"isExtensible\",ee=\"ownKeys\",te=\"preventExtensions\",ne=\"set\",re=\"setPrototypeOf\";var se=Object.freeze({__proto__:null,APPLY:q,CONSTRUCT:z,DEFINE_PROPERTY:K,DELETE_PROPERTY:G,GET:Y,GET_OWN_PROPERTY_DESCRIPTOR:V,GET_PROTOTYPE_OF:X,HAS:Z,IS_EXTENSIBLE:Q,OWN_KEYS:ee,PREVENT_EXTENSION:te,SET:ne,SET_PROTOTYPE_OF:re});const oe=\"destruct\";function ae(){return this}const ie=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`%c${String(t)}`,\"font-weight:bold\",\"collected\"),e(t)})),ce=Object.create(null),le=(e,t,{debug:n,handler:r,return:s,token:o=e}=ce)=>{const a=s||new Proxy(e,r||ce),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),ie.register(...i),a},{Object:ue,Proxy:pe,Reflect:de}=globalThis,{isArray:fe}=Array,{ownKeys:ye}=de,{create:he,hasOwn:me,values:we}=ue,ge=(e,t)=>t===F?e[0]:t===R?e():t===L?e.$:e,be=(e,t,n,r)=>{const s={type:{value:t}},o=me(e,\"valueOf\");for(const a of we(se)){let i=r(e[a]||de[a]);if(o&&a===Y){const{valueOf:r}=e,{value:s}=i;i={value(e,o,...a){return o===n?r.call(this,ge(e,t)):s.call(this,e,o,...a)}}}s[a]=i}return he(e,s)},_e=(e,t,n,r=e)=>{if(r===e)switch(typeof e){case L:case I:r||(r=!1);case R:break;default:r=!1,t===e&&(t=ue(e))}const s=new pe(t,n),{destruct:o}=n;return o?le(e,o,{token:r,return:s}):s},Ae=e=>t=>{const n=typeof t;return n===L?t?e.get(t)?.[0]??(e=>fe(e)?F:L)(t):M:n},Ee=e=>t=>{let n=typeof t;switch(n){case L:if(!t){n=M;break}case R:const r=e.get(t);r&&([n,t]=r)}return[n,t]},ve=e=>((e=>{ie.unregister(e)})(e),e);var Se=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:ve,pair:Ee(t),typeOf:Ae(t),isProxy:e=>t.has(e),valueOf:e=>e[n]??e.valueOf()};for(const t of ye(e)){if(me(o,t))continue;const a=e[t];switch(t){case F:{const e=be(a,t,n,(e=>({value([t],...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(_e(t,[t],e,...n),F,t);break}case R:{const e=be(a,t,n,(e=>({value(t,...n){return e.call(this,t(),...n)}})));r[t]=(t,...n)=>{return s(_e(t,(r=t,ae.bind(r)),e,...n),R,t);var r};break}case L:{const e=be(a,t,n,(e=>({value({$:t},...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(_e(t,{$:t},e,...n),L,t);break}default:{const e=be(a,t,n,(e=>({value:e})));r[t]=(n,...r)=>s(_e(n,n,e,...r),t,n);break}}}return o};const{drop:ke,get:xe,hold:je}=(()=>{const e=new Map,t=new Map;let n=0;return{clear:()=>{e.clear(),t.clear()},drop:n=>{const[r,s]=typeof n===D?[t,e]:[e,t],o=r.has(n);return o&&(s.delete(r.get(n)),r.delete(n)),o},get:e=>t.get(e),hold:r=>{if(!e.has(r)){let s;for(;t.has(s=n++););e.set(r,s),t.set(s,r)}return e.get(r)}}})(),Be=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(Be.set(Symbol[e],e),Be.set(e,Symbol[e]));const Pe=e=>Be.get(e)||`.${Symbol.keyFor(e)||\"\"}`,{isArray:$e}=Array,{isView:Oe}=ArrayBuffer,{[q]:Fe}=Reflect;var Te=(e,t)=>{const n=new Map,r=(e,t)=>{let r=n.get(e)?.deref();return r||n.set(e,new WeakRef(r=t(e))),r},s=([e,t])=>{switch(e){case N[L]:return null==t?globalThis:typeof t===D?r(t,l.object):t;case N[F]:return typeof t===D?r(t,l.array):t;case N[R]:return typeof t===D?r(t,l.function):xe(parseInt(t));case N[C]:return(e=>Be.get(e)||Symbol.for(e.slice(1)))(t);default:return t}},o=e=>{let[n,r]=p(e);switch(n){case L:if(r==globalThis||null==r)r=null;else if(typeof r===L){if(r=t(r),$e(r))return[N[F],r.map(o)];if(Oe(r))return[N.view,r];{const e={};for(const t in r)e[t]=o(r[t]);r=e}}return[N[L],r];case F:return[N[F],typeof r===D?r:t(r).map(o)];case R:return[N[R],typeof r===R?String(je(t(r))):r];case C:return[N[C],Pe(e)];default:return[N[n],r]}},a=(...t)=>s(e(...t)),i={[K]:(e,t,n)=>a(K,e,o(t),o(n)),[G]:(e,t)=>a(G,e,o(t)),[Y]:(e,t)=>a(Y,e,o(t)),[X]:e=>a(X,e),[V]:(e,t)=>{const n=a(V,e,o(t));if(n){const{get:e,set:t,value:r}=n;e&&(n.get=s(e)),t&&(n.set=s(t)),r&&(n.value=s(r))}return n},[Z]:(e,t)=>a(Z,e,o(t)),[Q]:e=>a(Q,e),[ee]:e=>a(ee,e).map(s),[te]:e=>a(te,e),[ne]:(e,t,n)=>a(ne,e,o(t),o(n)),[re]:(e,t)=>a(re,e,o(t)),[oe](t){n.delete(t),e(oe,t)}},c={[L]:i,[F]:i,[R]:{...i,[q]:(e,...t)=>a(q,e,...t.map(o)),[z]:(e,...t)=>a(z,e,...t.map(o))}},{proxy:l,isProxy:u,pair:p}=Se(c);return{isProxy:u,global:l.object(null),method:async(e,t,...n)=>{const r=parseInt(t);switch(e){case q:{const[e,t]=n;return o(await Fe(xe(r),s(e),t.map(s)))}case oe:ke(r)}}}};const Re={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}},Me=new WeakMap,De=e=>{const t=e||console,n={buffered:Ce,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 Me.set(t,n),t}}},Le=new TextDecoder,Ce=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(Le.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},Ie=(e,...t)=>Re[typeof e](e,...t),{isArray:Ne}=Array,{assign:Ue,create:He,defineProperty:We,entries:Je}=Object,{all:qe,resolve:ze}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Ke=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,\"\")).href;function Ge(e){return e.startsWith(\".\")?Ke(e,this):e}const Ye=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},Ve=e=>Function(`'use strict';return (${e})`)(),Xe=e=>e.replace(/^(?:\\n|\\r\\n)/,\"\"),Ze=Symbol.for(\"polyscript.js_modules\"),Qe=new Map;We(globalThis,Ze,{value:Qe}),new Proxy(Qe,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const et=(e,t)=>!t.startsWith(\"_\"),tt=(e,t)=>new Proxy(e,{has:et,get:(e,n)=>e[t][n]}),nt=(e,t)=>import(e).then((e=>{Qe.set(t,{...e})})),rt=e=>new Promise(((t,n)=>{document.querySelector(`link[rel=\"stylesheet\"][href=\"${e}\"]`)?t():document.head.append(Ue(document.createElement(\"link\"),{rel:\"stylesheet\",href:e,onload:t,onerror:n}))})),st=e=>/\\.css$/i.test(new URL(e).pathname),ot=(e,t)=>e.has(t),at=e=>[...e.keys()];var it=(e,t,n,r)=>{const s=globalThis[Ze];if(n)for(let[e,t]of Je(n)){let n=s.get(t);n&&!Ne(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:ot,ownKeys:at,get:(e,s)=>{let o=e.get(s);if(Ne(o)){let a=o;o=null;for(let e of a)e=Ke(e,r),st(e)?n.importCSS(e):(n.importJS(e,s),o=t[Ze].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const ct=new Map,lt=e=>ct.get(e),ut=(e,t)=>{try{return Function(\"require\",t)(lt)}catch(t){Me.get(e).stderr(t)}};var pt={type:\"dummy\",module:()=>\"data:application/javascript,\",engine:e=>De().get(e),registerJSModule(e,t,n){ct.set(t,n)},run:ut,runAsync:ut,runEvent:async(e,t,n)=>{try{await Function(\"require\",\"e\",`return ${t}(e)`)(lt,n)}catch(t){Me.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const dt=Object.getOwnPropertyDescriptors(Response.prototype),ft=e=>\"function\"==typeof e,yt={get:(e,t)=>dt.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,dt[t]):((e,t)=>ft(t)?t.bind(e):t)(e,e[t])};var ht=(e,...t)=>new Proxy(fetch(e,...t),yt);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 mt=!globalThis.window,wt=({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})},gt=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(\"/\")))},_t=(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},Et=(e,t)=>ht(Ke(e,t)).arrayBuffer(),vt=(e,t,n,r)=>qe((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(Ne(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})=>Et(n,r).then((n=>e.writeFile(t,s,n)))))),St=(e,t)=>t.endsWith(\"/\")?`${t}${e.split(\"/\").pop()}`:t,kt=(e,t)=>e.replace(/\\{.+?\\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),xt=(e,t,n,r)=>qe((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of Je(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,kt(o,t))}else{const e=kt(s,t),a=St(e,kt(o||\"./\",t));if(n.has(a)&&!a.endsWith(\"/*\"))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>Et(n,r).then((r=>e.writeFile(t,s,r,n)))))),jt=({main:e,worker:t},n)=>{const r=[];if(t&&mt)for(let[e,s]of Je(t))e=Ke(e,n),r.push(nt(e,s));if(e&&!mt)for(let[t,s]of Je(e))t=Ke(t,n),st(t)?rt(t):r.push(nt(t,s));return qe(r)},Bt=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:Pt}=Object,$t=e=>{const t=typeof e;switch(t){case\"function\":case\"undefined\":return\"\";case\"object\":return null===e?\"null\":\"object\";default:return t}};let Ot=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),Ot+=crypto.randomUUID()}catch(Pt){Ot+=Math.random().toString(36).substring(2)}var Ft={ref:0,array:1,object:2,number:3,string:4,true:5,false:6,null:7,buffer:8,view:9,symbol:10,date:11,bigint:12,undefined:13,map:14,set:15,regexp:16,error:17};const{defineProperty:Tt}=Object,Rt=e=>{switch(e[Dt++]){case Ft.array:{const t=e[Dt++],n=[];e[Dt-2]=n;for(let r=0;r<t;r++)n[r]=Rt(e);return n}case Ft.object:{const t=e[Dt++],n={};e[Dt-2]=n;for(let r=0;r<t;r++)n[Rt(e)]=Rt(e);return n}case Ft.string:{const t=e[Dt++];return e[Dt-2]=t,t}case Ft.ref:return e[e[Dt++]];case Ft.number:return e[Dt++];case Ft.bigint:return BigInt(e[Dt++]);case Ft.true:return!0;case Ft.false:return!1;case Ft.null:return null;case Ft.undefined:return;case Ft.buffer:{const t=e[Dt++],n=e[Dt++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[Dt-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[Dt++];return s}case Ft.view:{const t=e[Dt++],n=e[Dt++],r=e[Dt++],s=[Rt(e),n];r&&s.push(r);const o=new globalThis[t](...s);return e[Dt-4]=o,o}case Ft.symbol:return(t=e[Dt++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case Ft.date:{const t=new Date(e[Dt++]);return e[Dt-2]=t,t}case Ft.map:{const t=e[Dt++],n=new Map;e[Dt-2]=n;for(let r=0;r<t;r++){const t=Rt(e),r=Rt(e);void 0!==t&&n.set(t,r)}return n}case Ft.set:{const t=e[Dt++],n=new Set;e[Dt-2]=n;for(let r=0;r<t;r++){const t=Rt(e);void 0!==t&&n.add(t)}return n}case Ft.regexp:{const t=e[Dt++],n=e[Dt++],r=new RegExp(t,n);return e[Dt-3]=r,r}case Ft.error:{const t=globalThis[e[Dt++]]||Error,n=e[Dt++],r=e[Dt++],s=new t(n,{cause:e[Dt++]});return e[Dt-5]=Tt(s,\"stack\",{value:r}),s}default:throw new Error(`Unknown type: ${e[Dt-1]}`)}var t},{parse:Mt}=JSON;let Dt=0;const{isArray:Lt}=Array,{isView:Ct}=ArrayBuffer,{stringify:It}=JSON,Nt=(e,t,n)=>{const r=t.get(n);return\"number\"==typeof r?(e.push(Ft.ref,r),!0):(t.set(n,e.length),!1)},Ut=(e,t,n,r=$t(n))=>{switch(r){case\"null\":e.push(Ft.null);break;case\"object\":if(Nt(e,t,n))break;switch(!0){case Lt(n):{const r=n.length;e.push(Ft.array,r);for(let s=0;s<r;s++)Ut(e,t,n[s]);break}case Ct(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(Ft.view,(e=>{for(;!(e.name in globalThis);)e=Pt(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),Nt(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(Ft.buffer,t,r),t){const r=new Uint8Array(n,0,t);for(let t=0;t<r.length;t+=65535)e.push.apply(e,r.subarray(t,t+65535))}break}case n instanceof Date:e.push(Ft.date,+n);break;case n instanceof Map:{const r=e.push(Ft.map,0);let s=0;for(const[r,o]of n){const n=$t(r),a=$t(o);n&&a&&(Ut(e,t,r,n),Ut(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(Ft.set,0);let s=0;for(const r of n){const n=$t(r);n&&(Ut(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(Ft.regexp,n.source,n.flags);break;case n instanceof Error:e.push(Ft.error,n.name,n.message,n.stack,n.cause);break;default:{if(\"toJSON\"in n){const r=n.toJSON();if(r===n){e.push(Ft.object,0);break}if(Nt(e,t,n=r))break}const r=e.push(Ft.object,0);let s=0;for(const r in n){const o=n[r],a=$t(o);a&&(Ut(e,t,r,\"string\"),Ut(e,t,o,a),s++)}e[r-1]=s;break}}break;case\"boolean\":e.push(n?Ft.true:Ft.false);break;case\"string\":if(Nt(e,t,n))break;e.push(Ft.string,n);break;case\"bigint\":e.push(Ft[r],n.toString());break;case\"symbol\":{const t=(e=>{const t=String(e).slice(7,-1);return t.startsWith(\"Symbol.\")||Symbol.keyFor(e)?t:\"\"})(n);if(t){e.push(Ft[r],t);break}}case\"\":e.push(Ft.undefined);break;default:e.push(Ft[r],n)}},Ht={parse:e=>{Dt=0;const t=Mt(e);return t.length?Rt(t):void 0},stringify:e=>{const t=[];return Ut(t,new Map,e),It(t)}},Wt=new WeakMap,Jt=async(e,t,n,r,s)=>{r.files&&(t(\"Loading files\"),await xt(e,n,r.files,s),t(\"Loaded files\")),r.fetch&&(t(\"Loading fetch\"),await vt(e,n,r.fetch,s),t(\"Loaded fetch\")),r.js_modules&&(t(\"Loading JS modules\"),await jt(r.js_modules,s),t(\"Loaded JS modules\"))},qt=(e,t,n)=>{\"polyscript\"===t&&(n.lazy_py_modules=async(...t)=>(await Wt.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new i(e);return await t.sync(),t},n.JSON=Ht),e.registerJsModule(t,n)},zt=(e,t)=>{if(e.endsWith(\"/*\")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return\"\"},Kt=(e,t,...n)=>{try{return e.runPython(Ie(t),...n)}catch(t){Me.get(e).stderr(t)}},Gt=async(e,t,...n)=>{try{return await e.runPythonAsync(Ie(t),...n)}catch(t){Me.get(e).stderr(t)}},Yt=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){Me.get(e).stderr(t)}};var Vt=(new TextEncoder).encode(\"_F='github:'\\n_E='user-agent'\\n_D=True\\n_C=False\\n_B='/'\\n_A=None\\nfrom uio import StringIO\\nimport sys\\nclass Response:\\n\\tdef __init__(A,f):A.raw=f;A.encoding='utf-8';A._cached=_A\\n\\tdef close(A):\\n\\t\\tif A.raw:A.raw.close();A.raw=_A\\n\\t\\tA._cached=_A\\n\\t@property\\n\\tdef content(self):\\n\\t\\tA=self\\n\\t\\tif A._cached is _A:\\n\\t\\t\\ttry:A._cached=A.raw.read()\\n\\t\\t\\tfinally:A.raw.close();A.raw=_A\\n\\t\\treturn A._cached\\n\\t@property\\n\\tdef text(self):return str(self.content,self.encoding)\\n\\tdef json(A):import ujson;return ujson.loads(A.content)\\nHEADERS_TO_IGNORE=_E,\\ntry:import js\\nexcept Exception as err:raise OSError('This version of urequests can only be used in the browser')\\nHEADERS_TO_IGNORE=_E,\\ndef request(method,url,data=_A,json=_A,headers={},stream=_A,auth=_A,timeout=_A,parse_headers=_D):\\n\\tE=timeout;D=method;C=data;from js import XMLHttpRequest as G;A=G.new();A.withCredentials=_C\\n\\tif auth is not _A:import ubinascii;H,I=auth;A.open(D,url,_C,H,I)\\n\\telse:A.open(D,url,_C)\\n\\tfor(F,J)in headers.items():\\n\\t\\tif F.lower()not in HEADERS_TO_IGNORE:A.setRequestHeader(F,J)\\n\\tif E:A.timeout=int(E*1000)\\n\\tif json is not _A:assert C is _A;import ujson;C=ujson.dumps(json);A.setRequestHeader('Content-Type','application/json')\\n\\tA.send(C);B=Response(StringIO(A.responseText));B.status_code=A.status;B.reason=A.statusText;B.headers=A.getAllResponseHeaders();return B\\ndef get(url,**A):return request('GET',url,**A)\\n_PACKAGE_INDEX=const('https://micropython.org/pi/v2')\\n_CHUNK_SIZE=128\\ndef _ensure_path_exists(path):\\n\\timport os;A=path.split(_B)\\n\\tif not A[0]:A.pop(0);A[0]=_B+A[0]\\n\\tB=''\\n\\tfor C in range(len(A)-1):\\n\\t\\tB+=A[C]\\n\\t\\ttry:os.stat(B)\\n\\t\\texcept:os.mkdir(B)\\n\\t\\tB+=_B\\ndef _chunk(src,dest):\\n\\tA=memoryview(bytearray(_CHUNK_SIZE))\\n\\twhile _D:\\n\\t\\tB=src.readinto(A)\\n\\t\\tif B==0:break\\n\\t\\tdest(A if B==_CHUNK_SIZE else A[:B])\\ndef _check_exists(path,short_hash):\\n\\tA=short_hash;import os\\n\\ttry:\\n\\t\\timport binascii as C,hashlib as D\\n\\t\\twith open(path,'rb')as E:B=D.sha256();_chunk(E,B.update);F=str(C.hexlify(B.digest())[:len(A)],'utf-8');return F==A\\n\\texcept:return _C\\ndef _rewrite_url(url,branch=_A):\\n\\tB=branch;A=url\\n\\tif not B:B='HEAD'\\n\\tif A.startswith(_F):A=A[7:].split(_B);A='https://raw.githubusercontent.com/'+A[0]+_B+A[1]+_B+B+_B+_B.join(A[2:])\\n\\treturn A\\ndef _download_file(url,dest):\\n\\tB=dest;A=get(url)\\n\\ttry:\\n\\t\\tif A.status_code!=200:print('Error',A.status_code,'requesting',url);return _C\\n\\t\\tprint('Copying:',B);_ensure_path_exists(B)\\n\\t\\twith open(B,'wb')as C:_chunk(A.raw,C.write)\\n\\t\\treturn _D\\n\\tfinally:A.close()\\ndef _install_json(package_json_url,index,target,version,mpy):\\n\\tK='File not found: {} {}';I=version;H=index;G=package_json_url;D=target;E=get(_rewrite_url(G,I))\\n\\ttry:\\n\\t\\tif E.status_code!=200:print('Package not found:',G);return _C\\n\\t\\tF=E.json()\\n\\tfinally:E.close()\\n\\tfor(A,C)in F.get('hashes',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif _check_exists(B,C):print('Exists:',B)\\n\\t\\telse:\\n\\t\\t\\tL='{}/file/{}/{}'.format(H,C[:2],C)\\n\\t\\t\\tif not _download_file(L,B):print(K.format(A,C));return _C\\n\\tfor(A,J)in F.get('urls',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif not _download_file(_rewrite_url(J,I),B):print(K.format(A,J));return _C\\n\\tfor(M,N)in F.get('deps',()):\\n\\t\\tif not _install_package(M,H,D,N,mpy):return _C\\n\\treturn _D\\ndef _install_package(package,index,target,version,mpy):\\n\\tD=index;C=target;B=version;A=package\\n\\tif A.startswith('http://')or A.startswith('https://')or A.startswith(_F):\\n\\t\\tif A.endswith('.py')or A.endswith('.mpy'):print('Downloading {} to {}'.format(A,C));return _download_file(_rewrite_url(A,B),C+_B+A.rsplit(_B)[-1])\\n\\t\\telse:\\n\\t\\t\\tif not A.endswith('.json'):\\n\\t\\t\\t\\tif not A.endswith(_B):A+=_B\\n\\t\\t\\t\\tA+='package.json'\\n\\t\\t\\tprint('Installing {} to {}'.format(A,C))\\n\\telse:\\n\\t\\tif not B:B='latest'\\n\\t\\tprint('Installing {} ({}) from {} to {}'.format(A,B,D,C));E=sys.implementation._mpy&255 if mpy and hasattr(sys.implementation,'_mpy')else'py';A='{}/package/{}/{}/{}.json'.format(D,'py',A,B)\\n\\treturn _install_json(A,D,C,B,mpy)\\ndef install(package,index=_A,target=_A,version=_A,mpy=_D):\\n\\tB=target;A=index\\n\\tif not B:\\n\\t\\tfor C in sys.path:\\n\\t\\t\\tif C.endswith('/lib'):B=C;break\\n\\t\\telse:print('Unable to find lib dir in sys.path');return\\n\\tif not A:A=_PACKAGE_INDEX\\n\\tif _install_package(package,A.rstrip(_B),B,version,mpy):print('Done')\\n\\telse:print('Package may be partially installed')\");const Xt=async e=>(await import(\"./toml-DiUM0_qs.js\")).parse(e);async function Zt(e,t){return new Promise(((n,r)=>{e.syncfs(t,(e=>{e?r(e):n()}))}))}function Qt(e){const t=e.FS,n=e.FS.filesystems.MEMFS,r=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:function(e){if(!e.opts.fileSystemHandle)throw new Error(\"opts.fileSystemHandle is required\");return n.mount.apply(null,arguments)},syncfs:async(e,t,n)=>{try{const r=s.getLocalSet(e),o=await s.getRemoteSet(e),a=t?o:r,i=t?r:o;await s.reconcile(e,a,i),n(null)}catch(e){n(e)}},getLocalSet:e=>{let n=Object.create(null);function s(e){return\".\"!==e&&\"..\"!==e}function o(e){return t=>r.join2(e,t)}let a=t.readdir(e.mountpoint).filter(s).map(o(e.mountpoint));for(;a.length;){let e=a.pop(),r=t.stat(e);t.isDir(r.mode)&&a.push.apply(a,t.readdir(e).filter(s).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:\"local\",entries:n}},getRemoteSet:async e=>{const t=Object.create(null),n=await en(e.opts.fileSystemHandle);for(const[o,a]of n)\".\"!==o&&(t[r.join2(e.mountpoint,o)]={timestamp:\"file\"===a.kind?(await a.getFile()).lastModifiedDate:new Date,mode:\"file\"===a.kind?s.FILE_MODE:s.DIR_MODE});return{type:\"remote\",entries:t,handles:n}},loadLocalEntry:e=>{const r=t.lookupPath(e).node,s=t.stat(e);if(t.isDir(s.mode))return{timestamp:s.mtime,mode:s.mode};if(t.isFile(s.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:s.mtime,mode:s.mode,contents:r.contents};throw new Error(\"node type not supported\")},storeLocalEntry:(e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else{if(!t.isFile(n.mode))throw new Error(\"node type not supported\");t.writeFile(e,n.contents,{canOwn:!0})}t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},removeLocalEntry:e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},loadRemoteEntry:async e=>{if(\"file\"===e.kind){const t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:s.FILE_MODE,timestamp:t.lastModifiedDate}}if(\"directory\"===e.kind)return{mode:s.DIR_MODE,timestamp:new Date};throw new Error(\"unknown kind: \"+e.kind)},storeRemoteEntry:async(e,n,s)=>{const o=e.get(r.dirname(n)),a=t.isFile(s.mode)?await o.getFileHandle(r.basename(n),{create:!0}):await o.getDirectoryHandle(r.basename(n),{create:!0});if(\"file\"===a.kind){const e=await a.createWritable();await e.write(s.contents),await e.close()}e.set(n,a)},removeRemoteEntry:async(e,t)=>{const n=e.get(r.dirname(t));await n.removeEntry(r.basename(t)),e.delete(t)},reconcile:async(e,n,o)=>{let a=0;const i=[];Object.keys(n.entries).forEach((function(e){const r=n.entries[e],s=o.entries[e];(!s||t.isFile(r.mode)&&r.timestamp.getTime()>s.timestamp.getTime())&&(i.push(e),a++)})),i.sort();const c=[];if(Object.keys(o.entries).forEach((function(e){n.entries[e]||(c.push(e),a++)})),c.sort().reverse(),!a)return;const l=\"remote\"===n.type?n.handles:o.handles;for(const t of i){const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);if(\"local\"===o.type){const e=l.get(n),r=await s.loadRemoteEntry(e);s.storeLocalEntry(t,r)}else{const e=s.loadLocalEntry(t);await s.storeRemoteEntry(l,n,e)}}for(const t of c)if(\"local\"===o.type)s.removeLocalEntry(t);else{const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);await s.removeRemoteEntry(l,n)}}};return e.FS.filesystems.NATIVEFS_ASYNC=s,async function(e,n){if(\"FileSystemDirectoryHandle\"!==n.constructor.name)throw new TypeError(\"Expected argument 'fileSystemHandle' to be a FileSystemDirectoryHandle\");return function(e){t.mkdirTree?t.mkdirTree(e):bt(t,e);const{node:n}=t.lookupPath(e,{follow_mount:!1});if(t.isMountpoint(n))throw new Error(`path '${e}' is already a file system mount point`);if(!t.isDir(n.mode))throw new Error(`path '${e}' points to a file not a directory`);for(const t in n.contents)throw new Error(`directory '${e}' is not empty`)}(e),t.mount(t.filesystems.NATIVEFS_ASYNC,{fileSystemHandle:n},e),await Zt(t,!0),{syncfs:async()=>await Zt(t,!1)}}}const en=async e=>{const t=[];await async function e(n){for await(const r of n.values())t.push(r),\"directory\"===r.kind&&await e(r)}(e);const n=new Map;n.set(\".\",e);for(const r of t){const t=(await e.resolve(r)).join(\"/\");n.set(t,r)}return n},tn=(e,t)=>{try{e.mkdir(t)}catch(e){}},nn=Bt(\"mpy\");var rn={type:\"micropython\",module:(e=\"1.24.1\")=>`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}=De({stderr:Ce(console.error),stdout:Ce(console.log)});n=n.replace(/\\.m?js$/,\".wasm\"),nn(\"Loading MicroPython\");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=sn.bind(this,i,r);return Wt.set(i,c),await Jt(this,nn,i,t,r),this.writeFile(i,\"./mip.py\",Vt),t.packages&&(nn(\"Loading packages\"),await c(t.packages.map(Ge,r)),nn(\"Loaded packages\")),nn(\"Loaded MicroPython\"),i.mountNativeFS||(i.mountNativeFS=Qt(i._module)),i},registerJSModule:qt,run:Kt,runAsync:Gt,runEvent:Yt,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=zt(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-DxlTOqbw.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)tn(s,i);else{tn(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 wt(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 wt(i,t,n)}};async function sn(e,t,n){let r;for(const s of n)if(s.endsWith(\".whl\")){const n=Ke(s,t),r=await ht(n).arrayBuffer();await this.writeFile(e,\"./*\",r,n)}else r||(r=e.pyimport(\"mip\")),r.install(s)}const on={dict_converter:Object.fromEntries},{stringify:an}=JSON;let cn=!1;const ln=e=>(...t)=>{try{return cn=!0,e(...t)}finally{cn=!1}};let un=!1;const pn=()=>{if(un)return;un=!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){cn=!1;let o=e.get(s)?.deref();if(!o)try{o=le(s.copy(),t),e.set(s,new WeakRef(o))}catch(e){console.error(e)}o&&(n[r]=o),cn=!0}}},{call:r}=Function,s=r.bind(r,r.apply);Object.defineProperties(Function.prototype,{apply:{value(e,t){return cn&&n(t),s(this,e,t)}},call:{value(e,...t){return cn&&n(t),s(this,e,t)}}})},dn=Bt(\"py\"),fn=new WeakMap;var yn={type:\"pyodide\",module:(e=\"0.27.5\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){mt||\"auto\"!==t.experimental_create_proxy||pn(),dn(\"Loading Pyodide\");let{packages:s,index_urls:o}=t;s&&(s=s.map(Ge,r)),dn(\"Loading Storage\");const a=n.slice(0,n.lastIndexOf(\"/\")),c=new i(a),l={indexURL:a},u=\"never\"!==t.packages_cache;if(await c.sync(),u){if(s){s=s.sort();const e=an(s);if(c.has(e)){const t=new Blob([c.get(e)],{type:\"application/json\"});l.lockFileURL=URL.createObjectURL(t),l.packages=s.map((e=>e.split(/[>=<]=/)[0])),s=null}}}else c.clear();dn(\"Loaded Storage\");const{stderr:p,stdout:d,get:f}=De(),y=await f(e({stderr:p,stdout:d,...l})),h=mn.bind(y);return o&&fn.set(y,o),Wt.set(y,h),await Jt(this,dn,y,t,r),s&&await h(s,c,u),await c.close(),l.lockFileURL&&URL.revokeObjectURL(l.lockFileURL),dn(\"Loaded Pyodide\"),y},registerJSModule:qt,run:ln(Kt),runAsync:ln(Gt),runEvent:ln(Yt),transform:(e,t)=>hn.call(e,t),writeFile:(e,t,n,r)=>{const s=zt(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 wt({FS:o,PATH:a,PATH_FS:i},t,n)}};function hn(e){const{ffi:{PyProxy:t}}=this;if(e&&\"object\"==typeof e){if(e instanceof t)return e.toJs(on);if(e instanceof Map)return new Map([...e.entries()]);if(Ne(e))return e.map(hn,this)}return e}async function mn(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,dn(e),console.log=s};console.log=s,await this.loadPackage(\"micropip\");const o=this.pyimport(\"micropip\");if(fn.has(this)&&o.set_index_urls(fn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(an(e),n)}o.destroy()}const wn=\"ruby-wasm-wasi\",gn=wn.replace(/\\W+/g,\"_\");var bn={type:wn,experimental:!0,module:(e=\"2.7.1\")=>`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 xt(this,a,t.files,r),t.fetch&&await vt(this,a,t.fetch,r),t.js_modules&&await jt(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,\"__\");const r=`__module_${gn}_${t}`;globalThis[r]=n,this.run(e,`require \"js\";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(Ie(t),...n),runAsync:(e,t,...n)=>e.evalAsync(Ie(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${gn}_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 ${wn}`)}};var _n={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}=De(),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 xt(this,c,n.files,s),n.fetch&&await vt(this,c,n.fetch,s),n.js_modules&&await jt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(Ie(t),...n)}catch(t){Me.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(Ie(t),...n)}catch(t){Me.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){Me.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(bt(e,gt(t)),t=_t(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const An=new WeakMap,En=async(e,t)=>{const{shelter:n,destroy:r,io:s}=An.get(e),{output:o,result:a}=await n.captureR(Ie(t));for(const{type:e,data:t}of o)s[e](t);return le(a,r,{token:!1})};var vn={type:\"webr\",experimental:!0,module:(e=\"0.4.2\")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=De(),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:Me.get(o)}),t.files&&await xt(this,o,t.files,r),t.fetch&&await vt(this,o,t.fetch,r),t.js_modules&&await jt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:En,runAsync:En,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 Sn=new Map,kn=new Map,xn=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\"@\"),s=Sn.get(n),o=/^(?:\\.?\\.?\\/|[a-z0-9-]+:\\/\\/)/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=>(kn.set(t,e),s(r,e,n,o))))}}),jn=e=>{for(const t of[].concat(e.type))Sn.set(t,e)};for(const e of[pt,rn,yn,bn,_n,vn])jn(e);const{parse:Bn}=JSON,Pn=(e,t,n={})=>{const[r,s]=((e,t=\"./config.txt\")=>{let n=typeof e;return\"string\"===n&&/\\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[Ke(e),n]})(e,t);return\"json\"===s?n=ht(r).json():\"toml\"===s?n=ht(r).text().then(Xt):\"string\"===s?n=$n(e):\"object\"===s&&e?n=e:\"txt\"===s&&\"string\"==typeof n&&(n=$n(n)),[n,e=r]},$n=e=>{try{return Bn(e)}catch(t){return Xt(e)}},On=\"BeforeRun\",Fn=\"AfterRun\",Tn=[`code${On}`,`code${On}Async`,`code${Fn}`,`code${Fn}Async`],Rn=[\"onWorker\",\"onReady\",`on${On}`,`on${On}Async`,`on${Fn}`,`on${Fn}Async`];function Mn(e,t){const{run:n,runAsync:r}=Sn.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Dn=(e,t,n,r,s,o)=>{if(s||o){const a=Mn.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 Ln,Cn,In;const Nn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Ln,Cn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Un,native:Hn,window:Wn,isWindowProxy:Jn}=await(async e=>{let t=!1;const n=e?.decoder||O,r=await J({...e,decoder(e){const r=n(e),s=H(e);return(e,n)=>t?(t=!1,s(e,n)):r(e,n)}}),s=r.proxy[w],{isProxy:o,global:a,method:i}=Te((function(...e){return t=!0,s.apply(this,e)}),e?.transform||(e=>e));return r.proxy[g]=i,{...r,window:a,isWindowProxy:o}})({decoder:h,transform:e=>In?In(e):e}),qn={polyfill:!Hn,sync:Un,window:Hn?Wn:null,isWindowProxy:Jn,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Nn(\"message\",(({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Ln=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,y=((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(l,p),h=await((e,t,n,r={})=>(t&&([r,t]=Pn(t,n,r)),ze(r).then((n=>xn[e](n,t)))))(y,t,n,d),{js_modules:m}=kn.get(y),w=m?.main,g=He(Sn.get(l)),b=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:Me.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,u||l,d||{},h);let _=\"run\";if(f&&(_+=\"Async\"),s){let e,t,n=\"\",r=\"\";for(const e of Tn){const t=s[e];if(t){const s=e.endsWith(\"Async\");(s&&f||!s&&!f)&&(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,Xe(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,Xe(t),...o);return r&&await s(e,r,...o),a}})(g,_,n,r);for(const n of Rn.slice(2)){const r=s[n];if(r){const s=n.endsWith(\"Async\");if(s&&f||!s&&!f){const s=Ve(r);n.startsWith(\"onBefore\")?e=s:t=s}}}Dn(g,b,qn,f,e,t)}let A,E,v,S=null,k=\"\";Hn&&(({CustomEvent:A,document:E}=Wn),S=o&&E.getElementById(o)||null,v=e=>Ye(S,u||l,e,!0,A));const x=it(Wn,Un,w,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}`,tt(r,e));t.registerJSModule(n,s,r)})(l,g,h,x),g.registerJSModule(h,\"polyscript\",{IDBMap:a,IDBMapSync:i,xworker:qn,currentScript:S,config:b.config,js_modules:x,get target(){return!k&&S&&(\"SCRIPT\"===c?S.after(Ue(Wn.document.createElement(`script-${u||l}`),{id:k=`${o}-target`})):(k=o,S.replaceChildren(),S.style.display=\"block\")),k}}),Cn=g.runEvent.bind(g,h),In=g.transform.bind(g,h),S&&v(\"ready\"),s?.onReady&&Ve(s?.onReady).call(g,Mn.call(g,b,h),qn),await g[_](h,r),[\"micropython\",\"pyodide\"].includes(g.type)){const e=\"polyscript\",t=`__${e}_workers__`,n=\"__export__\";h.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&&h.runPython([`from ${e} import xworker as ${t}`,...r.map((e=>`${t}.sync.${e} = ${e}`)),`del ${t}`].join(\"\\n\"))}return S&&v(\"done\"),postMessage(\"polyscript:done\"),h}catch(e){postMessage(e)}})(),Nn(\"error\"),Nn(\"message\"),Nn(\"messageerror\"),Hn&&addEventListener(\"py:progress\",(({type:e,detail:t})=>{Wn.dispatchEvent(new Wn.CustomEvent(e,{detail:t}))}))}));\n".replace(re,place)],{type:'application/javascript'})), ...args) | ||
import { encoder } from 'coincident/flatted/encoder'; | ||
import coincident from 'coincident/window/main'; | ||
const { Worker } = coincident({ encoder, transfer: false }); | ||
export default (...args) => new Worker(URL.createObjectURL(new Blob(["const{assign:e}=Object,t=\"entries\",n=\"readonly\",r=\"readwrite\",s={durability:\"default\",prefix:\"IDBMap\"},o=({target:{result:e}})=>e;class a extends EventTarget{#e;#t;#n;async#r(n,r){const s=(await this.#e).transaction(t,r,this.#t);return new Promise(((r,o)=>e(n(s.objectStore(t)),{onsuccess:r,onerror:o})))}constructor(n,{durability:r=s.durability,prefix:a=s.prefix}=s){super(),this.#n=a,this.#t={durability:r},this.#e=new Promise(((r,s)=>{e(indexedDB.open(`${this.#n}/${n}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(t),n.oncomplete=()=>r(e)},onsuccess(e){r(o(e))},onerror(e){s(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(t){const{type:n,message:r,isTrusted:s}=t;return super.dispatchEvent(s?e(new Event(n),{message:r}):t)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),n).then(o)}async clear(){await this.#r((e=>e.clear()),r)}async delete(e){await this.#r((t=>t.delete(e)),r)}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)),n).then(o)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),n).then(o)}async keys(){return await this.#r((e=>e.getAllKeys()),n).then(o)}async set(e,t){return await this.#r((n=>n.put(t,e)),r),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class i extends Map{#s;#o;constructor(...e){super(),this.#s=new a(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async close(){await this.#o,await this.#s.close()}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)}}let c=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),c+=crypto.randomUUID()}catch(kn){c+=Math.random().toString(36).substring(2)}const{fromCharCode:l}=String,{min:u}=Math;const{defineProperty:p}=Object,d=e=>{switch(e[y++]){case 1:{const t=e[y++],n=[];e[y-2]=n;for(let r=0;r<t;r++)n[r]=d(e);return n}case 2:{const t=e[y++],n={};e[y-2]=n;for(let r=0;r<t;r++)n[d(e)]=d(e);return n}case 4:{const t=e[y++];return e[y-2]=t,t}case 0:return e[e[y++]];case 3:return e[y++];case 12:return BigInt(e[y++]);case 5:return!0;case 6:return!1;case 7:return null;case 13:return;case 8:{const t=e[y++],n=e[y++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[y-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[y++];return s}case 9:{const t=e[y++],n=e[y++],r=e[y++],s=y-4,o=[d(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case 10:return(t=e[y++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case 11:{const t=new Date(e[y++]);return e[y-2]=t,t}case 14:{const t=e[y++],n=new Map;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e),r=d(e);void 0!==t&&n.set(t,r)}return n}case 15:{const t=e[y++],n=new Set;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e);void 0!==t&&n.add(t)}return n}case 16:{const t=e[y++],n=e[y++],r=new RegExp(t,n);return e[y-3]=r,r}case 17:{const t=globalThis[e[y++]]||Error,n=e[y++],r=e[y++],s=new t(n,{cause:e[y++]});return e[y-5]=p(s,\"stack\",{value:r}),s}default:throw new TypeError(`Unknown type: ${e[y-1]}`)}var t},{parse:f}=JSON;let y=0;const h=(e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=u(a+32767,n);o+=l.apply(null,s.subarray(a,e)),a=e}return e(o)})((e=>(e=>(y=0,e.length?d(e):void 0))(f(e)))),m=\"cea177e6\",w=\"=\"+m,g=\"-\"+m,{create:b}=Object;let _=\"coincident-\",A=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),_+=crypto.randomUUID()}catch(e){A=!1,_+=Math.random().toString(36).substring(2)}const E=2*Int32Array.BYTES_PER_ELEMENT,v={byteOffset:E,useUTF16:!0,circular:!0},S=(e,t,n)=>{const r=\"then\"!==t;return r&&(e[t]=n),r},{fromCharCode:k}=String,{min:x}=Math;var j=e=>({byteOffset:t=0}={})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o=\"\",a=0;for(;a<n;){const e=x(a+32767,n);o+=k.apply(null,s.subarray(a,e)),a=e}return e(o)};const{parse:B}=JSON,P=j(B),$=\"array\",T=\"bigint\",F=\"boolean\",O=\"function\",R=\"null\",M=\"number\",D=\"object\",L=\"string\",C=\"symbol\",I=\"undefined\";var N={[$]:0,[T]:1,[F]:2,[O]:3,[R]:4,[M]:5,[D]:6,[L]:7,[C]:8,[I]:9,view:10};const{parse:U}=JSON,H=j((e=>{const t=U(e);switch(t[0]){case N.view:{const[e,n]=t[1],r=new Uint8Array(n);t[1]=new globalThis[e](r.buffer);break}case N[I]:t[1]=void 0;break;case N[T]:t[1]=BigInt(t[1])}return t})),W=Promise.withResolvers.bind(Promise);const J=[],q=new WeakSet,z=(...e)=>(q.add(e),e),K=Promise.withResolvers();addEventListener(\"message\",(e=>{(e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),K.resolve([e.data,e.ports[0]])}),{once:!0});var G=async e=>{const[t,n]=await K.promise,r=A&&!!t,s=e?.transform,o=(e?.decoder||P)(v),a=!1!==e?.transfer;let i,c;if(A){const t=new SharedArrayBuffer(e?.minByteLength||32767,{maxByteLength:e?.maxByteLength||16777216});i=new Int32Array(t),c=Atomics.wait}const[l,u]=((e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=W();return t.set(r,s),[r,s.promise]},(e,n,r)=>{const s=t.get(e);t.delete(e),r?s?.reject(r):s?.resolve(n)}]})(String),p=new Map,d=b(null),f=new Proxy(d,{get(e,u){if(\"then\"===u)return;let d=p.get(u);return d||p.set(u,d=(...e)=>{const p=((e,t)=>{let n=J;return e&&q.has(t.at(-1)||J)&&(n=t.pop(),q.delete(n)),n})(a,e),d=[i,u,s?e.map(s):e];if(A){r?postMessage({ID:t,data:d},p):n.postMessage(d,p),c(i,0),i[0]=0;const e=i[1]?o(i[1],i.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=l();return d[0]=e,n.postMessage(d,p),t}}),d},set:S});return n.onmessage=async({data:e})=>{\"string\"==typeof e[0]?u.apply(null,e):(await(async(e,t,n)=>{try{const r=await t[e[1]].apply(null,e[2]);e[1]=n?n(r):r,e[2]=null}catch(t){e[2]=t}})(e,d,s),n.postMessage(e))},{native:A,proxy:f,transfer:z}};const Y=\"apply\",V=\"construct\",X=\"defineProperty\",Z=\"deleteProperty\",Q=\"get\",ee=\"getOwnPropertyDescriptor\",te=\"getPrototypeOf\",ne=\"has\",re=\"isExtensible\",se=\"ownKeys\",oe=\"preventExtensions\",ae=\"set\",ie=\"setPrototypeOf\";var ce=Object.freeze({__proto__:null,APPLY:Y,CONSTRUCT:V,DEFINE_PROPERTY:X,DELETE_PROPERTY:Z,GET:Q,GET_OWN_PROPERTY_DESCRIPTOR:ee,GET_PROTOTYPE_OF:te,HAS:ne,IS_EXTENSIBLE:re,OWN_KEYS:se,PREVENT_EXTENSION:oe,SET:ae,SET_PROTOTYPE_OF:ie});const le=\"destruct\";function ue(){return this}const pe=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`%c${String(t)}`,\"font-weight:bold\",\"collected\"),e(t)})),de=Object.create(null),fe=(e,t,{debug:n,handler:r,return:s,token:o=e}=de)=>{const a=s||new Proxy(e,r||de),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),pe.register(...i),a},{Object:ye,Proxy:he,Reflect:me}=globalThis,{isArray:we}=Array,{ownKeys:ge}=me,{create:be,hasOwn:_e,values:Ae}=ye,Ee=(e,t)=>t===$?e[0]:t===O?e():t===D?e.$:e,ve=(e,t,n,r)=>{const s={type:{value:t}},o=_e(e,\"valueOf\");for(const a of Ae(ce)){let i=r(e[a]||me[a]);if(o&&a===Q){const{valueOf:r}=e,{value:s}=i;i={value(e,o,...a){return o===n?r.call(this,Ee(e,t)):s.call(this,e,o,...a)}}}s[a]=i}return be(e,s)},Se=(e,t,n,r=e)=>{if(r===e)switch(typeof e){case D:case I:r||(r=!1);case O:break;default:r=!1,t===e&&(t=ye(e))}const s=new he(t,n),{destruct:o}=n;return o?fe(e,o,{token:r,return:s}):s},ke=e=>t=>{const n=typeof t;return n===D?t?e.get(t)?.[0]??(e=>we(e)?$:D)(t):R:n},xe=e=>t=>{let n=typeof t;switch(n){case D:if(!t){n=R;break}case O:const r=e.get(t);r&&([n,t]=r)}return[n,t]},je=e=>((e=>{pe.unregister(e)})(e),e);var Be=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:je,pair:xe(t),typeOf:ke(t),isProxy:e=>t.has(e),valueOf:e=>e[n]??e.valueOf()};for(const t of ge(e)){if(_e(o,t))continue;const a=e[t];switch(t){case $:{const e=ve(a,t,n,(e=>({value([t],...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,[t],e,...n),$,t);break}case O:{const e=ve(a,t,n,(e=>({value(t,...n){return e.call(this,t(),...n)}})));r[t]=(t,...n)=>{return s(Se(t,(r=t,ue.bind(r)),e,...n),O,t);var r};break}case D:{const e=ve(a,t,n,(e=>({value({$:t},...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(Se(t,{$:t},e,...n),D,t);break}default:{const e=ve(a,t,n,(e=>({value:e})));r[t]=(n,...r)=>s(Se(n,n,e,...r),t,n);break}}}return o};const{drop:Pe,get:$e,hold:Te}=(()=>{const e=new Map,t=new Map;let n=0;return{clear:()=>{e.clear(),t.clear()},drop:n=>{const[r,s]=typeof n===M?[t,e]:[e,t],o=r.has(n);return o&&(s.delete(r.get(n)),r.delete(n)),o},get:e=>t.get(e),hold:r=>{if(!e.has(r)){let s;for(;t.has(s=n++););e.set(r,s),t.set(s,r)}return e.get(r)}}})(),Fe=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(Fe.set(Symbol[e],e),Fe.set(e,Symbol[e]));const Oe=e=>Fe.get(e)||`.${Symbol.keyFor(e)||\"\"}`,{isArray:Re}=Array,{isView:Me}=ArrayBuffer,{[Y]:De}=Reflect;var Le=(e,t)=>{const n=new Map,r=(e,t)=>{let r=n.get(e)?.deref();return r||n.set(e,new WeakRef(r=t(e))),r},s=([e,t])=>{switch(e){case N[D]:return null==t?globalThis:typeof t===M?r(t,l.object):t;case N[$]:return typeof t===M?r(t,l.array):t;case N[O]:return typeof t===M?r(t,l.function):$e(parseInt(t));case N[C]:return(e=>Fe.get(e)||Symbol.for(e.slice(1)))(t);default:return t}},o=e=>{let[n,r]=p(e);switch(n){case D:if(r==globalThis||null==r)r=null;else if(typeof r===D){if(r=t(r),Re(r))return[N[$],r.map(o)];if(Me(r))return[N.view,r];{const e={};for(const t in r)e[t]=o(r[t]);r=e}}return[N[D],r];case $:return[N[$],typeof r===M?r:t(r).map(o)];case O:return[N[O],typeof r===O?String(Te(t(r))):r];case C:return[N[C],Oe(e)];default:return[N[n],r]}},a=(...t)=>s(e(...t)),i={[X]:(e,t,n)=>a(X,e,o(t),o(n)),[Z]:(e,t)=>a(Z,e,o(t)),[Q]:(e,t)=>a(Q,e,o(t)),[te]:e=>a(te,e),[ee]:(e,t)=>{const n=a(ee,e,o(t));if(n){const{get:e,set:t,value:r}=n;e&&(n.get=s(e)),t&&(n.set=s(t)),r&&(n.value=s(r))}return n},[ne]:(e,t)=>a(ne,e,o(t)),[re]:e=>a(re,e),[se]:e=>a(se,e).map(s),[oe]:e=>a(oe,e),[ae]:(e,t,n)=>a(ae,e,o(t),o(n)),[ie]:(e,t)=>a(ie,e,o(t)),[le](t){n.delete(t),e(le,t)}},c={[D]:i,[$]:i,[O]:{...i,[Y]:(e,...t)=>a(Y,e,...t.map(o)),[V]:(e,...t)=>a(V,e,...t.map(o))}},{proxy:l,isProxy:u,pair:p}=Be(c);return{isProxy:u,global:l.object(null),method:async(e,t,...n)=>{const r=parseInt(t);switch(e){case Y:{const[e,t]=n;return o(await De($e(r),s(e),t.map(s)))}case le:Pe(r)}}}};const Ce={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}},Ie=new WeakMap,Ne=e=>{const t=e||console,n={buffered:He,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 Ie.set(t,n),t}}},Ue=new TextDecoder,He=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(Ue.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},We=(e,...t)=>Ce[typeof e](e,...t),{isArray:Je}=Array,{assign:qe,create:ze,defineProperty:Ke,entries:Ge}=Object,{all:Ye,resolve:Ve}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Xe=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,\"\")).href;function Ze(e){return e.startsWith(\".\")?Xe(e,this):e}const Qe=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},et=e=>Function(`'use strict';return (${e})`)(),tt=e=>e.replace(/^(?:\\n|\\r\\n)/,\"\"),nt=Symbol.for(\"polyscript.js_modules\"),rt=new Map;Ke(globalThis,nt,{value:rt}),new Proxy(rt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const st=(e,t)=>!t.startsWith(\"_\"),ot=(e,t)=>new Proxy(e,{has:st,get:(e,n)=>e[t][n]}),at=(e,t)=>import(e).then((e=>{rt.set(t,{...e})})),it=e=>new Promise(((t,n)=>{document.querySelector(`link[rel=\"stylesheet\"][href=\"${e}\"]`)?t():document.head.append(qe(document.createElement(\"link\"),{rel:\"stylesheet\",href:e,onload:t,onerror:n}))})),ct=e=>/\\.css$/i.test(new URL(e).pathname),lt=(e,t)=>e.has(t),ut=e=>[...e.keys()];var pt=(e,t,n,r)=>{const s=globalThis[nt];if(n)for(let[e,t]of Ge(n)){let n=s.get(t);n&&!Je(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:lt,ownKeys:ut,get:(e,s)=>{let o=e.get(s);if(Je(o)){let a=o;o=null;for(let e of a)e=Xe(e,r),ct(e)?n.importCSS(e):(n.importJS(e,s),o=t[nt].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const dt=new Map,ft=e=>dt.get(e),yt=(e,t)=>{try{return Function(\"require\",t)(ft)}catch(t){Ie.get(e).stderr(t)}};var ht={type:\"dummy\",module:()=>\"data:application/javascript,\",engine:e=>Ne().get(e),registerJSModule(e,t,n){dt.set(t,n)},run:yt,runAsync:yt,runEvent:async(e,t,n)=>{try{await Function(\"require\",\"e\",`return ${t}(e)`)(ft,n)}catch(t){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const mt=Object.getOwnPropertyDescriptors(Response.prototype),wt=e=>\"function\"==typeof e,gt={get:(e,t)=>mt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!wt(r)?e.then((e=>e[t])):(...n)=>e.then((e=>e[t](...n))))(e,t,mt[t]):((e,t)=>wt(t)?t.bind(e):t)(e,e[t])};var bt=(e,...t)=>new Proxy(fetch(e,...t),gt);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 _t=!globalThis.window,At=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):vt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},Et=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},vt=(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(/^\\/+/,\"/\")},kt=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\"))).filter((e=>\"\"!==e&&\".\"!==e)).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},xt=(e,t)=>bt(Xe(e,t)).arrayBuffer(),jt=(e,t,n,r)=>Ye((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(Je(r))return r.map((n=>({url:kt([e,n]),path:kt([t,n])})));const s=n||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:kt([t,s])}]}))})(n).map((({url:n,path:s})=>xt(n,r).then((n=>e.writeFile(t,s,n)))))),Bt=(e,t)=>t.endsWith(\"/\")?`${t}${e.split(\"/\").pop()}`:t,Pt=(e,t)=>e.replace(/\\{.+?\\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),$t=(e,t,n,r)=>Ye((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of Ge(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,Pt(o,t))}else{const e=Pt(s,t),a=Bt(e,Pt(o||\"./\",t));if(n.has(a)&&!a.endsWith(\"/*\"))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>xt(n,r).then((r=>e.writeFile(t,s,r,n)))))),Tt=({main:e,worker:t},n)=>{const r=[];if(t&&_t)for(let[e,s]of Ge(t))e=Xe(e,n),r.push(at(e,s));if(e&&!_t)for(let[t,s]of Ge(e))t=Xe(t,n),ct(t)?it(t):r.push(at(t,s));return Ye(r)},Ft=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:Ot}=Object,Rt=e=>{const t=typeof e;switch(t){case\"function\":case\"undefined\":return\"\";case\"object\":return null===e?\"null\":\"object\";default:return t}};let Mt=\"coincident-\";try{new SharedArrayBuffer(4,{maxByteLength:8}),Mt+=crypto.randomUUID()}catch(Ot){Mt+=Math.random().toString(36).substring(2)}var Dt={ref:0,array:1,object:2,number:3,string:4,true:5,false:6,null:7,buffer:8,view:9,symbol:10,date:11,bigint:12,undefined:13,map:14,set:15,regexp:16,error:17};const{defineProperty:Lt}=Object,Ct=e=>{switch(e[Nt++]){case Dt.array:{const t=e[Nt++],n=[];e[Nt-2]=n;for(let r=0;r<t;r++)n[r]=Ct(e);return n}case Dt.object:{const t=e[Nt++],n={};e[Nt-2]=n;for(let r=0;r<t;r++)n[Ct(e)]=Ct(e);return n}case Dt.string:{const t=e[Nt++];return e[Nt-2]=t,t}case Dt.ref:return e[e[Nt++]];case Dt.number:return e[Nt++];case Dt.bigint:return BigInt(e[Nt++]);case Dt.true:return!0;case Dt.false:return!1;case Dt.null:return null;case Dt.undefined:return;case Dt.buffer:{const t=e[Nt++],n=e[Nt++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[Nt-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[Nt++];return s}case Dt.view:{const t=e[Nt++],n=e[Nt++],r=e[Nt++],s=Nt-4,o=[Ct(e),n];r&&o.push(r);const a=new globalThis[t](...o);return e[s]=a,a}case Dt.symbol:return(t=e[Nt++]).startsWith(\"Symbol.\")?Symbol[t.slice(t.indexOf(\".\")+1)]:Symbol.for(t);case Dt.date:{const t=new Date(e[Nt++]);return e[Nt-2]=t,t}case Dt.map:{const t=e[Nt++],n=new Map;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e),r=Ct(e);void 0!==t&&n.set(t,r)}return n}case Dt.set:{const t=e[Nt++],n=new Set;e[Nt-2]=n;for(let r=0;r<t;r++){const t=Ct(e);void 0!==t&&n.add(t)}return n}case Dt.regexp:{const t=e[Nt++],n=e[Nt++],r=new RegExp(t,n);return e[Nt-3]=r,r}case Dt.error:{const t=globalThis[e[Nt++]]||Error,n=e[Nt++],r=e[Nt++],s=new t(n,{cause:e[Nt++]});return e[Nt-5]=Lt(s,\"stack\",{value:r}),s}default:throw new TypeError(`Unknown type: ${e[Nt-1]}`)}var t},{parse:It}=JSON;let Nt=0;const{isArray:Ut}=Array,{isView:Ht}=ArrayBuffer,{stringify:Wt}=JSON,Jt=(e,t,n)=>{const r=t.get(n);return\"number\"==typeof r?(e.push(Dt.ref,r),!0):(t.set(n,e.length),!1)},qt=(e,t,n,r=Rt(n))=>{switch(r){case\"null\":e.push(Dt.null);break;case\"object\":if(Jt(e,t,n))break;switch(!0){case Ut(n):{const r=n.length;e.push(Dt.array,r);for(let s=0;s<r;s++)qt(e,t,n[s]);break}case Ht(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(Dt.view,(e=>{for(;!(e.name in globalThis);)e=Ot(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),Jt(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(Dt.buffer,t,r),t){const r=new Uint8Array(n,0,t);for(let t=0;t<r.length;t+=32767)e.push.apply(e,r.subarray(t,t+32767))}break}case n instanceof Date:e.push(Dt.date,+n);break;case n instanceof Map:{const r=e.push(Dt.map,0);let s=0;for(const[r,o]of n){const n=Rt(r),a=Rt(o);n&&a&&(qt(e,t,r,n),qt(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(Dt.set,0);let s=0;for(const r of n){const n=Rt(r);n&&(qt(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(Dt.regexp,n.source,n.flags);break;case n instanceof Error:e.push(Dt.error,n.name,n.message,n.stack,n.cause);break;default:{if(\"toJSON\"in n){const r=n.toJSON();if(r===n){e.push(Dt.object,0);break}if(Jt(e,t,n=r))break}const r=e.push(Dt.object,0);let s=0;for(const r in n){const o=n[r],a=Rt(o);a&&(qt(e,t,r,\"string\"),qt(e,t,o,a),s++)}e[r-1]=s;break}}break;case\"boolean\":e.push(n?Dt.true:Dt.false);break;case\"string\":if(Jt(e,t,n))break;e.push(Dt.string,n);break;case\"bigint\":e.push(Dt[r],n.toString());break;case\"symbol\":{const t=(e=>{const t=String(e).slice(7,-1);return t.startsWith(\"Symbol.\")||Symbol.keyFor(e)?t:\"\"})(n);if(t){e.push(Dt[r],t);break}}case\"\":e.push(Dt.undefined);break;default:e.push(Dt[r],n)}},zt={parse:e=>{return t=It(e),Nt=0,t.length?Ct(t):void 0;var t},stringify:e=>Wt((e=>{const t=[];return qt(t,new Map,e),t})(e))},Kt=new WeakMap,Gt=async(e,t,n,r,s)=>{r.files&&(t(\"Loading files\"),await $t(e,n,r.files,s),t(\"Loaded files\")),r.fetch&&(t(\"Loading fetch\"),await jt(e,n,r.fetch,s),t(\"Loaded fetch\")),r.js_modules&&(t(\"Loading JS modules\"),await Tt(r.js_modules,s),t(\"Loaded JS modules\"))},Yt=(e,t,n)=>{\"polyscript\"===t&&(n.lazy_py_modules=async(...t)=>(await Kt.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new i(e);return await t.sync(),t},n.JSON=zt),e.registerJsModule(t,n)},Vt=(e,t)=>{if(e.endsWith(\"/*\")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return\"\"},Xt=(e,t,...n)=>{try{return e.runPython(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Zt=async(e,t,...n)=>{try{return await e.runPythonAsync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},Qt=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){Ie.get(e).stderr(t)}};var en=(new TextEncoder).encode(\"_F='github:'\\n_E='user-agent'\\n_D=True\\n_C=False\\n_B='/'\\n_A=None\\nfrom uio import StringIO\\nimport sys\\nclass Response:\\n\\tdef __init__(A,f):A.raw=f;A.encoding='utf-8';A._cached=_A\\n\\tdef close(A):\\n\\t\\tif A.raw:A.raw.close();A.raw=_A\\n\\t\\tA._cached=_A\\n\\t@property\\n\\tdef content(self):\\n\\t\\tA=self\\n\\t\\tif A._cached is _A:\\n\\t\\t\\ttry:A._cached=A.raw.read()\\n\\t\\t\\tfinally:A.raw.close();A.raw=_A\\n\\t\\treturn A._cached\\n\\t@property\\n\\tdef text(self):return str(self.content,self.encoding)\\n\\tdef json(A):import ujson;return ujson.loads(A.content)\\nHEADERS_TO_IGNORE=_E,\\ntry:import js\\nexcept Exception as err:raise OSError('This version of urequests can only be used in the browser')\\nHEADERS_TO_IGNORE=_E,\\ndef request(method,url,data=_A,json=_A,headers={},stream=_A,auth=_A,timeout=_A,parse_headers=_D):\\n\\tE=timeout;D=method;C=data;from js import XMLHttpRequest as G;A=G.new();A.withCredentials=_C\\n\\tif auth is not _A:import ubinascii;H,I=auth;A.open(D,url,_C,H,I)\\n\\telse:A.open(D,url,_C)\\n\\tfor(F,J)in headers.items():\\n\\t\\tif F.lower()not in HEADERS_TO_IGNORE:A.setRequestHeader(F,J)\\n\\tif E:A.timeout=int(E*1000)\\n\\tif json is not _A:assert C is _A;import ujson;C=ujson.dumps(json);A.setRequestHeader('Content-Type','application/json')\\n\\tA.send(C);B=Response(StringIO(A.responseText));B.status_code=A.status;B.reason=A.statusText;B.headers=A.getAllResponseHeaders();return B\\ndef get(url,**A):return request('GET',url,**A)\\n_PACKAGE_INDEX=const('https://micropython.org/pi/v2')\\n_CHUNK_SIZE=128\\ndef _ensure_path_exists(path):\\n\\timport os;A=path.split(_B)\\n\\tif not A[0]:A.pop(0);A[0]=_B+A[0]\\n\\tB=''\\n\\tfor C in range(len(A)-1):\\n\\t\\tB+=A[C]\\n\\t\\ttry:os.stat(B)\\n\\t\\texcept:os.mkdir(B)\\n\\t\\tB+=_B\\ndef _chunk(src,dest):\\n\\tA=memoryview(bytearray(_CHUNK_SIZE))\\n\\twhile _D:\\n\\t\\tB=src.readinto(A)\\n\\t\\tif B==0:break\\n\\t\\tdest(A if B==_CHUNK_SIZE else A[:B])\\ndef _check_exists(path,short_hash):\\n\\tA=short_hash;import os\\n\\ttry:\\n\\t\\timport binascii as C,hashlib as D\\n\\t\\twith open(path,'rb')as E:B=D.sha256();_chunk(E,B.update);F=str(C.hexlify(B.digest())[:len(A)],'utf-8');return F==A\\n\\texcept:return _C\\ndef _rewrite_url(url,branch=_A):\\n\\tB=branch;A=url\\n\\tif not B:B='HEAD'\\n\\tif A.startswith(_F):A=A[7:].split(_B);A='https://raw.githubusercontent.com/'+A[0]+_B+A[1]+_B+B+_B+_B.join(A[2:])\\n\\treturn A\\ndef _download_file(url,dest):\\n\\tB=dest;A=get(url)\\n\\ttry:\\n\\t\\tif A.status_code!=200:print('Error',A.status_code,'requesting',url);return _C\\n\\t\\tprint('Copying:',B);_ensure_path_exists(B)\\n\\t\\twith open(B,'wb')as C:_chunk(A.raw,C.write)\\n\\t\\treturn _D\\n\\tfinally:A.close()\\ndef _install_json(package_json_url,index,target,version,mpy):\\n\\tK='File not found: {} {}';I=version;H=index;G=package_json_url;D=target;E=get(_rewrite_url(G,I))\\n\\ttry:\\n\\t\\tif E.status_code!=200:print('Package not found:',G);return _C\\n\\t\\tF=E.json()\\n\\tfinally:E.close()\\n\\tfor(A,C)in F.get('hashes',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif _check_exists(B,C):print('Exists:',B)\\n\\t\\telse:\\n\\t\\t\\tL='{}/file/{}/{}'.format(H,C[:2],C)\\n\\t\\t\\tif not _download_file(L,B):print(K.format(A,C));return _C\\n\\tfor(A,J)in F.get('urls',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif not _download_file(_rewrite_url(J,I),B):print(K.format(A,J));return _C\\n\\tfor(M,N)in F.get('deps',()):\\n\\t\\tif not _install_package(M,H,D,N,mpy):return _C\\n\\treturn _D\\ndef _install_package(package,index,target,version,mpy):\\n\\tD=index;C=target;B=version;A=package\\n\\tif A.startswith('http://')or A.startswith('https://')or A.startswith(_F):\\n\\t\\tif A.endswith('.py')or A.endswith('.mpy'):print('Downloading {} to {}'.format(A,C));return _download_file(_rewrite_url(A,B),C+_B+A.rsplit(_B)[-1])\\n\\t\\telse:\\n\\t\\t\\tif not A.endswith('.json'):\\n\\t\\t\\t\\tif not A.endswith(_B):A+=_B\\n\\t\\t\\t\\tA+='package.json'\\n\\t\\t\\tprint('Installing {} to {}'.format(A,C))\\n\\telse:\\n\\t\\tif not B:B='latest'\\n\\t\\tprint('Installing {} ({}) from {} to {}'.format(A,B,D,C));E=sys.implementation._mpy&255 if mpy and hasattr(sys.implementation,'_mpy')else'py';A='{}/package/{}/{}/{}.json'.format(D,'py',A,B)\\n\\treturn _install_json(A,D,C,B,mpy)\\ndef install(package,index=_A,target=_A,version=_A,mpy=_D):\\n\\tB=target;A=index\\n\\tif not B:\\n\\t\\tfor C in sys.path:\\n\\t\\t\\tif C.endswith('/lib'):B=C;break\\n\\t\\telse:print('Unable to find lib dir in sys.path');return\\n\\tif not A:A=_PACKAGE_INDEX\\n\\tif _install_package(package,A.rstrip(_B),B,version,mpy):print('Done')\\n\\telse:print('Package may be partially installed')\");const tn=async e=>(await import(\"./toml-DiUM0_qs.js\")).parse(e);async function nn(e,t){return new Promise(((n,r)=>{e.syncfs(t,(e=>{e?r(e):n()}))}))}function rn(e){const t=e.FS,n=e.FS.filesystems.MEMFS,r=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:function(e){if(!e.opts.fileSystemHandle)throw new Error(\"opts.fileSystemHandle is required\");return n.mount.apply(null,arguments)},syncfs:async(e,t,n)=>{try{const r=s.getLocalSet(e),o=await s.getRemoteSet(e),a=t?o:r,i=t?r:o;await s.reconcile(e,a,i),n(null)}catch(e){n(e)}},getLocalSet:e=>{let n=Object.create(null);function s(e){return\".\"!==e&&\"..\"!==e}function o(e){return t=>r.join2(e,t)}let a=t.readdir(e.mountpoint).filter(s).map(o(e.mountpoint));for(;a.length;){let e=a.pop(),r=t.stat(e);t.isDir(r.mode)&&a.push.apply(a,t.readdir(e).filter(s).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:\"local\",entries:n}},getRemoteSet:async e=>{const t=Object.create(null),n=await sn(e.opts.fileSystemHandle);for(const[o,a]of n)\".\"!==o&&(t[r.join2(e.mountpoint,o)]={timestamp:\"file\"===a.kind?(await a.getFile()).lastModifiedDate:new Date,mode:\"file\"===a.kind?s.FILE_MODE:s.DIR_MODE});return{type:\"remote\",entries:t,handles:n}},loadLocalEntry:e=>{const r=t.lookupPath(e).node,s=t.stat(e);if(t.isDir(s.mode))return{timestamp:s.mtime,mode:s.mode};if(t.isFile(s.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:s.mtime,mode:s.mode,contents:r.contents};throw new Error(\"node type not supported\")},storeLocalEntry:(e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else{if(!t.isFile(n.mode))throw new Error(\"node type not supported\");t.writeFile(e,n.contents,{canOwn:!0})}t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},removeLocalEntry:e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},loadRemoteEntry:async e=>{if(\"file\"===e.kind){const t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:s.FILE_MODE,timestamp:t.lastModifiedDate}}if(\"directory\"===e.kind)return{mode:s.DIR_MODE,timestamp:new Date};throw new Error(\"unknown kind: \"+e.kind)},storeRemoteEntry:async(e,n,s)=>{const o=e.get(r.dirname(n)),a=t.isFile(s.mode)?await o.getFileHandle(r.basename(n),{create:!0}):await o.getDirectoryHandle(r.basename(n),{create:!0});if(\"file\"===a.kind){const e=await a.createWritable();await e.write(s.contents),await e.close()}e.set(n,a)},removeRemoteEntry:async(e,t)=>{const n=e.get(r.dirname(t));await n.removeEntry(r.basename(t)),e.delete(t)},reconcile:async(e,n,o)=>{let a=0;const i=[];Object.keys(n.entries).forEach((function(e){const r=n.entries[e],s=o.entries[e];(!s||t.isFile(r.mode)&&r.timestamp.getTime()>s.timestamp.getTime())&&(i.push(e),a++)})),i.sort();const c=[];if(Object.keys(o.entries).forEach((function(e){n.entries[e]||(c.push(e),a++)})),c.sort().reverse(),!a)return;const l=\"remote\"===n.type?n.handles:o.handles;for(const t of i){const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);if(\"local\"===o.type){const e=l.get(n),r=await s.loadRemoteEntry(e);s.storeLocalEntry(t,r)}else{const e=s.loadLocalEntry(t);await s.storeRemoteEntry(l,n,e)}}for(const t of c)if(\"local\"===o.type)s.removeLocalEntry(t);else{const n=r.normalize(t.replace(e.mountpoint,\"/\")).substring(1);await s.removeRemoteEntry(l,n)}}};return e.FS.filesystems.NATIVEFS_ASYNC=s,async function(e,n){if(\"FileSystemDirectoryHandle\"!==n.constructor.name)throw new TypeError(\"Expected argument 'fileSystemHandle' to be a FileSystemDirectoryHandle\");return function(e){t.mkdirTree?t.mkdirTree(e):vt(t,e);const{node:n}=t.lookupPath(e,{follow_mount:!1});if(t.isMountpoint(n))throw new Error(`path '${e}' is already a file system mount point`);if(!t.isDir(n.mode))throw new Error(`path '${e}' points to a file not a directory`);for(const t in n.contents)throw new Error(`directory '${e}' is not empty`)}(e),t.mount(t.filesystems.NATIVEFS_ASYNC,{fileSystemHandle:n},e),await nn(t,!0),{syncfs:async()=>await nn(t,!1)}}}const sn=async e=>{const t=[];await async function e(n){for await(const r of n.values())t.push(r),\"directory\"===r.kind&&await e(r)}(e);const n=new Map;n.set(\".\",e);for(const r of t){const t=(await e.resolve(r)).join(\"/\");n.set(t,r)}return n},on=(e,t)=>{try{e.mkdir(t)}catch(e){}},an=Ft(\"mpy\");var cn={type:\"micropython\",module:(e=\"1.25.0\")=>`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}=Ne({stderr:He(console.error),stdout:He(console.log)});n=n.replace(/\\.m?js$/,\".wasm\"),an(\"Loading MicroPython\");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=ln.bind(this,i,r);return Kt.set(i,c),await Gt(this,an,i,t,r),this.writeFile(i,\"./mip.py\",en),t.packages&&(an(\"Loading packages\"),await c(t.packages.map(Ze,r)),an(\"Loaded packages\")),an(\"Loaded MicroPython\"),i.mountNativeFS||(i.mountNativeFS=rn(i._module)),i},registerJSModule:Yt,run:Xt,runAsync:Zt,runEvent:Qt,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=Vt(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-DxlTOqbw.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)on(s,i);else{on(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 At(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 At(i,t,n)}};async function ln(e,t,n){let r;for(const s of n)if(s.endsWith(\".whl\")){const n=Xe(s,t),r=await bt(n).arrayBuffer();await this.writeFile(e,\"./*\",r,n)}else r||(r=e.pyimport(\"mip\")),r.install(s)}const un={dict_converter:Object.fromEntries},{stringify:pn}=JSON;let dn=!1;const fn=e=>(...t)=>{try{return dn=!0,e(...t)}finally{dn=!1}};let yn=!1;const hn=()=>{if(yn)return;yn=!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){dn=!1;let o=e.get(s)?.deref();if(!o)try{o=fe(s.copy(),t),e.set(s,new WeakRef(o))}catch(e){console.error(e)}o&&(n[r]=o),dn=!0}}},{call:r}=Function,s=r.bind(r,r.apply);Object.defineProperties(Function.prototype,{apply:{value(e,t){return dn&&n(t),s(this,e,t)}},call:{value(e,...t){return dn&&n(t),s(this,e,t)}}})},mn=Ft(\"py\"),wn=new WeakMap;var gn={type:\"pyodide\",module:(e=\"0.27.5\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){_t||\"auto\"!==t.experimental_create_proxy||hn(),mn(\"Loading Pyodide\");let{packages:s,index_urls:o}=t;s&&(s=s.map(Ze,r)),mn(\"Loading Storage\");const a=n.slice(0,n.lastIndexOf(\"/\")),c=new i(a),l={indexURL:a},u=\"never\"!==t.packages_cache;if(await c.sync(),u){if(s){s=s.sort();const e=pn(s);if(c.has(e)){const t=new Blob([c.get(e)],{type:\"application/json\"});l.lockFileURL=URL.createObjectURL(t),l.packages=s.map((e=>e.split(/[>=<]=/)[0])),s=null}}}else c.clear();mn(\"Loaded Storage\");const{stderr:p,stdout:d,get:f}=Ne(),y=await f(e({stderr:p,stdout:d,...l})),h=_n.bind(y);return o&&wn.set(y,o),Kt.set(y,h),await Gt(this,mn,y,t,r),s&&await h(s,c,u),await c.close(),l.lockFileURL&&URL.revokeObjectURL(l.lockFileURL),mn(\"Loaded Pyodide\"),y},registerJSModule:Yt,run:fn(Xt),runAsync:fn(Zt),runEvent:fn(Qt),transform:(e,t)=>bn.call(e,t),writeFile:(e,t,n,r)=>{const s=Vt(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 At({FS:o,PATH:a,PATH_FS:i},t,n)}};function bn(e){const{ffi:{PyProxy:t}}=this;if(e&&\"object\"==typeof e){if(e instanceof t)return e.toJs(un);if(e instanceof Map)return new Map([...e.entries()]);if(Je(e))return e.map(bn,this)}return e}async function _n(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,mn(e),console.log=s};console.log=s,await this.loadPackage(\"micropip\");const o=this.pyimport(\"micropip\");if(wn.has(this)&&o.set_index_urls(wn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(pn(e),n)}o.destroy()}const An=\"ruby-wasm-wasi\",En=An.replace(/\\W+/g,\"_\");var vn={type:An,experimental:!0,module:(e=\"2.7.1\")=>`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 bt(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await $t(this,a,t.files,r),t.fetch&&await jt(this,a,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,\"__\");const r=`__module_${En}_${t}`;globalThis[r]=n,this.run(e,`require \"js\";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(We(t),...n),runAsync:(e,t,...n)=>e.evalAsync(We(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${En}_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 Sn={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}=Ne(),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 $t(this,c,n.files,s),n.fetch&&await jt(this,c,n.fetch,s),n.js_modules&&await Tt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(We(t),...n)}catch(t){Ie.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(We(t),...n)}catch(t){Ie.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){Ie.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(vt(e,Et(t)),t=St(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const kn=new WeakMap,xn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=kn.get(e),{output:o,result:a}=await n.captureR(We(t));for(const{type:e,data:t}of o)s[e](t);return fe(a,r,{token:!1})};var jn={type:\"webr\",experimental:!0,module:(e=\"0.4.2\")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=Ne(),o=new e.WebR;await s(o.init().then((()=>o)));const a=await new o.Shelter;return kn.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:Ie.get(o)}),t.files&&await $t(this,o,t.files,r),t.fetch&&await jt(this,o,t.fetch,r),t.js_modules&&await Tt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:xn,runAsync:xn,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 Bn=new Map,Pn=new Map,$n=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\"@\"),s=Bn.get(n),o=/^(?:\\.?\\.?\\/|[a-z0-9-]+:\\/\\/)/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=>(Pn.set(t,e),s(r,e,n,o))))}}),Tn=e=>{for(const t of[].concat(e.type))Bn.set(t,e)};for(const e of[ht,cn,gn,vn,Sn,jn])Tn(e);const{parse:Fn}=JSON,On=(e,t,n={})=>{const[r,s]=((e,t=\"./config.txt\")=>{let n=typeof e;return\"string\"===n&&/\\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[Xe(e),n]})(e,t);return\"json\"===s?n=bt(r).json():\"toml\"===s?n=bt(r).text().then(tn):\"string\"===s?n=Rn(e):\"object\"===s&&e?n=e:\"txt\"===s&&\"string\"==typeof n&&(n=Rn(n)),[n,e=r]},Rn=e=>{try{return Fn(e)}catch(t){return tn(e)}},Mn=\"BeforeRun\",Dn=\"AfterRun\",Ln=[`code${Mn}`,`code${Mn}Async`,`code${Dn}`,`code${Dn}Async`],Cn=[\"onWorker\",\"onReady\",`on${Mn}`,`on${Mn}Async`,`on${Dn}`,`on${Dn}Async`];function In(e,t){const{run:n,runAsync:r}=Bn.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Nn=(e,t,n,r,s,o)=>{if(s||o){const a=In.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,Hn,Wn;const Jn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Un,Hn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:qn,native:zn,window:Kn,isWindowProxy:Gn}=await(async e=>{let t=!1;const n=e?.decoder||P,r=await G({...e,decoder(e){const r=n(e),s=H(e);return(e,n)=>t?(t=!1,s(e,n)):r(e,n)}}),s=r.proxy[w],{isProxy:o,global:a,method:i}=Le((function(...e){return t=!0,s.apply(this,e)}),e?.transform||(e=>e));return r.proxy[g]=i,{...r,window:a,isWindowProxy:o}})({decoder:h,transfer:!1,transform:e=>Wn?Wn(e):e}),Yn={polyfill:!zn,sync:qn,window:zn?Kn:null,isWindowProxy:Gn,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Jn(\"message\",(({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Un=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,y=((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(l,p),h=await((e,t,n,r={})=>(t&&([r,t]=On(t,n,r)),Ve(r).then((n=>$n[e](n,t)))))(y,t,n,d),{js_modules:m}=Pn.get(y),w=m?.main,g=ze(Bn.get(l)),b=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:Ie.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,u||l,d||{},h);let _=\"run\";if(f&&(_+=\"Async\"),s){let e,t,n=\"\",r=\"\";for(const e of Ln){const t=s[e];if(t){const s=e.endsWith(\"Async\");(s&&f||!s&&!f)&&(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,tt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,tt(t),...o);return r&&await s(e,r,...o),a}})(g,_,n,r);for(const n of Cn.slice(2)){const r=s[n];if(r){const s=n.endsWith(\"Async\");if(s&&f||!s&&!f){const s=et(r);n.startsWith(\"onBefore\")?e=s:t=s}}}Nn(g,b,Yn,f,e,t)}let A,E,v,S=null,k=\"\";zn&&(({CustomEvent:A,document:E}=Kn),S=o&&E.getElementById(o)||null,v=e=>Qe(S,u||l,e,!0,A));const x=pt(Kn,qn,w,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}`,ot(r,e));t.registerJSModule(n,s,r)})(l,g,h,x),g.registerJSModule(h,\"polyscript\",{IDBMap:a,IDBMapSync:i,xworker:Yn,currentScript:S,config:b.config,js_modules:x,get target(){return!k&&S&&(\"SCRIPT\"===c?S.after(qe(Kn.document.createElement(`script-${u||l}`),{id:k=`${o}-target`})):(k=o,S.replaceChildren(),S.style.display=\"block\")),k}}),Hn=g.runEvent.bind(g,h),Wn=g.transform.bind(g,h),S&&v(\"ready\"),s?.onReady&&et(s?.onReady).call(g,In.call(g,b,h),Yn),await g[_](h,r),[\"micropython\",\"pyodide\"].includes(g.type)){const e=\"polyscript\",t=`__${e}_workers__`,n=\"__export__\";h.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&&h.runPython([`from ${e} import xworker as ${t}`,...r.map((e=>`${t}.sync.${e} = ${e}`)),`del ${t}`].join(\"\\n\"))}return S&&v(\"done\"),postMessage(\"polyscript:done\"),h}catch(e){postMessage(e)}})(),Jn(\"error\"),Jn(\"message\"),Jn(\"messageerror\"),zn&&addEventListener(\"py:progress\",(({type:e,detail:t})=>{Kn.dispatchEvent(new Kn.CustomEvent(e,{detail:t}))}))}));\n".replace(re,place)],{type:'application/javascript'})), ...args) | ||
/* c8 ignore stop */ |
{ | ||
"name": "polyscript", | ||
"version": "0.17.8", | ||
"version": "0.17.9", | ||
"description": "PyScript single core to rule them all", | ||
@@ -50,3 +50,3 @@ "main": "./esm/index.js", | ||
"@node-loader/import-maps": "^1.1.0", | ||
"@playwright/test": "^1.51.1", | ||
"@playwright/test": "^1.52.0", | ||
"@rollup/plugin-node-resolve": "^16.0.1", | ||
@@ -57,5 +57,5 @@ "@rollup/plugin-terser": "^0.4.4", | ||
"chokidar": "^4.0.3", | ||
"eslint": "^9.24.0", | ||
"eslint": "^9.25.1", | ||
"linkedom": "^0.18.9", | ||
"rollup": "^4.39.0", | ||
"rollup": "^4.40.0", | ||
"static-handler": "^0.5.3", | ||
@@ -87,3 +87,2 @@ "typescript": "^5.8.3" | ||
"@ungap/with-resolvers": "^0.1.0", | ||
"@webreflection/coincident": "^0.2.13", | ||
"@webreflection/fetch": "^0.1.5", | ||
@@ -93,2 +92,3 @@ "@webreflection/idb-map": "^0.3.2", | ||
"codedent": "^0.1.2", | ||
"coincident": "^3.0.2", | ||
"gc-hook": "^0.4.1", | ||
@@ -101,4 +101,4 @@ "html-escaper": "^3.0.3", | ||
"worker": { | ||
"blob": "sha256-Pt5ry63tlrJnXUelto/vTeeI0Ra4aTpqrOuo1grE0bg=" | ||
"blob": "sha256-iaE9TznK/Chitl2RyGnEcVbganaVJtMNGrTY6src9DA=" | ||
} | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
1207295
0.29%4373
0.09%+ Added
+ Added
+ Added
+ Added
- Removed
- Removed