sliccy 6.178.2 → 6.179.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.
Files changed (185) hide show
  1. package/dist/ui/.vite/manifest.json +191 -182
  2. package/dist/ui/assets/SKILL-B26KJxxL.js +1 -0
  3. package/dist/ui/assets/__vite-browser-external-CVereMU8.js +1 -0
  4. package/dist/ui/assets/account-store-Bbb4tBjB.js +2 -0
  5. package/dist/ui/assets/account-store-DORXRt2J.js +1 -0
  6. package/dist/ui/assets/{adobe-BHZ-TF7E.js → adobe-CcJb_1io.js} +1 -1
  7. package/dist/ui/assets/{adobe-Cqd5wrqM.js → adobe-Dxc6H5uX.js} +1 -1
  8. package/dist/ui/assets/{agent-panels-DXCdmUkc.js → agent-panels-DukhfWpj.js} +1 -1
  9. package/dist/ui/assets/{almost-bash-shell-headless-B29ulBpN.js → almost-bash-shell-headless-2tBN0e_f.js} +231 -231
  10. package/dist/ui/assets/{apply-layout-BiYaZGTe.js → apply-layout-CnYIzvao.js} +1 -1
  11. package/dist/ui/assets/{apps-BYK0eeEc.js → apps-6FOwbeg0.js} +1 -1
  12. package/dist/ui/assets/{azure-openai-DwxTKwka.js → azure-openai-Bcul1Ufv.js} +1 -1
  13. package/dist/ui/assets/{azure-openai-BgA0OxNa.js → azure-openai-NsEky3Bh.js} +1 -1
  14. package/dist/ui/assets/{backend-hostfs-CeXHlroV.js → backend-hostfs-BJv18aU0.js} +1 -1
  15. package/dist/ui/assets/bedrock-camp-BQ02i7Bk.js +1 -0
  16. package/dist/ui/assets/bedrock-camp-CMYc0nQP.js +1 -0
  17. package/dist/ui/assets/bedrock-camp-extra-models-B0WH9IRx.js +1 -0
  18. package/dist/ui/assets/bedrock-camp-extra-models-WTCIjj5a.js +1 -0
  19. package/dist/ui/assets/{bunny-probe-Dk-taSwq.js → bunny-probe-DwyMiB71.js} +1 -1
  20. package/dist/ui/assets/{bunny-run-CmnXF3U5.js → bunny-run-COGwXgvg.js} +1 -1
  21. package/dist/ui/assets/{cdp-wm8vfA8s.js → cdp-Ck5NGIgv.js} +4 -4
  22. package/dist/ui/assets/{cerebras-wuHzITPY.js → cerebras-B2ofXAjg.js} +1 -1
  23. package/dist/ui/assets/{cerebras-BPlfZv3L.js → cerebras-DzROLFaR.js} +1 -1
  24. package/dist/ui/assets/{composer-speech-DI9SI2lY.js → composer-speech-ArgvCsJw.js} +1 -1
  25. package/dist/ui/assets/{connect-surface-zTa8OfFh.js → connect-surface-DVI8l1Gj.js} +1 -1
  26. package/dist/ui/assets/{directed-approval-DmDgVpiX.js → directed-approval-D5B0YPqE.js} +1 -1
  27. package/dist/ui/assets/{ensure-speech-assets-42E6KJDv.js → ensure-speech-assets-Bt69TLMK.js} +1 -1
  28. package/dist/ui/assets/{fast-path-DiV4YcEb.js → fast-path-CG_eXz0M.js} +1 -1
  29. package/dist/ui/assets/{frozen-archive-writer-C97kBlYw.js → frozen-archive-writer-DRM5RlgX.js} +1 -1
  30. package/dist/ui/assets/{fs-DmgjBIs9.js → fs-Bdm5h1uM.js} +1 -1
  31. package/dist/ui/assets/{fs-BKmepe3Q.js → fs-Ce8P6WrG.js} +2 -2
  32. package/dist/ui/assets/{gelatiere-store-D1l9WE1j.js → gelatiere-store-BZg-43KO.js} +1 -1
  33. package/dist/ui/assets/{gelatiere-unit-jlm5b-JJ.js → gelatiere-unit-BX9sZFKS.js} +1 -1
  34. package/dist/ui/assets/{github-C8jjATg2.js → github-8zos8s_U.js} +2 -2
  35. package/dist/ui/assets/{github-BB3M-XW1.js → github-CCjvDIfP.js} +1 -1
  36. package/dist/ui/assets/{github-auth-CkC7qTEg.js → github-auth-A-2czSUQ.js} +1 -1
  37. package/dist/ui/assets/{github-copilot-DuwasHAz.js → github-copilot-BptMXI0N.js} +1 -1
  38. package/dist/ui/assets/{github-copilot-D7QRCTDD.js → github-copilot-CKr_YmDA.js} +1 -1
  39. package/dist/ui/assets/{github-install-DT3Wys59.js → github-install-fthN4iEm.js} +1 -1
  40. package/dist/ui/assets/{github-zip-CX3GXBmW.js → github-zip-DwYtMYDx.js} +1 -1
  41. package/dist/ui/assets/{hear-pJ--prvx.js → hear-4csSE4tf.js} +1 -1
  42. package/dist/ui/assets/{help-gOzjZhgS.js → help-CW93-CFs.js} +1 -1
  43. package/dist/ui/assets/{installer-DeqzzcvC.js → installer-DMXLmwMy.js} +1 -1
  44. package/dist/ui/assets/{js-realm-worker-QT2JnICz.js → js-realm-worker-C2CFKG9d.js} +9 -9
  45. package/dist/ui/assets/{jsh-executor-BBZWMBxV.js → jsh-executor-sKhz-2wo.js} +3 -3
  46. package/dist/ui/assets/{kernel-worker-B23YxkDH.js → kernel-worker-DPGsdtHG.js} +11 -11
  47. package/dist/ui/assets/{lick-ws-bridge-CpcUjLS6.js → lick-ws-bridge-QLNp37XL.js} +1 -1
  48. package/dist/ui/assets/{lick-ws-bridge-DsoQWD5s.js → lick-ws-bridge-sNe1yusQ.js} +1 -1
  49. package/dist/ui/assets/{live-session-curation-BWfx-Nu1.js → live-session-curation-BeMkfXGh.js} +1 -1
  50. package/dist/ui/assets/{live-session-snapshot-BSNfthJ2.js → live-session-snapshot-Bm0Bb5YU.js} +1 -1
  51. package/dist/ui/assets/{local-llm-vzP-uq7M.js → local-llm-BP0eQCgl.js} +1 -1
  52. package/dist/ui/assets/{local-llm-DGFPI_4T.js → local-llm-DY70xAff.js} +1 -1
  53. package/dist/ui/assets/main-B0cbvPwD.js +22 -0
  54. package/dist/ui/assets/{main-cherry-Bbjw_90k.js → main-cherry-Cs8W2ySf.js} +1 -1
  55. package/dist/ui/assets/{memory-curation-seam-BufuSUCj.js → memory-curation-seam-BHFcRLuu.js} +1 -1
  56. package/dist/ui/assets/{memory-health-DdSqq7yP.js → memory-health-JgHshbO8.js} +1 -1
  57. package/dist/ui/assets/memory-v2-flag-DZrdHcA-.js +1 -0
  58. package/dist/ui/assets/{memory-write-execute-BygymnF0.js → memory-write-execute-Bw7kTO2u.js} +1 -1
  59. package/dist/ui/assets/{mount-DlogHA7u.js → mount-B70Cfm-W.js} +3 -3
  60. package/dist/ui/assets/{mount-_sTSuvKx.js → mount-CT7VaoKY.js} +1 -1
  61. package/dist/ui/assets/new-session-Crr2-msq.js +2 -0
  62. package/dist/ui/assets/oauth-bootstrap-CZzvOYOg.js +2 -0
  63. package/dist/ui/assets/{onboarding-orchestrator-CbnB67nZ.js → onboarding-orchestrator-CXxroXfS.js} +1 -1
  64. package/dist/ui/assets/{openai-codex-SI0nWQNS.js → openai-codex-Bv9btlww.js} +1 -1
  65. package/dist/ui/assets/{openai-codex-BtwVt-12.js → openai-codex-DCsbLgXd.js} +1 -1
  66. package/dist/ui/assets/{openrouter-BFlMjaCH.js → openrouter-CnnttWgn.js} +1 -1
  67. package/dist/ui/assets/{openrouter-BruOnSfT.js → openrouter-Crgs_QCq.js} +1 -1
  68. package/dist/ui/assets/{openrouter-free-B2pceWVg.js → openrouter-free-CgIoPuxn.js} +1 -1
  69. package/dist/ui/assets/{openrouter-free-DPQDCfqQ.js → openrouter-free-DRkmaxB3.js} +1 -1
  70. package/dist/ui/assets/{openrouter-oauth-BLskezr8.js → openrouter-oauth-CxTickkD.js} +1 -1
  71. package/dist/ui/assets/{openrouter-oauth-C4kwBIwS.js → openrouter-oauth-pI7Aub_Z.js} +1 -1
  72. package/dist/ui/assets/{opfs-mount-8s9WP18b.js → opfs-mount-mco_YXZ2.js} +1 -1
  73. package/dist/ui/assets/panel-rpc-handlers-DlWD1u2Q.js +2 -0
  74. package/dist/ui/assets/{panelize-shell-Dg_58ImI.js → panelize-shell-C6AGU1O_.js} +1 -1
  75. package/dist/ui/assets/{pi-edit-execution-C9GYKunH.js → pi-edit-execution-yVaqL9lZ.js} +1 -1
  76. package/dist/ui/assets/{provider-DEcfbBkM.js → provider-BLg5uchT.js} +1 -1
  77. package/dist/ui/assets/{provider-B_fhkXn7.js → provider-DGvW9aTF.js} +2 -2
  78. package/dist/ui/assets/{provider-settings-BLtjMrT0.js → provider-settings-CeFsisH4.js} +1 -1
  79. package/dist/ui/assets/provider-store-access-BaHh7m4I.js +1 -0
  80. package/dist/ui/assets/provider-store-access-CnoMGfWY.js +1 -0
  81. package/dist/ui/assets/providers-2pihfuXe.js +2 -0
  82. package/dist/ui/assets/providers-BNhTu4Az.js +1 -0
  83. package/dist/ui/assets/py-live-vfs-DaPSes0l.js +168 -0
  84. package/dist/ui/assets/py-live-vfs-Dx9cFlfE.js +168 -0
  85. package/dist/ui/assets/{py-realm-worker-A1ICPvEl.js → py-realm-worker-CYwLJW9I.js} +3 -3
  86. package/dist/ui/assets/{pyodide-DGH4V3SQ.js → pyodide-DKNrUBio.js} +2 -2
  87. package/dist/ui/assets/{quick-llm-B8uh7EVu.js → quick-llm-DcsNLbYv.js} +1 -1
  88. package/dist/ui/assets/realm-inprocess-BgV7BI1t.js +30 -0
  89. package/dist/ui/assets/{recovery-screen-M8szzZB2.js → recovery-screen-xvnzvjnh.js} +1 -1
  90. package/dist/ui/assets/{remote-terminal-view-6ygd42Fb.js → remote-terminal-view-C_QEoDZe.js} +1 -1
  91. package/dist/ui/assets/require-guards-Du29-pl4.js +252 -0
  92. package/dist/ui/assets/{restore-Qq5h6a38.js → restore-90cAJcB-.js} +1 -1
  93. package/dist/ui/assets/{run-C0wVagJ5.js → run-BjdOwTMK.js} +2 -2
  94. package/dist/ui/assets/{run-DK8nktud.js → run-BoSrXXY1.js} +2 -2
  95. package/dist/ui/assets/{run-CPDsfLJJ.js → run-Bx5g1SW-.js} +2 -2
  96. package/dist/ui/assets/{run-C3rYy-Lu.js → run-C-9fbuPf.js} +1 -1
  97. package/dist/ui/assets/{run-dNFrBZDI.js → run-CTYkZrli.js} +1 -1
  98. package/dist/ui/assets/{run-DUzzkV29.js → run-DMneLV98.js} +3 -3
  99. package/dist/ui/assets/{run--H9dud5r.js → run-Di77_0CW.js} +2 -2
  100. package/dist/ui/assets/{run-Bk0pGJJa.js → run-R7EnlHqn.js} +1 -1
  101. package/dist/ui/assets/{run-_QNErIec.js → run-u5sZdtZc.js} +2 -2
  102. package/dist/ui/assets/{session-command-memory-CAl1-crq.js → session-command-memory-BIW04ime.js} +2 -2
  103. package/dist/ui/assets/{session-jsonl-B-4fihPX.js → session-jsonl-BT6N86_D.js} +1 -1
  104. package/dist/ui/assets/{session-jsonl-lB9-7rZS.js → session-jsonl-DRpBHMbZ.js} +1 -1
  105. package/dist/ui/assets/{session-search-index-Bn4FhmPW.js → session-search-index-CRSNfFPt.js} +1 -1
  106. package/dist/ui/assets/{setup-feature-flags-remote-opNg3JWs.js → setup-feature-flags-remote-DLPlEBtl.js} +1 -1
  107. package/dist/ui/assets/{signed-fetch-YC2zrriw.js → signed-fetch-Cv-pIQgJ.js} +1 -1
  108. package/dist/ui/assets/{silent-renew-backoff-Bak0vwwf.js → silent-renew-backoff-BL0l9czs.js} +1 -1
  109. package/dist/ui/assets/slicc-version-wzJMaTOt.js +1 -0
  110. package/dist/ui/assets/{snapshot-features-BqGUjBWl.js → snapshot-features-DN8885R6.js} +1 -1
  111. package/dist/ui/assets/{snapshot-6br_5p-f.js → snapshot-h1IyuVIH.js} +1 -1
  112. package/dist/ui/assets/{soundscape-DRViCPly.js → soundscape-qJ4gJF6y.js} +1 -1
  113. package/dist/ui/assets/{speak-DRv_vLqY.js → speak-CUSuBAiN.js} +1 -1
  114. package/dist/ui/assets/{sprinkle-manager-DeJrE3Hq.js → sprinkle-manager-CK0KfQ0E.js} +1 -1
  115. package/dist/ui/assets/{sprinkle-renderer-DYUy10CO.js → sprinkle-renderer-C0-nYSNx.js} +1 -1
  116. package/dist/ui/assets/{src-CmTUvI8R.js → src-BfoZU01X.js} +74 -74
  117. package/dist/ui/assets/{ssh-D1zj1EXl.js → ssh-D9CT02gL.js} +1 -1
  118. package/dist/ui/assets/{state-BpyjzTIG.js → state-DCSstoTF.js} +1 -1
  119. package/dist/ui/assets/{store-DQkIRnav.js → store-COcJ0rh9.js} +1 -1
  120. package/dist/ui/assets/{store-DwUewAuZ.js → store-DrLyzt3v.js} +1 -1
  121. package/dist/ui/assets/{sudo-DIegVBwT.js → sudo-BLsv33L7.js} +1 -1
  122. package/dist/ui/assets/{supervisor-gHbk5m7z.js → supervisor-DC1z_etC.js} +1 -1
  123. package/dist/ui/assets/{sync-dialog-CH4PBcVu.js → sync-dialog-B9Na5xYc.js} +1 -1
  124. package/dist/ui/assets/sync-exec-xhr-bridge-BjD_IfJF.js +1 -0
  125. package/dist/ui/assets/sync-sab-wire-CkrsRVrw.js +1 -0
  126. package/dist/ui/assets/tab-8LaHojfd.js +1 -0
  127. package/dist/ui/assets/{transformers-env-9M9En1_O.js → transformers-env-DbQSH9Ln.js} +1 -1
  128. package/dist/ui/assets/{tray-leader-Bd293BI8.js → tray-leader-DyfRH9_x.js} +1 -1
  129. package/dist/ui/assets/{tray-leave-runtime-wLd1uBMu.js → tray-leave-runtime-BRVkq1j8.js} +1 -1
  130. package/dist/ui/assets/{tray-sidecar-C35X7Jht.js → tray-sidecar-BdSKCDRU.js} +1 -1
  131. package/dist/ui/assets/{upgrade-detection-Tp8fDJAG.js → upgrade-detection-DOttGbYy.js} +1 -1
  132. package/dist/ui/assets/{upskill-lick-skip-Cr0VVPGj.js → upskill-lick-skip-4EAgxZBZ.js} +1 -1
  133. package/dist/ui/assets/{voice-reply-wJfABSIn.js → voice-reply-BMbj-krb.js} +1 -1
  134. package/dist/ui/assets/wc-attach-BYh78RZQ.js +13 -0
  135. package/dist/ui/assets/{wc-browser-BJemxWhg.js → wc-browser-D_SlpGFj.js} +1 -1
  136. package/dist/ui/assets/{wc-computers-Cr14YnOg.js → wc-computers-DguwFFgg.js} +1 -1
  137. package/dist/ui/assets/{wc-detached-DQ_ZTSZ-.js → wc-detached-BwCNIFnT.js} +1 -1
  138. package/dist/ui/assets/{wc-extension-C8pgLDqO.js → wc-extension-B3EwzUfS.js} +2 -2
  139. package/dist/ui/assets/wc-follower-CmPddVGO.js +17 -0
  140. package/dist/ui/assets/{wc-follower-oauth-BU-XAftl.js → wc-follower-oauth-D9PaxsNc.js} +1 -1
  141. package/dist/ui/assets/{wc-gelatiere-BiyouLW3.js → wc-gelatiere-BIfd8LAx.js} +1 -1
  142. package/dist/ui/assets/{wc-live-CaopRwn0.js → wc-live-Dq-_FAPU.js} +6 -6
  143. package/dist/ui/assets/wc-nav-hfv762PR.js +2 -0
  144. package/dist/ui/assets/{wc-onboarding-FjrDOv_u.js → wc-onboarding-BAO8Xa0p.js} +2 -2
  145. package/dist/ui/assets/{wc-permissions-C63-jLbY.js → wc-permissions-BWZQsa4a.js} +2 -2
  146. package/dist/ui/assets/{wc-placeholder-Bdbmjijc.js → wc-placeholder-BJLM84yS.js} +3 -3
  147. package/dist/ui/assets/{wc-secret-request-C9iCWgBV.js → wc-secret-request-DMdnDVOi.js} +1 -1
  148. package/dist/ui/assets/{wc-settings-1ZJgN4Wk.js → wc-settings-Cwj7tYnH.js} +3 -3
  149. package/dist/ui/assets/{wc-shell-CrMn8BW0.js → wc-shell-Cn2tEDM7.js} +4 -4
  150. package/dist/ui/assets/{wc-shortcut-config-JXEU24sg.js → wc-shortcut-config-C5cwDbE-.js} +1 -1
  151. package/dist/ui/assets/{wc-sprinkles-CBaPR_V8.js → wc-sprinkles-Bme5XF35.js} +2 -2
  152. package/dist/ui/assets/{wc-transcript-export-eyG-SwVe.js → wc-transcript-export-D5m4sap2.js} +2 -2
  153. package/dist/ui/assets/{wc-tray-dSLNIDh9.js → wc-tray-kqJoJtNf.js} +4 -4
  154. package/dist/ui/assets/welcome-detection-CQJa6RP3.js +1 -0
  155. package/dist/ui/assets/whisper-session-DhEBOCZj.js +2 -0
  156. package/dist/ui/assets/{xai-grok-C2oyJ5tt.js → xai-grok-DVO4KVhh.js} +1 -1
  157. package/dist/ui/assets/{xai-grok-G4GFCgrM.js → xai-grok-UADpK8FU.js} +1 -1
  158. package/dist/ui/index.html +4 -3
  159. package/dist/ui/llm-proxy-sw.js +1 -1
  160. package/dist/ui/packages/webapp/index.html +4 -3
  161. package/package.json +1 -1
  162. package/dist/ui/assets/SKILL-CJrjPuRt.js +0 -1
  163. package/dist/ui/assets/__vite-browser-external-C7Grxh8D.js +0 -1
  164. package/dist/ui/assets/account-store-LwLxI7v1.js +0 -1
  165. package/dist/ui/assets/account-store-SI8RQbm0.js +0 -2
  166. package/dist/ui/assets/bedrock-camp-D-jmLdEX.js +0 -1
  167. package/dist/ui/assets/bedrock-camp-DmVFQWfL.js +0 -1
  168. package/dist/ui/assets/main-DFTTAllP.js +0 -22
  169. package/dist/ui/assets/memory-v2-flag-uChv9nwr.js +0 -1
  170. package/dist/ui/assets/new-session-C914zfKa.js +0 -2
  171. package/dist/ui/assets/oauth-bootstrap-B7cPXMSk.js +0 -2
  172. package/dist/ui/assets/panel-rpc-handlers-BuMdGle_.js +0 -2
  173. package/dist/ui/assets/provider-store-access-C0w1Xcs2.js +0 -1
  174. package/dist/ui/assets/provider-store-access-YjQKD2es.js +0 -1
  175. package/dist/ui/assets/providers-B0rCH1pp.js +0 -1
  176. package/dist/ui/assets/providers-B9p2VR5L.js +0 -2
  177. package/dist/ui/assets/realm-inprocess-qhbZWW6z.js +0 -30
  178. package/dist/ui/assets/slicc-version-D1Js64gw.js +0 -1
  179. package/dist/ui/assets/sync-sab-wire-CN1_ni9J.js +0 -252
  180. package/dist/ui/assets/tab-0xwFvGm5.js +0 -1
  181. package/dist/ui/assets/wc-attach-CtVWDKPk.js +0 -13
  182. package/dist/ui/assets/wc-follower-nosCeVKN.js +0 -17
  183. package/dist/ui/assets/wc-nav-Wn2qDNiX.js +0 -2
  184. package/dist/ui/assets/welcome-detection-DuFRP38Z.js +0 -1
  185. package/dist/ui/assets/whisper-session-DrDhzSqp.js +0 -2
@@ -0,0 +1,168 @@
1
+ const e={EACCES:2,EBADF:8,EBUSY:10,EEXIST:20,EINVAL:28,EIO:29,EISDIR:31,ELOOP:32,ENAMETOOLONG:37,ENOENT:44,ENOSPC:51,ENOSYS:52,ENOTDIR:54,ENOTEMPTY:55,EPERM:63,EROFS:69,ETIMEDOUT:73,EXDEV:75},t=4095;function n(t,n){if(n?.errno!==void 0&&n instanceof t.ErrnoError)return n;let r=n?.code,i=typeof r==`string`?e[r]??29:29;return new t.ErrnoError(i)}function r(e){let t=[],n=e;for(;n!==n.mount.root;)t.push(n.name),n=n.parent;let r=e.mount.opts.root.replace(/\/+$/,``);return t.length===0?r||`/`:`${r}/${t.reverse().join(`/`)}`}function i(e){let n=e.isSymbolicLink?40960:e.isDirectory?16384:32768,r=e.isDirectory||e.isSymbolicLink?511:438;return n|((e.mode??r)&t||r)}function a(e){if(e!=null)return e instanceof Date?e.getTime():e}function o(e,t){let a=e=>e.mount.opts.bridge;function o(t){try{return t()}catch(t){throw n(e,t)}}function s(e){return{...e?{stat:e}:{},len:0,loaded:!1,dirty:!1,openCount:0}}function c(n,r,a){let o=e.createNode(n,r,i(a),0);return o.node_ops=t.node,o.stream_ops=t.stream,o.live=s(a),o}function l(e){if(!e.live.stat){let t=o(()=>a(e).lstat(r(e)));e.live.stat=t,e.mode=i(t)}return e.live.stat}function u(e,t){let n=r(e);return n===`/`?`/${t}`:`${n}/${t}`}function d(e){let t=e.live;if(t.loaded)return;let n=o(()=>a(e).readFile(r(e)));t.data=n,t.len=n.length,t.loaded=!0}function f(e,t){let n=e.live,r=n.data??new Uint8Array;if(r.length>=t)return r;let i=new Uint8Array(Math.max(t,r.length*2,256));return i.set(r.subarray(0,n.len)),n.data=i,i}function p(e){let t=e.live;if(!t.dirty||!t.data)return;let n=t.data.slice(0,t.len);o(()=>a(e).writeFile(r(e),n)),t.dirty=!1,t.stat=void 0}function m(e,t){let n=e.live;if(n.openCount>0){t>0?d(e):n.loaded=!0;let r=f(e,t);t>n.len&&r.fill(0,n.len,t),n.len=t,n.dirty=!0;return}let i=r(e),s=new Uint8Array(t);if(t>0){let n=o(()=>a(e).readFile(i));s.set(n.subarray(0,Math.min(t,n.length)))}o(()=>a(e).writeFile(i,s)),n.stat=void 0}return{Fs:e,bridgeOf:a,call:o,makeNode:c,statOf:l,childPath:u,ensureLoaded:d,ensureCapacity:f,flushNode:p,truncate:m}}function s(n){let{Fs:i,bridgeOf:o,call:s,makeNode:c,statOf:l,childPath:u,flushNode:d,truncate:f}=n;return{getattr(e){let t=l(e),n=e.live,r=i.isDir(e.mode)?4096:n.loaded?n.len:t.size,a=new Date(t.mtimeMs??0);return{dev:1,ino:e.id,mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:r,atime:a,mtime:a,ctime:a,blksize:4096,blocks:Math.ceil(r/4096)}},setattr(e,n){let c=r(e);if(n.mode!==void 0&&n.mode!==null){let r=n.mode&t;r!==(e.mode&t)&&(s(()=>o(e).chmod(c,r)),e.mode=e.mode&-4096|r)}n.size!==void 0&&n.size!==null&&i.isFile(e.mode)&&f(e,n.size);let l=a(n.mtime)??n.timestamp;if(l!==void 0){let t=a(n.atime)??l;d(e),s(()=>o(e).utimes(c,t,l))}e.live.stat=void 0},lookup(e,t){let n=s(()=>o(e).lstat(u(e,t)));return c(e,t,n)},mknod(t,n,r){let a=u(t,n);if(i.isDir(r))s(()=>o(t).mkdir(a));else if(i.isFile(r))s(()=>o(t).writeFile(a,new Uint8Array));else throw new i.ErrnoError(e.EPERM);let l=c(t,n,{isFile:i.isFile(r),isDirectory:i.isDir(r),isSymbolicLink:!1,size:0,mode:r,mtimeMs:Date.now()});return l.live.stat=void 0,l},rename(e,t,n){let a=r(e),c=u(t,n);d(e),s(()=>o(e).rename(a,c));try{let r=i.lookupNode?.(t,n);r&&r!==e&&i.hashRemoveNode?.(r)}catch{}e.name=n,e.live.stat=void 0},unlink(e,t){s(()=>o(e).unlink(u(e,t)))},rmdir(e,t){s(()=>o(e).rmdir(u(e,t)))},readdir(e){return[`.`,`..`,...s(()=>o(e).readdir(r(e)))]},symlink(e,t,n){let r=u(e,t);return s(()=>o(e).symlink(n,r)),c(e,t,{isFile:!1,isDirectory:!1,isSymbolicLink:!0,size:n.length})},readlink(t){if(!i.isLink(t.mode))throw new i.ErrnoError(e.EINVAL);return s(()=>o(t).readlink(r(t)))}}}function c(t){let{Fs:n,statOf:r,ensureLoaded:i,ensureCapacity:a,flushNode:o}=t;return{open(e){n.isFile(e.node.mode)&&e.node.live.openCount++},close(e){let t=e.node;if(!n.isFile(t.mode))return;let r=t.live;if(r.openCount=Math.max(0,r.openCount-1),!(r.openCount>0))try{o(t)}finally{r.data=void 0,r.len=0,r.loaded=!1}},read(t,r,a,o,s){let c=t.node;if(n.isDir(c.mode))throw new n.ErrnoError(e.EISDIR);i(c);let l=c.live;if(s>=l.len||o<=0)return 0;let u=Math.min(o,l.len-s);return new Uint8Array(r.buffer,r.byteOffset+a,u).set(l.data.subarray(s,s+u)),u},write(t,r,o,s,c){let l=t.node;if(n.isDir(l.mode))throw new n.ErrnoError(e.EISDIR);if(s<=0)return 0;i(l);let u=l.live,d=c+s,f=a(l,d);return c>u.len&&f.fill(0,u.len,c),f.set(new Uint8Array(r.buffer,r.byteOffset+o,s),c),u.len=Math.max(u.len,d),u.dirty=!0,s},llseek(t,i,a){let o=i;if(a===1)o+=t.position;else if(a===2&&n.isFile(t.node.mode)){let e=t.node.live;o+=e.loaded?e.len:r(t.node).size}if(o<0)throw new n.ErrnoError(e.EINVAL);return o},fsync(e){o(e.node)}}}function l(t){let n=new Set,r={},i=o(t,r),a=s(i),l=c(i);return r.node=a,r.stream=l,{mounts:n,node_ops:a,stream_ops:l,mount(r){let a=i.call(()=>r.opts.bridge.stat(r.opts.root));if(!a.isDirectory)throw new t.ErrnoError(e.ENOTDIR);let o=i.makeNode(null,`/`,a);return n.add(r),o}}}function u(e,t){return!!t&&e.mounts.has(t.mount)}function d(e,t){for(let i of e.nameTable??[])for(let a=i;a;a=a.name_next??null)if(!(!u(t,a)||!a.live.dirty||!a.live.data))try{let e=a.live.data.slice(0,a.live.len);a.mount.opts.bridge.writeFile(r(a),e),a.live.dirty=!1}catch(t){throw n(e,t)}}function f(e,t){let n=e.nameTable??[],r=[];for(let e of n)for(let n=e;n;n=n.name_next??null){if(!u(t,n))continue;let e=n.live;e.stat=void 0,e.openCount===0?n!==n.mount.root&&r.push(n):e.loaded&&!e.dirty&&(e.data=void 0,e.len=0,e.loaded=!1)}if(e.hashRemoveNode)for(let t of r)e.hashRemoveNode(t)}function p(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function m(e){let t;try{t=JSON.parse(e)}catch{return null}if(!t||!(typeof t.command==`string`||p(t.command)))return null;let n=t.env&&typeof t.env==`object`&&!Array.isArray(t.env)?Object.fromEntries(Object.entries(t.env).filter(e=>typeof e[1]==`string`)):void 0;return{command:t.command,...typeof t.cwd==`string`?{cwd:t.cwd}:{},...n?{env:n}:{},...typeof t.input==`string`?{input:t.input}:{},...typeof t.timeoutMs==`number`?{timeoutMs:t.timeoutMs}:{}}}function h(e){return{run(t){let n=m(t);if(!n)return JSON.stringify({error:`EINVAL`,message:`malformed request`});let r;e.beforeExec();try{r=e.exec.run(n.command,{...n.input===void 0?{}:{input:n.input},...n.cwd===void 0?{}:{cwd:n.cwd},...n.env===void 0?{}:{env:n.env},...n.timeoutMs===void 0?{}:{timeout:n.timeoutMs}})}catch(e){let t=e?.code;r={error:typeof t==`string`?t:`EIO`,message:e instanceof Error?e.message:String(e)}}finally{e.afterExec()}return JSON.stringify(r)}}}const g=String.raw`
2
+ def __slicc_install_subprocess():
3
+ import errno, io, itertools, json, os, subprocess, sys
4
+ import _slicc_proc
5
+
6
+ PIPE, STDOUT, DEVNULL = subprocess.PIPE, subprocess.STDOUT, subprocess.DEVNULL
7
+ pids = itertools.count(1000)
8
+
9
+ def to_str(a):
10
+ a = os.fspath(a)
11
+ return a.decode('utf-8', 'surrogateescape') if isinstance(a, bytes) else a
12
+
13
+ class _StdinPipe(io.BytesIO):
14
+ def __init__(self, proc):
15
+ super().__init__()
16
+ self._proc = proc
17
+ def close(self):
18
+ if not self.closed:
19
+ data = self.getvalue()
20
+ super().close()
21
+ self._proc._start(data)
22
+
23
+ class SliccPopen:
24
+ def __init__(self, args, bufsize=-1, executable=None, stdin=None, stdout=None,
25
+ stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None,
26
+ env=None, universal_newlines=None, startupinfo=None, creationflags=0,
27
+ restore_signals=True, start_new_session=False, pass_fds=(), *,
28
+ user=None, group=None, extra_groups=None, encoding=None, errors=None,
29
+ text=None, umask=-1, pipesize=-1, process_group=None):
30
+ self.args = args
31
+ self.pid = next(pids)
32
+ self.returncode = None
33
+ self.text_mode = bool(text or universal_newlines or encoding or errors)
34
+ self._encoding = encoding or 'utf-8'
35
+ self._errors = errors or 'strict'
36
+ if shell:
37
+ command = to_str(args if isinstance(args, (str, bytes)) else args[0])
38
+ else:
39
+ argv = [args] if isinstance(args, (str, bytes, os.PathLike)) else list(args)
40
+ command = [to_str(a) for a in argv]
41
+ if executable is not None:
42
+ command[0] = to_str(executable)
43
+ self._shell = bool(shell)
44
+ self._command = command
45
+ self._cwd = to_str(cwd) if cwd is not None else os.getcwd()
46
+ self._env = {to_str(k): to_str(v) for k, v in (os.environ if env is None else env).items()}
47
+ self._stdout_to, self._stderr_to = stdout, stderr
48
+ self.stdout = self.stderr = None
49
+ self._out = self._err = b''
50
+ self.stdin = None
51
+ if stdin == PIPE:
52
+ self.stdin = _StdinPipe(self)
53
+ if self.text_mode:
54
+ self.stdin = io.TextIOWrapper(self.stdin, encoding=self._encoding,
55
+ errors=self._errors, write_through=True)
56
+ return
57
+ data = None
58
+ if stdin not in (None, DEVNULL):
59
+ data = os.read(stdin, 1 << 30) if isinstance(stdin, int) else stdin.read()
60
+ if isinstance(data, str):
61
+ data = data.encode(self._encoding, self._errors)
62
+ self._start(data)
63
+
64
+ def _start(self, data, timeout=None):
65
+ if self.returncode is not None:
66
+ return
67
+ req = {'command': self._command, 'cwd': self._cwd, 'env': self._env}
68
+ if data:
69
+ req['input'] = data.decode('utf-8', 'surrogateescape')
70
+ if timeout is not None:
71
+ req['timeoutMs'] = int(timeout * 1000)
72
+ reply = json.loads(_slicc_proc.run(json.dumps(req)))
73
+ if 'error' in reply:
74
+ code = getattr(errno, reply['error'], errno.EIO)
75
+ raise OSError(code, reply.get('message') or os.strerror(code))
76
+ out = reply['stdout'].encode('utf-8', 'surrogateescape')
77
+ err = reply['stderr'].encode('utf-8', 'surrogateescape')
78
+ code = reply['exitCode']
79
+ if (not self._shell and code == 127 and b'command not found' in err):
80
+ raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), self._command[0])
81
+ if self._stderr_to == STDOUT:
82
+ out, err = out + err, b''
83
+ self._out = self._route(out, self._stdout_to, sys.stdout)
84
+ self._err = self._route(err, self._stderr_to, sys.stderr)
85
+ if self._stdout_to == PIPE:
86
+ self.stdout = self._pipe(self._out)
87
+ if self._stderr_to == PIPE:
88
+ self.stderr = self._pipe(self._err)
89
+ self.returncode = code
90
+
91
+ def _route(self, data, target, inherit):
92
+ if target == PIPE:
93
+ return data
94
+ if target is None:
95
+ if data:
96
+ inherit.write(data.decode('utf-8', 'replace'))
97
+ inherit.flush()
98
+ elif target not in (DEVNULL, STDOUT):
99
+ if isinstance(target, int):
100
+ os.write(target, data)
101
+ elif isinstance(target, io.TextIOBase):
102
+ target.write(data.decode('utf-8', 'replace'))
103
+ else:
104
+ target.write(data)
105
+ return b''
106
+
107
+ def _pipe(self, data):
108
+ if self.text_mode:
109
+ return io.StringIO(data.decode(self._encoding, self._errors))
110
+ return io.BytesIO(data)
111
+
112
+ def communicate(self, input=None, timeout=None):
113
+ if self.returncode is None:
114
+ if isinstance(input, str):
115
+ input = input.encode(self._encoding, self._errors)
116
+ if self.stdin is not None and not self.stdin.closed:
117
+ raw = self.stdin.buffer if isinstance(self.stdin, io.TextIOWrapper) else self.stdin
118
+ if input:
119
+ raw.write(input)
120
+ input = raw.getvalue()
121
+ io.BytesIO.close(raw)
122
+ self._start(input, timeout)
123
+ out = self.stdout.read() if self.stdout is not None else None
124
+ err = self.stderr.read() if self.stderr is not None else None
125
+ return out, err
126
+
127
+ def wait(self, timeout=None):
128
+ if self.returncode is None:
129
+ self.communicate(timeout=timeout)
130
+ return self.returncode
131
+
132
+ def poll(self):
133
+ # Never starts work, like CPython: a child still waiting for its
134
+ # stdin=PIPE input has not run yet, so it is "still running".
135
+ # A started child always ran to completion.
136
+ return self.returncode
137
+
138
+ def send_signal(self, sig):
139
+ pass
140
+
141
+ def terminate(self):
142
+ pass
143
+
144
+ def kill(self):
145
+ pass
146
+
147
+ def __enter__(self):
148
+ return self
149
+
150
+ def __exit__(self, *exc):
151
+ for f in (self.stdout, self.stderr, self.stdin):
152
+ if f is not None and not f.closed:
153
+ f.close()
154
+ self.wait()
155
+
156
+ def __repr__(self):
157
+ return f'<SliccPopen: returncode: {self.returncode} args: {self.args!r}>'
158
+
159
+ def system(command):
160
+ code = SliccPopen(command, shell=True).wait()
161
+ return (code & 0xff) << 8
162
+
163
+ subprocess.Popen = SliccPopen
164
+ os.system = system
165
+
166
+ __slicc_install_subprocess()
167
+ del __slicc_install_subprocess
168
+ `;function _(e,t){e.registerJsModule(`_slicc_proc`,h(t)),e.runPython(g)}const v=5e3;function y(e,t){return Object.assign(Error(`${e}: ${t}`),{code:e})}function b(e){let t=S(e);if(C(t))return new Uint8Array(t.response);if(t.status>=200&&t.status<300)throw y(`EIO`,e.label);w(t,e.label)}function x(e){let t=b(e);try{return JSON.parse(new TextDecoder().decode(t))}catch{throw y(`EIO`,e.label)}}function S(e){let t=new XMLHttpRequest;try{t.open(e.method,e.url,!1),t.responseType=`arraybuffer`,t.timeout=e.timeoutMs,t.setRequestHeader(`x-slicc-fs-token`,e.token),e.body?t.send(new Uint8Array(e.body)):t.send()}catch{throw y(`EIO`,e.label)}return t}function C(e){return e.status>=200&&e.status<300&&e.getResponseHeader(`x-slicc-fs`)===`1`}function w(e,t){throw y(e.getResponseHeader(`x-slicc-fs`)===`1`&&e.getResponseHeader(`x-slicc-fs-errno`)||`EIO`,t)}function T(e){let t=e;return!t||typeof t.isFile!=`boolean`||typeof t.isDirectory!=`boolean`||typeof t.size!=`number`?null:{isFile:t.isFile,isDirectory:t.isDirectory,isSymbolicLink:t.isSymbolicLink,size:t.size,...typeof t.mode==`number`?{mode:t.mode}:{},...typeof t.mtimeMs==`number`?{mtimeMs:t.mtimeMs}:{}}}function E(e,t){return y(e,`sync-fs bridge, '${t}'`)}function D(e,t){let n=`/__slicc/fs-sync`+(e.startsWith(`/`)?e:`/${e}`).split(`/`).map(encodeURIComponent).join(`/`);return t?`${n}?op=${t}`:n}function O(e,t={}){let n=t.timeoutMs??3e4;function r(t,r,i,a){return{method:t,url:D(r,a),token:e,...i?{body:i}:{},timeoutMs:n,label:`sync-fs bridge, '${r}'`}}return{readFile(e){return b(r(`GET`,e))},writeFile(e,t){b(r(`POST`,e,t))},stat(e){let t=T(x(r(`GET`,e,void 0,`stat`)));if(!t)throw E(`EIO`,e);return t},lstat(e){let t=T(x(r(`GET`,e,void 0,`lstat`)));if(!t)throw E(`EIO`,e);return t},readdir(e){let t=x(r(`GET`,e,void 0,`readdir`));if(!Array.isArray(t)||!t.every(e=>typeof e==`string`))throw E(`EIO`,e);return t},exists(e){let t=x(r(`GET`,e,void 0,`exists`));if(typeof t!=`boolean`)throw E(`EIO`,e);return t},mkdir(e){b(r(`POST`,e,void 0,`mkdir`))},rm(e){b(r(`POST`,e,void 0,`rm`))},rename(e,t){b(r(`POST`,e,k({arg2:t}),`rename`))},unlink(e){b(r(`POST`,e,k({}),`unlink`))},rmdir(e){b(r(`POST`,e,k({}),`rmdir`))},symlink(e,t){b(r(`POST`,t,k({arg2:e}),`symlink`))},readlink(e){let t=x(r(`GET`,e,void 0,`readlink`));if(typeof t!=`string`)throw E(`EIO`,e);return t},chmod(e,t){b(r(`POST`,e,k({mode:t}),`chmod`))},utimes(e,t,n){b(r(`POST`,e,k({atimeMs:t,mtimeMs:n}),`utimes`))}}}function k(e){return new TextEncoder().encode(JSON.stringify(e))}const A=`exec`;function j(e,t){return Math.min(typeof e!=`number`||!Number.isFinite(e)||e<=0?t:e,6e5)}new TextEncoder;const M=new TextDecoder;function N(e,t){switch(e){case 1:return{ok:!0,kind:`bytes`,bytes:t};case 3:return{ok:!0,kind:`void`};case 2:try{return{ok:!0,kind:`json`,json:JSON.parse(M.decode(t))}}catch{return{ok:!1,errno:`EIO`,message:`sync-sab: malformed json payload`}}case 4:try{let e=JSON.parse(M.decode(t)),n=typeof e.errno==`string`&&/^E[A-Z]+$/.test(e.errno)?e.errno:`EIO`;return{ok:!1,errno:n,message:String(e.message??n)}}catch{return{ok:!1,errno:`EIO`,message:`sync-sab: malformed errno payload`}}default:return{ok:!1,errno:`EIO`,message:`sync-sab: unknown status ${e}`}}}function P(e){if(e.byteLength<4160)throw Error(`sync-sab: buffer too small (${e.byteLength} < 4160)`);return{header:new Int32Array(e,0,16),window:new Uint8Array(e,64)}}function F(e,t,n={}){let{header:r,window:i}=P(e),a=n.wait??((e,t,n,r)=>Atomics.wait(e,t,n,r)),o=n.now??(()=>performance.now()),s=0;function c(e,t,n){for(;;){let i=t-o();if(i<=0)throw y(`ETIMEDOUT`,n);if(a(r,0,1,i),Atomics.load(r,0)===2&&Atomics.load(r,1)===e)return;Atomics.load(r,0)===2&&Atomics.store(r,0,1)}}return{call(e,n,a){let l=++s,u=o()+n,d=null,f=0,p=0;try{for(;;){Atomics.store(r,0,1);let n=p===0?{type:`sync-sab-req`,id:l,req:e}:{type:`sync-sab-next`,id:l,offset:p};try{t.postMessage(n)}catch{throw y(`EIO`,a)}c(l,u,a);let o=Atomics.load(r,3),s=Atomics.load(r,4);if(Atomics.load(r,5)!==p||s<0||o<0||p+s>o)throw y(`EIO`,a);if(d===null&&(f=Atomics.load(r,2),d=new Uint8Array(o)),d.set(i.subarray(0,s),p),p+=s,p>=o)break;if(s===0)throw y(`EIO`,a)}}finally{Atomics.store(r,0,0)}return N(f,d)}}}function I(e,t){return y(e,`sync-sab bridge, '${t}'`)}function L(e,t={}){let n=t.timeoutMs??25e3;function r(t,r){let i=e.call(t,n,`sync-sab bridge, '${r}'`);if(!i.ok)throw I(i.errno,r);return i}function i(e,t){let n=r(e,t);if(n.ok&&n.kind===`bytes`)return n.bytes;throw I(`EIO`,t)}function a(e,t){let n=r(e,t);if(n.ok&&n.kind===`json`)return n.json;throw I(`EIO`,t)}return{readFile:e=>i({op:`read`,path:e},e),writeFile:(e,t)=>{r({op:`write`,path:e,body:t},e)},stat:e=>{let t=T(a({op:`stat`,path:e},e));if(!t)throw I(`EIO`,e);return t},lstat:e=>{let t=T(a({op:`lstat`,path:e},e));if(!t)throw I(`EIO`,e);return t},readdir:e=>{let t=a({op:`readdir`,path:e},e);if(!Array.isArray(t)||!t.every(e=>typeof e==`string`))throw I(`EIO`,e);return t},exists:e=>{let t=a({op:`exists`,path:e},e);if(typeof t!=`boolean`)throw I(`EIO`,e);return t},mkdir:e=>{r({op:`mkdir`,path:e},e)},rm:e=>{r({op:`rm`,path:e},e)},rename:(e,t)=>{r({op:`rename`,path:e,arg2:t},e)},unlink:e=>{r({op:`unlink`,path:e},e)},rmdir:e=>{r({op:`rmdir`,path:e},e)},symlink:(e,t)=>{r({op:`symlink`,path:t,arg2:e},t)},readlink:e=>{let t=a({op:`readlink`,path:e},e);if(typeof t!=`string`)throw I(`EIO`,e);return t},chmod:(e,t)=>{r({op:`chmod`,path:e,mode:t},e)},utimes:(e,t,n)=>{r({op:`utimes`,path:e,atimeMs:t,mtimeMs:n},e)}}}function R(e){return(t,n,r)=>{let i=e.call({...t,channel:A},n+v,r);if(!i.ok)throw y(i.errno,r);let a=i.kind===`json`?i.json:null;if(!a||typeof a.stdout!=`string`||typeof a.stderr!=`string`||typeof a.exitCode!=`number`)throw y(`EIO`,r);return{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode}}}function z(e,t){if(!(!e.syncSab||typeof Atomics>`u`||typeof Atomics.wait!=`function`))return F(e.syncSab,t)}function B(e,t){return t?L(t):e.syncFsToken?O(e.syncFsToken):void 0}function V(e){return(t,n,r)=>{let i=x({method:`POST`,url:`/__slicc/exec-sync`,token:e,body:new TextEncoder().encode(JSON.stringify({...t,channel:A})),timeoutMs:n+v,label:r});if(!i||typeof i.stdout!=`string`||typeof i.stderr!=`string`||typeof i.exitCode!=`number`)throw y(`EIO`,r);return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}}}function H(e,t){let n=e.getMutations();for(let e of n.deleted)t.rm(e);for(let e of n.created)e.isDirectory?t.mkdir(e.path):t.writeFile(e.path,e.content);for(let e of n.modified)t.writeFile(e.path,e.content);e.resetBaseline()}function U(e,t={}){let n=t.timeoutMs??12e4,{syncFs:r,fsBridge:i}=t,a=t.transport??V(e);return{run(e,t={}){let o=r?.wasUsed()===!0&&i!==void 0;o&&H(r,i);let s=`sync-exec bridge, '${Array.isArray(e)?e.join(` `):e}'`,c=j(t.timeout,n),l={command:e,...t.args===void 0?{}:{args:t.args},...t.input===void 0?{}:{stdin:t.input},...t.cwd===void 0?{}:{cwd:t.cwd},...t.env===void 0?{}:{env:t.env},timeoutMs:c};try{return a(l,c,s)}finally{o&&r.invalidate()}}}}function W(e){let t=[...new Set(e.map(e=>e.replace(/\/+$/,``)||`/`))].sort();return t.filter(e=>!t.some(t=>t!==e&&(t===`/`||e.startsWith(`${t}/`))))}function G(e,t,n,r){if(t.env?.SLICC_PY_FS===`opfs`)return;let i=z(t,n),a=B(t,i);if(!a||!t.syncFsToken)return;let o=e.FS,s=o.filesystems.SLICC_LIVE_FS??l(o);o.filesystems.SLICC_LIVE_FS=s;let c=[];for(let e of W(t.pyodideMountDirs??[t.cwd,`/tmp`]))if(e!==`/`)try{o.mkdirTree(e),o.mount(s,{root:e,bridge:a},e),c.push(e)}catch(t){r(`live VFS mount of ${e} failed: ${t instanceof Error?t.message:String(t)}`)}return c.length===0?void 0:(_(e,{exec:U(t.syncFsToken,{...i?{transport:R(i)}:{}}),beforeExec:()=>d(o,s),afterExec:()=>f(o,s)}),{plugin:s,mounted:c,flush:()=>d(o,s)})}export{G as mountPyLiveVfs};
@@ -0,0 +1,168 @@
1
+ import{i as e,n as t,r as n,t as r}from"./sync-exec-xhr-bridge-BjD_IfJF.js";const i={EACCES:2,EBADF:8,EBUSY:10,EEXIST:20,EINVAL:28,EIO:29,EISDIR:31,ELOOP:32,ENAMETOOLONG:37,ENOENT:44,ENOSPC:51,ENOSYS:52,ENOTDIR:54,ENOTEMPTY:55,EPERM:63,EROFS:69,ETIMEDOUT:73,EXDEV:75},a=4095;function o(e,t){if(t?.errno!==void 0&&t instanceof e.ErrnoError)return t;let n=t?.code,r=typeof n==`string`?i[n]??29:29;return new e.ErrnoError(r)}function s(e){let t=[],n=e;for(;n!==n.mount.root;)t.push(n.name),n=n.parent;let r=e.mount.opts.root.replace(/\/+$/,``);return t.length===0?r||`/`:`${r}/${t.reverse().join(`/`)}`}function c(e){let t=e.isSymbolicLink?40960:e.isDirectory?16384:32768,n=e.isDirectory||e.isSymbolicLink?511:438;return t|((e.mode??n)&a||n)}function l(e){if(e!=null)return e instanceof Date?e.getTime():e}function u(e,t){let n=e=>e.mount.opts.bridge;function r(t){try{return t()}catch(t){throw o(e,t)}}function i(e){return{...e?{stat:e}:{},len:0,loaded:!1,dirty:!1,openCount:0}}function a(n,r,a){let o=e.createNode(n,r,c(a),0);return o.node_ops=t.node,o.stream_ops=t.stream,o.live=i(a),o}function l(e){if(!e.live.stat){let t=r(()=>n(e).lstat(s(e)));e.live.stat=t,e.mode=c(t)}return e.live.stat}function u(e,t){let n=s(e);return n===`/`?`/${t}`:`${n}/${t}`}function d(e){let t=e.live;if(t.loaded)return;let i=r(()=>n(e).readFile(s(e)));t.data=i,t.len=i.length,t.loaded=!0}function f(e,t){let n=e.live,r=n.data??new Uint8Array;if(r.length>=t)return r;let i=new Uint8Array(Math.max(t,r.length*2,256));return i.set(r.subarray(0,n.len)),n.data=i,i}function p(e){let t=e.live;if(!t.dirty||!t.data)return;let i=t.data.slice(0,t.len);r(()=>n(e).writeFile(s(e),i)),t.dirty=!1,t.stat=void 0}function m(e,t){let i=e.live;if(i.openCount>0){t>0?d(e):i.loaded=!0;let n=f(e,t);t>i.len&&n.fill(0,i.len,t),i.len=t,i.dirty=!0;return}let a=s(e),o=new Uint8Array(t);if(t>0){let i=r(()=>n(e).readFile(a));o.set(i.subarray(0,Math.min(t,i.length)))}r(()=>n(e).writeFile(a,o)),i.stat=void 0}return{Fs:e,bridgeOf:n,call:r,makeNode:a,statOf:l,childPath:u,ensureLoaded:d,ensureCapacity:f,flushNode:p,truncate:m}}function d(e){let{Fs:t,bridgeOf:n,call:r,makeNode:o,statOf:c,childPath:u,flushNode:d,truncate:f}=e;return{getattr(e){let n=c(e),r=e.live,i=t.isDir(e.mode)?4096:r.loaded?r.len:n.size,a=new Date(n.mtimeMs??0);return{dev:1,ino:e.id,mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:i,atime:a,mtime:a,ctime:a,blksize:4096,blocks:Math.ceil(i/4096)}},setattr(e,i){let o=s(e);if(i.mode!==void 0&&i.mode!==null){let t=i.mode&a;t!==(e.mode&a)&&(r(()=>n(e).chmod(o,t)),e.mode=e.mode&-4096|t)}i.size!==void 0&&i.size!==null&&t.isFile(e.mode)&&f(e,i.size);let c=l(i.mtime)??i.timestamp;if(c!==void 0){let t=l(i.atime)??c;d(e),r(()=>n(e).utimes(o,t,c))}e.live.stat=void 0},lookup(e,t){let i=r(()=>n(e).lstat(u(e,t)));return o(e,t,i)},mknod(e,a,s){let c=u(e,a);if(t.isDir(s))r(()=>n(e).mkdir(c));else if(t.isFile(s))r(()=>n(e).writeFile(c,new Uint8Array));else throw new t.ErrnoError(i.EPERM);let l=o(e,a,{isFile:t.isFile(s),isDirectory:t.isDir(s),isSymbolicLink:!1,size:0,mode:s,mtimeMs:Date.now()});return l.live.stat=void 0,l},rename(e,i,a){let o=s(e),c=u(i,a);d(e),r(()=>n(e).rename(o,c));try{let n=t.lookupNode?.(i,a);n&&n!==e&&t.hashRemoveNode?.(n)}catch{}e.name=a,e.live.stat=void 0},unlink(e,t){r(()=>n(e).unlink(u(e,t)))},rmdir(e,t){r(()=>n(e).rmdir(u(e,t)))},readdir(e){return[`.`,`..`,...r(()=>n(e).readdir(s(e)))]},symlink(e,t,i){let a=u(e,t);return r(()=>n(e).symlink(i,a)),o(e,t,{isFile:!1,isDirectory:!1,isSymbolicLink:!0,size:i.length})},readlink(e){if(!t.isLink(e.mode))throw new t.ErrnoError(i.EINVAL);return r(()=>n(e).readlink(s(e)))}}}function f(e){let{Fs:t,statOf:n,ensureLoaded:r,ensureCapacity:a,flushNode:o}=e;return{open(e){t.isFile(e.node.mode)&&e.node.live.openCount++},close(e){let n=e.node;if(!t.isFile(n.mode))return;let r=n.live;if(r.openCount=Math.max(0,r.openCount-1),!(r.openCount>0))try{o(n)}finally{r.data=void 0,r.len=0,r.loaded=!1}},read(e,n,a,o,s){let c=e.node;if(t.isDir(c.mode))throw new t.ErrnoError(i.EISDIR);r(c);let l=c.live;if(s>=l.len||o<=0)return 0;let u=Math.min(o,l.len-s);return new Uint8Array(n.buffer,n.byteOffset+a,u).set(l.data.subarray(s,s+u)),u},write(e,n,o,s,c){let l=e.node;if(t.isDir(l.mode))throw new t.ErrnoError(i.EISDIR);if(s<=0)return 0;r(l);let u=l.live,d=c+s,f=a(l,d);return c>u.len&&f.fill(0,u.len,c),f.set(new Uint8Array(n.buffer,n.byteOffset+o,s),c),u.len=Math.max(u.len,d),u.dirty=!0,s},llseek(e,r,a){let o=r;if(a===1)o+=e.position;else if(a===2&&t.isFile(e.node.mode)){let t=e.node.live;o+=t.loaded?t.len:n(e.node).size}if(o<0)throw new t.ErrnoError(i.EINVAL);return o},fsync(e){o(e.node)}}}function p(e){let t=new Set,n={},r=u(e,n),a=d(r),o=f(r);return n.node=a,n.stream=o,{mounts:t,node_ops:a,stream_ops:o,mount(n){let a=r.call(()=>n.opts.bridge.stat(n.opts.root));if(!a.isDirectory)throw new e.ErrnoError(i.ENOTDIR);let o=r.makeNode(null,`/`,a);return t.add(n),o}}}function m(e,t){return!!t&&e.mounts.has(t.mount)}function h(e,t){for(let n of e.nameTable??[])for(let r=n;r;r=r.name_next??null)if(!(!m(t,r)||!r.live.dirty||!r.live.data))try{let e=r.live.data.slice(0,r.live.len);r.mount.opts.bridge.writeFile(s(r),e),r.live.dirty=!1}catch(t){throw o(e,t)}}function g(e,t){let n=e.nameTable??[],r=[];for(let e of n)for(let n=e;n;n=n.name_next??null){if(!m(t,n))continue;let e=n.live;e.stat=void 0,e.openCount===0?n!==n.mount.root&&r.push(n):e.loaded&&!e.dirty&&(e.data=void 0,e.len=0,e.loaded=!1)}if(e.hashRemoveNode)for(let t of r)e.hashRemoveNode(t)}function _(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function v(e){let t;try{t=JSON.parse(e)}catch{return null}if(!t||!(typeof t.command==`string`||_(t.command)))return null;let n=t.env&&typeof t.env==`object`&&!Array.isArray(t.env)?Object.fromEntries(Object.entries(t.env).filter(e=>typeof e[1]==`string`)):void 0;return{command:t.command,...typeof t.cwd==`string`?{cwd:t.cwd}:{},...n?{env:n}:{},...typeof t.input==`string`?{input:t.input}:{},...typeof t.timeoutMs==`number`?{timeoutMs:t.timeoutMs}:{}}}function y(e){return{run(t){let n=v(t);if(!n)return JSON.stringify({error:`EINVAL`,message:`malformed request`});let r;e.beforeExec();try{r=e.exec.run(n.command,{...n.input===void 0?{}:{input:n.input},...n.cwd===void 0?{}:{cwd:n.cwd},...n.env===void 0?{}:{env:n.env},...n.timeoutMs===void 0?{}:{timeout:n.timeoutMs}})}catch(e){let t=e?.code;r={error:typeof t==`string`?t:`EIO`,message:e instanceof Error?e.message:String(e)}}finally{e.afterExec()}return JSON.stringify(r)}}}const b=String.raw`
2
+ def __slicc_install_subprocess():
3
+ import errno, io, itertools, json, os, subprocess, sys
4
+ import _slicc_proc
5
+
6
+ PIPE, STDOUT, DEVNULL = subprocess.PIPE, subprocess.STDOUT, subprocess.DEVNULL
7
+ pids = itertools.count(1000)
8
+
9
+ def to_str(a):
10
+ a = os.fspath(a)
11
+ return a.decode('utf-8', 'surrogateescape') if isinstance(a, bytes) else a
12
+
13
+ class _StdinPipe(io.BytesIO):
14
+ def __init__(self, proc):
15
+ super().__init__()
16
+ self._proc = proc
17
+ def close(self):
18
+ if not self.closed:
19
+ data = self.getvalue()
20
+ super().close()
21
+ self._proc._start(data)
22
+
23
+ class SliccPopen:
24
+ def __init__(self, args, bufsize=-1, executable=None, stdin=None, stdout=None,
25
+ stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None,
26
+ env=None, universal_newlines=None, startupinfo=None, creationflags=0,
27
+ restore_signals=True, start_new_session=False, pass_fds=(), *,
28
+ user=None, group=None, extra_groups=None, encoding=None, errors=None,
29
+ text=None, umask=-1, pipesize=-1, process_group=None):
30
+ self.args = args
31
+ self.pid = next(pids)
32
+ self.returncode = None
33
+ self.text_mode = bool(text or universal_newlines or encoding or errors)
34
+ self._encoding = encoding or 'utf-8'
35
+ self._errors = errors or 'strict'
36
+ if shell:
37
+ command = to_str(args if isinstance(args, (str, bytes)) else args[0])
38
+ else:
39
+ argv = [args] if isinstance(args, (str, bytes, os.PathLike)) else list(args)
40
+ command = [to_str(a) for a in argv]
41
+ if executable is not None:
42
+ command[0] = to_str(executable)
43
+ self._shell = bool(shell)
44
+ self._command = command
45
+ self._cwd = to_str(cwd) if cwd is not None else os.getcwd()
46
+ self._env = {to_str(k): to_str(v) for k, v in (os.environ if env is None else env).items()}
47
+ self._stdout_to, self._stderr_to = stdout, stderr
48
+ self.stdout = self.stderr = None
49
+ self._out = self._err = b''
50
+ self.stdin = None
51
+ if stdin == PIPE:
52
+ self.stdin = _StdinPipe(self)
53
+ if self.text_mode:
54
+ self.stdin = io.TextIOWrapper(self.stdin, encoding=self._encoding,
55
+ errors=self._errors, write_through=True)
56
+ return
57
+ data = None
58
+ if stdin not in (None, DEVNULL):
59
+ data = os.read(stdin, 1 << 30) if isinstance(stdin, int) else stdin.read()
60
+ if isinstance(data, str):
61
+ data = data.encode(self._encoding, self._errors)
62
+ self._start(data)
63
+
64
+ def _start(self, data, timeout=None):
65
+ if self.returncode is not None:
66
+ return
67
+ req = {'command': self._command, 'cwd': self._cwd, 'env': self._env}
68
+ if data:
69
+ req['input'] = data.decode('utf-8', 'surrogateescape')
70
+ if timeout is not None:
71
+ req['timeoutMs'] = int(timeout * 1000)
72
+ reply = json.loads(_slicc_proc.run(json.dumps(req)))
73
+ if 'error' in reply:
74
+ code = getattr(errno, reply['error'], errno.EIO)
75
+ raise OSError(code, reply.get('message') or os.strerror(code))
76
+ out = reply['stdout'].encode('utf-8', 'surrogateescape')
77
+ err = reply['stderr'].encode('utf-8', 'surrogateescape')
78
+ code = reply['exitCode']
79
+ if (not self._shell and code == 127 and b'command not found' in err):
80
+ raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), self._command[0])
81
+ if self._stderr_to == STDOUT:
82
+ out, err = out + err, b''
83
+ self._out = self._route(out, self._stdout_to, sys.stdout)
84
+ self._err = self._route(err, self._stderr_to, sys.stderr)
85
+ if self._stdout_to == PIPE:
86
+ self.stdout = self._pipe(self._out)
87
+ if self._stderr_to == PIPE:
88
+ self.stderr = self._pipe(self._err)
89
+ self.returncode = code
90
+
91
+ def _route(self, data, target, inherit):
92
+ if target == PIPE:
93
+ return data
94
+ if target is None:
95
+ if data:
96
+ inherit.write(data.decode('utf-8', 'replace'))
97
+ inherit.flush()
98
+ elif target not in (DEVNULL, STDOUT):
99
+ if isinstance(target, int):
100
+ os.write(target, data)
101
+ elif isinstance(target, io.TextIOBase):
102
+ target.write(data.decode('utf-8', 'replace'))
103
+ else:
104
+ target.write(data)
105
+ return b''
106
+
107
+ def _pipe(self, data):
108
+ if self.text_mode:
109
+ return io.StringIO(data.decode(self._encoding, self._errors))
110
+ return io.BytesIO(data)
111
+
112
+ def communicate(self, input=None, timeout=None):
113
+ if self.returncode is None:
114
+ if isinstance(input, str):
115
+ input = input.encode(self._encoding, self._errors)
116
+ if self.stdin is not None and not self.stdin.closed:
117
+ raw = self.stdin.buffer if isinstance(self.stdin, io.TextIOWrapper) else self.stdin
118
+ if input:
119
+ raw.write(input)
120
+ input = raw.getvalue()
121
+ io.BytesIO.close(raw)
122
+ self._start(input, timeout)
123
+ out = self.stdout.read() if self.stdout is not None else None
124
+ err = self.stderr.read() if self.stderr is not None else None
125
+ return out, err
126
+
127
+ def wait(self, timeout=None):
128
+ if self.returncode is None:
129
+ self.communicate(timeout=timeout)
130
+ return self.returncode
131
+
132
+ def poll(self):
133
+ # Never starts work, like CPython: a child still waiting for its
134
+ # stdin=PIPE input has not run yet, so it is "still running".
135
+ # A started child always ran to completion.
136
+ return self.returncode
137
+
138
+ def send_signal(self, sig):
139
+ pass
140
+
141
+ def terminate(self):
142
+ pass
143
+
144
+ def kill(self):
145
+ pass
146
+
147
+ def __enter__(self):
148
+ return self
149
+
150
+ def __exit__(self, *exc):
151
+ for f in (self.stdout, self.stderr, self.stdin):
152
+ if f is not None and not f.closed:
153
+ f.close()
154
+ self.wait()
155
+
156
+ def __repr__(self):
157
+ return f'<SliccPopen: returncode: {self.returncode} args: {self.args!r}>'
158
+
159
+ def system(command):
160
+ code = SliccPopen(command, shell=True).wait()
161
+ return (code & 0xff) << 8
162
+
163
+ subprocess.Popen = SliccPopen
164
+ os.system = system
165
+
166
+ __slicc_install_subprocess()
167
+ del __slicc_install_subprocess
168
+ `;function x(e,t){e.registerJsModule(`_slicc_proc`,y(t)),e.runPython(b)}function S(e){let t=[...new Set(e.map(e=>e.replace(/\/+$/,``)||`/`))].sort();return t.filter(e=>!t.some(t=>t!==e&&(t===`/`||e.startsWith(`${t}/`))))}function C(i,a,o,s){if(a.env?.SLICC_PY_FS===`opfs`)return;let c=n(a,o),l=t(a,c);if(!l||!a.syncFsToken)return;let u=i.FS,d=u.filesystems.SLICC_LIVE_FS??p(u);u.filesystems.SLICC_LIVE_FS=d;let f=[];for(let e of S(a.pyodideMountDirs??[a.cwd,`/tmp`]))if(e!==`/`)try{u.mkdirTree(e),u.mount(d,{root:e,bridge:l},e),f.push(e)}catch(t){s(`live VFS mount of ${e} failed: ${t instanceof Error?t.message:String(t)}`)}return f.length===0?void 0:(x(i,{exec:r(a.syncFsToken,{...c?{transport:e(c)}:{}}),beforeExec:()=>h(u,d),afterExec:()=>g(u,d)}),{plugin:d,mounted:f,flush:()=>h(u,d)})}export{C as mountPyLiveVfs};
@@ -219,9 +219,9 @@ import _slicc_fs_js as _bridge
219
219
  _build_slicc_module(_bridge)
220
220
  del _build_slicc_module
221
221
  del _bridge
222
- `)}const ut=ze(`pyodide`,`314.0.6`),dt=`https://cdn.jsdelivr.net/pyodide/v${ut}/full/`,ft=`pyodide is not installed in node_modules: run \`ipk add pyodide@${ut}\` (no network fallback)`,Z={asmJs:`pyodide.asm.mjs`,asmWasm:`pyodide.asm.wasm`,stdlibZip:`python_stdlib.zip`,lockJson:`pyodide-lock.json`};async function pt(e,t){try{let[n,r,i,a]=await Promise.all([e.call(`vfs`,`readFile`,[`${t}/${Z.asmJs}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${Z.asmWasm}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${Z.stdlibZip}`]),e.call(`vfs`,`readFile`,[`${t}/${Z.lockJson}`])]);return{asmJsSource:n,asmWasmBytes:r instanceof Uint8Array?r:new Uint8Array(r),stdlibBytes:i instanceof Uint8Array?i:new Uint8Array(i),lockJsonString:a}}catch{return null}}function mt(e,t){let n=e+Z.asmWasm,r=globalThis.fetch,i=!0,a=(e,i)=>(typeof e==`string`?e:e instanceof URL?e.href:e.url)===n?Promise.resolve(new Response(t,{headers:{"Content-Type":`application/wasm`}})):r(e,i);return globalThis.fetch=a,{restore:()=>{i&&(i=!1,globalThis.fetch===a&&(globalThis.fetch=r))}}}async function ht(e,t,n){let r=await pt(n,t);if(!r)throw Error(ft);let i=URL.createObjectURL(new Blob([r.asmJsSource],{type:`text/javascript`})),a=URL.createObjectURL(new Blob([r.stdlibBytes],{type:`application/zip`})),o=`slicc-pyodide://local/${crypto.randomUUID()}/`,s=mt(o,r.asmWasmBytes);try{let t=await import(i);return await e.loadPyodide({indexURL:o,lockFileContents:r.lockJsonString,stdLibURL:a,createPyodideModule:t.default,packageBaseUrl:Re(`/workspace/python_wheels/`)})}finally{s.restore(),URL.revokeObjectURL(i),URL.revokeObjectURL(a)}}async function gt(e,t,n=()=>import(`./pyodide-DGH4V3SQ.js`)){let r=[],i=[],a=new st(t),o;try{let t=await n();o=e.pyodideAssetRoot?await ht(t,e.pyodideAssetRoot,a):await t.loadPyodide({indexURL:e.pyodideIndexURL})}catch(e){a.dispose();let n={type:`realm-error`,message:`loadPyodide: ${e instanceof Error?e.message:String(e)}`};t.postMessage(n);return}let s=e=>{i.push(`Warning: ${e}\n`)},c=[],l;try{await _t(o,a,s,vt(e.pyodideAssetRoot)),c=await Ot(o,e,s),await kt(o,e,s),await Et(o,a,e,s),await At(o,a,s);try{o.FS.chdir(e.cwd)}catch{}jt(o,e,r,i),l=await Mt(o,i),await Nt(c,e,a,s)}catch(e){a.dispose();let n={type:`realm-error`,message:`${e instanceof Error?e.message:String(e)}${i.length?`\n${i.join(``)}`:``}`};t.postMessage(n);return}a.dispose();let u={type:`realm-done`,stdout:r.join(``),stderr:i.join(``),exitCode:l};t.postMessage(u)}const Q=`/workspace/python_wheels`;async function _t(e,t,n,r){await xt(t,n,r);try{await e.loadPackage([`micropip`])}catch(e){n(`micropip preload failed: ${$(e)}`)}}function vt(e){return e?`${e}/${Z.lockJson}`:`/workspace/node_modules/pyodide/pyodide-lock.json`}const yt=1e4,bt=new WeakMap;function xt(e,t,n){let r=bt.get(e);if(r)return r;let i=St(e,t,n);return bt.set(e,i),i}async function St(e,t,n){let r;try{if(!await e.call(`vfs`,`exists`,[n]))return;let t=await e.call(`vfs`,`readFile`,[n]),i=JSON.parse(t);for(let[e,t]of Object.entries(i.packages??{}))if(t?.file_name&&x(t.name??e)===`micropip`){r=t;break}}catch(e){t(`micropip wheel staging skipped: ${$(e)}`);return}if(!r?.file_name||!r.sha256)return;let i=`${Q}/${r.file_name}`;try{if(await e.call(`vfs`,`exists`,[i]))return;let t=await ee(Ct(e),{url:`${dt}${r.file_name}`,sha256:r.sha256,label:`micropip wheel`,timeoutMs:yt});await e.call(`vfs`,`mkdir`,[Q]),await e.call(`vfs`,`writeFileBinary`,[i,t])}catch(e){t(`micropip wheel staging failed: ${$(e)}`)}}function Ct(e){return async(t,n)=>{let r={method:n?.method??`GET`,...n?.headers?{headers:n.headers}:{},...n?.body===void 0?{}:{body:n.body}},i=await wt(e.call(`fetch`,`request`,[t,r]),n?.timeoutMs??yt,t);return{status:i.status,statusText:i.statusText,headers:i.headers,body:i.body instanceof Uint8Array?i.body:new Uint8Array(i.body),url:i.url}}}function wt(e,t,n){let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(`request to ${n} timed out after ${t}ms`)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))}function Tt(e){return{exists:t=>e.call(`vfs`,`exists`,[t]),readFile:t=>e.call(`vfs`,`readFile`,[t])}}async function Et(e,t,n,r){let i=Tt(t),a;try{a=await S(i,n.cwd)}catch(e){r(`manifest discovery failed: ${$(e)}`);return}if(a===null)return;let o,s;try{let[e,t]=await Promise.all([ae(i,a),oe(i,a)]);o=e.dependencies,s=t}catch(e){r(`manifest read failed: ${$(e)}`);return}let c=new Map;for(let e of s)c.set(x(e.name),e);for(let t of o){let{name:n}=te(t);if(!n)continue;let i=c.get(x(n));if(!i){r(`no integrity pin for \`${n}\`; run \`di sync\` to repair`);continue}await Dt(e,i,r)}}async function Dt(e,t,n){switch(t.source){case`pyodide-cdn`:try{await e.loadPackage([t.name])}catch(e){n(`activation of \`${t.name}\` failed: ${$(e)}`)}return;case`pypi`:try{let n=`${Q}/${t.fileName}`;await e.runPythonAsync(`import micropip; await micropip.install('emfs:${n}')`)}catch(e){n(`activation of \`${t.name}\` failed: ${$(e)}`)}return;default:n(`unknown source \`${t.source}\` for \`${t.name}\`; skipping`)}}async function Ot(e,t,n){if(t.opfsMountDbName===void 0)return[];let r=t.pyodideMountDirs??[t.cwd,`/tmp`],i=t.mountPoints??[],a=new Set(i.map(e=>e.path));try{return(await It(e,r,t.opfsMountDbName,n,{skipMountPaths:a})).mounts}catch(e){return n(`VFS→Pyodide OPFS mount failed: ${$(e)}`),[]}}async function kt(e,t,n){let r=t.mountPoints??[];if(r.length!==0){try{it(e.FS,r.map(e=>e.path),n)}catch(e){n(`bomb overlay install failed: ${$(e)}`)}try{await ot(e,r.map(e=>e.path))}catch(e){n(`python mount guard install failed: ${$(e)}`)}}}async function At(e,t,n){try{await lt(e,t)}catch(e){n(`slicc.fs registration failed: ${$(e)}`)}}function jt(e,t,n,r){e.setStdout({batched:e=>n.push(e+`
222
+ `)}const ut=ze(`pyodide`,`314.0.6`),dt=`https://cdn.jsdelivr.net/pyodide/v${ut}/full/`,ft=`pyodide is not installed in node_modules: run \`ipk add pyodide@${ut}\` (no network fallback)`,Z={asmJs:`pyodide.asm.mjs`,asmWasm:`pyodide.asm.wasm`,stdlibZip:`python_stdlib.zip`,lockJson:`pyodide-lock.json`};async function pt(e,t){try{let[n,r,i,a]=await Promise.all([e.call(`vfs`,`readFile`,[`${t}/${Z.asmJs}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${Z.asmWasm}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${Z.stdlibZip}`]),e.call(`vfs`,`readFile`,[`${t}/${Z.lockJson}`])]);return{asmJsSource:n,asmWasmBytes:r instanceof Uint8Array?r:new Uint8Array(r),stdlibBytes:i instanceof Uint8Array?i:new Uint8Array(i),lockJsonString:a}}catch{return null}}function mt(e,t){let n=e+Z.asmWasm,r=globalThis.fetch,i=!0,a=(e,i)=>(typeof e==`string`?e:e instanceof URL?e.href:e.url)===n?Promise.resolve(new Response(t,{headers:{"Content-Type":`application/wasm`}})):r(e,i);return globalThis.fetch=a,{restore:()=>{i&&(i=!1,globalThis.fetch===a&&(globalThis.fetch=r))}}}async function ht(e,t,n){let r=await pt(n,t);if(!r)throw Error(ft);let i=URL.createObjectURL(new Blob([r.asmJsSource],{type:`text/javascript`})),a=URL.createObjectURL(new Blob([r.stdlibBytes],{type:`application/zip`})),o=`slicc-pyodide://local/${crypto.randomUUID()}/`,s=mt(o,r.asmWasmBytes);try{let t=await import(i);return await e.loadPyodide({indexURL:o,lockFileContents:r.lockJsonString,stdLibURL:a,createPyodideModule:t.default,packageBaseUrl:Re(`/workspace/python_wheels/`)})}finally{s.restore(),URL.revokeObjectURL(i),URL.revokeObjectURL(a)}}async function gt(e,t,n=()=>import(`./pyodide-DKNrUBio.js`)){let r=[],i=[],a=new st(t),o;try{let t=await n();o=e.pyodideAssetRoot?await ht(t,e.pyodideAssetRoot,a):await t.loadPyodide({indexURL:e.pyodideIndexURL})}catch(e){a.dispose();let n={type:`realm-error`,message:`loadPyodide: ${e instanceof Error?e.message:String(e)}`};t.postMessage(n);return}let s=e=>{i.push(`Warning: ${e}\n`)},c=[],l,u;try{await _t(o,a,s,vt(e.pyodideAssetRoot));let{mountPyLiveVfs:n}=await import(`./py-live-vfs-DaPSes0l.js`);l=n(o,e,t,s),l||(c=await Ot(o,e,s),await kt(o,e,s)),await Et(o,a,e,s),await At(o,a,s);try{o.FS.chdir(e.cwd)}catch{}jt(o,e,r,i),u=await Pt(o,i),l?Nt(l,s):await Ft(c,e,a,s)}catch(e){a.dispose();let n={type:`realm-error`,message:`${e instanceof Error?e.message:String(e)}${i.length?`\n${i.join(``)}`:``}`};t.postMessage(n);return}a.dispose();let d={type:`realm-done`,stdout:r.join(``),stderr:i.join(``),exitCode:u};t.postMessage(d)}const Q=`/workspace/python_wheels`;async function _t(e,t,n,r){await xt(t,n,r);try{await e.loadPackage([`micropip`])}catch(e){n(`micropip preload failed: ${$(e)}`)}}function vt(e){return e?`${e}/${Z.lockJson}`:`/workspace/node_modules/pyodide/pyodide-lock.json`}const yt=1e4,bt=new WeakMap;function xt(e,t,n){let r=bt.get(e);if(r)return r;let i=St(e,t,n);return bt.set(e,i),i}async function St(e,t,n){let r;try{if(!await e.call(`vfs`,`exists`,[n]))return;let t=await e.call(`vfs`,`readFile`,[n]),i=JSON.parse(t);for(let[e,t]of Object.entries(i.packages??{}))if(t?.file_name&&x(t.name??e)===`micropip`){r=t;break}}catch(e){t(`micropip wheel staging skipped: ${$(e)}`);return}if(!r?.file_name||!r.sha256)return;let i=`${Q}/${r.file_name}`;try{if(await e.call(`vfs`,`exists`,[i]))return;let t=await ee(Ct(e),{url:`${dt}${r.file_name}`,sha256:r.sha256,label:`micropip wheel`,timeoutMs:yt});await e.call(`vfs`,`mkdir`,[Q]),await e.call(`vfs`,`writeFileBinary`,[i,t])}catch(e){t(`micropip wheel staging failed: ${$(e)}`)}}function Ct(e){return async(t,n)=>{let r={method:n?.method??`GET`,...n?.headers?{headers:n.headers}:{},...n?.body===void 0?{}:{body:n.body}},i=await wt(e.call(`fetch`,`request`,[t,r]),n?.timeoutMs??yt,t);return{status:i.status,statusText:i.statusText,headers:i.headers,body:i.body instanceof Uint8Array?i.body:new Uint8Array(i.body),url:i.url}}}function wt(e,t,n){let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(`request to ${n} timed out after ${t}ms`)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))}function Tt(e){return{exists:t=>e.call(`vfs`,`exists`,[t]),readFile:t=>e.call(`vfs`,`readFile`,[t])}}async function Et(e,t,n,r){let i=Tt(t),a;try{a=await S(i,n.cwd)}catch(e){r(`manifest discovery failed: ${$(e)}`);return}if(a===null)return;let o,s;try{let[e,t]=await Promise.all([ae(i,a),oe(i,a)]);o=e.dependencies,s=t}catch(e){r(`manifest read failed: ${$(e)}`);return}let c=new Map;for(let e of s)c.set(x(e.name),e);for(let t of o){let{name:n}=te(t);if(!n)continue;let i=c.get(x(n));if(!i){r(`no integrity pin for \`${n}\`; run \`di sync\` to repair`);continue}await Dt(e,i,r)}}async function Dt(e,t,n){switch(t.source){case`pyodide-cdn`:try{await e.loadPackage([t.name])}catch(e){n(`activation of \`${t.name}\` failed: ${$(e)}`)}return;case`pypi`:try{let n=`${Q}/${t.fileName}`;await e.runPythonAsync(`import micropip; await micropip.install('emfs:${n}')`)}catch(e){n(`activation of \`${t.name}\` failed: ${$(e)}`)}return;default:n(`unknown source \`${t.source}\` for \`${t.name}\`; skipping`)}}async function Ot(e,t,n){if(t.opfsMountDbName===void 0)return[];let r=t.pyodideMountDirs??[t.cwd,`/tmp`],i=t.mountPoints??[],a=new Set(i.map(e=>e.path));try{return(await Rt(e,r,t.opfsMountDbName,n,{skipMountPaths:a})).mounts}catch(e){return n(`VFS→Pyodide OPFS mount failed: ${$(e)}`),[]}}async function kt(e,t,n){let r=t.mountPoints??[];if(r.length!==0){try{it(e.FS,r.map(e=>e.path),n)}catch(e){n(`bomb overlay install failed: ${$(e)}`)}try{await ot(e,r.map(e=>e.path))}catch(e){n(`python mount guard install failed: ${$(e)}`)}}}async function At(e,t,n){try{await lt(e,t)}catch(e){n(`slicc.fs registration failed: ${$(e)}`)}}function jt(e,t,n,r){e.setStdout({batched:e=>n.push(e+`
223
223
  `)}),e.setStderr({batched:e=>r.push(e+`
224
- `)});let i=!1;e.setStdin({stdin:()=>i||!t.stdin?null:(i=!0,t.stdin)}),e.globals.set(`__slicc_code`,t.code),e.globals.set(`__slicc_filename`,t.filename),e.globals.set(`__slicc_argv`,t.argv)}async function Mt(e,t){let n;try{await e.runPythonAsync(`
224
+ `)});let i=!1;e.setStdin({stdin:()=>i||!t.stdin?null:(i=!0,t.stdin)}),Mt(e,t.env),e.globals.set(`__slicc_code`,t.code),e.globals.set(`__slicc_filename`,t.filename),e.globals.set(`__slicc_argv`,t.argv)}function Mt(e,t){if(!(!t||Object.keys(t).length===0)){e.globals.set(`__slicc_env`,e.toPy(t));try{e.runPython(`import os; os.environ.update(__slicc_env)`)}finally{e.runPython(`del __slicc_env`)}}}function Nt(e,t){try{e.flush()}catch(e){t(`Pyodide→VFS flush failed: ${$(e)}`)}}async function Pt(e,t){let n;try{await e.runPythonAsync(`
225
225
  import sys
226
226
  import traceback
227
227
 
@@ -241,4 +241,4 @@ except SystemExit as exc:
241
241
  except BaseException:
242
242
  traceback.print_exc()
243
243
  __slicc_exit_code = 1
244
- `);let t=e.globals.get(`__slicc_exit_code`);n=typeof t==`number`?t:Number(t??1)}catch(e){let r=e instanceof Error?e.message:String(e);t.push(`${r}\n`),n=1}try{e.runPython(`del __slicc_code, __slicc_filename, __slicc_argv, __slicc_exit_code`)}catch{}return n}async function Nt(e,t,n,r){if(t.opfsMountDbName!==void 0){try{await Bt(e,n)}catch(e){r(`Pyodide→VFS consistency mark clear failed: ${e instanceof Error?e.message:String(e)}`),r(`Pyodide→VFS OPFS flush skipped: clean-boot mark could not be cleared`);return}try{await Vt(e)}catch(e){r(`Pyodide→VFS OPFS flush failed: ${e instanceof Error?e.message:String(e)}`)}try{await Ht(e,n)}catch(e){r(`Pyodide→kernel VFS invalidation failed: ${$(e)}`)}}}const Pt=new Set([`dev`,`proc`,`lib`,`tmp`,`home`]);function $(e){if(e&&typeof e==`object`){let t=e,n=typeof t.errno==`number`,r=typeof t.code==`string`;if(n||r){let e=typeof t.name==`string`&&t.name?t.name:`Error`,i=typeof t.message==`string`?t.message:``,a=[];n&&a.push(`errno ${t.errno}`),r&&a.push(t.code);let o=a.length?` (${a.join(`, `)})`:``;return i?`${e}: ${i}${o}`:`${e}${o}`}}return e instanceof Error?e.message:String(e)}function Ft(e){let t=e.FS.filesystems,n=t.OPFS_SYNC_FS;return n||(n=Ge(e.FS),t.OPFS_SYNC_FS=n),n}async function It(e,t,n,r=()=>{},i={}){let a=[],o=i.skipMountPaths??new Set,s=navigator.storage;if(!s?.getDirectory)return r(`VFS→Pyodide OPFS mount skipped: navigator.storage.getDirectory unavailable`),{mounts:a};let c;try{c=await s.getDirectory()}catch(e){return r(`VFS→Pyodide OPFS mount: getDirectory() failed: ${$(e)}`),{mounts:a}}let l;try{l=await c.getDirectoryHandle(n,{create:!0})}catch(e){return r(`VFS→Pyodide OPFS mount: opening '${n}' failed: ${$(e)}`),{mounts:a}}let u=Ft(e);for(let n of t){if(n===`/`){await Lt(e,u,l,o,a,r);continue}if(!o.has(n))try{let t=l;for(let e of n.split(`/`).filter(Boolean))t=await t.getDirectoryHandle(e,{create:!0});await Rt(e,u,n,t,a)}catch(e){r(`VFS→Pyodide OPFS mount '${n}' failed: ${$(e)}`)}}return{mounts:a}}async function Lt(e,t,n,r,i,a){try{let o=n;for await(let[n,s]of o){if(s.kind!==`directory`||Pt.has(n))continue;let o=`/${n}`;if(!r.has(o))try{await Rt(e,t,o,s,i)}catch(e){a(`VFS→Pyodide OPFS mount '${o}' failed: ${$(e)}`)}}}catch(e){a(`VFS→Pyodide OPFS mount '/' failed: ${$(e)}`)}}async function Rt(e,t,n,r,i){try{e.FS.stat(n)}catch{e.FS.mkdirTree(n)}let a=await Ve(r),o=Ye();await o.preload(a);let s={rootHandle:r,prewalk:a,sahProvider:o.provider},c=e.FS.mount(t,s,n),l=c?.mount??{opts:s,mountpoint:n,root:c};i.push({pyPath:n,mount:l,rootHandle:r,flushBuffers:o.flush,getDirtyPaths:o.getDirtyPaths})}function zt(e){return e.some(e=>e.getDirtyPaths().length>0||Ke(e.mount))}async function Bt(e,t){zt(e)&&await t.call(`vfs`,`forgetSidecarConsistency`,[])}async function Vt(e){for(let t of e)await qe(t.mount),await t.flushBuffers(t.rootHandle)}async function Ht(e,t){let n=[];for(let t of e)for(let e of t.getDirtyPaths())n.push(t.pyPath===`/`?`/${e}`:`${t.pyPath}/${e}`);n.length>0&&await t.call(`vfs`,`invalidatePaths`,[n])}const Ut={postMessage:(e,t)=>t?self.postMessage(e,t):self.postMessage(e),addEventListener:(e,t)=>self.addEventListener(e,t),removeEventListener:(e,t)=>self.removeEventListener(e,t)};self.addEventListener(`message`,e=>{if(e.data?.type!==`realm-init`)return;let t=e.data;t.kind===`py`&&gt(t,Ut).catch(e=>{let t={type:`realm-error`,message:e instanceof Error?e.message:String(e)};self.postMessage(t)})});export{l as n,c as r,o as t};
244
+ `);let t=e.globals.get(`__slicc_exit_code`);n=typeof t==`number`?t:Number(t??1)}catch(e){let r=e instanceof Error?e.message:String(e);t.push(`${r}\n`),n=1}try{e.runPython(`del __slicc_code, __slicc_filename, __slicc_argv, __slicc_exit_code`)}catch{}return n}async function Ft(e,t,n,r){if(t.opfsMountDbName!==void 0){try{await Ht(e,n)}catch(e){r(`Pyodide→VFS consistency mark clear failed: ${e instanceof Error?e.message:String(e)}`),r(`Pyodide→VFS OPFS flush skipped: clean-boot mark could not be cleared`);return}try{await Ut(e)}catch(e){r(`Pyodide→VFS OPFS flush failed: ${e instanceof Error?e.message:String(e)}`)}try{await Wt(e,n)}catch(e){r(`Pyodide→kernel VFS invalidation failed: ${$(e)}`)}}}const It=new Set([`dev`,`proc`,`lib`,`tmp`,`home`]);function $(e){if(e&&typeof e==`object`){let t=e,n=typeof t.errno==`number`,r=typeof t.code==`string`;if(n||r){let e=typeof t.name==`string`&&t.name?t.name:`Error`,i=typeof t.message==`string`?t.message:``,a=[];n&&a.push(`errno ${t.errno}`),r&&a.push(t.code);let o=a.length?` (${a.join(`, `)})`:``;return i?`${e}: ${i}${o}`:`${e}${o}`}}return e instanceof Error?e.message:String(e)}function Lt(e){let t=e.FS.filesystems,n=t.OPFS_SYNC_FS;return n||(n=Ge(e.FS),t.OPFS_SYNC_FS=n),n}async function Rt(e,t,n,r=()=>{},i={}){let a=[],o=i.skipMountPaths??new Set,s=navigator.storage;if(!s?.getDirectory)return r(`VFS→Pyodide OPFS mount skipped: navigator.storage.getDirectory unavailable`),{mounts:a};let c;try{c=await s.getDirectory()}catch(e){return r(`VFS→Pyodide OPFS mount: getDirectory() failed: ${$(e)}`),{mounts:a}}let l;try{l=await c.getDirectoryHandle(n,{create:!0})}catch(e){return r(`VFS→Pyodide OPFS mount: opening '${n}' failed: ${$(e)}`),{mounts:a}}let u=Lt(e);for(let n of t){if(n===`/`){await zt(e,u,l,o,a,r);continue}if(!o.has(n))try{let t=l;for(let e of n.split(`/`).filter(Boolean))t=await t.getDirectoryHandle(e,{create:!0});await Bt(e,u,n,t,a)}catch(e){r(`VFS→Pyodide OPFS mount '${n}' failed: ${$(e)}`)}}return{mounts:a}}async function zt(e,t,n,r,i,a){try{let o=n;for await(let[n,s]of o){if(s.kind!==`directory`||It.has(n))continue;let o=`/${n}`;if(!r.has(o))try{await Bt(e,t,o,s,i)}catch(e){a(`VFS→Pyodide OPFS mount '${o}' failed: ${$(e)}`)}}}catch(e){a(`VFS→Pyodide OPFS mount '/' failed: ${$(e)}`)}}async function Bt(e,t,n,r,i){try{e.FS.stat(n)}catch{e.FS.mkdirTree(n)}let a=await Ve(r),o=Ye();await o.preload(a);let s={rootHandle:r,prewalk:a,sahProvider:o.provider},c=e.FS.mount(t,s,n),l=c?.mount??{opts:s,mountpoint:n,root:c};i.push({pyPath:n,mount:l,rootHandle:r,flushBuffers:o.flush,getDirtyPaths:o.getDirtyPaths})}function Vt(e){return e.some(e=>e.getDirtyPaths().length>0||Ke(e.mount))}async function Ht(e,t){Vt(e)&&await t.call(`vfs`,`forgetSidecarConsistency`,[])}async function Ut(e){for(let t of e)await qe(t.mount),await t.flushBuffers(t.rootHandle)}async function Wt(e,t){let n=[];for(let t of e)for(let e of t.getDirtyPaths())n.push(t.pyPath===`/`?`/${e}`:`${t.pyPath}/${e}`);n.length>0&&await t.call(`vfs`,`invalidatePaths`,[n])}const Gt={postMessage:(e,t)=>t?self.postMessage(e,t):self.postMessage(e),addEventListener:(e,t)=>self.addEventListener(e,t),removeEventListener:(e,t)=>self.removeEventListener(e,t)};self.addEventListener(`message`,e=>{if(e.data?.type!==`realm-init`)return;let t=e.data;t.kind===`py`&&gt(t,Gt).catch(e=>{let t={type:`realm-error`,message:e instanceof Error?e.message:String(e)};self.postMessage(t)})});export{l as n,c as r,o as t};
@@ -1,3 +1,3 @@
1
- import{n as e,r as t}from"./py-realm-worker-A1ICPvEl.js";var n=Object.defineProperty,r=(e,t)=>n(e,`name`,{value:t,configurable:!0}),i=(t=>typeof e<`u`?e:typeof Proxy<`u`?new Proxy(t,{get:(t,n)=>(typeof e<`u`?e:t)[n]}):t)(function(t){if(typeof e<`u`)return e.apply(this,arguments);throw Error(`Dynamic require of "`+t+`" is not supported`)}),a=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return t=>{for(var n=t.length,r=new Uint8Array((n-(t[n-1]==`=`)-(t[n-2]==`=`))*3/4|0),i=0,a=0;i<n;){var o=e[t.charCodeAt(i++)],s=e[t.charCodeAt(i++)],c=e[t.charCodeAt(i++)],l=e[t.charCodeAt(i++)];r[a++]=o<<2|s>>4,r[a++]=s<<4|c>>2,r[a++]=c<<6|l}return r}})();function o(e){return!isNaN(parseFloat(e))&&isFinite(e)}r(o,`_isNumber`);function s(e){return e.charAt(0).toUpperCase()+e.substring(1)}r(s,`_capitalize`);function c(e){return function(){return this[e]}}r(c,`_getter`);var l=[`isConstructor`,`isEval`,`isNative`,`isToplevel`],u=[`columnNumber`,`lineNumber`],d=[`fileName`,`functionName`,`source`],f=l.concat(u,d,[`args`],[`evalOrigin`]);function p(e){if(e)for(var t=0;t<f.length;t++)e[f[t]]!==void 0&&this[`set`+s(f[t])](e[f[t]])}for(r(p,`StackFrame`),p.prototype={getArgs:r(function(){return this.args},`getArgs`),setArgs:r(function(e){if(Object.prototype.toString.call(e)!==`[object Array]`)throw TypeError(`Args must be an Array`);this.args=e},`setArgs`),getEvalOrigin:r(function(){return this.evalOrigin},`getEvalOrigin`),setEvalOrigin:r(function(e){if(e instanceof p)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new p(e);else throw TypeError(`Eval Origin must be an Object or StackFrame`)},`setEvalOrigin`),toString:r(function(){var e=this.getFileName()||``,t=this.getLineNumber()||``,n=this.getColumnNumber()||``,r=this.getFunctionName()||``;return this.getIsEval()?e?`[eval] (`+e+`:`+t+`:`+n+`)`:`[eval]:`+t+`:`+n:r?r+` (`+e+`:`+t+`:`+n+`)`:e+`:`+t+`:`+n},`toString`)},p.fromString=r(function(e){var t=e.indexOf(`(`),n=e.lastIndexOf(`)`),r=e.substring(0,t),i=e.substring(t+1,n).split(`,`),a=e.substring(n+1);if(a.indexOf(`@`)===0)var o=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(a,``),s=o[1],c=o[2],l=o[3];return new p({functionName:r,args:i||void 0,fileName:s,lineNumber:c||void 0,columnNumber:l||void 0})},`StackFrame$$fromString`),m=0;m<l.length;m++)p.prototype[`get`+s(l[m])]=c(l[m]),p.prototype[`set`+s(l[m])]=function(e){return function(t){this[e]=!!t}}(l[m]);var m;for(h=0;h<u.length;h++)p.prototype[`get`+s(u[h])]=c(u[h]),p.prototype[`set`+s(u[h])]=function(e){return function(t){if(!o(t))throw TypeError(e+` must be a Number`);this[e]=Number(t)}}(u[h]);var h;for(g=0;g<d.length;g++)p.prototype[`get`+s(d[g])]=c(d[g]),p.prototype[`set`+s(d[g])]=function(e){return function(t){this[e]=String(t)}}(d[g]);var g,_=p;function v(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:r(function(t){if(t.stack&&t.stack.match(e))return this.parseV8OrIE(t);if(t.stack)return this.parseFFOrSafari(t);throw Error(`Cannot parse given Error object`)},`ErrorStackParser$$parse`),extractLocation:r(function(e){if(e.indexOf(`:`)===-1)return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,``));return[t[1],t[2]||void 0,t[3]||void 0]},`ErrorStackParser$$extractLocation`),parseV8OrIE:r(function(t){return t.stack.split(`
1
+ import{n as e,r as t}from"./py-realm-worker-CYwLJW9I.js";var n=Object.defineProperty,r=(e,t)=>n(e,`name`,{value:t,configurable:!0}),i=(t=>typeof e<`u`?e:typeof Proxy<`u`?new Proxy(t,{get:(t,n)=>(typeof e<`u`?e:t)[n]}):t)(function(t){if(typeof e<`u`)return e.apply(this,arguments);throw Error(`Dynamic require of "`+t+`" is not supported`)}),a=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return t=>{for(var n=t.length,r=new Uint8Array((n-(t[n-1]==`=`)-(t[n-2]==`=`))*3/4|0),i=0,a=0;i<n;){var o=e[t.charCodeAt(i++)],s=e[t.charCodeAt(i++)],c=e[t.charCodeAt(i++)],l=e[t.charCodeAt(i++)];r[a++]=o<<2|s>>4,r[a++]=s<<4|c>>2,r[a++]=c<<6|l}return r}})();function o(e){return!isNaN(parseFloat(e))&&isFinite(e)}r(o,`_isNumber`);function s(e){return e.charAt(0).toUpperCase()+e.substring(1)}r(s,`_capitalize`);function c(e){return function(){return this[e]}}r(c,`_getter`);var l=[`isConstructor`,`isEval`,`isNative`,`isToplevel`],u=[`columnNumber`,`lineNumber`],d=[`fileName`,`functionName`,`source`],f=l.concat(u,d,[`args`],[`evalOrigin`]);function p(e){if(e)for(var t=0;t<f.length;t++)e[f[t]]!==void 0&&this[`set`+s(f[t])](e[f[t]])}for(r(p,`StackFrame`),p.prototype={getArgs:r(function(){return this.args},`getArgs`),setArgs:r(function(e){if(Object.prototype.toString.call(e)!==`[object Array]`)throw TypeError(`Args must be an Array`);this.args=e},`setArgs`),getEvalOrigin:r(function(){return this.evalOrigin},`getEvalOrigin`),setEvalOrigin:r(function(e){if(e instanceof p)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new p(e);else throw TypeError(`Eval Origin must be an Object or StackFrame`)},`setEvalOrigin`),toString:r(function(){var e=this.getFileName()||``,t=this.getLineNumber()||``,n=this.getColumnNumber()||``,r=this.getFunctionName()||``;return this.getIsEval()?e?`[eval] (`+e+`:`+t+`:`+n+`)`:`[eval]:`+t+`:`+n:r?r+` (`+e+`:`+t+`:`+n+`)`:e+`:`+t+`:`+n},`toString`)},p.fromString=r(function(e){var t=e.indexOf(`(`),n=e.lastIndexOf(`)`),r=e.substring(0,t),i=e.substring(t+1,n).split(`,`),a=e.substring(n+1);if(a.indexOf(`@`)===0)var o=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(a,``),s=o[1],c=o[2],l=o[3];return new p({functionName:r,args:i||void 0,fileName:s,lineNumber:c||void 0,columnNumber:l||void 0})},`StackFrame$$fromString`),m=0;m<l.length;m++)p.prototype[`get`+s(l[m])]=c(l[m]),p.prototype[`set`+s(l[m])]=function(e){return function(t){this[e]=!!t}}(l[m]);var m;for(h=0;h<u.length;h++)p.prototype[`get`+s(u[h])]=c(u[h]),p.prototype[`set`+s(u[h])]=function(e){return function(t){if(!o(t))throw TypeError(e+` must be a Number`);this[e]=Number(t)}}(u[h]);var h;for(g=0;g<d.length;g++)p.prototype[`get`+s(d[g])]=c(d[g]),p.prototype[`set`+s(d[g])]=function(e){return function(t){this[e]=String(t)}}(d[g]);var g,_=p;function v(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:r(function(t){if(t.stack&&t.stack.match(e))return this.parseV8OrIE(t);if(t.stack)return this.parseFFOrSafari(t);throw Error(`Cannot parse given Error object`)},`ErrorStackParser$$parse`),extractLocation:r(function(e){if(e.indexOf(`:`)===-1)return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,``));return[t[1],t[2]||void 0,t[3]||void 0]},`ErrorStackParser$$extractLocation`),parseV8OrIE:r(function(t){return t.stack.split(`
2
2
  `).filter(function(t){return!!t.match(e)},this).map(function(e){e.indexOf(`(eval `)>-1&&(e=e.replace(/eval code/g,`eval`).replace(/(\(eval at [^()]*)|(,.*$)/g,``));var t=e.replace(/^\s+/,``).replace(/\(eval code/g,`(`).replace(/^.*?\s+/,``),n=t.match(/ (\(.+\)$)/);t=n?t.replace(n[0],``):t;var r=this.extractLocation(n?n[1]:t);return new _({functionName:n&&t||void 0,fileName:[`eval`,`<anonymous>`].indexOf(r[0])>-1?void 0:r[0],lineNumber:r[1],columnNumber:r[2],source:e})},this)},`ErrorStackParser$$parseV8OrIE`),parseFFOrSafari:r(function(e){return e.stack.split(`
3
- `).filter(function(e){return!e.match(t)},this).map(function(e){if(e.indexOf(` > eval`)>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,`:$1`)),e.indexOf(`@`)===-1&&e.indexOf(`:`)===-1)return new _({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,n=e.match(t),r=n&&n[1]?n[1]:void 0,i=this.extractLocation(e.replace(t,``));return new _({functionName:r,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:e})},this)},`ErrorStackParser$$parseFFOrSafari`)}}r(v,`ErrorStackParser`);var ee=new v;function y(){return typeof API<`u`&&API!==globalThis.API?API.runtimeEnv:x({IN_BUN:typeof Bun<`u`,IN_DENO:typeof Deno<`u`,IN_NODE:typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`&&!process.browser,IN_SAFARI:typeof navigator==`object`&&typeof navigator.userAgent==`string`&&navigator.userAgent.indexOf(`Chrome`)===-1&&navigator.userAgent.indexOf(`Safari`)>-1,IN_SHELL:typeof read==`function`&&typeof load==`function`,IN_WORKERD:typeof navigator==`object`&&navigator.userAgent?.includes(`Cloudflare-Workers`)})}r(y,`getGlobalRuntimeEnv`);var b=y();function x(e){let t=e.IN_NODE&&typeof module<`u`&&module.exports&&typeof i==`function`&&typeof __dirname==`string`,n=e.IN_NODE&&!t,r=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,a=r&&typeof window<`u`&&typeof window.document<`u`&&typeof document.createElement==`function`&&`sessionStorage`in window&&typeof globalThis.importScripts!=`function`,o=r&&typeof globalThis.WorkerGlobalScope<`u`&&typeof globalThis.self<`u`&&globalThis.self instanceof globalThis.WorkerGlobalScope;if(o&&S())throw Error(`Classic web workers are not supported`);let s={...e,IN_BROWSER:r,IN_BROWSER_MAIN_THREAD:a,IN_BROWSER_WEB_WORKER:o,IN_NODE_COMMONJS:t,IN_NODE_ESM:n};if(!(s.IN_BROWSER_MAIN_THREAD||s.IN_BROWSER_WEB_WORKER||s.IN_NODE||s.IN_SHELL||s.IN_WORKERD))throw Error(`Cannot determine runtime environment: ${JSON.stringify(s)}`);return s}r(x,`calculateDerivedFlags`);function S(){try{return globalThis.importScripts(`data:text/javascript,`),!0}catch{return!1}}r(S,`isClassicWorker`);var C,w,T,E;async function D(){if(!b.IN_NODE||(C=(await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1))).default,T=await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),E=await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),(await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1))).default,w=await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),j=w.sep,typeof i<`u`))return;let e={fs:T,crypto:await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),ws:await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),child_process:await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1))};globalThis.require=function(t){return e[t]}}r(D,`initNodeModules`);function O(e,t){return w.resolve(t||`.`,e)}r(O,`node_resolvePath`);function k(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}r(k,`browser_resolvePath`);var A=b.IN_NODE?O:b.IN_SHELL?r(e=>e,`resolvePath`):k,j;b.IN_NODE||(j=`/`);function M(e,t){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?{response:fetch(e)}:{binary:E.readFile(e).then(e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}}r(M,`node_getBinaryResponse`);function N(e,t){if(e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`))throw Error(`Shell cannot fetch urls`);return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}r(N,`shell_getBinaryResponse`);function P(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}r(P,`browser_getBinaryResponse`);var F=b.IN_NODE?M:b.IN_SHELL?N:P;async function I(e,t){let{response:n,binary:r}=F(e,t);if(r)return r;let i=await n;if(!i.ok)throw Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await i.arrayBuffer())}r(I,`loadBinaryFile`);var te=b.IN_NODE?L:r(async e=>await import(e),`loadScript`);async function L(e){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?await import(e):await import(C.pathToFileURL(e).href)}r(L,`nodeLoadScript`);async function R(e){if(b.IN_NODE){await D();let t=await E.readFile(e,{encoding:`utf8`});return JSON.parse(t)}if(b.IN_SHELL){let t=read(e);return JSON.parse(t)}return await(await fetch(e)).json()}r(R,`loadLockFile`);async function z(){if(b.IN_NODE_COMMONJS)return __dirname;let e;try{throw Error()}catch(t){e=t}let n=ee.parse(e)[0].fileName;if(b.IN_NODE&&!n.startsWith(`file://`)&&(n=`file://${n}`),b.IN_NODE_ESM){let e=await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1));return(await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1))).fileURLToPath(e.dirname(n))}let r=n.lastIndexOf(j);if(r===-1)throw Error(`Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.`);return n.slice(0,r)}r(z,`calculateDirname`);function B(e){return e.substring(0,e.lastIndexOf(`/`)+1)||globalThis.location?.toString()||`.`}r(B,`calculateInstallBaseUrl`);function ne(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:r(function(e){if(!e.opts.fileSystemHandle)throw Error(`opts.fileSystemHandle is required`);return n.mount.apply(null,arguments)},`mount`),syncfs:r(async(e,t,n)=>{try{let r=a.getLocalSet(e),i=await a.getRemoteSet(e),o=t?i:r,s=t?r:i;await a.reconcile(e,o,s),n(null)}catch(e){n(e)}},`syncfs`),getLocalSet:r(e=>{let n=Object.create(null);function a(e){return e!==`.`&&e!==`..`}r(a,`isRealDir`);function o(e){return t=>i.join2(e,t)}r(o,`toAbsolute`);let s=t.readdir(e.mountpoint).filter(a).map(o(e.mountpoint));for(;s.length;){let e=s.pop(),r=t.stat(e);t.isDir(r.mode)&&s.push.apply(s,t.readdir(e).filter(a).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:`local`,entries:n}},`getLocalSet`),getRemoteSet:r(async e=>{let t=Object.create(null),n=await re(e.opts.fileSystemHandle);for(let[r,o]of n)r!==`.`&&(t[i.join2(e.mountpoint,r)]={timestamp:o.kind===`file`?new Date((await o.getFile()).lastModified):new Date,mode:o.kind===`file`?a.FILE_MODE:a.DIR_MODE});return{type:`remote`,entries:t,handles:n}},`getRemoteSet`),loadLocalEntry:r(e=>{let r=t.lookupPath(e,{}).node,i=t.stat(e);if(t.isDir(i.mode))return{timestamp:i.mtime,mode:i.mode};if(t.isFile(i.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:i.mtime,mode:i.mode,contents:r.contents};throw Error(`node type not supported`)},`loadLocalEntry`),storeLocalEntry:r((e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else if(t.isFile(n.mode))t.writeFile(e,n.contents,{canOwn:!0});else throw Error(`node type not supported`);t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},`storeLocalEntry`),removeLocalEntry:r(e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},`removeLocalEntry`),loadRemoteEntry:r(async e=>{if(e.kind===`file`){let t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(t.lastModified)}}if(e.kind===`directory`)return{mode:a.DIR_MODE,timestamp:new Date};throw Error(`unknown kind: `+e.kind)},`loadRemoteEntry`),storeRemoteEntry:r(async(e,n,r)=>{let a=e.get(i.dirname(n)),o=t.isFile(r.mode)?await a.getFileHandle(i.basename(n),{create:!0}):await a.getDirectoryHandle(i.basename(n),{create:!0});if(o.kind===`file`){let e=await o.createWritable();await e.write(r.contents),await e.close()}e.set(n,o)},`storeRemoteEntry`),removeRemoteEntry:r(async(e,t)=>{await e.get(i.dirname(t)).removeEntry(i.basename(t)),e.delete(t)},`removeRemoteEntry`),reconcile:r(async(e,n,r)=>{let o=0,s=[];Object.keys(n.entries).forEach(function(e){let i=n.entries[e],a=r.entries[e];(!a||t.isFile(i.mode)&&i.timestamp.getTime()>a.timestamp.getTime())&&(s.push(e),o++)}),s.sort();let c=[];if(Object.keys(r.entries).forEach(function(e){n.entries[e]||(c.push(e),o++)}),c.sort().reverse(),!o)return;let l=n.type===`remote`?n.handles:r.handles;for(let t of s){let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);if(r.type===`local`){let e=l.get(n),r=await a.loadRemoteEntry(e);a.storeLocalEntry(t,r)}else{let e=a.loadLocalEntry(t);await a.storeRemoteEntry(l,n,e)}}for(let t of c)if(r.type===`local`)a.removeLocalEntry(t);else{let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);await a.removeRemoteEntry(l,n)}},`reconcile`)};e.FS.filesystems.NATIVEFS_ASYNC=a}r(ne,`initializeNativeFS`);var re=r(async e=>{let t=[];async function n(e){for await(let r of e.values())t.push(r),r.kind===`directory`&&await n(r)}r(n,`collect`),await n(e);let i=new Map;i.set(`.`,e);for(let n of t){let t=(await e.resolve(n)).join(`/`);i.set(t,n)}return i},`getFsHandles`),ie=a(`AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECBygCE0pzdl9HZXRFcnJvcl9pbXBvcnQAAA5Kc3ZFcnJvcl9DaGVjawABChMCBwD7AQD7GwsJACAA+xr7FAAL`),ae=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&typeof navigator.maxTouchPoints<`u`&&navigator.maxTouchPoints>1)))try{let e=await WebAssembly.compile(ie);return await WebAssembly.instantiate(e)}catch(e){if(e instanceof WebAssembly.CompileError)return;throw e}}();async function V(){let e=await ae;if(e)return e.exports;let t=Symbol(`error marker`);return{Jsv_GetError_import:r(()=>t,`Jsv_GetError_import`),JsvError_Check:r(e=>e===t,`JsvError_Check`)}}r(V,`getJsvErrorImport`);function H(e){let t={config:e,runtimeEnv:b},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:J(e),print:e.stdout,printErr:e.stderr,onExit(e){n.exitCode=e},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:r(t=>e.indexURL+t,`locateFile`),instantiateWasm:Y(e.indexURL)};return n}r(H,`createSettings`);function U(e){return function(t){try{t.FS.mkdirTree(e)}catch(t){console.error(`Error occurred while making a home directory '${e}':`),console.error(t),console.error(`Using '/' for a home directory instead`),e=`/`}t.FS.chdir(e)}}r(U,`createHomeDirectory`);function W(e){return function(t){Object.assign(t.ENV,e)}}r(W,`setEnvironment`);function G(e){return e?[async t=>{t.addRunDependency(`fsInitHook`);try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency(`fsInitHook`)}}]:[]}r(G,`callFsInitHook`);function K(e){let t=e.HEAPU32[e._Py_Version>>>2];return[t>>>24&255,t>>>16&255,t>>>8&255]}r(K,`computeVersionTuple`);function q(e){let t=I(e);return async e=>{e.API.pyVersionTuple=K(e);let[n,r]=e.API.pyVersionTuple;e.FS.mkdirTree(`/lib`),e.API.sitePackages=`/lib/python${n}.${r}/site-packages`,e.FS.mkdirTree(e.API.sitePackages),e.FS.mkdirTree(`/lib/python${n}.${r}/lib-dynload`),e.addRunDependency(`install-stdlib`);try{let i=await t;e.FS.writeFile(`/lib/python${n}${r}.zip`,i)}catch(e){console.error(`Error occurred while installing the standard library:`),console.error(e)}finally{e.removeRunDependency(`install-stdlib`)}}}r(q,`installStdlib`);function J(e){let t;return t=e.stdLibURL==null?e.indexURL+`python_stdlib.zip`:e.stdLibURL,[q(t),U(e.env.HOME),W(e.env),ne,...G(e.fsInit)]}r(J,`getFileSystemInitializationFuncs`);function Y(e){if(typeof WasmOffsetConverter<`u`)return;let{binary:t,response:n}=F(e+`pyodide.asm.wasm`),r=V();return function(e,i){return async function(){let{Jsv_GetError_import:a,JsvError_Check:o}=await r;e.env.Jsv_GetError_import=a,e.env.JsvError_Check=o;try{let r;r=n?await WebAssembly.instantiateStreaming(n,e):await WebAssembly.instantiate(await t,e);let{instance:a,module:o}=r;i(a,o)}catch(e){console.warn(`wasm instantiation failed!`),console.warn(e)}}(),{}}}r(Y,`getInstantiateWasmFunc`);var oe=`314.0.6`;function X(e){return e===void 0||e.endsWith(`/`)?e:e+`/`}r(X,`withTrailingSlash`);var Z=oe;async function Q(e={}){if(await D(),e.lockFileContents&&e.lockFileURL)throw Error(`Can't pass both lockFileContents and lockFileURL`);let t=e.indexURL||await z();if(t=X(A(t)),e.packageBaseUrl=X(e.packageBaseUrl),e.cdnUrl=X(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v314.0.6/full/`),!e.lockFileContents){let n=e.lockFileURL??t+`pyodide-lock.json`;e.lockFileContents=R(n),e.packageBaseUrl??=B(n)}e.indexURL=t,e.packageCacheDir&&=X(A(e.packageCacheDir));let n={jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:`6f88bdfdf0581f0eab1d84a508b31ab96e83201d2b7fdd1dc653a3079c23a0f5`},r=Object.assign(n,e);return r.env.HOME??=`/home/pyodide`,r.env.PYTHONINSPECT??=`1`,r}r(Q,`initializeConfiguration`);function $(e){let t=H(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}r($,`createEmscriptenSettings`);async function se(e){return e.createPyodideModule?e.createPyodideModule:(await te(`${e.indexURL}pyodide.asm.mjs`)).default}r(se,`loadWasmScript`);async function ce(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,r=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=r.length,r}r(ce,`prepareSnapshot`);async function le(e,t){let n=await e(t);if(t.exitCode!==void 0)throw new n.ExitStatus(t.exitCode);return n}r(le,`instantiatePyodideModule`);function ue(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==`314.0.6`&&t.checkAPIVersion)throw Error(`Pyodide version does not match: '${Z}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=e=>{throw e.endsWith(`.so`)?Error(`Failed to find dynamic library "${e}"`):Error(`Unexpected call to locateFile("${e}")`)}}r(ue,`configureAPI`);function de(e,t,n){let r=e.API,i;return t&&(i=r.restoreSnapshot(t)),r.finalizeBootstrap(i,n._snapshotDeserializer)}r(de,`bootstrapPyodide`);async function fe(e,t){let n=e._api;return n.sys.path.insert(0,``),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}r(fe,`finalizeSetup`);async function pe(e={}){let t=await Q(e),n=$(t),r=await se(t),i=await ce(t,n),a=await le(r,n);return ue(a,t),await fe(de(a,i,t),t)}r(pe,`loadPyodide`);export{pe as loadPyodide,Z as version};
3
+ `).filter(function(e){return!e.match(t)},this).map(function(e){if(e.indexOf(` > eval`)>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,`:$1`)),e.indexOf(`@`)===-1&&e.indexOf(`:`)===-1)return new _({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,n=e.match(t),r=n&&n[1]?n[1]:void 0,i=this.extractLocation(e.replace(t,``));return new _({functionName:r,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:e})},this)},`ErrorStackParser$$parseFFOrSafari`)}}r(v,`ErrorStackParser`);var ee=new v;function y(){return typeof API<`u`&&API!==globalThis.API?API.runtimeEnv:x({IN_BUN:typeof Bun<`u`,IN_DENO:typeof Deno<`u`,IN_NODE:typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`&&!process.browser,IN_SAFARI:typeof navigator==`object`&&typeof navigator.userAgent==`string`&&navigator.userAgent.indexOf(`Chrome`)===-1&&navigator.userAgent.indexOf(`Safari`)>-1,IN_SHELL:typeof read==`function`&&typeof load==`function`,IN_WORKERD:typeof navigator==`object`&&navigator.userAgent?.includes(`Cloudflare-Workers`)})}r(y,`getGlobalRuntimeEnv`);var b=y();function x(e){let t=e.IN_NODE&&typeof module<`u`&&module.exports&&typeof i==`function`&&typeof __dirname==`string`,n=e.IN_NODE&&!t,r=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,a=r&&typeof window<`u`&&typeof window.document<`u`&&typeof document.createElement==`function`&&`sessionStorage`in window&&typeof globalThis.importScripts!=`function`,o=r&&typeof globalThis.WorkerGlobalScope<`u`&&typeof globalThis.self<`u`&&globalThis.self instanceof globalThis.WorkerGlobalScope;if(o&&S())throw Error(`Classic web workers are not supported`);let s={...e,IN_BROWSER:r,IN_BROWSER_MAIN_THREAD:a,IN_BROWSER_WEB_WORKER:o,IN_NODE_COMMONJS:t,IN_NODE_ESM:n};if(!(s.IN_BROWSER_MAIN_THREAD||s.IN_BROWSER_WEB_WORKER||s.IN_NODE||s.IN_SHELL||s.IN_WORKERD))throw Error(`Cannot determine runtime environment: ${JSON.stringify(s)}`);return s}r(x,`calculateDerivedFlags`);function S(){try{return globalThis.importScripts(`data:text/javascript,`),!0}catch{return!1}}r(S,`isClassicWorker`);var C,w,T,E;async function D(){if(!b.IN_NODE||(C=(await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1))).default,T=await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),E=await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),(await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1))).default,w=await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),j=w.sep,typeof i<`u`))return;let e={fs:T,crypto:await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),ws:await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),child_process:await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1))};globalThis.require=function(t){return e[t]}}r(D,`initNodeModules`);function O(e,t){return w.resolve(t||`.`,e)}r(O,`node_resolvePath`);function k(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}r(k,`browser_resolvePath`);var A=b.IN_NODE?O:b.IN_SHELL?r(e=>e,`resolvePath`):k,j;b.IN_NODE||(j=`/`);function M(e,t){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?{response:fetch(e)}:{binary:E.readFile(e).then(e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}}r(M,`node_getBinaryResponse`);function N(e,t){if(e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`))throw Error(`Shell cannot fetch urls`);return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}r(N,`shell_getBinaryResponse`);function P(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}r(P,`browser_getBinaryResponse`);var F=b.IN_NODE?M:b.IN_SHELL?N:P;async function I(e,t){let{response:n,binary:r}=F(e,t);if(r)return r;let i=await n;if(!i.ok)throw Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await i.arrayBuffer())}r(I,`loadBinaryFile`);var te=b.IN_NODE?L:r(async e=>await import(e),`loadScript`);async function L(e){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?await import(e):await import(C.pathToFileURL(e).href)}r(L,`nodeLoadScript`);async function R(e){if(b.IN_NODE){await D();let t=await E.readFile(e,{encoding:`utf8`});return JSON.parse(t)}if(b.IN_SHELL){let t=read(e);return JSON.parse(t)}return await(await fetch(e)).json()}r(R,`loadLockFile`);async function z(){if(b.IN_NODE_COMMONJS)return __dirname;let e;try{throw Error()}catch(t){e=t}let n=ee.parse(e)[0].fileName;if(b.IN_NODE&&!n.startsWith(`file://`)&&(n=`file://${n}`),b.IN_NODE_ESM){let e=await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1));return(await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1))).fileURLToPath(e.dirname(n))}let r=n.lastIndexOf(j);if(r===-1)throw Error(`Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.`);return n.slice(0,r)}r(z,`calculateDirname`);function B(e){return e.substring(0,e.lastIndexOf(`/`)+1)||globalThis.location?.toString()||`.`}r(B,`calculateInstallBaseUrl`);function ne(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:r(function(e){if(!e.opts.fileSystemHandle)throw Error(`opts.fileSystemHandle is required`);return n.mount.apply(null,arguments)},`mount`),syncfs:r(async(e,t,n)=>{try{let r=a.getLocalSet(e),i=await a.getRemoteSet(e),o=t?i:r,s=t?r:i;await a.reconcile(e,o,s),n(null)}catch(e){n(e)}},`syncfs`),getLocalSet:r(e=>{let n=Object.create(null);function a(e){return e!==`.`&&e!==`..`}r(a,`isRealDir`);function o(e){return t=>i.join2(e,t)}r(o,`toAbsolute`);let s=t.readdir(e.mountpoint).filter(a).map(o(e.mountpoint));for(;s.length;){let e=s.pop(),r=t.stat(e);t.isDir(r.mode)&&s.push.apply(s,t.readdir(e).filter(a).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:`local`,entries:n}},`getLocalSet`),getRemoteSet:r(async e=>{let t=Object.create(null),n=await re(e.opts.fileSystemHandle);for(let[r,o]of n)r!==`.`&&(t[i.join2(e.mountpoint,r)]={timestamp:o.kind===`file`?new Date((await o.getFile()).lastModified):new Date,mode:o.kind===`file`?a.FILE_MODE:a.DIR_MODE});return{type:`remote`,entries:t,handles:n}},`getRemoteSet`),loadLocalEntry:r(e=>{let r=t.lookupPath(e,{}).node,i=t.stat(e);if(t.isDir(i.mode))return{timestamp:i.mtime,mode:i.mode};if(t.isFile(i.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:i.mtime,mode:i.mode,contents:r.contents};throw Error(`node type not supported`)},`loadLocalEntry`),storeLocalEntry:r((e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else if(t.isFile(n.mode))t.writeFile(e,n.contents,{canOwn:!0});else throw Error(`node type not supported`);t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},`storeLocalEntry`),removeLocalEntry:r(e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},`removeLocalEntry`),loadRemoteEntry:r(async e=>{if(e.kind===`file`){let t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(t.lastModified)}}if(e.kind===`directory`)return{mode:a.DIR_MODE,timestamp:new Date};throw Error(`unknown kind: `+e.kind)},`loadRemoteEntry`),storeRemoteEntry:r(async(e,n,r)=>{let a=e.get(i.dirname(n)),o=t.isFile(r.mode)?await a.getFileHandle(i.basename(n),{create:!0}):await a.getDirectoryHandle(i.basename(n),{create:!0});if(o.kind===`file`){let e=await o.createWritable();await e.write(r.contents),await e.close()}e.set(n,o)},`storeRemoteEntry`),removeRemoteEntry:r(async(e,t)=>{await e.get(i.dirname(t)).removeEntry(i.basename(t)),e.delete(t)},`removeRemoteEntry`),reconcile:r(async(e,n,r)=>{let o=0,s=[];Object.keys(n.entries).forEach(function(e){let i=n.entries[e],a=r.entries[e];(!a||t.isFile(i.mode)&&i.timestamp.getTime()>a.timestamp.getTime())&&(s.push(e),o++)}),s.sort();let c=[];if(Object.keys(r.entries).forEach(function(e){n.entries[e]||(c.push(e),o++)}),c.sort().reverse(),!o)return;let l=n.type===`remote`?n.handles:r.handles;for(let t of s){let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);if(r.type===`local`){let e=l.get(n),r=await a.loadRemoteEntry(e);a.storeLocalEntry(t,r)}else{let e=a.loadLocalEntry(t);await a.storeRemoteEntry(l,n,e)}}for(let t of c)if(r.type===`local`)a.removeLocalEntry(t);else{let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);await a.removeRemoteEntry(l,n)}},`reconcile`)};e.FS.filesystems.NATIVEFS_ASYNC=a}r(ne,`initializeNativeFS`);var re=r(async e=>{let t=[];async function n(e){for await(let r of e.values())t.push(r),r.kind===`directory`&&await n(r)}r(n,`collect`),await n(e);let i=new Map;i.set(`.`,e);for(let n of t){let t=(await e.resolve(n)).join(`/`);i.set(t,n)}return i},`getFsHandles`),ie=a(`AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECBygCE0pzdl9HZXRFcnJvcl9pbXBvcnQAAA5Kc3ZFcnJvcl9DaGVjawABChMCBwD7AQD7GwsJACAA+xr7FAAL`),ae=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&typeof navigator.maxTouchPoints<`u`&&navigator.maxTouchPoints>1)))try{let e=await WebAssembly.compile(ie);return await WebAssembly.instantiate(e)}catch(e){if(e instanceof WebAssembly.CompileError)return;throw e}}();async function V(){let e=await ae;if(e)return e.exports;let t=Symbol(`error marker`);return{Jsv_GetError_import:r(()=>t,`Jsv_GetError_import`),JsvError_Check:r(e=>e===t,`JsvError_Check`)}}r(V,`getJsvErrorImport`);function H(e){let t={config:e,runtimeEnv:b},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:J(e),print:e.stdout,printErr:e.stderr,onExit(e){n.exitCode=e},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:r(t=>e.indexURL+t,`locateFile`),instantiateWasm:Y(e.indexURL)};return n}r(H,`createSettings`);function U(e){return function(t){try{t.FS.mkdirTree(e)}catch(t){console.error(`Error occurred while making a home directory '${e}':`),console.error(t),console.error(`Using '/' for a home directory instead`),e=`/`}t.FS.chdir(e)}}r(U,`createHomeDirectory`);function W(e){return function(t){Object.assign(t.ENV,e)}}r(W,`setEnvironment`);function G(e){return e?[async t=>{t.addRunDependency(`fsInitHook`);try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency(`fsInitHook`)}}]:[]}r(G,`callFsInitHook`);function K(e){let t=e.HEAPU32[e._Py_Version>>>2];return[t>>>24&255,t>>>16&255,t>>>8&255]}r(K,`computeVersionTuple`);function q(e){let t=I(e);return async e=>{e.API.pyVersionTuple=K(e);let[n,r]=e.API.pyVersionTuple;e.FS.mkdirTree(`/lib`),e.API.sitePackages=`/lib/python${n}.${r}/site-packages`,e.FS.mkdirTree(e.API.sitePackages),e.FS.mkdirTree(`/lib/python${n}.${r}/lib-dynload`),e.addRunDependency(`install-stdlib`);try{let i=await t;e.FS.writeFile(`/lib/python${n}${r}.zip`,i)}catch(e){console.error(`Error occurred while installing the standard library:`),console.error(e)}finally{e.removeRunDependency(`install-stdlib`)}}}r(q,`installStdlib`);function J(e){let t;return t=e.stdLibURL==null?e.indexURL+`python_stdlib.zip`:e.stdLibURL,[q(t),U(e.env.HOME),W(e.env),ne,...G(e.fsInit)]}r(J,`getFileSystemInitializationFuncs`);function Y(e){if(typeof WasmOffsetConverter<`u`)return;let{binary:t,response:n}=F(e+`pyodide.asm.wasm`),r=V();return function(e,i){return async function(){let{Jsv_GetError_import:a,JsvError_Check:o}=await r;e.env.Jsv_GetError_import=a,e.env.JsvError_Check=o;try{let r;r=n?await WebAssembly.instantiateStreaming(n,e):await WebAssembly.instantiate(await t,e);let{instance:a,module:o}=r;i(a,o)}catch(e){console.warn(`wasm instantiation failed!`),console.warn(e)}}(),{}}}r(Y,`getInstantiateWasmFunc`);var oe=`314.0.6`;function X(e){return e===void 0||e.endsWith(`/`)?e:e+`/`}r(X,`withTrailingSlash`);var Z=oe;async function Q(e={}){if(await D(),e.lockFileContents&&e.lockFileURL)throw Error(`Can't pass both lockFileContents and lockFileURL`);let t=e.indexURL||await z();if(t=X(A(t)),e.packageBaseUrl=X(e.packageBaseUrl),e.cdnUrl=X(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v314.0.6/full/`),!e.lockFileContents){let n=e.lockFileURL??t+`pyodide-lock.json`;e.lockFileContents=R(n),e.packageBaseUrl??=B(n)}e.indexURL=t,e.packageCacheDir&&=X(A(e.packageCacheDir));let n={jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:`6f88bdfdf0581f0eab1d84a508b31ab96e83201d2b7fdd1dc653a3079c23a0f5`},r=Object.assign(n,e);return r.env.HOME??=`/home/pyodide`,r.env.PYTHONINSPECT??=`1`,r}r(Q,`initializeConfiguration`);function $(e){let t=H(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}r($,`createEmscriptenSettings`);async function se(e){return e.createPyodideModule?e.createPyodideModule:(await te(`${e.indexURL}pyodide.asm.mjs`)).default}r(se,`loadWasmScript`);async function ce(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,r=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=r.length,r}r(ce,`prepareSnapshot`);async function le(e,t){let n=await e(t);if(t.exitCode!==void 0)throw new n.ExitStatus(t.exitCode);return n}r(le,`instantiatePyodideModule`);function ue(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==`314.0.6`&&t.checkAPIVersion)throw Error(`Pyodide version does not match: '${Z}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=e=>{throw e.endsWith(`.so`)?Error(`Failed to find dynamic library "${e}"`):Error(`Unexpected call to locateFile("${e}")`)}}r(ue,`configureAPI`);function de(e,t,n){let r=e.API,i;return t&&(i=r.restoreSnapshot(t)),r.finalizeBootstrap(i,n._snapshotDeserializer)}r(de,`bootstrapPyodide`);async function fe(e,t){let n=e._api;return n.sys.path.insert(0,``),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}r(fe,`finalizeSetup`);async function pe(e={}){let t=await Q(e),n=$(t),r=await se(t),i=await ce(t,n),a=await le(r,n);return ue(a,t),await fe(de(a,i,t),t)}r(pe,`loadPyodide`);export{pe as loadPyodide,Z as version};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./compat-qQM4gjF_.js";import{t as n}from"./logger-DDBAeTLF.js";import{E as r,O as i,g as a,k as o}from"./account-store-SI8RQbm0.js";import{t as s}from"./llm-session-id-bZQs6gBN.js";import{i as c,t as l}from"./icons-jrIi5FYk.js";var u=e({lucideIconNames:()=>h,pickLucideIcon:()=>g,quickLabel:()=>f}),d=n(`quick-llm`);async function f(e){let n=a();if(!n)return d.debug(`No API key for active provider — skipping`),null;let r=o(),s=i(),c;if(c=e.modelId?b(r,e.modelId)??b(r,s):_(r,s),!c)return d.debug(`No model available for provider`,{providerId:r}),null;let l={role:`user`,content:e.prompt,timestamp:Date.now()},u={};c.provider===`adobe`&&(u[`X-Session-Id`]=S());try{let r=(await t(c,{systemPrompt:e.system,messages:[l]},{apiKey:n,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(u).length>0?u:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return r.length>0?r:null}catch(e){return d.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}var p=null;function m(e){return e.replace(/([A-Z]+)([A-Z][a-z])/g,`$1-$2`).replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/([A-Za-z])(\d)/g,`$1-$2`).toLowerCase()}function h(){return p||=Object.keys(c).map(m).sort(),p}async function g(e){let t=h(),n=await(e.labelFn??f)({system:`You pick ONE icon for a UI element. Respond with exactly one icon name from the provided list — lowercase, no quotes, no punctuation, nothing else.`,prompt:`Pick the single most fitting icon for: ${e.subject}\n\nValid icon names:\n${t.join(` `)}`,maxTokens:16,temperature:.2,signal:e.signal});if(!n)return null;let r=n.trim().toLowerCase().replace(/[^a-z0-9-]/g,``);return l(r)?r:null}function _(e,t){let n=r(e);if(n.length===0)return;let i=n.find(e=>e.id===t)??n[0],a=y(i.id),o=n.filter(e=>v(e,i,a));return o.length===0?i:(o.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),o[0])}function v(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function y(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function b(e,t){return r(e).find(e=>e.id===t)}var x=`ui-quick-llm`;function S(){return s(x)}export{u as n,f as t};
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./compat-qQM4gjF_.js";import{t as n}from"./logger-DDBAeTLF.js";import{E as r,O as i,g as a,k as o}from"./account-store-Bbb4tBjB.js";import{t as s}from"./llm-session-id-bZQs6gBN.js";import{i as c,t as l}from"./icons-jrIi5FYk.js";var u=e({lucideIconNames:()=>h,pickLucideIcon:()=>g,quickLabel:()=>f}),d=n(`quick-llm`);async function f(e){let n=a();if(!n)return d.debug(`No API key for active provider — skipping`),null;let r=o(),s=i(),c;if(c=e.modelId?b(r,e.modelId)??b(r,s):_(r,s),!c)return d.debug(`No model available for provider`,{providerId:r}),null;let l={role:`user`,content:e.prompt,timestamp:Date.now()},u={};c.provider===`adobe`&&(u[`X-Session-Id`]=S());try{let r=(await t(c,{systemPrompt:e.system,messages:[l]},{apiKey:n,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(u).length>0?u:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return r.length>0?r:null}catch(e){return d.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}var p=null;function m(e){return e.replace(/([A-Z]+)([A-Z][a-z])/g,`$1-$2`).replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/([A-Za-z])(\d)/g,`$1-$2`).toLowerCase()}function h(){return p||=Object.keys(c).map(m).sort(),p}async function g(e){let t=h(),n=await(e.labelFn??f)({system:`You pick ONE icon for a UI element. Respond with exactly one icon name from the provided list — lowercase, no quotes, no punctuation, nothing else.`,prompt:`Pick the single most fitting icon for: ${e.subject}\n\nValid icon names:\n${t.join(` `)}`,maxTokens:16,temperature:.2,signal:e.signal});if(!n)return null;let r=n.trim().toLowerCase().replace(/[^a-z0-9-]/g,``);return l(r)?r:null}function _(e,t){let n=r(e);if(n.length===0)return;let i=n.find(e=>e.id===t)??n[0],a=y(i.id),o=n.filter(e=>v(e,i,a));return o.length===0?i:(o.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),o[0])}function v(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function y(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function b(e,t){return r(e).find(e=>e.id===t)}var x=`ui-quick-llm`;function S(){return s(x)}export{u as n,f as t};