code-playpad 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@ experimental C and C++, multi-file React, and Next.js App Router projects — en
9
9
  **[Live demo →](https://code-playpad.swengr.com)**
10
10
 
11
11
  ```html
12
- <script type="module" src="https://cdn.jsdelivr.net/npm/code-playpad@0.18.0/dist/standalone.js"></script>
12
+ <script type="module" src="https://cdn.jsdelivr.net/npm/code-playpad@0.19.0/dist/standalone.js"></script>
13
13
 
14
14
  <code-playpad height="auto">
15
15
  print("hello from a static page")
@@ -518,7 +518,7 @@ actually sent.
518
518
  ### From a CDN — nothing to install
519
519
 
520
520
  ```html
521
- <script type="module" src="https://cdn.jsdelivr.net/npm/code-playpad@0.18.0/dist/standalone.js"></script>
521
+ <script type="module" src="https://cdn.jsdelivr.net/npm/code-playpad@0.19.0/dist/standalone.js"></script>
522
522
  ```
523
523
 
524
524
  This is the `standalone` build: CodeMirror is bundled in, so a static blog post
@@ -586,6 +586,8 @@ Next.js, Astro and SvelteKit need no dynamic import or `client:only` guard.
586
586
  | `autorun` | runs once, on its own, when scrolled into view |
587
587
  | `stdin` | shows the standard-input box up front |
588
588
  | `persist` | key under which edits are saved (see [Saving work](#saving-work)) |
589
+ | `file-view-switch` | shows a toolbar button that switches between tabs and the tree (see [Several files](#several-files)) |
590
+ | `file-actions` | lets the reader add, rename and remove files (see [Letting readers change the files](#letting-readers-change-the-files)). `readonly` turns it off |
589
591
  | `entry` | which file Run executes, for multi-file widgets. It must name one of the widget's files: a wrong name is an error, and no other file runs in its place. An inline snippet takes this name |
590
592
  | `practice` | Java only: test cases for one method, as JSON (see [Practice mode](#practice-mode-java)) |
591
593
 
@@ -730,6 +732,57 @@ on the next run — the import cache is cleared between runs.
730
732
  Highlighting follows the **file**, not the runtime: a `.json` beside your
731
733
  JavaScript is highlighted as JSON, a `.csv` beside your Python is plain text.
732
734
 
735
+ ### Letting readers switch the view
736
+
737
+ Add `file-view-switch` (`fileViewSwitch` on the React wrapper) to show a toolbar button
738
+ that switches between tabs and the tree. It's off by default, and it only shows when the
739
+ widget has a file list. `file-view` sets the view it starts in, and the button changes that
740
+ attribute, so a page can read the current view from it. The choice isn't saved: a reload
741
+ goes back to the page's `file-view`.
742
+
743
+ The widget's height can change with the view, because tabs take a row above the code and a
744
+ tree doesn't. In a wide React or Next.js widget the layout changes as well, since the preview
745
+ sits beside the code with tabs and under it with a tree.
746
+
747
+ ### Letting readers change the files
748
+
749
+ Add `file-actions` (`fileActions` on the React wrapper) and a reader can add, rename
750
+ and remove files from inside the widget. It works for every language, and it's off by
751
+ default.
752
+
753
+ ```html
754
+ <code-playpad language="react" file-view="tree" file-actions>
755
+ ```
756
+
757
+ - **In a tree,** the header has New file and New folder buttons, and each folder has a
758
+ `+` for a new file inside it. They add to the open file's folder until you choose another
759
+ place: click a folder to add there, or click **Files** to add at the top level. Opening a
760
+ file goes back to that file's folder. The name box appears where the file will go.
761
+ - **In tabs,** a `+` ends the row. Tabs have no folder rows, so the name box starts with
762
+ the open file's folder (`src/`), and you edit that text to put the file elsewhere.
763
+ - **A folder needs a file.** A new folder asks for its first file straight away. It's
764
+ saved when that file is created, and Escape takes it away. In either view, a name such
765
+ as `components/TaskLine.jsx` creates the folders it needs. A folder disappears with its
766
+ last file.
767
+ - **Rename and remove** are in each file's `⋯` button. Removing a file with code in it
768
+ asks first.
769
+ - The file bar always shows, even with one file, and the file list scrolls, so changing
770
+ files never resizes the widget. New files start empty, and importing one before writing
771
+ it gives that language's normal run error. Renaming a file doesn't change the imports
772
+ that name it.
773
+
774
+ Some names and files are refused:
775
+
776
+ | Case | What happens |
777
+ | --- | --- |
778
+ | An empty name, a backslash, or an empty, `.` or `..` folder | Refused, with a message by the name box |
779
+ | A name that exists | Refused, and the existing file opens, unchanged |
780
+ | A name that's a folder, or a path through a file | Refused, with a message |
781
+ | The only file, or the entry file | Nothing is offered |
782
+ | Files the language needs: in React, `index.html`, `src/main.jsx` and what `index.html` loads; in Next.js, the root layout | Nothing is offered |
783
+
784
+ A file a reader adds never takes over as the entry, even if it's called `main.py`.
785
+
733
786
  ## Input
734
787
 
735
788
  `input()` blocks for real. The prompt appears, a caret waits at the end of the
@@ -816,8 +869,15 @@ pad.files = { // replace the whole project
816
869
  pad.entry = 'main.py'; // which file Run executes
817
870
  pad.openFile('util.py'); // bring a tab on screen
818
871
  const everything = pad.getFiles(); // { name: contents }
872
+ pad.addFile('src/TaskLine.jsx', ''); // add and open a file; contents are optional
873
+ pad.renameFile('src/old.jsx', 'src/new.jsx');
874
+ pad.removeFile('src/old.jsx');
819
875
  ```
820
876
 
877
+ `addFile`, `renameFile` and `removeFile` follow the [same rules](#letting-readers-change-the-files)
878
+ as the reader's controls, and throw an error saying why when a rule refuses the change. An
879
+ existing name throws too, without opening that file. They work with or without `file-actions`.
880
+
821
881
  `prewarm()` is worth calling when you know the reader is about to run something
822
882
  — on a lesson page, for instance — so the ~6 MB Python download starts before
823
883
  they press Run rather than after.
@@ -860,6 +920,11 @@ React differs, because an app keeps running after its run:
860
920
 
861
921
  These two new events have no `py-*` name.
862
922
 
923
+ `playpad-files-change` fires when the reader or `addFile`, `renameFile` or `removeFile`
924
+ changes the file list, but not when you assign `pad.files`. It has no `py-*` name either.
925
+ Its detail is `{ action, name, previousName?, files }`, where `action` is `add`, `rename`
926
+ or `remove`, and `previousName` is there for a rename.
927
+
863
928
  A complete exercise check:
864
929
 
865
930
  ```html
@@ -967,6 +1032,17 @@ navigation *and* a full reload:
967
1032
  The page's file list stays authoritative: edits come back, but files you add or
968
1033
  remove later follow the page, not the old snapshot.
969
1034
 
1035
+ With `file-actions` as well, the reader's file list wins, so files they added, renamed
1036
+ or removed survive a reload. What you change on the page later still reaches them:
1037
+
1038
+ - A file you add appears.
1039
+ - A file you remove goes, unless they edited it.
1040
+ - A file you change updates, unless they edited it.
1041
+ - A starter file they removed stays removed, unless the widget can't run without it.
1042
+
1043
+ The Reset button restores the page's files and contents, and asks first if that would take
1044
+ away or bring back files. `pad.reset()` doesn't ask.
1045
+
970
1046
  For a course you usually also want completion state, which the package exports:
971
1047
 
972
1048
  ```js
@@ -1080,7 +1156,7 @@ code-playpad::part(output) { background: #fff7fb; }
1080
1156
  code-playpad::part(tabs) { border-bottom-width: 2px; }
1081
1157
  ```
1082
1158
 
1083
- The other parts are `theme-button`, `editor-theme-picker`, `window-button` and
1159
+ The other parts are `file-view-button`, `theme-button`, `editor-theme-picker`, `window-button` and
1084
1160
  `preview`.
1085
1161
 
1086
1162
  Both work from an ordinary stylesheet, no `::shadow` hacks. For dark mode, see
@@ -1216,6 +1292,20 @@ and `configureCSharp({ indexURL })`.
1216
1292
 
1217
1293
  ## Version history
1218
1294
 
1295
+ ### 0.19.0
1296
+
1297
+ - **Readers can add, rename and remove files with `file-actions`** (`fileActions` in React). The tree gets New
1298
+ file and New folder buttons, the tab bar gets a `+`, and each file's `⋯` button can rename or remove it. New
1299
+ files go in the open file's folder until the reader clicks another folder, or **Files** for the root. Files a
1300
+ project can't run without can't be changed. Reset restores the page's files, and with `persist` the reader's
1301
+ file list survives a reload. Without the attribute, widgets don't change.
1302
+ - **`pad.addFile()`, `pad.renameFile()` and `pad.removeFile()`,** with a `playpad-files-change` event. They follow
1303
+ the same rules as the buttons and throw when a rule refuses the change.
1304
+ - **`file-view-switch`** (`fileViewSwitch` in React) adds a toolbar button that switches between tree and tab
1305
+ views. In a wide React or Next.js widget the preview moves under the code in tree view, so the widget gets taller.
1306
+ - **`clearSnippet()` also deletes the saved copy of the page's starter files,** and `EditorHandle` gains a
1307
+ `renameFile` method.
1308
+
1219
1309
  ### 0.18.0
1220
1310
 
1221
1311
  - **Reset no longer breaks a project when another file is open.** It put the entry file's text in the open
@@ -1,4 +1,4 @@
1
- import{u as e}from"./element-DnazizZC.js";var t=5e3,n=4e3,r=65536,i=class{preview;payload;onRoute;#e=null;#t=null;#n=null;#r=null;#i=null;#a=!1;#o=null;#s=null;#c=``;#l=``;#u;#d=performance.now();#f=!1;#p=null;#m=null;constructor(e,t,n,r,i){this.preview=e,this.payload=t,this.onRoute=i,this.#i=n,this.#s=r}get live(){return this.#e!==null}send(e){this.#e?.contentWindow?.postMessage(e,`*`)}open(e,n=[]){let r=document.createElement(`iframe`);r.setAttribute(`sandbox`,`allow-scripts allow-forms`),r.setAttribute(`allow`,``),r.setAttribute(`referrerpolicy`,`no-referrer`),r.title=`Preview`,r.className=`cp-preview-frame`,r.srcdoc=e,this.#e=r,this.#t=this.preview.host.ownerDocument.defaultView??window,this.#t.addEventListener(`message`,this.#x),this.preview.host.replaceChildren(...n,r),this.#n=setTimeout(()=>{this.fail(`The preview did not start. A Content-Security-Policy on this page probably blocks it: see "Host pages with a CSP" in the README.`)},t)}fail(e,t={},n){this.#n&&clearTimeout(this.#n),this.#n=null,this.#v(e,t),this.#h(!0,n)}#h(e,t,n=e=>e()){let r=this.#i;this.#i=null,this.#s=null;let i={stdout:this.#c,...this.#l?{stderr:this.#l}:{},...t?{hint:t}:{},...e&&this.#u?{problem:this.#u}:{},durationMs:Math.round(performance.now()-this.#d),failed:e};n(()=>r?.(i))}#g=e=>{setTimeout(e,250),this.#o=()=>requestAnimationFrame(()=>requestAnimationFrame(e)),this.#a&&this.#o()};#_(e,t){this.#i&&(e===`warn`||e===`error`?this.#l+=`${t}\n`:this.#c+=`${t}\n`),this.preview.onConsole(e,t)}#v(e,t){let n=(t.file?`${t.file}${t.line?`:${t.line}`:``}${t.column?`:${t.column}`:``}: `:``)+e;this.#_(`error`,n),this.#y(n);let r={message:n,...t};this.#i?this.#u??=r:this.preview.onError(r)}#y(e){this.#p||(this.#p=document.createElement(`pre`),this.#p.className=`cp-preview-banner`,this.#p.setAttribute(`role`,`alert`),this.preview.host.append(this.#p)),this.#p.textContent=e}#b(e){this.#m||(this.#m=document.createElement(`div`),this.#m.className=`cp-preview-notice`,this.#m.setAttribute(`role`,`status`),this.preview.host.append(this.#m)),this.#m.textContent=e,this.#m.hidden=!1,this.#r&&clearTimeout(this.#r),this.#r=setTimeout(()=>{this.#m&&(this.#m.hidden=!0)},n)}showCompileBanner(e){e&&this.#p&&(this.#p.textContent+=`\n${e}`)}#x=e=>{if(!this.#e||e.source!==this.#e.contentWindow)return;let t=e.data;if(typeof t!=`object`||!t||t.__playpad!==1)return;let n=e=>String(e??``).slice(0,r);switch(t.type){case`booted`:if(this.#f)return;this.#f=!0,this.#n&&clearTimeout(this.#n),this.#n=null,this.preview.onStart?.(),e.ports[0]?.postMessage(this.payload);break;case`console`:{let e=t.level===`info`||t.level===`warn`||t.level===`error`?t.level:`log`;this.#_(e,n(t.text));break}case`error`:this.#v(n(t.message),{...typeof t.file==`string`?{file:t.file.slice(0,512)}:{},...typeof t.line==`number`?{line:t.line}:{}});break;case`fatal`:this.fail(n(t.message));break;case`entry-done`:this.#i&&this.#h(t.failed===!0,void 0,this.#g);break;case`drawn`:this.#a=!0,this.#o?.();break;case`render`:this.preview.onRender(n(t.rootText));break;case`route`:this.onRoute?.({url:n(t.url),canBack:t.canBack===!0,canForward:t.canForward===!0});break;case`alert`:this.#_(`info`,`alert: ${n(t.text)}`),this.#b(n(t.text))}};dispose(t){this.#n&&clearTimeout(this.#n),this.#r&&clearTimeout(this.#r),this.#t?.removeEventListener(`message`,this.#x),this.#e=null,this.preview.host.replaceChildren(),this.#s&&t&&this.#s(new e),this.#i=null,this.#s=null}},a=`(function(){var a=function(n,e){n.__playpad=1,parent.postMessage(n,"*",e||[])};function l(n,e){if(typeof n=="string")return n;if(typeof n=="function")return"[Function "+(n.name||"anonymous")+"]";if(typeof n!="object"||n===null)return String(n);if(n instanceof Error)return n.name+": "+n.message;if(n instanceof Node)return"<"+n.nodeName.toLowerCase()+">";try{return JSON.stringify(n)}catch{return String(n)}}function L(n){if(typeof n[0]!="string")return n.map(function(r){return l(r)}).join(" ");var e=1,i=n[0].replace(/%([sdifoOc%])/g,function(r,u){if(u==="%")return"%";if(e>=n.length)return r;var c=n[e++];return u==="c"?"":u==="d"||u==="i"?String(parseInt(c,10)):u==="f"?String(parseFloat(c)):l(c)});return[i].concat(n.slice(e).map(function(r){return l(r)})).join(" ")}["log","info","warn","error","debug"].forEach(function(n){var e=console[n];console[n]=function(){var i=Array.prototype.slice.call(arguments);a({type:"console",level:n==="debug"?"log":n,text:L(i)}),e.apply(console,i)}});function k(n){var e=/playpad-project\\/([^\\s:)]+):(\\d+)/.exec(n&&n.stack||"");return e?{file:e[1],line:Number(e[2])}:{}}function f(n,e){var i=n&&typeof n=="object"&&"message"in n,r=i&&n.name?n.name+": ":"",u=k(n);a({type:"error",message:e+r+(i?n.message:l(n)),file:u.file,line:u.line})}addEventListener("error",function(n){n.error?f(n.error,"Uncaught "):n.message==="Script error."?a({type:"error",message:"An error happened in the preview, but this browser hides its details. Open the browser's developer console to see it."}):f(n.message,"Uncaught ")}),window.reportError=function(n){f(n,"Uncaught ")};function M(n){return function(){try{return n.apply(this,arguments)}catch(e){f(e,"Uncaught ")}}}["setTimeout","setInterval","requestAnimationFrame","queueMicrotask"].forEach(function(n){var e=window[n];window[n]=function(i){var r=Array.prototype.slice.call(arguments);return typeof i=="function"&&(r[0]=M(i)),e.apply(window,r)}}),addEventListener("unhandledrejection",function(n){f(n.reason,"Unhandled promise rejection: ")}),window.alert=function(n){a({type:"alert",text:n===void 0?"":String(n)})},window.confirm=function(){return console.warn("confirm() cannot wait for an answer in this preview, so it returned true."),!0},window.prompt=function(){return console.warn("prompt() cannot wait for an answer in this preview, so it returned null."),null};var N=1e3,y=!1,_=0,v=0,b=new MessageChannel;b.port1.onmessage=function(){y=!1},window.__playpadLoopGuard=function(){if(!y){y=!0,_=performance.now(),v=0,b.port2.postMessage(0);return}if((++v&63)===0&&performance.now()-_>N)throw new Error("This loop ran for more than 1 second. Is it infinite?")};function O(n){var e=n.nonce;function i(o){e&&(o.nonce=e),document.head.appendChild(o)}function r(o){var d=document.createElement("script");d.textContent=o,i(d)}if(n.nextClient){if(window.__webpack_require__=function(o){return window.__playpadLoad(o)},window.__webpack_require__.u=function(){return""},window.__webpack_chunk_load__=function(){return Promise.resolve()},n.tailwind&&r(n.tailwind),r(n.nextClient),!window.__playpadNext){a({type:"fatal",message:"The preview could not run the Next.js runtime. A Content-Security-Policy on this page probably blocks it."});return}n.modules.forEach(function(o){o.kind==="js"&&r("__playpadDefine("+JSON.stringify(o.path)+",function(require,module,exports){"+o.text+\`
1
+ import{u as e}from"./element-Bzd1Vk4K.js";var t=5e3,n=4e3,r=65536,i=class{preview;payload;onRoute;#e=null;#t=null;#n=null;#r=null;#i=null;#a=!1;#o=null;#s=null;#c=``;#l=``;#u;#d=performance.now();#f=!1;#p=null;#m=null;constructor(e,t,n,r,i){this.preview=e,this.payload=t,this.onRoute=i,this.#i=n,this.#s=r}get live(){return this.#e!==null}send(e){this.#e?.contentWindow?.postMessage(e,`*`)}open(e,n=[]){let r=document.createElement(`iframe`);r.setAttribute(`sandbox`,`allow-scripts allow-forms`),r.setAttribute(`allow`,``),r.setAttribute(`referrerpolicy`,`no-referrer`),r.title=`Preview`,r.className=`cp-preview-frame`,r.srcdoc=e,this.#e=r,this.#t=this.preview.host.ownerDocument.defaultView??window,this.#t.addEventListener(`message`,this.#x),this.preview.host.replaceChildren(...n,r),this.#n=setTimeout(()=>{this.fail(`The preview did not start. A Content-Security-Policy on this page probably blocks it: see "Host pages with a CSP" in the README.`)},t)}fail(e,t={},n){this.#n&&clearTimeout(this.#n),this.#n=null,this.#v(e,t),this.#h(!0,n)}#h(e,t,n=e=>e()){let r=this.#i;this.#i=null,this.#s=null;let i={stdout:this.#c,...this.#l?{stderr:this.#l}:{},...t?{hint:t}:{},...e&&this.#u?{problem:this.#u}:{},durationMs:Math.round(performance.now()-this.#d),failed:e};n(()=>r?.(i))}#g=e=>{setTimeout(e,250),this.#o=()=>requestAnimationFrame(()=>requestAnimationFrame(e)),this.#a&&this.#o()};#_(e,t){this.#i&&(e===`warn`||e===`error`?this.#l+=`${t}\n`:this.#c+=`${t}\n`),this.preview.onConsole(e,t)}#v(e,t){let n=(t.file?`${t.file}${t.line?`:${t.line}`:``}${t.column?`:${t.column}`:``}: `:``)+e;this.#_(`error`,n),this.#y(n);let r={message:n,...t};this.#i?this.#u??=r:this.preview.onError(r)}#y(e){this.#p||(this.#p=document.createElement(`pre`),this.#p.className=`cp-preview-banner`,this.#p.setAttribute(`role`,`alert`),this.preview.host.append(this.#p)),this.#p.textContent=e}#b(e){this.#m||(this.#m=document.createElement(`div`),this.#m.className=`cp-preview-notice`,this.#m.setAttribute(`role`,`status`),this.preview.host.append(this.#m)),this.#m.textContent=e,this.#m.hidden=!1,this.#r&&clearTimeout(this.#r),this.#r=setTimeout(()=>{this.#m&&(this.#m.hidden=!0)},n)}showCompileBanner(e){e&&this.#p&&(this.#p.textContent+=`\n${e}`)}#x=e=>{if(!this.#e||e.source!==this.#e.contentWindow)return;let t=e.data;if(typeof t!=`object`||!t||t.__playpad!==1)return;let n=e=>String(e??``).slice(0,r);switch(t.type){case`booted`:if(this.#f)return;this.#f=!0,this.#n&&clearTimeout(this.#n),this.#n=null,this.preview.onStart?.(),e.ports[0]?.postMessage(this.payload);break;case`console`:{let e=t.level===`info`||t.level===`warn`||t.level===`error`?t.level:`log`;this.#_(e,n(t.text));break}case`error`:this.#v(n(t.message),{...typeof t.file==`string`?{file:t.file.slice(0,512)}:{},...typeof t.line==`number`?{line:t.line}:{}});break;case`fatal`:this.fail(n(t.message));break;case`entry-done`:this.#i&&this.#h(t.failed===!0,void 0,this.#g);break;case`drawn`:this.#a=!0,this.#o?.();break;case`render`:this.preview.onRender(n(t.rootText));break;case`route`:this.onRoute?.({url:n(t.url),canBack:t.canBack===!0,canForward:t.canForward===!0});break;case`alert`:this.#_(`info`,`alert: ${n(t.text)}`),this.#b(n(t.text))}};dispose(t){this.#n&&clearTimeout(this.#n),this.#r&&clearTimeout(this.#r),this.#t?.removeEventListener(`message`,this.#x),this.#e=null,this.preview.host.replaceChildren(),this.#s&&t&&this.#s(new e),this.#i=null,this.#s=null}},a=`(function(){var a=function(n,e){n.__playpad=1,parent.postMessage(n,"*",e||[])};function l(n,e){if(typeof n=="string")return n;if(typeof n=="function")return"[Function "+(n.name||"anonymous")+"]";if(typeof n!="object"||n===null)return String(n);if(n instanceof Error)return n.name+": "+n.message;if(n instanceof Node)return"<"+n.nodeName.toLowerCase()+">";try{return JSON.stringify(n)}catch{return String(n)}}function L(n){if(typeof n[0]!="string")return n.map(function(r){return l(r)}).join(" ");var e=1,i=n[0].replace(/%([sdifoOc%])/g,function(r,u){if(u==="%")return"%";if(e>=n.length)return r;var c=n[e++];return u==="c"?"":u==="d"||u==="i"?String(parseInt(c,10)):u==="f"?String(parseFloat(c)):l(c)});return[i].concat(n.slice(e).map(function(r){return l(r)})).join(" ")}["log","info","warn","error","debug"].forEach(function(n){var e=console[n];console[n]=function(){var i=Array.prototype.slice.call(arguments);a({type:"console",level:n==="debug"?"log":n,text:L(i)}),e.apply(console,i)}});function k(n){var e=/playpad-project\\/([^\\s:)]+):(\\d+)/.exec(n&&n.stack||"");return e?{file:e[1],line:Number(e[2])}:{}}function f(n,e){var i=n&&typeof n=="object"&&"message"in n,r=i&&n.name?n.name+": ":"",u=k(n);a({type:"error",message:e+r+(i?n.message:l(n)),file:u.file,line:u.line})}addEventListener("error",function(n){n.error?f(n.error,"Uncaught "):n.message==="Script error."?a({type:"error",message:"An error happened in the preview, but this browser hides its details. Open the browser's developer console to see it."}):f(n.message,"Uncaught ")}),window.reportError=function(n){f(n,"Uncaught ")};function M(n){return function(){try{return n.apply(this,arguments)}catch(e){f(e,"Uncaught ")}}}["setTimeout","setInterval","requestAnimationFrame","queueMicrotask"].forEach(function(n){var e=window[n];window[n]=function(i){var r=Array.prototype.slice.call(arguments);return typeof i=="function"&&(r[0]=M(i)),e.apply(window,r)}}),addEventListener("unhandledrejection",function(n){f(n.reason,"Unhandled promise rejection: ")}),window.alert=function(n){a({type:"alert",text:n===void 0?"":String(n)})},window.confirm=function(){return console.warn("confirm() cannot wait for an answer in this preview, so it returned true."),!0},window.prompt=function(){return console.warn("prompt() cannot wait for an answer in this preview, so it returned null."),null};var N=1e3,y=!1,_=0,v=0,b=new MessageChannel;b.port1.onmessage=function(){y=!1},window.__playpadLoopGuard=function(){if(!y){y=!0,_=performance.now(),v=0,b.port2.postMessage(0);return}if((++v&63)===0&&performance.now()-_>N)throw new Error("This loop ran for more than 1 second. Is it infinite?")};function O(n){var e=n.nonce;function i(o){e&&(o.nonce=e),document.head.appendChild(o)}function r(o){var d=document.createElement("script");d.textContent=o,i(d)}if(n.nextClient){if(window.__webpack_require__=function(o){return window.__playpadLoad(o)},window.__webpack_require__.u=function(){return""},window.__webpack_chunk_load__=function(){return Promise.resolve()},n.tailwind&&r(n.tailwind),r(n.nextClient),!window.__playpadNext){a({type:"fatal",message:"The preview could not run the Next.js runtime. A Content-Security-Policy on this page probably blocks it."});return}n.modules.forEach(function(o){o.kind==="js"&&r("__playpadDefine("+JSON.stringify(o.path)+",function(require,module,exports){"+o.text+\`
2
2
  });
3
3
  //# sourceURL=playpad-project/\`+o.path)}),window.__playpadNext.start(n,e);return}function u(){if(!window.__vendor){a({type:"fatal",message:"The preview could not run the React runtime. A Content-Security-Policy on this page probably blocks it."});return}var o={};window.__playpadDefine=function(t,s){o[t]=s};var d={};n.modules.forEach(function(t){d[t.path]=t,t.kind==="js"&&r("__playpadDefine("+JSON.stringify(t.path)+",function(require,module,exports){"+t.text+\`
4
4
  });
package/dist/cdn.js CHANGED
@@ -1,2 +1,2 @@
1
- /*! code-playpad 0.18.0: CDN entry, loads dist/standalone.js of this exact version */
2
- export * from "https://cdn.jsdelivr.net/npm/code-playpad@0.18.0/dist/standalone.js";
1
+ /*! code-playpad 0.19.0: CDN entry, loads dist/standalone.js of this exact version */
2
+ export * from "https://cdn.jsdelivr.net/npm/code-playpad@0.19.0/dist/standalone.js";
@@ -1 +1 @@
1
- import{c as e}from"./config-3Z6xX6Jr.js";import{n as t,t as n}from"./compiler-cache-XwslsU5H.js";import{t as r}from"./worker-runtime-BObmUwpG.js";var i='"use strict";(()=>{var it="code-playpad-cpp-20.1.2-emscripten-4.0.6-r1";async function ot(a,e,i,c,E){let t=new URL(a,i).href,r;try{r=await caches.open(c)}catch{}let n;try{n=await r?.match(t)}catch{}let s=async _=>{if(!_.ok)throw new Error(`Toolchain download failed: ${a} (HTTP ${_.status}). Check the asset URL and retry.`);let l=_.body?.getReader();if(!l)return _.arrayBuffer();let u=[],p=0,d=0;for(;;){let S=await l.read();if(S.done)break;if(p+=S.value.length,p>e.bytes)throw await l.cancel(),new Error(`Unexpected toolchain size: ${a}.`);u.push(S.value),performance.now()-d>100&&(E(`${n?"Reading cached":"Downloading"} ${a}: ${(p/1e6).toFixed(1)} / ${(e.bytes/1e6).toFixed(1)} MB (decoded)`),d=performance.now())}let R=new Uint8Array(p),h=0;for(let S of u)R.set(S,h),h+=S.length;return R.buffer},o=async _=>_.byteLength===e.bytes&&[...new Uint8Array(await crypto.subtle.digest("SHA-256",_))].map(l=>l.toString(16).padStart(2,"0")).join("")===e.sha256;if(n){try{let _=await s(n);if(await o(_))return _}catch{}try{await r?.delete(t)}catch{}n=void 0}let f=await s(await fetch(t));if(!await o(f))throw new Error(`Toolchain integrity check failed: ${a}. Use the pinned toolchain assets.`);try{await r?.put(t,new Response(f))}catch{}return f}var C=class a{static read_bytes(e,i){let c=new a;return c.buf=e.getUint32(i,!0),c.buf_len=e.getUint32(i+4,!0),c}static read_bytes_array(e,i,c){let E=[];for(let t=0;t<c;t++)E.push(a.read_bytes(e,i+8*t));return E}},L=class a{static read_bytes(e,i){let c=new a;return c.buf=e.getUint32(i,!0),c.buf_len=e.getUint32(i+4,!0),c}static read_bytes_array(e,i,c){let E=[];for(let t=0;t<c;t++)E.push(a.read_bytes(e,i+8*t));return E}},Q=0,Z=1,V=2;var J=2;var W=4;var q=1;var x=class{write_bytes(e,i){e.setUint8(i,this.fs_filetype),e.setUint16(i+2,this.fs_flags,!0),e.setBigUint64(i+8,this.fs_rights_base,!0),e.setBigUint64(i+16,this.fs_rights_inherited,!0)}constructor(e,i){this.fs_rights_base=0n,this.fs_rights_inherited=0n,this.fs_filetype=e,this.fs_flags=i}};var j=8,A=class{write_bytes(e,i){e.setBigUint64(i,this.dev,!0),e.setBigUint64(i+8,this.ino,!0),e.setUint8(i+16,this.filetype),e.setBigUint64(i+24,this.nlink,!0),e.setBigUint64(i+32,this.size,!0),e.setBigUint64(i+38,this.atim,!0),e.setBigUint64(i+46,this.mtim,!0),e.setBigUint64(i+52,this.ctim,!0)}constructor(e,i,c){this.dev=0n,this.nlink=0n,this.atim=0n,this.mtim=0n,this.ctim=0n,this.ino=e,this.filetype=i,this.size=c}},at=0;var ft=1,k=class a{static read_bytes(e,i){return new a(e.getBigUint64(i,!0),e.getUint8(i+8),e.getUint32(i+16,!0),e.getBigUint64(i+24,!0),e.getUint16(i+36,!0))}constructor(e,i,c,E,t){this.userdata=e,this.eventtype=i,this.clockid=c,this.timeout=E,this.flags=t}},Y=class{write_bytes(e,i){e.setBigUint64(i,this.userdata,!0),e.setUint16(i+8,this.error,!0),e.setUint8(i+10,this.eventtype)}constructor(e,i,c){this.userdata=e,this.error=i,this.eventtype=c}};var wt=class{enable(e){this.log=ht(e===void 0?!0:e,this.prefix)}get enabled(){return this.isEnabled}constructor(e){this.isEnabled=e,this.prefix="wasi:",this.enable(e)}};function ht(a,e){return a?console.log.bind(console,"%c%s","color: #265BA0",e):()=>{}}var y=new wt(!1);var U=class extends Error{constructor(e){super("exit with exit code "+e),this.code=e}},rt=class{start(e){this.inst=e;try{return e.exports._start(),0}catch(i){if(i instanceof U)return i.code;throw i}}initialize(e){this.inst=e,e.exports._initialize&&e.exports._initialize()}constructor(e,i,c,E={}){this.args=[],this.env=[],this.fds=[],y.enable(E.debug),this.args=e,this.env=i,this.fds=c;let t=this;this.wasiImport={args_sizes_get(r,n){let s=new DataView(t.inst.exports.memory.buffer);s.setUint32(r,t.args.length,!0);let o=0;for(let f of t.args)o+=f.length+1;return s.setUint32(n,o,!0),y.log(s.getUint32(r,!0),s.getUint32(n,!0)),0},args_get(r,n){let s=new DataView(t.inst.exports.memory.buffer),o=new Uint8Array(t.inst.exports.memory.buffer),f=n;for(let _=0;_<t.args.length;_++){s.setUint32(r,n,!0),r+=4;let l=new TextEncoder().encode(t.args[_]);o.set(l,n),s.setUint8(n+l.length,0),n+=l.length+1}return y.enabled&&y.log(new TextDecoder("utf-8").decode(o.slice(f,n))),0},environ_sizes_get(r,n){let s=new DataView(t.inst.exports.memory.buffer);s.setUint32(r,t.env.length,!0);let o=0;for(let f of t.env)o+=new TextEncoder().encode(f).length+1;return s.setUint32(n,o,!0),y.log(s.getUint32(r,!0),s.getUint32(n,!0)),0},environ_get(r,n){let s=new DataView(t.inst.exports.memory.buffer),o=new Uint8Array(t.inst.exports.memory.buffer),f=n;for(let _=0;_<t.env.length;_++){s.setUint32(r,n,!0),r+=4;let l=new TextEncoder().encode(t.env[_]);o.set(l,n),s.setUint8(n+l.length,0),n+=l.length+1}return y.enabled&&y.log(new TextDecoder("utf-8").decode(o.slice(f,n))),0},clock_res_get(r,n){let s;switch(r){case 1:{s=5000n;break}case 0:{s=1000000n;break}default:return 52}return new DataView(t.inst.exports.memory.buffer).setBigUint64(n,s,!0),0},clock_time_get(r,n,s){let o=new DataView(t.inst.exports.memory.buffer);if(r===0)o.setBigUint64(s,BigInt(new Date().getTime())*1000000n,!0);else if(r==1){let f;try{f=BigInt(Math.round(performance.now()*1e6))}catch{f=0n}o.setBigUint64(s,f,!0)}else o.setBigUint64(s,0n,!0);return 0},fd_advise(r,n,s,o){return t.fds[r]!=null?0:8},fd_allocate(r,n,s){return t.fds[r]!=null?t.fds[r].fd_allocate(n,s):8},fd_close(r){if(t.fds[r]!=null){let n=t.fds[r].fd_close();return t.fds[r]=void 0,n}else return 8},fd_datasync(r){return t.fds[r]!=null?t.fds[r].fd_sync():8},fd_fdstat_get(r,n){if(t.fds[r]!=null){let{ret:s,fdstat:o}=t.fds[r].fd_fdstat_get();return o?.write_bytes(new DataView(t.inst.exports.memory.buffer),n),s}else return 8},fd_fdstat_set_flags(r,n){return t.fds[r]!=null?t.fds[r].fd_fdstat_set_flags(n):8},fd_fdstat_set_rights(r,n,s){return t.fds[r]!=null?t.fds[r].fd_fdstat_set_rights(n,s):8},fd_filestat_get(r,n){if(t.fds[r]!=null){let{ret:s,filestat:o}=t.fds[r].fd_filestat_get();return o?.write_bytes(new DataView(t.inst.exports.memory.buffer),n),s}else return 8},fd_filestat_set_size(r,n){return t.fds[r]!=null?t.fds[r].fd_filestat_set_size(n):8},fd_filestat_set_times(r,n,s,o){return t.fds[r]!=null?t.fds[r].fd_filestat_set_times(n,s,o):8},fd_pread(r,n,s,o,f){let _=new DataView(t.inst.exports.memory.buffer),l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let u=C.read_bytes_array(_,n,s),p=0;for(let d of u){let{ret:R,data:h}=t.fds[r].fd_pread(d.buf_len,o);if(R!=0)return _.setUint32(f,p,!0),R;if(l.set(h,d.buf),p+=h.length,o+=BigInt(h.length),h.length!=d.buf_len)break}return _.setUint32(f,p,!0),0}else return 8},fd_prestat_get(r,n){let s=new DataView(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let{ret:o,prestat:f}=t.fds[r].fd_prestat_get();return f?.write_bytes(s,n),o}else return 8},fd_prestat_dir_name(r,n,s){if(t.fds[r]!=null){let{ret:o,prestat:f}=t.fds[r].fd_prestat_get();if(f==null)return o;let _=f.inner.pr_name;return new Uint8Array(t.inst.exports.memory.buffer).set(_.slice(0,s),n),_.byteLength>s?37:0}else return 8},fd_pwrite(r,n,s,o,f){let _=new DataView(t.inst.exports.memory.buffer),l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let u=L.read_bytes_array(_,n,s),p=0;for(let d of u){let R=l.slice(d.buf,d.buf+d.buf_len),{ret:h,nwritten:S}=t.fds[r].fd_pwrite(R,o);if(h!=0)return _.setUint32(f,p,!0),h;if(p+=S,o+=BigInt(S),S!=R.byteLength)break}return _.setUint32(f,p,!0),0}else return 8},fd_read(r,n,s,o){let f=new DataView(t.inst.exports.memory.buffer),_=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let l=C.read_bytes_array(f,n,s),u=0;for(let p of l){let{ret:d,data:R}=t.fds[r].fd_read(p.buf_len);if(d!=0)return f.setUint32(o,u,!0),d;if(_.set(R,p.buf),u+=R.length,R.length!=p.buf_len)break}return f.setUint32(o,u,!0),0}else return 8},fd_readdir(r,n,s,o,f){let _=new DataView(t.inst.exports.memory.buffer),l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let u=0;for(;;){let{ret:p,dirent:d}=t.fds[r].fd_readdir_single(o);if(p!=0)return _.setUint32(f,u,!0),p;if(d==null)break;if(s-u<d.head_length()){u=s;break}let R=new ArrayBuffer(d.head_length());if(d.write_head_bytes(new DataView(R),0),l.set(new Uint8Array(R).slice(0,Math.min(R.byteLength,s-u)),n),n+=d.head_length(),u+=d.head_length(),s-u<d.name_length()){u=s;break}d.write_name_bytes(l,n,s-u),n+=d.name_length(),u+=d.name_length(),o=d.d_next}return _.setUint32(f,u,!0),0}else return 8},fd_renumber(r,n){if(t.fds[r]!=null&&t.fds[n]!=null){let s=t.fds[n].fd_close();return s!=0?s:(t.fds[n]=t.fds[r],t.fds[r]=void 0,0)}else return 8},fd_seek(r,n,s,o){let f=new DataView(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let{ret:_,offset:l}=t.fds[r].fd_seek(n,s);return f.setBigInt64(o,l,!0),_}else return 8},fd_sync(r){return t.fds[r]!=null?t.fds[r].fd_sync():8},fd_tell(r,n){let s=new DataView(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let{ret:o,offset:f}=t.fds[r].fd_tell();return s.setBigUint64(n,f,!0),o}else return 8},fd_write(r,n,s,o){let f=new DataView(t.inst.exports.memory.buffer),_=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let l=L.read_bytes_array(f,n,s),u=0;for(let p of l){let d=_.slice(p.buf,p.buf+p.buf_len),{ret:R,nwritten:h}=t.fds[r].fd_write(d);if(R!=0)return f.setUint32(o,u,!0),R;if(u+=h,h!=d.byteLength)break}return f.setUint32(o,u,!0),0}else return 8},path_create_directory(r,n,s){let o=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let f=new TextDecoder("utf-8").decode(o.slice(n,n+s));return t.fds[r].path_create_directory(f)}else return 8},path_filestat_get(r,n,s,o,f){let _=new DataView(t.inst.exports.memory.buffer),l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let u=new TextDecoder("utf-8").decode(l.slice(s,s+o)),{ret:p,filestat:d}=t.fds[r].path_filestat_get(n,u);return d?.write_bytes(_,f),p}else return 8},path_filestat_set_times(r,n,s,o,f,_,l){let u=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let p=new TextDecoder("utf-8").decode(u.slice(s,s+o));return t.fds[r].path_filestat_set_times(n,p,f,_,l)}else return 8},path_link(r,n,s,o,f,_,l){let u=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null&&t.fds[f]!=null){let p=new TextDecoder("utf-8").decode(u.slice(s,s+o)),d=new TextDecoder("utf-8").decode(u.slice(_,_+l)),{ret:R,inode_obj:h}=t.fds[r].path_lookup(p,n);return h==null?R:t.fds[f].path_link(d,h,!1)}else return 8},path_open(r,n,s,o,f,_,l,u,p){let d=new DataView(t.inst.exports.memory.buffer),R=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let h=new TextDecoder("utf-8").decode(R.slice(s,s+o));y.log(h);let{ret:S,fd_obj:X}=t.fds[r].path_open(n,h,f,_,l,u);if(S!=0)return S;t.fds.push(X);let H=t.fds.length-1;return d.setUint32(p,H,!0),0}else return 8},path_readlink(r,n,s,o,f,_){let l=new DataView(t.inst.exports.memory.buffer),u=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let p=new TextDecoder("utf-8").decode(u.slice(n,n+s));y.log(p);let{ret:d,data:R}=t.fds[r].path_readlink(p);if(R!=null){let h=new TextEncoder().encode(R);if(h.length>f)return l.setUint32(_,0,!0),8;u.set(h,o),l.setUint32(_,h.length,!0)}return d}else return 8},path_remove_directory(r,n,s){let o=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let f=new TextDecoder("utf-8").decode(o.slice(n,n+s));return t.fds[r].path_remove_directory(f)}else return 8},path_rename(r,n,s,o,f,_){let l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null&&t.fds[o]!=null){let u=new TextDecoder("utf-8").decode(l.slice(n,n+s)),p=new TextDecoder("utf-8").decode(l.slice(f,f+_)),{ret:d,inode_obj:R}=t.fds[r].path_unlink(u);if(R==null)return d;if(d=t.fds[o].path_link(p,R,!0),d!=0&&t.fds[r].path_link(u,R,!0)!=0)throw"path_link should always return success when relinking an inode back to the original place";return d}else return 8},path_symlink(r,n,s,o,f){let _=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[s]!=null){let l=new TextDecoder("utf-8").decode(_.slice(r,r+n)),u=new TextDecoder("utf-8").decode(_.slice(o,o+f));return 58}else return 8},path_unlink_file(r,n,s){let o=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let f=new TextDecoder("utf-8").decode(o.slice(n,n+s));return t.fds[r].path_unlink_file(f)}else return 8},poll_oneoff(r,n,s){if(s===0)return 28;if(s>1)return y.log("poll_oneoff: only a single subscription is supported"),58;let o=new DataView(t.inst.exports.memory.buffer),f=k.read_bytes(o,r),_=f.eventtype,l=f.clockid,u=f.timeout;if(_!==at)return y.log("poll_oneoff: only clock subscriptions are supported"),58;let p;if(l===1)p=()=>BigInt(Math.round(performance.now()*1e6));else if(l===0)p=()=>BigInt(new Date().getTime())*1000000n;else return 28;let d=(f.flags&ft)!==0?u:p()+u;for(;d>p(););return new Y(f.userdata,0,_).write_bytes(o,n),0},proc_exit(r){throw new U(r)},proc_raise(r){throw"raised signal "+r},sched_yield(){},random_get(r,n){let s=new Uint8Array(t.inst.exports.memory.buffer).subarray(r,r+n);if("crypto"in globalThis&&(typeof SharedArrayBuffer>"u"||!(t.inst.exports.memory.buffer instanceof SharedArrayBuffer)))for(let o=0;o<n;o+=65536)crypto.getRandomValues(s.subarray(o,o+65536));else for(let o=0;o<n;o++)s[o]=Math.random()*256|0},sock_recv(r,n,s){throw"sockets not supported"},sock_send(r,n,s){throw"sockets not supported"},sock_shutdown(r,n){throw"sockets not supported"},sock_accept(r,n){throw"sockets not supported"}}}};var g=class{fd_allocate(e,i){return 58}fd_close(){return 0}fd_fdstat_get(){return{ret:58,fdstat:null}}fd_fdstat_set_flags(e){return 58}fd_fdstat_set_rights(e,i){return 58}fd_filestat_get(){return{ret:58,filestat:null}}fd_filestat_set_size(e){return 58}fd_filestat_set_times(e,i,c){return 58}fd_pread(e,i){return{ret:58,data:new Uint8Array}}fd_prestat_get(){return{ret:58,prestat:null}}fd_pwrite(e,i){return{ret:58,nwritten:0}}fd_read(e){return{ret:58,data:new Uint8Array}}fd_readdir_single(e){return{ret:58,dirent:null}}fd_seek(e,i){return{ret:58,offset:0n}}fd_sync(){return 0}fd_tell(){return{ret:58,offset:0n}}fd_write(e){return{ret:58,nwritten:0}}path_create_directory(e){return 58}path_filestat_get(e,i){return{ret:58,filestat:null}}path_filestat_set_times(e,i,c,E,t){return 58}path_link(e,i,c){return 58}path_unlink(e){return{ret:58,inode_obj:null}}path_lookup(e,i){return{ret:58,inode_obj:null}}path_open(e,i,c,E,t,r){return{ret:54,fd_obj:null}}path_readlink(e){return{ret:58,data:null}}path_remove_directory(e){return 58}path_rename(e,i,c){return 58}path_unlink_file(e){return 58}},m=class a{static issue_ino(){return a.next_ino++}static root_ino(){return 0n}constructor(){this.ino=a.issue_ino()}};m.next_ino=1n;var b=class extends g{fd_allocate(e,i){if(!(this.file.size>e+i)){let c=new Uint8Array(Number(e+i));c.set(this.file.data,0),this.file.data=c}return 0}fd_fdstat_get(){return{ret:0,fdstat:new x(W,0)}}fd_filestat_set_size(e){if(this.file.size>e)this.file.data=new Uint8Array(this.file.data.buffer.slice(0,Number(e)));else{let i=new Uint8Array(Number(e));i.set(this.file.data,0),this.file.data=i}return 0}fd_read(e){let i=this.file.data.slice(Number(this.file_pos),Number(this.file_pos+BigInt(e)));return this.file_pos+=BigInt(i.length),{ret:0,data:i}}fd_pread(e,i){return{ret:0,data:this.file.data.slice(Number(i),Number(i+BigInt(e)))}}fd_seek(e,i){let c;switch(i){case Q:c=e;break;case Z:c=this.file_pos+e;break;case V:c=BigInt(this.file.data.byteLength)+e;break;default:return{ret:28,offset:0n}}return c<0?{ret:28,offset:0n}:(this.file_pos=c,{ret:0,offset:this.file_pos})}fd_tell(){return{ret:0,offset:this.file_pos}}fd_write(e){if(this.file.readonly)return{ret:8,nwritten:0};if(this.file_pos+BigInt(e.byteLength)>this.file.size){let i=this.file.data;this.file.data=new Uint8Array(Number(this.file_pos+BigInt(e.byteLength))),this.file.data.set(i)}return this.file.data.set(e,Number(this.file_pos)),this.file_pos+=BigInt(e.byteLength),{ret:0,nwritten:e.byteLength}}fd_pwrite(e,i){if(this.file.readonly)return{ret:8,nwritten:0};if(i+BigInt(e.byteLength)>this.file.size){let c=this.file.data;this.file.data=new Uint8Array(Number(i+BigInt(e.byteLength))),this.file.data.set(c)}return this.file.data.set(e,Number(i)),{ret:0,nwritten:e.byteLength}}fd_filestat_get(){return{ret:0,filestat:this.file.stat()}}constructor(e){super(),this.file_pos=0n,this.file=e}};var F=class extends m{path_open(e,i,c){if(this.readonly&&(i&BigInt(64))==BigInt(64))return{ret:63,fd_obj:null};if((e&j)==j){if(this.readonly)return{ret:63,fd_obj:null};this.data=new Uint8Array([])}let E=new b(this);return c&q&&E.fd_seek(0n,V),{ret:0,fd_obj:E}}get size(){return BigInt(this.data.byteLength)}stat(){return new A(this.ino,W,this.size)}constructor(e,i){super(),this.data=new Uint8Array(e),this.readonly=!!i?.readonly}};var P=class a extends g{fd_filestat_get(){return{ret:0,filestat:new A(this.ino,J,BigInt(0))}}fd_fdstat_get(){let e=new x(J,0);return e.fs_rights_base=BigInt(64),{ret:0,fdstat:e}}fd_write(e){return this.write(e),{ret:0,nwritten:e.byteLength}}static lineBuffered(e){let i=new TextDecoder("utf-8",{fatal:!1}),c="";return new a(E=>{c+=i.decode(E,{stream:!0});let t=c.split(`\n`);for(let[r,n]of t.entries())r<t.length-1?e(n):c=n})}constructor(e){super(),this.ino=m.issue_ino(),this.write=e}};var ct="code-playpad Clang 20.1.2 / Emscripten 4.0.6 r1",lt={"clang.js":{bytes:74300,sha256:"b437a648812aabd1cc87cba4a7268e2f53ab94a9071a854ba983dd62328dc30c"},"clang.wasm":{bytes:42578038,sha256:"534571fd4f9136c85d3e25a395cc31983ec3cbd41012e3928b45879a518718fa"},"lld.js":{bytes:71711,sha256:"2da4b0a04b6953bdc4869137631abd11ea7eb5a667fbd19c4ff6d68d56f302bb"},"lld.wasm":{bytes:23228304,sha256:"55ffbe1366525c1b55b65140630e0ca00ff47eae7acfdee6a15b46e738800ec7"},"sysroot.tar":{bytes:29009920,sha256:"a0d92a9fc1dccc2c181ae6812b6c169de3dad851ee4d4e796d15940776648ac5"}};function K(a){if(!a||a.startsWith("/")||/[\\\\\\x00-\\x1f:]/.test(a)||a.split("/").some(e=>!e||e==="."||e===".."))throw new Error(`Invalid project path: ${JSON.stringify(a)}. Use relative paths without . or ...`);return a}function ut(a,e,i,c){let E=K(i??(c==="c"?"main.c":"main.cpp")),t=e?{...e}:{[E]:a};if(!Object.hasOwn(t,E))throw new Error(`Entry file ${E} does not exist.`);let r=Object.keys(t).map(K).sort(),n=f=>/\\.c$/.test(f),s=f=>/\\.(cpp|cc|cxx)$/.test(f);if(r.some(c==="c"?s:n))throw new Error("Mixed C/C++ source projects are not supported yet.");let o=r.filter(c==="c"?n:s);if(!o.includes(E))throw new Error(`Entry ${E} must have a ${c==="c"?".c":".cpp, .cc, or .cxx"} extension.`);if(o.length>32||r.length>256)throw new Error("Project limit: 32 source files and 256 files total.");if(Object.values(t).reduce((f,_)=>f+new TextEncoder().encode(_).length,0)>2e6)throw new Error("Project exceeds the 2 MB source limit.");return{files:t,sources:o,entry:E}}var st,v,dt=Promise.resolve(),G=a=>globalThis.postMessage(a),M=(a,e,i)=>G({type:"progress",id:a,phase:e,message:i}),B=(a,e)=>ot(a,lt[a],st,it,i=>M(e,"downloading",i));function St(a){let e=new Uint8Array(a),i=new TextDecoder,c=[],E=(t,r)=>i.decode(e.subarray(t,t+r)).replace(/\\0.*$/,"");for(let t=0;t+512<=e.length;){let r=E(t,100);if(!r)break;let n=E(t+345,155);n&&(r=n+"/"+r);let s=parseInt(E(t+124,12).trim()||"0",8),o=e[t+156];if(!Number.isSafeInteger(s)||s<0||t+512+s>e.length)throw new Error("Invalid sysroot archive.");if(o===48||o===0)c.push({name:"/"+K(r),data:e.subarray(t+512,t+512+s)});else if(o!==53)throw new Error("Unsupported sysroot archive entry.");t+=512+Math.ceil(s/512)*512}return c}async function Rt(a){let e=URL.createObjectURL(new Blob([a],{type:"text/javascript"}));try{return(await import(e)).default}finally{URL.revokeObjectURL(e)}}function yt(a){return st?(v||(v=(async()=>{let e=await Rt(await B("clang.js",a)),i=await Rt(await B("lld.js",a)),c=await WebAssembly.compile(await B("clang.wasm",a)),E=await WebAssembly.compile(await B("lld.wasm",a));M(a,"booting","Preparing C/C++ standard libraries\\u2026");let t=St(await B("sysroot.tar",a));return{clang:e,lld:i,clangModule:c,lldModule:E,sysroot:t}})().catch(e=>{throw v=void 0,e})),v):Promise.reject(new Error("Configure the rebuilt C/C++ assets with configureCpp({ indexURL }) before creating widgets. See docs/CPP-REBUILD.md."))}async function Et(a,e,i,c){let E,t=await a({thisProgram:i,noInitialRun:!0,print:c,printErr:c,instantiateWasm(r,n){let s=new WebAssembly.Instance(e,r);return E=Object.values(s.exports).find(o=>o instanceof WebAssembly.Memory),n(s,e),s.exports}});return t.memory=E,t}function $(a,e,i){a.mkdirTree(e.slice(0,e.lastIndexOf("/"))||"/"),a.writeFile(e,i)}async function mt(a){let e=performance.now(),i=0,c=(E,t)=>{if(i+=t.length,i>1e6)throw new Error("Output limit exceeded (1 MB).");t&&G({type:E,id:a.id,text:t})};try{let E=ut(a.code,a.files,a.entry,a.compilerLanguage),t=await yt(a.id),r=[],n=0;for(let R of E.sources){M(a.id,"compiling",`Compiling ${R}\\u2026`);let h=await Et(t.clang,t.clangModule,"clang",T=>c("stderr",T+`\n`));for(let T of t.sysroot)$(h.FS,T.name,T.data);for(let[T,pt]of Object.entries(E.files))$(h.FS,"/project/"+T,pt);let S=a.compilerLanguage==="cpp",X=["-cc1","-triple","wasm32-unknown-wasi","-emit-obj","-O0","-std="+(S?"c++20":"c17"),"-resource-dir","/lib/clang/20",...S?["-internal-isystem","/include/wasm32-wasi/c++/v1","-internal-isystem","/include/c++/v1"]:[],"-internal-isystem","/lib/clang/20/include","-internal-isystem","/include/wasm32-wasi","-internal-isystem","/include","-I","/project","-ferror-limit","20","-o","/tmp/output.o","-x",S?"c++":"c","/project/"+R],H=h.callMain(X);if(n=Math.max(n,h.memory?.buffer.byteLength??0),H!==0)throw new Error(`Compilation failed (${R}, exit ${H}).`);r.push(h.FS.readFile("/tmp/output.o").slice())}M(a.id,"linking","Linking\\u2026");let s=await Et(t.lld,t.lldModule,"wasm-ld",R=>c("stderr",R+`\n`));for(let R of t.sysroot)R.name.startsWith("/include/")||$(s.FS,R.name,R.data);r.forEach((R,h)=>$(s.FS,"/tmp/"+h+".o",R));let o=s.callMain(["-m","wasm32","-z","stack-size=1048576","--max-memory=268435456","-L/lib/wasm32-wasi","/lib/wasm32-wasi/crt1-command.o",...r.map((R,h)=>"/tmp/"+h+".o"),...a.compilerLanguage==="cpp"?["-lc++","-lc++abi"]:[],"-lc","/lib/clang/20/lib/wasm32-unknown-wasi/libclang_rt.builtins.a","-o","/tmp/program.wasm"]);if(n=Math.max(n,s.memory?.buffer.byteLength??0),o!==0)throw new Error(`Linking failed (exit ${o}).`);let f=await WebAssembly.compile(s.FS.readFile("/tmp/program.wasm").slice().buffer);M(a.id,"running","Running\\u2026");let _={stdout:new TextDecoder,stderr:new TextDecoder},l=R=>new P(h=>c(R,_[R].decode(h,{stream:!0}))),u=new rt([E.entry],[],[new b(new F(new TextEncoder().encode(a.stdin??""))),l("stdout"),l("stderr")]),p=await WebAssembly.instantiate(f,{wasi_snapshot_preview1:u.wasiImport}),d=u.start(p);if(c("stdout",_.stdout.decode()),c("stderr",_.stderr.decode()),d!==0)throw new Error(`Program exited with status ${d}.`);G({type:"result",id:a.id,durationMs:performance.now()-e,memory:{compilerBytes:n,programBytes:p.exports.memory.buffer.byteLength}})}catch(E){G({type:"error",id:a.id,message:E instanceof Error?E.message:String(E),durationMs:performance.now()-e})}}globalThis.onmessage=({data:a})=>{a.type==="init"?(st=a.toolchainURL,G({type:"ready",version:ct,interactiveStdin:!1})):a.type==="run"&&(dt=dt.then(()=>mt(a)))};})();\n',a=new class extends r{id=`cpp`;get label(){return`C/C++ (Clang 20, experimental)`}get source(){return i}async load(e){return await t(n),super.load(e)}initPayload(){return{toolchainURL:e().indexURL}}};function o(t){return{id:t,label:t===`c`?`C17 (experimental)`:`C++20 (experimental)`,statusDecidesFailure:!0,get ready(){return a.ready},interactiveStdin:!1,async editorLanguage(){return(await import(`@codemirror/lang-cpp`)).cpp()},load:e=>a.load(e),run:(n,r={})=>a.run(n,{...r,compilerLanguage:t,timeoutMs:r.timeoutMs??e().timeoutMs}),stop:e=>a.stop(e)}}var s=o(`c`),c=o(`cpp`);export{s as cRuntime,c as cppRuntime};
1
+ import{c as e}from"./config-3Z6xX6Jr.js";import{n as t,t as n}from"./compiler-cache-XwslsU5H.js";import{t as r}from"./worker-runtime-VpuXbObm.js";var i='"use strict";(()=>{var it="code-playpad-cpp-20.1.2-emscripten-4.0.6-r1";async function ot(a,e,i,c,E){let t=new URL(a,i).href,r;try{r=await caches.open(c)}catch{}let n;try{n=await r?.match(t)}catch{}let s=async _=>{if(!_.ok)throw new Error(`Toolchain download failed: ${a} (HTTP ${_.status}). Check the asset URL and retry.`);let l=_.body?.getReader();if(!l)return _.arrayBuffer();let u=[],p=0,d=0;for(;;){let S=await l.read();if(S.done)break;if(p+=S.value.length,p>e.bytes)throw await l.cancel(),new Error(`Unexpected toolchain size: ${a}.`);u.push(S.value),performance.now()-d>100&&(E(`${n?"Reading cached":"Downloading"} ${a}: ${(p/1e6).toFixed(1)} / ${(e.bytes/1e6).toFixed(1)} MB (decoded)`),d=performance.now())}let R=new Uint8Array(p),h=0;for(let S of u)R.set(S,h),h+=S.length;return R.buffer},o=async _=>_.byteLength===e.bytes&&[...new Uint8Array(await crypto.subtle.digest("SHA-256",_))].map(l=>l.toString(16).padStart(2,"0")).join("")===e.sha256;if(n){try{let _=await s(n);if(await o(_))return _}catch{}try{await r?.delete(t)}catch{}n=void 0}let f=await s(await fetch(t));if(!await o(f))throw new Error(`Toolchain integrity check failed: ${a}. Use the pinned toolchain assets.`);try{await r?.put(t,new Response(f))}catch{}return f}var C=class a{static read_bytes(e,i){let c=new a;return c.buf=e.getUint32(i,!0),c.buf_len=e.getUint32(i+4,!0),c}static read_bytes_array(e,i,c){let E=[];for(let t=0;t<c;t++)E.push(a.read_bytes(e,i+8*t));return E}},L=class a{static read_bytes(e,i){let c=new a;return c.buf=e.getUint32(i,!0),c.buf_len=e.getUint32(i+4,!0),c}static read_bytes_array(e,i,c){let E=[];for(let t=0;t<c;t++)E.push(a.read_bytes(e,i+8*t));return E}},Q=0,Z=1,V=2;var J=2;var W=4;var q=1;var x=class{write_bytes(e,i){e.setUint8(i,this.fs_filetype),e.setUint16(i+2,this.fs_flags,!0),e.setBigUint64(i+8,this.fs_rights_base,!0),e.setBigUint64(i+16,this.fs_rights_inherited,!0)}constructor(e,i){this.fs_rights_base=0n,this.fs_rights_inherited=0n,this.fs_filetype=e,this.fs_flags=i}};var j=8,A=class{write_bytes(e,i){e.setBigUint64(i,this.dev,!0),e.setBigUint64(i+8,this.ino,!0),e.setUint8(i+16,this.filetype),e.setBigUint64(i+24,this.nlink,!0),e.setBigUint64(i+32,this.size,!0),e.setBigUint64(i+38,this.atim,!0),e.setBigUint64(i+46,this.mtim,!0),e.setBigUint64(i+52,this.ctim,!0)}constructor(e,i,c){this.dev=0n,this.nlink=0n,this.atim=0n,this.mtim=0n,this.ctim=0n,this.ino=e,this.filetype=i,this.size=c}},at=0;var ft=1,k=class a{static read_bytes(e,i){return new a(e.getBigUint64(i,!0),e.getUint8(i+8),e.getUint32(i+16,!0),e.getBigUint64(i+24,!0),e.getUint16(i+36,!0))}constructor(e,i,c,E,t){this.userdata=e,this.eventtype=i,this.clockid=c,this.timeout=E,this.flags=t}},Y=class{write_bytes(e,i){e.setBigUint64(i,this.userdata,!0),e.setUint16(i+8,this.error,!0),e.setUint8(i+10,this.eventtype)}constructor(e,i,c){this.userdata=e,this.error=i,this.eventtype=c}};var wt=class{enable(e){this.log=ht(e===void 0?!0:e,this.prefix)}get enabled(){return this.isEnabled}constructor(e){this.isEnabled=e,this.prefix="wasi:",this.enable(e)}};function ht(a,e){return a?console.log.bind(console,"%c%s","color: #265BA0",e):()=>{}}var y=new wt(!1);var U=class extends Error{constructor(e){super("exit with exit code "+e),this.code=e}},rt=class{start(e){this.inst=e;try{return e.exports._start(),0}catch(i){if(i instanceof U)return i.code;throw i}}initialize(e){this.inst=e,e.exports._initialize&&e.exports._initialize()}constructor(e,i,c,E={}){this.args=[],this.env=[],this.fds=[],y.enable(E.debug),this.args=e,this.env=i,this.fds=c;let t=this;this.wasiImport={args_sizes_get(r,n){let s=new DataView(t.inst.exports.memory.buffer);s.setUint32(r,t.args.length,!0);let o=0;for(let f of t.args)o+=f.length+1;return s.setUint32(n,o,!0),y.log(s.getUint32(r,!0),s.getUint32(n,!0)),0},args_get(r,n){let s=new DataView(t.inst.exports.memory.buffer),o=new Uint8Array(t.inst.exports.memory.buffer),f=n;for(let _=0;_<t.args.length;_++){s.setUint32(r,n,!0),r+=4;let l=new TextEncoder().encode(t.args[_]);o.set(l,n),s.setUint8(n+l.length,0),n+=l.length+1}return y.enabled&&y.log(new TextDecoder("utf-8").decode(o.slice(f,n))),0},environ_sizes_get(r,n){let s=new DataView(t.inst.exports.memory.buffer);s.setUint32(r,t.env.length,!0);let o=0;for(let f of t.env)o+=new TextEncoder().encode(f).length+1;return s.setUint32(n,o,!0),y.log(s.getUint32(r,!0),s.getUint32(n,!0)),0},environ_get(r,n){let s=new DataView(t.inst.exports.memory.buffer),o=new Uint8Array(t.inst.exports.memory.buffer),f=n;for(let _=0;_<t.env.length;_++){s.setUint32(r,n,!0),r+=4;let l=new TextEncoder().encode(t.env[_]);o.set(l,n),s.setUint8(n+l.length,0),n+=l.length+1}return y.enabled&&y.log(new TextDecoder("utf-8").decode(o.slice(f,n))),0},clock_res_get(r,n){let s;switch(r){case 1:{s=5000n;break}case 0:{s=1000000n;break}default:return 52}return new DataView(t.inst.exports.memory.buffer).setBigUint64(n,s,!0),0},clock_time_get(r,n,s){let o=new DataView(t.inst.exports.memory.buffer);if(r===0)o.setBigUint64(s,BigInt(new Date().getTime())*1000000n,!0);else if(r==1){let f;try{f=BigInt(Math.round(performance.now()*1e6))}catch{f=0n}o.setBigUint64(s,f,!0)}else o.setBigUint64(s,0n,!0);return 0},fd_advise(r,n,s,o){return t.fds[r]!=null?0:8},fd_allocate(r,n,s){return t.fds[r]!=null?t.fds[r].fd_allocate(n,s):8},fd_close(r){if(t.fds[r]!=null){let n=t.fds[r].fd_close();return t.fds[r]=void 0,n}else return 8},fd_datasync(r){return t.fds[r]!=null?t.fds[r].fd_sync():8},fd_fdstat_get(r,n){if(t.fds[r]!=null){let{ret:s,fdstat:o}=t.fds[r].fd_fdstat_get();return o?.write_bytes(new DataView(t.inst.exports.memory.buffer),n),s}else return 8},fd_fdstat_set_flags(r,n){return t.fds[r]!=null?t.fds[r].fd_fdstat_set_flags(n):8},fd_fdstat_set_rights(r,n,s){return t.fds[r]!=null?t.fds[r].fd_fdstat_set_rights(n,s):8},fd_filestat_get(r,n){if(t.fds[r]!=null){let{ret:s,filestat:o}=t.fds[r].fd_filestat_get();return o?.write_bytes(new DataView(t.inst.exports.memory.buffer),n),s}else return 8},fd_filestat_set_size(r,n){return t.fds[r]!=null?t.fds[r].fd_filestat_set_size(n):8},fd_filestat_set_times(r,n,s,o){return t.fds[r]!=null?t.fds[r].fd_filestat_set_times(n,s,o):8},fd_pread(r,n,s,o,f){let _=new DataView(t.inst.exports.memory.buffer),l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let u=C.read_bytes_array(_,n,s),p=0;for(let d of u){let{ret:R,data:h}=t.fds[r].fd_pread(d.buf_len,o);if(R!=0)return _.setUint32(f,p,!0),R;if(l.set(h,d.buf),p+=h.length,o+=BigInt(h.length),h.length!=d.buf_len)break}return _.setUint32(f,p,!0),0}else return 8},fd_prestat_get(r,n){let s=new DataView(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let{ret:o,prestat:f}=t.fds[r].fd_prestat_get();return f?.write_bytes(s,n),o}else return 8},fd_prestat_dir_name(r,n,s){if(t.fds[r]!=null){let{ret:o,prestat:f}=t.fds[r].fd_prestat_get();if(f==null)return o;let _=f.inner.pr_name;return new Uint8Array(t.inst.exports.memory.buffer).set(_.slice(0,s),n),_.byteLength>s?37:0}else return 8},fd_pwrite(r,n,s,o,f){let _=new DataView(t.inst.exports.memory.buffer),l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let u=L.read_bytes_array(_,n,s),p=0;for(let d of u){let R=l.slice(d.buf,d.buf+d.buf_len),{ret:h,nwritten:S}=t.fds[r].fd_pwrite(R,o);if(h!=0)return _.setUint32(f,p,!0),h;if(p+=S,o+=BigInt(S),S!=R.byteLength)break}return _.setUint32(f,p,!0),0}else return 8},fd_read(r,n,s,o){let f=new DataView(t.inst.exports.memory.buffer),_=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let l=C.read_bytes_array(f,n,s),u=0;for(let p of l){let{ret:d,data:R}=t.fds[r].fd_read(p.buf_len);if(d!=0)return f.setUint32(o,u,!0),d;if(_.set(R,p.buf),u+=R.length,R.length!=p.buf_len)break}return f.setUint32(o,u,!0),0}else return 8},fd_readdir(r,n,s,o,f){let _=new DataView(t.inst.exports.memory.buffer),l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let u=0;for(;;){let{ret:p,dirent:d}=t.fds[r].fd_readdir_single(o);if(p!=0)return _.setUint32(f,u,!0),p;if(d==null)break;if(s-u<d.head_length()){u=s;break}let R=new ArrayBuffer(d.head_length());if(d.write_head_bytes(new DataView(R),0),l.set(new Uint8Array(R).slice(0,Math.min(R.byteLength,s-u)),n),n+=d.head_length(),u+=d.head_length(),s-u<d.name_length()){u=s;break}d.write_name_bytes(l,n,s-u),n+=d.name_length(),u+=d.name_length(),o=d.d_next}return _.setUint32(f,u,!0),0}else return 8},fd_renumber(r,n){if(t.fds[r]!=null&&t.fds[n]!=null){let s=t.fds[n].fd_close();return s!=0?s:(t.fds[n]=t.fds[r],t.fds[r]=void 0,0)}else return 8},fd_seek(r,n,s,o){let f=new DataView(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let{ret:_,offset:l}=t.fds[r].fd_seek(n,s);return f.setBigInt64(o,l,!0),_}else return 8},fd_sync(r){return t.fds[r]!=null?t.fds[r].fd_sync():8},fd_tell(r,n){let s=new DataView(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let{ret:o,offset:f}=t.fds[r].fd_tell();return s.setBigUint64(n,f,!0),o}else return 8},fd_write(r,n,s,o){let f=new DataView(t.inst.exports.memory.buffer),_=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let l=L.read_bytes_array(f,n,s),u=0;for(let p of l){let d=_.slice(p.buf,p.buf+p.buf_len),{ret:R,nwritten:h}=t.fds[r].fd_write(d);if(R!=0)return f.setUint32(o,u,!0),R;if(u+=h,h!=d.byteLength)break}return f.setUint32(o,u,!0),0}else return 8},path_create_directory(r,n,s){let o=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let f=new TextDecoder("utf-8").decode(o.slice(n,n+s));return t.fds[r].path_create_directory(f)}else return 8},path_filestat_get(r,n,s,o,f){let _=new DataView(t.inst.exports.memory.buffer),l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let u=new TextDecoder("utf-8").decode(l.slice(s,s+o)),{ret:p,filestat:d}=t.fds[r].path_filestat_get(n,u);return d?.write_bytes(_,f),p}else return 8},path_filestat_set_times(r,n,s,o,f,_,l){let u=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let p=new TextDecoder("utf-8").decode(u.slice(s,s+o));return t.fds[r].path_filestat_set_times(n,p,f,_,l)}else return 8},path_link(r,n,s,o,f,_,l){let u=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null&&t.fds[f]!=null){let p=new TextDecoder("utf-8").decode(u.slice(s,s+o)),d=new TextDecoder("utf-8").decode(u.slice(_,_+l)),{ret:R,inode_obj:h}=t.fds[r].path_lookup(p,n);return h==null?R:t.fds[f].path_link(d,h,!1)}else return 8},path_open(r,n,s,o,f,_,l,u,p){let d=new DataView(t.inst.exports.memory.buffer),R=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let h=new TextDecoder("utf-8").decode(R.slice(s,s+o));y.log(h);let{ret:S,fd_obj:X}=t.fds[r].path_open(n,h,f,_,l,u);if(S!=0)return S;t.fds.push(X);let H=t.fds.length-1;return d.setUint32(p,H,!0),0}else return 8},path_readlink(r,n,s,o,f,_){let l=new DataView(t.inst.exports.memory.buffer),u=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let p=new TextDecoder("utf-8").decode(u.slice(n,n+s));y.log(p);let{ret:d,data:R}=t.fds[r].path_readlink(p);if(R!=null){let h=new TextEncoder().encode(R);if(h.length>f)return l.setUint32(_,0,!0),8;u.set(h,o),l.setUint32(_,h.length,!0)}return d}else return 8},path_remove_directory(r,n,s){let o=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let f=new TextDecoder("utf-8").decode(o.slice(n,n+s));return t.fds[r].path_remove_directory(f)}else return 8},path_rename(r,n,s,o,f,_){let l=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null&&t.fds[o]!=null){let u=new TextDecoder("utf-8").decode(l.slice(n,n+s)),p=new TextDecoder("utf-8").decode(l.slice(f,f+_)),{ret:d,inode_obj:R}=t.fds[r].path_unlink(u);if(R==null)return d;if(d=t.fds[o].path_link(p,R,!0),d!=0&&t.fds[r].path_link(u,R,!0)!=0)throw"path_link should always return success when relinking an inode back to the original place";return d}else return 8},path_symlink(r,n,s,o,f){let _=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[s]!=null){let l=new TextDecoder("utf-8").decode(_.slice(r,r+n)),u=new TextDecoder("utf-8").decode(_.slice(o,o+f));return 58}else return 8},path_unlink_file(r,n,s){let o=new Uint8Array(t.inst.exports.memory.buffer);if(t.fds[r]!=null){let f=new TextDecoder("utf-8").decode(o.slice(n,n+s));return t.fds[r].path_unlink_file(f)}else return 8},poll_oneoff(r,n,s){if(s===0)return 28;if(s>1)return y.log("poll_oneoff: only a single subscription is supported"),58;let o=new DataView(t.inst.exports.memory.buffer),f=k.read_bytes(o,r),_=f.eventtype,l=f.clockid,u=f.timeout;if(_!==at)return y.log("poll_oneoff: only clock subscriptions are supported"),58;let p;if(l===1)p=()=>BigInt(Math.round(performance.now()*1e6));else if(l===0)p=()=>BigInt(new Date().getTime())*1000000n;else return 28;let d=(f.flags&ft)!==0?u:p()+u;for(;d>p(););return new Y(f.userdata,0,_).write_bytes(o,n),0},proc_exit(r){throw new U(r)},proc_raise(r){throw"raised signal "+r},sched_yield(){},random_get(r,n){let s=new Uint8Array(t.inst.exports.memory.buffer).subarray(r,r+n);if("crypto"in globalThis&&(typeof SharedArrayBuffer>"u"||!(t.inst.exports.memory.buffer instanceof SharedArrayBuffer)))for(let o=0;o<n;o+=65536)crypto.getRandomValues(s.subarray(o,o+65536));else for(let o=0;o<n;o++)s[o]=Math.random()*256|0},sock_recv(r,n,s){throw"sockets not supported"},sock_send(r,n,s){throw"sockets not supported"},sock_shutdown(r,n){throw"sockets not supported"},sock_accept(r,n){throw"sockets not supported"}}}};var g=class{fd_allocate(e,i){return 58}fd_close(){return 0}fd_fdstat_get(){return{ret:58,fdstat:null}}fd_fdstat_set_flags(e){return 58}fd_fdstat_set_rights(e,i){return 58}fd_filestat_get(){return{ret:58,filestat:null}}fd_filestat_set_size(e){return 58}fd_filestat_set_times(e,i,c){return 58}fd_pread(e,i){return{ret:58,data:new Uint8Array}}fd_prestat_get(){return{ret:58,prestat:null}}fd_pwrite(e,i){return{ret:58,nwritten:0}}fd_read(e){return{ret:58,data:new Uint8Array}}fd_readdir_single(e){return{ret:58,dirent:null}}fd_seek(e,i){return{ret:58,offset:0n}}fd_sync(){return 0}fd_tell(){return{ret:58,offset:0n}}fd_write(e){return{ret:58,nwritten:0}}path_create_directory(e){return 58}path_filestat_get(e,i){return{ret:58,filestat:null}}path_filestat_set_times(e,i,c,E,t){return 58}path_link(e,i,c){return 58}path_unlink(e){return{ret:58,inode_obj:null}}path_lookup(e,i){return{ret:58,inode_obj:null}}path_open(e,i,c,E,t,r){return{ret:54,fd_obj:null}}path_readlink(e){return{ret:58,data:null}}path_remove_directory(e){return 58}path_rename(e,i,c){return 58}path_unlink_file(e){return 58}},m=class a{static issue_ino(){return a.next_ino++}static root_ino(){return 0n}constructor(){this.ino=a.issue_ino()}};m.next_ino=1n;var b=class extends g{fd_allocate(e,i){if(!(this.file.size>e+i)){let c=new Uint8Array(Number(e+i));c.set(this.file.data,0),this.file.data=c}return 0}fd_fdstat_get(){return{ret:0,fdstat:new x(W,0)}}fd_filestat_set_size(e){if(this.file.size>e)this.file.data=new Uint8Array(this.file.data.buffer.slice(0,Number(e)));else{let i=new Uint8Array(Number(e));i.set(this.file.data,0),this.file.data=i}return 0}fd_read(e){let i=this.file.data.slice(Number(this.file_pos),Number(this.file_pos+BigInt(e)));return this.file_pos+=BigInt(i.length),{ret:0,data:i}}fd_pread(e,i){return{ret:0,data:this.file.data.slice(Number(i),Number(i+BigInt(e)))}}fd_seek(e,i){let c;switch(i){case Q:c=e;break;case Z:c=this.file_pos+e;break;case V:c=BigInt(this.file.data.byteLength)+e;break;default:return{ret:28,offset:0n}}return c<0?{ret:28,offset:0n}:(this.file_pos=c,{ret:0,offset:this.file_pos})}fd_tell(){return{ret:0,offset:this.file_pos}}fd_write(e){if(this.file.readonly)return{ret:8,nwritten:0};if(this.file_pos+BigInt(e.byteLength)>this.file.size){let i=this.file.data;this.file.data=new Uint8Array(Number(this.file_pos+BigInt(e.byteLength))),this.file.data.set(i)}return this.file.data.set(e,Number(this.file_pos)),this.file_pos+=BigInt(e.byteLength),{ret:0,nwritten:e.byteLength}}fd_pwrite(e,i){if(this.file.readonly)return{ret:8,nwritten:0};if(i+BigInt(e.byteLength)>this.file.size){let c=this.file.data;this.file.data=new Uint8Array(Number(i+BigInt(e.byteLength))),this.file.data.set(c)}return this.file.data.set(e,Number(i)),{ret:0,nwritten:e.byteLength}}fd_filestat_get(){return{ret:0,filestat:this.file.stat()}}constructor(e){super(),this.file_pos=0n,this.file=e}};var F=class extends m{path_open(e,i,c){if(this.readonly&&(i&BigInt(64))==BigInt(64))return{ret:63,fd_obj:null};if((e&j)==j){if(this.readonly)return{ret:63,fd_obj:null};this.data=new Uint8Array([])}let E=new b(this);return c&q&&E.fd_seek(0n,V),{ret:0,fd_obj:E}}get size(){return BigInt(this.data.byteLength)}stat(){return new A(this.ino,W,this.size)}constructor(e,i){super(),this.data=new Uint8Array(e),this.readonly=!!i?.readonly}};var P=class a extends g{fd_filestat_get(){return{ret:0,filestat:new A(this.ino,J,BigInt(0))}}fd_fdstat_get(){let e=new x(J,0);return e.fs_rights_base=BigInt(64),{ret:0,fdstat:e}}fd_write(e){return this.write(e),{ret:0,nwritten:e.byteLength}}static lineBuffered(e){let i=new TextDecoder("utf-8",{fatal:!1}),c="";return new a(E=>{c+=i.decode(E,{stream:!0});let t=c.split(`\n`);for(let[r,n]of t.entries())r<t.length-1?e(n):c=n})}constructor(e){super(),this.ino=m.issue_ino(),this.write=e}};var ct="code-playpad Clang 20.1.2 / Emscripten 4.0.6 r1",lt={"clang.js":{bytes:74300,sha256:"b437a648812aabd1cc87cba4a7268e2f53ab94a9071a854ba983dd62328dc30c"},"clang.wasm":{bytes:42578038,sha256:"534571fd4f9136c85d3e25a395cc31983ec3cbd41012e3928b45879a518718fa"},"lld.js":{bytes:71711,sha256:"2da4b0a04b6953bdc4869137631abd11ea7eb5a667fbd19c4ff6d68d56f302bb"},"lld.wasm":{bytes:23228304,sha256:"55ffbe1366525c1b55b65140630e0ca00ff47eae7acfdee6a15b46e738800ec7"},"sysroot.tar":{bytes:29009920,sha256:"a0d92a9fc1dccc2c181ae6812b6c169de3dad851ee4d4e796d15940776648ac5"}};function K(a){if(!a||a.startsWith("/")||/[\\\\\\x00-\\x1f:]/.test(a)||a.split("/").some(e=>!e||e==="."||e===".."))throw new Error(`Invalid project path: ${JSON.stringify(a)}. Use relative paths without . or ...`);return a}function ut(a,e,i,c){let E=K(i??(c==="c"?"main.c":"main.cpp")),t=e?{...e}:{[E]:a};if(!Object.hasOwn(t,E))throw new Error(`Entry file ${E} does not exist.`);let r=Object.keys(t).map(K).sort(),n=f=>/\\.c$/.test(f),s=f=>/\\.(cpp|cc|cxx)$/.test(f);if(r.some(c==="c"?s:n))throw new Error("Mixed C/C++ source projects are not supported yet.");let o=r.filter(c==="c"?n:s);if(!o.includes(E))throw new Error(`Entry ${E} must have a ${c==="c"?".c":".cpp, .cc, or .cxx"} extension.`);if(o.length>32||r.length>256)throw new Error("Project limit: 32 source files and 256 files total.");if(Object.values(t).reduce((f,_)=>f+new TextEncoder().encode(_).length,0)>2e6)throw new Error("Project exceeds the 2 MB source limit.");return{files:t,sources:o,entry:E}}var st,v,dt=Promise.resolve(),G=a=>globalThis.postMessage(a),M=(a,e,i)=>G({type:"progress",id:a,phase:e,message:i}),B=(a,e)=>ot(a,lt[a],st,it,i=>M(e,"downloading",i));function St(a){let e=new Uint8Array(a),i=new TextDecoder,c=[],E=(t,r)=>i.decode(e.subarray(t,t+r)).replace(/\\0.*$/,"");for(let t=0;t+512<=e.length;){let r=E(t,100);if(!r)break;let n=E(t+345,155);n&&(r=n+"/"+r);let s=parseInt(E(t+124,12).trim()||"0",8),o=e[t+156];if(!Number.isSafeInteger(s)||s<0||t+512+s>e.length)throw new Error("Invalid sysroot archive.");if(o===48||o===0)c.push({name:"/"+K(r),data:e.subarray(t+512,t+512+s)});else if(o!==53)throw new Error("Unsupported sysroot archive entry.");t+=512+Math.ceil(s/512)*512}return c}async function Rt(a){let e=URL.createObjectURL(new Blob([a],{type:"text/javascript"}));try{return(await import(e)).default}finally{URL.revokeObjectURL(e)}}function yt(a){return st?(v||(v=(async()=>{let e=await Rt(await B("clang.js",a)),i=await Rt(await B("lld.js",a)),c=await WebAssembly.compile(await B("clang.wasm",a)),E=await WebAssembly.compile(await B("lld.wasm",a));M(a,"booting","Preparing C/C++ standard libraries\\u2026");let t=St(await B("sysroot.tar",a));return{clang:e,lld:i,clangModule:c,lldModule:E,sysroot:t}})().catch(e=>{throw v=void 0,e})),v):Promise.reject(new Error("Configure the rebuilt C/C++ assets with configureCpp({ indexURL }) before creating widgets. See docs/CPP-REBUILD.md."))}async function Et(a,e,i,c){let E,t=await a({thisProgram:i,noInitialRun:!0,print:c,printErr:c,instantiateWasm(r,n){let s=new WebAssembly.Instance(e,r);return E=Object.values(s.exports).find(o=>o instanceof WebAssembly.Memory),n(s,e),s.exports}});return t.memory=E,t}function $(a,e,i){a.mkdirTree(e.slice(0,e.lastIndexOf("/"))||"/"),a.writeFile(e,i)}async function mt(a){let e=performance.now(),i=0,c=(E,t)=>{if(i+=t.length,i>1e6)throw new Error("Output limit exceeded (1 MB).");t&&G({type:E,id:a.id,text:t})};try{let E=ut(a.code,a.files,a.entry,a.compilerLanguage),t=await yt(a.id),r=[],n=0;for(let R of E.sources){M(a.id,"compiling",`Compiling ${R}\\u2026`);let h=await Et(t.clang,t.clangModule,"clang",T=>c("stderr",T+`\n`));for(let T of t.sysroot)$(h.FS,T.name,T.data);for(let[T,pt]of Object.entries(E.files))$(h.FS,"/project/"+T,pt);let S=a.compilerLanguage==="cpp",X=["-cc1","-triple","wasm32-unknown-wasi","-emit-obj","-O0","-std="+(S?"c++20":"c17"),"-resource-dir","/lib/clang/20",...S?["-internal-isystem","/include/wasm32-wasi/c++/v1","-internal-isystem","/include/c++/v1"]:[],"-internal-isystem","/lib/clang/20/include","-internal-isystem","/include/wasm32-wasi","-internal-isystem","/include","-I","/project","-ferror-limit","20","-o","/tmp/output.o","-x",S?"c++":"c","/project/"+R],H=h.callMain(X);if(n=Math.max(n,h.memory?.buffer.byteLength??0),H!==0)throw new Error(`Compilation failed (${R}, exit ${H}).`);r.push(h.FS.readFile("/tmp/output.o").slice())}M(a.id,"linking","Linking\\u2026");let s=await Et(t.lld,t.lldModule,"wasm-ld",R=>c("stderr",R+`\n`));for(let R of t.sysroot)R.name.startsWith("/include/")||$(s.FS,R.name,R.data);r.forEach((R,h)=>$(s.FS,"/tmp/"+h+".o",R));let o=s.callMain(["-m","wasm32","-z","stack-size=1048576","--max-memory=268435456","-L/lib/wasm32-wasi","/lib/wasm32-wasi/crt1-command.o",...r.map((R,h)=>"/tmp/"+h+".o"),...a.compilerLanguage==="cpp"?["-lc++","-lc++abi"]:[],"-lc","/lib/clang/20/lib/wasm32-unknown-wasi/libclang_rt.builtins.a","-o","/tmp/program.wasm"]);if(n=Math.max(n,s.memory?.buffer.byteLength??0),o!==0)throw new Error(`Linking failed (exit ${o}).`);let f=await WebAssembly.compile(s.FS.readFile("/tmp/program.wasm").slice().buffer);M(a.id,"running","Running\\u2026");let _={stdout:new TextDecoder,stderr:new TextDecoder},l=R=>new P(h=>c(R,_[R].decode(h,{stream:!0}))),u=new rt([E.entry],[],[new b(new F(new TextEncoder().encode(a.stdin??""))),l("stdout"),l("stderr")]),p=await WebAssembly.instantiate(f,{wasi_snapshot_preview1:u.wasiImport}),d=u.start(p);if(c("stdout",_.stdout.decode()),c("stderr",_.stderr.decode()),d!==0)throw new Error(`Program exited with status ${d}.`);G({type:"result",id:a.id,durationMs:performance.now()-e,memory:{compilerBytes:n,programBytes:p.exports.memory.buffer.byteLength}})}catch(E){G({type:"error",id:a.id,message:E instanceof Error?E.message:String(E),durationMs:performance.now()-e})}}globalThis.onmessage=({data:a})=>{a.type==="init"?(st=a.toolchainURL,G({type:"ready",version:ct,interactiveStdin:!1})):a.type==="run"&&(dt=dt.then(()=>mt(a)))};})();\n',a=new class extends r{id=`cpp`;get label(){return`C/C++ (Clang 20, experimental)`}get source(){return i}async load(e){return await t(n),super.load(e)}initPayload(){return{toolchainURL:e().indexURL}}};function o(t){return{id:t,label:t===`c`?`C17 (experimental)`:`C++20 (experimental)`,statusDecidesFailure:!0,get ready(){return a.ready},interactiveStdin:!1,async editorLanguage(){return(await import(`@codemirror/lang-cpp`)).cpp()},load:e=>a.load(e),run:(n,r={})=>a.run(n,{...r,compilerLanguage:t,timeoutMs:r.timeoutMs??e().timeoutMs}),stop:e=>a.stop(e)}}var s=o(`c`),c=o(`cpp`);export{s as cRuntime,c as cppRuntime};
@@ -1 +1 @@
1
- import{s as e}from"./config-3Z6xX6Jr.js";import{n as t}from"./compiler-cache-XwslsU5H.js";import{t as n}from"./worker-runtime-BObmUwpG.js";var r=`code-playpad-csharp-roslyn-5.0.0-dotnet-10.0.14-r1`,i='"use strict";(()=>{var E="code-playpad-csharp-roslyn-5.0.0-dotnet-10.0.14-r1";async function T(e,s,b,f,n){let d=new URL(e,b).href,o;try{o=await caches.open(f)}catch{}let c;try{c=await o?.match(d)}catch{}let h=async r=>{if(!r.ok)throw new Error(`Toolchain download failed: ${e} (HTTP ${r.status}). Check the asset URL and retry.`);let l=r.body?.getReader();if(!l)return r.arrayBuffer();let C=[],i=0,u=0;for(;;){let m=await l.read();if(m.done)break;if(i+=m.value.length,i>s.bytes)throw await l.cancel(),new Error(`Unexpected toolchain size: ${e}.`);C.push(m.value),performance.now()-u>100&&(n(`${c?"Reading cached":"Downloading"} ${e}: ${(i/1e6).toFixed(1)} / ${(s.bytes/1e6).toFixed(1)} MB (decoded)`),u=performance.now())}let p=new Uint8Array(i),S=0;for(let m of C)p.set(m,S),S+=m.length;return p.buffer},y=async r=>r.byteLength===s.bytes&&[...new Uint8Array(await crypto.subtle.digest("SHA-256",r))].map(l=>l.toString(16).padStart(2,"0")).join("")===s.sha256;if(c){try{let r=await h(c);if(await y(r))return r}catch{}try{await o?.delete(d)}catch{}c=void 0}let w=await h(await fetch(d));if(!await y(w))throw new Error(`Toolchain integrity check failed: ${e}. Use the pinned toolchain assets.`);try{await o?.put(d,new Response(w))}catch{}return w}var P={id:"code-playpad-csharp-roslyn-5.0.0-dotnet-10.0.14-r1",assets:{"_framework/Microsoft.CSharp.45w5ndn4gy.wasm":{bytes:301333,sha256:"0893b8a6e6506cb2dbfa2dd01ac779d4616d013a2fac80e8cc15a64cdf526f0c"},"_framework/Microsoft.CodeAnalysis.CSharp.df8hfd5o8z.wasm":{bytes:6828825,sha256:"17a863076b8e6cdfad78e7e9b739ea6940939880f2916523aaa19e7a2b3b463c"},"_framework/Microsoft.CodeAnalysis.erp1n29u9n.wasm":{bytes:3048217,sha256:"56f8336593d9e41ee553106871e5aa82aadac0ab3f04496c8d1bbe601f619089"},"_framework/Microsoft.VisualBasic.6b1p6yq8b3.wasm":{bytes:6933,sha256:"1eff194716c295748d936659cab92e84a0d13515c34c2f05838c910f0fb9e2d5"},"_framework/Microsoft.VisualBasic.Core.4day4tivbb.wasm":{bytes:418581,sha256:"f860e30addf5a3562ba06fd93984663df5ca52ba9feadf1edc88e249fcb05c5d"},"_framework/Microsoft.Win32.Primitives.4bv2m8ah4f.wasm":{bytes:5397,sha256:"00e133d3bcca6baa47c8389b471441c9d4b89bcea2a308b5b779a70e714e2894"},"_framework/Microsoft.Win32.Registry.o7q57g4y3v.wasm":{bytes:22805,sha256:"0c854e9283334e2be8c837a9e95040ab6a649b45cb0078e0b19f1cd215604788"},"_framework/Playpad.CSharp.bc2sx86ihs.wasm":{bytes:19733,sha256:"25449d8432b31e70aa0109d2244595d3f1becb0493d3b9b9aa21f91a13fbc11f"},"_framework/System.AppContext.7pfnw66j8s.wasm":{bytes:4885,sha256:"3bc775156968db8b138e70f0d6cf919e8eceda801518dc4395a6c1b7029a76a2"},"_framework/System.Buffers.n9eydi1g7o.wasm":{bytes:4885,sha256:"bb413f159d106aa82005001b72d3dbe21702fe5b0729dfb0ad411e3b9ae14933"},"_framework/System.Collections.Concurrent.j651l47s89.wasm":{bytes:78613,sha256:"85fa85329f2778f2d7feeabe96e17150c2529cdee2671227f6adca55511e85ba"},"_framework/System.Collections.Immutable.5srny90eq0.wasm":{bytes:240917,sha256:"659249897525dbdd045be0c365aa78670911e71f082962fab29cb3d92f659523"},"_framework/System.Collections.NonGeneric.0gs0za6wta.wasm":{bytes:37653,sha256:"005b930e461f6d5f28714586e73c030a2d0d7705b93ff701e96465dcec8626de"},"_framework/System.Collections.Specialized.0lamnc2eez.wasm":{bytes:37653,sha256:"14a6ecd2d98964854df3c84e5d28c9e370f8511d88e17e19894bdd5487074534"},"_framework/System.Collections.zkl9zn110m.wasm":{bytes:102677,sha256:"7d1b8e3fb815980cc84b2d67b6894fa6bf936064cb4c0639547f214d3337826e"},"_framework/System.ComponentModel.2dg08nsbgq.wasm":{bytes:5909,sha256:"2a69c31d5b96be96e2dbd84b2eb722f33401245e3c3c18b449fa49d6b35b516c"},"_framework/System.ComponentModel.Annotations.qqu4bynrpj.wasm":{bytes:92437,sha256:"5ea898870e6d334ac03751ca45e941bdc786959862a4604c0b7925ae22365c1c"},"_framework/System.ComponentModel.DataAnnotations.6ljk5kma3w.wasm":{bytes:6421,sha256:"2a75102b3e594a3a5aec02c737c07bb07d67b31d84584a84dc93bd8fceaa44f7"},"_framework/System.ComponentModel.EventBasedAsync.0necwturs4.wasm":{bytes:16149,sha256:"1c2972979910342271b8e94c4455ff86593b6b428dbe29283927fc5038739df9"},"_framework/System.ComponentModel.Primitives.ex1da4zowy.wasm":{bytes:32021,sha256:"feaafe39e5531ccded6bd652b0ecbd1ddc7a3600e3ee89091411dbb113ae6489"},"_framework/System.ComponentModel.TypeConverter.t0513robn6.wasm":{bytes:306453,sha256:"53c1eda4d6b514c881cee8f6c7023ca6aa25304c2560c2a27357d5912b7e9efa"},"_framework/System.Configuration.11exwmwngo.wasm":{bytes:8981,sha256:"45bdaf5a151f8d873e4f3d63924b0b8e4711aa8e53a1a6b49bbaf8722ca07851"},"_framework/System.Console.4o049fyksq.wasm":{bytes:43797,sha256:"9cbe95b0e710127a9dc6fb016d89e3198bf5602e8767b4fe3318de77cc2e4184"},"_framework/System.Core.2bi377k7h6.wasm":{bytes:13077,sha256:"6e627a49290c7337183d58c756ca20ee0c6aef3716c73f748a1f2a040ec13f12"},"_framework/System.Data.Common.zrj82y4hfd.wasm":{bytes:1007893,sha256:"1fa0c46a27e2d1eb30b6ece5431b62a99eb0d3dbfff0ab3b0160d202b1283e62"},"_framework/System.Data.DataSetExtensions.ndyqwckzh5.wasm":{bytes:5397,sha256:"8b005ca671c5224a36cc8fcaee97ebd9fc9c8b44a4f431211c0e279b67605ef4"},"_framework/System.Data.cbzplu1klk.wasm":{bytes:15125,sha256:"08fc7cad424adfa678e5e03e1561fe679db996e8a887b14de7893786bdcfc11c"},"_framework/System.Diagnostics.Contracts.xbykr1nyue.wasm":{bytes:5909,sha256:"33867da04cc7cd4d8de2f10f0490f5488a8c8b83928597d906e86aae59e96c24"},"_framework/System.Diagnostics.Debug.faxnhsagf6.wasm":{bytes:5397,sha256:"b9b6df298d8fc68baec7ecf30ef40095a0810b44033dc2285e6e4d94eacac0cb"},"_framework/System.Diagnostics.DiagnosticSource.o8neuaehsr.wasm":{bytes:192277,sha256:"d82c2d87d4b05f79cded591ec897e75aef9fd5c93a5ec034bb76b8c67c211dd8"},"_framework/System.Diagnostics.FileVersionInfo.3veftfofsy.wasm":{bytes:12565,sha256:"ff1105930376d41151ef2e5c3d79cdb7002dfb3f7923bb3bf5caf3c33e301ce3"},"_framework/System.Diagnostics.Process.m02d4wsk19.wasm":{bytes:46357,sha256:"8af0d33b005cf399b2d983101aabd789b759fce6d53724ab17e4257df275f357"},"_framework/System.Diagnostics.StackTrace.3n0s7h4d43.wasm":{bytes:15637,sha256:"c1428e9f1dd799329b94b73a3a739c726195e78c7e499a7f9fa76abc9711a153"},"_framework/System.Diagnostics.TextWriterTraceListener.eytcvy9k8s.wasm":{bytes:21269,sha256:"a6f9c9665c871e8702c313c72aff56d8678fa2aeef5d58bdbd22895b5d7bb0cc"},"_framework/System.Diagnostics.Tools.fj2fven09q.wasm":{bytes:4885,sha256:"655eda3c94089e2fd9a0eda837027d39fdc8782124027f1ecb5e1627306f3ab2"},"_framework/System.Diagnostics.TraceSource.zdzes0xpw3.wasm":{bytes:48405,sha256:"596906ce63f2a87afc7c0c93ce63b8edd564dbab4cf44cba12e1e1de57cd3989"},"_framework/System.Diagnostics.Tracing.p8zfsagsem.wasm":{bytes:5909,sha256:"29645956735e67930940e0068fdf939e7724ac191aec9af9fc7fad2a5c478b4e"},"_framework/System.Drawing.Primitives.qihgks5s1u.wasm":{bytes:54549,sha256:"4e6f66a93b0178adcba6b52555fe1665e5d5c9f295ede78bb1f88a8ce7cd1730"},"_framework/System.Drawing.yh4pswp3to.wasm":{bytes:10005,sha256:"064f946cd835b5c06b88b5e8d3baafa1b65212fea3f741846530b9c15e8397a8"},"_framework/System.Dynamic.Runtime.qf4wa78w3a.wasm":{bytes:5909,sha256:"76243dbb12aaf714360cd6bb1adff3eac41d019028d45706f9a877fa0b8b4933"},"_framework/System.Formats.Asn1.ei47lr61p0.wasm":{bytes:86805,sha256:"963360faa396a0ac4f0ee1fb6a4de8195c8abc8722cfcb5e3f34c8f8cfa2cc44"},"_framework/System.Formats.Tar.jt7yo4wxzn.wasm":{bytes:28949,sha256:"e9bb9ece17de3bb99b99f9e27d9be6ea25feb824606217a81a581a3defd799e3"},"_framework/System.Globalization.Calendars.vfqjdvj4bj.wasm":{bytes:5397,sha256:"9b458344e441af8a342d90d9756002bd53d3ca81fd2ecec1d9956c09ab738761"},"_framework/System.Globalization.Extensions.fb3tp0zu2j.wasm":{bytes:4885,sha256:"0b1f2e8dd68f450050c6ea5d933b06ffc0133120dff33a87b5ccf1e523439be2"},"_framework/System.Globalization.jpj90sbpo9.wasm":{bytes:5397,sha256:"07ac16899c10c3af6fb0bb4cd1ca976ddf3fe82165fb06b74bb034cab14a0bad"},"_framework/System.IO.Compression.Brotli.fpnvzsxpvo.wasm":{bytes:18197,sha256:"c3cc052fa471c3f25016b7eee90ab7eb3793995aea8f08ba93e3b6d85c9ba0b7"},"_framework/System.IO.Compression.FileSystem.tk5twcs8br.wasm":{bytes:4885,sha256:"7d51272f3b3ec7a32ef1b73e693fc90753705665cc50f98a56a3e7f60970cd31"},"_framework/System.IO.Compression.ZipFile.f6odqd84z5.wasm":{bytes:43285,sha256:"59161959d34a7935b83bc858b589d34cc17ade5912137658ee3d7ca1ec4b090c"},"_framework/System.IO.Compression.zo5nnp1cfl.wasm":{bytes:157461,sha256:"6df8da5437998a60f5afd17b4c0b7145d94171dd2b0dd1bed6ef0d762074062d"},"_framework/System.IO.FileSystem.4xxxdm8fc4.wasm":{bytes:5397,sha256:"f8ae1910ff477fbb38b7a1a689ddb555d5ab9f7b5ec59e183fb7c7aebacbe077"},"_framework/System.IO.FileSystem.AccessControl.3nsp4r0ce1.wasm":{bytes:21781,sha256:"3f2d25968e0dad93040716ef7d97382bd6a5517bd0e3c6d707fa520df255d627"},"_framework/System.IO.FileSystem.DriveInfo.2dz9a3mpco.wasm":{bytes:13589,sha256:"46f152531a56b5a1234b905b5460060a3a76c74a94f575e6444848bb7d15a0fc"},"_framework/System.IO.FileSystem.Primitives.ts09gphu65.wasm":{bytes:4885,sha256:"b3efcf0755c59862ad4893ad4b668d5dab114f3561ae632d1ea7479e65c22180"},"_framework/System.IO.FileSystem.Watcher.zra8jhxo53.wasm":{bytes:22805,sha256:"8fcf89a027896f110eefc2e1e76a86bd91f6537a748afdc2ecc7fbd00d1110a1"},"_framework/System.IO.IsolatedStorage.czh3ilflkw.wasm":{bytes:24853,sha256:"388c1f0e6894454587ae794e210a93feaa23c8932064b68ad76e660a2b3d4fb1"},"_framework/System.IO.MemoryMappedFiles.f0h74bif4r.wasm":{bytes:39701,sha256:"dfc14559b3102cdd3d1155ec7cc198999db5b31439aafcd1775dffa39015d0a7"},"_framework/System.IO.Pipelines.eqtd8a5j6e.wasm":{bytes:67861,sha256:"3aa8165bec8d2b718d927cf0ba7ba9fb2e301544164d62202a578d3e3010d850"},"_framework/System.IO.Pipes.AccessControl.cz75e7snno.wasm":{bytes:13077,sha256:"a881296c9ae2cefe4f57c030f0cd13a0384ae7a82519dd0063d62feab0877a2b"},"_framework/System.IO.Pipes.amk3gre8pn.wasm":{bytes:32021,sha256:"22c795928e765dae50c2632f264efde23032c0225fcff6acb4aa075855543436"},"_framework/System.IO.UnmanagedMemoryStream.pjda8c8goj.wasm":{bytes:5397,sha256:"159b449cef234de1150ea545ce482dadadcffb47cccc4e60038840eb1be87a4c"},"_framework/System.IO.hvb68vhf4w.wasm":{bytes:5397,sha256:"63ca4a239901c3ba9517ab48c5c70e2b2f2f983b8f5c96c6215ffb74efb90d42"},"_framework/System.Linq.AsyncEnumerable.p5kf8px69a.wasm":{bytes:446229,sha256:"cdaf09cf14de62c8172a64d1f1fd540b050edf1a751873b575f1c6dab92f171d"},"_framework/System.Linq.Expressions.rrm2f8e4yg.wasm":{bytes:565013,sha256:"c74ef523be9ae6830a76be0baf9a9a508ce7ca31ac5876bb80dc7d1d777b5cab"},"_framework/System.Linq.Parallel.2c1yb2s745.wasm":{bytes:212757,sha256:"be110713a9092c3594d36dc664441be579d17fbe9b0be0a1bd289bd4fca58ee9"},"_framework/System.Linq.Queryable.trhrf5j8ds.wasm":{bytes:68373,sha256:"b965d6be5e8744b201ab8142f11c57aaf0a95081020880c1ec709fb9654c338c"},"_framework/System.Linq.gvekllsg4c.wasm":{bytes:190741,sha256:"4cf1e524ac3f80887e4c7d723c29f54b676ad76325c8472ecbbd064652881d57"},"_framework/System.Memory.rvge25ilzk.wasm":{bytes:45333,sha256:"09ddaf85e36c7c13ef4d7e32cc5436cfec4984e1c26c989072e499ddde8ae062"},"_framework/System.Net.Http.8ubauysc2i.wasm":{bytes:286485,sha256:"903f936e8d7a67798c76e85d53838ac80c88b1ef3d45ec53ff2ac95a8bbc4c2b"},"_framework/System.Net.Http.Json.cnwprpsgic.wasm":{bytes:45845,sha256:"8830cced672b10f509c317186768b69245fbc9c3695eb870b9a81e31a1dfa086"},"_framework/System.Net.HttpListener.ij8kltpk25.wasm":{bytes:45845,sha256:"c23e07ce4477568bf5687cc8f81f2eb9ce806667398756ab96507671f83a3594"},"_framework/System.Net.Mail.z8qhziwoem.wasm":{bytes:94997,sha256:"ddd584fafc23dc46fd5eca406b6f0edb6fc2af837280fd50b276327c867a41ee"},"_framework/System.Net.NameResolution.ncmdi0kq9p.wasm":{bytes:14101,sha256:"993b5c9ce17363348c5d77766b5ef8ba7cd9e9bf8490f54bf295d600c0318f5d"},"_framework/System.Net.NetworkInformation.es6jl8uhrp.wasm":{bytes:32021,sha256:"e2e10d93298c3e8ba16fc2acfebc314c9e32ad07d28b99a491ad1f215795f216"},"_framework/System.Net.Ping.leo6kko976.wasm":{bytes:17685,sha256:"0de562db7b1035f071863450f7e875892b1705ba696cc11ee3593dda48894fc9"},"_framework/System.Net.Primitives.yzzu57r5h4.wasm":{bytes:97045,sha256:"bea2dfad62c29bbf61a9b34552bb6b28356cc6ce36c56e96c058639c3ee2a3fc"},"_framework/System.Net.Quic.t4x9xorc7c.wasm":{bytes:28949,sha256:"031f5366680b6a4b90cf8ed2ced5d135391b1942a1423e991ebeddfd7b47940a"},"_framework/System.Net.Requests.hvrao969rw.wasm":{bytes:55573,sha256:"9d27640110c78c3c04da4f2f070589ff6857804316f91765cc59d305e45ae9dc"},"_framework/System.Net.Security.z570hyrh50.wasm":{bytes:104213,sha256:"b972545804845422c6b90682ef9585ff07ca24394bc4abcafaa8aab8841476ff"},"_framework/System.Net.ServerSentEvents.b3gkat9xqz.wasm":{bytes:30485,sha256:"89c3d8604b565dd8b5ac18dcd39b73f311c81e20b8d5cdbd3c3a704c958515f3"},"_framework/System.Net.ServicePoint.k1tgr3lkj6.wasm":{bytes:4885,sha256:"082ef4faa63db1a669223b6b892729a426f1017c61a8140167d9a935f65cabd5"},"_framework/System.Net.Sockets.fgcxent7fc.wasm":{bytes:64277,sha256:"b1284556b3eeceed8cee152f19f6a6b32c7d35ab031f64a4b96968cbef84ff90"},"_framework/System.Net.WebClient.kpwi6t40sc.wasm":{bytes:45845,sha256:"18108441da8fd4dc43cd29a42d491c27e23961e0188714ce41deffa5e113b034"},"_framework/System.Net.WebHeaderCollection.fnxrdiu9j1.wasm":{bytes:22805,sha256:"1bb8ab08176b1d4878d9d5732629e730cd863d2e0e458de1914cd71aafcc7a86"},"_framework/System.Net.WebProxy.wtgabypaqs.wasm":{bytes:11541,sha256:"4cc9d37b00460499d38df4cc1bb4a9408fa0996e9cdef5244ad645b550cd87b2"},"_framework/System.Net.WebSockets.4zomq83cjx.wasm":{bytes:99093,sha256:"102e21acf0257c9bd1115dd74f36f0cf1844ea1872ecf3e78f4af2d9038878c9"},"_framework/System.Net.WebSockets.Client.l4ui9wgjyz.wasm":{bytes:42261,sha256:"fbade9ba11569ee8ead57e48bfad3419d4b5800f2a0503de1ea87ddbab5e78d6"},"_framework/System.Net.plchg2cs85.wasm":{bytes:6933,sha256:"f38d34d3e084c72fda1c6182f4fd11644d922dfa7b4efdb83809b6bb6eba4879"},"_framework/System.Numerics.7xa3ygjnjn.wasm":{bytes:4885,sha256:"f513f73d4658cd05b3d587d5dc634450d3d2811ca92b12e0065d111f0fb7fe08"},"_framework/System.Numerics.Vectors.2neq4xg5b1.wasm":{bytes:5397,sha256:"624bf089833a6c91bd2c0e83cf58f9db9b8e702dcc8c9e2b389610f8f3ad9924"},"_framework/System.ObjectModel.0us7g9291u.wasm":{bytes:30997,sha256:"b8c1e66933e2073d4d95b7971ce949d2aee7caacd85a222261200d12368e6305"},"_framework/System.Private.CoreLib.7henw1oe7e.wasm":{bytes:4870425,sha256:"0b6d3f3864053400013921497367c1f9806b10baa069e9e80ea2ba7ff1943d20"},"_framework/System.Private.DataContractSerialization.45rz0h7hbh.wasm":{bytes:849173,sha256:"2808c98580c4009f7850dde898e1f8d81a15e427ddeb122033384dd48a0c1252"},"_framework/System.Private.Uri.c0pesqh6or.wasm":{bytes:95509,sha256:"e4b56986f49b6104f86884d59fd3a4eff4e525fdd2d1f83baee01b752efa337e"},"_framework/System.Private.Xml.Linq.91dmao781k.wasm":{bytes:143637,sha256:"7d05fc1b72e4d16c33f13e7cfd85a6f5a92f5c2ca343c8f78d4425d2afa50d0a"},"_framework/System.Private.Xml.ihpa1sp5u8.wasm":{bytes:3096857,sha256:"86009953171be26f62eab577e33c3502d82ddc74a9d6f27c6b4d07ea6300e498"},"_framework/System.Reflection.DispatchProxy.dotf7d6gov.wasm":{bytes:27925,sha256:"03a1a48a2b900d219650d22288cb1ebb62feb218fef7788daa6aead0e237f14d"},"_framework/System.Reflection.Emit.ILGeneration.0x2k63jlqj.wasm":{bytes:5397,sha256:"c46d97174687a1f77ef95a0c085d632881c1f315d7141b985a673662131235e0"},"_framework/System.Reflection.Emit.Lightweight.5yjn7ykajf.wasm":{bytes:5397,sha256:"bdb328f85330a0991ea097895f5f233c7c185bcc54d115f9f4deb7c02fa7ce83"},"_framework/System.Reflection.Emit.ynxp91g9b8.wasm":{bytes:123157,sha256:"52fc8f0a51bcc2c5da80be2148b8391dc1665768e3aa6e04a0a0a7a2aeee52c8"},"_framework/System.Reflection.Extensions.0ouvp5b0xg.wasm":{bytes:4885,sha256:"00b61c99e5b7930e88707c4614942c0f69e91bd0acadd0e728d3e219f1137a53"},"_framework/System.Reflection.Metadata.vkm0bf1n4h.wasm":{bytes:493333,sha256:"b136c7933bc62da5e4f3e34ad6fea876f5cc7a7e47d35e7b7c64055927fc68f6"},"_framework/System.Reflection.Primitives.cnvk9lkykl.wasm":{bytes:5397,sha256:"c84511d42d21a09fd8818bb0ee4d4423584f19dd9a58a98a8d8631c0435336bb"},"_framework/System.Reflection.TypeExtensions.jnvi38irak.wasm":{bytes:14101,sha256:"bf533973a0a50cba610aac73875d9f8627c173b463311d060f79ea4922a9d64e"},"_framework/System.Reflection.qdi0svky7b.wasm":{bytes:5909,sha256:"0e958c24d437bc1b1e321617c69dda15aba94d0e13b741c39a514108dab87958"},"_framework/System.Resources.Reader.tkyk3pewoj.wasm":{bytes:4885,sha256:"f34cfbeb3f39e7bfa7d0d892e3fdcfeda727e269b2a622d74ca455d41ad740b3"},"_framework/System.Resources.ResourceManager.mxgnwpq6s6.wasm":{bytes:5397,sha256:"7af92fba46216d614859a6466c6a013e936a510d492affb6ee74179d23620998"},"_framework/System.Resources.Writer.u12ln0bq25.wasm":{bytes:16661,sha256:"a2a46ada8be5659c787b4da0494298da0ffc2467a0b02a7eab604dca5c532866"},"_framework/System.Runtime.CompilerServices.Unsafe.mvjra26big.wasm":{bytes:4885,sha256:"624f428a1c8ffd524aa47ced54090373d0f389162b6dfb00689343f2a3ac5803"},"_framework/System.Runtime.CompilerServices.VisualC.0zws5y4za8.wasm":{bytes:6933,sha256:"ec82d7e3669ba41156f4d70d94bf30c47dd28829cf5de4591f18bce80943d1a0"},"_framework/System.Runtime.Extensions.53v9tmujmf.wasm":{bytes:7445,sha256:"5f05d3f29944d5adc9a644a37e1818edc5cb9f4450fe1ed88b600b0d84bda226"},"_framework/System.Runtime.Handles.dtp1f2k1pr.wasm":{bytes:5397,sha256:"f16fe73e38bb80ab6b26486ad193d8766254138bac0524f2861959c7834cbee1"},"_framework/System.Runtime.InteropServices.JavaScript.b9bqw25qxw.wasm":{bytes:79637,sha256:"810c9571d56aae8aabdccec828936d48cb8664b4e2e923d3c49f5c288234a26c"},"_framework/System.Runtime.InteropServices.RuntimeInformation.5dmsm0qrdq.wasm":{bytes:5397,sha256:"c7696a8781fbc588fa126969f0a8b0703c3df1181e9e723631d5a7816636c406"},"_framework/System.Runtime.InteropServices.zc5o5oswy7.wasm":{bytes:54549,sha256:"dd89331d3297a0c4a5aac4e6ed289c59d6c8858f7f85d55a46fb0d80c69ca429"},"_framework/System.Runtime.Intrinsics.uupmanm0z1.wasm":{bytes:6933,sha256:"6692c7b97d8261781b893a91a9bed12a8da493d0ad20d6e2e941ab4b052c6218"},"_framework/System.Runtime.Loader.bmhnwgr24i.wasm":{bytes:5397,sha256:"0db7813efcf24740ffc3121704940e5b39bac5745b05c3cbd23a71bbc13d7800"},"_framework/System.Runtime.Numerics.hnmfmtcdek.wasm":{bytes:134933,sha256:"937500e9e310341dabaee15f5c1f39eccc0214d055b846951547ed19f635659d"},"_framework/System.Runtime.Serialization.890gxgs7km.wasm":{bytes:6933,sha256:"b41917f9c13f891781b2babb541b8d01f8394a51f2e9323922eb94a2816a2d5d"},"_framework/System.Runtime.Serialization.Formatters.k6qqn2m2yp.wasm":{bytes:55573,sha256:"f4592c11ffc0e2a191254f637a0d117e1a09f8d1ff5a1065e5c175310183097b"},"_framework/System.Runtime.Serialization.Json.rmpm3bs9gf.wasm":{bytes:5397,sha256:"bde54b4f956372ced92d5efee2c37314343968505e7146ab269a2e3771a7b38d"},"_framework/System.Runtime.Serialization.Primitives.rhltpkb1qn.wasm":{bytes:13077,sha256:"0f8b94ee594a9fcc5c8506072e13a7d50735d02df44adf5e34a533e3e38d9a9b"},"_framework/System.Runtime.Serialization.Xml.2qu958brox.wasm":{bytes:6421,sha256:"36472147c1166a70a5722cf793fa9abbe1bab93527241979607865df0a2f58be"},"_framework/System.Runtime.q3byyncrvz.wasm":{bytes:34581,sha256:"4af52a715b0a80fca05f4fe3d35e0882a47699e2cc64a8d6dfdb5fbfc5bddedd"},"_framework/System.Security.AccessControl.frpe4iqtxg.wasm":{bytes:47893,sha256:"eb65f6286a07968d12c0b8e5330b6c9dfa314dd224e877a0c4aea82e78028785"},"_framework/System.Security.Claims.1iu8vf654n.wasm":{bytes:44821,sha256:"97f82dc8889938fdcce4e09bea257e9c1b49d991d9458836879150444e5b8b70"},"_framework/System.Security.Cryptography.Algorithms.667n7jcyg1.wasm":{bytes:6933,sha256:"f2a8e4d45f9f2967b51b58bb85319e8852d3a333dbaf9cd2386ca4b00652e373"},"_framework/System.Security.Cryptography.Cng.bd7h0b8iov.wasm":{bytes:5909,sha256:"8f4b9ed85aec8a2564ebe8d7d8a4d1150bb46f2aea851733c26166faddb90fd7"},"_framework/System.Security.Cryptography.Csp.z1odikd5x2.wasm":{bytes:5909,sha256:"f912404d06760570df5a52dd7b64e8af3125dd6f452bd8938faec529f3e02366"},"_framework/System.Security.Cryptography.Encoding.o0gt2d4ysx.wasm":{bytes:5397,sha256:"a8b33cdbba50e569c52acb0fe72e17ad4e278c1209bcc338d41025e38071bc63"},"_framework/System.Security.Cryptography.OpenSsl.90bbqu9909.wasm":{bytes:5397,sha256:"87916287aef8bdf7bb1fb87fdf1e64dc8b715228c129319cc41b17e64dc5b13e"},"_framework/System.Security.Cryptography.Primitives.wc69ogz8hc.wasm":{bytes:5397,sha256:"90efa59ad8a365908c18aff92e86336eb346914ede31bc51e3008aa394c66acd"},"_framework/System.Security.Cryptography.X509Certificates.zdajb5d4ry.wasm":{bytes:6421,sha256:"a95583972db3c698e929f1e9d0bfd5268c20247b39ffebe0e435ced691e01069"},"_framework/System.Security.Cryptography.isqs0vklct.wasm":{bytes:643861,sha256:"5e2d390cae360df7f1a224f866cd4648f896a02bdd8dc8b6dd97f4036a3434a6"},"_framework/System.Security.Principal.8kc2gzptia.wasm":{bytes:4885,sha256:"18f86f82bdc342716c4f4d1ce95cef59f29516c18f4b107e20e4fb2283bf3ca3"},"_framework/System.Security.Principal.Windows.lvinz1flf3.wasm":{bytes:27413,sha256:"af696bc41c787f9d87ae55b4bc5799b1e384083d610340774246b5283f2b5f76"},"_framework/System.Security.SecureString.287gima5tn.wasm":{bytes:5397,sha256:"92d299c328a15eb44a972aaa0142d628d9b35c1a555d5e6b296d14fcf1f31736"},"_framework/System.Security.zwe9caa7de.wasm":{bytes:7957,sha256:"c3076430d76f8d122b73973756f5c601c96444d2e303834fbda2151aa3fb117c"},"_framework/System.ServiceModel.Web.eh14pbj71g.wasm":{bytes:6421,sha256:"7e6a649d68f4543fefcd8add264555779efc37b5986ec96106f1598703eaa247"},"_framework/System.ServiceProcess.thnl06mz62.wasm":{bytes:5397,sha256:"cf9d149513509280a136812038d16f8421e5ced70788b6c9595170242d702530"},"_framework/System.Text.Encoding.CodePages.r4fb0qucdq.wasm":{bytes:732437,sha256:"a556ef19b61455e586137ff454f3120091897dcc43a44c19a71d7ef489a3ddfc"},"_framework/System.Text.Encoding.Extensions.qyio04sfs3.wasm":{bytes:5397,sha256:"fe7930a6f00825e1c4a3f32e0e3bd42117377db151afc127110c70fbb701366a"},"_framework/System.Text.Encoding.x8frxl6434.wasm":{bytes:5397,sha256:"f11aa7fbf9e9a4f86b0a34a5478e6553d314461dcbe69fc8097adf1f9d69808b"},"_framework/System.Text.Encodings.Web.i5h886ktzy.wasm":{bytes:55573,sha256:"2a97377ae59b872eb3d69f1eb9555ba512f577708f951f7a2ef8040292911df0"},"_framework/System.Text.Json.rfs8iutklf.wasm":{bytes:638741,sha256:"f79b95a0e74fb4fb30fb90a704078e0b910c6d9d08cd9a7ab7a589b8fdcc24ef"},"_framework/System.Text.RegularExpressions.3wwgc8ow33.wasm":{bytes:374549,sha256:"8336c54d5413476b6125468549c98d35c0a9e5bd0db682b3795a7351d38e7b4c"},"_framework/System.Threading.5z3yk0hlih.wasm":{bytes:34581,sha256:"a12c2a6463d08e453a9e0dc72152b68692c5e6b2f5d69d8700f0c0bd2c4ba90a"},"_framework/System.Threading.AccessControl.3jdprnrbz3.wasm":{bytes:23317,sha256:"41c872fb18d50bc6d15f2f2c79ca48e825b0de88f0959f1356b02d2df31dc28e"},"_framework/System.Threading.Channels.u6jwukaw3f.wasm":{bytes:56085,sha256:"2677baa60a9cc551734e24a4eb400413c2157d310d8eae8c666a9f428e14df75"},"_framework/System.Threading.Overlapped.906hny6ev5.wasm":{bytes:5397,sha256:"57a8b7621e425edb8bc3c1114daed57774c1dfc75975a3aa12a0e4cfd1e3612b"},"_framework/System.Threading.Tasks.Dataflow.yxumrwtpb9.wasm":{bytes:175381,sha256:"da2eef656f41a87395f3f24935b557e4b054d994e220ae70401a820712cd440f"},"_framework/System.Threading.Tasks.Extensions.c9qgjzqtfp.wasm":{bytes:5397,sha256:"f027df139487b8613d3b6e1271a920c441ff5d7fcae2bc774009b50a3f703a30"},"_framework/System.Threading.Tasks.Parallel.984t0vlw0h.wasm":{bytes:50965,sha256:"a9e66658c76d0aa175b202b59391a313ed841a8ca09fbe80ef88962090b72b6e"},"_framework/System.Threading.Tasks.e8zo3kytn9.wasm":{bytes:6421,sha256:"a224a48edb58b9d097a72b83d5804930357555dee3f8be811827482e827ac544"},"_framework/System.Threading.Thread.0kl8n21ama.wasm":{bytes:5397,sha256:"206e44a32770dab61b10150554dd82dc69e29779609405d2a79da858f1ec5ff1"},"_framework/System.Threading.ThreadPool.uis7d1kkur.wasm":{bytes:5397,sha256:"da628e4a405d14fcf624643d3b9c632d47e4f478b30a21680c142901aec3bfe7"},"_framework/System.Threading.Timer.d0q7n4qone.wasm":{bytes:4885,sha256:"93d9959881dd75ace8b74ecf1307fa1c8bf210bd384e44feb84d203502a23486"},"_framework/System.Transactions.1rh8d3l1yg.wasm":{bytes:6421,sha256:"ddb4bf21d75f14d92cddd44d6d5abb88fc2f6dbabd24e4f692ce8a24c42ba5af"},"_framework/System.Transactions.Local.88eb0ckc89.wasm":{bytes:165653,sha256:"c80cdc0b7339172c58d06b47543bacf5ead18c6fbc50f483e6eee1973eb4102b"},"_framework/System.ValueTuple.dz9n78v09g.wasm":{bytes:5397,sha256:"490935cf3415a01a302a6caf3e404a0c8591bc6a5ad039e1ad4c892cee66edda"},"_framework/System.Web.HttpUtility.zkk9vwuwmx.wasm":{bytes:19733,sha256:"73afab7ffbcfa6e1479aa8ad626e3470e3346a80a2e7574d766e41c61e9df242"},"_framework/System.Web.cpb2jt6aj4.wasm":{bytes:4885,sha256:"c00e79f45b25abca38109c095dfa83a4616f107129ce05badc98ef08ea0ab819"},"_framework/System.Windows.z1cdp2137j.wasm":{bytes:5397,sha256:"474f8c034c878c2877fd38bfcc81a7ca91ec14f465067924def2447f3a0ceb1f"},"_framework/System.Xml.Linq.zfqbqkhg85.wasm":{bytes:5397,sha256:"616bc8b437b614c7e754c5ab40ea583b2075fbefd75684218446ce675a330615"},"_framework/System.Xml.ReaderWriter.j5zd7b3r9j.wasm":{bytes:11541,sha256:"375655970f08782d60c0b7e660a2ed18b100632cd0beccf6072f453461b33537"},"_framework/System.Xml.Serialization.g3ffx007q0.wasm":{bytes:5909,sha256:"d48409f2e83289d8a283e0dac4e15f6daaba7d0d9f1ef0ed0632479fcb670fea"},"_framework/System.Xml.XDocument.d9vqmjsh7t.wasm":{bytes:5397,sha256:"c12264747d6099b7063ae2ecc540848a570d33620fdf5f4815d34ded85c9bc8f"},"_framework/System.Xml.XPath.XDocument.ikh0avvfe3.wasm":{bytes:5909,sha256:"0ed162b5f6ceb1cae414c70bb8cdd960c5f77b1a39b4a9ab87b7703d92c5bce5"},"_framework/System.Xml.XPath.j7e58ql0yh.wasm":{bytes:5397,sha256:"d128d847ee39abbfee50d6e837d5dc953df248de890c894d92c15186f159092d"},"_framework/System.Xml.XmlDocument.2laigo0hd6.wasm":{bytes:5397,sha256:"16b6cd94446e868c5e744b876de60222eb25d1485c9f628fd03e64957d7b8cb0"},"_framework/System.Xml.XmlSerializer.o9fse2o32f.wasm":{bytes:7445,sha256:"4c9262e9ed66c40706ed51ea1dc312138035b44519f57ef97a94a4f323d192f7"},"_framework/System.Xml.ukjc8es4qk.wasm":{bytes:13077,sha256:"1eae6308964b64da01c885edee4c9af89173ec21ef4f99b71fd5350d8000a1ad"},"_framework/System.a2ormnao9q.wasm":{bytes:39701,sha256:"6e1ba6200e75ccd9b5be39467babe2d28067106bdd6ff0a1f292a2411177e27a"},"_framework/WindowsBase.pulybckt2x.wasm":{bytes:5909,sha256:"21be528b1fb2c3451736fb9a49f1f8063a164c6e4d089aec470d1d670ecc6340"},"_framework/dotnet.js":{bytes:80782,sha256:"0c8a1d506ef027d577f0efd776a42cc6639514b2cf1e90eaca8c18d18fae9c5f"},"_framework/dotnet.native.a6k1euv12n.wasm":{bytes:3001771,sha256:"62521652bab002242e009341397f999bdc2958bfac177278e3d885abb247a2e4"},"_framework/dotnet.native.bjoj0wmylw.js":{bytes:145050,sha256:"099d0855990b4c8bde7bb9f5c95bce8ad94958d763fd88da160a4c82588833ae"},"_framework/dotnet.runtime.5nc8i5dl74.js":{bytes:198480,sha256:"ff774183db23d722c3de1d0f0cc1e73545d6b3fdb35b020c133a26d57cf7438d"},"_framework/mscorlib.79r0fdidgd.wasm":{bytes:49429,sha256:"0553f8bd2703ce8aeebac01fc6c0d8fa7cf720fa64911da16e2a0efc9b988f12"},"_framework/netstandard.f948f8b5mo.wasm":{bytes:90389,sha256:"6db9b1e3952428d5958c52e5b36212b0bef4a1c4013fd49d3f5073c39133efcd"},"refs.pack":{bytes:6046672,sha256:"60252255312e28c33fa2bcde9646c7d92c6b2e7c2fb078a813b57de3146d8bed"}}};function j(e){if(!e||e.startsWith("/")||/[\\\\\\x00-\\x1f:]/.test(e)||e.split("/").some(s=>!s||s==="."||s===".."))throw new Error(`Invalid project path: ${JSON.stringify(e)}. Use relative paths without . or ...`);return e}function N(e,s,b){let f=j(b??"Program.cs"),n=s?{...s}:{[f]:e};if(!Object.hasOwn(n,f))throw new Error(`Entry file ${f} does not exist.`);let d=Object.keys(n).map(j).sort(),o=d.find(c=>!c.endsWith(".cs"));if(o)throw new Error(`C# projects can only contain .cs files for now: ${o}.`);if(d.length>32)throw new Error("Project limit: 32 source files.");if(Object.values(n).reduce((c,h)=>c+new TextEncoder().encode(h).length,0)>2e6)throw new Error("Project exceeds the 2 MB source limit.");return{names:d,sources:d.map(c=>n[c])}}var D="Roslyn 5.0.0 / .NET 10.0.14 r1",$=3,X=2e3,U=1e6,A=P.assets,W={wasm:"application/wasm",js:"text/javascript"},g=e=>globalThis.postMessage(e),v=(e,s,b)=>g({type:"progress",id:e,phase:s,message:b}),M=e=>`${e.file}(${e.line},${e.column}): ${e.severity} ${e.id}: ${e.message}`,z;async function F(e){let s=performance.now(),b=f=>g({id:e.id,durationMs:performance.now()-s,...f});try{let f=N(e.code,e.files,e.entry),n=0,d=async a=>{let t=A[a];if(!t)throw new Error(`Not a pinned C# compiler file: ${a}.`);let k=await T(a,t,z,E,()=>{});return v(e.id,"downloading",`Loading the C# compiler: ${++n} files\\u2026`),k},o=async a=>{let t=new TextDecoder().decode(await d(a)).replaceAll("import.meta.url",JSON.stringify(new URL(a,z).href));return URL.createObjectURL(new Blob([t],{type:"text/javascript"}))};v(e.id,"downloading","Loading the C# compiler\\u2026");let{dotnet:c}=await import(await o("_framework/dotnet.js")),h=new Map;await Promise.all(Object.keys(A).filter(a=>/^_framework\\/dotnet\\.[^/]*\\.js$/.test(a)).map(async a=>{h.set(a,await o(a))}));let y=[],w=0,r=!1,l=a=>{a.trim()&&(y.length<$?y.push(a.slice(0,X)):w++)},i=await(typeof c.withModuleConfig=="function"?c.withModuleConfig({printErr:l}):c).withResourceLoader((a,t)=>{let k="_framework/"+t;if(a==="dotnetjs"||a.startsWith("js-module")){let x=h.get(k);if(!x)throw new Error(`Not a pinned C# compiler script: ${t}.`);return x}return d(k).then(x=>new Response(x,{headers:{"Content-Type":W[t.slice(t.lastIndexOf(".")+1)]??"application/octet-stream"}}))}).create(),u=0,p=!1;i.setModuleImports("playpad",{write:(a,t)=>{if(!p){if(u+=t.length,u>U){p=!0,b({type:"error",message:"Output limit exceeded (1 MB)."});return}g({type:a?"stderr":"stdout",id:e.id,text:t})}},managedExit:()=>{r=!0}});let{Compiler:S}=await i.getAssemblyExports(i.getConfig().mainAssemblyName);S.LoadReferences(new Uint8Array(await d("refs.pack"))),v(e.id,"compiling","Compiling\\u2026");let m=JSON.parse(S.Compile(f.names,f.sources)),R=()=>i.Module?.HEAPU8?.length??0,O=R(),I=m.diagnostics.filter(a=>a.severity==="error");if(!m.ok){b({type:"error",message:I.map(M).join(`\n`)||"Compilation failed."});return}let q=m.diagnostics.filter(a=>a.origin==="user").map(M);q.length&&g({type:"stderr",id:e.id,text:q.join(`\n`)+`\n`}),v(e.id,"running","Running\\u2026"),y=[],w=0;let _;try{_=await S.Run(e.stdin??"")}catch(a){let t=a.status;if(typeof t!="number")throw a;if(!r){let k=y.length?[...y]:["The .NET runtime ended the program unexpectedly."];w&&k.push(`(${w} more runtime lines not shown)`),b({type:"error",message:k.join(`\n`)});return}_=t}if(p)return;b(_!==0?{type:"error",message:`Program exited with status ${_}.`}:{type:"result",memory:{compilerBytes:O,programBytes:R()}})}catch(f){b({type:"error",message:f instanceof Error?f.message:String(f)})}}globalThis.addEventListener("message",({data:e})=>{e.type==="init"?(z=e.toolchainURL,g({type:"ready",version:D,interactiveStdin:!1})):e.type==="run"&&F(e)});})();\n',a=new class extends n{get label(){return`C# 14 (experimental)`}get source(){return i}get recycleAfterRun(){return!0}get startTimeoutMs(){return 3e4}async load(e){return await t(r),super.load(e)}initPayload(){return{toolchainURL:e().indexURL}}},o={id:`csharp`,label:a.label,statusDecidesFailure:!0,get ready(){return a.ready},interactiveStdin:!1,async editorLanguage(){let[e,t]=await Promise.all([import(`@codemirror/language`),import(`@codemirror/legacy-modes/mode/clike`)]);return e.StreamLanguage.define(t.csharp)},load:e=>a.load(e),run:(t,n={})=>a.run(t,{...n,timeoutMs:n.timeoutMs??e().timeoutMs}),stop:e=>a.stop(e)};export{o as csharpRuntime};
1
+ import{s as e}from"./config-3Z6xX6Jr.js";import{n as t}from"./compiler-cache-XwslsU5H.js";import{t as n}from"./worker-runtime-VpuXbObm.js";var r=`code-playpad-csharp-roslyn-5.0.0-dotnet-10.0.14-r1`,i='"use strict";(()=>{var E="code-playpad-csharp-roslyn-5.0.0-dotnet-10.0.14-r1";async function T(e,s,b,f,n){let d=new URL(e,b).href,o;try{o=await caches.open(f)}catch{}let c;try{c=await o?.match(d)}catch{}let h=async r=>{if(!r.ok)throw new Error(`Toolchain download failed: ${e} (HTTP ${r.status}). Check the asset URL and retry.`);let l=r.body?.getReader();if(!l)return r.arrayBuffer();let C=[],i=0,u=0;for(;;){let m=await l.read();if(m.done)break;if(i+=m.value.length,i>s.bytes)throw await l.cancel(),new Error(`Unexpected toolchain size: ${e}.`);C.push(m.value),performance.now()-u>100&&(n(`${c?"Reading cached":"Downloading"} ${e}: ${(i/1e6).toFixed(1)} / ${(s.bytes/1e6).toFixed(1)} MB (decoded)`),u=performance.now())}let p=new Uint8Array(i),S=0;for(let m of C)p.set(m,S),S+=m.length;return p.buffer},y=async r=>r.byteLength===s.bytes&&[...new Uint8Array(await crypto.subtle.digest("SHA-256",r))].map(l=>l.toString(16).padStart(2,"0")).join("")===s.sha256;if(c){try{let r=await h(c);if(await y(r))return r}catch{}try{await o?.delete(d)}catch{}c=void 0}let w=await h(await fetch(d));if(!await y(w))throw new Error(`Toolchain integrity check failed: ${e}. Use the pinned toolchain assets.`);try{await o?.put(d,new Response(w))}catch{}return w}var P={id:"code-playpad-csharp-roslyn-5.0.0-dotnet-10.0.14-r1",assets:{"_framework/Microsoft.CSharp.45w5ndn4gy.wasm":{bytes:301333,sha256:"0893b8a6e6506cb2dbfa2dd01ac779d4616d013a2fac80e8cc15a64cdf526f0c"},"_framework/Microsoft.CodeAnalysis.CSharp.df8hfd5o8z.wasm":{bytes:6828825,sha256:"17a863076b8e6cdfad78e7e9b739ea6940939880f2916523aaa19e7a2b3b463c"},"_framework/Microsoft.CodeAnalysis.erp1n29u9n.wasm":{bytes:3048217,sha256:"56f8336593d9e41ee553106871e5aa82aadac0ab3f04496c8d1bbe601f619089"},"_framework/Microsoft.VisualBasic.6b1p6yq8b3.wasm":{bytes:6933,sha256:"1eff194716c295748d936659cab92e84a0d13515c34c2f05838c910f0fb9e2d5"},"_framework/Microsoft.VisualBasic.Core.4day4tivbb.wasm":{bytes:418581,sha256:"f860e30addf5a3562ba06fd93984663df5ca52ba9feadf1edc88e249fcb05c5d"},"_framework/Microsoft.Win32.Primitives.4bv2m8ah4f.wasm":{bytes:5397,sha256:"00e133d3bcca6baa47c8389b471441c9d4b89bcea2a308b5b779a70e714e2894"},"_framework/Microsoft.Win32.Registry.o7q57g4y3v.wasm":{bytes:22805,sha256:"0c854e9283334e2be8c837a9e95040ab6a649b45cb0078e0b19f1cd215604788"},"_framework/Playpad.CSharp.bc2sx86ihs.wasm":{bytes:19733,sha256:"25449d8432b31e70aa0109d2244595d3f1becb0493d3b9b9aa21f91a13fbc11f"},"_framework/System.AppContext.7pfnw66j8s.wasm":{bytes:4885,sha256:"3bc775156968db8b138e70f0d6cf919e8eceda801518dc4395a6c1b7029a76a2"},"_framework/System.Buffers.n9eydi1g7o.wasm":{bytes:4885,sha256:"bb413f159d106aa82005001b72d3dbe21702fe5b0729dfb0ad411e3b9ae14933"},"_framework/System.Collections.Concurrent.j651l47s89.wasm":{bytes:78613,sha256:"85fa85329f2778f2d7feeabe96e17150c2529cdee2671227f6adca55511e85ba"},"_framework/System.Collections.Immutable.5srny90eq0.wasm":{bytes:240917,sha256:"659249897525dbdd045be0c365aa78670911e71f082962fab29cb3d92f659523"},"_framework/System.Collections.NonGeneric.0gs0za6wta.wasm":{bytes:37653,sha256:"005b930e461f6d5f28714586e73c030a2d0d7705b93ff701e96465dcec8626de"},"_framework/System.Collections.Specialized.0lamnc2eez.wasm":{bytes:37653,sha256:"14a6ecd2d98964854df3c84e5d28c9e370f8511d88e17e19894bdd5487074534"},"_framework/System.Collections.zkl9zn110m.wasm":{bytes:102677,sha256:"7d1b8e3fb815980cc84b2d67b6894fa6bf936064cb4c0639547f214d3337826e"},"_framework/System.ComponentModel.2dg08nsbgq.wasm":{bytes:5909,sha256:"2a69c31d5b96be96e2dbd84b2eb722f33401245e3c3c18b449fa49d6b35b516c"},"_framework/System.ComponentModel.Annotations.qqu4bynrpj.wasm":{bytes:92437,sha256:"5ea898870e6d334ac03751ca45e941bdc786959862a4604c0b7925ae22365c1c"},"_framework/System.ComponentModel.DataAnnotations.6ljk5kma3w.wasm":{bytes:6421,sha256:"2a75102b3e594a3a5aec02c737c07bb07d67b31d84584a84dc93bd8fceaa44f7"},"_framework/System.ComponentModel.EventBasedAsync.0necwturs4.wasm":{bytes:16149,sha256:"1c2972979910342271b8e94c4455ff86593b6b428dbe29283927fc5038739df9"},"_framework/System.ComponentModel.Primitives.ex1da4zowy.wasm":{bytes:32021,sha256:"feaafe39e5531ccded6bd652b0ecbd1ddc7a3600e3ee89091411dbb113ae6489"},"_framework/System.ComponentModel.TypeConverter.t0513robn6.wasm":{bytes:306453,sha256:"53c1eda4d6b514c881cee8f6c7023ca6aa25304c2560c2a27357d5912b7e9efa"},"_framework/System.Configuration.11exwmwngo.wasm":{bytes:8981,sha256:"45bdaf5a151f8d873e4f3d63924b0b8e4711aa8e53a1a6b49bbaf8722ca07851"},"_framework/System.Console.4o049fyksq.wasm":{bytes:43797,sha256:"9cbe95b0e710127a9dc6fb016d89e3198bf5602e8767b4fe3318de77cc2e4184"},"_framework/System.Core.2bi377k7h6.wasm":{bytes:13077,sha256:"6e627a49290c7337183d58c756ca20ee0c6aef3716c73f748a1f2a040ec13f12"},"_framework/System.Data.Common.zrj82y4hfd.wasm":{bytes:1007893,sha256:"1fa0c46a27e2d1eb30b6ece5431b62a99eb0d3dbfff0ab3b0160d202b1283e62"},"_framework/System.Data.DataSetExtensions.ndyqwckzh5.wasm":{bytes:5397,sha256:"8b005ca671c5224a36cc8fcaee97ebd9fc9c8b44a4f431211c0e279b67605ef4"},"_framework/System.Data.cbzplu1klk.wasm":{bytes:15125,sha256:"08fc7cad424adfa678e5e03e1561fe679db996e8a887b14de7893786bdcfc11c"},"_framework/System.Diagnostics.Contracts.xbykr1nyue.wasm":{bytes:5909,sha256:"33867da04cc7cd4d8de2f10f0490f5488a8c8b83928597d906e86aae59e96c24"},"_framework/System.Diagnostics.Debug.faxnhsagf6.wasm":{bytes:5397,sha256:"b9b6df298d8fc68baec7ecf30ef40095a0810b44033dc2285e6e4d94eacac0cb"},"_framework/System.Diagnostics.DiagnosticSource.o8neuaehsr.wasm":{bytes:192277,sha256:"d82c2d87d4b05f79cded591ec897e75aef9fd5c93a5ec034bb76b8c67c211dd8"},"_framework/System.Diagnostics.FileVersionInfo.3veftfofsy.wasm":{bytes:12565,sha256:"ff1105930376d41151ef2e5c3d79cdb7002dfb3f7923bb3bf5caf3c33e301ce3"},"_framework/System.Diagnostics.Process.m02d4wsk19.wasm":{bytes:46357,sha256:"8af0d33b005cf399b2d983101aabd789b759fce6d53724ab17e4257df275f357"},"_framework/System.Diagnostics.StackTrace.3n0s7h4d43.wasm":{bytes:15637,sha256:"c1428e9f1dd799329b94b73a3a739c726195e78c7e499a7f9fa76abc9711a153"},"_framework/System.Diagnostics.TextWriterTraceListener.eytcvy9k8s.wasm":{bytes:21269,sha256:"a6f9c9665c871e8702c313c72aff56d8678fa2aeef5d58bdbd22895b5d7bb0cc"},"_framework/System.Diagnostics.Tools.fj2fven09q.wasm":{bytes:4885,sha256:"655eda3c94089e2fd9a0eda837027d39fdc8782124027f1ecb5e1627306f3ab2"},"_framework/System.Diagnostics.TraceSource.zdzes0xpw3.wasm":{bytes:48405,sha256:"596906ce63f2a87afc7c0c93ce63b8edd564dbab4cf44cba12e1e1de57cd3989"},"_framework/System.Diagnostics.Tracing.p8zfsagsem.wasm":{bytes:5909,sha256:"29645956735e67930940e0068fdf939e7724ac191aec9af9fc7fad2a5c478b4e"},"_framework/System.Drawing.Primitives.qihgks5s1u.wasm":{bytes:54549,sha256:"4e6f66a93b0178adcba6b52555fe1665e5d5c9f295ede78bb1f88a8ce7cd1730"},"_framework/System.Drawing.yh4pswp3to.wasm":{bytes:10005,sha256:"064f946cd835b5c06b88b5e8d3baafa1b65212fea3f741846530b9c15e8397a8"},"_framework/System.Dynamic.Runtime.qf4wa78w3a.wasm":{bytes:5909,sha256:"76243dbb12aaf714360cd6bb1adff3eac41d019028d45706f9a877fa0b8b4933"},"_framework/System.Formats.Asn1.ei47lr61p0.wasm":{bytes:86805,sha256:"963360faa396a0ac4f0ee1fb6a4de8195c8abc8722cfcb5e3f34c8f8cfa2cc44"},"_framework/System.Formats.Tar.jt7yo4wxzn.wasm":{bytes:28949,sha256:"e9bb9ece17de3bb99b99f9e27d9be6ea25feb824606217a81a581a3defd799e3"},"_framework/System.Globalization.Calendars.vfqjdvj4bj.wasm":{bytes:5397,sha256:"9b458344e441af8a342d90d9756002bd53d3ca81fd2ecec1d9956c09ab738761"},"_framework/System.Globalization.Extensions.fb3tp0zu2j.wasm":{bytes:4885,sha256:"0b1f2e8dd68f450050c6ea5d933b06ffc0133120dff33a87b5ccf1e523439be2"},"_framework/System.Globalization.jpj90sbpo9.wasm":{bytes:5397,sha256:"07ac16899c10c3af6fb0bb4cd1ca976ddf3fe82165fb06b74bb034cab14a0bad"},"_framework/System.IO.Compression.Brotli.fpnvzsxpvo.wasm":{bytes:18197,sha256:"c3cc052fa471c3f25016b7eee90ab7eb3793995aea8f08ba93e3b6d85c9ba0b7"},"_framework/System.IO.Compression.FileSystem.tk5twcs8br.wasm":{bytes:4885,sha256:"7d51272f3b3ec7a32ef1b73e693fc90753705665cc50f98a56a3e7f60970cd31"},"_framework/System.IO.Compression.ZipFile.f6odqd84z5.wasm":{bytes:43285,sha256:"59161959d34a7935b83bc858b589d34cc17ade5912137658ee3d7ca1ec4b090c"},"_framework/System.IO.Compression.zo5nnp1cfl.wasm":{bytes:157461,sha256:"6df8da5437998a60f5afd17b4c0b7145d94171dd2b0dd1bed6ef0d762074062d"},"_framework/System.IO.FileSystem.4xxxdm8fc4.wasm":{bytes:5397,sha256:"f8ae1910ff477fbb38b7a1a689ddb555d5ab9f7b5ec59e183fb7c7aebacbe077"},"_framework/System.IO.FileSystem.AccessControl.3nsp4r0ce1.wasm":{bytes:21781,sha256:"3f2d25968e0dad93040716ef7d97382bd6a5517bd0e3c6d707fa520df255d627"},"_framework/System.IO.FileSystem.DriveInfo.2dz9a3mpco.wasm":{bytes:13589,sha256:"46f152531a56b5a1234b905b5460060a3a76c74a94f575e6444848bb7d15a0fc"},"_framework/System.IO.FileSystem.Primitives.ts09gphu65.wasm":{bytes:4885,sha256:"b3efcf0755c59862ad4893ad4b668d5dab114f3561ae632d1ea7479e65c22180"},"_framework/System.IO.FileSystem.Watcher.zra8jhxo53.wasm":{bytes:22805,sha256:"8fcf89a027896f110eefc2e1e76a86bd91f6537a748afdc2ecc7fbd00d1110a1"},"_framework/System.IO.IsolatedStorage.czh3ilflkw.wasm":{bytes:24853,sha256:"388c1f0e6894454587ae794e210a93feaa23c8932064b68ad76e660a2b3d4fb1"},"_framework/System.IO.MemoryMappedFiles.f0h74bif4r.wasm":{bytes:39701,sha256:"dfc14559b3102cdd3d1155ec7cc198999db5b31439aafcd1775dffa39015d0a7"},"_framework/System.IO.Pipelines.eqtd8a5j6e.wasm":{bytes:67861,sha256:"3aa8165bec8d2b718d927cf0ba7ba9fb2e301544164d62202a578d3e3010d850"},"_framework/System.IO.Pipes.AccessControl.cz75e7snno.wasm":{bytes:13077,sha256:"a881296c9ae2cefe4f57c030f0cd13a0384ae7a82519dd0063d62feab0877a2b"},"_framework/System.IO.Pipes.amk3gre8pn.wasm":{bytes:32021,sha256:"22c795928e765dae50c2632f264efde23032c0225fcff6acb4aa075855543436"},"_framework/System.IO.UnmanagedMemoryStream.pjda8c8goj.wasm":{bytes:5397,sha256:"159b449cef234de1150ea545ce482dadadcffb47cccc4e60038840eb1be87a4c"},"_framework/System.IO.hvb68vhf4w.wasm":{bytes:5397,sha256:"63ca4a239901c3ba9517ab48c5c70e2b2f2f983b8f5c96c6215ffb74efb90d42"},"_framework/System.Linq.AsyncEnumerable.p5kf8px69a.wasm":{bytes:446229,sha256:"cdaf09cf14de62c8172a64d1f1fd540b050edf1a751873b575f1c6dab92f171d"},"_framework/System.Linq.Expressions.rrm2f8e4yg.wasm":{bytes:565013,sha256:"c74ef523be9ae6830a76be0baf9a9a508ce7ca31ac5876bb80dc7d1d777b5cab"},"_framework/System.Linq.Parallel.2c1yb2s745.wasm":{bytes:212757,sha256:"be110713a9092c3594d36dc664441be579d17fbe9b0be0a1bd289bd4fca58ee9"},"_framework/System.Linq.Queryable.trhrf5j8ds.wasm":{bytes:68373,sha256:"b965d6be5e8744b201ab8142f11c57aaf0a95081020880c1ec709fb9654c338c"},"_framework/System.Linq.gvekllsg4c.wasm":{bytes:190741,sha256:"4cf1e524ac3f80887e4c7d723c29f54b676ad76325c8472ecbbd064652881d57"},"_framework/System.Memory.rvge25ilzk.wasm":{bytes:45333,sha256:"09ddaf85e36c7c13ef4d7e32cc5436cfec4984e1c26c989072e499ddde8ae062"},"_framework/System.Net.Http.8ubauysc2i.wasm":{bytes:286485,sha256:"903f936e8d7a67798c76e85d53838ac80c88b1ef3d45ec53ff2ac95a8bbc4c2b"},"_framework/System.Net.Http.Json.cnwprpsgic.wasm":{bytes:45845,sha256:"8830cced672b10f509c317186768b69245fbc9c3695eb870b9a81e31a1dfa086"},"_framework/System.Net.HttpListener.ij8kltpk25.wasm":{bytes:45845,sha256:"c23e07ce4477568bf5687cc8f81f2eb9ce806667398756ab96507671f83a3594"},"_framework/System.Net.Mail.z8qhziwoem.wasm":{bytes:94997,sha256:"ddd584fafc23dc46fd5eca406b6f0edb6fc2af837280fd50b276327c867a41ee"},"_framework/System.Net.NameResolution.ncmdi0kq9p.wasm":{bytes:14101,sha256:"993b5c9ce17363348c5d77766b5ef8ba7cd9e9bf8490f54bf295d600c0318f5d"},"_framework/System.Net.NetworkInformation.es6jl8uhrp.wasm":{bytes:32021,sha256:"e2e10d93298c3e8ba16fc2acfebc314c9e32ad07d28b99a491ad1f215795f216"},"_framework/System.Net.Ping.leo6kko976.wasm":{bytes:17685,sha256:"0de562db7b1035f071863450f7e875892b1705ba696cc11ee3593dda48894fc9"},"_framework/System.Net.Primitives.yzzu57r5h4.wasm":{bytes:97045,sha256:"bea2dfad62c29bbf61a9b34552bb6b28356cc6ce36c56e96c058639c3ee2a3fc"},"_framework/System.Net.Quic.t4x9xorc7c.wasm":{bytes:28949,sha256:"031f5366680b6a4b90cf8ed2ced5d135391b1942a1423e991ebeddfd7b47940a"},"_framework/System.Net.Requests.hvrao969rw.wasm":{bytes:55573,sha256:"9d27640110c78c3c04da4f2f070589ff6857804316f91765cc59d305e45ae9dc"},"_framework/System.Net.Security.z570hyrh50.wasm":{bytes:104213,sha256:"b972545804845422c6b90682ef9585ff07ca24394bc4abcafaa8aab8841476ff"},"_framework/System.Net.ServerSentEvents.b3gkat9xqz.wasm":{bytes:30485,sha256:"89c3d8604b565dd8b5ac18dcd39b73f311c81e20b8d5cdbd3c3a704c958515f3"},"_framework/System.Net.ServicePoint.k1tgr3lkj6.wasm":{bytes:4885,sha256:"082ef4faa63db1a669223b6b892729a426f1017c61a8140167d9a935f65cabd5"},"_framework/System.Net.Sockets.fgcxent7fc.wasm":{bytes:64277,sha256:"b1284556b3eeceed8cee152f19f6a6b32c7d35ab031f64a4b96968cbef84ff90"},"_framework/System.Net.WebClient.kpwi6t40sc.wasm":{bytes:45845,sha256:"18108441da8fd4dc43cd29a42d491c27e23961e0188714ce41deffa5e113b034"},"_framework/System.Net.WebHeaderCollection.fnxrdiu9j1.wasm":{bytes:22805,sha256:"1bb8ab08176b1d4878d9d5732629e730cd863d2e0e458de1914cd71aafcc7a86"},"_framework/System.Net.WebProxy.wtgabypaqs.wasm":{bytes:11541,sha256:"4cc9d37b00460499d38df4cc1bb4a9408fa0996e9cdef5244ad645b550cd87b2"},"_framework/System.Net.WebSockets.4zomq83cjx.wasm":{bytes:99093,sha256:"102e21acf0257c9bd1115dd74f36f0cf1844ea1872ecf3e78f4af2d9038878c9"},"_framework/System.Net.WebSockets.Client.l4ui9wgjyz.wasm":{bytes:42261,sha256:"fbade9ba11569ee8ead57e48bfad3419d4b5800f2a0503de1ea87ddbab5e78d6"},"_framework/System.Net.plchg2cs85.wasm":{bytes:6933,sha256:"f38d34d3e084c72fda1c6182f4fd11644d922dfa7b4efdb83809b6bb6eba4879"},"_framework/System.Numerics.7xa3ygjnjn.wasm":{bytes:4885,sha256:"f513f73d4658cd05b3d587d5dc634450d3d2811ca92b12e0065d111f0fb7fe08"},"_framework/System.Numerics.Vectors.2neq4xg5b1.wasm":{bytes:5397,sha256:"624bf089833a6c91bd2c0e83cf58f9db9b8e702dcc8c9e2b389610f8f3ad9924"},"_framework/System.ObjectModel.0us7g9291u.wasm":{bytes:30997,sha256:"b8c1e66933e2073d4d95b7971ce949d2aee7caacd85a222261200d12368e6305"},"_framework/System.Private.CoreLib.7henw1oe7e.wasm":{bytes:4870425,sha256:"0b6d3f3864053400013921497367c1f9806b10baa069e9e80ea2ba7ff1943d20"},"_framework/System.Private.DataContractSerialization.45rz0h7hbh.wasm":{bytes:849173,sha256:"2808c98580c4009f7850dde898e1f8d81a15e427ddeb122033384dd48a0c1252"},"_framework/System.Private.Uri.c0pesqh6or.wasm":{bytes:95509,sha256:"e4b56986f49b6104f86884d59fd3a4eff4e525fdd2d1f83baee01b752efa337e"},"_framework/System.Private.Xml.Linq.91dmao781k.wasm":{bytes:143637,sha256:"7d05fc1b72e4d16c33f13e7cfd85a6f5a92f5c2ca343c8f78d4425d2afa50d0a"},"_framework/System.Private.Xml.ihpa1sp5u8.wasm":{bytes:3096857,sha256:"86009953171be26f62eab577e33c3502d82ddc74a9d6f27c6b4d07ea6300e498"},"_framework/System.Reflection.DispatchProxy.dotf7d6gov.wasm":{bytes:27925,sha256:"03a1a48a2b900d219650d22288cb1ebb62feb218fef7788daa6aead0e237f14d"},"_framework/System.Reflection.Emit.ILGeneration.0x2k63jlqj.wasm":{bytes:5397,sha256:"c46d97174687a1f77ef95a0c085d632881c1f315d7141b985a673662131235e0"},"_framework/System.Reflection.Emit.Lightweight.5yjn7ykajf.wasm":{bytes:5397,sha256:"bdb328f85330a0991ea097895f5f233c7c185bcc54d115f9f4deb7c02fa7ce83"},"_framework/System.Reflection.Emit.ynxp91g9b8.wasm":{bytes:123157,sha256:"52fc8f0a51bcc2c5da80be2148b8391dc1665768e3aa6e04a0a0a7a2aeee52c8"},"_framework/System.Reflection.Extensions.0ouvp5b0xg.wasm":{bytes:4885,sha256:"00b61c99e5b7930e88707c4614942c0f69e91bd0acadd0e728d3e219f1137a53"},"_framework/System.Reflection.Metadata.vkm0bf1n4h.wasm":{bytes:493333,sha256:"b136c7933bc62da5e4f3e34ad6fea876f5cc7a7e47d35e7b7c64055927fc68f6"},"_framework/System.Reflection.Primitives.cnvk9lkykl.wasm":{bytes:5397,sha256:"c84511d42d21a09fd8818bb0ee4d4423584f19dd9a58a98a8d8631c0435336bb"},"_framework/System.Reflection.TypeExtensions.jnvi38irak.wasm":{bytes:14101,sha256:"bf533973a0a50cba610aac73875d9f8627c173b463311d060f79ea4922a9d64e"},"_framework/System.Reflection.qdi0svky7b.wasm":{bytes:5909,sha256:"0e958c24d437bc1b1e321617c69dda15aba94d0e13b741c39a514108dab87958"},"_framework/System.Resources.Reader.tkyk3pewoj.wasm":{bytes:4885,sha256:"f34cfbeb3f39e7bfa7d0d892e3fdcfeda727e269b2a622d74ca455d41ad740b3"},"_framework/System.Resources.ResourceManager.mxgnwpq6s6.wasm":{bytes:5397,sha256:"7af92fba46216d614859a6466c6a013e936a510d492affb6ee74179d23620998"},"_framework/System.Resources.Writer.u12ln0bq25.wasm":{bytes:16661,sha256:"a2a46ada8be5659c787b4da0494298da0ffc2467a0b02a7eab604dca5c532866"},"_framework/System.Runtime.CompilerServices.Unsafe.mvjra26big.wasm":{bytes:4885,sha256:"624f428a1c8ffd524aa47ced54090373d0f389162b6dfb00689343f2a3ac5803"},"_framework/System.Runtime.CompilerServices.VisualC.0zws5y4za8.wasm":{bytes:6933,sha256:"ec82d7e3669ba41156f4d70d94bf30c47dd28829cf5de4591f18bce80943d1a0"},"_framework/System.Runtime.Extensions.53v9tmujmf.wasm":{bytes:7445,sha256:"5f05d3f29944d5adc9a644a37e1818edc5cb9f4450fe1ed88b600b0d84bda226"},"_framework/System.Runtime.Handles.dtp1f2k1pr.wasm":{bytes:5397,sha256:"f16fe73e38bb80ab6b26486ad193d8766254138bac0524f2861959c7834cbee1"},"_framework/System.Runtime.InteropServices.JavaScript.b9bqw25qxw.wasm":{bytes:79637,sha256:"810c9571d56aae8aabdccec828936d48cb8664b4e2e923d3c49f5c288234a26c"},"_framework/System.Runtime.InteropServices.RuntimeInformation.5dmsm0qrdq.wasm":{bytes:5397,sha256:"c7696a8781fbc588fa126969f0a8b0703c3df1181e9e723631d5a7816636c406"},"_framework/System.Runtime.InteropServices.zc5o5oswy7.wasm":{bytes:54549,sha256:"dd89331d3297a0c4a5aac4e6ed289c59d6c8858f7f85d55a46fb0d80c69ca429"},"_framework/System.Runtime.Intrinsics.uupmanm0z1.wasm":{bytes:6933,sha256:"6692c7b97d8261781b893a91a9bed12a8da493d0ad20d6e2e941ab4b052c6218"},"_framework/System.Runtime.Loader.bmhnwgr24i.wasm":{bytes:5397,sha256:"0db7813efcf24740ffc3121704940e5b39bac5745b05c3cbd23a71bbc13d7800"},"_framework/System.Runtime.Numerics.hnmfmtcdek.wasm":{bytes:134933,sha256:"937500e9e310341dabaee15f5c1f39eccc0214d055b846951547ed19f635659d"},"_framework/System.Runtime.Serialization.890gxgs7km.wasm":{bytes:6933,sha256:"b41917f9c13f891781b2babb541b8d01f8394a51f2e9323922eb94a2816a2d5d"},"_framework/System.Runtime.Serialization.Formatters.k6qqn2m2yp.wasm":{bytes:55573,sha256:"f4592c11ffc0e2a191254f637a0d117e1a09f8d1ff5a1065e5c175310183097b"},"_framework/System.Runtime.Serialization.Json.rmpm3bs9gf.wasm":{bytes:5397,sha256:"bde54b4f956372ced92d5efee2c37314343968505e7146ab269a2e3771a7b38d"},"_framework/System.Runtime.Serialization.Primitives.rhltpkb1qn.wasm":{bytes:13077,sha256:"0f8b94ee594a9fcc5c8506072e13a7d50735d02df44adf5e34a533e3e38d9a9b"},"_framework/System.Runtime.Serialization.Xml.2qu958brox.wasm":{bytes:6421,sha256:"36472147c1166a70a5722cf793fa9abbe1bab93527241979607865df0a2f58be"},"_framework/System.Runtime.q3byyncrvz.wasm":{bytes:34581,sha256:"4af52a715b0a80fca05f4fe3d35e0882a47699e2cc64a8d6dfdb5fbfc5bddedd"},"_framework/System.Security.AccessControl.frpe4iqtxg.wasm":{bytes:47893,sha256:"eb65f6286a07968d12c0b8e5330b6c9dfa314dd224e877a0c4aea82e78028785"},"_framework/System.Security.Claims.1iu8vf654n.wasm":{bytes:44821,sha256:"97f82dc8889938fdcce4e09bea257e9c1b49d991d9458836879150444e5b8b70"},"_framework/System.Security.Cryptography.Algorithms.667n7jcyg1.wasm":{bytes:6933,sha256:"f2a8e4d45f9f2967b51b58bb85319e8852d3a333dbaf9cd2386ca4b00652e373"},"_framework/System.Security.Cryptography.Cng.bd7h0b8iov.wasm":{bytes:5909,sha256:"8f4b9ed85aec8a2564ebe8d7d8a4d1150bb46f2aea851733c26166faddb90fd7"},"_framework/System.Security.Cryptography.Csp.z1odikd5x2.wasm":{bytes:5909,sha256:"f912404d06760570df5a52dd7b64e8af3125dd6f452bd8938faec529f3e02366"},"_framework/System.Security.Cryptography.Encoding.o0gt2d4ysx.wasm":{bytes:5397,sha256:"a8b33cdbba50e569c52acb0fe72e17ad4e278c1209bcc338d41025e38071bc63"},"_framework/System.Security.Cryptography.OpenSsl.90bbqu9909.wasm":{bytes:5397,sha256:"87916287aef8bdf7bb1fb87fdf1e64dc8b715228c129319cc41b17e64dc5b13e"},"_framework/System.Security.Cryptography.Primitives.wc69ogz8hc.wasm":{bytes:5397,sha256:"90efa59ad8a365908c18aff92e86336eb346914ede31bc51e3008aa394c66acd"},"_framework/System.Security.Cryptography.X509Certificates.zdajb5d4ry.wasm":{bytes:6421,sha256:"a95583972db3c698e929f1e9d0bfd5268c20247b39ffebe0e435ced691e01069"},"_framework/System.Security.Cryptography.isqs0vklct.wasm":{bytes:643861,sha256:"5e2d390cae360df7f1a224f866cd4648f896a02bdd8dc8b6dd97f4036a3434a6"},"_framework/System.Security.Principal.8kc2gzptia.wasm":{bytes:4885,sha256:"18f86f82bdc342716c4f4d1ce95cef59f29516c18f4b107e20e4fb2283bf3ca3"},"_framework/System.Security.Principal.Windows.lvinz1flf3.wasm":{bytes:27413,sha256:"af696bc41c787f9d87ae55b4bc5799b1e384083d610340774246b5283f2b5f76"},"_framework/System.Security.SecureString.287gima5tn.wasm":{bytes:5397,sha256:"92d299c328a15eb44a972aaa0142d628d9b35c1a555d5e6b296d14fcf1f31736"},"_framework/System.Security.zwe9caa7de.wasm":{bytes:7957,sha256:"c3076430d76f8d122b73973756f5c601c96444d2e303834fbda2151aa3fb117c"},"_framework/System.ServiceModel.Web.eh14pbj71g.wasm":{bytes:6421,sha256:"7e6a649d68f4543fefcd8add264555779efc37b5986ec96106f1598703eaa247"},"_framework/System.ServiceProcess.thnl06mz62.wasm":{bytes:5397,sha256:"cf9d149513509280a136812038d16f8421e5ced70788b6c9595170242d702530"},"_framework/System.Text.Encoding.CodePages.r4fb0qucdq.wasm":{bytes:732437,sha256:"a556ef19b61455e586137ff454f3120091897dcc43a44c19a71d7ef489a3ddfc"},"_framework/System.Text.Encoding.Extensions.qyio04sfs3.wasm":{bytes:5397,sha256:"fe7930a6f00825e1c4a3f32e0e3bd42117377db151afc127110c70fbb701366a"},"_framework/System.Text.Encoding.x8frxl6434.wasm":{bytes:5397,sha256:"f11aa7fbf9e9a4f86b0a34a5478e6553d314461dcbe69fc8097adf1f9d69808b"},"_framework/System.Text.Encodings.Web.i5h886ktzy.wasm":{bytes:55573,sha256:"2a97377ae59b872eb3d69f1eb9555ba512f577708f951f7a2ef8040292911df0"},"_framework/System.Text.Json.rfs8iutklf.wasm":{bytes:638741,sha256:"f79b95a0e74fb4fb30fb90a704078e0b910c6d9d08cd9a7ab7a589b8fdcc24ef"},"_framework/System.Text.RegularExpressions.3wwgc8ow33.wasm":{bytes:374549,sha256:"8336c54d5413476b6125468549c98d35c0a9e5bd0db682b3795a7351d38e7b4c"},"_framework/System.Threading.5z3yk0hlih.wasm":{bytes:34581,sha256:"a12c2a6463d08e453a9e0dc72152b68692c5e6b2f5d69d8700f0c0bd2c4ba90a"},"_framework/System.Threading.AccessControl.3jdprnrbz3.wasm":{bytes:23317,sha256:"41c872fb18d50bc6d15f2f2c79ca48e825b0de88f0959f1356b02d2df31dc28e"},"_framework/System.Threading.Channels.u6jwukaw3f.wasm":{bytes:56085,sha256:"2677baa60a9cc551734e24a4eb400413c2157d310d8eae8c666a9f428e14df75"},"_framework/System.Threading.Overlapped.906hny6ev5.wasm":{bytes:5397,sha256:"57a8b7621e425edb8bc3c1114daed57774c1dfc75975a3aa12a0e4cfd1e3612b"},"_framework/System.Threading.Tasks.Dataflow.yxumrwtpb9.wasm":{bytes:175381,sha256:"da2eef656f41a87395f3f24935b557e4b054d994e220ae70401a820712cd440f"},"_framework/System.Threading.Tasks.Extensions.c9qgjzqtfp.wasm":{bytes:5397,sha256:"f027df139487b8613d3b6e1271a920c441ff5d7fcae2bc774009b50a3f703a30"},"_framework/System.Threading.Tasks.Parallel.984t0vlw0h.wasm":{bytes:50965,sha256:"a9e66658c76d0aa175b202b59391a313ed841a8ca09fbe80ef88962090b72b6e"},"_framework/System.Threading.Tasks.e8zo3kytn9.wasm":{bytes:6421,sha256:"a224a48edb58b9d097a72b83d5804930357555dee3f8be811827482e827ac544"},"_framework/System.Threading.Thread.0kl8n21ama.wasm":{bytes:5397,sha256:"206e44a32770dab61b10150554dd82dc69e29779609405d2a79da858f1ec5ff1"},"_framework/System.Threading.ThreadPool.uis7d1kkur.wasm":{bytes:5397,sha256:"da628e4a405d14fcf624643d3b9c632d47e4f478b30a21680c142901aec3bfe7"},"_framework/System.Threading.Timer.d0q7n4qone.wasm":{bytes:4885,sha256:"93d9959881dd75ace8b74ecf1307fa1c8bf210bd384e44feb84d203502a23486"},"_framework/System.Transactions.1rh8d3l1yg.wasm":{bytes:6421,sha256:"ddb4bf21d75f14d92cddd44d6d5abb88fc2f6dbabd24e4f692ce8a24c42ba5af"},"_framework/System.Transactions.Local.88eb0ckc89.wasm":{bytes:165653,sha256:"c80cdc0b7339172c58d06b47543bacf5ead18c6fbc50f483e6eee1973eb4102b"},"_framework/System.ValueTuple.dz9n78v09g.wasm":{bytes:5397,sha256:"490935cf3415a01a302a6caf3e404a0c8591bc6a5ad039e1ad4c892cee66edda"},"_framework/System.Web.HttpUtility.zkk9vwuwmx.wasm":{bytes:19733,sha256:"73afab7ffbcfa6e1479aa8ad626e3470e3346a80a2e7574d766e41c61e9df242"},"_framework/System.Web.cpb2jt6aj4.wasm":{bytes:4885,sha256:"c00e79f45b25abca38109c095dfa83a4616f107129ce05badc98ef08ea0ab819"},"_framework/System.Windows.z1cdp2137j.wasm":{bytes:5397,sha256:"474f8c034c878c2877fd38bfcc81a7ca91ec14f465067924def2447f3a0ceb1f"},"_framework/System.Xml.Linq.zfqbqkhg85.wasm":{bytes:5397,sha256:"616bc8b437b614c7e754c5ab40ea583b2075fbefd75684218446ce675a330615"},"_framework/System.Xml.ReaderWriter.j5zd7b3r9j.wasm":{bytes:11541,sha256:"375655970f08782d60c0b7e660a2ed18b100632cd0beccf6072f453461b33537"},"_framework/System.Xml.Serialization.g3ffx007q0.wasm":{bytes:5909,sha256:"d48409f2e83289d8a283e0dac4e15f6daaba7d0d9f1ef0ed0632479fcb670fea"},"_framework/System.Xml.XDocument.d9vqmjsh7t.wasm":{bytes:5397,sha256:"c12264747d6099b7063ae2ecc540848a570d33620fdf5f4815d34ded85c9bc8f"},"_framework/System.Xml.XPath.XDocument.ikh0avvfe3.wasm":{bytes:5909,sha256:"0ed162b5f6ceb1cae414c70bb8cdd960c5f77b1a39b4a9ab87b7703d92c5bce5"},"_framework/System.Xml.XPath.j7e58ql0yh.wasm":{bytes:5397,sha256:"d128d847ee39abbfee50d6e837d5dc953df248de890c894d92c15186f159092d"},"_framework/System.Xml.XmlDocument.2laigo0hd6.wasm":{bytes:5397,sha256:"16b6cd94446e868c5e744b876de60222eb25d1485c9f628fd03e64957d7b8cb0"},"_framework/System.Xml.XmlSerializer.o9fse2o32f.wasm":{bytes:7445,sha256:"4c9262e9ed66c40706ed51ea1dc312138035b44519f57ef97a94a4f323d192f7"},"_framework/System.Xml.ukjc8es4qk.wasm":{bytes:13077,sha256:"1eae6308964b64da01c885edee4c9af89173ec21ef4f99b71fd5350d8000a1ad"},"_framework/System.a2ormnao9q.wasm":{bytes:39701,sha256:"6e1ba6200e75ccd9b5be39467babe2d28067106bdd6ff0a1f292a2411177e27a"},"_framework/WindowsBase.pulybckt2x.wasm":{bytes:5909,sha256:"21be528b1fb2c3451736fb9a49f1f8063a164c6e4d089aec470d1d670ecc6340"},"_framework/dotnet.js":{bytes:80782,sha256:"0c8a1d506ef027d577f0efd776a42cc6639514b2cf1e90eaca8c18d18fae9c5f"},"_framework/dotnet.native.a6k1euv12n.wasm":{bytes:3001771,sha256:"62521652bab002242e009341397f999bdc2958bfac177278e3d885abb247a2e4"},"_framework/dotnet.native.bjoj0wmylw.js":{bytes:145050,sha256:"099d0855990b4c8bde7bb9f5c95bce8ad94958d763fd88da160a4c82588833ae"},"_framework/dotnet.runtime.5nc8i5dl74.js":{bytes:198480,sha256:"ff774183db23d722c3de1d0f0cc1e73545d6b3fdb35b020c133a26d57cf7438d"},"_framework/mscorlib.79r0fdidgd.wasm":{bytes:49429,sha256:"0553f8bd2703ce8aeebac01fc6c0d8fa7cf720fa64911da16e2a0efc9b988f12"},"_framework/netstandard.f948f8b5mo.wasm":{bytes:90389,sha256:"6db9b1e3952428d5958c52e5b36212b0bef4a1c4013fd49d3f5073c39133efcd"},"refs.pack":{bytes:6046672,sha256:"60252255312e28c33fa2bcde9646c7d92c6b2e7c2fb078a813b57de3146d8bed"}}};function j(e){if(!e||e.startsWith("/")||/[\\\\\\x00-\\x1f:]/.test(e)||e.split("/").some(s=>!s||s==="."||s===".."))throw new Error(`Invalid project path: ${JSON.stringify(e)}. Use relative paths without . or ...`);return e}function N(e,s,b){let f=j(b??"Program.cs"),n=s?{...s}:{[f]:e};if(!Object.hasOwn(n,f))throw new Error(`Entry file ${f} does not exist.`);let d=Object.keys(n).map(j).sort(),o=d.find(c=>!c.endsWith(".cs"));if(o)throw new Error(`C# projects can only contain .cs files for now: ${o}.`);if(d.length>32)throw new Error("Project limit: 32 source files.");if(Object.values(n).reduce((c,h)=>c+new TextEncoder().encode(h).length,0)>2e6)throw new Error("Project exceeds the 2 MB source limit.");return{names:d,sources:d.map(c=>n[c])}}var D="Roslyn 5.0.0 / .NET 10.0.14 r1",$=3,X=2e3,U=1e6,A=P.assets,W={wasm:"application/wasm",js:"text/javascript"},g=e=>globalThis.postMessage(e),v=(e,s,b)=>g({type:"progress",id:e,phase:s,message:b}),M=e=>`${e.file}(${e.line},${e.column}): ${e.severity} ${e.id}: ${e.message}`,z;async function F(e){let s=performance.now(),b=f=>g({id:e.id,durationMs:performance.now()-s,...f});try{let f=N(e.code,e.files,e.entry),n=0,d=async a=>{let t=A[a];if(!t)throw new Error(`Not a pinned C# compiler file: ${a}.`);let k=await T(a,t,z,E,()=>{});return v(e.id,"downloading",`Loading the C# compiler: ${++n} files\\u2026`),k},o=async a=>{let t=new TextDecoder().decode(await d(a)).replaceAll("import.meta.url",JSON.stringify(new URL(a,z).href));return URL.createObjectURL(new Blob([t],{type:"text/javascript"}))};v(e.id,"downloading","Loading the C# compiler\\u2026");let{dotnet:c}=await import(await o("_framework/dotnet.js")),h=new Map;await Promise.all(Object.keys(A).filter(a=>/^_framework\\/dotnet\\.[^/]*\\.js$/.test(a)).map(async a=>{h.set(a,await o(a))}));let y=[],w=0,r=!1,l=a=>{a.trim()&&(y.length<$?y.push(a.slice(0,X)):w++)},i=await(typeof c.withModuleConfig=="function"?c.withModuleConfig({printErr:l}):c).withResourceLoader((a,t)=>{let k="_framework/"+t;if(a==="dotnetjs"||a.startsWith("js-module")){let x=h.get(k);if(!x)throw new Error(`Not a pinned C# compiler script: ${t}.`);return x}return d(k).then(x=>new Response(x,{headers:{"Content-Type":W[t.slice(t.lastIndexOf(".")+1)]??"application/octet-stream"}}))}).create(),u=0,p=!1;i.setModuleImports("playpad",{write:(a,t)=>{if(!p){if(u+=t.length,u>U){p=!0,b({type:"error",message:"Output limit exceeded (1 MB)."});return}g({type:a?"stderr":"stdout",id:e.id,text:t})}},managedExit:()=>{r=!0}});let{Compiler:S}=await i.getAssemblyExports(i.getConfig().mainAssemblyName);S.LoadReferences(new Uint8Array(await d("refs.pack"))),v(e.id,"compiling","Compiling\\u2026");let m=JSON.parse(S.Compile(f.names,f.sources)),R=()=>i.Module?.HEAPU8?.length??0,O=R(),I=m.diagnostics.filter(a=>a.severity==="error");if(!m.ok){b({type:"error",message:I.map(M).join(`\n`)||"Compilation failed."});return}let q=m.diagnostics.filter(a=>a.origin==="user").map(M);q.length&&g({type:"stderr",id:e.id,text:q.join(`\n`)+`\n`}),v(e.id,"running","Running\\u2026"),y=[],w=0;let _;try{_=await S.Run(e.stdin??"")}catch(a){let t=a.status;if(typeof t!="number")throw a;if(!r){let k=y.length?[...y]:["The .NET runtime ended the program unexpectedly."];w&&k.push(`(${w} more runtime lines not shown)`),b({type:"error",message:k.join(`\n`)});return}_=t}if(p)return;b(_!==0?{type:"error",message:`Program exited with status ${_}.`}:{type:"result",memory:{compilerBytes:O,programBytes:R()}})}catch(f){b({type:"error",message:f instanceof Error?f.message:String(f)})}}globalThis.addEventListener("message",({data:e})=>{e.type==="init"?(z=e.toolchainURL,g({type:"ready",version:D,interactiveStdin:!1})):e.type==="run"&&F(e)});})();\n',a=new class extends n{get label(){return`C# 14 (experimental)`}get source(){return i}get recycleAfterRun(){return!0}get startTimeoutMs(){return 3e4}async load(e){return await t(r),super.load(e)}initPayload(){return{toolchainURL:e().indexURL}}},o={id:`csharp`,label:a.label,statusDecidesFailure:!0,get ready(){return a.ready},interactiveStdin:!1,async editorLanguage(){let[e,t]=await Promise.all([import(`@codemirror/language`),import(`@codemirror/legacy-modes/mode/clike`)]);return e.StreamLanguage.define(t.csharp)},load:e=>a.load(e),run:(t,n={})=>a.run(t,{...n,timeoutMs:n.timeoutMs??e().timeoutMs}),stop:e=>a.stop(e)};export{o as csharpRuntime};
package/dist/editor.d.ts CHANGED
@@ -7,6 +7,8 @@ export interface EditorHandle {
7
7
  /** Contents of a buffer that is not currently on screen. */
8
8
  fileCode(name: string, fallback: string): string;
9
9
  forgetFiles(keep: string[]): void;
10
+ /** The same buffer under a new name: text, cursor and undo history all stay. */
11
+ renameFile(from: string, to: string): void;
10
12
  /** `themeId` names one of EDITOR_THEMES; without it, the default for the mode. */
11
13
  setTheme(dark: boolean, themeId?: string): void;
12
14
  setReadOnly(readOnly: boolean): void;