just-bash 2.7.2 → 2.8.1

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 (92) hide show
  1. package/README.md +19 -1
  2. package/dist/Bash.d.ts +6 -0
  3. package/dist/banned-patterns-test.d.ts +8 -0
  4. package/dist/bin/chunks/awk2-OKD2P6CM.js +21 -0
  5. package/dist/bin/{shell/chunks/chunk-VHH2M5JC.js → chunks/chunk-CQZVMYQ3.js} +2 -2
  6. package/dist/bin/chunks/chunk-G43H2WGH.js +17 -0
  7. package/dist/bin/chunks/chunk-OBI37ZY4.js +9 -0
  8. package/dist/bin/{shell/chunks/chunk-XI5LBYFX.js → chunks/chunk-W2KVOOMM.js} +1 -1
  9. package/dist/bin/chunks/{expansion-LVCGISX6.js → expansion-D4M4UY4T.js} +1 -1
  10. package/dist/bin/chunks/{file-6PCTL3MH.js → file-MWSA2WYI.js} +12 -12
  11. package/dist/bin/chunks/{grep-X7UU5FD6.js → grep-BD56656Z.js} +1 -1
  12. package/dist/bin/chunks/help-L43ENI4H.js +16 -0
  13. package/dist/bin/{shell/chunks/jq-QR3PX7FE.js → chunks/jq-TJPN2INT.js} +1 -1
  14. package/dist/bin/chunks/{md5sum-2VAAFCTS.js → md5sum-VHPDBIVV.js} +1 -1
  15. package/dist/bin/chunks/{printf-XPBSFXJE.js → printf-4W7NDLLV.js} +1 -1
  16. package/dist/bin/{shell/chunks/rg-RSJPHAP5.js → chunks/rg-IZR5557M.js} +9 -9
  17. package/dist/bin/{shell/chunks/sed-356P4DZB.js → chunks/sed-E4QAUCYQ.js} +1 -1
  18. package/dist/bin/chunks/{sha1sum-67P4ME4N.js → sha1sum-4SVNPPXZ.js} +1 -1
  19. package/dist/bin/{shell/chunks/sha256sum-MV3WQ4QF.js → chunks/sha256sum-BM3AFTIE.js} +1 -1
  20. package/dist/bin/chunks/sort-QF3YLXRW.js +16 -0
  21. package/dist/bin/chunks/{split-JJFZRWRC.js → split-7UP7EATZ.js} +1 -1
  22. package/dist/bin/{shell/chunks/tr-FMT6JWLE.js → chunks/tr-IAUNBQKH.js} +3 -3
  23. package/dist/bin/chunks/xan-OR7RSXSZ.js +140 -0
  24. package/dist/bin/chunks/{yq-T255J4ZP.js → yq-WS7WDP36.js} +1 -1
  25. package/dist/bin/just-bash.js +195 -194
  26. package/dist/bin/shell/chunks/awk2-OKD2P6CM.js +21 -0
  27. package/dist/bin/{chunks/chunk-VHH2M5JC.js → shell/chunks/chunk-CQZVMYQ3.js} +2 -2
  28. package/dist/bin/shell/chunks/chunk-G43H2WGH.js +17 -0
  29. package/dist/bin/shell/chunks/chunk-OBI37ZY4.js +9 -0
  30. package/dist/bin/{chunks/chunk-XI5LBYFX.js → shell/chunks/chunk-W2KVOOMM.js} +1 -1
  31. package/dist/bin/shell/chunks/{expansion-LVCGISX6.js → expansion-D4M4UY4T.js} +1 -1
  32. package/dist/bin/shell/chunks/{file-6PCTL3MH.js → file-MWSA2WYI.js} +12 -12
  33. package/dist/bin/shell/chunks/{grep-X7UU5FD6.js → grep-BD56656Z.js} +1 -1
  34. package/dist/bin/shell/chunks/help-L43ENI4H.js +16 -0
  35. package/dist/bin/{chunks/jq-QR3PX7FE.js → shell/chunks/jq-TJPN2INT.js} +1 -1
  36. package/dist/bin/shell/chunks/{md5sum-2VAAFCTS.js → md5sum-VHPDBIVV.js} +1 -1
  37. package/dist/bin/shell/chunks/{printf-XPBSFXJE.js → printf-4W7NDLLV.js} +1 -1
  38. package/dist/bin/{chunks/rg-RSJPHAP5.js → shell/chunks/rg-IZR5557M.js} +9 -9
  39. package/dist/bin/{chunks/sed-356P4DZB.js → shell/chunks/sed-E4QAUCYQ.js} +1 -1
  40. package/dist/bin/shell/chunks/{sha1sum-67P4ME4N.js → sha1sum-4SVNPPXZ.js} +1 -1
  41. package/dist/bin/{chunks/sha256sum-MV3WQ4QF.js → shell/chunks/sha256sum-BM3AFTIE.js} +1 -1
  42. package/dist/bin/shell/chunks/sort-QF3YLXRW.js +16 -0
  43. package/dist/bin/shell/chunks/{split-JJFZRWRC.js → split-7UP7EATZ.js} +1 -1
  44. package/dist/bin/{chunks/tr-FMT6JWLE.js → shell/chunks/tr-IAUNBQKH.js} +3 -3
  45. package/dist/bin/shell/chunks/xan-OR7RSXSZ.js +140 -0
  46. package/dist/bin/shell/chunks/{yq-T255J4ZP.js → yq-WS7WDP36.js} +1 -1
  47. package/dist/bin/shell/shell.js +194 -194
  48. package/dist/bundle/browser.js +420 -420
  49. package/dist/bundle/chunks/awk2-YNEKUV4T.js +20 -0
  50. package/dist/bundle/chunks/chunk-EIZGF4BS.js +8 -0
  51. package/dist/bundle/chunks/chunk-VLGZJRPG.js +16 -0
  52. package/dist/bundle/chunks/{chunk-GMMICOEF.js → chunk-ZRCBN2U4.js} +2 -2
  53. package/dist/bundle/chunks/{chunk-PHXIZ5A4.js → chunk-ZWYFK7P5.js} +1 -1
  54. package/dist/bundle/chunks/{expansion-OP223NMV.js → expansion-6T6M7TZI.js} +1 -1
  55. package/dist/bundle/chunks/{file-NQP3CKRV.js → file-APPTAFMI.js} +12 -12
  56. package/dist/bundle/chunks/{grep-F7ILPL2H.js → grep-UTH3KDWL.js} +1 -1
  57. package/dist/bundle/chunks/help-UD3E73G5.js +15 -0
  58. package/dist/bundle/chunks/{jq-RIXCOULU.js → jq-2LEQ2SZJ.js} +1 -1
  59. package/dist/bundle/chunks/{md5sum-KLHZSRUA.js → md5sum-TGZPGVOK.js} +1 -1
  60. package/dist/bundle/chunks/{printf-OAPYPRGV.js → printf-4U5V2VHK.js} +1 -1
  61. package/dist/bundle/chunks/{rg-O3ZIRBAJ.js → rg-JNKRPEYR.js} +9 -9
  62. package/dist/bundle/chunks/{sed-P5OTD3EL.js → sed-4K5HXNXE.js} +1 -1
  63. package/dist/bundle/chunks/{sha1sum-WKWTIZGQ.js → sha1sum-37LOTSQP.js} +1 -1
  64. package/dist/bundle/chunks/{sha256sum-IUVNMBTA.js → sha256sum-I4J5BPZA.js} +1 -1
  65. package/dist/bundle/chunks/sort-LT2PE47K.js +15 -0
  66. package/dist/bundle/chunks/{split-YBTFW7MT.js → split-LGSGJHV5.js} +1 -1
  67. package/dist/bundle/chunks/{tr-P43NRVKL.js → tr-UJSEBPIQ.js} +3 -3
  68. package/dist/bundle/chunks/xan-I4Y5DD3C.js +139 -0
  69. package/dist/bundle/chunks/{yq-6SPP5BHS.js → yq-6RVO6I5Q.js} +1 -1
  70. package/dist/bundle/index.js +197 -197
  71. package/dist/commands/awk/builtins.d.ts +1 -1
  72. package/dist/commands/registry.d.ts +15 -3
  73. package/dist/index.d.ts +2 -2
  74. package/package.json +3 -2
  75. package/dist/bin/chunks/awk2-TV3KCXON.js +0 -21
  76. package/dist/bin/chunks/chunk-GANRM5LO.js +0 -17
  77. package/dist/bin/chunks/chunk-Y5QKO4KO.js +0 -9
  78. package/dist/bin/chunks/help-7C5JICNL.js +0 -16
  79. package/dist/bin/chunks/sort-KUHOCH5S.js +0 -16
  80. package/dist/bin/chunks/xan-UZG3SZON.js +0 -140
  81. package/dist/bin/shell/chunks/awk2-TV3KCXON.js +0 -21
  82. package/dist/bin/shell/chunks/chunk-GANRM5LO.js +0 -17
  83. package/dist/bin/shell/chunks/chunk-Y5QKO4KO.js +0 -9
  84. package/dist/bin/shell/chunks/help-7C5JICNL.js +0 -16
  85. package/dist/bin/shell/chunks/sort-KUHOCH5S.js +0 -16
  86. package/dist/bin/shell/chunks/xan-UZG3SZON.js +0 -140
  87. package/dist/bundle/chunks/awk2-PTU7M2NS.js +0 -20
  88. package/dist/bundle/chunks/chunk-GFLIVSUW.js +0 -8
  89. package/dist/bundle/chunks/chunk-TMKMSBKB.js +0 -16
  90. package/dist/bundle/chunks/help-75YOGKM4.js +0 -15
  91. package/dist/bundle/chunks/sort-EJUT5LXD.js +0 -15
  92. package/dist/bundle/chunks/xan-HKCQ46BH.js +0 -139
@@ -1,39 +1,39 @@
1
- import{B as tn,C as sn,D as se,E as Ie,F as K,G as ue,H as ut,I as nn,J as I,K as rn,L as an,M as me,N as qt,O as dt,P as V,a as qs,b as Zs,c as Gs,d as ct,e as Z,f as W,g as he,h as Q,i as pe,j as Ce,k as Vt,l as ft,m as Xs,n as Bt,o as Ks,p as oe,q as Ee,r as Ys,s as Qs,t as Ht,u as jt,v as ke,w as Js,x as en,y as fe,z as Ut}from"./chunks/chunk-GMMICOEF.js";import{a as Ne,b as de}from"./chunks/chunk-OJDRYQWQ.js";import{a as re,b as ie,c as te,d as ae,e as js,f as z,g as Te,h as at,i as ot,j as Us,k as ee,l as _e,m as lt,n as ce}from"./chunks/chunk-PSW6BMXW.js";import{a as Ke}from"./chunks/chunk-YNYSPYQ5.js";import"./chunks/chunk-NUFRM6SI.js";import{a as ve}from"./chunks/chunk-44UOCSGV.js";import"./chunks/chunk-DXB73IDG.js";var be=[{name:"echo",load:async()=>(await import("./chunks/echo-6S7WE7XB.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-GPKR7D6K.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-OAPYPRGV.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-PUJHEPXS.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-SF2UE4KB.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-DU6C7ZEO.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-TDTEBHHI.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-MJFRIDNT.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-NJSENVKC.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-JPBZPM4O.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-Y7YB677N.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-ODWUR7E6.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-S4NVAMC4.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-EM4O3U4P.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-SA7P5NJ7.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-52LRAWXT.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-VDPK3LVS.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-IOLJTP7U.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-F7ILPL2H.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-F7ILPL2H.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-F7ILPL2H.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-O3ZIRBAJ.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-P5OTD3EL.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-PTU7M2NS.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-EJUT5LXD.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-XBP4SJA3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-AXQM7FFF.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-NVKWEAZF.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-QAP6Y75J.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-P43NRVKL.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-FKUV5GH5.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-KWQGFZH5.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-6CFXIPYZ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-VSTNOVF5.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-I7A2VXFD.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-LRU5XCFP.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-YBTFW7MT.js")).split},{name:"column",load:async()=>(await import("./chunks/column-R6OLMEUA.js")).column},{name:"join",load:async()=>(await import("./chunks/join-X3QYPZUA.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-4KHTWVWB.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-WTVSUXL3.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-CFA5ZIGT.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-YPJLCQYA.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-UFVZH4SS.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-T4JUAAB2.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-M3AXY56V.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-M3AXY56V.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-TMBGOQO6.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-4FRA6OJ7.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-VT2LJIDX.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-RIXCOULU.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-2JFR3HGT.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-ELUS3RW7.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-PN3CMG7K.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-AK4QE4WR.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-X3X3N6IE.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-EGF4KTWV.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-5VRIVQYP.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-YSFDPKPV.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-KLHZSRUA.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-WKWTIZGQ.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-IUVNMBTA.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-NQP3CKRV.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-ZK6GQVSL.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-75YOGKM4.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-GF77XMJD.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-2X4JLF4W.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-NWR32CGF.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-YUDAIS32.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-3FPDPLWJ.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(be.push({name:"tar",load:async()=>(await import("./chunks/tar-5V4PGBFL.js")).tarCommand}),be.push({name:"yq",load:async()=>(await import("./chunks/yq-6SPP5BHS.js")).yqCommand}),be.push({name:"xan",load:async()=>(await import("./chunks/xan-HKCQ46BH.js")).xanCommand}),be.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-5QVZOGER.js")).sqlite3Command}),be.push({name:"python3",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).python3Command}),be.push({name:"python",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).pythonCommand}));var ln=[{name:"curl",load:async()=>(await import("./chunks/curl-QDCXHQMX.js")).curlCommand}],on=new Map;function cn(e){return{name:e.name,async execute(t,s){let n=on.get(e.name);return n||(n=await e.load(),on.set(e.name,n)),n.execute(t,s)}}}function Mr(){return be.map(e=>e.name)}function Wr(){return ln.map(e=>e.name)}function fn(e){return(e?be.filter(s=>e.includes(s.name)):be).map(cn)}function un(){return ln.map(cn)}function dn(e){return"load"in e&&typeof e.load=="function"}function zr(e,t){return{name:e,execute:t}}function hn(e){let t=null;return{name:e.name,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var Vr=new TextEncoder,Br=new TextDecoder;function $e(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)s[n/2]=parseInt(e.slice(n,n+2),16);return s}return t==="binary"||t==="latin1"?Uint8Array.from(e,s=>s.charCodeAt(0)):Vr.encode(e)}function Fe(e,t){return t==="base64"?btoa(String.fromCharCode(...e)):t==="hex"?Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join(""):t==="binary"||t==="latin1"?String.fromCharCode(...e):Br.decode(e)}function le(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var ht=new TextEncoder;function Hr(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var Se=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,n]of Object.entries(t))Hr(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,n,r){let i=this.normalizePath(t);this.ensureParentDirs(i);let a=le(n),o=$e(s,a);this.data.set(i,{type:"file",content:o,mode:r?.mode??420,mtime:r?.mtime??new Date})}async readFile(t,s){let n=await this.readFileBuffer(t),r=le(s);return Fe(n,r)}async readFileBuffer(t){let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content instanceof Uint8Array?n.content:ht.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){let r=this.normalizePath(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let a=le(n),o=$e(s,a);if(i?.type==="file"){let c=i.content instanceof Uint8Array?i.content:ht.encode(i.content),l=new Uint8Array(c.length+o.length);l.set(c),l.set(o,c.length),this.data.set(r,{type:"file",content:l,mode:i.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}async exists(t){try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=0;return n.type==="file"&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=ht.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}async lstat(t){let s=this.resolveIntermediateSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||new Date};let r=0;return n.type==="file"&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=ht.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let a=0;a<n.length-1;a++){let o=n[a];r=`${r}/${o}`;let c=this.data.get(r),l=0,f=40;for(;c&&c.type==="symlink"&&l<f;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=this.resolveSymlink(r,c.target),c=this.data.get(r),l++}if(l>=f)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let a of n){r=`${r}/${a}`;let o=this.data.get(r),c=0,l=40;for(;o&&o.type==="symlink"&&c<l;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=this.resolveSymlink(r,o.target),o=this.data.get(r),c++}if(c>=l)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){let n=this.normalizePath(t);if(this.data.has(n)){if(this.data.get(n)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let r=this.dirname(n);if(r!=="/"&&!this.data.has(r))if(s?.recursive)this.mkdirSync(r,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(n,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Set;for(;n&&n.type==="symlink";){if(r.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(s),s=this.resolveSymlink(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,a=new Map;for(let[o,c]of this.data.entries())if(o!==s&&o.startsWith(i)){let l=o.slice(i.length),f=l.split("/")[0];f&&!l.includes("/",f.length)&&!a.has(f)&&a.set(f,{name:f,isFile:c.type==="file",isDirectory:c.type==="directory",isSymbolicLink:c.type==="symlink"})}return Array.from(a.values()).sort((o,c)=>o.name<c.name?-1:o.name>c.name?1:0)}async rm(t,s){let n=this.normalizePath(t),r=this.data.get(n);if(!r){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(r.type==="directory"){let i=await this.readdir(n);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of i){let o=n==="/"?`/${a}`:`${n}/${a}`;await this.rm(o,s)}}}this.data.delete(n)}async cp(t,s,n){let r=this.normalizePath(t),i=this.normalizePath(s),a=this.data.get(r);if(!a)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(a.type==="file")this.ensureParentDirs(i),this.data.set(i,{...a});else if(a.type==="directory"){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let o=await this.readdir(r);for(let c of o){let l=r==="/"?`/${c}`:`${r}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(l,f,n)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}async chmod(t,s){let n=this.normalizePath(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);r.mode=s}async symlink(t,s){let n=this.normalizePath(s);if(this.data.has(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){let n=this.normalizePath(t),r=this.normalizePath(s),i=this.data.get(n);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(r))throw new Error(`EEXIST: file already exists, link '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"file",content:i.content,mode:i.mode,mtime:i.mtime})}async readlink(t){let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}async realpath(t){let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,n){let r=this.normalizePath(t),i=this.resolvePathWithSymlinks(r),a=this.data.get(i);if(!a)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);a.mtime=n}};function jr(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Ur(e,t){e.mkdirSync("/bin",{recursive:!0}),e.mkdirSync("/usr/bin",{recursive:!0}),t&&(e.mkdirSync("/home/user",{recursive:!0}),e.mkdirSync("/tmp",{recursive:!0}))}function qr(e){e.mkdirSync("/dev",{recursive:!0}),e.writeFileSync("/dev/null",""),e.writeFileSync("/dev/zero",new Uint8Array(0)),e.writeFileSync("/dev/stdin",""),e.writeFileSync("/dev/stdout",""),e.writeFileSync("/dev/stderr","")}function Zr(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${qs}
1
+ import{B as nn,C as rn,D as se,E as Te,F as K,G as ue,H as ut,I as an,J as I,K as on,L as ln,M as me,N as Zt,O as dt,P as V,a as Gs,b as Xs,c as Ks,d as ct,e as Z,f as W,g as he,h as Q,i as pe,j as Ce,k as Bt,l as ft,m as Ys,n as Ht,o as Qs,p as oe,q as Ee,r as Js,s as en,t as jt,u as Ut,v as Ne,w as tn,x as sn,y as fe,z as qt}from"./chunks/chunk-ZRCBN2U4.js";import{a as _e,b as de}from"./chunks/chunk-OJDRYQWQ.js";import{a as re,b as ie,c as te,d as ae,e as qs,f as z,g as De,h as at,i as ot,j as Zs,k as ee,l as Pe,m as lt,n as ce}from"./chunks/chunk-PSW6BMXW.js";import{a as Ke}from"./chunks/chunk-YNYSPYQ5.js";import"./chunks/chunk-NUFRM6SI.js";import{a as ve}from"./chunks/chunk-44UOCSGV.js";import"./chunks/chunk-DXB73IDG.js";var Ie=[{name:"echo",load:async()=>(await import("./chunks/echo-6S7WE7XB.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-GPKR7D6K.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-4U5V2VHK.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-PUJHEPXS.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-SF2UE4KB.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-DU6C7ZEO.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-TDTEBHHI.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-MJFRIDNT.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-NJSENVKC.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-JPBZPM4O.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-Y7YB677N.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-ODWUR7E6.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-S4NVAMC4.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-EM4O3U4P.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-SA7P5NJ7.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-52LRAWXT.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-VDPK3LVS.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-IOLJTP7U.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-JNKRPEYR.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-4K5HXNXE.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-YNEKUV4T.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-LT2PE47K.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-XBP4SJA3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-AXQM7FFF.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-NVKWEAZF.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-QAP6Y75J.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-UJSEBPIQ.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-FKUV5GH5.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-KWQGFZH5.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-6CFXIPYZ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-VSTNOVF5.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-I7A2VXFD.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-LRU5XCFP.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-LGSGJHV5.js")).split},{name:"column",load:async()=>(await import("./chunks/column-R6OLMEUA.js")).column},{name:"join",load:async()=>(await import("./chunks/join-X3QYPZUA.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-4KHTWVWB.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-WTVSUXL3.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-CFA5ZIGT.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-YPJLCQYA.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-UFVZH4SS.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-T4JUAAB2.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-M3AXY56V.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-M3AXY56V.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-TMBGOQO6.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-4FRA6OJ7.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-VT2LJIDX.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-2LEQ2SZJ.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-2JFR3HGT.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-ELUS3RW7.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-PN3CMG7K.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-AK4QE4WR.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-X3X3N6IE.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-EGF4KTWV.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-5VRIVQYP.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-YSFDPKPV.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-TGZPGVOK.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-37LOTSQP.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-I4J5BPZA.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-APPTAFMI.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-ZK6GQVSL.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-UD3E73G5.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-GF77XMJD.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-2X4JLF4W.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-NWR32CGF.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-YUDAIS32.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-3FPDPLWJ.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ie.push({name:"tar",load:async()=>(await import("./chunks/tar-5V4PGBFL.js")).tarCommand}),Ie.push({name:"yq",load:async()=>(await import("./chunks/yq-6RVO6I5Q.js")).yqCommand}),Ie.push({name:"xan",load:async()=>(await import("./chunks/xan-I4Y5DD3C.js")).xanCommand}),Ie.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-5QVZOGER.js")).sqlite3Command}));var ht=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(ht.push({name:"python3",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).python3Command}),ht.push({name:"python",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).pythonCommand}));var fn=[{name:"curl",load:async()=>(await import("./chunks/curl-QDCXHQMX.js")).curlCommand}],cn=new Map;function Gt(e){return{name:e.name,async execute(t,s){let n=cn.get(e.name);return n||(n=await e.load(),cn.set(e.name,n)),n.execute(t,s)}}}function zr(){return Ie.map(e=>e.name)}function Vr(){return fn.map(e=>e.name)}function un(e){return(e?Ie.filter(s=>e.includes(s.name)):Ie).map(Gt)}function dn(){return fn.map(Gt)}function Br(){return ht.map(e=>e.name)}function hn(){return ht.map(Gt)}function pn(e){return"load"in e&&typeof e.load=="function"}function Hr(e,t){return{name:e,execute:t}}function mn(e){let t=null;return{name:e.name,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var jr=new TextEncoder,Ur=new TextDecoder;function be(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)s[n/2]=parseInt(e.slice(n,n+2),16);return s}return t==="binary"||t==="latin1"?Uint8Array.from(e,s=>s.charCodeAt(0)):jr.encode(e)}function Fe(e,t){return t==="base64"?btoa(String.fromCharCode(...e)):t==="hex"?Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join(""):t==="binary"||t==="latin1"?String.fromCharCode(...e):Ur.decode(e)}function le(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var pt=new TextEncoder;function qr(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var $e=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,n]of Object.entries(t))qr(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,n,r){let i=this.normalizePath(t);this.ensureParentDirs(i);let a=le(n),o=be(s,a);this.data.set(i,{type:"file",content:o,mode:r?.mode??420,mtime:r?.mtime??new Date})}async readFile(t,s){let n=await this.readFileBuffer(t),r=le(s);return Fe(n,r)}async readFileBuffer(t){let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content instanceof Uint8Array?n.content:pt.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){let r=this.normalizePath(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let a=le(n),o=be(s,a);if(i?.type==="file"){let c=i.content instanceof Uint8Array?i.content:pt.encode(i.content),l=new Uint8Array(c.length+o.length);l.set(c),l.set(o,c.length),this.data.set(r,{type:"file",content:l,mode:i.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}async exists(t){try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=0;return n.type==="file"&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=pt.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}async lstat(t){let s=this.resolveIntermediateSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||new Date};let r=0;return n.type==="file"&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=pt.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let a=0;a<n.length-1;a++){let o=n[a];r=`${r}/${o}`;let c=this.data.get(r),l=0,f=40;for(;c&&c.type==="symlink"&&l<f;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=this.resolveSymlink(r,c.target),c=this.data.get(r),l++}if(l>=f)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let a of n){r=`${r}/${a}`;let o=this.data.get(r),c=0,l=40;for(;o&&o.type==="symlink"&&c<l;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=this.resolveSymlink(r,o.target),o=this.data.get(r),c++}if(c>=l)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){let n=this.normalizePath(t);if(this.data.has(n)){if(this.data.get(n)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let r=this.dirname(n);if(r!=="/"&&!this.data.has(r))if(s?.recursive)this.mkdirSync(r,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(n,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Set;for(;n&&n.type==="symlink";){if(r.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(s),s=this.resolveSymlink(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,a=new Map;for(let[o,c]of this.data.entries())if(o!==s&&o.startsWith(i)){let l=o.slice(i.length),f=l.split("/")[0];f&&!l.includes("/",f.length)&&!a.has(f)&&a.set(f,{name:f,isFile:c.type==="file",isDirectory:c.type==="directory",isSymbolicLink:c.type==="symlink"})}return Array.from(a.values()).sort((o,c)=>o.name<c.name?-1:o.name>c.name?1:0)}async rm(t,s){let n=this.normalizePath(t),r=this.data.get(n);if(!r){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(r.type==="directory"){let i=await this.readdir(n);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of i){let o=n==="/"?`/${a}`:`${n}/${a}`;await this.rm(o,s)}}}this.data.delete(n)}async cp(t,s,n){let r=this.normalizePath(t),i=this.normalizePath(s),a=this.data.get(r);if(!a)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(a.type==="file")this.ensureParentDirs(i),this.data.set(i,{...a});else if(a.type==="directory"){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let o=await this.readdir(r);for(let c of o){let l=r==="/"?`/${c}`:`${r}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(l,f,n)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}async chmod(t,s){let n=this.normalizePath(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);r.mode=s}async symlink(t,s){let n=this.normalizePath(s);if(this.data.has(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){let n=this.normalizePath(t),r=this.normalizePath(s),i=this.data.get(n);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(r))throw new Error(`EEXIST: file already exists, link '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"file",content:i.content,mode:i.mode,mtime:i.mtime})}async readlink(t){let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}async realpath(t){let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,n){let r=this.normalizePath(t),i=this.resolvePathWithSymlinks(r),a=this.data.get(i);if(!a)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);a.mtime=n}};function Zr(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Gr(e,t){e.mkdirSync("/bin",{recursive:!0}),e.mkdirSync("/usr/bin",{recursive:!0}),t&&(e.mkdirSync("/home/user",{recursive:!0}),e.mkdirSync("/tmp",{recursive:!0}))}function Xr(e){e.mkdirSync("/dev",{recursive:!0}),e.writeFileSync("/dev/null",""),e.writeFileSync("/dev/zero",new Uint8Array(0)),e.writeFileSync("/dev/stdin",""),e.writeFileSync("/dev/stdout",""),e.writeFileSync("/dev/stderr","")}function Kr(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Gs}
2
2
  `),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
3
- `),e.writeFileSync("/proc/self/status",Zs()),e.writeFileSync("/proc/self/fd/0","/dev/stdin"),e.writeFileSync("/proc/self/fd/1","/dev/stdout"),e.writeFileSync("/proc/self/fd/2","/dev/stderr")}function pn(e,t){jr(e)&&(Ur(e,t),qr(e),Zr(e))}var Gr=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Xr=["braceexpand","hashall","interactive-comments"];function Zt(e){let t=[],s=[...Xr.map(n=>({name:n,enabled:!0})),...Gr.map(n=>({name:n,enabled:e[n]}))].sort((n,r)=>n.name.localeCompare(r.name));for(let n of s)n.enabled&&t.push(n.name);return t.join(":")}function Me(e){e.state.env.set("SHELLOPTS",Zt(e.state.options))}var Kr=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Gt(e){let t=[];for(let s of Kr)e[s]&&t.push(s);return t.join(":")}function Xt(e){e.state.env.set("BASHOPTS",Gt(e.state.shoptOptions))}var Yr="BASH_ALIAS_";function mn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function yn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function gn(e,t){return e.env.get(`${Yr}${t}`)}function Kt(e,t,s){if(!t.name||!mn(t.name))return t;let n=yn(t.name);if(!n)return t;let r=gn(e,n);if(!r||s.has(n))return t;try{s.add(n);let i=new W,a=r,o=r.endsWith(" ");if(!o)for(let u of t.args){let d=vn(u);a+=` ${d}`}let c;try{c=i.parse(a)}catch(u){if(u instanceof ct)throw u;return t}if(c.statements.length!==1||c.statements[0].pipelines.length!==1||c.statements[0].pipelines[0].commands.length!==1)return wn(t,r);let l=c.statements[0].pipelines[0].commands[0];if(l.type!=="SimpleCommand")return wn(t,r);let f={...l,assignments:[...t.assignments,...l.assignments],redirections:[...l.redirections,...t.redirections],line:t.line};if(o&&t.args.length>0&&(f={...f,args:[...f.args,...t.args]},f.args.length>0)){let u=f.args[0];if(mn(u)){let d=yn(u);if(d&&gn(e,d)){let h={type:"SimpleCommand",name:u,args:f.args.slice(1),assignments:[],redirections:[]},m=Kt(e,h,s);m!==h&&(f={...f,name:m.name,args:[...m.args]})}}}return f}catch(i){throw s.delete(n),i}}function wn(e,t){let s=t;for(let a of e.args){let o=vn(a);s+=` ${o}`}let n=new W,r=n.parseWordFromString("eval",!1,!1),i=n.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:r,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function vn(e){let t="";for(let s of e.parts)switch(s.type){case"Literal":t+=s.value.replace(/([\s"'$`\\*?[\]{}()<>|&;#!])/g,"\\$1");break;case"SingleQuoted":t+=`'${s.value}'`;break;case"DoubleQuoted":t+=`"${s.parts.map(n=>n.type==="Literal"?n.value:`$${n.type}`).join("")}"`;break;case"ParameterExpansion":t+=`\${${s.parameter}}`;break;case"CommandSubstitution":t+="$(...)";break;case"ArithmeticExpansion":t+=`$((${s.expression}))`;break;case"Glob":t+=s.pattern;break;default:break}return t}async function En(e,t){let s=t.parts.map(f=>f.type==="Literal"?f.value:"\0").join(""),n=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!n||!s.endsWith(")"))return null;let r=n[1],i=[],a=!1,o="",c=!1;for(let f of t.parts)if(f.type==="Literal"){let u=f.value;if(!a){let d=u.indexOf("=(");d!==-1&&(a=!0,u=u.slice(d+2))}if(a){u.endsWith(")")&&(u=u.slice(0,-1));let d=u.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(o||c)&&(i.push(o),o="",c=!1):h&&(o+=h)}}else if(a)if(f.type==="BraceExpansion")if(/^\[.+\]=/.test(o))o+=ft({type:"Word",parts:[f]});else{(o||c)&&(i.push(o),o="",c=!1);let d=await me(e,{type:"Word",parts:[f]});i.push(...d.values)}else{(f.type==="SingleQuoted"||f.type==="DoubleQuoted"||f.type==="Escaped")&&(c=!0);let u=await I(e,{type:"Word",parts:[f]});o+=u}(o||c)&&i.push(o);let l=i.map(f=>/^\[.+\]=/.test(f)?f:f===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(f)&&!f.startsWith("'")&&!f.startsWith('"')?`'${f.replace(/'/g,"'\\''")}'`:f);return`${r}=(${l.join(" ")})`}async function bn(e,t){let s=-1,n=-1,r=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let v=g.value.indexOf("+=");if(v!==-1){let C=g.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(C)){s=p,n=v,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(C)){s=p,n=v,r=!0;break}}let $=g.value.indexOf("=");if($!==-1&&($===0||g.value[$-1]!=="+")){let C=g.value.slice(0,$);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(C)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(C)){s=p,n=$;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),a=t.parts[s];if(a.type!=="Literal")return null;let o=r?2:1,c=a.value.slice(0,n),l=a.value.slice(n+o),f=t.parts.slice(s+1),u="";for(let p of i)u+=await I(e,{type:"Word",parts:[p]});u+=c;let d={type:"Word",parts:l!==""?[{type:"Literal",value:l},...f]:f},h=d.parts.length>0?await I(e,d):"";return`${u}${r?"+=":"="}${h}`}var Qr=["tar","yq","xan","sqlite3","python3","python"];function $n(e){return Qr.includes(e)}var L=Object.freeze({stdout:"",stderr:"",exitCode:0});function F(e=""){return{stdout:e,stderr:"",exitCode:0}}function S(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function P(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function q(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Ae(e,t,s="",n=""){throw new ee(e,t,s,n)}function Yt(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new _e;return L}if(t.length>1)throw new z(1,"",`bash: break: too many arguments
3
+ `),e.writeFileSync("/proc/self/status",Xs()),e.writeFileSync("/proc/self/fd/0","/dev/stdin"),e.writeFileSync("/proc/self/fd/1","/dev/stdout"),e.writeFileSync("/proc/self/fd/2","/dev/stderr")}function yn(e,t){Zr(e)&&(Gr(e,t),Xr(e),Kr(e))}var Yr=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Qr=["braceexpand","hashall","interactive-comments"];function Xt(e){let t=[],s=[...Qr.map(n=>({name:n,enabled:!0})),...Yr.map(n=>({name:n,enabled:e[n]}))].sort((n,r)=>n.name.localeCompare(r.name));for(let n of s)n.enabled&&t.push(n.name);return t.join(":")}function Me(e){e.state.env.set("SHELLOPTS",Xt(e.state.options))}var Jr=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Kt(e){let t=[];for(let s of Jr)e[s]&&t.push(s);return t.join(":")}function Yt(e){e.state.env.set("BASHOPTS",Kt(e.state.shoptOptions))}var ei="BASH_ALIAS_";function gn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function wn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function vn(e,t){return e.env.get(`${ei}${t}`)}function Qt(e,t,s){if(!t.name||!gn(t.name))return t;let n=wn(t.name);if(!n)return t;let r=vn(e,n);if(!r||s.has(n))return t;try{s.add(n);let i=new W,a=r,o=r.endsWith(" ");if(!o)for(let u of t.args){let d=bn(u);a+=` ${d}`}let c;try{c=i.parse(a)}catch(u){if(u instanceof ct)throw u;return t}if(c.statements.length!==1||c.statements[0].pipelines.length!==1||c.statements[0].pipelines[0].commands.length!==1)return En(t,r);let l=c.statements[0].pipelines[0].commands[0];if(l.type!=="SimpleCommand")return En(t,r);let f={...l,assignments:[...t.assignments,...l.assignments],redirections:[...l.redirections,...t.redirections],line:t.line};if(o&&t.args.length>0&&(f={...f,args:[...f.args,...t.args]},f.args.length>0)){let u=f.args[0];if(gn(u)){let d=wn(u);if(d&&vn(e,d)){let h={type:"SimpleCommand",name:u,args:f.args.slice(1),assignments:[],redirections:[]},m=Qt(e,h,s);m!==h&&(f={...f,name:m.name,args:[...m.args]})}}}return f}catch(i){throw s.delete(n),i}}function En(e,t){let s=t;for(let a of e.args){let o=bn(a);s+=` ${o}`}let n=new W,r=n.parseWordFromString("eval",!1,!1),i=n.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:r,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function bn(e){let t="";for(let s of e.parts)switch(s.type){case"Literal":t+=s.value.replace(/([\s"'$`\\*?[\]{}()<>|&;#!])/g,"\\$1");break;case"SingleQuoted":t+=`'${s.value}'`;break;case"DoubleQuoted":t+=`"${s.parts.map(n=>n.type==="Literal"?n.value:`$${n.type}`).join("")}"`;break;case"ParameterExpansion":t+=`\${${s.parameter}}`;break;case"CommandSubstitution":t+="$(...)";break;case"ArithmeticExpansion":t+=`$((${s.expression}))`;break;case"Glob":t+=s.pattern;break;default:break}return t}async function $n(e,t){let s=t.parts.map(f=>f.type==="Literal"?f.value:"\0").join(""),n=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!n||!s.endsWith(")"))return null;let r=n[1],i=[],a=!1,o="",c=!1;for(let f of t.parts)if(f.type==="Literal"){let u=f.value;if(!a){let d=u.indexOf("=(");d!==-1&&(a=!0,u=u.slice(d+2))}if(a){u.endsWith(")")&&(u=u.slice(0,-1));let d=u.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(o||c)&&(i.push(o),o="",c=!1):h&&(o+=h)}}else if(a)if(f.type==="BraceExpansion")if(/^\[.+\]=/.test(o))o+=ft({type:"Word",parts:[f]});else{(o||c)&&(i.push(o),o="",c=!1);let d=await me(e,{type:"Word",parts:[f]});i.push(...d.values)}else{(f.type==="SingleQuoted"||f.type==="DoubleQuoted"||f.type==="Escaped")&&(c=!0);let u=await I(e,{type:"Word",parts:[f]});o+=u}(o||c)&&i.push(o);let l=i.map(f=>/^\[.+\]=/.test(f)?f:f===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(f)&&!f.startsWith("'")&&!f.startsWith('"')?`'${f.replace(/'/g,"'\\''")}'`:f);return`${r}=(${l.join(" ")})`}async function Sn(e,t){let s=-1,n=-1,r=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let v=g.value.indexOf("+=");if(v!==-1){let N=g.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(N)){s=p,n=v,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(N)){s=p,n=v,r=!0;break}}let $=g.value.indexOf("=");if($!==-1&&($===0||g.value[$-1]!=="+")){let N=g.value.slice(0,$);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(N)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(N)){s=p,n=$;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),a=t.parts[s];if(a.type!=="Literal")return null;let o=r?2:1,c=a.value.slice(0,n),l=a.value.slice(n+o),f=t.parts.slice(s+1),u="";for(let p of i)u+=await I(e,{type:"Word",parts:[p]});u+=c;let d={type:"Word",parts:l!==""?[{type:"Literal",value:l},...f]:f},h=d.parts.length>0?await I(e,d):"";return`${u}${r?"+=":"="}${h}`}var ti=["tar","yq","xan","sqlite3","python3","python"];function An(e){return ti.includes(e)}var L=Object.freeze({stdout:"",stderr:"",exitCode:0});function F(e=""){return{stdout:e,stderr:"",exitCode:0}}function S(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function P(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function q(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Se(e,t,s="",n=""){throw new ee(e,t,s,n)}function Jt(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Pe;return L}if(t.length>1)throw new z(1,"",`bash: break: too many arguments
4
4
  `);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new z(128,"",`bash: break: ${t[0]}: numeric argument required
5
- `);s=n}throw new re(s)}async function Qt(e,t){let s,n=!1,r=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")r=!1,i++;else if(t[i]==="-P")r=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let a=t.slice(i);if(a.length===0||a[0]==="~"?s=e.state.env.get("HOME")||"/":a[0]==="-"?(s=e.state.previousDir,n=!0):s=a[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let u=e.state.env.get("CDPATH");if(u){let d=u.split(":").filter(h=>h);for(let h of d){let m=h.startsWith("/")?`${h}/${s}`:`${e.state.cwd}/${h}/${s}`;try{if((await e.fs.stat(m)).isDirectory){s=m,n=!0;break}}catch{}}}}let c=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).split("/").filter(u=>u&&u!=="."),l="";for(let u of c)if(u==="..")l=l.split("/").slice(0,-1).join("/")||"/";else{l=l?`${l}/${u}`:`/${u}`;try{if(!(await e.fs.stat(l)).isDirectory)return S(`bash: cd: ${s}: Not a directory
5
+ `);s=n}throw new re(s)}async function es(e,t){let s,n=!1,r=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")r=!1,i++;else if(t[i]==="-P")r=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let a=t.slice(i);if(a.length===0||a[0]==="~"?s=e.state.env.get("HOME")||"/":a[0]==="-"?(s=e.state.previousDir,n=!0):s=a[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let u=e.state.env.get("CDPATH");if(u){let d=u.split(":").filter(h=>h);for(let h of d){let m=h.startsWith("/")?`${h}/${s}`:`${e.state.cwd}/${h}/${s}`;try{if((await e.fs.stat(m)).isDirectory){s=m,n=!0;break}}catch{}}}}let c=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).split("/").filter(u=>u&&u!=="."),l="";for(let u of c)if(u==="..")l=l.split("/").slice(0,-1).join("/")||"/";else{l=l?`${l}/${u}`:`/${u}`;try{if(!(await e.fs.stat(l)).isDirectory)return S(`bash: cd: ${s}: Not a directory
6
6
  `)}catch{return S(`bash: cd: ${s}: No such file or directory
7
7
  `)}}let f=l||"/";if(r)try{f=await e.fs.realpath(f)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=f,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),F(n?`${f}
8
- `:"")}function Jt(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Jr=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function pt(e){return Jr.includes(e)}async function mt(e,t,s){let n=Jt(e,s);switch(t){case"-e":case"-a":return e.fs.exists(n);case"-f":return await e.fs.exists(n)?(await e.fs.stat(n)).isFile:!1;case"-d":return await e.fs.exists(n)?(await e.fs.stat(n)).isDirectory:!1;case"-r":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&256)!==0:!1;case"-w":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&128)!==0:!1;case"-x":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&64)!==0:!1;case"-s":return await e.fs.exists(n)?(await e.fs.stat(n)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(n)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&512)!==0:!1;case"-g":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(n);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].some(i=>n===i||n.endsWith(i));case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(n);default:return!1}}var ei=["-nt","-ot","-ef"];function yt(e){return ei.includes(e)}async function gt(e,t,s,n){let r=Jt(e,s),i=Jt(e,n);switch(t){case"-nt":try{let a=await e.fs.stat(r),o=await e.fs.stat(i);return a.mtime>o.mtime}catch{return!1}case"-ot":try{let a=await e.fs.stat(r),o=await e.fs.stat(i);return a.mtime<o.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(r)||!await e.fs.exists(i))return!1;let a=e.fs.resolvePath(e.state.cwd,r),o=e.fs.resolvePath(e.state.cwd,i);return a===o}catch{return!1}default:return!1}}var ti=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function wt(e){return ti.has(e)}function vt(e,t,s){switch(e){case"-eq":return t===s;case"-ne":return t!==s;case"-lt":return t<s;case"-le":return t<=s;case"-gt":return t>s;case"-ge":return t>=s}}function Ye(e){return e==="="||e==="=="||e==="!="}function Et(e,t,s,n=!1,r=!1,i=!1){if(n){let o=We(t,s,r,i);return e==="!="?!o:o}if(r){let o=t.toLowerCase()===s.toLowerCase();return e==="!="?!o:o}let a=t===s;return e==="!="?!a:a}var si=new Set(["-z","-n"]);function bt(e){return si.has(e)}function $t(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function St(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let n=s[1],r=s[2];if(e.state.associativeArrays?.has(n)){let o=r;return(o.startsWith("'")&&o.endsWith("'")||o.startsWith('"')&&o.endsWith('"'))&&(o=o.slice(1,-1)),o=o.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(c,l)=>e.state.env.get(l)||""),e.state.env.has(`${n}_${o}`)}let a;try{let o=new W,c=Z(o,r);a=await V(e,c.expression)}catch{if(/^-?\d+$/.test(r))a=Number.parseInt(r,10);else{let o=e.state.env.get(r);a=o?Number.parseInt(o,10):0}}if(a<0){let o=Q(e,n),c=e.state.currentLine;if(o.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${c}: ${n}: bad array subscript
8
+ `:"")}function ts(e,t){return e.fs.resolvePath(e.state.cwd,t)}var si=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function mt(e){return si.includes(e)}async function yt(e,t,s){let n=ts(e,s);switch(t){case"-e":case"-a":return e.fs.exists(n);case"-f":return await e.fs.exists(n)?(await e.fs.stat(n)).isFile:!1;case"-d":return await e.fs.exists(n)?(await e.fs.stat(n)).isDirectory:!1;case"-r":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&256)!==0:!1;case"-w":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&128)!==0:!1;case"-x":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&64)!==0:!1;case"-s":return await e.fs.exists(n)?(await e.fs.stat(n)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(n)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&512)!==0:!1;case"-g":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(n);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].some(i=>n===i||n.endsWith(i));case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(n);default:return!1}}var ni=["-nt","-ot","-ef"];function gt(e){return ni.includes(e)}async function wt(e,t,s,n){let r=ts(e,s),i=ts(e,n);switch(t){case"-nt":try{let a=await e.fs.stat(r),o=await e.fs.stat(i);return a.mtime>o.mtime}catch{return!1}case"-ot":try{let a=await e.fs.stat(r),o=await e.fs.stat(i);return a.mtime<o.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(r)||!await e.fs.exists(i))return!1;let a=e.fs.resolvePath(e.state.cwd,r),o=e.fs.resolvePath(e.state.cwd,i);return a===o}catch{return!1}default:return!1}}var ri=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function vt(e){return ri.has(e)}function Et(e,t,s){switch(e){case"-eq":return t===s;case"-ne":return t!==s;case"-lt":return t<s;case"-le":return t<=s;case"-gt":return t>s;case"-ge":return t>=s}}function Ye(e){return e==="="||e==="=="||e==="!="}function bt(e,t,s,n=!1,r=!1,i=!1){if(n){let o=We(t,s,r,i);return e==="!="?!o:o}if(r){let o=t.toLowerCase()===s.toLowerCase();return e==="!="?!o:o}let a=t===s;return e==="!="?!a:a}var ii=new Set(["-z","-n"]);function $t(e){return ii.has(e)}function St(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function At(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let n=s[1],r=s[2];if(e.state.associativeArrays?.has(n)){let o=r;return(o.startsWith("'")&&o.endsWith("'")||o.startsWith('"')&&o.endsWith('"'))&&(o=o.slice(1,-1)),o=o.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(c,l)=>e.state.env.get(l)||""),e.state.env.has(`${n}_${o}`)}let a;try{let o=new W,c=Z(o,r);a=await V(e,c.expression)}catch{if(/^-?\d+$/.test(r))a=Number.parseInt(r,10);else{let o=e.state.env.get(r);a=o?Number.parseInt(o,10):0}}if(a<0){let o=Q(e,n),c=e.state.currentLine;if(o.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${c}: ${n}: bad array subscript
9
9
  `,!1;if(a=Math.max(...o)+1+a,a<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${c}: ${n}: bad array subscript
10
- `,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Ce(e,t).length>0:Q(e,t).length>0}async function Oe(e,t){switch(t.type){case"CondBinary":{let s=await I(e,t.left),n=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),r;if(t.operator==="=~")if(n){let i=await I(e,t.right);r=sn(i)}else r=await rn(e,t.right);else Ye(t.operator)&&!n?r=await an(e,t.right):r=await I(e,t.right);if(Ye(t.operator)){let i=e.state.shoptOptions.nocasematch;return Et(t.operator,s,r,!n,i,!0)}if(wt(t.operator))return vt(t.operator,await An(e,s),await An(e,r));if(yt(t.operator))return gt(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,a=ai(r),c=Ke(a,i?"i":"").match(s);if(pe(e,"BASH_REMATCH"),c)for(let l=0;l<c.length;l++)e.state.env.set(`BASH_REMATCH_${l}`,c[l]||"");return c!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<r;case">":return s>r;default:return!1}}case"CondUnary":{let s=await I(e,t.operand);return pt(t.operator)?mt(e,t.operator,s):bt(t.operator)?$t(t.operator,s):t.operator==="-v"?await St(e,s):t.operator==="-o"?ts(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await I(e,t.operand.expression.word)})`!=="":!await Oe(e,t.operand);case"CondAnd":return await Oe(e,t.left)?await Oe(e,t.right):!1;case"CondOr":return await Oe(e,t.left)?!0:await Oe(e,t.right);case"CondGroup":return await Oe(e,t.expression);case"CondWord":return await I(e,t.word)!=="";default:return!1}}async function Qe(e,t){if(t.length===0)return P("","",1);if(t.length===1)return q(!!t[0]);if(t.length===2){let n=t[0],r=t[1];return n==="("?S(`test: '(' without matching ')'
11
- `,2):pt(n)?q(await mt(e,n,r)):bt(n)?q($t(n,r)):n==="!"?q(!r):n==="-v"?q(await St(e,r)):n==="-o"?q(ts(e,r)):n==="="||n==="=="||n==="!="||n==="<"||n===">"||n==="-eq"||n==="-ne"||n==="-lt"||n==="-le"||n==="-gt"||n==="-ge"||n==="-nt"||n==="-ot"||n==="-ef"?S(`test: ${n}: unary operator expected
12
- `,2):P("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(Ye(r))return q(Et(r,n,i));if(wt(r)){let a=At(n),o=At(i);return!a.valid||!o.valid?P("","",2):q(vt(r,a.value,o.value))}if(yt(r))return q(await gt(e,r,n,i));switch(r){case"-a":return q(n!==""&&i!=="");case"-o":return q(n!==""||i!=="");case">":return q(n>i);case"<":return q(n<i)}if(n==="!"){let a=await Qe(e,[r,i]);return P("",a.stderr,a.exitCode===0?1:a.exitCode===1?0:a.exitCode)}if(n==="("&&i===")")return q(r!=="")}if(t.length===4){if(t[0]==="!"){let n=await Qe(e,t.slice(1));return P("",n.stderr,n.exitCode===0?1:n.exitCode===1?0:n.exitCode)}if(t[0]==="("&&t[3]===")")return Qe(e,[t[1],t[2]])}let s=await _n(e,t,0);return s.pos<t.length?S(`test: too many arguments
13
- `,2):q(s.value)}async function _n(e,t,s){return ni(e,t,s)}async function ni(e,t,s){let{value:n,pos:r}=await Sn(e,t,s);for(;t[r]==="-o";){let i=await Sn(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function Sn(e,t,s){let{value:n,pos:r}=await es(e,t,s);for(;t[r]==="-a";){let i=await es(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function es(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await es(e,t,s+1);return{value:!n,pos:r}}return ri(e,t,s)}async function ri(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:a}=await _n(e,t,s+1);return{value:i,pos:t[a]===")"?a+1:a}}let r=t[s+1];if(Ye(r)){let i=n,a=t[s+2]??"";return{value:Et(r,i,a),pos:s+3}}if(wt(r)){let i=At(n),a=At(t[s+2]??"0");return!i.valid||!a.valid?{value:!1,pos:s+3}:{value:vt(r,i.value,a.value),pos:s+3}}if(yt(r)){let i=n,a=t[s+2]??"";return{value:await gt(e,r,i,a),pos:s+3}}if(pt(n)){let i=t[s+1]??"";return{value:await mt(e,n,i),pos:s+2}}if(bt(n)){let i=t[s+1]??"";return{value:$t(n,i),pos:s+2}}if(n==="-v"){let i=t[s+1]??"";return{value:await St(e,i),pos:s+2}}if(n==="-o"){let i=t[s+1]??"";return{value:ts(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function We(e,t,s=!1,n=!1){let r=`^${Nn(t,n)}$`;return Ke(r,s?"is":"s").test(e)}function Nn(e,t){let s="";for(let n=0;n<e.length;n++){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=Cn(e,n+1);if(i!==-1){let a=e.slice(n+2,i),o=kn(a),c=o.map(f=>Nn(f,t)),l=c.length>0?c.join("|"):"(?:)";if(r==="@")s+=`(?:${l})`;else if(r==="*")s+=`(?:${l})*`;else if(r==="+")s+=`(?:${l})+`;else if(r==="?")s+=`(?:${l})?`;else if(r==="!")if(i<e.length-1){let u=o.map(h=>On(h,t));if(u.every(h=>h!==null)&&u.every(h=>h===u[0])&&u[0]!==null){let h=u[0];if(h===0)s+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${l})).{${h}}`),s+=`(?:${m.join("|")})`}}else s+=`(?:(?!(?:${l})).)*?`}else s+=`(?!(?:${l})$).*`;n=i;continue}}if(r==="\\")if(n+1<e.length){let i=e[n+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,n++}else s+="\\\\";else if(r==="*")s+=".*";else if(r==="?")s+=".";else if(r==="["){let i=e.indexOf("]",n+1);i!==-1?(s+=e.slice(n,i+1),n=i):s+="\\["}else/[\\^$.|+(){}]/.test(r)?s+=`\\${r}`:s+=r}return s}function Cn(e,t){let s=1,n=t+1;for(;n<e.length&&s>0;){let r=e[n];if(r==="\\"){n+=2;continue}if(r==="(")s++;else if(r===")"&&(s--,s===0))return n;n++}return-1}function kn(e){let t=[],s="",n=0,r=0;for(;r<e.length;){let i=e[r];if(i==="\\"){s+=i,r+1<e.length?(s+=e[r+1],r+=2):r++;continue}i==="("?(n++,s+=i):i===")"?(n--,s+=i):i==="|"&&n===0?(t.push(s),s=""):s+=i,r++}return t.push(s),t}function On(e,t){let s=0,n=0;for(;n<e.length;){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=Cn(e,n+1);if(i!==-1){if(r==="@"){let a=e.slice(n+2,i),c=kn(a).map(l=>On(l,t));if(c.every(l=>l!==null)&&c.every(l=>l===c[0])){s+=c[0],n=i+1;continue}return null}return null}}if(r==="*")return null;if(r==="?"){s+=1,n++;continue}if(r==="["){let i=e.indexOf("]",n+1);if(i!==-1){s+=1,n=i+1;continue}s+=1,n++;continue}if(r==="\\"){s+=1,n+=2;continue}s+=1,n++}return s}function ts(e,t){let n=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return n?n():!1}async function An(e,t){if(t=t.trim(),t==="")return 0;if(/^[+-]?(\d+#[a-zA-Z0-9@_]+|0[xX][0-9a-fA-F]+|0[0-7]+|\d+)$/.test(t))return Pn(t);try{let s=new W,n=Z(s,t);return await V(e,n.expression)}catch{return Pn(t)}}function ii(e,t){let s=0;for(let n of e){let r;if(n>="0"&&n<="9")r=n.charCodeAt(0)-48;else if(n>="a"&&n<="z")r=n.charCodeAt(0)-97+10;else if(n>="A"&&n<="Z")r=n.charCodeAt(0)-65+36;else if(n==="@")r=62;else if(n==="_")r=63;else return Number.NaN;if(r>=t)return Number.NaN;s=s*t+r}return s}function Pn(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s,n=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(n){let r=Number.parseInt(n[1],10);r>=2&&r<=64?s=ii(n[2],r):s=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?s=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?s=Number.parseInt(e,8):s=Number.parseInt(e,10);return Number.isNaN(s)&&(s=0),t?-s:s}function At(e){if(e=e.trim(),e==="")return{value:0,valid:!0};let t=!1;if(e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1)),!/^\d+$/.test(e))return{value:0,valid:!1};let s=Number.parseInt(e,10);return Number.isNaN(s)?{value:0,valid:!1}:{value:t?-s:s,valid:!0}}function ai(e){let t="",s=0;for(;s<e.length;)if(e[s]==="\\"&&s+1<e.length)t+=e[s]+e[s+1],s+=2;else if(e[s]==="["){let n=oi(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function oi(e,t){let s=t+1,n="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(n+="^",s++);let r=!1;s<e.length&&e[s]==="]"&&(r=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let a="",o=!1;for(;s<e.length;){let c=e[s];if(c==="]"){o=!0,s++;break}if(c==="["&&s+1<e.length&&e[s+1]===":"){let l=e.indexOf(":]",s+2);if(l!==-1){let f=e.slice(s+2,l);a+=li(f),s=l+2;continue}}if(c==="["&&s+1<e.length){let l=e[s+1];if(l==="."||l==="="){let f=`${l}]`,u=e.indexOf(f,s+2);if(u!==-1){let d=e.slice(s+2,u);a+=d,s=u+2;continue}}}if(c==="\\"&&s+1<e.length){a+=c+e[s+1],s+=2;continue}a+=c,s++}return o?(r&&(n+="\\]"),i&&(n+="\\["),n+=a,n+="]",{converted:n,endIndex:s}):{converted:"\\[",endIndex:t+1}}function li(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function ye(e){let t=[],s="",n=!1,r=!1,i=!1,a=!1;for(let o of e){if(i){s+=o,i=!1,a=!0;continue}if(o==="\\"){i=!0;continue}if(o==="'"&&!r){n||(a=!0),n=!n;continue}if(o==='"'&&!n){r||(a=!0),r=!r;continue}if((o===" "||o===" "||o===`
14
- `)&&!n&&!r){a&&(t.push(s),s="",a=!1);continue}s+=o,a=!0}return a&&t.push(s),t}function Pt(e){let t=[],s=0;for(;s<e.length;){for(;s<e.length&&/\s/.test(e[s]);)s++;if(s>=e.length)break;if(e[s]!=="["){s++;continue}s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)n+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)r+=e[s],s++;t.push([n,r])}return t}function Dn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:ye(t[2])};let s=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(s)return{name:s[1],isArray:!1,arrayIndex:s[2],value:s[3]};if(e.includes("=")){let n=e.indexOf("=");return{name:e.slice(0,n),isArray:!1,value:e.slice(n+1)}}return{name:e,isArray:!1}}async function ci(e,t){try{let s=new W,n=Z(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Tn(e,t,s={}){let{name:n,isArray:r,arrayElements:i,value:a,arrayIndex:o}=t,{makeReadonly:c=!1,checkReadonly:l=!0}=s;if(l){let f=K(e,n);if(f)return f}if(r&&i){for(let f=0;f<i.length;f++)e.state.env.set(`${n}_${f}`,i[f]);e.state.env.set(`${n}__length`,String(i.length))}else if(o!==void 0&&a!==void 0){let f=await ci(e,o);e.state.env.set(`${n}_${f}`,a);let u=parseInt(e.state.env.get(`${n}__length`)??"0",10);f>=u&&e.state.env.set(`${n}__length`,String(f+1))}else a!==void 0&&e.state.env.set(n,a);return c&&se(e,n),null}function De(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function ze(e,t){return e.state.localVarDepth?.get(t)}function _t(e,t){e.state.localVarDepth?.delete(t)}function In(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let n=e.state.localVarStack.get(t)||[];n.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,n)}function Nt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function Rn(e,t){if(e.state.localVarStack)for(let[s,n]of e.state.localVarStack.entries()){for(;n.length>0&&n[n.length-1].scopeIndex===t;)n.pop();n.length===0&&e.state.localVarStack.delete(s)}}var ss=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function xn(e){return ss.has(e)}var ns=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),Je=new Set([":","true","false","cd","export","unset","exit","local","set","break","continue","return","eval","shift","getopts","compgen","complete","compopt","pushd","popd","dirs","source",".","read","mapfile","readarray","declare","typeset","readonly","let","command","shopt","exec","test","[","echo","printf","pwd","alias","unalias","type","hash","ulimit","umask","trap","times","wait","kill","jobs","fg","bg","disown","suspend","fc","history","help","enable","builtin","caller"]);async function Re(e,t,s,n){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
10
+ `,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Ce(e,t).length>0:Q(e,t).length>0}async function ke(e,t){switch(t.type){case"CondBinary":{let s=await I(e,t.left),n=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),r;if(t.operator==="=~")if(n){let i=await I(e,t.right);r=rn(i)}else r=await on(e,t.right);else Ye(t.operator)&&!n?r=await ln(e,t.right):r=await I(e,t.right);if(Ye(t.operator)){let i=e.state.shoptOptions.nocasematch;return bt(t.operator,s,r,!n,i,!0)}if(vt(t.operator))return Et(t.operator,await _n(e,s),await _n(e,r));if(gt(t.operator))return wt(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,a=ci(r),c=Ke(a,i?"i":"").match(s);if(pe(e,"BASH_REMATCH"),c)for(let l=0;l<c.length;l++)e.state.env.set(`BASH_REMATCH_${l}`,c[l]||"");return c!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<r;case">":return s>r;default:return!1}}case"CondUnary":{let s=await I(e,t.operand);return mt(t.operator)?yt(e,t.operator,s):$t(t.operator)?St(t.operator,s):t.operator==="-v"?await At(e,s):t.operator==="-o"?ns(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await I(e,t.operand.expression.word)})`!=="":!await ke(e,t.operand);case"CondAnd":return await ke(e,t.left)?await ke(e,t.right):!1;case"CondOr":return await ke(e,t.left)?!0:await ke(e,t.right);case"CondGroup":return await ke(e,t.expression);case"CondWord":return await I(e,t.word)!=="";default:return!1}}async function Qe(e,t){if(t.length===0)return P("","",1);if(t.length===1)return q(!!t[0]);if(t.length===2){let n=t[0],r=t[1];return n==="("?S(`test: '(' without matching ')'
11
+ `,2):mt(n)?q(await yt(e,n,r)):$t(n)?q(St(n,r)):n==="!"?q(!r):n==="-v"?q(await At(e,r)):n==="-o"?q(ns(e,r)):n==="="||n==="=="||n==="!="||n==="<"||n===">"||n==="-eq"||n==="-ne"||n==="-lt"||n==="-le"||n==="-gt"||n==="-ge"||n==="-nt"||n==="-ot"||n==="-ef"?S(`test: ${n}: unary operator expected
12
+ `,2):P("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(Ye(r))return q(bt(r,n,i));if(vt(r)){let a=Pt(n),o=Pt(i);return!a.valid||!o.valid?P("","",2):q(Et(r,a.value,o.value))}if(gt(r))return q(await wt(e,r,n,i));switch(r){case"-a":return q(n!==""&&i!=="");case"-o":return q(n!==""||i!=="");case">":return q(n>i);case"<":return q(n<i)}if(n==="!"){let a=await Qe(e,[r,i]);return P("",a.stderr,a.exitCode===0?1:a.exitCode===1?0:a.exitCode)}if(n==="("&&i===")")return q(r!=="")}if(t.length===4){if(t[0]==="!"){let n=await Qe(e,t.slice(1));return P("",n.stderr,n.exitCode===0?1:n.exitCode===1?0:n.exitCode)}if(t[0]==="("&&t[3]===")")return Qe(e,[t[1],t[2]])}let s=await Nn(e,t,0);return s.pos<t.length?S(`test: too many arguments
13
+ `,2):q(s.value)}async function Nn(e,t,s){return ai(e,t,s)}async function ai(e,t,s){let{value:n,pos:r}=await Pn(e,t,s);for(;t[r]==="-o";){let i=await Pn(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function Pn(e,t,s){let{value:n,pos:r}=await ss(e,t,s);for(;t[r]==="-a";){let i=await ss(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function ss(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await ss(e,t,s+1);return{value:!n,pos:r}}return oi(e,t,s)}async function oi(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:a}=await Nn(e,t,s+1);return{value:i,pos:t[a]===")"?a+1:a}}let r=t[s+1];if(Ye(r)){let i=n,a=t[s+2]??"";return{value:bt(r,i,a),pos:s+3}}if(vt(r)){let i=Pt(n),a=Pt(t[s+2]??"0");return!i.valid||!a.valid?{value:!1,pos:s+3}:{value:Et(r,i.value,a.value),pos:s+3}}if(gt(r)){let i=n,a=t[s+2]??"";return{value:await wt(e,r,i,a),pos:s+3}}if(mt(n)){let i=t[s+1]??"";return{value:await yt(e,n,i),pos:s+2}}if($t(n)){let i=t[s+1]??"";return{value:St(n,i),pos:s+2}}if(n==="-v"){let i=t[s+1]??"";return{value:await At(e,i),pos:s+2}}if(n==="-o"){let i=t[s+1]??"";return{value:ns(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function We(e,t,s=!1,n=!1){let r=`^${kn(t,n)}$`;return Ke(r,s?"is":"s").test(e)}function kn(e,t){let s="";for(let n=0;n<e.length;n++){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=On(e,n+1);if(i!==-1){let a=e.slice(n+2,i),o=Dn(a),c=o.map(f=>kn(f,t)),l=c.length>0?c.join("|"):"(?:)";if(r==="@")s+=`(?:${l})`;else if(r==="*")s+=`(?:${l})*`;else if(r==="+")s+=`(?:${l})+`;else if(r==="?")s+=`(?:${l})?`;else if(r==="!")if(i<e.length-1){let u=o.map(h=>Tn(h,t));if(u.every(h=>h!==null)&&u.every(h=>h===u[0])&&u[0]!==null){let h=u[0];if(h===0)s+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${l})).{${h}}`),s+=`(?:${m.join("|")})`}}else s+=`(?:(?!(?:${l})).)*?`}else s+=`(?!(?:${l})$).*`;n=i;continue}}if(r==="\\")if(n+1<e.length){let i=e[n+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,n++}else s+="\\\\";else if(r==="*")s+=".*";else if(r==="?")s+=".";else if(r==="["){let i=e.indexOf("]",n+1);i!==-1?(s+=e.slice(n,i+1),n=i):s+="\\["}else/[\\^$.|+(){}]/.test(r)?s+=`\\${r}`:s+=r}return s}function On(e,t){let s=1,n=t+1;for(;n<e.length&&s>0;){let r=e[n];if(r==="\\"){n+=2;continue}if(r==="(")s++;else if(r===")"&&(s--,s===0))return n;n++}return-1}function Dn(e){let t=[],s="",n=0,r=0;for(;r<e.length;){let i=e[r];if(i==="\\"){s+=i,r+1<e.length?(s+=e[r+1],r+=2):r++;continue}i==="("?(n++,s+=i):i===")"?(n--,s+=i):i==="|"&&n===0?(t.push(s),s=""):s+=i,r++}return t.push(s),t}function Tn(e,t){let s=0,n=0;for(;n<e.length;){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=On(e,n+1);if(i!==-1){if(r==="@"){let a=e.slice(n+2,i),c=Dn(a).map(l=>Tn(l,t));if(c.every(l=>l!==null)&&c.every(l=>l===c[0])){s+=c[0],n=i+1;continue}return null}return null}}if(r==="*")return null;if(r==="?"){s+=1,n++;continue}if(r==="["){let i=e.indexOf("]",n+1);if(i!==-1){s+=1,n=i+1;continue}s+=1,n++;continue}if(r==="\\"){s+=1,n+=2;continue}s+=1,n++}return s}function ns(e,t){let n=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return n?n():!1}async function _n(e,t){if(t=t.trim(),t==="")return 0;if(/^[+-]?(\d+#[a-zA-Z0-9@_]+|0[xX][0-9a-fA-F]+|0[0-7]+|\d+)$/.test(t))return Cn(t);try{let s=new W,n=Z(s,t);return await V(e,n.expression)}catch{return Cn(t)}}function li(e,t){let s=0;for(let n of e){let r;if(n>="0"&&n<="9")r=n.charCodeAt(0)-48;else if(n>="a"&&n<="z")r=n.charCodeAt(0)-97+10;else if(n>="A"&&n<="Z")r=n.charCodeAt(0)-65+36;else if(n==="@")r=62;else if(n==="_")r=63;else return Number.NaN;if(r>=t)return Number.NaN;s=s*t+r}return s}function Cn(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s,n=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(n){let r=Number.parseInt(n[1],10);r>=2&&r<=64?s=li(n[2],r):s=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?s=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?s=Number.parseInt(e,8):s=Number.parseInt(e,10);return Number.isNaN(s)&&(s=0),t?-s:s}function Pt(e){if(e=e.trim(),e==="")return{value:0,valid:!0};let t=!1;if(e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1)),!/^\d+$/.test(e))return{value:0,valid:!1};let s=Number.parseInt(e,10);return Number.isNaN(s)?{value:0,valid:!1}:{value:t?-s:s,valid:!0}}function ci(e){let t="",s=0;for(;s<e.length;)if(e[s]==="\\"&&s+1<e.length)t+=e[s]+e[s+1],s+=2;else if(e[s]==="["){let n=fi(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function fi(e,t){let s=t+1,n="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(n+="^",s++);let r=!1;s<e.length&&e[s]==="]"&&(r=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let a="",o=!1;for(;s<e.length;){let c=e[s];if(c==="]"){o=!0,s++;break}if(c==="["&&s+1<e.length&&e[s+1]===":"){let l=e.indexOf(":]",s+2);if(l!==-1){let f=e.slice(s+2,l);a+=ui(f),s=l+2;continue}}if(c==="["&&s+1<e.length){let l=e[s+1];if(l==="."||l==="="){let f=`${l}]`,u=e.indexOf(f,s+2);if(u!==-1){let d=e.slice(s+2,u);a+=d,s=u+2;continue}}}if(c==="\\"&&s+1<e.length){a+=c+e[s+1],s+=2;continue}a+=c,s++}return o?(r&&(n+="\\]"),i&&(n+="\\["),n+=a,n+="]",{converted:n,endIndex:s}):{converted:"\\[",endIndex:t+1}}function ui(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function ye(e){let t=[],s="",n=!1,r=!1,i=!1,a=!1;for(let o of e){if(i){s+=o,i=!1,a=!0;continue}if(o==="\\"){i=!0;continue}if(o==="'"&&!r){n||(a=!0),n=!n;continue}if(o==='"'&&!n){r||(a=!0),r=!r;continue}if((o===" "||o===" "||o===`
14
+ `)&&!n&&!r){a&&(t.push(s),s="",a=!1);continue}s+=o,a=!0}return a&&t.push(s),t}function _t(e){let t=[],s=0;for(;s<e.length;){for(;s<e.length&&/\s/.test(e[s]);)s++;if(s>=e.length)break;if(e[s]!=="["){s++;continue}s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)n+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)r+=e[s],s++;t.push([n,r])}return t}function In(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:ye(t[2])};let s=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(s)return{name:s[1],isArray:!1,arrayIndex:s[2],value:s[3]};if(e.includes("=")){let n=e.indexOf("=");return{name:e.slice(0,n),isArray:!1,value:e.slice(n+1)}}return{name:e,isArray:!1}}async function di(e,t){try{let s=new W,n=Z(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Rn(e,t,s={}){let{name:n,isArray:r,arrayElements:i,value:a,arrayIndex:o}=t,{makeReadonly:c=!1,checkReadonly:l=!0}=s;if(l){let f=K(e,n);if(f)return f}if(r&&i){for(let f=0;f<i.length;f++)e.state.env.set(`${n}_${f}`,i[f]);e.state.env.set(`${n}__length`,String(i.length))}else if(o!==void 0&&a!==void 0){let f=await di(e,o);e.state.env.set(`${n}_${f}`,a);let u=parseInt(e.state.env.get(`${n}__length`)??"0",10);f>=u&&e.state.env.set(`${n}__length`,String(f+1))}else a!==void 0&&e.state.env.set(n,a);return c&&se(e,n),null}function Oe(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function ze(e,t){return e.state.localVarDepth?.get(t)}function Ct(e,t){e.state.localVarDepth?.delete(t)}function xn(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let n=e.state.localVarStack.get(t)||[];n.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,n)}function Nt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function Ln(e,t){if(e.state.localVarStack)for(let[s,n]of e.state.localVarStack.entries()){for(;n.length>0&&n[n.length-1].scopeIndex===t;)n.pop();n.length===0&&e.state.localVarStack.delete(s)}}var rs=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Fn(e){return rs.has(e)}var is=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),Je=new Set([":","true","false","cd","export","unset","exit","local","set","break","continue","return","eval","shift","getopts","compgen","complete","compopt","pushd","popd","dirs","source",".","read","mapfile","readarray","declare","typeset","readonly","let","command","shopt","exec","test","[","echo","printf","pwd","alias","unalias","type","hash","ulimit","umask","trap","times","wait","kill","jobs","fg","bg","disown","suspend","fc","history","help","enable","builtin","caller"]);async function Re(e,t,s,n){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
15
15
  `;if(n.checkNoclobber&&e.state.options.noclobber&&!n.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
16
- `}catch{}return null}function Y(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return"utf8";return"binary"}function fi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),c=o.indexOf(":");if(c===-1)return null;let l=Number.parseInt(o.slice(0,c),10);if(Number.isNaN(l)||l<0)return null;let f=o.slice(c+1);return{path:i,position:l,content:f}}async function Ln(e,t){let s=new Map;for(let n=0;n<t.length;n++){let r=t[n];if(r.target.type==="HereDoc")continue;if(r.operator===">&"||r.operator==="<&"){if(qt(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
17
- `};s.set(n,await I(e,r.target))}else{let a=await dt(e,r.target);if("error"in a)return{targets:s,error:a.error};s.set(n,a.target)}}return{targets:s}}function ui(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd;return e.state.nextFd++,t}async function Ct(e,t){for(let s of t){if(!s.fdVariable)continue;if(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),(s.operator===">&"||s.operator==="<&")&&s.target.type==="Word"&&await I(e,s.target)==="-"){let i=e.state.env.get(s.fdVariable);if(i!==void 0){let a=Number.parseInt(i,10);Number.isNaN(a)||e.state.fileDescriptors.delete(a)}continue}let n=ui(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await I(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(r,10);if(!Number.isNaN(i)){let a=e.state.fileDescriptors.get(i);a!==void 0&&e.state.fileDescriptors.set(n,a);continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,r);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),e.state.fileDescriptors.set(n,`__file__:${i}`)}else if(s.operator==="<<<")e.state.fileDescriptors.set(n,`${r}
16
+ `}catch{}return null}function Y(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return"utf8";return"binary"}function hi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),c=o.indexOf(":");if(c===-1)return null;let l=Number.parseInt(o.slice(0,c),10);if(Number.isNaN(l)||l<0)return null;let f=o.slice(c+1);return{path:i,position:l,content:f}}async function Mn(e,t){let s=new Map;for(let n=0;n<t.length;n++){let r=t[n];if(r.target.type==="HereDoc")continue;if(r.operator===">&"||r.operator==="<&"){if(Zt(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
17
+ `};s.set(n,await I(e,r.target))}else{let a=await dt(e,r.target);if("error"in a)return{targets:s,error:a.error};s.set(n,a.target)}}return{targets:s}}function pi(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd;return e.state.nextFd++,t}async function kt(e,t){for(let s of t){if(!s.fdVariable)continue;if(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),(s.operator===">&"||s.operator==="<&")&&s.target.type==="Word"&&await I(e,s.target)==="-"){let i=e.state.env.get(s.fdVariable);if(i!==void 0){let a=Number.parseInt(i,10);Number.isNaN(a)||e.state.fileDescriptors.delete(a)}continue}let n=pi(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await I(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(r,10);if(!Number.isNaN(i)){let a=e.state.fileDescriptors.get(i);a!==void 0&&e.state.fileDescriptors.set(n,a);continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,r);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),e.state.fileDescriptors.set(n,`__file__:${i}`)}else if(s.operator==="<<<")e.state.fileDescriptors.set(n,`${r}
18
18
  `);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,r),a=await e.fs.readFile(i);e.state.fileDescriptors.set(n,a)}catch{return P("",`bash: ${r}: No such file or directory
19
19
  `,1)}}}return null}async function ge(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let n=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!n)continue;let r;if(n){if(r=await I(e,s.target),r==="-"||!Number.isNaN(Number.parseInt(r,10))||s.fd!=null)continue}else{let o=await dt(e,s.target);if("error"in o)return P("",o.error,1);r=o.target}let i=e.fs.resolvePath(e.state.cwd,r),a=s.operator===">|";try{let o=await e.fs.stat(i);if(o.isDirectory)return P("",`bash: ${r}: Is a directory
20
20
  `,1);if(e.state.options.noclobber&&!a&&!o.isDirectory&&r!=="/dev/null")return P("",`bash: ${r}: cannot overwrite existing file
21
21
  `,1)}catch{}if(r!=="/dev/null"&&r!=="/dev/stdout"&&r!=="/dev/stderr"&&r!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),r==="/dev/full")return P("",`bash: /dev/full: No space left on device
22
- `,1)}return null}async function H(e,t,s,n){let{stdout:r,stderr:i,exitCode:a}=t;for(let l=0;l<s.length;l++){let f=s[l];if(f.target.type==="HereDoc")continue;let u,d=n?.get(l);if(d!==void 0)u=d;else if(f.operator===">&"||f.operator==="<&"){if(qt(e,f.target)){i+=`bash: $@: ambiguous redirect
22
+ `,1)}return null}async function H(e,t,s,n){let{stdout:r,stderr:i,exitCode:a}=t;for(let l=0;l<s.length;l++){let f=s[l];if(f.target.type==="HereDoc")continue;let u,d=n?.get(l);if(d!==void 0)u=d;else if(f.operator===">&"||f.operator==="<&"){if(Zt(e,f.target)){i+=`bash: $@: ambiguous redirect
23
23
  `,a=1,r="";continue}u=await I(e,f.target)}else{let m=await dt(e,f.target);if("error"in m){i+=m.error,a=1,r="";continue}u=m.target}if(!f.fdVariable)switch(f.operator){case">":case">|":{let h=f.fd??1,m=f.operator===">|";if(h===1){if(u==="/dev/stdout")break;if(u==="/dev/stderr"){i+=r,r="";break}if(u==="/dev/full"){i+=`bash: echo: write error: No space left on device
24
24
  `,a=1,r="";break}let p=e.fs.resolvePath(e.state.cwd,u),g=await Re(e,p,u,{checkNoclobber:!0,isClobber:m});if(g){i+=g,a=1,r="";break}await e.fs.writeFile(p,r,Y(r)),r=""}else if(h===2){if(u==="/dev/stderr")break;if(u==="/dev/stdout"){r+=i,i="";break}if(u==="/dev/full"){i+=`bash: echo: write error: No space left on device
25
25
  `,a=1;break}if(u==="/dev/null")i="";else{let p=e.fs.resolvePath(e.state.cwd,u),g=await Re(e,p,u,{checkNoclobber:!0,isClobber:m});if(g){i+=g,a=1;break}await e.fs.writeFile(p,i,Y(i)),i=""}}break}case">>":{let h=f.fd??1;if(h===1){if(u==="/dev/stdout")break;if(u==="/dev/stderr"){i+=r,r="";break}if(u==="/dev/full"){i+=`bash: echo: write error: No space left on device
26
26
  `,a=1,r="";break}let m=e.fs.resolvePath(e.state.cwd,u),p=await Re(e,m,u,{});if(p){i+=p,a=1,r="";break}await e.fs.appendFile(m,r,Y(r)),r=""}else if(h===2){if(u==="/dev/stderr")break;if(u==="/dev/stdout"){r+=i,i="";break}if(u==="/dev/full"){i+=`bash: echo: write error: No space left on device
27
27
  `,a=1;break}let m=e.fs.resolvePath(e.state.cwd,u),p=await Re(e,m,u,{});if(p){i+=p,a=1;break}await e.fs.appendFile(m,i,Y(i)),i=""}break}case">&":case"<&":{let h=f.fd??1;if(u==="-")break;if(u.endsWith("-")){let m=u.slice(0,-1),p=Number.parseInt(m,10);if(!Number.isNaN(p)){let g=e.state.fileDescriptors?.get(p);g!==void 0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(h,g),p>=3&&e.state.fileDescriptors?.delete(p)):p===1||p===2?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(h,`__dupout__:${p}`)):p===0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(h,`__dupin__:${p}`)):p>=3&&(i+=`bash: ${p}: Bad file descriptor
28
- `,a=1)}break}if(u==="2"||u==="&2")h===1&&(i+=r,r="");else if(u==="1"||u==="&1")r+=i,i="";else{let m=Number.parseInt(u,10);if(Number.isNaN(m)){if(f.operator===">&"){let p=e.fs.resolvePath(e.state.cwd,u),g=await Re(e,p,u,{checkNoclobber:!0});if(g){i=g,a=1,r="";break}if(f.fd==null){let v=r+i;await e.fs.writeFile(p,v,Y(v)),r="",i=""}else h===1?(await e.fs.writeFile(p,r,Y(r)),r=""):h===2&&(await e.fs.writeFile(p,i,Y(i)),i="")}}else{let p=e.state.fileDescriptors?.get(m);if(p?.startsWith("__file__:")){let g=p.slice(9);h===1?(await e.fs.appendFile(g,r,Y(r)),r=""):h===2&&(await e.fs.appendFile(g,i,Y(i)),i="")}else if(p?.startsWith("__rw__:")){let g=fi(p);g&&(h===1?(await e.fs.appendFile(g.path,r,Y(r)),r=""):h===2&&(await e.fs.appendFile(g.path,i,Y(i)),i=""))}else if(p?.startsWith("__dupout__:")){let g=Number.parseInt(p.slice(11),10);if(g!==1)if(g===2)h===1&&(i+=r,r="");else{let v=e.state.fileDescriptors?.get(g);if(v?.startsWith("__file__:")){let $=v.slice(9);h===1?(await e.fs.appendFile($,r,Y(r)),r=""):h===2&&(await e.fs.appendFile($,i,Y(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
28
+ `,a=1)}break}if(u==="2"||u==="&2")h===1&&(i+=r,r="");else if(u==="1"||u==="&1")r+=i,i="";else{let m=Number.parseInt(u,10);if(Number.isNaN(m)){if(f.operator===">&"){let p=e.fs.resolvePath(e.state.cwd,u),g=await Re(e,p,u,{checkNoclobber:!0});if(g){i=g,a=1,r="";break}if(f.fd==null){let v=r+i;await e.fs.writeFile(p,v,Y(v)),r="",i=""}else h===1?(await e.fs.writeFile(p,r,Y(r)),r=""):h===2&&(await e.fs.writeFile(p,i,Y(i)),i="")}}else{let p=e.state.fileDescriptors?.get(m);if(p?.startsWith("__file__:")){let g=p.slice(9);h===1?(await e.fs.appendFile(g,r,Y(r)),r=""):h===2&&(await e.fs.appendFile(g,i,Y(i)),i="")}else if(p?.startsWith("__rw__:")){let g=hi(p);g&&(h===1?(await e.fs.appendFile(g.path,r,Y(r)),r=""):h===2&&(await e.fs.appendFile(g.path,i,Y(i)),i=""))}else if(p?.startsWith("__dupout__:")){let g=Number.parseInt(p.slice(11),10);if(g!==1)if(g===2)h===1&&(i+=r,r="");else{let v=e.state.fileDescriptors?.get(g);if(v?.startsWith("__file__:")){let $=v.slice(9);h===1?(await e.fs.appendFile($,r,Y(r)),r=""):h===2&&(await e.fs.appendFile($,i,Y(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
29
29
  `,a=1,r=""):m>=3&&(i+=`bash: ${m}: Bad file descriptor
30
30
  `,a=1,r="")}}break}case"&>":{if(u==="/dev/full"){i=`bash: echo: write error: No space left on device
31
31
  `,a=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,u),m=await Re(e,h,u,{checkNoclobber:!0});if(m){i=m,a=1,r="";break}let p=r+i;await e.fs.writeFile(h,p,Y(p)),r="",i="";break}case"&>>":{if(u==="/dev/full"){i=`bash: echo: write error: No space left on device
32
- `,a=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,u),m=await Re(e,h,u,{});if(m){i=m,a=1,r="";break}let p=r+i;await e.fs.appendFile(h,p,Y(p)),r="",i="";break}}}let o=e.state.fileDescriptors?.get(1);if(o){if(o==="__dupout__:2")i+=r,r="";else if(o.startsWith("__file__:")){let l=o.slice(9);await e.fs.appendFile(l,r,Y(r)),r=""}else if(o.startsWith("__file_append__:")){let l=o.slice(16);await e.fs.appendFile(l,r,Y(r)),r=""}}let c=e.state.fileDescriptors?.get(2);if(c){if(c==="__dupout__:1")r+=i,i="";else if(c.startsWith("__file__:")){let l=c.slice(9);await e.fs.appendFile(l,i,Y(i)),i=""}else if(c.startsWith("__file_append__:")){let l=c.slice(16);await e.fs.appendFile(l,i,Y(i)),i=""}}return P(r,i,a)}function Fn(e,t){if(e.state.options.posix&&ss.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
33
- `;throw new z(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function di(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await I(e,r.content);r.stripTabs&&(i=i.split(`
32
+ `,a=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,u),m=await Re(e,h,u,{});if(m){i=m,a=1,r="";break}let p=r+i;await e.fs.appendFile(h,p,Y(p)),r="",i="";break}}}let o=e.state.fileDescriptors?.get(1);if(o){if(o==="__dupout__:2")i+=r,r="";else if(o.startsWith("__file__:")){let l=o.slice(9);await e.fs.appendFile(l,r,Y(r)),r=""}else if(o.startsWith("__file_append__:")){let l=o.slice(16);await e.fs.appendFile(l,r,Y(r)),r=""}}let c=e.state.fileDescriptors?.get(2);if(c){if(c==="__dupout__:1")r+=i,i="";else if(c.startsWith("__file__:")){let l=c.slice(9);await e.fs.appendFile(l,i,Y(i)),i=""}else if(c.startsWith("__file_append__:")){let l=c.slice(16);await e.fs.appendFile(l,i,Y(i)),i=""}}return P(r,i,a)}function Wn(e,t){if(e.state.options.posix&&rs.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
33
+ `;throw new z(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function mi(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await I(e,r.content);r.stripTabs&&(i=i.split(`
34
34
  `).map(o=>o.replace(/^\t+/,"")).join(`
35
35
  `)),(n.fd??0)===0&&(s=i)}else if(n.operator==="<<<"&&n.target.type==="Word")s=`${await I(e,n.target)}
36
- `;else if(n.operator==="<"&&n.target.type==="Word"){let r=await I(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function kt(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,Ae(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(r??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let i=new Map;for(let l=0;l<s.length;l++)i.set(String(l+1),e.state.env.get(String(l+1))),e.state.env.set(String(l+1),s[l]);i.set("@",e.state.env.get("@")),i.set("#",e.state.env.get("#")),e.state.env.set("@",s.join(" ")),e.state.env.set("#",String(s.length));let a=()=>{let l=e.state.localScopes.length-1,f=e.state.localScopes.pop();if(f)for(let[u,d]of f)d===void 0?e.state.env.delete(u):e.state.env.set(u,d);if(Rn(e,l),e.state.fullyUnsetLocals)for(let[u,d]of e.state.fullyUnsetLocals.entries())d===l&&e.state.fullyUnsetLocals.delete(u);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let u=e.state.localExportedVars.pop();if(u)for(let d of u)e.state.exportedVars?.delete(d)}for(let[u,d]of i)d===void 0?e.state.env.delete(u):e.state.env.set(u,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:o,error:c}=await Ln(e,t.redirections);if(c)return a(),P("",c,1);try{let l=await di(e,t.redirections),f=n||l,u=await e.executeCommand(t.body,f);return a(),H(e,u,t.redirections,o)}catch(l){if(a(),l instanceof te){let f=P(l.stdout,l.stderr,l.exitCode);return H(e,f,t.redirections,o)}throw l}}var Wn=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],is=[".",":","[","alias","bg","bind","break","builtin","caller","cd","command","compgen","complete","compopt","continue","declare","dirs","disown","echo","enable","eval","exec","exit","export","false","fc","fg","getopts","hash","help","history","jobs","kill","let","local","logout","mapfile","popd","printf","pushd","pwd","read","readarray","readonly","return","set","shift","shopt","source","suspend","test","times","trap","true","type","typeset","ulimit","umask","unalias","unset","wait"],hi=["autocd","assoc_expand_once","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","dotglob","execfail","expand_aliases","extdebug","extglob","extquote","failglob","force_fignore","globasciiranges","globstar","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lastpipe","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","nocaseglob","nocasematch","nullglob","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath","xpg_echo"],pi=is;async function as(e,t){let s=[],n=null,r="",i="",a=null,o=!1,c=!1,l=!1,f=null,u=null,d=null,h=[],m=["alias","arrayvar","binding","builtin","command","directory","disabled","enabled","export","file","function","group","helptopic","hostname","job","keyword","running","service","setopt","shopt","signal","stopped","user","variable"];for(let y=0;y<t.length;y++){let w=t[y];if(w==="-v")s.push("variable");else if(w==="-e")s.push("export");else if(w==="-f")s.push("file");else if(w==="-d")s.push("directory");else if(w==="-k")s.push("keyword");else if(w==="-A"){if(y++,y>=t.length)return S(`compgen: -A: option requires an argument
36
+ `;else if(n.operator==="<"&&n.target.type==="Word"){let r=await I(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function Ot(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,Se(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(r??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let i=new Map;for(let l=0;l<s.length;l++)i.set(String(l+1),e.state.env.get(String(l+1))),e.state.env.set(String(l+1),s[l]);i.set("@",e.state.env.get("@")),i.set("#",e.state.env.get("#")),e.state.env.set("@",s.join(" ")),e.state.env.set("#",String(s.length));let a=()=>{let l=e.state.localScopes.length-1,f=e.state.localScopes.pop();if(f)for(let[u,d]of f)d===void 0?e.state.env.delete(u):e.state.env.set(u,d);if(Ln(e,l),e.state.fullyUnsetLocals)for(let[u,d]of e.state.fullyUnsetLocals.entries())d===l&&e.state.fullyUnsetLocals.delete(u);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let u=e.state.localExportedVars.pop();if(u)for(let d of u)e.state.exportedVars?.delete(d)}for(let[u,d]of i)d===void 0?e.state.env.delete(u):e.state.env.set(u,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:o,error:c}=await Mn(e,t.redirections);if(c)return a(),P("",c,1);try{let l=await mi(e,t.redirections),f=n||l,u=await e.executeCommand(t.body,f);return a(),H(e,u,t.redirections,o)}catch(l){if(a(),l instanceof te){let f=P(l.stdout,l.stderr,l.exitCode);return H(e,f,t.redirections,o)}throw l}}var Vn=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],os=[".",":","[","alias","bg","bind","break","builtin","caller","cd","command","compgen","complete","compopt","continue","declare","dirs","disown","echo","enable","eval","exec","exit","export","false","fc","fg","getopts","hash","help","history","jobs","kill","let","local","logout","mapfile","popd","printf","pushd","pwd","read","readarray","readonly","return","set","shift","shopt","source","suspend","test","times","trap","true","type","typeset","ulimit","umask","unalias","unset","wait"],yi=["autocd","assoc_expand_once","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","dotglob","execfail","expand_aliases","extdebug","extglob","extquote","failglob","force_fignore","globasciiranges","globstar","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lastpipe","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","nocaseglob","nocasematch","nullglob","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath","xpg_echo"],gi=os;async function ls(e,t){let s=[],n=null,r="",i="",a=null,o=!1,c=!1,l=!1,f=null,u=null,d=null,h=[],m=["alias","arrayvar","binding","builtin","command","directory","disabled","enabled","export","file","function","group","helptopic","hostname","job","keyword","running","service","setopt","shopt","signal","stopped","user","variable"];for(let y=0;y<t.length;y++){let w=t[y];if(w==="-v")s.push("variable");else if(w==="-e")s.push("export");else if(w==="-f")s.push("file");else if(w==="-d")s.push("directory");else if(w==="-k")s.push("keyword");else if(w==="-A"){if(y++,y>=t.length)return S(`compgen: -A: option requires an argument
37
37
  `,2);let E=t[y];if(!m.includes(E))return S(`compgen: ${E}: invalid action name
38
38
  `,2);s.push(E)}else if(w==="-W"){if(y++,y>=t.length)return S(`compgen: -W: option requires an argument
39
39
  `,2);n=t[y]}else if(w==="-P"){if(y++,y>=t.length)return S(`compgen: -P: option requires an argument
@@ -44,96 +44,96 @@ import{B as tn,C as sn,D as se,E as Ie,F as K,G as ue,H as ut,I as nn,J as I,K a
44
44
  `,2);u=t[y]}else if(w==="-C"){if(y++,y>=t.length)return S(`compgen: -C: option requires an argument
45
45
  `,2);d=t[y]}else if(w==="-X"){if(y++,y>=t.length)return S(`compgen: -X: option requires an argument
46
46
  `,2);f=t[y]}else if(w==="-G"){if(y++,y>=t.length)return S(`compgen: -G: option requires an argument
47
- `,2)}else if(w==="--"){h.push(...t.slice(y+1));break}else w.startsWith("-")||h.push(w)}a=h[0]??null;let p=[];if(c){let y=await rs(e,a);p.push(...y)}if(l){let y=await Mn(e,a);p.push(...y)}for(let y of s)if(y==="variable"){let w=mi(e,a);p.push(...w)}else if(y==="export"){let w=yi(e,a);p.push(...w)}else if(y==="function"){let w=gi(e,a);p.push(...w)}else if(y==="builtin"){let w=wi(a);p.push(...w)}else if(y==="keyword"){let w=vi(a);p.push(...w)}else if(y==="alias"){let w=Ei(e,a);p.push(...w)}else if(y==="shopt"){let w=bi(a);p.push(...w)}else if(y==="helptopic"){let w=$i(a);p.push(...w)}else if(y==="directory"){let w=await rs(e,a);p.push(...w)}else if(y==="file"){let w=await Mn(e,a);p.push(...w)}else if(y==="user"){let w=Si(a);p.push(...w)}else if(y==="command"){let w=await Ai(e,a);p.push(...w)}if(n!==null)try{let y=await Pi(e,n),w=_i(e,y);for(let E of w)(a===null||E.startsWith(a))&&p.push(E)}catch{return P("","",1)}if(o){let y=await rs(e,a);for(let w of y)p.includes(w)||p.push(w)}let g="";if(u!==null){let y=e.state.functions.get(u);if(y){let w=new Map;w.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),w.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),w.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),w.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let E=new Map;for(let O of e.state.env.keys())(O==="COMPREPLY"||O.startsWith("COMPREPLY_")||O==="COMPREPLY__length")&&(E.set(O,e.state.env.get(O)),e.state.env.delete(O));let _=["compgen",h[0]??"",""];try{let O=await kt(e,y,_,"");if(O.exitCode!==0)return Ve(e,w),Ve(e,E),P("",O.stderr,1);g=O.stdout;let D=Ni(e);p.push(...D)}catch{return Ve(e,w),Ve(e,E),P("","",1)}Ve(e,w),Ve(e,E)}}if(d!==null)try{let y=he(d),w=await e.executeScript(y);if(w.exitCode!==0)return P("",w.stderr,w.exitCode);if(w.stdout){let E=w.stdout.split(`
47
+ `,2)}else if(w==="--"){h.push(...t.slice(y+1));break}else w.startsWith("-")||h.push(w)}a=h[0]??null;let p=[];if(c){let y=await as(e,a);p.push(...y)}if(l){let y=await zn(e,a);p.push(...y)}for(let y of s)if(y==="variable"){let w=wi(e,a);p.push(...w)}else if(y==="export"){let w=vi(e,a);p.push(...w)}else if(y==="function"){let w=Ei(e,a);p.push(...w)}else if(y==="builtin"){let w=bi(a);p.push(...w)}else if(y==="keyword"){let w=$i(a);p.push(...w)}else if(y==="alias"){let w=Si(e,a);p.push(...w)}else if(y==="shopt"){let w=Ai(a);p.push(...w)}else if(y==="helptopic"){let w=Pi(a);p.push(...w)}else if(y==="directory"){let w=await as(e,a);p.push(...w)}else if(y==="file"){let w=await zn(e,a);p.push(...w)}else if(y==="user"){let w=_i(a);p.push(...w)}else if(y==="command"){let w=await Ci(e,a);p.push(...w)}if(n!==null)try{let y=await Ni(e,n),w=ki(e,y);for(let E of w)(a===null||E.startsWith(a))&&p.push(E)}catch{return P("","",1)}if(o){let y=await as(e,a);for(let w of y)p.includes(w)||p.push(w)}let g="";if(u!==null){let y=e.state.functions.get(u);if(y){let w=new Map;w.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),w.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),w.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),w.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let E=new Map;for(let O of e.state.env.keys())(O==="COMPREPLY"||O.startsWith("COMPREPLY_")||O==="COMPREPLY__length")&&(E.set(O,e.state.env.get(O)),e.state.env.delete(O));let _=["compgen",h[0]??"",""];try{let O=await Ot(e,y,_,"");if(O.exitCode!==0)return Ve(e,w),Ve(e,E),P("",O.stderr,1);g=O.stdout;let D=Oi(e);p.push(...D)}catch{return Ve(e,w),Ve(e,E),P("","",1)}Ve(e,w),Ve(e,E)}}if(d!==null)try{let y=he(d),w=await e.executeScript(y);if(w.exitCode!==0)return P("",w.stderr,w.exitCode);if(w.stdout){let E=w.stdout.split(`
48
48
  `);for(let _ of E)_.length>0&&p.push(_)}}catch(y){if(y.name==="ParseException")return S(`compgen: -C: ${y.message}
49
49
  `,2);throw y}let v=p;if(f!==null){let y=f.startsWith("!"),w=y?f.slice(1):f;v=p.filter(E=>{let _=We(E,w,!1,!0);return y?_:!_})}if(v.length===0&&a!==null)return P(g,"",1);let $=v.map(y=>`${r}${y}${i}`).join(`
50
- `),C=g+($?`${$}
51
- `:"");return F(C)}function mi(e,t){let s=new Set;for(let r of e.state.env.keys()){if(r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length"))continue;let i=r.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)?s.add(r):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function yi(e,t){let s=e.state.exportedVars??new Set,n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n=n.filter(r=>r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length")?!1:e.state.env.has(r)),n.sort()}function gi(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function wi(e){let t=[...is];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function vi(e){let t=[...Wn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ei(e,t){let s=[];for(let r of e.state.env.keys())if(r.startsWith("BASH_ALIAS_")){let i=r.slice(11);s.push(i)}let n=s;return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function bi(e){let t=[...hi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function $i(e){let t=[...pi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function rs(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let o=t.slice(0,a)||"/";r=t.slice(a+1),o.startsWith("/")?n=o:n=`${e.state.cwd}/${o}`}}let i=await e.fs.readdir(n);for(let a of i){let o=`${n}/${a}`;try{if((await e.fs.stat(o)).isDirectory&&(!r||a.startsWith(r)))if(t?.includes("/")){let l=t.lastIndexOf("/"),f=t.slice(0,l+1);s.push(f+a)}else s.push(a)}catch{}}}catch{}return s.sort()}async function Mn(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let o=t.slice(0,a)||"/";r=t.slice(a+1),o.startsWith("/")?n=o:n=`${e.state.cwd}/${o}`}}let i=await e.fs.readdir(n);for(let a of i)if(!r||a.startsWith(r))if(t?.includes("/")){let o=t.lastIndexOf("/"),c=t.slice(0,o+1);s.push(c+a)}else s.push(a)}catch{}return s.sort()}function Si(e){return["root","nobody"]}async function Ai(e,t){let s=new Set;for(let i of is)s.add(i);for(let i of e.state.functions.keys())s.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&s.add(i.slice(11));for(let i of Wn)s.add(i);let n=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of n.split(":"))if(i)try{let a=await e.fs.readdir(i);for(let o of a)s.add(o)}catch{}let r=Array.from(s);return t!==null&&(r=r.filter(i=>i.startsWith(t))),r.sort()}async function Pi(e,t){let n=new W().parseWordFromString(t,!1,!1);return await I(e,n)}function _i(e,t){let s=e.state.env.get("IFS")??`
52
- `;if(s.length===0)return[t];let n=new Set(s.split("")),r=[],i="",a=0;for(;a<t.length;){let o=t[a];if(o==="\\"&&a+1<t.length){let c=t[a+1];i+=c,a+=2}else n.has(o)?(i.length>0&&(r.push(i),i=""),a++):(i+=o,a++)}return i.length>0&&r.push(i),r}function Ve(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function Ni(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=fe(e,"COMPREPLY");for(let[,i]of r)t.push(i)}else{let r=e.state.env.get("COMPREPLY");r!==void 0&&t.push(r)}return t}var Ci=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function ls(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=!1,i,a,o,c=[],l=[],f=[];for(let u=0;u<t.length;u++){let d=t[u];if(d==="-p")s=!0;else if(d==="-r")n=!0;else if(d==="-D")r=!0;else if(d==="-W"){if(u++,u>=t.length)return S(`complete: -W: option requires an argument
50
+ `),N=g+($?`${$}
51
+ `:"");return F(N)}function wi(e,t){let s=new Set;for(let r of e.state.env.keys()){if(r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length"))continue;let i=r.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)?s.add(r):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function vi(e,t){let s=e.state.exportedVars??new Set,n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n=n.filter(r=>r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length")?!1:e.state.env.has(r)),n.sort()}function Ei(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function bi(e){let t=[...os];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function $i(e){let t=[...Vn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Si(e,t){let s=[];for(let r of e.state.env.keys())if(r.startsWith("BASH_ALIAS_")){let i=r.slice(11);s.push(i)}let n=s;return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function Ai(e){let t=[...yi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Pi(e){let t=[...gi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function as(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let o=t.slice(0,a)||"/";r=t.slice(a+1),o.startsWith("/")?n=o:n=`${e.state.cwd}/${o}`}}let i=await e.fs.readdir(n);for(let a of i){let o=`${n}/${a}`;try{if((await e.fs.stat(o)).isDirectory&&(!r||a.startsWith(r)))if(t?.includes("/")){let l=t.lastIndexOf("/"),f=t.slice(0,l+1);s.push(f+a)}else s.push(a)}catch{}}}catch{}return s.sort()}async function zn(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let o=t.slice(0,a)||"/";r=t.slice(a+1),o.startsWith("/")?n=o:n=`${e.state.cwd}/${o}`}}let i=await e.fs.readdir(n);for(let a of i)if(!r||a.startsWith(r))if(t?.includes("/")){let o=t.lastIndexOf("/"),c=t.slice(0,o+1);s.push(c+a)}else s.push(a)}catch{}return s.sort()}function _i(e){return["root","nobody"]}async function Ci(e,t){let s=new Set;for(let i of os)s.add(i);for(let i of e.state.functions.keys())s.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&s.add(i.slice(11));for(let i of Vn)s.add(i);let n=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of n.split(":"))if(i)try{let a=await e.fs.readdir(i);for(let o of a)s.add(o)}catch{}let r=Array.from(s);return t!==null&&(r=r.filter(i=>i.startsWith(t))),r.sort()}async function Ni(e,t){let n=new W().parseWordFromString(t,!1,!1);return await I(e,n)}function ki(e,t){let s=e.state.env.get("IFS")??`
52
+ `;if(s.length===0)return[t];let n=new Set(s.split("")),r=[],i="",a=0;for(;a<t.length;){let o=t[a];if(o==="\\"&&a+1<t.length){let c=t[a+1];i+=c,a+=2}else n.has(o)?(i.length>0&&(r.push(i),i=""),a++):(i+=o,a++)}return i.length>0&&r.push(i),r}function Ve(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function Oi(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=fe(e,"COMPREPLY");for(let[,i]of r)t.push(i)}else{let r=e.state.env.get("COMPREPLY");r!==void 0&&t.push(r)}return t}var Di=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function fs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=!1,i,a,o,c=[],l=[],f=[];for(let u=0;u<t.length;u++){let d=t[u];if(d==="-p")s=!0;else if(d==="-r")n=!0;else if(d==="-D")r=!0;else if(d==="-W"){if(u++,u>=t.length)return S(`complete: -W: option requires an argument
53
53
  `,2);i=t[u]}else if(d==="-F"){if(u++,u>=t.length)return S(`complete: -F: option requires an argument
54
54
  `,2);a=t[u]}else if(d==="-o"){if(u++,u>=t.length)return S(`complete: -o: option requires an argument
55
- `,2);let h=t[u];if(!Ci.includes(h))return S(`complete: ${h}: invalid option name
55
+ `,2);let h=t[u];if(!Di.includes(h))return S(`complete: ${h}: invalid option name
56
56
  `,2);c.push(h)}else if(d==="-A"){if(u++,u>=t.length)return S(`complete: -A: option requires an argument
57
57
  `,2);l.push(t[u])}else if(d==="-C"){if(u++,u>=t.length)return S(`complete: -C: option requires an argument
58
58
  `,2);o=t[u]}else if(d==="-G"){if(u++,u>=t.length)return S(`complete: -G: option requires an argument
59
59
  `,2)}else if(d==="-P"){if(u++,u>=t.length)return S(`complete: -P: option requires an argument
60
60
  `,2)}else if(d==="-S"){if(u++,u>=t.length)return S(`complete: -S: option requires an argument
61
61
  `,2)}else if(d==="-X"){if(u++,u>=t.length)return S(`complete: -X: option requires an argument
62
- `,2)}else if(d==="--"){f.push(...t.slice(u+1));break}else d.startsWith("-")||f.push(d)}if(n){if(f.length===0)return e.state.completionSpecs.clear(),F("");for(let u of f)e.state.completionSpecs.delete(u);return F("")}if(s)return f.length===0?os(e):os(e,f);if(t.length===0||f.length===0&&!i&&!a&&!o&&c.length===0&&l.length===0&&!r)return os(e);if(a&&f.length===0&&!r)return S(`complete: -F: option requires a command name
63
- `,2);if(r){let u={isDefault:!0};return i!==void 0&&(u.wordlist=i),a!==void 0&&(u.function=a),o!==void 0&&(u.command=o),c.length>0&&(u.options=c),l.length>0&&(u.actions=l),e.state.completionSpecs.set("__default__",u),F("")}for(let u of f){let d={};i!==void 0&&(d.wordlist=i),a!==void 0&&(d.function=a),o!==void 0&&(d.command=o),c.length>0&&(d.options=c),l.length>0&&(d.actions=l),e.state.completionSpecs.set(u,d)}return F("")}function os(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let a of t)i+=`complete: ${a}: no completion specification
62
+ `,2)}else if(d==="--"){f.push(...t.slice(u+1));break}else d.startsWith("-")||f.push(d)}if(n){if(f.length===0)return e.state.completionSpecs.clear(),F("");for(let u of f)e.state.completionSpecs.delete(u);return F("")}if(s)return f.length===0?cs(e):cs(e,f);if(t.length===0||f.length===0&&!i&&!a&&!o&&c.length===0&&l.length===0&&!r)return cs(e);if(a&&f.length===0&&!r)return S(`complete: -F: option requires a command name
63
+ `,2);if(r){let u={isDefault:!0};return i!==void 0&&(u.wordlist=i),a!==void 0&&(u.function=a),o!==void 0&&(u.command=o),c.length>0&&(u.options=c),l.length>0&&(u.actions=l),e.state.completionSpecs.set("__default__",u),F("")}for(let u of f){let d={};i!==void 0&&(d.wordlist=i),a!==void 0&&(d.function=a),o!==void 0&&(d.command=o),c.length>0&&(d.options=c),l.length>0&&(d.actions=l),e.state.completionSpecs.set(u,d)}return F("")}function cs(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let a of t)i+=`complete: ${a}: no completion specification
64
64
  `;return P("",i,1)}return F("")}let n=[],r=t||Array.from(s.keys());for(let i of r){if(i==="__default__")continue;let a=s.get(i);if(!a){if(t)return P(n.join(`
65
65
  `)+(n.length>0?`
66
66
  `:""),`complete: ${i}: no completion specification
67
67
  `,1);continue}let o="complete";if(a.options)for(let c of a.options)o+=` -o ${c}`;if(a.actions)for(let c of a.actions)o+=` -A ${c}`;a.wordlist!==void 0&&(a.wordlist.includes(" ")||a.wordlist.includes("'")?o+=` -W '${a.wordlist}'`:o+=` -W ${a.wordlist}`),a.function!==void 0&&(o+=` -F ${a.function}`),a.isDefault&&(o+=" -D"),o+=` ${i}`,n.push(o)}return n.length===0?F(""):F(`${n.join(`
68
68
  `)}
69
- `)}var zn=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function cs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=[],i=[],a=[];for(let o=0;o<t.length;o++){let c=t[o];if(c==="-D")s=!0;else if(c==="-E")n=!0;else if(c==="-o"){if(o++,o>=t.length)return S(`compopt: -o: option requires an argument
70
- `,2);let l=t[o];if(!zn.includes(l))return S(`compopt: ${l}: invalid option name
69
+ `)}var Bn=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function us(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=[],i=[],a=[];for(let o=0;o<t.length;o++){let c=t[o];if(c==="-D")s=!0;else if(c==="-E")n=!0;else if(c==="-o"){if(o++,o>=t.length)return S(`compopt: -o: option requires an argument
70
+ `,2);let l=t[o];if(!Bn.includes(l))return S(`compopt: ${l}: invalid option name
71
71
  `,2);r.push(l)}else if(c==="+o"){if(o++,o>=t.length)return S(`compopt: +o: option requires an argument
72
- `,2);let l=t[o];if(!zn.includes(l))return S(`compopt: ${l}: invalid option name
72
+ `,2);let l=t[o];if(!Bn.includes(l))return S(`compopt: ${l}: invalid option name
73
73
  `,2);i.push(l)}else if(c==="--"){a.push(...t.slice(o+1));break}else!c.startsWith("-")&&!c.startsWith("+")&&a.push(c)}if(s){let o=e.state.completionSpecs.get("__default__")??{isDefault:!0},c=new Set(o.options??[]);for(let l of r)c.add(l);for(let l of i)c.delete(l);return o.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set("__default__",o),F("")}if(n){let o=e.state.completionSpecs.get("__empty__")??{},c=new Set(o.options??[]);for(let l of r)c.add(l);for(let l of i)c.delete(l);return o.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set("__empty__",o),F("")}if(a.length>0){for(let o of a){let c=e.state.completionSpecs.get(o)??{},l=new Set(c.options??[]);for(let f of r)l.add(f);for(let f of i)l.delete(f);c.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set(o,c)}return F("")}return S(`compopt: not currently executing completion function
74
- `,1)}function fs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new _e;return L}if(t.length>1)throw new z(1,"",`bash: continue: too many arguments
74
+ `,1)}function ds(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Pe;return L}if(t.length>1)throw new z(1,"",`bash: continue: too many arguments
75
75
  `);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new z(1,"",`bash: continue: ${t[0]}: numeric argument required
76
- `);s=n}throw new ie(s)}function j(e,t){let s=e.state.env.get("HOME")||"/home/user";return t.split(":").map(i=>i==="~"?s:i==="~root"?"/root":i.startsWith("~/")?s+i.slice(1):i.startsWith("~root/")?`/root${i.slice(5)}`:i).join(":")}function us(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function ds(e){let t="$'";for(let s=0;s<e.length;s++){let n=e[s],r=e.charCodeAt(s);r===7?t+="\\a":r===8?t+="\\b":r===9?t+="\\t":r===10?t+="\\n":r===11?t+="\\v":r===12?t+="\\f":r===13?t+="\\r":r===27?t+="\\e":r===39?t+="\\'":r===92?t+="\\\\":r<32||r===127?t+=`\\${r.toString(8).padStart(3,"0")}`:t+=n}return t+="'",t}function Ot(e){return us(e)?ds(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function xe(e){return us(e)?ds(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function hs(e){return us(e)?ds(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Vn(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),oe(e,t)&&(s+="n"),e.state.readonlyVars?.has(t)&&(s+="r"),e.state.uppercaseVars?.has(t)&&(s+="u"),e.state.exportedVars?.has(t)&&(s+="x"),s===""?"--":`-${s}`}function ps(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Bn(e,t){let s="",n="",r=!1;for(let i of t){let a=Vn(e,i);if(e.state.associativeArrays?.has(i)){let f=Ce(e,i);if(f.length===0)s+=`declare -A ${i}=()
77
- `;else{let u=f.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",m=ps(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${u.join(" ")})
76
+ `);s=n}throw new ie(s)}function j(e,t){let s=e.state.env.get("HOME")||"/home/user";return t.split(":").map(i=>i==="~"?s:i==="~root"?"/root":i.startsWith("~/")?s+i.slice(1):i.startsWith("~root/")?`/root${i.slice(5)}`:i).join(":")}function hs(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function ps(e){let t="$'";for(let s=0;s<e.length;s++){let n=e[s],r=e.charCodeAt(s);r===7?t+="\\a":r===8?t+="\\b":r===9?t+="\\t":r===10?t+="\\n":r===11?t+="\\v":r===12?t+="\\f":r===13?t+="\\r":r===27?t+="\\e":r===39?t+="\\'":r===92?t+="\\\\":r<32||r===127?t+=`\\${r.toString(8).padStart(3,"0")}`:t+=n}return t+="'",t}function Dt(e){return hs(e)?ps(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function xe(e){return hs(e)?ps(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function ms(e){return hs(e)?ps(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Hn(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),oe(e,t)&&(s+="n"),e.state.readonlyVars?.has(t)&&(s+="r"),e.state.uppercaseVars?.has(t)&&(s+="u"),e.state.exportedVars?.has(t)&&(s+="x"),s===""?"--":`-${s}`}function ys(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function jn(e,t){let s="",n="",r=!1;for(let i of t){let a=Hn(e,i);if(e.state.associativeArrays?.has(i)){let f=Ce(e,i);if(f.length===0)s+=`declare -A ${i}=()
77
+ `;else{let u=f.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",m=ys(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${u.join(" ")})
78
78
  `}continue}let c=Q(e,i);if(c.length>0){let f=c.map(u=>{let d=e.state.env.get(`${i}_${u}`)??"";return`[${u}]=${xe(d)}`});s+=`declare -a ${i}=(${f.join(" ")})
79
79
  `;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
80
- `;continue}let l=e.state.env.get(i);if(l!==void 0)s+=`declare ${a} ${i}=${hs(l)}
80
+ `;continue}let l=e.state.env.get(i);if(l!==void 0)s+=`declare ${a} ${i}=${ms(l)}
81
81
  `;else{let f=e.state.declaredVars?.has(i),u=e.state.localVarDepth?.has(i);f||u?s+=`declare ${a} ${i}
82
82
  `:(n+=`bash: declare: ${i}: not found
83
- `,r=!0)}}return P(s,n,r?1:0)}function Hn(e,t){let{filterExport:s,filterReadonly:n,filterNameref:r,filterIndexedArray:i,filterAssocArray:a}=t,o=s||n||r||i||a,c="",l=new Set;for(let u of e.state.env.keys()){if(u.startsWith("BASH_"))continue;if(u.endsWith("__length")){let h=u.slice(0,-8);l.add(h);continue}let d=u.lastIndexOf("_");if(d>0){let h=u.slice(0,d),m=u.slice(d+1);if(/^\d+$/.test(m)||e.state.associativeArrays?.has(h)){l.add(h);continue}}l.add(u)}if(e.state.localVarDepth)for(let u of e.state.localVarDepth.keys())l.add(u);if(e.state.associativeArrays)for(let u of e.state.associativeArrays)l.add(u);let f=Array.from(l).sort();for(let u of f){let d=Vn(e,u),h=e.state.associativeArrays?.has(u),m=Q(e,u),p=!h&&(m.length>0||e.state.env.has(`${u}__length`));if(o&&(a&&!h||i&&!p||s&&!e.state.exportedVars?.has(u)||n&&!e.state.readonlyVars?.has(u)||r&&!oe(e,u)))continue;if(h){let v=Ce(e,u);if(v.length===0)c+=`declare -A ${u}=()
84
- `;else{let $=v.map(C=>{let y=e.state.env.get(`${u}_${C}`)??"",w=ps(y);return`['${C}']=${w}`});c+=`declare -A ${u}=(${$.join(" ")})
85
- `}continue}if(m.length>0){let v=m.map($=>{let C=e.state.env.get(`${u}_${$}`)??"";return`[${$}]=${xe(C)}`});c+=`declare -a ${u}=(${v.join(" ")})
83
+ `,r=!0)}}return P(s,n,r?1:0)}function Un(e,t){let{filterExport:s,filterReadonly:n,filterNameref:r,filterIndexedArray:i,filterAssocArray:a}=t,o=s||n||r||i||a,c="",l=new Set;for(let u of e.state.env.keys()){if(u.startsWith("BASH_"))continue;if(u.endsWith("__length")){let h=u.slice(0,-8);l.add(h);continue}let d=u.lastIndexOf("_");if(d>0){let h=u.slice(0,d),m=u.slice(d+1);if(/^\d+$/.test(m)||e.state.associativeArrays?.has(h)){l.add(h);continue}}l.add(u)}if(e.state.localVarDepth)for(let u of e.state.localVarDepth.keys())l.add(u);if(e.state.associativeArrays)for(let u of e.state.associativeArrays)l.add(u);let f=Array.from(l).sort();for(let u of f){let d=Hn(e,u),h=e.state.associativeArrays?.has(u),m=Q(e,u),p=!h&&(m.length>0||e.state.env.has(`${u}__length`));if(o&&(a&&!h||i&&!p||s&&!e.state.exportedVars?.has(u)||n&&!e.state.readonlyVars?.has(u)||r&&!oe(e,u)))continue;if(h){let v=Ce(e,u);if(v.length===0)c+=`declare -A ${u}=()
84
+ `;else{let $=v.map(N=>{let y=e.state.env.get(`${u}_${N}`)??"",w=ys(y);return`['${N}']=${w}`});c+=`declare -A ${u}=(${$.join(" ")})
85
+ `}continue}if(m.length>0){let v=m.map($=>{let N=e.state.env.get(`${u}_${$}`)??"";return`[${$}]=${xe(N)}`});c+=`declare -a ${u}=(${v.join(" ")})
86
86
  `;continue}if(e.state.env.has(`${u}__length`)){c+=`declare -a ${u}=()
87
- `;continue}let g=e.state.env.get(u);g!==void 0&&(c+=`declare ${d} ${u}=${hs(g)}
88
- `)}return F(c)}function jn(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Ce(e,n);if(r.length===0)t+=`declare -A ${n}=()
89
- `;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",c=ps(o);return`['${a}']=${c}`});t+=`declare -A ${n}=(${i.join(" ")})
90
- `}}return F(t)}function Un(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);e.state.associativeArrays?.has(a)||s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);/^\d+$/.test(o)&&(e.state.associativeArrays?.has(a)||s.add(a))}}let n=Array.from(s).sort();for(let r of n){let i=Q(e,r);if(i.length===0)t+=`declare -a ${r}=()
87
+ `;continue}let g=e.state.env.get(u);g!==void 0&&(c+=`declare ${d} ${u}=${ms(g)}
88
+ `)}return F(c)}function qn(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Ce(e,n);if(r.length===0)t+=`declare -A ${n}=()
89
+ `;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",c=ys(o);return`['${a}']=${c}`});t+=`declare -A ${n}=(${i.join(" ")})
90
+ `}}return F(t)}function Zn(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);e.state.associativeArrays?.has(a)||s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);/^\d+$/.test(o)&&(e.state.associativeArrays?.has(a)||s.add(a))}}let n=Array.from(s).sort();for(let r of n){let i=Q(e,r);if(i.length===0)t+=`declare -a ${r}=()
91
91
  `;else{let a=i.map(o=>{let c=e.state.env.get(`${r}_${o}`)??"";return`[${o}]=${xe(c)}`});t+=`declare -a ${r}=(${a.join(" ")})
92
- `}}return F(t)}function qn(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);if(/^\d+$/.test(o)||e.state.associativeArrays?.has(a)){s.add(a);continue}}s.add(r)}let n=Array.from(s).sort();for(let r of n){if(e.state.associativeArrays?.has(r)||Q(e,r).length>0||e.state.env.has(`${r}__length`))continue;let o=e.state.env.get(r);o!==void 0&&(t+=`${r}=${Ot(o)}
93
- `)}return F(t)}function ms(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function et(e,t){return e.state.integerVars?.has(t)??!1}function ys(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function ki(e,t){return e.state.lowercaseVars?.has(t)??!1}function gs(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Oi(e,t){return e.state.uppercaseVars?.has(t)??!1}function Be(e,t,s){return ki(e,t)?s.toLowerCase():Oi(e,t)?s.toUpperCase():s}async function Zn(e,t){try{let s=new W,n=Z(s,t),r=await V(e,n.expression);return String(r)}catch{return"0"}}function Di(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],n=s.length;if(e[n]!=="[")return null;let r=0,i=n+1;for(;n<e.length;n++)if(e[n]==="[")r++;else if(e[n]==="]"&&(r--,r===0))break;if(r!==0)return null;let a=e.slice(i,n);if(n++,e[n]!=="=")return null;n++;let o=e.slice(n);return{name:s,indexExpr:a,value:o}}async function ws(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=!1,c=!1,l=!1,f=!1,u=!1,d=!1,h=!1,m=!1,p=!1,g=!1,v=[];for(let D=0;D<t.length;D++){let R=t[D];if(R==="-a")s=!0;else if(R==="-A")n=!0;else if(R==="-r")r=!0;else if(R==="-x")i=!0;else if(R==="-p")a=!0;else if(R==="-n")o=!0;else if(R==="+n")c=!0;else if(R==="+a")l=!0;else if(R==="+x")f=!0;else if(R==="--"){v.push(...t.slice(D+1));break}else if(R.startsWith("+")){for(let A of R.slice(1))if(A==="n")c=!0;else if(A==="a")l=!0;else if(A==="x")f=!0;else if(A!=="r"){if(A!=="i"){if(!(A==="f"||A==="F"))return P("",`bash: typeset: +${A}: invalid option
92
+ `}}return F(t)}function Gn(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);if(/^\d+$/.test(o)||e.state.associativeArrays?.has(a)){s.add(a);continue}}s.add(r)}let n=Array.from(s).sort();for(let r of n){if(e.state.associativeArrays?.has(r)||Q(e,r).length>0||e.state.env.has(`${r}__length`))continue;let o=e.state.env.get(r);o!==void 0&&(t+=`${r}=${Dt(o)}
93
+ `)}return F(t)}function gs(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function et(e,t){return e.state.integerVars?.has(t)??!1}function ws(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Ti(e,t){return e.state.lowercaseVars?.has(t)??!1}function vs(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Ii(e,t){return e.state.uppercaseVars?.has(t)??!1}function Be(e,t,s){return Ti(e,t)?s.toLowerCase():Ii(e,t)?s.toUpperCase():s}async function Xn(e,t){try{let s=new W,n=Z(s,t),r=await V(e,n.expression);return String(r)}catch{return"0"}}function Ri(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],n=s.length;if(e[n]!=="[")return null;let r=0,i=n+1;for(;n<e.length;n++)if(e[n]==="[")r++;else if(e[n]==="]"&&(r--,r===0))break;if(r!==0)return null;let a=e.slice(i,n);if(n++,e[n]!=="=")return null;n++;let o=e.slice(n);return{name:s,indexExpr:a,value:o}}async function Es(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=!1,c=!1,l=!1,f=!1,u=!1,d=!1,h=!1,m=!1,p=!1,g=!1,v=[];for(let D=0;D<t.length;D++){let R=t[D];if(R==="-a")s=!0;else if(R==="-A")n=!0;else if(R==="-r")r=!0;else if(R==="-x")i=!0;else if(R==="-p")a=!0;else if(R==="-n")o=!0;else if(R==="+n")c=!0;else if(R==="+a")l=!0;else if(R==="+x")f=!0;else if(R==="--"){v.push(...t.slice(D+1));break}else if(R.startsWith("+")){for(let A of R.slice(1))if(A==="n")c=!0;else if(A==="a")l=!0;else if(A==="x")f=!0;else if(A!=="r"){if(A!=="i"){if(!(A==="f"||A==="F"))return P("",`bash: typeset: +${A}: invalid option
94
94
  `,2)}}}else if(R==="-i")u=!0;else if(R==="-l")d=!0;else if(R==="-u")h=!0;else if(R==="-f")m=!0;else if(R==="-F")p=!0;else if(R==="-g")g=!0;else if(R.startsWith("-"))for(let A of R.slice(1))if(A==="a")s=!0;else if(A==="A")n=!0;else if(A==="r")r=!0;else if(A==="x")i=!0;else if(A==="p")a=!0;else if(A==="n")o=!0;else if(A==="i")u=!0;else if(A==="l")d=!0;else if(A==="u")h=!0;else if(A==="f")m=!0;else if(A==="F")p=!0;else if(A==="g")g=!0;else return P("",`bash: typeset: -${A}: invalid option
95
- `,2);else v.push(R)}let C=e.state.localScopes.length>0&&!g,y=D=>{if(!C)return;let R=e.state.localScopes[e.state.localScopes.length-1];R.has(D)||R.set(D,e.state.env.get(D))},w=D=>{if(!C)return;let R=e.state.localScopes[e.state.localScopes.length-1];R.has(D)||R.set(D,e.state.env.get(D));let A=`${D}_`;for(let T of e.state.env.keys())T.startsWith(A)&&!T.includes("__")&&(R.has(T)||R.set(T,e.state.env.get(T)));let N=`${D}__length`;e.state.env.has(N)&&!R.has(N)&&R.set(N,e.state.env.get(N))},E=D=>{C&&De(e,D)};if(p){if(v.length===0){let A=Array.from(e.state.functions.keys()).sort(),N="";for(let T of A)N+=`declare -f ${T}
96
- `;return F(N)}let D=!0,R="";for(let A of v)e.state.functions.has(A)?R+=`${A}
97
- `:D=!1;return P(R,"",D?0:1)}if(m){if(v.length===0){let R="",A=Array.from(e.state.functions.keys()).sort();for(let N of A)R+=`${N} ()
95
+ `,2);else v.push(R)}let N=e.state.localScopes.length>0&&!g,y=D=>{if(!N)return;let R=e.state.localScopes[e.state.localScopes.length-1];R.has(D)||R.set(D,e.state.env.get(D))},w=D=>{if(!N)return;let R=e.state.localScopes[e.state.localScopes.length-1];R.has(D)||R.set(D,e.state.env.get(D));let A=`${D}_`;for(let T of e.state.env.keys())T.startsWith(A)&&!T.includes("__")&&(R.has(T)||R.set(T,e.state.env.get(T)));let C=`${D}__length`;e.state.env.has(C)&&!R.has(C)&&R.set(C,e.state.env.get(C))},E=D=>{N&&Oe(e,D)};if(p){if(v.length===0){let A=Array.from(e.state.functions.keys()).sort(),C="";for(let T of A)C+=`declare -f ${T}
96
+ `;return F(C)}let D=!0,R="";for(let A of v)e.state.functions.has(A)?R+=`${A}
97
+ `:D=!1;return P(R,"",D?0:1)}if(m){if(v.length===0){let R="",A=Array.from(e.state.functions.keys()).sort();for(let C of A)R+=`${C} ()
98
98
  {
99
99
  # function body
100
100
  }
101
- `;return F(R)}let D=!0;for(let R of v)e.state.functions.has(R)||(D=!1);return P("","",D?0:1)}if(a&&v.length>0)return Bn(e,v);if(a&&v.length===0)return Hn(e,{filterExport:i,filterReadonly:r,filterNameref:o,filterIndexedArray:s,filterAssocArray:n});if(v.length===0&&n&&!a)return jn(e);if(v.length===0&&s&&!a)return Un(e);if(v.length===0&&!a)return qn(e);let _="",O=0;for(let D of v){let R=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(R&&!l){let b=R[1],k=R[2];if(n&&Q(e,b).length>0){_+=`bash: declare: ${b}: cannot convert indexed to associative array
101
+ `;return F(R)}let D=!0;for(let R of v)e.state.functions.has(R)||(D=!1);return P("","",D?0:1)}if(a&&v.length>0)return jn(e,v);if(a&&v.length===0)return Un(e,{filterExport:i,filterReadonly:r,filterNameref:o,filterIndexedArray:s,filterAssocArray:n});if(v.length===0&&n&&!a)return qn(e);if(v.length===0&&s&&!a)return Zn(e);if(v.length===0&&!a)return Gn(e);let _="",O=0;for(let D of v){let R=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(R&&!l){let b=R[1],k=R[2];if(n&&Q(e,b).length>0){_+=`bash: declare: ${b}: cannot convert indexed to associative array
102
102
  `,O=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has(b)){_+=`bash: declare: ${b}: cannot convert associative to indexed array
103
- `,O=1;continue}if(w(b),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(b)),pe(e,b),e.state.env.delete(b),e.state.env.delete(`${b}__length`),n&&k.includes("[")){let x=Pt(k);for(let[X,M]of x){let U=j(e,M);e.state.env.set(`${b}_${X}`,U)}}else if(n){let x=ye(k);for(let X=0;X<x.length;X+=2){let M=x[X],U=X+1<x.length?j(e,x[X+1]):"";e.state.env.set(`${b}_${M}`,U)}}else{let x=ye(k);if(x.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let U of x){let J=U.match(/^\[([^\]]+)\]=(.*)$/);if(J){let ne=J[1],Le=J[2],xr=j(e,Le),Xe;if(/^-?\d+$/.test(ne))Xe=Number.parseInt(ne,10);else try{let Lr=new W,Fr=Z(Lr,ne);Xe=await V(e,Fr.expression)}catch{Xe=0}e.state.env.set(`${b}_${Xe}`,xr),M=Xe+1}else{let ne=j(e,U);e.state.env.set(`${b}_${M}`,ne),M++}}}else{for(let M=0;M<x.length;M++)e.state.env.set(`${b}_${M}`,x[M]);e.state.env.set(`${b}__length`,String(x.length))}}E(b),r&&se(e,b),i&&ue(e,b);continue}if(c){let b=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(Ys(e,b),!D.includes("="))continue}if(f){let b=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(ut(e,b),!D.includes("="))continue}let A=Di(D);if(A){let{name:b,indexExpr:k,value:x}=A,X=K(e,b);if(X)return X;w(b);let M;try{let J=new W,ne=Z(J,k);M=await V(e,ne.expression)}catch{let J=parseInt(k,10);M=Number.isNaN(J)?0:J}e.state.env.set(`${b}_${M}`,x);let U=parseInt(e.state.env.get(`${b}__length`)??"0",10);M>=U&&e.state.env.set(`${b}__length`,String(M+1)),E(b),r&&se(e,b),i&&ue(e,b);continue}let N=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(N&&!l){let b=N[1],k=N[2],x=K(e,b);if(x)return x;w(b);let X=ye(k);if(e.state.associativeArrays?.has(b)){let M=Pt(k);for(let[U,J]of M){let ne=j(e,J);e.state.env.set(`${b}_${U}`,ne)}}else{let M=Q(e,b),U=0,J=e.state.env.get(b);M.length===0&&J!==void 0?(e.state.env.set(`${b}_0`,J),e.state.env.delete(b),U=1):M.length>0&&(U=Math.max(...M)+1);for(let Le=0;Le<X.length;Le++)e.state.env.set(`${b}_${U+Le}`,j(e,X[Le]));let ne=U+X.length;e.state.env.set(`${b}__length`,String(ne))}E(b),r&&se(e,b),i&&ue(e,b);continue}let T=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(T){let b=T[1],k=j(e,T[2]),x=K(e,b);if(x)return x;y(b),u&&ms(e,b),d&&ys(e,b),h&&gs(e,b);let M=Q(e,b).length>0||e.state.associativeArrays?.has(b);if(et(e,b)){let U=e.state.env.get(b)??"0",J=parseInt(U,10)||0,ne=parseInt(await Zn(e,k),10)||0;k=String(J+ne),e.state.env.set(b,k)}else if(M){k=Be(e,b,k);let U=`${b}_0`,J=e.state.env.get(U)??"";e.state.env.set(U,J+k)}else{k=Be(e,b,k);let U=e.state.env.get(b)??"";e.state.env.set(b,U+k)}E(b),r&&se(e,b),i&&ue(e,b),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(b));continue}if(D.includes("=")){let b=D.indexOf("="),k=D.slice(0,b),x=D.slice(b+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(k)){_+=`bash: typeset: \`${k}': not a valid identifier
103
+ `,O=1;continue}if(w(b),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(b)),pe(e,b),e.state.env.delete(b),e.state.env.delete(`${b}__length`),n&&k.includes("[")){let x=_t(k);for(let[X,M]of x){let U=j(e,M);e.state.env.set(`${b}_${X}`,U)}}else if(n){let x=ye(k);for(let X=0;X<x.length;X+=2){let M=x[X],U=X+1<x.length?j(e,x[X+1]):"";e.state.env.set(`${b}_${M}`,U)}}else{let x=ye(k);if(x.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let U of x){let J=U.match(/^\[([^\]]+)\]=(.*)$/);if(J){let ne=J[1],Le=J[2],Fr=j(e,Le),Xe;if(/^-?\d+$/.test(ne))Xe=Number.parseInt(ne,10);else try{let Mr=new W,Wr=Z(Mr,ne);Xe=await V(e,Wr.expression)}catch{Xe=0}e.state.env.set(`${b}_${Xe}`,Fr),M=Xe+1}else{let ne=j(e,U);e.state.env.set(`${b}_${M}`,ne),M++}}}else{for(let M=0;M<x.length;M++)e.state.env.set(`${b}_${M}`,x[M]);e.state.env.set(`${b}__length`,String(x.length))}}E(b),r&&se(e,b),i&&ue(e,b);continue}if(c){let b=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(Js(e,b),!D.includes("="))continue}if(f){let b=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(ut(e,b),!D.includes("="))continue}let A=Ri(D);if(A){let{name:b,indexExpr:k,value:x}=A,X=K(e,b);if(X)return X;w(b);let M;try{let J=new W,ne=Z(J,k);M=await V(e,ne.expression)}catch{let J=parseInt(k,10);M=Number.isNaN(J)?0:J}e.state.env.set(`${b}_${M}`,x);let U=parseInt(e.state.env.get(`${b}__length`)??"0",10);M>=U&&e.state.env.set(`${b}__length`,String(M+1)),E(b),r&&se(e,b),i&&ue(e,b);continue}let C=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(C&&!l){let b=C[1],k=C[2],x=K(e,b);if(x)return x;w(b);let X=ye(k);if(e.state.associativeArrays?.has(b)){let M=_t(k);for(let[U,J]of M){let ne=j(e,J);e.state.env.set(`${b}_${U}`,ne)}}else{let M=Q(e,b),U=0,J=e.state.env.get(b);M.length===0&&J!==void 0?(e.state.env.set(`${b}_0`,J),e.state.env.delete(b),U=1):M.length>0&&(U=Math.max(...M)+1);for(let Le=0;Le<X.length;Le++)e.state.env.set(`${b}_${U+Le}`,j(e,X[Le]));let ne=U+X.length;e.state.env.set(`${b}__length`,String(ne))}E(b),r&&se(e,b),i&&ue(e,b);continue}let T=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(T){let b=T[1],k=j(e,T[2]),x=K(e,b);if(x)return x;y(b),u&&gs(e,b),d&&ws(e,b),h&&vs(e,b);let M=Q(e,b).length>0||e.state.associativeArrays?.has(b);if(et(e,b)){let U=e.state.env.get(b)??"0",J=parseInt(U,10)||0,ne=parseInt(await Xn(e,k),10)||0;k=String(J+ne),e.state.env.set(b,k)}else if(M){k=Be(e,b,k);let U=`${b}_0`,J=e.state.env.get(U)??"";e.state.env.set(U,J+k)}else{k=Be(e,b,k);let U=e.state.env.get(b)??"";e.state.env.set(b,U+k)}E(b),r&&se(e,b),i&&ue(e,b),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(b));continue}if(D.includes("=")){let b=D.indexOf("="),k=D.slice(0,b),x=D.slice(b+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(k)){_+=`bash: typeset: \`${k}': not a valid identifier
104
104
  `,O=1;continue}let X=K(e,k);if(X)return X;if(y(k),o){if(x!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(x)){_+=`bash: declare: \`${x}': invalid variable name for name reference
105
- `,O=1;continue}e.state.env.set(k,x),Ee(e,k),x!==""&&jt(e,x)&&Ht(e,k),E(k),r&&se(e,k),i&&ue(e,k);continue}if(u&&ms(e,k),d&&ys(e,k),h&&gs(e,k),et(e,k)&&(x=await Zn(e,x)),x=Be(e,k,x),oe(e,k)){let M=ke(e,k);M&&M!==k?e.state.env.set(M,x):e.state.env.set(k,x)}else e.state.env.set(k,x);E(k),r&&se(e,k),i&&ue(e,k),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(k))}else{let b=D;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(b)){_+=`bash: typeset: \`${b}': not a valid identifier
106
- `,O=1;continue}if(s||n?w(b):y(b),o){Ee(e,b);let x=e.state.env.get(b);x!==void 0&&x!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(x)?Qs(e,b):x&&jt(e,x)&&Ht(e,b),E(b),r&&se(e,b),i&&ue(e,b);continue}if(u&&ms(e,b),d&&ys(e,b),h&&gs(e,b),n){if(Q(e,b).length>0){_+=`bash: declare: ${b}: cannot convert indexed to associative array
107
- `,O=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(b)}let k=Array.from(e.state.env.keys()).some(x=>x.startsWith(`${b}_`)&&!x.startsWith(`${b}__length`));!e.state.env.has(b)&&!k&&(s||n?e.state.env.set(`${b}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(b))),E(b),r&&se(e,b),i&&ue(e,b)}}return P("",_,O)}async function vs(e,t){let s=!1,n=!1,r=!1,i=[];for(let a=0;a<t.length;a++){let o=t[a];if(o==="-a")s=!0;else if(o==="-A")n=!0;else if(o==="-p")r=!0;else if(o==="--"){i.push(...t.slice(a+1));break}else o.startsWith("-")||i.push(o)}if(i.length===0){let a="",o=Array.from(e.state.readonlyVars||[]).sort();for(let c of o){let l=e.state.env.get(c);if(l!==void 0){let f=l.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${c}="${f}"
108
- `}}return F(a)}for(let a of i){let o=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(o){let u=o[1],d=o[2],h=K(e,u);if(h)return h;let m=ye(d);if(e.state.associativeArrays?.has(u)){let p=Pt(d);for(let[g,v]of p){let $=j(e,v);e.state.env.set(`${u}_${g}`,$)}}else{let p=Q(e,u),g=0,v=e.state.env.get(u);p.length===0&&v!==void 0?(e.state.env.set(`${u}_0`,v),e.state.env.delete(u),g=1):p.length>0&&(g=Math.max(...p)+1);for(let C=0;C<m.length;C++)e.state.env.set(`${u}_${g+C}`,j(e,m[C]));let $=g+m.length;e.state.env.set(`${u}__length`,String($))}se(e,u);continue}let c=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(c){let u=c[1],d=j(e,c[2]),h=K(e,u);if(h)return h;let m=e.state.env.get(u)??"";e.state.env.set(u,m+d),se(e,u);continue}let l=Dn(a);if(l.value===void 0&&!l.isArray){se(e,l.name);continue}let f=await Tn(e,l,{makeReadonly:!0});if(f)return f}return L}function Es(e){return e.state.directoryStack??=[],e.state.directoryStack}function tt(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Ti(e){let t=e.split("/").filter(n=>n&&n!=="."),s=[];for(let n of t)n===".."?s.pop():s.push(n);return`/${s.join("/")}`}async function bs(e,t){let s=Es(e),n;for(let o=0;o<t.length;o++){let c=t[o];if(c==="--"){if(o+1<t.length){if(n!==void 0)return S(`bash: pushd: too many arguments
105
+ `,O=1;continue}e.state.env.set(k,x),Ee(e,k),x!==""&&Ut(e,x)&&jt(e,k),E(k),r&&se(e,k),i&&ue(e,k);continue}if(u&&gs(e,k),d&&ws(e,k),h&&vs(e,k),et(e,k)&&(x=await Xn(e,x)),x=Be(e,k,x),oe(e,k)){let M=Ne(e,k);M&&M!==k?e.state.env.set(M,x):e.state.env.set(k,x)}else e.state.env.set(k,x);E(k),r&&se(e,k),i&&ue(e,k),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(k))}else{let b=D;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(b)){_+=`bash: typeset: \`${b}': not a valid identifier
106
+ `,O=1;continue}if(s||n?w(b):y(b),o){Ee(e,b);let x=e.state.env.get(b);x!==void 0&&x!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(x)?en(e,b):x&&Ut(e,x)&&jt(e,b),E(b),r&&se(e,b),i&&ue(e,b);continue}if(u&&gs(e,b),d&&ws(e,b),h&&vs(e,b),n){if(Q(e,b).length>0){_+=`bash: declare: ${b}: cannot convert indexed to associative array
107
+ `,O=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(b)}let k=Array.from(e.state.env.keys()).some(x=>x.startsWith(`${b}_`)&&!x.startsWith(`${b}__length`));!e.state.env.has(b)&&!k&&(s||n?e.state.env.set(`${b}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(b))),E(b),r&&se(e,b),i&&ue(e,b)}}return P("",_,O)}async function bs(e,t){let s=!1,n=!1,r=!1,i=[];for(let a=0;a<t.length;a++){let o=t[a];if(o==="-a")s=!0;else if(o==="-A")n=!0;else if(o==="-p")r=!0;else if(o==="--"){i.push(...t.slice(a+1));break}else o.startsWith("-")||i.push(o)}if(i.length===0){let a="",o=Array.from(e.state.readonlyVars||[]).sort();for(let c of o){let l=e.state.env.get(c);if(l!==void 0){let f=l.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${c}="${f}"
108
+ `}}return F(a)}for(let a of i){let o=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(o){let u=o[1],d=o[2],h=K(e,u);if(h)return h;let m=ye(d);if(e.state.associativeArrays?.has(u)){let p=_t(d);for(let[g,v]of p){let $=j(e,v);e.state.env.set(`${u}_${g}`,$)}}else{let p=Q(e,u),g=0,v=e.state.env.get(u);p.length===0&&v!==void 0?(e.state.env.set(`${u}_0`,v),e.state.env.delete(u),g=1):p.length>0&&(g=Math.max(...p)+1);for(let N=0;N<m.length;N++)e.state.env.set(`${u}_${g+N}`,j(e,m[N]));let $=g+m.length;e.state.env.set(`${u}__length`,String($))}se(e,u);continue}let c=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(c){let u=c[1],d=j(e,c[2]),h=K(e,u);if(h)return h;let m=e.state.env.get(u)??"";e.state.env.set(u,m+d),se(e,u);continue}let l=In(a);if(l.value===void 0&&!l.isArray){se(e,l.name);continue}let f=await Rn(e,l,{makeReadonly:!0});if(f)return f}return L}function $s(e){return e.state.directoryStack??=[],e.state.directoryStack}function tt(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function xi(e){let t=e.split("/").filter(n=>n&&n!=="."),s=[];for(let n of t)n===".."?s.pop():s.push(n);return`/${s.join("/")}`}async function Ss(e,t){let s=$s(e),n;for(let o=0;o<t.length;o++){let c=t[o];if(c==="--"){if(o+1<t.length){if(n!==void 0)return S(`bash: pushd: too many arguments
109
109
  `,2);n=t[o+1],o++}}else{if(c.startsWith("-")&&c!=="-")return S(`bash: pushd: ${c}: invalid option
110
110
  `,2);if(n!==void 0)return S(`bash: pushd: too many arguments
111
111
  `,2);n=c}}if(n===void 0){if(s.length<2)return S(`bash: pushd: no other directory
112
- `,1);let o=s[0];s[0]=s[1],s[1]=o,n=s[0]}let r;if(n.startsWith("/"))r=n;else if(n===".."){let o=e.state.cwd.split("/").filter(c=>c);o.pop(),r=`/${o.join("/")}`}else n==="."?r=e.state.cwd:n.startsWith("~")?r=(e.state.env.get("HOME")||"/")+n.slice(1):r=`${e.state.cwd}/${n}`;r=Ti(r);try{if(!(await e.fs.stat(r)).isDirectory)return S(`bash: pushd: ${n}: Not a directory
112
+ `,1);let o=s[0];s[0]=s[1],s[1]=o,n=s[0]}let r;if(n.startsWith("/"))r=n;else if(n===".."){let o=e.state.cwd.split("/").filter(c=>c);o.pop(),r=`/${o.join("/")}`}else n==="."?r=e.state.cwd:n.startsWith("~")?r=(e.state.env.get("HOME")||"/")+n.slice(1):r=`${e.state.cwd}/${n}`;r=xi(r);try{if(!(await e.fs.stat(r)).isDirectory)return S(`bash: pushd: ${n}: Not a directory
113
113
  `,1)}catch{return S(`bash: pushd: ${n}: No such file or directory
114
114
  `,1)}s.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",a=`${[r,...s].map(o=>tt(o,i)).join(" ")}
115
- `;return F(a)}function $s(e,t){let s=Es(e);for(let a of t)if(a!=="--")return a.startsWith("-")&&a!=="-"?S(`bash: popd: ${a}: invalid option
115
+ `;return F(a)}function As(e,t){let s=$s(e);for(let a of t)if(a!=="--")return a.startsWith("-")&&a!=="-"?S(`bash: popd: ${a}: invalid option
116
116
  `,2):S(`bash: popd: too many arguments
117
117
  `,2);if(s.length===0)return S(`bash: popd: directory stack empty
118
118
  `,1);let n=s.shift();if(!n)return S(`bash: popd: directory stack empty
119
119
  `,1);e.state.previousDir=e.state.cwd,e.state.cwd=n,e.state.env.set("PWD",n),e.state.env.set("OLDPWD",e.state.previousDir);let r=e.state.env.get("HOME")||"",i=`${[n,...s].map(a=>tt(a,r)).join(" ")}
120
- `;return F(i)}function Ss(e,t){let s=Es(e),n=!1,r=!1,i=!1,a=!1;for(let f of t)if(f!=="--")if(f.startsWith("-"))for(let u of f.slice(1))if(u==="c")n=!0;else if(u==="l")r=!0;else if(u==="p")i=!0;else if(u==="v")i=!0,a=!0;else return S(`bash: dirs: -${u}: invalid option
120
+ `;return F(i)}function Ps(e,t){let s=$s(e),n=!1,r=!1,i=!1,a=!1;for(let f of t)if(f!=="--")if(f.startsWith("-"))for(let u of f.slice(1))if(u==="c")n=!0;else if(u==="l")r=!0;else if(u==="p")i=!0;else if(u==="v")i=!0,a=!0;else return S(`bash: dirs: -${u}: invalid option
121
121
  `,2);else return S(`bash: dirs: too many arguments
122
122
  `,1);if(n)return e.state.directoryStack=[],L;let o=[e.state.cwd,...s],c=e.state.env.get("HOME")||"",l;return a?(l=o.map((f,u)=>{let d=r?f:tt(f,c);return` ${u} ${d}`}).join(`
123
123
  `),l+=`
124
124
  `):i?l=o.map(f=>r?f:tt(f,c)).join(`
125
125
  `)+`
126
126
  `:l=o.map(f=>r?f:tt(f,c)).join(" ")+`
127
- `,F(l)}async function Dt(e,t,s){let n=t;if(n.length>0){let o=n[0];if(o==="--")n=n.slice(1);else if(o.startsWith("-")&&o!=="-"&&o.length>1)return S(`bash: eval: ${o}: invalid option
127
+ `,F(l)}async function Tt(e,t,s){let n=t;if(n.length>0){let o=n[0];if(o==="--")n=n.slice(1);else if(o.startsWith("-")&&o!=="-"&&o.length>1)return S(`bash: eval: ${o}: invalid option
128
128
  eval: usage: eval [arg ...]
129
129
  `,2)}if(n.length===0)return L;let r=n.join(" ");if(r.trim()==="")return L;let i=e.state.groupStdin,a=s??e.state.groupStdin;a!==void 0&&(e.state.groupStdin=a);try{let o=he(r);return await e.executeScript(o)}catch(o){if(o instanceof re||o instanceof ie||o instanceof te||o instanceof z)throw o;if(o.name==="ParseException")return S(`bash: eval: ${o.message}
130
- `);throw o}finally{e.state.groupStdin=i}}function As(e,t){let s,n="";if(t.length===0)s=e.state.lastExitCode;else{let r=t[0],i=Number.parseInt(r,10);r===""||Number.isNaN(i)||!/^-?\d+$/.test(r)?(n=`bash: exit: ${r}: numeric argument required
131
- `,s=2):s=(i%256+256)%256}throw new z(s,"",n)}function Ps(e,t){let s=!1,n=[];for(let a of t)a==="-n"?s=!0:a==="-p"||a==="--"||n.push(a);if(n.length===0&&!s){let a="",o=e.state.exportedVars??new Set,c=Array.from(o).sort();for(let l of c){let f=e.state.env.get(l);if(f!==void 0){let u=f.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -x ${l}="${u}"
130
+ `);throw o}finally{e.state.groupStdin=i}}function _s(e,t){let s,n="";if(t.length===0)s=e.state.lastExitCode;else{let r=t[0],i=Number.parseInt(r,10);r===""||Number.isNaN(i)||!/^-?\d+$/.test(r)?(n=`bash: exit: ${r}: numeric argument required
131
+ `,s=2):s=(i%256+256)%256}throw new z(s,"",n)}function Cs(e,t){let s=!1,n=[];for(let a of t)a==="-n"?s=!0:a==="-p"||a==="--"||n.push(a);if(n.length===0&&!s){let a="",o=e.state.exportedVars??new Set,c=Array.from(o).sort();for(let l of c){let f=e.state.env.get(l);if(f!==void 0){let u=f.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -x ${l}="${u}"
132
132
  `}}return F(a)}if(s){for(let a of n){let o,c;if(a.includes("=")){let l=a.indexOf("=");o=a.slice(0,l),c=j(e,a.slice(l+1)),e.state.env.set(o,c)}else o=a;ut(e,o)}return L}let r="",i=0;for(let a of n){let o,c,l=!1,f=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(f)o=f[1],c=j(e,f[2]),l=!0;else if(a.includes("=")){let u=a.indexOf("=");o=a.slice(0,u),c=j(e,a.slice(u+1))}else o=a;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){r+=`bash: export: \`${a}': not a valid identifier
133
- `,i=1;continue}if(c!==void 0)if(l){let u=e.state.env.get(o)??"";e.state.env.set(o,u+c)}else e.state.env.set(o,c);else e.state.env.has(o)||e.state.env.set(o,"");ue(e,o)}return P("",r,i)}function Tt(e,t){if(t.length<2)return S(`bash: getopts: usage: getopts optstring name [arg ...]
134
- `);let s=t[0],n=t[1],r=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n),i=s.startsWith(":"),a=i?s.slice(1):s,o;if(t.length>2)o=t.slice(2);else{let p=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let g=1;g<=p;g++)o.push(e.state.env.get(String(g))||"")}let c=Number.parseInt(e.state.env.get("OPTIND")||"1",10);c<1&&(c=1);let l=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),c>o.length)return r||e.state.env.set(n,"?"),e.state.env.set("OPTIND",String(o.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:1,stdout:"",stderr:""};let f=o[c-1];if(!f||f==="-"||!f.startsWith("-"))return r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};if(f==="--")return e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};let u=l===0?1:l,d=f[u];if(!d)return e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),Tt(e,t);let h=a.indexOf(d);if(h===-1){let p="";return i?e.state.env.set("OPTARG",d):p=`bash: illegal option -- ${d}
133
+ `,i=1;continue}if(c!==void 0)if(l){let u=e.state.env.get(o)??"";e.state.env.set(o,u+c)}else e.state.env.set(o,c);else e.state.env.has(o)||e.state.env.set(o,"");ue(e,o)}return P("",r,i)}function It(e,t){if(t.length<2)return S(`bash: getopts: usage: getopts optstring name [arg ...]
134
+ `);let s=t[0],n=t[1],r=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n),i=s.startsWith(":"),a=i?s.slice(1):s,o;if(t.length>2)o=t.slice(2);else{let p=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let g=1;g<=p;g++)o.push(e.state.env.get(String(g))||"")}let c=Number.parseInt(e.state.env.get("OPTIND")||"1",10);c<1&&(c=1);let l=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),c>o.length)return r||e.state.env.set(n,"?"),e.state.env.set("OPTIND",String(o.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:1,stdout:"",stderr:""};let f=o[c-1];if(!f||f==="-"||!f.startsWith("-"))return r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};if(f==="--")return e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};let u=l===0?1:l,d=f[u];if(!d)return e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),It(e,t);let h=a.indexOf(d);if(h===-1){let p="";return i?e.state.env.set("OPTARG",d):p=`bash: illegal option -- ${d}
135
135
  `,r||e.state.env.set(n,"?"),u+1<f.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(u+1)),e.state.env.set("OPTIND",String(c))):(e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0")),{exitCode:r?2:0,stdout:"",stderr:p}}if(h+1<a.length&&a[h+1]===":")if(u+1<f.length)e.state.env.set("OPTARG",f.slice(u+1)),e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0");else{if(c>=o.length){let p="";return i?(e.state.env.set("OPTARG",d),r||e.state.env.set(n,":")):(p=`bash: option requires an argument -- ${d}
136
- `,r||e.state.env.set(n,"?")),e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:0,stdout:"",stderr:p}}e.state.env.set("OPTARG",o[c]),e.state.env.set("OPTIND",String(c+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else u+1<f.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(u+1)),e.state.env.set("OPTIND",String(c))):(e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return r||e.state.env.set(n,d),{exitCode:r?2:0,stdout:"",stderr:""}}async function _s(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,n=!1,r=!1,i=!1,a=!1,o="",c=[],l=0;for(;l<t.length;){let m=t[l];if(m==="--"){l++,c.push(...t.slice(l));break}if(m==="-r")s=!0,l++;else if(m==="-d")n=!0,l++;else if(m==="-l")r=!0,l++;else if(m==="-t")a=!0,l++;else if(m==="-p"){if(i=!0,l++,l>=t.length)return S(`bash: hash: -p: option requires an argument
136
+ `,r||e.state.env.set(n,"?")),e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:0,stdout:"",stderr:p}}e.state.env.set("OPTARG",o[c]),e.state.env.set("OPTIND",String(c+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else u+1<f.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(u+1)),e.state.env.set("OPTIND",String(c))):(e.state.env.set("OPTIND",String(c+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return r||e.state.env.set(n,d),{exitCode:r?2:0,stdout:"",stderr:""}}async function Ns(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,n=!1,r=!1,i=!1,a=!1,o="",c=[],l=0;for(;l<t.length;){let m=t[l];if(m==="--"){l++,c.push(...t.slice(l));break}if(m==="-r")s=!0,l++;else if(m==="-d")n=!0,l++;else if(m==="-l")r=!0,l++;else if(m==="-t")a=!0,l++;else if(m==="-p"){if(i=!0,l++,l>=t.length)return S(`bash: hash: -p: option requires an argument
137
137
  `,1);o=t[l],l++}else if(m.startsWith("-")&&m.length>1){for(let p of m.slice(1))if(p==="r")s=!0;else if(p==="d")n=!0;else if(p==="l")r=!0;else if(p==="t")a=!0;else return p==="p"?S(`bash: hash: -p: option requires an argument
138
138
  `,1):S(`bash: hash: -${p}: invalid option
139
139
  `,1);l++}else c.push(m),l++}if(s)return e.state.hashTable.clear(),L;if(n){if(c.length===0)return S(`bash: hash: -d: option requires an argument
@@ -149,39 +149,39 @@ eval: usage: eval [arg ...]
149
149
  `;for(let[,p]of e.state.hashTable)m+=` 1 ${p}
150
150
  `}return F(m)}let f=!1,u="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let m of c){if(m.includes("/")){u+=`bash: hash: ${m}: cannot use / in name
151
151
  `,f=!0;continue}let p=!1;for(let g of h){if(!g)continue;let v=`${g}/${m}`;if(await e.fs.exists(v)){e.state.hashTable.set(m,v),p=!0;break}}p||(u+=`bash: hash: ${m}: not found
152
- `,f=!0)}return f?S(u,1):L}var Gn={":":[": [arguments]",`Null command.
152
+ `,f=!0)}return f?S(u,1):L}var Kn=new Map([[":",[": [arguments]",`Null command.
153
153
  No effect; the command does nothing.
154
154
  Exit Status:
155
- Always succeeds.`],".":[". filename [arguments]",`Execute commands from a file in the current shell.
155
+ Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
156
156
  Read and execute commands from FILENAME in the current shell.
157
157
  The entries in $PATH are used to find the directory containing FILENAME.
158
158
  Exit Status:
159
- Returns the status of the last command executed in FILENAME.`],"[":["[ arg... ]",`Evaluate conditional expression.
159
+ Returns the status of the last command executed in FILENAME.`]],["[",["[ arg... ]",`Evaluate conditional expression.
160
160
  This is a synonym for the "test" builtin, but the last argument must
161
- be a literal \`]', to match the opening \`['.`],alias:["alias [-p] [name[=value] ... ]",`Define or display aliases.
161
+ be a literal \`]', to match the opening \`['.`]],["alias",["alias [-p] [name[=value] ... ]",`Define or display aliases.
162
162
  Without arguments, \`alias' prints the list of aliases in the reusable
163
163
  form \`alias NAME=VALUE' on standard output.
164
164
  Exit Status:
165
165
  alias returns true unless a NAME is supplied for which no alias has been
166
- defined.`],bg:["bg [job_spec ...]",`Move jobs to the background.
166
+ defined.`]],["bg",["bg [job_spec ...]",`Move jobs to the background.
167
167
  Place the jobs identified by each JOB_SPEC in the background, as if they
168
- had been started with \`&'.`],break:["break [n]",`Exit for, while, or until loops.
168
+ had been started with \`&'.`]],["break",["break [n]",`Exit for, while, or until loops.
169
169
  Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing
170
170
  loops.
171
171
  Exit Status:
172
- The exit status is 0 unless N is not greater than or equal to 1.`],builtin:["builtin [shell-builtin [arg ...]]",`Execute shell builtins.
172
+ The exit status is 0 unless N is not greater than or equal to 1.`]],["builtin",["builtin [shell-builtin [arg ...]]",`Execute shell builtins.
173
173
  Execute SHELL-BUILTIN with arguments ARGs without performing command
174
174
  lookup. This is useful when you wish to reimplement a shell builtin
175
175
  as a shell function, but need to execute the builtin within the function.
176
176
  Exit Status:
177
177
  Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is
178
- not a shell builtin.`],caller:["caller [expr]",`Return the context of the current subroutine call.
178
+ not a shell builtin.`]],["caller",["caller [expr]",`Return the context of the current subroutine call.
179
179
  Without EXPR, returns "$line $filename". With EXPR, returns
180
180
  "$line $subroutine $filename"; this extra information can be used to
181
181
  provide a stack trace.
182
182
  Exit Status:
183
183
  Returns 0 unless the shell is not executing a subroutine call or
184
- EXPR is invalid.`],cd:["cd [-L|-P] [dir]",`Change the shell working directory.
184
+ EXPR is invalid.`]],["cd",["cd [-L|-P] [dir]",`Change the shell working directory.
185
185
  Change the current directory to DIR. The default DIR is the value of the
186
186
  HOME shell variable.
187
187
 
@@ -202,7 +202,7 @@ eval: usage: eval [arg ...]
202
202
  The default is to follow symbolic links, as if \`-L' were specified.
203
203
 
204
204
  Exit Status:
205
- Returns 0 if the directory is changed; non-zero otherwise.`],command:["command [-pVv] command [arg ...]",`Execute a simple command or display information about commands.
205
+ Returns 0 if the directory is changed; non-zero otherwise.`]],["command",["command [-pVv] command [arg ...]",`Execute a simple command or display information about commands.
206
206
  Runs COMMAND with ARGS suppressing shell function lookup, or display
207
207
  information about the specified COMMANDs.
208
208
 
@@ -213,19 +213,19 @@ eval: usage: eval [arg ...]
213
213
  -V print a more verbose description of each COMMAND
214
214
 
215
215
  Exit Status:
216
- Returns exit status of COMMAND, or failure if COMMAND is not found.`],compgen:["compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]",`Display possible completions depending on the options.
216
+ Returns exit status of COMMAND, or failure if COMMAND is not found.`]],["compgen",["compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]",`Display possible completions depending on the options.
217
217
  Intended to be used from within a shell function generating possible
218
218
  completions. If the optional WORD argument is supplied, matches against
219
219
  WORD are generated.
220
220
  Exit Status:
221
- Returns success unless an invalid option is supplied or an error occurs.`],complete:["complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]",`Specify how arguments are to be completed.
221
+ Returns success unless an invalid option is supplied or an error occurs.`]],["complete",["complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]",`Specify how arguments are to be completed.
222
222
  For each NAME, specify how arguments are to be completed.
223
223
  Exit Status:
224
- Returns success unless an invalid option is supplied or an error occurs.`],continue:["continue [n]",`Resume for, while, or until loops.
224
+ Returns success unless an invalid option is supplied or an error occurs.`]],["continue",["continue [n]",`Resume for, while, or until loops.
225
225
  Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.
226
226
  If N is specified, resumes the Nth enclosing loop.
227
227
  Exit Status:
228
- The exit status is 0 unless N is not greater than or equal to 1.`],declare:["declare [-aAfFgilnrtux] [-p] [name[=value] ...]",`Set variable values and attributes.
228
+ The exit status is 0 unless N is not greater than or equal to 1.`]],["declare",["declare [-aAfFgilnrtux] [-p] [name[=value] ...]",`Set variable values and attributes.
229
229
  Declare variables and give them attributes. If no NAMEs are given,
230
230
  display the attributes and values of all variables.
231
231
 
@@ -242,13 +242,13 @@ eval: usage: eval [arg ...]
242
242
 
243
243
  Exit Status:
244
244
  Returns success unless an invalid option is supplied or a variable
245
- assignment error occurs.`],dirs:["dirs [-clpv] [+N] [-N]",`Display directory stack.
245
+ assignment error occurs.`]],["dirs",["dirs [-clpv] [+N] [-N]",`Display directory stack.
246
246
  Display the list of currently remembered directories. Directories
247
247
  find their way onto the list with the \`pushd' command; you can get
248
248
  back up through the list with the \`popd' command.
249
249
  Exit Status:
250
- Returns success unless an invalid option is supplied or an error occurs.`],disown:["disown [-h] [-ar] [jobspec ...]",`Remove jobs from current shell.
251
- Without any JOBSPECs, remove the current job.`],echo:["echo [-neE] [arg ...]",`Write arguments to the standard output.
250
+ Returns success unless an invalid option is supplied or an error occurs.`]],["disown",["disown [-h] [-ar] [jobspec ...]",`Remove jobs from current shell.
251
+ Without any JOBSPECs, remove the current job.`]],["echo",["echo [-neE] [arg ...]",`Write arguments to the standard output.
252
252
  Display the ARGs, separated by a single space character and followed by a
253
253
  newline, on the standard output.
254
254
 
@@ -258,21 +258,21 @@ eval: usage: eval [arg ...]
258
258
  -E explicitly suppress interpretation of backslash escapes
259
259
 
260
260
  Exit Status:
261
- Returns success unless a write error occurs.`],enable:["enable [-a] [-dnps] [-f filename] [name ...]",`Enable and disable shell builtins.
261
+ Returns success unless a write error occurs.`]],["enable",["enable [-a] [-dnps] [-f filename] [name ...]",`Enable and disable shell builtins.
262
262
  Enables and disables builtin shell commands.
263
263
  Exit Status:
264
- Returns success unless NAME is not a shell builtin or an error occurs.`],eval:["eval [arg ...]",`Execute arguments as a shell command.
264
+ Returns success unless NAME is not a shell builtin or an error occurs.`]],["eval",["eval [arg ...]",`Execute arguments as a shell command.
265
265
  Combine ARGs into a single string, use the result as input to the shell,
266
266
  and execute the resulting commands.
267
267
  Exit Status:
268
- Returns exit status of command or success if command is null.`],exec:["exec [-cl] [-a name] [command [arguments ...]] [redirection ...]",`Replace the shell with the given command.
268
+ Returns exit status of command or success if command is null.`]],["exec",["exec [-cl] [-a name] [command [arguments ...]] [redirection ...]",`Replace the shell with the given command.
269
269
  Execute COMMAND, replacing this shell with the specified program.
270
270
  ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,
271
271
  any redirections take effect in the current shell.
272
272
  Exit Status:
273
- Returns success unless COMMAND is not found or a redirection error occurs.`],exit:["exit [n]",`Exit the shell.
273
+ Returns success unless COMMAND is not found or a redirection error occurs.`]],["exit",["exit [n]",`Exit the shell.
274
274
  Exits the shell with a status of N. If N is omitted, the exit status
275
- is that of the last command executed.`],export:["export [-fn] [name[=value] ...] or export -p",`Set export attribute for shell variables.
275
+ is that of the last command executed.`]],["export",["export [-fn] [name[=value] ...] or export -p",`Set export attribute for shell variables.
276
276
  Marks each NAME for automatic export to the environment of subsequently
277
277
  executed commands. If VALUE is supplied, assign VALUE before exporting.
278
278
 
@@ -282,13 +282,13 @@ eval: usage: eval [arg ...]
282
282
  -p display a list of all exported variables and functions
283
283
 
284
284
  Exit Status:
285
- Returns success unless an invalid option is given or NAME is invalid.`],false:["false",`Return an unsuccessful result.
285
+ Returns success unless an invalid option is given or NAME is invalid.`]],["false",["false",`Return an unsuccessful result.
286
286
  Exit Status:
287
- Always fails.`],fc:["fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]",`Display or execute commands from the history list.
287
+ Always fails.`]],["fc",["fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]",`Display or execute commands from the history list.
288
288
  Exit Status:
289
- Returns success or status of executed command.`],fg:["fg [job_spec]",`Move job to the foreground.
289
+ Returns success or status of executed command.`]],["fg",["fg [job_spec]",`Move job to the foreground.
290
290
  Place the job identified by JOB_SPEC in the foreground, making it the
291
- current job.`],getopts:["getopts optstring name [arg]",`Parse option arguments.
291
+ current job.`]],["getopts",["getopts optstring name [arg]",`Parse option arguments.
292
292
  Getopts is used by shell procedures to parse positional parameters
293
293
  as options.
294
294
 
@@ -297,10 +297,10 @@ eval: usage: eval [arg ...]
297
297
  which should be separated from it by white space.
298
298
  Exit Status:
299
299
  Returns success if an option is found; fails if the end of options is
300
- encountered or an error occurs.`],hash:["hash [-lr] [-p pathname] [-dt] [name ...]",`Remember or display program locations.
300
+ encountered or an error occurs.`]],["hash",["hash [-lr] [-p pathname] [-dt] [name ...]",`Remember or display program locations.
301
301
  Determine and remember the full pathname of each command NAME.
302
302
  Exit Status:
303
- Returns success unless NAME is not found or an invalid option is given.`],help:["help [-s] [pattern ...]",`Display information about builtin commands.
303
+ Returns success unless NAME is not found or an invalid option is given.`]],["help",["help [-s] [pattern ...]",`Display information about builtin commands.
304
304
  Displays brief summaries of builtin commands. If PATTERN is
305
305
  specified, gives detailed help on all commands matching PATTERN,
306
306
  otherwise the list of help topics is printed.
@@ -310,23 +310,23 @@ eval: usage: eval [arg ...]
310
310
  PATTERN
311
311
 
312
312
  Exit Status:
313
- Returns success unless PATTERN is not found.`],history:["history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]",`Display or manipulate the history list.
313
+ Returns success unless PATTERN is not found.`]],["history",["history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]",`Display or manipulate the history list.
314
314
  Display the history list with line numbers, prefixing each modified
315
315
  entry with a \`*'.
316
316
  Exit Status:
317
- Returns success unless an invalid option is given or an error occurs.`],jobs:["jobs [-lnprs] [jobspec ...] or jobs -x command [args]",`Display status of jobs.
317
+ Returns success unless an invalid option is given or an error occurs.`]],["jobs",["jobs [-lnprs] [jobspec ...] or jobs -x command [args]",`Display status of jobs.
318
318
  Lists the active jobs.
319
319
  Exit Status:
320
- Returns success unless an invalid option is given or an error occurs.`],kill:["kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]",`Send a signal to a job.
320
+ Returns success unless an invalid option is given or an error occurs.`]],["kill",["kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]",`Send a signal to a job.
321
321
  Send the processes identified by PID or JOBSPEC the signal named by
322
322
  SIGSPEC or SIGNUM.
323
323
  Exit Status:
324
- Returns success unless an invalid option is given or an error occurs.`],let:["let arg [arg ...]",`Evaluate arithmetic expressions.
324
+ Returns success unless an invalid option is given or an error occurs.`]],["let",["let arg [arg ...]",`Evaluate arithmetic expressions.
325
325
  Evaluate each ARG as an arithmetic expression. Evaluation is done in
326
326
  fixed-width integers with no check for overflow, though division by 0
327
327
  is trapped and flagged as an error.
328
328
  Exit Status:
329
- If the last ARG evaluates to 0, let returns 1; 0 is returned otherwise.`],local:["local [option] name[=value] ...",`Define local variables.
329
+ If the last ARG evaluates to 0, let returns 1; 0 is returned otherwise.`]],["local",["local [option] name[=value] ...",`Define local variables.
330
330
  Create a local variable called NAME, and give it VALUE. OPTION can
331
331
  be any option accepted by \`declare'.
332
332
 
@@ -334,9 +334,9 @@ eval: usage: eval [arg ...]
334
334
  have a visible scope restricted to that function and its children.
335
335
  Exit Status:
336
336
  Returns success unless an invalid option is supplied, a variable
337
- assignment error occurs, or the shell is not executing a function.`],logout:["logout [n]",`Exit a login shell.
337
+ assignment error occurs, or the shell is not executing a function.`]],["logout",["logout [n]",`Exit a login shell.
338
338
  Exits a login shell with exit status N. Returns an error if not executed
339
- in a login shell.`],mapfile:["mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]",`Read lines from the standard input into an indexed array variable.
339
+ in a login shell.`]],["mapfile",["mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]",`Read lines from the standard input into an indexed array variable.
340
340
  Read lines from the standard input into the indexed array variable ARRAY,
341
341
  or from file descriptor FD if the -u option is supplied.
342
342
 
@@ -349,11 +349,11 @@ eval: usage: eval [arg ...]
349
349
  -u fd Read lines from file descriptor FD instead of standard input
350
350
 
351
351
  Exit Status:
352
- Returns success unless an invalid option is given or ARRAY is readonly.`],popd:["popd [-n] [+N | -N]",`Remove directories from stack.
352
+ Returns success unless an invalid option is given or ARRAY is readonly.`]],["popd",["popd [-n] [+N | -N]",`Remove directories from stack.
353
353
  Removes entries from the directory stack.
354
354
  Exit Status:
355
355
  Returns success unless an invalid argument is supplied or the directory
356
- change fails.`],printf:["printf [-v var] format [arguments]",`Formats and prints ARGUMENTS under control of the FORMAT.
356
+ change fails.`]],["printf",["printf [-v var] format [arguments]",`Formats and prints ARGUMENTS under control of the FORMAT.
357
357
 
358
358
  Options:
359
359
  -v var assign the output to shell variable VAR rather than
@@ -366,13 +366,13 @@ eval: usage: eval [arg ...]
366
366
  argument.
367
367
  Exit Status:
368
368
  Returns success unless an invalid option is given or a write or assignment
369
- error occurs.`],pushd:["pushd [-n] [+N | -N | dir]",`Add directories to stack.
369
+ error occurs.`]],["pushd",["pushd [-n] [+N | -N | dir]",`Add directories to stack.
370
370
  Adds a directory to the top of the directory stack, or rotates
371
371
  the stack, making the new top of the stack the current working
372
372
  directory.
373
373
  Exit Status:
374
374
  Returns success unless an invalid argument is supplied or the directory
375
- change fails.`],pwd:["pwd [-LP]",`Print the name of the current working directory.
375
+ change fails.`]],["pwd",["pwd [-LP]",`Print the name of the current working directory.
376
376
 
377
377
  Options:
378
378
  -L print the value of $PWD if it names the current working
@@ -382,7 +382,7 @@ eval: usage: eval [arg ...]
382
382
  By default, \`pwd' behaves as if \`-L' were specified.
383
383
  Exit Status:
384
384
  Returns 0 unless an invalid option is given or the current directory
385
- cannot be read.`],read:["read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]",`Read a line from the standard input and split it into fields.
385
+ cannot be read.`]],["read",["read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]",`Read a line from the standard input and split it into fields.
386
386
  Reads a single line from the standard input, or from file descriptor FD
387
387
  if the -u option is supplied. The line is split into fields as with word
388
388
  splitting, and the first word is assigned to the first NAME, the second
@@ -390,16 +390,16 @@ eval: usage: eval [arg ...]
390
390
  the last NAME.
391
391
  Exit Status:
392
392
  The return code is zero, unless end-of-file is encountered, read times out,
393
- or an invalid file descriptor is supplied as the argument to -u.`],readarray:["readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]","Read lines from a file into an array variable.\n A synonym for `mapfile'."],readonly:["readonly [-aAf] [name[=value] ...] or readonly -p",`Mark shell variables as unchangeable.
393
+ or an invalid file descriptor is supplied as the argument to -u.`]],["readarray",["readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]","Read lines from a file into an array variable.\n A synonym for `mapfile'."]],["readonly",["readonly [-aAf] [name[=value] ...] or readonly -p",`Mark shell variables as unchangeable.
394
394
  Mark each NAME as read-only; the values of these NAMEs may not be
395
395
  changed by subsequent assignment.
396
396
  Exit Status:
397
- Returns success unless an invalid option is given or NAME is invalid.`],return:["return [n]",`Return from a shell function.
397
+ Returns success unless an invalid option is given or NAME is invalid.`]],["return",["return [n]",`Return from a shell function.
398
398
  Causes a function or sourced script to exit with the return value
399
399
  specified by N. If N is omitted, the return status is that of the
400
400
  last command executed within the function or script.
401
401
  Exit Status:
402
- Returns N, or failure if the shell is not executing a function or script.`],set:["set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]",`Set or unset values of shell options and positional parameters.
402
+ Returns N, or failure if the shell is not executing a function or script.`]],["set",["set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]",`Set or unset values of shell options and positional parameters.
403
403
  Change the value of shell attributes and positional parameters, or
404
404
  display the names and values of shell variables.
405
405
 
@@ -411,11 +411,11 @@ eval: usage: eval [arg ...]
411
411
  Set the variable corresponding to option-name
412
412
 
413
413
  Exit Status:
414
- Returns success unless an invalid option is given.`],shift:["shift [n]",`Shift positional parameters.
414
+ Returns success unless an invalid option is given.`]],["shift",["shift [n]",`Shift positional parameters.
415
415
  Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is
416
416
  not given, it is assumed to be 1.
417
417
  Exit Status:
418
- Returns success unless N is negative or greater than $#.`],shopt:["shopt [-pqsu] [-o] [optname ...]",`Set and unset shell options.
418
+ Returns success unless N is negative or greater than $#.`]],["shopt",["shopt [-pqsu] [-o] [optname ...]",`Set and unset shell options.
419
419
  Change the setting of each shell option OPTNAME. Without any option
420
420
  arguments, list each supplied OPTNAME, or all shell options if no
421
421
  OPTNAMEs are given, with an indication of whether or not each is set.
@@ -429,27 +429,27 @@ eval: usage: eval [arg ...]
429
429
 
430
430
  Exit Status:
431
431
  Returns success if OPTNAME is enabled; fails if an invalid option is
432
- given or OPTNAME is disabled.`],source:["source filename [arguments]",`Execute commands from a file in the current shell.
432
+ given or OPTNAME is disabled.`]],["source",["source filename [arguments]",`Execute commands from a file in the current shell.
433
433
  Read and execute commands from FILENAME in the current shell.
434
434
  The entries in $PATH are used to find the directory containing FILENAME.
435
435
  Exit Status:
436
- Returns the status of the last command executed in FILENAME.`],suspend:["suspend [-f]",`Suspend shell execution.
437
- Suspend the execution of this shell until it receives a SIGCONT signal.`],test:["test [expr]",`Evaluate conditional expression.
436
+ Returns the status of the last command executed in FILENAME.`]],["suspend",["suspend [-f]",`Suspend shell execution.
437
+ Suspend the execution of this shell until it receives a SIGCONT signal.`]],["test",["test [expr]",`Evaluate conditional expression.
438
438
  Exits with a status of 0 (true) or 1 (false) depending on
439
439
  the evaluation of EXPR. Expressions may be unary or binary.
440
440
  Exit Status:
441
441
  Returns success if EXPR evaluates to true; fails if EXPR evaluates to
442
- false or an invalid argument is given.`],times:["times",`Display process times.
442
+ false or an invalid argument is given.`]],["times",["times",`Display process times.
443
443
  Prints the accumulated user and system times for the shell and all of its
444
444
  child processes.
445
445
  Exit Status:
446
- Always succeeds.`],trap:["trap [-lp] [[arg] signal_spec ...]",`Trap signals and other events.
446
+ Always succeeds.`]],["trap",["trap [-lp] [[arg] signal_spec ...]",`Trap signals and other events.
447
447
  Defines and activates handlers to be run when the shell receives signals
448
448
  or other conditions.
449
449
  Exit Status:
450
- Returns success unless a SIGSPEC is invalid or an invalid option is given.`],true:["true",`Return a successful result.
450
+ Returns success unless a SIGSPEC is invalid or an invalid option is given.`]],["true",["true",`Return a successful result.
451
451
  Exit Status:
452
- Always succeeds.`],type:["type [-afptP] name [name ...]",`Display information about command type.
452
+ Always succeeds.`]],["type",["type [-afptP] name [name ...]",`Display information about command type.
453
453
  For each NAME, indicate how it would be interpreted if used as a
454
454
  command name.
455
455
 
@@ -467,17 +467,17 @@ eval: usage: eval [arg ...]
467
467
  or not found, respectively
468
468
 
469
469
  Exit Status:
470
- Returns success if all of the NAMEs are found; fails if any are not found.`],typeset:["typeset [-aAfFgilnrtux] [-p] name[=value] ...","Set variable values and attributes.\n A synonym for `declare'."],ulimit:["ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]",`Modify shell resource limits.
470
+ Returns success if all of the NAMEs are found; fails if any are not found.`]],["typeset",["typeset [-aAfFgilnrtux] [-p] name[=value] ...","Set variable values and attributes.\n A synonym for `declare'."]],["ulimit",["ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]",`Modify shell resource limits.
471
471
  Provides control over the resources available to the shell and processes
472
472
  it creates, on systems that allow such control.
473
473
  Exit Status:
474
- Returns success unless an invalid option is supplied or an error occurs.`],umask:["umask [-p] [-S] [mode]",`Display or set file mode mask.
474
+ Returns success unless an invalid option is supplied or an error occurs.`]],["umask",["umask [-p] [-S] [mode]",`Display or set file mode mask.
475
475
  Sets the user file-creation mask to MODE. If MODE is omitted, prints
476
476
  the current value of the mask.
477
477
  Exit Status:
478
- Returns success unless MODE is invalid or an invalid option is given.`],unalias:["unalias [-a] name [name ...]",`Remove each NAME from the list of defined aliases.
478
+ Returns success unless MODE is invalid or an invalid option is given.`]],["unalias",["unalias [-a] name [name ...]",`Remove each NAME from the list of defined aliases.
479
479
  Exit Status:
480
- Returns success unless a NAME is not an existing alias.`],unset:["unset [-f] [-v] [-n] [name ...]",`Unset values and attributes of shell variables and functions.
480
+ Returns success unless a NAME is not an existing alias.`]],["unset",["unset [-f] [-v] [-n] [name ...]",`Unset values and attributes of shell variables and functions.
481
481
  For each NAME, remove the corresponding variable or function.
482
482
 
483
483
  Options:
@@ -489,34 +489,34 @@ eval: usage: eval [arg ...]
489
489
  Without options, unset first tries to unset a variable, and if that fails,
490
490
  tries to unset a function.
491
491
  Exit Status:
492
- Returns success unless an invalid option is given or a NAME is read-only.`],wait:["wait [-fn] [id ...]",`Wait for job completion and return exit status.
492
+ Returns success unless an invalid option is given or a NAME is read-only.`]],["wait",["wait [-fn] [id ...]",`Wait for job completion and return exit status.
493
493
  Waits for each process identified by an ID, which may be a process ID or a
494
494
  job specification, and reports its termination status.
495
495
  Exit Status:
496
496
  Returns the status of the last ID; fails if ID is invalid or an invalid
497
- option is given.`]},Xn=Object.keys(Gn).sort();function Ns(e,t){let s=!1,n=[],r=0;for(;r<t.length;){let c=t[r];if(c==="--"){for(r++;r<t.length;)n.push(t[r]),r++;break}if(c.startsWith("-")&&c.length>1){for(let l=1;l<c.length;l++){let f=c[l];if(f==="s")s=!0;else return S(`bash: help: -${f}: invalid option
498
- `,2)}r++}else n.push(c),r++}if(n.length===0)return Ri();let i="",a=!1,o="";for(let c of n){let l=Ii(c);if(l.length===0){o+=`bash: help: no help topics match \`${c}'. Try \`help help' or \`man -k ${c}' or \`info ${c}'.
499
- `,a=!0;continue}for(let f of l){let[u,d]=Gn[f];s?i+=`${f}: ${u}
500
- `:i+=`${f}: ${u}
501
- ${d}
502
- `}}return{exitCode:a?1:0,stdout:i,stderr:o}}function Ii(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=Ke(`^${t}$`);return Xn.filter(n=>s.test(n))}function Ri(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,s=Xn.slice(),n=Math.ceil(s.length/2);for(let r=0;r<n;r++){let i=s[r]||"",a=s[r+n]||"",o=i.padEnd(t);e.push(a?`${o}${a}`:i)}return F(`${e.join(`
497
+ option is given.`]]]),Yn=[...Kn.keys()].sort();function ks(e,t){let s=!1,n=[],r=0;for(;r<t.length;){let c=t[r];if(c==="--"){for(r++;r<t.length;)n.push(t[r]),r++;break}if(c.startsWith("-")&&c.length>1){for(let l=1;l<c.length;l++){let f=c[l];if(f==="s")s=!0;else return S(`bash: help: -${f}: invalid option
498
+ `,2)}r++}else n.push(c),r++}if(n.length===0)return Fi();let i="",a=!1,o="";for(let c of n){let l=Li(c);if(l.length===0){o+=`bash: help: no help topics match \`${c}'. Try \`help help' or \`man -k ${c}' or \`info ${c}'.
499
+ `,a=!0;continue}for(let f of l){let u=Kn.get(f);if(!u)continue;let[d,h]=u;s?i+=`${f}: ${d}
500
+ `:i+=`${f}: ${d}
501
+ ${h}
502
+ `}}return{exitCode:a?1:0,stdout:i,stderr:o}}function Li(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=Ke(`^${t}$`);return Yn.filter(n=>s.test(n))}function Fi(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,s=Yn.slice(),n=Math.ceil(s.length/2);for(let r=0;r<n;r++){let i=s[r]||"",a=s[r+n]||"",o=i.padEnd(t);e.push(a?`${o}${a}`:i)}return F(`${e.join(`
503
503
  `)}
504
- `)}function xi(e){let t=[],s="",n=0;for(let r of e){for(let i of r)i==="("?n++:i===")"&&n--;s?s+=` ${r}`:s=r,n===0&&(t.push(s),s="")}return s&&t.push(s),t}async function Cs(e,t){if(t.length===0)return S(`bash: let: expression expected
505
- `);let s=xi(t),n=0;for(let r of s)try{let a=he(`(( ${r} ))`).statements[0];if(a&&a.pipelines.length>0&&a.pipelines[0].commands.length>0){let o=a.pipelines[0].commands[0];o.type==="ArithmeticCommand"&&(n=await V(e,o.expression.expression))}}catch(i){return S(`bash: let: ${r}: ${i.message}
506
- `)}return P("","",n===0?1:0)}async function ks(e,t){if(e.state.localScopes.length===0)return S(`bash: local: can only be used in a function
504
+ `)}function Mi(e){let t=[],s="",n=0;for(let r of e){for(let i of r)i==="("?n++:i===")"&&n--;s?s+=` ${r}`:s=r,n===0&&(t.push(s),s="")}return s&&t.push(s),t}async function Os(e,t){if(t.length===0)return S(`bash: let: expression expected
505
+ `);let s=Mi(t),n=0;for(let r of s)try{let a=he(`(( ${r} ))`).statements[0];if(a&&a.pipelines.length>0&&a.pipelines[0].commands.length>0){let o=a.pipelines[0].commands[0];o.type==="ArithmeticCommand"&&(n=await V(e,o.expression.expression))}}catch(i){return S(`bash: let: ${r}: ${i.message}
506
+ `)}return P("","",n===0?1:0)}async function Ds(e,t){if(e.state.localScopes.length===0)return S(`bash: local: can only be used in a function
507
507
  `);let s=e.state.localScopes[e.state.localScopes.length-1],n="",r=0,i=!1,a=!1,o=!1,c=[];for(let l of t)if(l==="-n")i=!0;else if(l==="-a")a=!0;else if(l==="-p")o=!0;else if(l.startsWith("-")&&!l.includes("="))for(let f of l.slice(1))f==="n"?i=!0:f==="a"?a=!0:f==="p"&&(o=!0);else c.push(l);if(c.length===0){let l="",f=Array.from(s.keys()).filter(u=>!u.includes("_")||!u.match(/_\d+$/)).filter(u=>!u.includes("__length")).sort();for(let u of f){let d=e.state.env.get(u);d!==void 0&&(l+=`${u}=${d}
508
508
  `)}return P(l,"",0)}for(let l of c){let f,u,d=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){f=d[1];let v=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(f)){n+=`bash: local: \`${l}': not a valid identifier
509
- `,r=1;continue}if(K(e,f,"bash"),!s.has(f)){s.set(f,e.state.env.get(f));let y=`${f}_`;for(let w of e.state.env.keys())w.startsWith(y)&&!w.includes("__")&&(s.has(w)||s.set(w,e.state.env.get(w)))}let $=`${f}_`;for(let y of e.state.env.keys())y.startsWith($)&&!y.includes("__")&&e.state.env.delete(y);let C=ye(v);for(let y=0;y<C.length;y++)e.state.env.set(`${f}_${y}`,C[y]);e.state.env.set(`${f}__length`,String(C.length)),De(e,f),i&&Ee(e,f);continue}let h=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){f=h[1];let v=h[2];if(K(e,f,"bash"),!s.has(f)){s.set(f,e.state.env.get(f));let _=`${f}_`;for(let D of e.state.env.keys())D.startsWith(_)&&!D.includes("__")&&(s.has(D)||s.set(D,e.state.env.get(D)));let O=`${f}__length`;e.state.env.has(O)&&!s.has(O)&&s.set(O,e.state.env.get(O))}let $=ye(v),C=Q(e,f),y=0,w=e.state.env.get(f);C.length===0&&w!==void 0?(e.state.env.set(`${f}_0`,w),e.state.env.delete(f),y=1):C.length>0&&(y=Math.max(...C)+1);for(let _=0;_<$.length;_++)e.state.env.set(`${f}_${y+_}`,j(e,$[_]));let E=y+$.length;e.state.env.set(`${f}__length`,String(E)),De(e,f),i&&Ee(e,f);continue}let m=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){f=m[1];let v=j(e,m[2]);K(e,f,"bash"),s.has(f)||s.set(f,e.state.env.get(f));let $=e.state.env.get(f)??"";e.state.env.set(f,$+v),De(e,f),i&&Ee(e,f);continue}let p=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){f=p[1];let v=p[2],$=j(e,p[3]);if(K(e,f,"bash"),!s.has(f)){s.set(f,e.state.env.get(f));let w=`${f}_`;for(let _ of e.state.env.keys())_.startsWith(w)&&!_.includes("__")&&(s.has(_)||s.set(_,e.state.env.get(_)));let E=`${f}__length`;e.state.env.has(E)&&!s.has(E)&&s.set(E,e.state.env.get(E))}let C;try{let w=new W,E=Z(w,v);C=await V(e,E.expression)}catch{let w=parseInt(v,10);C=Number.isNaN(w)?0:w}e.state.env.set(`${f}_${C}`,$);let y=parseInt(e.state.env.get(`${f}__length`)??"0",10);C>=y&&e.state.env.set(`${f}__length`,String(C+1)),De(e,f),i&&Ee(e,f);continue}if(l.includes("=")){let v=l.indexOf("=");f=l.slice(0,v),u=j(e,l.slice(v+1))}else f=l;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(f)){n+=`bash: local: \`${l}': not a valid identifier
510
- `,r=1;continue}let g=s.has(f);if(u!==void 0){let v=e.state.env.get(f);if(e.state.tempEnvBindings){let $=e.state.accessedTempEnvVars?.has(f),C=e.state.mutatedTempEnvVars?.has(f);if(!$&&!C)for(let y=e.state.tempEnvBindings.length-1;y>=0;y--){let w=e.state.tempEnvBindings[y];if(w.has(f)){v=w.get(f);break}}}In(e,f,v)}if(!g){let v=e.state.env.get(f);if(e.state.tempEnvBindings)for(let $=e.state.tempEnvBindings.length-1;$>=0;$--){let C=e.state.tempEnvBindings[$];if(C.has(f)){v=C.get(f);break}}if(s.set(f,v),a){let $=`${f}_`;for(let y of e.state.env.keys())y.startsWith($)&&!y.includes("__")&&(s.has(y)||s.set(y,e.state.env.get(y)));let C=`${f}__length`;e.state.env.has(C)&&!s.has(C)&&s.set(C,e.state.env.get(C))}}if(a&&u===void 0){let v=`${f}_`;for(let $ of e.state.env.keys())$.startsWith(v)&&!$.includes("__")&&e.state.env.delete($);e.state.env.set(`${f}__length`,"0")}else if(u!==void 0){if(K(e,f,"bash"),i&&u!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(u)){n+=`bash: local: \`${u}': invalid variable name for name reference
511
- `,r=1;continue}e.state.env.set(f,u),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(f))}else{let v=e.state.tempEnvBindings?.some($=>$.has(f));!g&&!v&&e.state.env.delete(f)}De(e,f),i&&Ee(e,f)}return P("",n,r)}function Os(e,t,s){let n=`
509
+ `,r=1;continue}if(K(e,f,"bash"),!s.has(f)){s.set(f,e.state.env.get(f));let y=`${f}_`;for(let w of e.state.env.keys())w.startsWith(y)&&!w.includes("__")&&(s.has(w)||s.set(w,e.state.env.get(w)))}let $=`${f}_`;for(let y of e.state.env.keys())y.startsWith($)&&!y.includes("__")&&e.state.env.delete(y);let N=ye(v);for(let y=0;y<N.length;y++)e.state.env.set(`${f}_${y}`,N[y]);e.state.env.set(`${f}__length`,String(N.length)),Oe(e,f),i&&Ee(e,f);continue}let h=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){f=h[1];let v=h[2];if(K(e,f,"bash"),!s.has(f)){s.set(f,e.state.env.get(f));let _=`${f}_`;for(let D of e.state.env.keys())D.startsWith(_)&&!D.includes("__")&&(s.has(D)||s.set(D,e.state.env.get(D)));let O=`${f}__length`;e.state.env.has(O)&&!s.has(O)&&s.set(O,e.state.env.get(O))}let $=ye(v),N=Q(e,f),y=0,w=e.state.env.get(f);N.length===0&&w!==void 0?(e.state.env.set(`${f}_0`,w),e.state.env.delete(f),y=1):N.length>0&&(y=Math.max(...N)+1);for(let _=0;_<$.length;_++)e.state.env.set(`${f}_${y+_}`,j(e,$[_]));let E=y+$.length;e.state.env.set(`${f}__length`,String(E)),Oe(e,f),i&&Ee(e,f);continue}let m=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){f=m[1];let v=j(e,m[2]);K(e,f,"bash"),s.has(f)||s.set(f,e.state.env.get(f));let $=e.state.env.get(f)??"";e.state.env.set(f,$+v),Oe(e,f),i&&Ee(e,f);continue}let p=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){f=p[1];let v=p[2],$=j(e,p[3]);if(K(e,f,"bash"),!s.has(f)){s.set(f,e.state.env.get(f));let w=`${f}_`;for(let _ of e.state.env.keys())_.startsWith(w)&&!_.includes("__")&&(s.has(_)||s.set(_,e.state.env.get(_)));let E=`${f}__length`;e.state.env.has(E)&&!s.has(E)&&s.set(E,e.state.env.get(E))}let N;try{let w=new W,E=Z(w,v);N=await V(e,E.expression)}catch{let w=parseInt(v,10);N=Number.isNaN(w)?0:w}e.state.env.set(`${f}_${N}`,$);let y=parseInt(e.state.env.get(`${f}__length`)??"0",10);N>=y&&e.state.env.set(`${f}__length`,String(N+1)),Oe(e,f),i&&Ee(e,f);continue}if(l.includes("=")){let v=l.indexOf("=");f=l.slice(0,v),u=j(e,l.slice(v+1))}else f=l;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(f)){n+=`bash: local: \`${l}': not a valid identifier
510
+ `,r=1;continue}let g=s.has(f);if(u!==void 0){let v=e.state.env.get(f);if(e.state.tempEnvBindings){let $=e.state.accessedTempEnvVars?.has(f),N=e.state.mutatedTempEnvVars?.has(f);if(!$&&!N)for(let y=e.state.tempEnvBindings.length-1;y>=0;y--){let w=e.state.tempEnvBindings[y];if(w.has(f)){v=w.get(f);break}}}xn(e,f,v)}if(!g){let v=e.state.env.get(f);if(e.state.tempEnvBindings)for(let $=e.state.tempEnvBindings.length-1;$>=0;$--){let N=e.state.tempEnvBindings[$];if(N.has(f)){v=N.get(f);break}}if(s.set(f,v),a){let $=`${f}_`;for(let y of e.state.env.keys())y.startsWith($)&&!y.includes("__")&&(s.has(y)||s.set(y,e.state.env.get(y)));let N=`${f}__length`;e.state.env.has(N)&&!s.has(N)&&s.set(N,e.state.env.get(N))}}if(a&&u===void 0){let v=`${f}_`;for(let $ of e.state.env.keys())$.startsWith(v)&&!$.includes("__")&&e.state.env.delete($);e.state.env.set(`${f}__length`,"0")}else if(u!==void 0){if(K(e,f,"bash"),i&&u!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(u)){n+=`bash: local: \`${u}': invalid variable name for name reference
511
+ `,r=1;continue}e.state.env.set(f,u),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(f))}else{let v=e.state.tempEnvBindings?.some($=>$.has(f));!g&&!v&&e.state.env.delete(f)}Oe(e,f),i&&Ee(e,f)}return P("",n,r)}function Ts(e,t,s){let n=`
512
512
  `,r=0,i=0,a=0,o=!1,c="MAPFILE",l=0;for(;l<t.length;){let v=t[l];v==="-d"&&l+1<t.length?(n=t[l+1]===""?"\0":t[l+1]||`
513
- `,l+=2):v==="-n"&&l+1<t.length?(r=Number.parseInt(t[l+1],10)||0,l+=2):v==="-O"&&l+1<t.length?(i=Number.parseInt(t[l+1],10)||0,l+=2):v==="-s"&&l+1<t.length?(a=Number.parseInt(t[l+1],10)||0,l+=2):v==="-t"?(o=!0,l++):v==="-u"||v==="-C"||v==="-c"?l+=2:(v.startsWith("-")||(c=v),l++)}let f=s;!f&&e.state.groupStdin!==void 0&&(f=e.state.groupStdin);let u=[],d=f,h=0,m=0;for(;d.length>0;){let v=d.indexOf(n);if(v===-1){if(d.length>0){if(m<a)m++;else if(r===0||h<r){let y=d,w=y.indexOf("\0");w!==-1&&(y=y.substring(0,w)),u.push(y),h++}}break}let $=d.substring(0,v),C=$.indexOf("\0");if(C!==-1&&($=$.substring(0,C)),!o&&n!=="\0"&&($+=n),d=d.substring(v+n.length),m<a){m++;continue}if(r>0&&h>=r)break;u.push($),h++}i===0&&pe(e,c);for(let v=0;v<u.length;v++)e.state.env.set(`${c}_${i+v}`,u[v]);let p=parseInt(e.state.env.get(`${c}__length`)||"0",10),g=i+u.length;return e.state.env.set(`${c}__length`,String(Math.max(p,g))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),P("","",0)}function Li(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),c=o.indexOf(":");if(c===-1)return null;let l=Number.parseInt(o.slice(0,c),10);if(Number.isNaN(l)||l<0)return null;let f=o.slice(c+1);return{path:i,position:l,content:f}}function Fi(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function Ds(e,t,s,n=-1){let r=!1,i=`
514
- `,a="",o=-1,c=-1,l=null,f=-1,u=-1,d=[],h=0,m=!1,p=(A,N)=>{let T=1;for(;T<A.length;){let b=A[T];if(b==="r")r=!0,T++;else if(b==="s")T++;else{if(b==="d")return T+1<A.length?(i=A.substring(T+1),{nextArgIndex:N+1}):N+1<t.length?(i=t[N+1],{nextArgIndex:N+2}):{nextArgIndex:N+1};if(b==="n"){if(T+1<A.length){let k=A.substring(T+1);return o=Number.parseInt(k,10),(Number.isNaN(o)||o<0)&&(m=!0,o=0),{nextArgIndex:N+1}}else if(N+1<t.length)return o=Number.parseInt(t[N+1],10),(Number.isNaN(o)||o<0)&&(m=!0,o=0),{nextArgIndex:N+2};return{nextArgIndex:N+1}}else if(b==="N"){if(T+1<A.length){let k=A.substring(T+1);return c=Number.parseInt(k,10),(Number.isNaN(c)||c<0)&&(m=!0,c=0),{nextArgIndex:N+1}}else if(N+1<t.length)return c=Number.parseInt(t[N+1],10),(Number.isNaN(c)||c<0)&&(m=!0,c=0),{nextArgIndex:N+2};return{nextArgIndex:N+1}}else{if(b==="a")return T+1<A.length?(l=A.substring(T+1),{nextArgIndex:N+1}):N+1<t.length?(l=t[N+1],{nextArgIndex:N+2}):{nextArgIndex:N+1};if(b==="p")return T+1<A.length?(a=A.substring(T+1),{nextArgIndex:N+1}):N+1<t.length?(a=t[N+1],{nextArgIndex:N+2}):{nextArgIndex:N+1};if(b==="u"){if(T+1<A.length){let k=A.substring(T+1);return f=Number.parseInt(k,10),Number.isNaN(f)||f<0?{nextArgIndex:-2}:{nextArgIndex:N+1}}else if(N+1<t.length)return f=Number.parseInt(t[N+1],10),Number.isNaN(f)||f<0?{nextArgIndex:-2}:{nextArgIndex:N+2};return{nextArgIndex:N+1}}else if(b==="t"){if(T+1<A.length){let k=A.substring(T+1);return u=Number.parseFloat(k),Number.isNaN(u)&&(u=0),{nextArgIndex:N+1}}else if(N+1<t.length)return u=Number.parseFloat(t[N+1]),Number.isNaN(u)&&(u=0),{nextArgIndex:N+2};return{nextArgIndex:N+1}}else if(b==="e"||b==="i"||b==="P"){if(b==="i"&&N+1<t.length)return{nextArgIndex:N+2};T++}else T++}}}return{nextArgIndex:N+1}};for(;h<t.length;){let A=t[h];if(A.startsWith("-")&&A.length>1&&A!=="--"){let N=p(A,h);if(N.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(N.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=N.nextArgIndex}else if(A==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(A),h++}if(m)return P("","",1);if(d.length===0&&l===null&&d.push("REPLY"),u===0){if(l)pe(e,l);else{for(let A of d)e.state.env.set(A,"");d.length===0&&e.state.env.set("REPLY","")}return P("","",0)}if(u<0&&u!==-1)return P("","",1);let g=s;f>=0?e.state.fileDescriptors?g=e.state.fileDescriptors.get(f)||"":g="":!g&&e.state.groupStdin!==void 0&&(g=e.state.groupStdin);let v=i===""?"\0":i,$="",C=0,y=!0,w=A=>{if(f>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(f,g.substring(A));else if(n>=0&&e.state.fileDescriptors){let N=e.state.fileDescriptors.get(n);if(N?.startsWith("__rw__:")){let T=Li(N);if(T){let b=T.position+A;e.state.fileDescriptors.set(n,Fi(T.path,b,T.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=g.substring(A))};if(c>=0){let A=Math.min(c,g.length);$=g.substring(0,A),C=A,y=A>=c,w(C);let N=d[0]||"REPLY";e.state.env.set(N,$);for(let T=1;T<d.length;T++)e.state.env.set(d[T],"");return P("","",y?0:1)}else if(o>=0){let A=0,N=0,T=!1;for(;N<g.length&&A<o;){let b=g[N];if(b===v){C=N+1,T=!0;break}if(!r&&b==="\\"&&N+1<g.length){let k=g[N+1];if(k===v&&v===`
515
- `){N+=2,C=N;continue}if(k===v){N+=2,A++,$+=k,C=N;continue}$+=k,N+=2,A++,C=N}else $+=b,N++,A++,C=N}y=A>=o||T,w(C)}else{C=0;let A=0;for(;A<g.length;){let N=g[A];if(N===v){C=A+v.length,y=!0;break}if(!r&&N==="\\"&&A+1<g.length){let T=g[A+1];if(T===`
516
- `){A+=2;continue}if(T===v){$+=T,A+=2;continue}$+=N,$+=T,A+=2;continue}$+=N,A++}if(A>=g.length&&(y=!1,C=A,$.length===0&&g.length===0)){for(let N of d)e.state.env.set(N,"");return l&&pe(e,l),P("","",1)}w(C)}v===`
513
+ `,l+=2):v==="-n"&&l+1<t.length?(r=Number.parseInt(t[l+1],10)||0,l+=2):v==="-O"&&l+1<t.length?(i=Number.parseInt(t[l+1],10)||0,l+=2):v==="-s"&&l+1<t.length?(a=Number.parseInt(t[l+1],10)||0,l+=2):v==="-t"?(o=!0,l++):v==="-u"||v==="-C"||v==="-c"?l+=2:(v.startsWith("-")||(c=v),l++)}let f=s;!f&&e.state.groupStdin!==void 0&&(f=e.state.groupStdin);let u=[],d=f,h=0,m=0;for(;d.length>0;){let v=d.indexOf(n);if(v===-1){if(d.length>0){if(m<a)m++;else if(r===0||h<r){let y=d,w=y.indexOf("\0");w!==-1&&(y=y.substring(0,w)),u.push(y),h++}}break}let $=d.substring(0,v),N=$.indexOf("\0");if(N!==-1&&($=$.substring(0,N)),!o&&n!=="\0"&&($+=n),d=d.substring(v+n.length),m<a){m++;continue}if(r>0&&h>=r)break;u.push($),h++}i===0&&pe(e,c);for(let v=0;v<u.length;v++)e.state.env.set(`${c}_${i+v}`,u[v]);let p=parseInt(e.state.env.get(`${c}__length`)||"0",10),g=i+u.length;return e.state.env.set(`${c}__length`,String(Math.max(p,g))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),P("","",0)}function Wi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),c=o.indexOf(":");if(c===-1)return null;let l=Number.parseInt(o.slice(0,c),10);if(Number.isNaN(l)||l<0)return null;let f=o.slice(c+1);return{path:i,position:l,content:f}}function zi(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function Is(e,t,s,n=-1){let r=!1,i=`
514
+ `,a="",o=-1,c=-1,l=null,f=-1,u=-1,d=[],h=0,m=!1,p=(A,C)=>{let T=1;for(;T<A.length;){let b=A[T];if(b==="r")r=!0,T++;else if(b==="s")T++;else{if(b==="d")return T+1<A.length?(i=A.substring(T+1),{nextArgIndex:C+1}):C+1<t.length?(i=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if(b==="n"){if(T+1<A.length){let k=A.substring(T+1);return o=Number.parseInt(k,10),(Number.isNaN(o)||o<0)&&(m=!0,o=0),{nextArgIndex:C+1}}else if(C+1<t.length)return o=Number.parseInt(t[C+1],10),(Number.isNaN(o)||o<0)&&(m=!0,o=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if(b==="N"){if(T+1<A.length){let k=A.substring(T+1);return c=Number.parseInt(k,10),(Number.isNaN(c)||c<0)&&(m=!0,c=0),{nextArgIndex:C+1}}else if(C+1<t.length)return c=Number.parseInt(t[C+1],10),(Number.isNaN(c)||c<0)&&(m=!0,c=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else{if(b==="a")return T+1<A.length?(l=A.substring(T+1),{nextArgIndex:C+1}):C+1<t.length?(l=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if(b==="p")return T+1<A.length?(a=A.substring(T+1),{nextArgIndex:C+1}):C+1<t.length?(a=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if(b==="u"){if(T+1<A.length){let k=A.substring(T+1);return f=Number.parseInt(k,10),Number.isNaN(f)||f<0?{nextArgIndex:-2}:{nextArgIndex:C+1}}else if(C+1<t.length)return f=Number.parseInt(t[C+1],10),Number.isNaN(f)||f<0?{nextArgIndex:-2}:{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if(b==="t"){if(T+1<A.length){let k=A.substring(T+1);return u=Number.parseFloat(k),Number.isNaN(u)&&(u=0),{nextArgIndex:C+1}}else if(C+1<t.length)return u=Number.parseFloat(t[C+1]),Number.isNaN(u)&&(u=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if(b==="e"||b==="i"||b==="P"){if(b==="i"&&C+1<t.length)return{nextArgIndex:C+2};T++}else T++}}}return{nextArgIndex:C+1}};for(;h<t.length;){let A=t[h];if(A.startsWith("-")&&A.length>1&&A!=="--"){let C=p(A,h);if(C.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(C.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=C.nextArgIndex}else if(A==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(A),h++}if(m)return P("","",1);if(d.length===0&&l===null&&d.push("REPLY"),u===0){if(l)pe(e,l);else{for(let A of d)e.state.env.set(A,"");d.length===0&&e.state.env.set("REPLY","")}return P("","",0)}if(u<0&&u!==-1)return P("","",1);let g=s;f>=0?e.state.fileDescriptors?g=e.state.fileDescriptors.get(f)||"":g="":!g&&e.state.groupStdin!==void 0&&(g=e.state.groupStdin);let v=i===""?"\0":i,$="",N=0,y=!0,w=A=>{if(f>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(f,g.substring(A));else if(n>=0&&e.state.fileDescriptors){let C=e.state.fileDescriptors.get(n);if(C?.startsWith("__rw__:")){let T=Wi(C);if(T){let b=T.position+A;e.state.fileDescriptors.set(n,zi(T.path,b,T.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=g.substring(A))};if(c>=0){let A=Math.min(c,g.length);$=g.substring(0,A),N=A,y=A>=c,w(N);let C=d[0]||"REPLY";e.state.env.set(C,$);for(let T=1;T<d.length;T++)e.state.env.set(d[T],"");return P("","",y?0:1)}else if(o>=0){let A=0,C=0,T=!1;for(;C<g.length&&A<o;){let b=g[C];if(b===v){N=C+1,T=!0;break}if(!r&&b==="\\"&&C+1<g.length){let k=g[C+1];if(k===v&&v===`
515
+ `){C+=2,N=C;continue}if(k===v){C+=2,A++,$+=k,N=C;continue}$+=k,C+=2,A++,N=C}else $+=b,C++,A++,N=C}y=A>=o||T,w(N)}else{N=0;let A=0;for(;A<g.length;){let C=g[A];if(C===v){N=A+v.length,y=!0;break}if(!r&&C==="\\"&&A+1<g.length){let T=g[A+1];if(T===`
516
+ `){A+=2;continue}if(T===v){$+=T,A+=2;continue}$+=C,$+=T,A+=2;continue}$+=C,A++}if(A>=g.length&&(y=!1,N=A,$.length===0&&g.length===0)){for(let C of d)e.state.env.set(C,"");return l&&pe(e,l),P("","",1)}w(N)}v===`
517
517
  `&&$.endsWith(`
518
- `)&&($=$.slice(0,-1));let E=A=>r?A:A.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",E($)),P("","",y?0:1);let _=Xs(e.state.env);if(l){let{words:A}=Bt($,_,void 0,r);pe(e,l);for(let N=0;N<A.length;N++)e.state.env.set(`${l}_${N}`,E(A[N]));return P("","",y?0:1)}let O=d.length,{words:D,wordStarts:R}=Bt($,_,O,r);for(let A=0;A<d.length;A++){let N=d[A];if(A<d.length-1)e.state.env.set(N,E(D[A]??""));else if(A<R.length){let T=$.substring(R[A]);T=Ks(T,_,r),T=E(T),e.state.env.set(N,T)}else e.state.env.set(N,"")}return P("","",y?0:1)}function Ts(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return S("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let n=t[0],r=Number.parseInt(n,10);if(n===""||Number.isNaN(r)||!/^-?\d+$/.test(n))return S(`bash: return: ${n}: numeric argument required
519
- `,2);s=(r%256+256)%256}throw new te(s)}var It=`set: usage: set [-eux] [+eux] [-o option] [+o option]
518
+ `)&&($=$.slice(0,-1));let E=A=>r?A:A.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",E($)),P("","",y?0:1);let _=Ys(e.state.env);if(l){let{words:A}=Ht($,_,void 0,r);pe(e,l);for(let C=0;C<A.length;C++)e.state.env.set(`${l}_${C}`,E(A[C]));return P("","",y?0:1)}let O=d.length,{words:D,wordStarts:R}=Ht($,_,O,r);for(let A=0;A<d.length;A++){let C=d[A];if(A<d.length-1)e.state.env.set(C,E(D[A]??""));else if(A<R.length){let T=$.substring(R[A]);T=Qs(T,_,r),T=E(T),e.state.env.set(C,T)}else e.state.env.set(C,"")}return P("","",y?0:1)}function Rs(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return S("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let n=t[0],r=Number.parseInt(n,10);if(n===""||Number.isNaN(r)||!/^-?\d+$/.test(n))return S(`bash: return: ${n}: numeric argument required
519
+ `,2);s=(r%256+256)%256}throw new te(s)}var Rt=`set: usage: set [-eux] [+eux] [-o option] [+o option]
520
520
  Options:
521
521
  -e Exit immediately if a command exits with non-zero status
522
522
  +e Disable -e
@@ -532,56 +532,56 @@ Options:
532
532
  +o pipefail Disable pipefail
533
533
  -o xtrace Same as -x
534
534
  +o xtrace Disable xtrace
535
- `,Kn=new Map([["e","errexit"],["u","nounset"],["x","xtrace"],["v","verbose"],["f","noglob"],["C","noclobber"],["a","allexport"],["n","noexec"],["h",null],["b",null],["m",null],["B",null],["H",null],["P",null],["T",null],["E",null],["p",null]]),Yn=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["noclobber","noclobber"],["noglob","noglob"],["allexport","allexport"],["noexec","noexec"],["posix","posix"],["vi","vi"],["emacs","emacs"],["notify",null],["monitor",null],["braceexpand",null],["histexpand",null],["physical",null],["functrace",null],["errtrace",null],["privileged",null],["hashall",null],["ignoreeof",null],["interactive-comments",null],["keyword",null],["onecmd",null]]),Qn=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Jn=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function er(e,t,s){t!==null&&(s&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=s,Me(e))}function Mi(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Wi(e,t){let s=Q(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${xe(i)}`});return`${t}=(${n.join(" ")})`}function zi(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Vi(e,t){let s=Ce(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${zi(r)}]=${xe(i)}`});return`${t}=(${n.join(" ")} )`}function Bi(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let n of e.state.env.keys()){let r=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(r){let i=r[1];s.has(i)||t.add(i)}}return t}function Hi(e){return e.state.associativeArrays??new Set}function Rs(e,t){if(t.includes("--help"))return F(It);if(t.length===0){let n=Bi(e),r=Hi(e),i=c=>{for(let l of r){let f=`${l}_`,u=`${l}__length`;if(c!==u&&c.startsWith(f)){if(c.slice(f.length).startsWith("_length"))continue;return!0}}return!1},a=[];for(let[c,l]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c)||n.has(c)||r.has(c))continue;let f=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(f&&n.has(f[1]))continue;let u=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);u&&n.has(u[1])||i(c)||u&&r.has(u[1])||a.push([c,l])}let o=[];for(let[c,l]of a.sort(([f],[u])=>f<u?-1:f>u?1:0))o.push(`${c}=${Ot(l)}`);for(let c of[...n].sort((l,f)=>l<f?-1:l>f?1:0))o.push(Wi(e,c));for(let c of[...r].sort((l,f)=>l<f?-1:l>f?1:0))o.push(Vi(e,c));return o.sort((c,l)=>{let f=c.split("=")[0],u=l.split("=")[0];return f<u?-1:f>u?1:0}),F(o.length>0?`${o.join(`
535
+ `,Qn=new Map([["e","errexit"],["u","nounset"],["x","xtrace"],["v","verbose"],["f","noglob"],["C","noclobber"],["a","allexport"],["n","noexec"],["h",null],["b",null],["m",null],["B",null],["H",null],["P",null],["T",null],["E",null],["p",null]]),Jn=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["noclobber","noclobber"],["noglob","noglob"],["allexport","allexport"],["noexec","noexec"],["posix","posix"],["vi","vi"],["emacs","emacs"],["notify",null],["monitor",null],["braceexpand",null],["histexpand",null],["physical",null],["functrace",null],["errtrace",null],["privileged",null],["hashall",null],["ignoreeof",null],["interactive-comments",null],["keyword",null],["onecmd",null]]),er=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],tr=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function sr(e,t,s){t!==null&&(s&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=s,Me(e))}function Vi(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Bi(e,t){let s=Q(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${xe(i)}`});return`${t}=(${n.join(" ")})`}function Hi(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function ji(e,t){let s=Ce(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${Hi(r)}]=${xe(i)}`});return`${t}=(${n.join(" ")} )`}function Ui(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let n of e.state.env.keys()){let r=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(r){let i=r[1];s.has(i)||t.add(i)}}return t}function qi(e){return e.state.associativeArrays??new Set}function Ls(e,t){if(t.includes("--help"))return F(Rt);if(t.length===0){let n=Ui(e),r=qi(e),i=c=>{for(let l of r){let f=`${l}_`,u=`${l}__length`;if(c!==u&&c.startsWith(f)){if(c.slice(f.length).startsWith("_length"))continue;return!0}}return!1},a=[];for(let[c,l]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c)||n.has(c)||r.has(c))continue;let f=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(f&&n.has(f[1]))continue;let u=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);u&&n.has(u[1])||i(c)||u&&r.has(u[1])||a.push([c,l])}let o=[];for(let[c,l]of a.sort(([f],[u])=>f<u?-1:f>u?1:0))o.push(`${c}=${Dt(l)}`);for(let c of[...n].sort((l,f)=>l<f?-1:l>f?1:0))o.push(Bi(e,c));for(let c of[...r].sort((l,f)=>l<f?-1:l>f?1:0))o.push(ji(e,c));return o.sort((c,l)=>{let f=c.split("=")[0],u=l.split("=")[0];return f<u?-1:f>u?1:0}),F(o.length>0?`${o.join(`
536
536
  `)}
537
- `:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&Mi(t,s)){let r=t[s+1];if(!Yn.has(r)){let i=`bash: set: ${r}: invalid option name
538
- ${It}`;if(e.state.options.posix)throw new ce(1,"",i);return S(i)}er(e,Yn.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=Qn.map(o=>`${o.padEnd(16)}${e.state.options[o]?"on":"off"}`),i=Jn.map(o=>`${o.padEnd(16)}off`),a=[...r,...i].sort();return F(`${a.join(`
537
+ `:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&Vi(t,s)){let r=t[s+1];if(!Jn.has(r)){let i=`bash: set: ${r}: invalid option name
538
+ ${Rt}`;if(e.state.options.posix)throw new ce(1,"",i);return S(i)}sr(e,Jn.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=er.map(o=>`${o.padEnd(16)}${e.state.options[o]?"on":"off"}`),i=tr.map(o=>`${o.padEnd(16)}off`),a=[...r,...i].sort();return F(`${a.join(`
539
539
  `)}
540
- `)}if(n==="+o"){let r=Qn.map(o=>`set ${e.state.options[o]?"-o":"+o"} ${o}`),i=Jn.map(o=>`set +o ${o}`),a=[...r,...i].sort();return F(`${a.join(`
540
+ `)}if(n==="+o"){let r=er.map(o=>`set ${e.state.options[o]?"-o":"+o"} ${o}`),i=tr.map(o=>`set +o ${o}`),a=[...r,...i].sort();return F(`${a.join(`
541
541
  `)}
542
- `)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let a=n[i];if(!Kn.has(a)){let o=`bash: set: ${n[0]}${a}: invalid option
543
- ${It}`;if(e.state.options.posix)throw new ce(1,"",o);return S(o)}er(e,Kn.get(a)??null,r)}s++;continue}if(n==="--")return Is(e,t.slice(s+1)),L;if(n==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Me(e),s+1<t.length)return Is(e,t.slice(s+1)),L;s++;continue}if(n==="+"){s++;continue}if(n.startsWith("-")||n.startsWith("+")){let r=`bash: set: ${n}: invalid option
544
- ${It}`;if(e.state.options.posix)throw new ce(1,"",r);return S(r)}return Is(e,t.slice(s)),L}return L}function Is(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let n=0;n<t.length;n++)e.state.env.set(String(n+1),t[n]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function xs(e,t){let s=1;if(t.length>0){let a=Number.parseInt(t[0],10);if(Number.isNaN(a)||a<0){let o=`bash: shift: ${t[0]}: numeric argument required
542
+ `)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let a=n[i];if(!Qn.has(a)){let o=`bash: set: ${n[0]}${a}: invalid option
543
+ ${Rt}`;if(e.state.options.posix)throw new ce(1,"",o);return S(o)}sr(e,Qn.get(a)??null,r)}s++;continue}if(n==="--")return xs(e,t.slice(s+1)),L;if(n==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Me(e),s+1<t.length)return xs(e,t.slice(s+1)),L;s++;continue}if(n==="+"){s++;continue}if(n.startsWith("-")||n.startsWith("+")){let r=`bash: set: ${n}: invalid option
544
+ ${Rt}`;if(e.state.options.posix)throw new ce(1,"",r);return S(r)}return xs(e,t.slice(s)),L}return L}function xs(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let n=0;n<t.length;n++)e.state.env.set(String(n+1),t[n]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function Fs(e,t){let s=1;if(t.length>0){let a=Number.parseInt(t[0],10);if(Number.isNaN(a)||a<0){let o=`bash: shift: ${t[0]}: numeric argument required
545
545
  `;if(e.state.options.posix)throw new ce(1,"",o);return S(o)}s=a}let n=Number.parseInt(e.state.env.get("#")||"0",10);if(s>n){let a=`bash: shift: shift count out of range
546
- `;if(e.state.options.posix)throw new ce(1,"",a);return S(a)}if(s===0)return L;let r=[];for(let a=1;a<=n;a++)r.push(e.state.env.get(String(a))||"");let i=r.slice(s);for(let a=1;a<=n;a++)e.state.env.delete(String(a));for(let a=0;a<i.length;a++)e.state.env.set(String(a+1),i[a]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),L}async function Ls(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return P("",`bash: source: filename argument required
546
+ `;if(e.state.options.posix)throw new ce(1,"",a);return S(a)}if(s===0)return L;let r=[];for(let a=1;a<=n;a++)r.push(e.state.env.get(String(a))||"");let i=r.slice(s);for(let a=1;a<=n;a++)e.state.env.delete(String(a));for(let a=0;a<i.length;a++)e.state.env.set(String(a+1),i[a]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),L}async function Ms(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return P("",`bash: source: filename argument required
547
547
  `,2);let n=s[0],r=null,i=null;if(n.includes("/")){let l=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(l),r=l}catch{}}else{let f=(e.state.env.get("PATH")||"").split(":").filter(u=>u);for(let u of f){let d=e.fs.resolvePath(e.state.cwd,`${u}/${n}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),r=d;break}catch{}}if(i===null){let u=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(u),r=u}catch{}}}if(i===null)return S(`bash: ${n}: No such file or directory
548
548
  `);let a=new Map;if(s.length>1){for(let f=1;f<=9;f++)a.set(String(f),e.state.env.get(String(f)));a.set("#",e.state.env.get("#")),a.set("@",e.state.env.get("@"));let l=s.slice(1);e.state.env.set("#",String(l.length)),e.state.env.set("@",l.join(" "));for(let f=0;f<l.length&&f<9;f++)e.state.env.set(String(f+1),l[f]);for(let f=l.length+1;f<=9;f++)e.state.env.delete(String(f))}let o=e.state.currentSource,c=()=>{if(e.state.sourceDepth--,e.state.currentSource=o,s.length>1)for(let[l,f]of a)f===void 0?e.state.env.delete(l):e.state.env.set(l,f)};e.state.sourceDepth++,e.state.currentSource=n;try{let l=he(i),f=await e.executeScript(l);return c(),f}catch(l){if(c(),l instanceof z)throw l;if(l instanceof te)return P(l.stdout,l.stderr,l.exitCode);if(l.name==="ParseException")return S(`bash: ${n}: ${l.message}
549
- `);throw l}}function tr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function ji(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function sr(e,t){if(ji(t))return null;try{let s=new W,n=Z(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function nr(e,t){if(e.state.localVarStack?.has(t)){let n=Nt(e,t);if(n){n.value===void 0?e.state.env.delete(t):e.state.env.set(t,n.value);let r=e.state.localVarStack?.get(t);if(!r||r.length===0)_t(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),Fs(e,t);else{let i=r[r.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),_t(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let n=e.state.localScopes.length-1;n>=0;n--){let r=e.state.localScopes[n];if(r.has(t)){let i=r.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),r.delete(t);let a=!1;for(let o=n-1;o>=0;o--)if(e.state.localScopes[o].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,o+1),a=!0;break}return a||_t(e,t),!0}}return!1}function Fs(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let s=e.state.tempEnvBindings.length-1;s>=0;s--){let n=e.state.tempEnvBindings[s];if(n.has(t)){let r=n.get(t);return r===void 0?e.state.env.delete(t):e.state.env.set(t,r),n.delete(t),!0}}return!1}async function rr(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),r=new W().parseWordFromString(s,!0,!1);return I(e,r)}if(t.includes("$")){let n=new W().parseWordFromString(t,!1,!1);return I(e,n)}return t}async function Ms(e,t){let s="both",n="",r=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let d=l[1],h=l[2];if(h==="@"||h==="*"){let C=fe(e,d);for(let[y]of C)e.state.env.delete(`${d}_${y}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let C=await rr(e,h);e.state.env.delete(`${d}_${C}`);continue}let p=Ut(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){n+=`bash: unset: ${d}: not an array variable
550
- `,r=1;continue}let $=await sr(e,h);if($===null&&p){n+=`bash: unset: ${h}: not a valid identifier
551
- `,r=1;continue}if($===null)continue;if($<0){let C=fe(e,d),y=C.length,w=e.state.currentLine;if(y===0){n+=`bash: line ${w}: unset: [${$}]: bad array subscript
549
+ `);throw l}}function nr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Zi(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function rr(e,t){if(Zi(t))return null;try{let s=new W,n=Z(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function ir(e,t){if(e.state.localVarStack?.has(t)){let n=Nt(e,t);if(n){n.value===void 0?e.state.env.delete(t):e.state.env.set(t,n.value);let r=e.state.localVarStack?.get(t);if(!r||r.length===0)Ct(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),Ws(e,t);else{let i=r[r.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),Ct(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let n=e.state.localScopes.length-1;n>=0;n--){let r=e.state.localScopes[n];if(r.has(t)){let i=r.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),r.delete(t);let a=!1;for(let o=n-1;o>=0;o--)if(e.state.localScopes[o].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,o+1),a=!0;break}return a||Ct(e,t),!0}}return!1}function Ws(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let s=e.state.tempEnvBindings.length-1;s>=0;s--){let n=e.state.tempEnvBindings[s];if(n.has(t)){let r=n.get(t);return r===void 0?e.state.env.delete(t):e.state.env.set(t,r),n.delete(t),!0}}return!1}async function ar(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),r=new W().parseWordFromString(s,!0,!1);return I(e,r)}if(t.includes("$")){let n=new W().parseWordFromString(t,!1,!1);return I(e,n)}return t}async function zs(e,t){let s="both",n="",r=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let d=l[1],h=l[2];if(h==="@"||h==="*"){let N=fe(e,d);for(let[y]of N)e.state.env.delete(`${d}_${y}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let N=await ar(e,h);e.state.env.delete(`${d}_${N}`);continue}let p=qt(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){n+=`bash: unset: ${d}: not an array variable
550
+ `,r=1;continue}let $=await rr(e,h);if($===null&&p){n+=`bash: unset: ${h}: not a valid identifier
551
+ `,r=1;continue}if($===null)continue;if($<0){let N=fe(e,d),y=N.length,w=e.state.currentLine;if(y===0){n+=`bash: line ${w}: unset: [${$}]: bad array subscript
552
552
  `,r=1;continue}let E=y+$;if(E<0){n+=`bash: line ${w}: unset: [${$}]: bad array subscript
553
- `,r=1;continue}let _=C[E][0];e.state.env.delete(`${d}_${_}`);continue}e.state.env.delete(`${d}_${$}`);continue}if(!tr(i)){n+=`bash: unset: \`${i}': not a valid identifier
554
- `,r=1;continue}let f=i;if(oe(e,i)){let d=ke(e,i);d&&d!==i&&(f=d)}if(Ie(e,f)){n+=`bash: unset: ${f}: cannot unset: readonly variable
555
- `,r=1;continue}let u=ze(e,f);if(u!==void 0&&u!==e.state.callDepth)nr(e,f);else if(e.state.fullyUnsetLocals?.has(f))e.state.env.delete(f);else if(u!==void 0){let d=e.state.accessedTempEnvVars?.has(f),h=e.state.mutatedTempEnvVars?.has(f);if((d||h)&&e.state.localVarStack?.has(f)){let m=Nt(e,f);m?m.value===void 0?e.state.env.delete(f):e.state.env.set(f,m.value):e.state.env.delete(f)}else e.state.env.delete(f)}else Fs(e,f)||e.state.env.delete(f);e.state.exportedVars?.delete(f);continue}let a=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let l=a[1],f=a[2];if(f==="@"||f==="*"){let p=fe(e,l);for(let[g]of p)e.state.env.delete(`${l}_${g}`);e.state.env.delete(l);continue}let u=e.state.associativeArrays?.has(l);if(u){let p=await rr(e,f);e.state.env.delete(`${l}_${p}`);continue}let d=Ut(e,l);if(e.state.env.has(l)&&!d&&!u){n+=`bash: unset: ${l}: not an array variable
556
- `,r=1;continue}let m=await sr(e,f);if(m===null&&d){n+=`bash: unset: ${f}: not a valid identifier
553
+ `,r=1;continue}let _=N[E][0];e.state.env.delete(`${d}_${_}`);continue}e.state.env.delete(`${d}_${$}`);continue}if(!nr(i)){n+=`bash: unset: \`${i}': not a valid identifier
554
+ `,r=1;continue}let f=i;if(oe(e,i)){let d=Ne(e,i);d&&d!==i&&(f=d)}if(Te(e,f)){n+=`bash: unset: ${f}: cannot unset: readonly variable
555
+ `,r=1;continue}let u=ze(e,f);if(u!==void 0&&u!==e.state.callDepth)ir(e,f);else if(e.state.fullyUnsetLocals?.has(f))e.state.env.delete(f);else if(u!==void 0){let d=e.state.accessedTempEnvVars?.has(f),h=e.state.mutatedTempEnvVars?.has(f);if((d||h)&&e.state.localVarStack?.has(f)){let m=Nt(e,f);m?m.value===void 0?e.state.env.delete(f):e.state.env.set(f,m.value):e.state.env.delete(f)}else e.state.env.delete(f)}else Ws(e,f)||e.state.env.delete(f);e.state.exportedVars?.delete(f);continue}let a=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let l=a[1],f=a[2];if(f==="@"||f==="*"){let p=fe(e,l);for(let[g]of p)e.state.env.delete(`${l}_${g}`);e.state.env.delete(l);continue}let u=e.state.associativeArrays?.has(l);if(u){let p=await ar(e,f);e.state.env.delete(`${l}_${p}`);continue}let d=qt(e,l);if(e.state.env.has(l)&&!d&&!u){n+=`bash: unset: ${l}: not an array variable
556
+ `,r=1;continue}let m=await rr(e,f);if(m===null&&d){n+=`bash: unset: ${f}: not a valid identifier
557
557
  `,r=1;continue}if(m===null)continue;if(m<0){let p=fe(e,l),g=p.length,v=e.state.currentLine;if(g===0){n+=`bash: line ${v}: unset: [${m}]: bad array subscript
558
558
  `,r=1;continue}let $=g+m;if($<0){n+=`bash: line ${v}: unset: [${m}]: bad array subscript
559
- `,r=1;continue}let C=p[$][0];e.state.env.delete(`${l}_${C}`);continue}e.state.env.delete(`${l}_${m}`);continue}if(!tr(i)){n+=`bash: unset: \`${i}': not a valid identifier
560
- `,r=1;continue}let o=i;if(oe(e,i)){let l=ke(e,i);l&&l!==i&&(o=l)}if(Ie(e,o)){n+=`bash: unset: ${o}: cannot unset: readonly variable
561
- `,r=1;continue}let c=ze(e,o);if(c!==void 0&&c!==e.state.callDepth)nr(e,o);else if(e.state.fullyUnsetLocals?.has(o))e.state.env.delete(o);else if(c!==void 0){let l=e.state.accessedTempEnvVars?.has(o),f=e.state.mutatedTempEnvVars?.has(o);if((l||f)&&e.state.localVarStack?.has(o)){let u=Nt(e,o);u?u.value===void 0?e.state.env.delete(o):e.state.env.set(o,u.value):e.state.env.delete(o)}else e.state.env.delete(o)}else Fs(e,o)||e.state.env.delete(o);e.state.exportedVars?.delete(o),e.state.functions.delete(i)}return P("",n,r)}var Ws=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Ui=["autocd","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","execfail","extdebug","extquote","force_fignore","globasciiranges","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath"];function Rt(e){return Ws.includes(e)}function qi(e){return Ui.includes(e)}function ir(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=[],c=0;for(;c<t.length;){let d=t[c];if(d==="--"){c++;break}if(d.startsWith("-")&&d.length>1){for(let h=1;h<d.length;h++){let m=d[h];switch(m){case"s":s=!0;break;case"u":n=!0;break;case"p":r=!0;break;case"q":i=!0;break;case"o":a=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
562
- `}}}c++}else break}for(;c<t.length;)o.push(t[c]),c++;if(a)return Zi(e,o,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
563
- `};if(o.length===0){if(s||n){let h=[];for(let m of Ws){let p=e.state.shoptOptions[m];s&&p?h.push(r?`shopt -s ${m}`:`${m} on`):n&&!p&&h.push(r?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
559
+ `,r=1;continue}let N=p[$][0];e.state.env.delete(`${l}_${N}`);continue}e.state.env.delete(`${l}_${m}`);continue}if(!nr(i)){n+=`bash: unset: \`${i}': not a valid identifier
560
+ `,r=1;continue}let o=i;if(oe(e,i)){let l=Ne(e,i);l&&l!==i&&(o=l)}if(Te(e,o)){n+=`bash: unset: ${o}: cannot unset: readonly variable
561
+ `,r=1;continue}let c=ze(e,o);if(c!==void 0&&c!==e.state.callDepth)ir(e,o);else if(e.state.fullyUnsetLocals?.has(o))e.state.env.delete(o);else if(c!==void 0){let l=e.state.accessedTempEnvVars?.has(o),f=e.state.mutatedTempEnvVars?.has(o);if((l||f)&&e.state.localVarStack?.has(o)){let u=Nt(e,o);u?u.value===void 0?e.state.env.delete(o):e.state.env.set(o,u.value):e.state.env.delete(o)}else e.state.env.delete(o)}else Ws(e,o)||e.state.env.delete(o);e.state.exportedVars?.delete(o),e.state.functions.delete(i)}return P("",n,r)}var Vs=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Gi=["autocd","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","execfail","extdebug","extquote","force_fignore","globasciiranges","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath"];function xt(e){return Vs.includes(e)}function Xi(e){return Gi.includes(e)}function or(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=[],c=0;for(;c<t.length;){let d=t[c];if(d==="--"){c++;break}if(d.startsWith("-")&&d.length>1){for(let h=1;h<d.length;h++){let m=d[h];switch(m){case"s":s=!0;break;case"u":n=!0;break;case"p":r=!0;break;case"q":i=!0;break;case"o":a=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
562
+ `}}}c++}else break}for(;c<t.length;)o.push(t[c]),c++;if(a)return Ki(e,o,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
563
+ `};if(o.length===0){if(s||n){let h=[];for(let m of Vs){let p=e.state.shoptOptions[m];s&&p?h.push(r?`shopt -s ${m}`:`${m} on`):n&&!p&&h.push(r?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
564
564
  `)}
565
- `:"",stderr:""}}let d=[];for(let h of Ws){let m=e.state.shoptOptions[h];d.push(r?`shopt ${m?"-s":"-u"} ${h}`:`${h} ${m?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
565
+ `:"",stderr:""}}let d=[];for(let h of Vs){let m=e.state.shoptOptions[h];d.push(r?`shopt ${m?"-s":"-u"} ${h}`:`${h} ${m?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
566
566
  `)}
567
- `,stderr:""}}let l=!1,f="",u=[];for(let d of o){if(!Rt(d)&&!qi(d)){f+=`shopt: ${d}: invalid shell option name
568
- `,l=!0;continue}if(s)Rt(d)&&(e.state.shoptOptions[d]=!0,Xt(e));else if(n)Rt(d)&&(e.state.shoptOptions[d]=!1,Xt(e));else if(Rt(d)){let h=e.state.shoptOptions[d];i?h||(l=!0):r?(u.push(`shopt ${h?"-s":"-u"} ${d}`),h||(l=!0)):(u.push(`${d} ${h?"on":"off"}`),h||(l=!0))}else i?l=!0:r?(u.push(`shopt -u ${d}`),l=!0):(u.push(`${d} off`),l=!0)}return{exitCode:l?1:0,stdout:u.length>0?`${u.join(`
567
+ `,stderr:""}}let l=!1,f="",u=[];for(let d of o){if(!xt(d)&&!Xi(d)){f+=`shopt: ${d}: invalid shell option name
568
+ `,l=!0;continue}if(s)xt(d)&&(e.state.shoptOptions[d]=!0,Yt(e));else if(n)xt(d)&&(e.state.shoptOptions[d]=!1,Yt(e));else if(xt(d)){let h=e.state.shoptOptions[d];i?h||(l=!0):r?(u.push(`shopt ${h?"-s":"-u"} ${d}`),h||(l=!0)):(u.push(`${d} ${h?"on":"off"}`),h||(l=!0))}else i?l=!0:r?(u.push(`shopt -u ${d}`),l=!0):(u.push(`${d} off`),l=!0)}return{exitCode:l?1:0,stdout:u.length>0?`${u.join(`
569
569
  `)}
570
- `:"",stderr:f}}function Zi(e,t,s,n,r,i){let a=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),o=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],c=[...a.keys(),...o].sort();if(t.length===0){let d=[];for(let h of c){let m=o.includes(h),p=a.get(h),g=m||!p?!1:e.state.options[p];s&&!g||n&&g||d.push(r?`set ${g?"-o":"+o"} ${h}`:`${h} ${g?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
570
+ `:"",stderr:f}}function Ki(e,t,s,n,r,i){let a=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),o=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],c=[...a.keys(),...o].sort();if(t.length===0){let d=[];for(let h of c){let m=o.includes(h),p=a.get(h),g=m||!p?!1:e.state.options[p];s&&!g||n&&g||d.push(r?`set ${g?"-o":"+o"} ${h}`:`${h} ${g?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
571
571
  `)}
572
572
  `:"",stderr:""}}let l=!1,f="",u=[];for(let d of t){let h=a.has(d),m=o.includes(d);if(!h&&!m){f+=`shopt: ${d}: invalid option name
573
573
  `,l=!0;continue}if(m){s||n||(i?l=!0:r?(u.push(`set +o ${d}`),l=!0):(u.push(`${d} off`),l=!0));continue}let p=a.get(d);if(p)if(s)p==="vi"?e.state.options.emacs=!1:p==="emacs"&&(e.state.options.vi=!1),e.state.options[p]=!0,Me(e);else if(n)e.state.options[p]=!1,Me(e);else{let g=e.state.options[p];i?g||(l=!0):r?(u.push(`set ${g?"-o":"+o"} ${d}`),g||(l=!0)):(u.push(`${d} ${g?"on":"off"}`),g||(l=!0))}}return{exitCode:l?1:0,stdout:u.length>0?`${u.join(`
574
574
  `)}
575
- `:"",stderr:f}}async function ar(e,t,s){if(t.includes("/")){let a=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(a))return{error:"not_found",path:a};let o=a.split("/").pop()||t,c=e.commands.get(o);try{let l=await e.fs.stat(a);return l.isDirectory?{error:"permission_denied",path:a}:c?{cmd:c,path:a}:(l.mode&73)!==0?{script:!0,path:a}:{error:"permission_denied",path:a}}catch{return{error:"not_found",path:a}}}if(!s&&e.state.hashTable){let a=e.state.hashTable.get(t);if(a)if(await e.fs.exists(a)){let o=e.commands.get(t);if(o)return{cmd:o,path:a};try{let c=await e.fs.stat(a);if(!c.isDirectory&&(c.mode&73)!==0)return{script:!0,path:a}}catch{}}else e.state.hashTable.delete(t)}let r=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let a of r){if(!a)continue;let c=`${a.startsWith("/")?a:e.fs.resolvePath(e.state.cwd,a)}/${t}`;if(await e.fs.exists(c))try{let l=await e.fs.stat(c);if(l.isDirectory)continue;let f=(l.mode&73)!==0,u=e.commands.get(t),d=a==="/bin"||a==="/usr/bin";if(u&&d)return{cmd:u,path:c};if(f){if(u&&!d)return{script:!0,path:c};if(!u)return{script:!0,path:c}}}catch{}}if(!await e.fs.exists("/usr/bin")){let a=e.commands.get(t);if(a)return{cmd:a,path:`/usr/bin/${t}`}}return null}async function xt(e,t){let s=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let a=await e.fs.stat(i);a.isDirectory||(a.mode&73)!==0&&s.push(t)}catch{}return s}let r=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of r){if(!i)continue;let o=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?o:`${i}/${t}`)}}return s}async function fr(e,t,s,n){let r=!1,i=!1,a=!1,o=!1,c=!1,l=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let g of p.slice(1))g==="t"?r=!0:g==="p"?i=!0:g==="P"?a=!0:g==="a"?o=!0:g==="f"&&(c=!0);else l.push(p);let f="",u="",d=0,h=!1,m=!1;for(let p of l){let g=!1;if(a){if(o){let E=await n(p);if(E.length>0){for(let _ of E)f+=`${_}
575
+ `:"",stderr:f}}async function lr(e,t,s){if(t.includes("/")){let a=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(a))return{error:"not_found",path:a};let o=a.split("/").pop()||t,c=e.commands.get(o);try{let l=await e.fs.stat(a);return l.isDirectory?{error:"permission_denied",path:a}:c?{cmd:c,path:a}:(l.mode&73)!==0?{script:!0,path:a}:{error:"permission_denied",path:a}}catch{return{error:"not_found",path:a}}}if(!s&&e.state.hashTable){let a=e.state.hashTable.get(t);if(a)if(await e.fs.exists(a)){let o=e.commands.get(t);if(o)return{cmd:o,path:a};try{let c=await e.fs.stat(a);if(!c.isDirectory&&(c.mode&73)!==0)return{script:!0,path:a}}catch{}}else e.state.hashTable.delete(t)}let r=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let a of r){if(!a)continue;let c=`${a.startsWith("/")?a:e.fs.resolvePath(e.state.cwd,a)}/${t}`;if(await e.fs.exists(c))try{let l=await e.fs.stat(c);if(l.isDirectory)continue;let f=(l.mode&73)!==0,u=e.commands.get(t),d=a==="/bin"||a==="/usr/bin";if(u&&d)return{cmd:u,path:c};if(f){if(u&&!d)return{script:!0,path:c};if(!u)return{script:!0,path:c}}}catch{}}if(!await e.fs.exists("/usr/bin")){let a=e.commands.get(t);if(a)return{cmd:a,path:`/usr/bin/${t}`}}return null}async function Lt(e,t){let s=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let a=await e.fs.stat(i);a.isDirectory||(a.mode&73)!==0&&s.push(t)}catch{}return s}let r=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of r){if(!i)continue;let o=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?o:`${i}/${t}`)}}return s}async function dr(e,t,s,n){let r=!1,i=!1,a=!1,o=!1,c=!1,l=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let g of p.slice(1))g==="t"?r=!0:g==="p"?i=!0:g==="P"?a=!0:g==="a"?o=!0:g==="f"&&(c=!0);else l.push(p);let f="",u="",d=0,h=!1,m=!1;for(let p of l){let g=!1;if(a){if(o){let E=await n(p);if(E.length>0){for(let _ of E)f+=`${_}
576
576
  `;h=!0,g=!0}}else{let E=await s(p);E&&(f+=`${E}
577
577
  `,h=!0,g=!0)}g||(m=!0);continue}let v=!c&&e.state.functions.has(p);if(o&&v){if(!i)if(r)f+=`function
578
- `;else{let E=e.state.functions.get(p),_=E?or(p,E):`${p} is a function
578
+ `;else{let E=e.state.functions.get(p),_=E?cr(p,E):`${p} is a function
579
579
  `;f+=_}g=!0}let $=e.state.env.get(`BASH_ALIAS_${p}`);if($!==void 0&&(o||!g)&&(i||(r?f+=`alias
580
580
  `:f+=`${p} is aliased to \`${$}'
581
- `),g=!0,!o)||ns.has(p)&&(o||!g)&&(i||(r?f+=`keyword
581
+ `),g=!0,!o)||is.has(p)&&(o||!g)&&(i||(r?f+=`keyword
582
582
  `:f+=`${p} is a shell keyword
583
583
  `),g=!0,!o))continue;if(!o&&v&&!g){if(!i)if(r)f+=`function
584
- `;else{let E=e.state.functions.get(p),_=E?or(p,E):`${p} is a function
584
+ `;else{let E=e.state.functions.get(p),_=E?cr(p,E):`${p} is a function
585
585
  `;f+=_}g=!0;continue}if(!(Je.has(p)&&(o||!g)&&(i||(r?f+=`builtin
586
586
  `:f+=`${p} is a shell builtin
587
587
  `),g=!0,!o))){if(o){let E=await n(p);for(let _ of E)i?f+=`${_}
@@ -591,14 +591,14 @@ ${It}`;if(e.state.options.posix)throw new ce(1,"",r);return S(r)}return Is(e,t.s
591
591
  `:r?f+=`file
592
592
  `:f+=`${p} is ${E}
593
593
  `,h=!0,g=!0)}if(!g&&(m=!0,!r&&!i)){let E=!0;if(p.includes("/")){let _=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(_)&&(E=!1)}E&&(u+=`bash: type: ${p}: not found
594
- `)}}}return i?d=m&&!h?1:0:d=m?1:0,P(f,u,d)}function or(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(r=>st(r)).join("; "):s=st(t.body),`${e} is a function
594
+ `)}}}return i?d=m&&!h?1:0:d=m?1:0,P(f,u,d)}function cr(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(r=>st(r)).join("; "):s=st(t.body),`${e} is a function
595
595
  ${e} ()
596
596
  {
597
597
  ${s}
598
598
  }
599
- `}function st(e){if(Array.isArray(e))return e.map(t=>st(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let n=e.pipelines[s];t.push(Gi(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(lr(t.name));for(let n of t.args)s.push(lr(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>st(n)).join("; ")}; }`:"..."}function Gi(e){let t=e.commands.map(s=>st(s));return(e.negated?"! ":"")+t.join(" | ")}function lr(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>cr(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=cr(s);return t}function cr(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function ur(e,t,s,n){let r="",i="",a=0;for(let o of t){if(!o){a=1;continue}let c=e.state.env.get(`BASH_ALIAS_${o}`);if(c!==void 0)n?r+=`${o} is an alias for "${c}"
599
+ `}function st(e){if(Array.isArray(e))return e.map(t=>st(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let n=e.pipelines[s];t.push(Yi(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(fr(t.name));for(let n of t.args)s.push(fr(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>st(n)).join("; ")}; }`:"..."}function Yi(e){let t=e.commands.map(s=>st(s));return(e.negated?"! ":"")+t.join(" | ")}function fr(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>ur(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=ur(s);return t}function ur(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function hr(e,t,s,n){let r="",i="",a=0;for(let o of t){if(!o){a=1;continue}let c=e.state.env.get(`BASH_ALIAS_${o}`);if(c!==void 0)n?r+=`${o} is an alias for "${c}"
600
600
  `:r+=`alias ${o}='${c}'
601
- `;else if(ns.has(o))n?r+=`${o} is a shell keyword
601
+ `;else if(is.has(o))n?r+=`${o} is a shell keyword
602
602
  `:r+=`${o}
603
603
  `;else if(Je.has(o))n?r+=`${o} is a shell builtin
604
604
  `:r+=`${o}
@@ -610,67 +610,67 @@ ${e} ()
610
610
  `),a=1)}else if(e.commands.has(o)){let f=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),u=null;for(let d of f){if(!d)continue;let h=`${d}/${o}`;try{let m=await e.fs.stat(h);if(!m.isDirectory&&(m.mode&73)!==0){u=h;break}}catch{}}u||(u=`/usr/bin/${o}`),n?r+=`${o} is ${u}
611
611
  `:r+=`${u}
612
612
  `}else n&&(i+=`${o}: not found
613
- `),a=1}return P(r,i,a)}async function dr(e,t){if(t.includes("/")){let r=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(r)){try{let i=await e.fs.stat(r);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let n=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let r of n){if(!r)continue;let a=`${r.startsWith("/")?r:e.fs.resolvePath(e.state.cwd,r)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}return`${r}/${t}`}}if(e.commands.has(t)){for(let r of n)if(r==="/usr/bin"||r==="/bin")return`${r}/${t}`;return`/usr/bin/${t}`}return null}async function hr(e,t,s,n,r,i,a,o){let{ctx:c,runCommand:l}=e;if(t==="export")return Ps(c,s);if(t==="unset")return Ms(c,s);if(t==="exit")return As(c,s);if(t==="local")return ks(c,s);if(t==="set")return Rs(c,s);if(t==="break")return Yt(c,s);if(t==="continue")return fs(c,s);if(t==="return")return Ts(c,s);if(t==="eval"&&c.state.options.posix)return Dt(c,s,r);if(t==="shift")return xs(c,s);if(t==="getopts")return Tt(c,s);if(t==="compgen")return as(c,s);if(t==="complete")return ls(c,s);if(t==="compopt")return cs(c,s);if(t==="pushd")return await bs(c,s);if(t==="popd")return $s(c,s);if(t==="dirs")return Ss(c,s);if(t==="source"||t===".")return Ls(c,s);if(t==="read")return Ds(c,s,r,o);if(t==="mapfile"||t==="readarray")return Os(c,s,r);if(t==="declare"||t==="typeset")return ws(c,s);if(t==="readonly")return vs(c,s);if(!i){let f=c.state.functions.get(t);if(f)return kt(c,f,s,r)}if(t==="eval")return Dt(c,s,r);if(t==="cd")return await Qt(c,s);if(t===":"||t==="true")return L;if(t==="false")return q(!1);if(t==="let")return Cs(c,s);if(t==="command")return Xi(e,s,r);if(t==="builtin")return Ki(e,s,r);if(t==="shopt")return ir(c,s);if(t==="exec"){if(s.length===0)return L;let[f,...u]=s;return l(f,u,[],r,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await fr(c,s,f=>dr(c,f),f=>xt(c,f));if(t==="hash")return _s(c,s);if(t==="help")return Ns(c,s);if(t==="["||t==="test"){let f=s;if(t==="["){if(s[s.length-1]!=="]")return S("[: missing `]'\n",2);f=s.slice(0,-1)}return Qe(c,f)}return null}async function Xi(e,t,s){let{ctx:n,runCommand:r}=e;if(t.length===0)return L;let i=!1,a=!1,o=!1,c=t;for(;c.length>0&&c[0].startsWith("-");){let u=c[0];if(u==="--"){c=c.slice(1);break}for(let d of u.slice(1))d==="p"?i=!0:d==="V"?a=!0:d==="v"&&(o=!0);c=c.slice(1)}if(c.length===0)return L;if(o||a)return await ur(n,c,o,a);let[l,...f]=c;return r(l,f,[],s,!0,i,-1)}async function Ki(e,t,s){let{runCommand:n}=e;if(t.length===0)return L;let r=t;if(r[0]==="--"&&(r=r.slice(1),r.length===0))return L;let i=r[0];if(!Je.has(i))return S(`bash: builtin: ${i}: not a shell builtin
614
- `);let[,...a]=r;return n(i,a,[],s,!0,!1,-1)}async function pr(e,t,s,n,r){let{ctx:i,buildExportedEnv:a,executeUserScript:o}=e,l=await ar(i,t,r?"/usr/bin:/bin":void 0);if(!l)return $n(t)?S(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
613
+ `),a=1}return P(r,i,a)}async function pr(e,t){if(t.includes("/")){let r=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(r)){try{let i=await e.fs.stat(r);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let n=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let r of n){if(!r)continue;let a=`${r.startsWith("/")?r:e.fs.resolvePath(e.state.cwd,r)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}return`${r}/${t}`}}if(e.commands.has(t)){for(let r of n)if(r==="/usr/bin"||r==="/bin")return`${r}/${t}`;return`/usr/bin/${t}`}return null}async function mr(e,t,s,n,r,i,a,o){let{ctx:c,runCommand:l}=e;if(t==="export")return Cs(c,s);if(t==="unset")return zs(c,s);if(t==="exit")return _s(c,s);if(t==="local")return Ds(c,s);if(t==="set")return Ls(c,s);if(t==="break")return Jt(c,s);if(t==="continue")return ds(c,s);if(t==="return")return Rs(c,s);if(t==="eval"&&c.state.options.posix)return Tt(c,s,r);if(t==="shift")return Fs(c,s);if(t==="getopts")return It(c,s);if(t==="compgen")return ls(c,s);if(t==="complete")return fs(c,s);if(t==="compopt")return us(c,s);if(t==="pushd")return await Ss(c,s);if(t==="popd")return As(c,s);if(t==="dirs")return Ps(c,s);if(t==="source"||t===".")return Ms(c,s);if(t==="read")return Is(c,s,r,o);if(t==="mapfile"||t==="readarray")return Ts(c,s,r);if(t==="declare"||t==="typeset")return Es(c,s);if(t==="readonly")return bs(c,s);if(!i){let f=c.state.functions.get(t);if(f)return Ot(c,f,s,r)}if(t==="eval")return Tt(c,s,r);if(t==="cd")return await es(c,s);if(t===":"||t==="true")return L;if(t==="false")return q(!1);if(t==="let")return Os(c,s);if(t==="command")return Qi(e,s,r);if(t==="builtin")return Ji(e,s,r);if(t==="shopt")return or(c,s);if(t==="exec"){if(s.length===0)return L;let[f,...u]=s;return l(f,u,[],r,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await dr(c,s,f=>pr(c,f),f=>Lt(c,f));if(t==="hash")return Ns(c,s);if(t==="help")return ks(c,s);if(t==="["||t==="test"){let f=s;if(t==="["){if(s[s.length-1]!=="]")return S("[: missing `]'\n",2);f=s.slice(0,-1)}return Qe(c,f)}return null}async function Qi(e,t,s){let{ctx:n,runCommand:r}=e;if(t.length===0)return L;let i=!1,a=!1,o=!1,c=t;for(;c.length>0&&c[0].startsWith("-");){let u=c[0];if(u==="--"){c=c.slice(1);break}for(let d of u.slice(1))d==="p"?i=!0:d==="V"?a=!0:d==="v"&&(o=!0);c=c.slice(1)}if(c.length===0)return L;if(o||a)return await hr(n,c,o,a);let[l,...f]=c;return r(l,f,[],s,!0,i,-1)}async function Ji(e,t,s){let{runCommand:n}=e;if(t.length===0)return L;let r=t;if(r[0]==="--"&&(r=r.slice(1),r.length===0))return L;let i=r[0];if(!Je.has(i))return S(`bash: builtin: ${i}: not a shell builtin
614
+ `);let[,...a]=r;return n(i,a,[],s,!0,!1,-1)}async function yr(e,t,s,n,r){let{ctx:i,buildExportedEnv:a,executeUserScript:o}=e,l=await lr(i,t,r?"/usr/bin:/bin":void 0);if(!l)return An(t)?S(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
615
615
  `,127):S(`bash: ${t}: command not found
616
616
  `,127);if("error"in l)return l.error==="permission_denied"?S(`bash: ${t}: Permission denied
617
617
  `,126):S(`bash: ${t}: No such file or directory
618
618
  `,127);if("script"in l)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,l.path)),await o(l.path,s,n);let{cmd:f,path:u}=l;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,u));let d=n||i.state.groupStdin||"",h=a(),m={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:h,stdin:d,limits:i.limits,exec:i.execFn,fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo};try{return await f.execute(s,m)}catch(p){return S(`${t}: ${ve(p)}
619
- `)}}async function zs(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let n="",r="",i=0;try{for(let a of t){let o=await e.executeStatement(a);n+=o.stdout,r+=o.stderr,i=o.exitCode}}finally{e.state.inCondition=s}return{stdout:n,stderr:r,exitCode:i}}function nt(e,t,s,n){if(e instanceof re)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"break",stdout:t,stderr:s};if(e instanceof ie)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"continue",stdout:t,stderr:s};if(e instanceof te||e instanceof ae||e instanceof z||e instanceof ee)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=ve(e);return{action:"error",stdout:t,stderr:`${s}${r}
620
- `,exitCode:1}}async function Lt(e,t,s="",n=""){let r=s,i=n,a=0;try{for(let o of t){let c=await e.executeStatement(o);r+=c.stdout,i+=c.stderr,a=c.exitCode}}catch(o){if(lt(o)||o instanceof ae||o instanceof z||o instanceof ee||o instanceof _e)throw o.prependOutput(r,i),o;return{stdout:r,stderr:`${i}${ve(o)}
621
- `,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function mr(e,t){let s="",n="";for(let r of t.clauses){let i=await zs(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return Lt(e,r.body,s,n)}return t.elseBody?Lt(e,t.elseBody,s,n):P(s,n,0)}async function yr(e,t){let s=await ge(e,t.redirections);if(s)return s;let n="",r="",i=0,a=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return S(`bash: \`${t.variable}': not a valid identifier
622
- `);let o=[];if(t.words===null)o=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)o=[];else try{for(let l of t.words){let f=await me(e,l);o.push(...f.values)}}catch(l){if(l instanceof ot)return{stdout:"",stderr:l.stderr,exitCode:1};throw l}e.state.loopDepth++;try{for(let l of o){a++,a>e.limits.maxLoopIterations&&Ae(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r),e.state.env.set(t.variable,l);try{for(let f of t.body){let u=await e.executeStatement(f);n+=u.stdout,r+=u.stderr,i=u.exitCode}}catch(f){let u=nt(f,n,r,e.state.loopDepth);if(n=u.stdout,r=u.stderr,u.action==="break")break;if(u.action==="continue")continue;if(u.action==="error"){let d=P(n,r,u.exitCode??1);return H(e,d,t.redirections)}throw u.error}}}finally{e.state.loopDepth--}let c=P(n,r,i);return H(e,c,t.redirections)}async function gr(e,t){let s=await ge(e,t.redirections);if(s)return s;let n=t.line;n!==void 0&&(e.state.currentLine=n);let r="",i="",a=0,o=0;t.init&&await V(e,t.init.expression),e.state.loopDepth++;try{for(;o++,o>e.limits.maxLoopIterations&&Ae(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,i),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await V(e,t.condition.expression)===0));){try{for(let l of t.body){let f=await e.executeStatement(l);r+=f.stdout,i+=f.stderr,a=f.exitCode}}catch(l){let f=nt(l,r,i,e.state.loopDepth);if(r=f.stdout,i=f.stderr,f.action==="break")break;if(f.action==="continue"){t.update&&await V(e,t.update.expression);continue}if(f.action==="error"){let u=P(r,i,f.exitCode??1);return H(e,u,t.redirections)}throw f.error}t.update&&await V(e,t.update.expression)}}finally{e.state.loopDepth--}let c=P(r,i,a);return H(e,c,t.redirections)}async function wr(e,t,s=""){let n="",r="",i=0,a=0,o=s;for(let l of t.redirections)if((l.operator==="<<"||l.operator==="<<-")&&l.target.type==="HereDoc"){let f=l.target,u=await I(e,f.content);f.stripTabs&&(u=u.split(`
619
+ `)}}async function Bs(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let n="",r="",i=0;try{for(let a of t){let o=await e.executeStatement(a);n+=o.stdout,r+=o.stderr,i=o.exitCode}}finally{e.state.inCondition=s}return{stdout:n,stderr:r,exitCode:i}}function nt(e,t,s,n){if(e instanceof re)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"break",stdout:t,stderr:s};if(e instanceof ie)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"continue",stdout:t,stderr:s};if(e instanceof te||e instanceof ae||e instanceof z||e instanceof ee)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=ve(e);return{action:"error",stdout:t,stderr:`${s}${r}
620
+ `,exitCode:1}}async function Ft(e,t,s="",n=""){let r=s,i=n,a=0;try{for(let o of t){let c=await e.executeStatement(o);r+=c.stdout,i+=c.stderr,a=c.exitCode}}catch(o){if(lt(o)||o instanceof ae||o instanceof z||o instanceof ee||o instanceof Pe)throw o.prependOutput(r,i),o;return{stdout:r,stderr:`${i}${ve(o)}
621
+ `,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function gr(e,t){let s="",n="";for(let r of t.clauses){let i=await Bs(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return Ft(e,r.body,s,n)}return t.elseBody?Ft(e,t.elseBody,s,n):P(s,n,0)}async function wr(e,t){let s=await ge(e,t.redirections);if(s)return s;let n="",r="",i=0,a=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return S(`bash: \`${t.variable}': not a valid identifier
622
+ `);let o=[];if(t.words===null)o=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)o=[];else try{for(let l of t.words){let f=await me(e,l);o.push(...f.values)}}catch(l){if(l instanceof ot)return{stdout:"",stderr:l.stderr,exitCode:1};throw l}e.state.loopDepth++;try{for(let l of o){a++,a>e.limits.maxLoopIterations&&Se(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r),e.state.env.set(t.variable,l);try{for(let f of t.body){let u=await e.executeStatement(f);n+=u.stdout,r+=u.stderr,i=u.exitCode}}catch(f){let u=nt(f,n,r,e.state.loopDepth);if(n=u.stdout,r=u.stderr,u.action==="break")break;if(u.action==="continue")continue;if(u.action==="error"){let d=P(n,r,u.exitCode??1);return H(e,d,t.redirections)}throw u.error}}}finally{e.state.loopDepth--}let c=P(n,r,i);return H(e,c,t.redirections)}async function vr(e,t){let s=await ge(e,t.redirections);if(s)return s;let n=t.line;n!==void 0&&(e.state.currentLine=n);let r="",i="",a=0,o=0;t.init&&await V(e,t.init.expression),e.state.loopDepth++;try{for(;o++,o>e.limits.maxLoopIterations&&Se(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,i),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await V(e,t.condition.expression)===0));){try{for(let l of t.body){let f=await e.executeStatement(l);r+=f.stdout,i+=f.stderr,a=f.exitCode}}catch(l){let f=nt(l,r,i,e.state.loopDepth);if(r=f.stdout,i=f.stderr,f.action==="break")break;if(f.action==="continue"){t.update&&await V(e,t.update.expression);continue}if(f.action==="error"){let u=P(r,i,f.exitCode??1);return H(e,u,t.redirections)}throw f.error}t.update&&await V(e,t.update.expression)}}finally{e.state.loopDepth--}let c=P(r,i,a);return H(e,c,t.redirections)}async function Er(e,t,s=""){let n="",r="",i=0,a=0,o=s;for(let l of t.redirections)if((l.operator==="<<"||l.operator==="<<-")&&l.target.type==="HereDoc"){let f=l.target,u=await I(e,f.content);f.stripTabs&&(u=u.split(`
623
623
  `).map(d=>d.replace(/^\t+/,"")).join(`
624
624
  `)),o=u}else if(l.operator==="<<<"&&l.target.type==="Word")o=`${await I(e,l.target)}
625
625
  `;else if(l.operator==="<"&&l.target.type==="Word")try{let f=await I(e,l.target),u=e.fs.resolvePath(e.state.cwd,f);o=await e.fs.readFile(u)}catch{let f=await I(e,l.target);return S(`bash: ${f}: No such file or directory
626
- `)}let c=e.state.groupStdin;o&&(e.state.groupStdin=o),e.state.loopDepth++;try{for(;;){a++,a>e.limits.maxLoopIterations&&Ae(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r);let l=0,f=!1,u=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let m=await e.executeStatement(h);n+=m.stdout,r+=m.stderr,l=m.exitCode}}catch(h){if(h instanceof re){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;f=!0}else if(h instanceof ie){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;u=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(f)break;if(!u){if(l!==0)break;try{for(let h of t.body){let m=await e.executeStatement(h);n+=m.stdout,r+=m.stderr,i=m.exitCode}}catch(h){let m=nt(h,n,r,e.state.loopDepth);if(n=m.stdout,r=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return P(n,r,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=c}return P(n,r,i)}async function vr(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Ae(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let a=await zs(e,t.condition);if(s+=a.stdout,n+=a.stderr,a.exitCode===0)break;try{for(let o of t.body){let c=await e.executeStatement(o);s+=c.stdout,n+=c.stderr,r=c.exitCode}}catch(o){let c=nt(o,s,n,e.state.loopDepth);if(s=c.stdout,n=c.stderr,c.action==="break")break;if(c.action==="continue")continue;if(c.action==="error")return P(s,n,c.exitCode??1);throw c.error}}}finally{e.state.loopDepth--}return P(s,n,r)}async function Er(e,t){let s=await ge(e,t.redirections);if(s)return s;let n="",r="",i=0,a=await I(e,t.word),o=!1;for(let l=0;l<t.items.length;l++){let f=t.items[l],u=o;if(!o)for(let d of f.patterns){let h=await I(e,d);nn(d)&&(h=tn(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(We(a,h,m,p)){u=!0;break}}if(u){let d=await Lt(e,f.body,n,r);if(n=d.stdout,r=d.stderr,i=d.exitCode,f.terminator===";;")break;f.terminator===";&"?o=!0:o=!1}else o=!1}let c=P(n,r,i);return H(e,c,t.redirections)}function Vs(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function br(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),c=o.indexOf(":");if(c===-1)return null;let l=Number.parseInt(o.slice(0,c),10);if(Number.isNaN(l)||l<0)return null;let f=o.slice(c+1);return{path:i,position:l,content:f}}var $r="+ ";async function Sr(e){let t=e.state.env.get("PS4");if(t===void 0)return $r;if(t==="")return"";try{let n=new W().parseWordFromString(t,!1,!1);return await I(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
627
- `,t||$r}}function Yi(e){return e.map(t=>Qi(t)).join(" ")}function Qi(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
626
+ `)}let c=e.state.groupStdin;o&&(e.state.groupStdin=o),e.state.loopDepth++;try{for(;;){a++,a>e.limits.maxLoopIterations&&Se(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r);let l=0,f=!1,u=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let m=await e.executeStatement(h);n+=m.stdout,r+=m.stderr,l=m.exitCode}}catch(h){if(h instanceof re){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;f=!0}else if(h instanceof ie){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;u=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(f)break;if(!u){if(l!==0)break;try{for(let h of t.body){let m=await e.executeStatement(h);n+=m.stdout,r+=m.stderr,i=m.exitCode}}catch(h){let m=nt(h,n,r,e.state.loopDepth);if(n=m.stdout,r=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return P(n,r,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=c}return P(n,r,i)}async function br(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Se(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let a=await Bs(e,t.condition);if(s+=a.stdout,n+=a.stderr,a.exitCode===0)break;try{for(let o of t.body){let c=await e.executeStatement(o);s+=c.stdout,n+=c.stderr,r=c.exitCode}}catch(o){let c=nt(o,s,n,e.state.loopDepth);if(s=c.stdout,n=c.stderr,c.action==="break")break;if(c.action==="continue")continue;if(c.action==="error")return P(s,n,c.exitCode??1);throw c.error}}}finally{e.state.loopDepth--}return P(s,n,r)}async function $r(e,t){let s=await ge(e,t.redirections);if(s)return s;let n="",r="",i=0,a=await I(e,t.word),o=!1;for(let l=0;l<t.items.length;l++){let f=t.items[l],u=o;if(!o)for(let d of f.patterns){let h=await I(e,d);an(d)&&(h=nn(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(We(a,h,m,p)){u=!0;break}}if(u){let d=await Ft(e,f.body,n,r);if(n=d.stdout,r=d.stderr,i=d.exitCode,f.terminator===";;")break;f.terminator===";&"?o=!0:o=!1}else o=!1}let c=P(n,r,i);return H(e,c,t.redirections)}function Hs(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function Sr(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),c=o.indexOf(":");if(c===-1)return null;let l=Number.parseInt(o.slice(0,c),10);if(Number.isNaN(l)||l<0)return null;let f=o.slice(c+1);return{path:i,position:l,content:f}}var Ar="+ ";async function Pr(e){let t=e.state.env.get("PS4");if(t===void 0)return Ar;if(t==="")return"";try{let n=new W().parseWordFromString(t,!1,!1);return await I(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
627
+ `,t||Ar}}function ea(e){return e.map(t=>ta(t)).join(" ")}function ta(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
628
628
  `),r=e.includes(" "),i=e.includes("\\"),a=e.includes("'");if(s||n||r||i){let c="";for(let l of e){let f=l.charCodeAt(0);l===`
629
- `?c+="\\n":l===" "?c+="\\t":l==="\\"?c+="\\\\":l==="'"?c+="'":l==='"'?c+='"':f<32||f===127?f<256?c+=`\\x${f.toString(16).padStart(2,"0")}`:c+=`\\u${f.toString(16).padStart(4,"0")}`:c+=l}return`$'${c}'`}return a?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function Ar(e,t,s){if(!e.state.options.xtrace)return"";let n=await Sr(e),r=[t,...s],i=Yi(r);return`${n}${i}
630
- `}async function Pr(e,t,s){return e.state.options.xtrace?`${await Sr(e)}${t}=${s}
631
- `:""}async function _r(e,t,s){let n=t.timed?performance.now():0,r="",i=L,a=0,o=[],c=t.commands.length>1,l=e.state.lastArg;for(let u=0;u<t.commands.length;u++){let d=t.commands[u],h=u===t.commands.length-1;c&&(e.state.lastArg="");let p=c&&(!h||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,g;try{g=await s(d,r)}catch(v){if(v instanceof at)g={stdout:v.stdout,stderr:v.stderr,exitCode:1};else if(v instanceof z&&t.commands.length>1)g={stdout:v.stdout,stderr:v.stderr,exitCode:v.exitCode};else if(v instanceof ae&&t.commands.length>1)g={stdout:v.stdout,stderr:v.stderr,exitCode:v.exitCode};else throw p&&(e.state.env=p),v}p&&(e.state.env=p),o.push(g.exitCode),g.exitCode!==0&&(a=g.exitCode),h?i=g:t.pipeStderr?.[u]??!1?(r=g.stderr+g.stdout,i={stdout:"",stderr:"",exitCode:g.exitCode}):(r=g.stdout,i={stdout:"",stderr:g.stderr,exitCode:g.exitCode})}if(t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand"){for(let u of e.state.env.keys())u.startsWith("PIPESTATUS_")&&e.state.env.delete(u);for(let u=0;u<o.length;u++)e.state.env.set(`PIPESTATUS_${u}`,String(o[u]));e.state.env.set("PIPESTATUS__length",String(o.length))}if(e.state.options.pipefail&&a!==0&&(i={...i,exitCode:a}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let d=(performance.now()-n)/1e3,h=Math.floor(d/60),m=d%60,p;t.timePosix?p=`real ${d.toFixed(2)}
629
+ `?c+="\\n":l===" "?c+="\\t":l==="\\"?c+="\\\\":l==="'"?c+="'":l==='"'?c+='"':f<32||f===127?f<256?c+=`\\x${f.toString(16).padStart(2,"0")}`:c+=`\\u${f.toString(16).padStart(4,"0")}`:c+=l}return`$'${c}'`}return a?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function _r(e,t,s){if(!e.state.options.xtrace)return"";let n=await Pr(e),r=[t,...s],i=ea(r);return`${n}${i}
630
+ `}async function Cr(e,t,s){return e.state.options.xtrace?`${await Pr(e)}${t}=${s}
631
+ `:""}async function Nr(e,t,s){let n=t.timed?performance.now():0,r="",i=L,a=0,o=[],c=t.commands.length>1,l=e.state.lastArg;for(let u=0;u<t.commands.length;u++){let d=t.commands[u],h=u===t.commands.length-1;c&&(e.state.lastArg="");let p=c&&(!h||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,g;try{g=await s(d,r)}catch(v){if(v instanceof at)g={stdout:v.stdout,stderr:v.stderr,exitCode:1};else if(v instanceof z&&t.commands.length>1)g={stdout:v.stdout,stderr:v.stderr,exitCode:v.exitCode};else if(v instanceof ae&&t.commands.length>1)g={stdout:v.stdout,stderr:v.stderr,exitCode:v.exitCode};else throw p&&(e.state.env=p),v}p&&(e.state.env=p),o.push(g.exitCode),g.exitCode!==0&&(a=g.exitCode),h?i=g:t.pipeStderr?.[u]??!1?(r=g.stderr+g.stdout,i={stdout:"",stderr:"",exitCode:g.exitCode}):(r=g.stdout,i={stdout:"",stderr:g.stderr,exitCode:g.exitCode})}if(t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand"){for(let u of e.state.env.keys())u.startsWith("PIPESTATUS_")&&e.state.env.delete(u);for(let u=0;u<o.length;u++)e.state.env.set(`PIPESTATUS_${u}`,String(o[u]));e.state.env.set("PIPESTATUS__length",String(o.length))}if(e.state.options.pipefail&&a!==0&&(i={...i,exitCode:a}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let d=(performance.now()-n)/1e3,h=Math.floor(d/60),m=d%60,p;t.timePosix?p=`real ${d.toFixed(2)}
632
632
  user 0.00
633
633
  sys 0.00
634
634
  `:p=`
635
635
  real ${`${h}m${m.toFixed(3)}s`}
636
636
  user 0m0.000s
637
637
  sys 0m0.000s
638
- `,i={...i,stderr:i.stderr+p}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=l),i}async function Nr(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let f=await Ji(e,t,i,r.array,r.append,s);if(f.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:f.error};if(n+=f.xtraceOutput,f.continueToNext)continue}let a=r.value?await I(e,r.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:P("",`bash: ${i}: bad array subscript
639
- `,1)};let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let f=await ra(e,t,c[1],c[2],a,r.append,s);if(f.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:f.error};if(f.continueToNext)continue}let l=await aa(e,t,i,a,r.append,s);if(l.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:l.error};n+=l.xtraceOutput,l.continueToNext}return{continueToNext:!1,xtraceOutput:n,tempAssignments:s}}async function Ji(e,t,s,n,r,i){let a="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
640
- `,1)};if(oe(e,s)){let f=Js(e,s);if(f===void 0||f==="")throw new z(1,"","");let u=ke(e,s);if(u&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(u))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
641
- `,1)}}if(Ie(e,s)){if(t.name)return a+=`bash: ${s}: readonly variable
642
- `,{continueToNext:!0,xtraceOutput:a};let f=K(e,s);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let o=e.state.associativeArrays?.has(s),c=ea(n),l=()=>{let f=`${s}_`;for(let u of e.state.env.keys())u.startsWith(f)&&!u.includes("__")&&e.state.env.delete(u);e.state.env.delete(s)};if(o&&c?await ta(e,t,s,n,r,l,f=>{a+=f}):c?await sa(e,s,n,r,l):await na(e,s,n,r,l),t.name){i.set(s,e.state.env.get(s));let u=`(${n.map(d=>ft(d)).join(" ")})`;e.state.env.set(s,u)}return{continueToNext:!0,xtraceOutput:a}}function ea(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],n=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(t.parts.length<3)return!1;let r=t.parts[2];return r.type!=="Literal"?!1:r.value.startsWith("]=")||r.value.startsWith("]+=")}return n.type!=="Literal"?!1:n.value.startsWith("]")?n.value.startsWith("]=")||n.value.startsWith("]+="):s.pattern.endsWith("]")?n.value.startsWith("=")||n.value.startsWith("+="):!1}return!1})}async function ta(e,t,s,n,r,i,a){let o=[];for(let c of n){let l=Vt(c);if(l){let{key:f,valueParts:u,append:d}=l,h;u.length>0?h=await I(e,{type:"Word",parts:u}):h="",h=j(e,h),o.push({type:"keyed",key:f,value:h,append:d})}else{let f=await I(e,c);o.push({type:"invalid",expandedValue:f})}}r||i();for(let c of o)if(c.type==="keyed")if(c.append){let l=e.state.env.get(`${s}_${c.key}`)??"";e.state.env.set(`${s}_${c.key}`,l+c.value)}else e.state.env.set(`${s}_${c.key}`,c.value);else{let l=t.line??e.state.currentLine??1;a(`bash: line ${l}: ${s}: ${c.expandedValue}: must use subscript when assigning associative array
643
- `)}}async function sa(e,t,s,n,r){let i=[];for(let o of s){let c=Vt(o);if(c){let{key:l,valueParts:f,append:u}=c,d;f.length>0?d=await I(e,{type:"Word",parts:f}):d="",d=j(e,d),i.push({type:"keyed",indexExpr:l,value:d,append:u})}else{let l=await me(e,o);i.push({type:"non-keyed",values:l.values})}}n||r();let a=0;for(let o of i)if(o.type==="keyed"){let c;try{let l=new W,f=Z(l,o.indexExpr);c=await V(e,f.expression,!1)}catch{if(/^-?\d+$/.test(o.indexExpr))c=Number.parseInt(o.indexExpr,10);else{let l=e.state.env.get(o.indexExpr);c=l?Number.parseInt(l,10):0,Number.isNaN(c)&&(c=0)}}if(o.append){let l=e.state.env.get(`${t}_${c}`)??"";e.state.env.set(`${t}_${c}`,l+o.value)}else e.state.env.set(`${t}_${c}`,o.value);a=c+1}else for(let c of o.values)e.state.env.set(`${t}_${a++}`,c)}async function na(e,t,s,n,r){let i=[];for(let o of s){let c=await me(e,o);i.push(...c.values)}let a=0;if(n){let o=fe(e,t);if(o.length>0)a=Math.max(...o.map(([l])=>typeof l=="number"?l:0))+1;else{let c=e.state.env.get(t);c!==void 0&&(e.state.env.set(`${t}_0`,c),e.state.env.delete(t),a=1)}}else r();for(let o=0;o<i.length;o++)e.state.env.set(`${t}_${a+o}`,i[o]);n||e.state.env.set(`${t}__length`,String(i.length))}async function ra(e,t,s,n,r,i,a){let o=s;if(oe(e,s)){let u=ke(e,s);if(u&&u!==s){if(u.includes("["))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: \`${u}': not a valid identifier
644
- `,1)};o=u}}if(Ie(e,o)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let u=K(e,o);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let c=e.state.associativeArrays?.has(o),l;if(c)l=await Cr(e,o,n);else{let u=await ia(e,o,n);if(u.error)return{continueToNext:!1,xtraceOutput:"",error:u.error};l=`${o}_${u.index}`}let f=i?(e.state.env.get(l)||"")+r:r;if(t.name)a.set(l,e.state.env.get(l)),e.state.env.set(l,f);else{let u=ze(e,o);if(u!==void 0&&u===e.state.callDepth&&e.state.localScopes.length>0){let d=e.state.localScopes[e.state.localScopes.length-1];d.has(l)||d.set(l,e.state.env.get(l))}e.state.env.set(l,f)}return{continueToNext:!0,xtraceOutput:""}}async function Cr(e,t,s){let n;if(s.startsWith("'")&&s.endsWith("'"))n=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let r=s.slice(1,-1),a=new W().parseWordFromString(r,!0,!1);n=await I(e,a)}else if(s.includes("$")){let i=new W().parseWordFromString(s,!1,!1);n=await I(e,i)}else n=s;return`${t}_${n}`}async function ia(e,t,s){let n=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(n=s.slice(1,-1));let r;if(/^-?\d+$/.test(n))r=Number.parseInt(n,10);else{try{let i=new W,a=Z(i,n);r=await V(e,a.expression,!1)}catch(i){if(i instanceof Te){let c=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
638
+ `,i={...i,stderr:i.stderr+p}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=l),i}async function kr(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let f=await sa(e,t,i,r.array,r.append,s);if(f.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:f.error};if(n+=f.xtraceOutput,f.continueToNext)continue}let a=r.value?await I(e,r.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:P("",`bash: ${i}: bad array subscript
639
+ `,1)};let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let f=await oa(e,t,c[1],c[2],a,r.append,s);if(f.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:f.error};if(f.continueToNext)continue}let l=await ca(e,t,i,a,r.append,s);if(l.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:l.error};n+=l.xtraceOutput,l.continueToNext}return{continueToNext:!1,xtraceOutput:n,tempAssignments:s}}async function sa(e,t,s,n,r,i){let a="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
640
+ `,1)};if(oe(e,s)){let f=tn(e,s);if(f===void 0||f==="")throw new z(1,"","");let u=Ne(e,s);if(u&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(u))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
641
+ `,1)}}if(Te(e,s)){if(t.name)return a+=`bash: ${s}: readonly variable
642
+ `,{continueToNext:!0,xtraceOutput:a};let f=K(e,s);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let o=e.state.associativeArrays?.has(s),c=na(n),l=()=>{let f=`${s}_`;for(let u of e.state.env.keys())u.startsWith(f)&&!u.includes("__")&&e.state.env.delete(u);e.state.env.delete(s)};if(o&&c?await ra(e,t,s,n,r,l,f=>{a+=f}):c?await ia(e,s,n,r,l):await aa(e,s,n,r,l),t.name){i.set(s,e.state.env.get(s));let u=`(${n.map(d=>ft(d)).join(" ")})`;e.state.env.set(s,u)}return{continueToNext:!0,xtraceOutput:a}}function na(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],n=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(t.parts.length<3)return!1;let r=t.parts[2];return r.type!=="Literal"?!1:r.value.startsWith("]=")||r.value.startsWith("]+=")}return n.type!=="Literal"?!1:n.value.startsWith("]")?n.value.startsWith("]=")||n.value.startsWith("]+="):s.pattern.endsWith("]")?n.value.startsWith("=")||n.value.startsWith("+="):!1}return!1})}async function ra(e,t,s,n,r,i,a){let o=[];for(let c of n){let l=Bt(c);if(l){let{key:f,valueParts:u,append:d}=l,h;u.length>0?h=await I(e,{type:"Word",parts:u}):h="",h=j(e,h),o.push({type:"keyed",key:f,value:h,append:d})}else{let f=await I(e,c);o.push({type:"invalid",expandedValue:f})}}r||i();for(let c of o)if(c.type==="keyed")if(c.append){let l=e.state.env.get(`${s}_${c.key}`)??"";e.state.env.set(`${s}_${c.key}`,l+c.value)}else e.state.env.set(`${s}_${c.key}`,c.value);else{let l=t.line??e.state.currentLine??1;a(`bash: line ${l}: ${s}: ${c.expandedValue}: must use subscript when assigning associative array
643
+ `)}}async function ia(e,t,s,n,r){let i=[];for(let o of s){let c=Bt(o);if(c){let{key:l,valueParts:f,append:u}=c,d;f.length>0?d=await I(e,{type:"Word",parts:f}):d="",d=j(e,d),i.push({type:"keyed",indexExpr:l,value:d,append:u})}else{let l=await me(e,o);i.push({type:"non-keyed",values:l.values})}}n||r();let a=0;for(let o of i)if(o.type==="keyed"){let c;try{let l=new W,f=Z(l,o.indexExpr);c=await V(e,f.expression,!1)}catch{if(/^-?\d+$/.test(o.indexExpr))c=Number.parseInt(o.indexExpr,10);else{let l=e.state.env.get(o.indexExpr);c=l?Number.parseInt(l,10):0,Number.isNaN(c)&&(c=0)}}if(o.append){let l=e.state.env.get(`${t}_${c}`)??"";e.state.env.set(`${t}_${c}`,l+o.value)}else e.state.env.set(`${t}_${c}`,o.value);a=c+1}else for(let c of o.values)e.state.env.set(`${t}_${a++}`,c)}async function aa(e,t,s,n,r){let i=[];for(let o of s){let c=await me(e,o);i.push(...c.values)}let a=0;if(n){let o=fe(e,t);if(o.length>0)a=Math.max(...o.map(([l])=>typeof l=="number"?l:0))+1;else{let c=e.state.env.get(t);c!==void 0&&(e.state.env.set(`${t}_0`,c),e.state.env.delete(t),a=1)}}else r();for(let o=0;o<i.length;o++)e.state.env.set(`${t}_${a+o}`,i[o]);n||e.state.env.set(`${t}__length`,String(i.length))}async function oa(e,t,s,n,r,i,a){let o=s;if(oe(e,s)){let u=Ne(e,s);if(u&&u!==s){if(u.includes("["))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: \`${u}': not a valid identifier
644
+ `,1)};o=u}}if(Te(e,o)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let u=K(e,o);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let c=e.state.associativeArrays?.has(o),l;if(c)l=await Or(e,o,n);else{let u=await la(e,o,n);if(u.error)return{continueToNext:!1,xtraceOutput:"",error:u.error};l=`${o}_${u.index}`}let f=i?(e.state.env.get(l)||"")+r:r;if(t.name)a.set(l,e.state.env.get(l)),e.state.env.set(l,f);else{let u=ze(e,o);if(u!==void 0&&u===e.state.callDepth&&e.state.localScopes.length>0){let d=e.state.localScopes[e.state.localScopes.length-1];d.has(l)||d.set(l,e.state.env.get(l))}e.state.env.set(l,f)}return{continueToNext:!0,xtraceOutput:""}}async function Or(e,t,s){let n;if(s.startsWith("'")&&s.endsWith("'"))n=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let r=s.slice(1,-1),a=new W().parseWordFromString(r,!0,!1);n=await I(e,a)}else if(s.includes("$")){let i=new W().parseWordFromString(s,!1,!1);n=await I(e,i)}else n=s;return`${t}_${n}`}async function la(e,t,s){let n=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(n=s.slice(1,-1));let r;if(/^-?\d+$/.test(n))r=Number.parseInt(n,10);else{try{let i=new W,a=Z(i,n);r=await V(e,a.expression,!1)}catch(i){if(i instanceof De){let c=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
645
645
  `;if(i.fatal)throw new z(1,"",c);return{index:0,error:P("",c,1)}}let a=e.state.env.get(s);r=a?Number.parseInt(a,10):0}Number.isNaN(r)&&(r=0)}if(r<0){let i=fe(e,t);if(i.length===0){let o=e.state.currentLine;return{index:0,error:P("",`bash: line ${o}: ${t}[${s}]: bad array subscript
646
646
  `,1)}}if(r=Math.max(...i.map(([o])=>typeof o=="number"?o:0))+1+r,r<0){let o=e.state.currentLine;return{index:0,error:P("",`bash: line ${o}: ${t}[${s}]: bad array subscript
647
- `,1)}}}return{index:r}}async function aa(e,t,s,n,r,i){let a="",o=s,c=null;if(oe(e,s)){let u=en(e,s,n);if(u===void 0)return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: circular name reference
648
- `,1)};if(u===null)return{continueToNext:!0,xtraceOutput:""};o=u;let d=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(c={arrayName:d[1],subscriptExpr:d[2]},o=d[1])}if(Ie(e,o)){if(t.name)return a+=`bash: ${o}: readonly variable
649
- `,{continueToNext:!0,xtraceOutput:a};let u=K(e,o);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let l;if(et(e,o))try{let u=new W;if(r){let h=`(${e.state.env.get(o)||"0"}) + (${n})`,m=Z(u,h);l=String(await V(e,m.expression))}else{let d=Z(u,n);l=String(await V(e,d.expression))}}catch{l="0"}else{let{isArray:u}=await import("./chunks/expansion-OP223NMV.js"),d=u(e,o)?`${o}_0`:o;l=r?(e.state.env.get(d)||"")+n:n}l=Be(e,o,l),a+=await Pr(e,o,l);let f=o;if(c)f=await oa(e,c);else{let{isArray:u}=await import("./chunks/expansion-OP223NMV.js");u(e,o)&&(f=`${o}_0`)}return t.name?(i.set(f,e.state.env.get(f)),e.state.env.set(f,l)):(e.state.env.set(f,l),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(o)),e.state.tempEnvBindings?.some(u=>u.has(o))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(o))),{continueToNext:!1,xtraceOutput:a}}async function oa(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return Cr(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let a=new W,o=Z(a,n);i=await V(e,o.expression,!1)}catch{let a=e.state.env.get(n);i=a?Number.parseInt(a,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let a=fe(e,s);a.length>0&&(i=Math.max(...a.map(c=>c[0]))+1+i)}return`${s}_${i}`}async function kr(e,t,s,n){let r=await ge(e,t.redirections);if(r)return r;let i=new Map(e.state.env),a=e.state.cwd,o={...e.state.options},c=e.state.localScopes,l=e.state.localVarStack,f=e.state.localVarDepth,u=e.state.fullyUnsetLocals;if(e.state.localScopes=c.map(E=>new Map(E)),l){e.state.localVarStack=new Map;for(let[E,_]of l.entries())e.state.localVarStack.set(E,_.map(O=>({...O})))}f&&(e.state.localVarDepth=new Map(f)),u&&(e.state.fullyUnsetLocals=new Map(u));let d=e.state.loopDepth,h=e.state.parentHasLoopContext;e.state.parentHasLoopContext=d>0,e.state.loopDepth=0;let m=e.state.lastArg,p=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let g=e.state.groupStdin;s&&(e.state.groupStdin=s);let v="",$="",C=0,y=()=>{e.state.env=i,e.state.cwd=a,e.state.options=o,e.state.localScopes=c,e.state.localVarStack=l,e.state.localVarDepth=f,e.state.fullyUnsetLocals=u,e.state.loopDepth=d,e.state.parentHasLoopContext=h,e.state.groupStdin=g,e.state.bashPid=p,e.state.lastArg=m};try{for(let E of t.body){let _=await n(E);v+=_.stdout,$+=_.stderr,C=_.exitCode}}catch(E){if(y(),E instanceof ee)throw E;if(E instanceof _e){v+=E.stdout,$+=E.stderr;let O=P(v,$,0);return H(e,O,t.redirections)}if(E instanceof re||E instanceof ie){v+=E.stdout,$+=E.stderr;let O=P(v,$,0);return H(e,O,t.redirections)}if(E instanceof z){v+=E.stdout,$+=E.stderr;let O=P(v,$,E.exitCode);return H(e,O,t.redirections)}if(E instanceof te){v+=E.stdout,$+=E.stderr;let O=P(v,$,E.exitCode);return H(e,O,t.redirections)}if(E instanceof ae){let O=P(v+E.stdout,$+E.stderr,E.exitCode);return H(e,O,t.redirections)}let _=P(v,`${$}${ve(E)}
650
- `,1);return H(e,_,t.redirections)}y();let w=P(v,$,C);return H(e,w,t.redirections)}async function Or(e,t,s,n){let r="",i="",a=0,o=await Ct(e,t.redirections);if(o)return o;let c=s;for(let u of t.redirections)if((u.operator==="<<"||u.operator==="<<-")&&u.target.type==="HereDoc"){let d=u.target,h=await I(e,d.content);d.stripTabs&&(h=h.split(`
647
+ `,1)}}}return{index:r}}async function ca(e,t,s,n,r,i){let a="",o=s,c=null;if(oe(e,s)){let u=sn(e,s,n);if(u===void 0)return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: circular name reference
648
+ `,1)};if(u===null)return{continueToNext:!0,xtraceOutput:""};o=u;let d=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(c={arrayName:d[1],subscriptExpr:d[2]},o=d[1])}if(Te(e,o)){if(t.name)return a+=`bash: ${o}: readonly variable
649
+ `,{continueToNext:!0,xtraceOutput:a};let u=K(e,o);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let l;if(et(e,o))try{let u=new W;if(r){let h=`(${e.state.env.get(o)||"0"}) + (${n})`,m=Z(u,h);l=String(await V(e,m.expression))}else{let d=Z(u,n);l=String(await V(e,d.expression))}}catch{l="0"}else{let{isArray:u}=await import("./chunks/expansion-6T6M7TZI.js"),d=u(e,o)?`${o}_0`:o;l=r?(e.state.env.get(d)||"")+n:n}l=Be(e,o,l),a+=await Cr(e,o,l);let f=o;if(c)f=await fa(e,c);else{let{isArray:u}=await import("./chunks/expansion-6T6M7TZI.js");u(e,o)&&(f=`${o}_0`)}return t.name?(i.set(f,e.state.env.get(f)),e.state.env.set(f,l)):(e.state.env.set(f,l),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(o)),e.state.tempEnvBindings?.some(u=>u.has(o))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(o))),{continueToNext:!1,xtraceOutput:a}}async function fa(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return Or(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let a=new W,o=Z(a,n);i=await V(e,o.expression,!1)}catch{let a=e.state.env.get(n);i=a?Number.parseInt(a,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let a=fe(e,s);a.length>0&&(i=Math.max(...a.map(c=>c[0]))+1+i)}return`${s}_${i}`}async function Dr(e,t,s,n){let r=await ge(e,t.redirections);if(r)return r;let i=new Map(e.state.env),a=e.state.cwd,o={...e.state.options},c=e.state.localScopes,l=e.state.localVarStack,f=e.state.localVarDepth,u=e.state.fullyUnsetLocals;if(e.state.localScopes=c.map(E=>new Map(E)),l){e.state.localVarStack=new Map;for(let[E,_]of l.entries())e.state.localVarStack.set(E,_.map(O=>({...O})))}f&&(e.state.localVarDepth=new Map(f)),u&&(e.state.fullyUnsetLocals=new Map(u));let d=e.state.loopDepth,h=e.state.parentHasLoopContext;e.state.parentHasLoopContext=d>0,e.state.loopDepth=0;let m=e.state.lastArg,p=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let g=e.state.groupStdin;s&&(e.state.groupStdin=s);let v="",$="",N=0,y=()=>{e.state.env=i,e.state.cwd=a,e.state.options=o,e.state.localScopes=c,e.state.localVarStack=l,e.state.localVarDepth=f,e.state.fullyUnsetLocals=u,e.state.loopDepth=d,e.state.parentHasLoopContext=h,e.state.groupStdin=g,e.state.bashPid=p,e.state.lastArg=m};try{for(let E of t.body){let _=await n(E);v+=_.stdout,$+=_.stderr,N=_.exitCode}}catch(E){if(y(),E instanceof ee)throw E;if(E instanceof Pe){v+=E.stdout,$+=E.stderr;let O=P(v,$,0);return H(e,O,t.redirections)}if(E instanceof re||E instanceof ie){v+=E.stdout,$+=E.stderr;let O=P(v,$,0);return H(e,O,t.redirections)}if(E instanceof z){v+=E.stdout,$+=E.stderr;let O=P(v,$,E.exitCode);return H(e,O,t.redirections)}if(E instanceof te){v+=E.stdout,$+=E.stderr;let O=P(v,$,E.exitCode);return H(e,O,t.redirections)}if(E instanceof ae){let O=P(v+E.stdout,$+E.stderr,E.exitCode);return H(e,O,t.redirections)}let _=P(v,`${$}${ve(E)}
650
+ `,1);return H(e,_,t.redirections)}y();let w=P(v,$,N);return H(e,w,t.redirections)}async function Tr(e,t,s,n){let r="",i="",a=0,o=await kt(e,t.redirections);if(o)return o;let c=s;for(let u of t.redirections)if((u.operator==="<<"||u.operator==="<<-")&&u.target.type==="HereDoc"){let d=u.target,h=await I(e,d.content);d.stripTabs&&(h=h.split(`
651
651
  `).map(p=>p.replace(/^\t+/,"")).join(`
652
652
  `));let m=u.fd??0;m!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,h)):c=h}else if(u.operator==="<<<"&&u.target.type==="Word")c=`${await I(e,u.target)}
653
653
  `;else if(u.operator==="<"&&u.target.type==="Word")try{let d=await I(e,u.target),h=e.fs.resolvePath(e.state.cwd,d);c=await e.fs.readFile(h)}catch{let d=await I(e,u.target);return P("",`bash: ${d}: No such file or directory
654
654
  `,1)}let l=e.state.groupStdin;c&&(e.state.groupStdin=c);try{for(let u of t.body){let d=await n(u);r+=d.stdout,i+=d.stderr,a=d.exitCode}}catch(u){if(e.state.groupStdin=l,u instanceof ee)throw u;if(lt(u)||u instanceof ae||u instanceof z)throw u.prependOutput(r,i),u;return P(r,`${i}${ve(u)}
655
- `,1)}e.state.groupStdin=l;let f=P(r,i,a);return H(e,f,t.redirections)}async function Dr(e,t,s,n,r){let i;try{i=await e.fs.readFile(t)}catch{return S(`bash: ${t}: No such file or directory
655
+ `,1)}e.state.groupStdin=l;let f=P(r,i,a);return H(e,f,t.redirections)}async function Ir(e,t,s,n,r){let i;try{i=await e.fs.readFile(t)}catch{return S(`bash: ${t}: No such file or directory
656
656
  `,127)}if(i.startsWith("#!")){let g=i.indexOf(`
657
657
  `);g!==-1&&(i=i.slice(g+1))}let a=new Map(e.state.env),o=e.state.cwd,c={...e.state.options},l=e.state.loopDepth,f=e.state.parentHasLoopContext,u=e.state.lastArg,d=e.state.bashPid,h=e.state.groupStdin,m=e.state.currentSource;e.state.parentHasLoopContext=l>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,n&&(e.state.groupStdin=n),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(s.length)),e.state.env.set("@",s.join(" ")),e.state.env.set("*",s.join(" "));for(let g=0;g<s.length&&g<9;g++)e.state.env.set(String(g+1),s[g]);for(let g=s.length+1;g<=9;g++)e.state.env.delete(String(g));let p=()=>{e.state.env=a,e.state.cwd=o,e.state.options=c,e.state.loopDepth=l,e.state.parentHasLoopContext=f,e.state.lastArg=u,e.state.bashPid=d,e.state.groupStdin=h,e.state.currentSource=m};try{let v=new W().parse(i),$=await r(v);return p(),$}catch(g){if(p(),g instanceof z||g instanceof ee)throw g;if(g.name==="ParseException")return S(`bash: ${t}: ${g.message}
658
- `);throw g}}var rt=class{ctx;constructor(t,s){this.ctx={state:s,fs:t.fs,commands:t.commands,limits:t.limits,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace}}buildExportedEnv(){let t=this.ctx.state.exportedVars,s=this.ctx.state.tempExportedVars,n=new Set;if(t)for(let i of t)n.add(i);if(s)for(let i of s)n.add(i);if(n.size===0)return Object.create(null);let r=Object.create(null);for(let i of n){let a=this.ctx.state.env.get(i);a!==void 0&&(r[i]=a)}return r}async executeScript(t){let s="",n="",r=0;for(let i of t.statements)try{let a=await this.executeStatement(i);s+=a.stdout,n+=a.stderr,r=a.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}catch(a){if(a instanceof z)throw a.prependOutput(s,n),a;if(a instanceof ce)return s+=a.stdout,n+=a.stderr,r=a.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ne(this.ctx.state.env)};if(a instanceof ee)throw a;if(a instanceof ae)return s+=a.stdout,n+=a.stderr,r=a.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ne(this.ctx.state.env)};if(a instanceof js)return s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ne(this.ctx.state.env)};if(a instanceof at)return s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ne(this.ctx.state.env)};if(a instanceof Te){s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(a instanceof Us){s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(a instanceof re||a instanceof ie){if(this.ctx.state.loopDepth>0)throw a.prependOutput(s,n),a;s+=a.stdout,n+=a.stderr;continue}throw a instanceof te&&a.prependOutput(s,n),a}return{stdout:s,stderr:n,exitCode:r,env:Ne(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Dr(this.ctx,t,s,n,r=>this.executeScript(r))}async executeStatement(t){if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Ae(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new ct(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",n="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(n+=`${t.sourceText}
659
- `);let r=0,i=-1,a=!1;for(let l=0;l<t.pipelines.length;l++){let f=t.pipelines[l],u=l>0?t.operators[l-1]:null;if(u==="&&"&&r!==0||u==="||"&&r===0)continue;let d=await this.executePipeline(f);s+=d.stdout,n+=d.stderr,r=d.exitCode,i=l,a=f.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}let o=i<t.pipelines.length-1,c=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=o||a||c,this.ctx.state.options.errexit&&r!==0&&i===t.pipelines.length-1&&!a&&!this.ctx.state.inCondition&&!c)throw new ae(r,s,n);return P(s,n,r)}async executePipeline(t){return _r(this.ctx,t,(s,n)=>this.executeCommand(s,n))}async executeCommand(t,s){switch(t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return mr(this.ctx,t);case"For":return yr(this.ctx,t);case"CStyleFor":return gr(this.ctx,t);case"While":return wr(this.ctx,t,s);case"Until":return vr(this.ctx,t);case"Case":return Er(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Fn(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return L}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(n){if(n instanceof ot)return S(n.stderr);throw n}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let y=t,w=100;for(;w>0;){let E=this.expandAlias(y);if(E===y)break;y=E,w--}this.aliasExpansionStack.clear(),y!==t&&(t=y)}this.ctx.state.expansionStderr="";let n=await Nr(this.ctx,t);if(n.error)return n.error;let r=n.tempAssignments,i=n.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await ge(this.ctx,t.redirections);if(w)return w;let E=P("",i,0);return H(this.ctx,E,t.redirections)}this.ctx.state.lastArg="";let y=(this.ctx.state.expansionStderr||"")+i;return this.ctx.state.expansionStderr="",P("",y,this.ctx.state.lastExitCode)}let a=t.name&&Vs(t.name,["local","declare","typeset","export","readonly"]),o=Array.from(r.keys());if(o.length>0&&!a){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let y of o)this.ctx.state.tempExportedVars.add(y)}let c=await Ct(this.ctx,t.redirections);if(c){for(let[y,w]of r)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);return c}let l=-1;for(let y of t.redirections){if((y.operator==="<<"||y.operator==="<<-")&&y.target.type==="HereDoc"){let w=y.target,E=await I(this.ctx,w.content);w.stripTabs&&(E=E.split(`
658
+ `);throw g}}var rt=class{ctx;constructor(t,s){this.ctx={state:s,fs:t.fs,commands:t.commands,limits:t.limits,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace}}buildExportedEnv(){let t=this.ctx.state.exportedVars,s=this.ctx.state.tempExportedVars,n=new Set;if(t)for(let i of t)n.add(i);if(s)for(let i of s)n.add(i);if(n.size===0)return Object.create(null);let r=Object.create(null);for(let i of n){let a=this.ctx.state.env.get(i);a!==void 0&&(r[i]=a)}return r}async executeScript(t){let s="",n="",r=0;for(let i of t.statements)try{let a=await this.executeStatement(i);s+=a.stdout,n+=a.stderr,r=a.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}catch(a){if(a instanceof z)throw a.prependOutput(s,n),a;if(a instanceof ce)return s+=a.stdout,n+=a.stderr,r=a.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)};if(a instanceof ee)throw a;if(a instanceof ae)return s+=a.stdout,n+=a.stderr,r=a.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)};if(a instanceof qs)return s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)};if(a instanceof at)return s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)};if(a instanceof De){s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(a instanceof Zs){s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(a instanceof re||a instanceof ie){if(this.ctx.state.loopDepth>0)throw a.prependOutput(s,n),a;s+=a.stdout,n+=a.stderr;continue}throw a instanceof te&&a.prependOutput(s,n),a}return{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Ir(this.ctx,t,s,n,r=>this.executeScript(r))}async executeStatement(t){if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Se(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new ct(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",n="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(n+=`${t.sourceText}
659
+ `);let r=0,i=-1,a=!1;for(let l=0;l<t.pipelines.length;l++){let f=t.pipelines[l],u=l>0?t.operators[l-1]:null;if(u==="&&"&&r!==0||u==="||"&&r===0)continue;let d=await this.executePipeline(f);s+=d.stdout,n+=d.stderr,r=d.exitCode,i=l,a=f.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}let o=i<t.pipelines.length-1,c=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=o||a||c,this.ctx.state.options.errexit&&r!==0&&i===t.pipelines.length-1&&!a&&!this.ctx.state.inCondition&&!c)throw new ae(r,s,n);return P(s,n,r)}async executePipeline(t){return Nr(this.ctx,t,(s,n)=>this.executeCommand(s,n))}async executeCommand(t,s){switch(t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return gr(this.ctx,t);case"For":return wr(this.ctx,t);case"CStyleFor":return vr(this.ctx,t);case"While":return Er(this.ctx,t,s);case"Until":return br(this.ctx,t);case"Case":return $r(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Wn(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return L}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(n){if(n instanceof ot)return S(n.stderr);throw n}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let y=t,w=100;for(;w>0;){let E=this.expandAlias(y);if(E===y)break;y=E,w--}this.aliasExpansionStack.clear(),y!==t&&(t=y)}this.ctx.state.expansionStderr="";let n=await kr(this.ctx,t);if(n.error)return n.error;let r=n.tempAssignments,i=n.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await ge(this.ctx,t.redirections);if(w)return w;let E=P("",i,0);return H(this.ctx,E,t.redirections)}this.ctx.state.lastArg="";let y=(this.ctx.state.expansionStderr||"")+i;return this.ctx.state.expansionStderr="",P("",y,this.ctx.state.lastExitCode)}let a=t.name&&Hs(t.name,["local","declare","typeset","export","readonly"]),o=Array.from(r.keys());if(o.length>0&&!a){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let y of o)this.ctx.state.tempExportedVars.add(y)}let c=await kt(this.ctx,t.redirections);if(c){for(let[y,w]of r)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);return c}let l=-1;for(let y of t.redirections){if((y.operator==="<<"||y.operator==="<<-")&&y.target.type==="HereDoc"){let w=y.target,E=await I(this.ctx,w.content);w.stripTabs&&(E=E.split(`
660
660
  `).map(O=>O.replace(/^\t+/,"")).join(`
661
661
  `));let _=y.fd??0;_!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),this.ctx.state.fileDescriptors.set(_,E)):s=E;continue}if(y.operator==="<<<"&&y.target.type==="Word"){s=`${await I(this.ctx,y.target)}
662
662
  `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await I(this.ctx,y.target),E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);s=await this.ctx.fs.readFile(E)}catch{let w=await I(this.ctx,y.target);for(let[E,_]of r)_===void 0?this.ctx.state.env.delete(E):this.ctx.state.env.set(E,_);return S(`bash: ${w}: No such file or directory
663
- `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await I(this.ctx,y.target),E=Number.parseInt(w,10);if(!Number.isNaN(E)&&this.ctx.state.fileDescriptors){let _=this.ctx.state.fileDescriptors.get(E);if(_!==void 0)if(_.startsWith("__rw__:")){let O=br(_);O&&(s=O.content.slice(O.position),l=E)}else _.startsWith("__file__:")||_.startsWith("__file_append__:")||(s=_)}}}let f=await I(this.ctx,t.name),u=[],d=[];if(Vs(t.name,["local","declare","typeset","export","readonly"])&&(f==="local"||f==="declare"||f==="typeset"||f==="export"||f==="readonly"))for(let y of t.args){let w=await En(this.ctx,y);if(w)u.push(w),d.push(!0);else{let E=await bn(this.ctx,y);if(E!==null)u.push(E),d.push(!0);else{let _=await me(this.ctx,y);for(let O of _.values)u.push(O),d.push(_.quoted)}}}else for(let y of t.args){let w=await me(this.ctx,y);for(let E of w.values)u.push(E),d.push(w.quoted)}if(!f){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(u.length>0){let w=u.shift();return d.shift(),await this.runCommand(w,u,d,s,!1,!1,l)}return P("","",this.ctx.state.lastExitCode)}return S(`bash: : command not found
663
+ `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await I(this.ctx,y.target),E=Number.parseInt(w,10);if(!Number.isNaN(E)&&this.ctx.state.fileDescriptors){let _=this.ctx.state.fileDescriptors.get(E);if(_!==void 0)if(_.startsWith("__rw__:")){let O=Sr(_);O&&(s=O.content.slice(O.position),l=E)}else _.startsWith("__file__:")||_.startsWith("__file_append__:")||(s=_)}}}let f=await I(this.ctx,t.name),u=[],d=[];if(Hs(t.name,["local","declare","typeset","export","readonly"])&&(f==="local"||f==="declare"||f==="typeset"||f==="export"||f==="readonly"))for(let y of t.args){let w=await $n(this.ctx,y);if(w)u.push(w),d.push(!0);else{let E=await Sn(this.ctx,y);if(E!==null)u.push(E),d.push(!0);else{let _=await me(this.ctx,y);for(let O of _.values)u.push(O),d.push(_.quoted)}}}else for(let y of t.args){let w=await me(this.ctx,y);for(let E of w.values)u.push(E),d.push(w.quoted)}if(!f){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(u.length>0){let w=u.shift();return d.shift(),await this.runCommand(w,u,d,s,!1,!1,l)}return P("","",this.ctx.state.lastExitCode)}return S(`bash: : command not found
664
664
  `,127)}if(f==="exec"&&(u.length===0||u[0]==="--")){for(let y of t.redirections){if(y.target.type==="HereDoc"||y.fdVariable)continue;let w=await I(this.ctx,y.target),E=y.fd??(y.operator==="<"||y.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),y.operator){case">":case">|":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile(_,"","utf8"),this.ctx.state.fileDescriptors.set(E,`__file__:${_}`);break}case">>":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);this.ctx.state.fileDescriptors.set(E,`__file_append__:${_}`);break}case"<":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let O=await this.ctx.fs.readFile(_);this.ctx.state.fileDescriptors.set(E,O)}catch{return S(`bash: ${w}: No such file or directory
665
- `)}break}case"<>":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let O=await this.ctx.fs.readFile(_);this.ctx.state.fileDescriptors.set(E,`__rw__:${_.length}:${_}:0:${O}`)}catch{await this.ctx.fs.writeFile(_,"","utf8"),this.ctx.state.fileDescriptors.set(E,`__rw__:${_.length}:${_}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let _=w.slice(0,-1),O=Number.parseInt(_,10);if(!Number.isNaN(O)){let D=this.ctx.state.fileDescriptors.get(O);D!==void 0?this.ctx.state.fileDescriptors.set(E,D):this.ctx.state.fileDescriptors.set(E,`__dupout__:${O}`),this.ctx.state.fileDescriptors.delete(O)}}else{let _=Number.parseInt(w,10);Number.isNaN(_)||this.ctx.state.fileDescriptors.set(E,`__dupout__:${_}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let _=w.slice(0,-1),O=Number.parseInt(_,10);if(!Number.isNaN(O)){let D=this.ctx.state.fileDescriptors.get(O);D!==void 0?this.ctx.state.fileDescriptors.set(E,D):this.ctx.state.fileDescriptors.set(E,`__dupin__:${O}`),this.ctx.state.fileDescriptors.delete(O)}}else{let _=Number.parseInt(w,10);Number.isNaN(_)||this.ctx.state.fileDescriptors.set(E,`__dupin__:${_}`)}break}}}for(let[y,w]of r)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);if(this.ctx.state.tempExportedVars)for(let y of r.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await Ar(this.ctx,f,u);r.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(r)));let p,g=null;try{p=await this.runCommand(f,u,d,s,!1,!1,l)}catch(y){if(y instanceof re||y instanceof ie)g=y,p=L;else throw y}let v=i+m;if(v&&(p={...p,stderr:v+p.stderr}),p=await H(this.ctx,p,t.redirections),g)throw g;if(u.length>0){let y=u[u.length-1];if((f==="declare"||f==="local"||f==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(y)){let w=y.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);w&&(y=w[1])}this.ctx.state.lastArg=y}else this.ctx.state.lastArg=f;let $=xn(f)&&f!=="unset"&&f!=="eval";if(!this.ctx.state.options.posix||!$)for(let[y,w]of r)this.ctx.state.fullyUnsetLocals?.has(y)||(w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w));if(this.ctx.state.tempExportedVars)for(let y of r.keys())this.ctx.state.tempExportedVars.delete(y);return r.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(p={...p,stderr:this.ctx.state.expansionStderr+p.stderr},this.ctx.state.expansionStderr=""),p}async runCommand(t,s,n,r,i=!1,a=!1,o=-1){let c={ctx:this.ctx,runCommand:(f,u,d,h,m,p,g)=>this.runCommand(f,u,d,h,m,p,g),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(f,u,d)=>this.executeUserScript(f,u,d)},l=await hr(c,t,s,n,r,i,a,o);return l!==null?l:pr(c,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return Kt(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return xt(this.ctx,t)}async executeSubshell(t,s=""){return kr(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return Or(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await ge(this.ctx,t.redirections);if(s)return s;try{let n=await V(this.ctx,t.expression.expression),r=q(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),H(this.ctx,r,t.redirections)}catch(n){let r=S(`bash: arithmetic expression: ${n.message}
666
- `);return H(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await ge(this.ctx,t.redirections);if(s)return s;try{let n=await Oe(this.ctx,t.expression),r=q(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),H(this.ctx,r,t.redirections)}catch(n){let r=n instanceof Te?1:2,i=S(`bash: conditional expression: ${n.message}
667
- `,r);return H(this.ctx,i,t.redirections)}}};var Pe={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4};function Tr(e){return e?{maxCallDepth:e.maxCallDepth??Pe.maxCallDepth,maxCommandCount:e.maxCommandCount??Pe.maxCommandCount,maxLoopIterations:e.maxLoopIterations??Pe.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??Pe.maxAwkIterations,maxSedIterations:e.maxSedIterations??Pe.maxSedIterations,maxJqIterations:e.maxJqIterations??Pe.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??Pe.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??Pe.maxPythonTimeoutMs}:{...Pe}}function Ir(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function la(e){let t=Ir(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function ca(e,t){let s=Ir(e);if(!s)return!1;let n=la(t);return!n||s.origin!==n.origin?!1:n.pathPrefix==="/"||n.pathPrefix===""?!0:s.pathname.startsWith(n.pathPrefix)}function Bs(e,t){return!t||t.length===0?!1:t.some(s=>ca(e,s))}var He=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},je=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},Ue=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},Ft=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}};var fa=20,ua=3e4,da=["GET","HEAD"],ha=new Set(["GET","HEAD","OPTIONS"]),pa=new Set([301,302,303,307,308]);function Hs(e){let t=e.maxRedirects??fa,s=e.timeoutMs??ua,n=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??da;function r(o){if(!e.dangerouslyAllowFullInternetAccess&&!Bs(o,e.allowedUrlPrefixes??[]))throw new He(o)}function i(o){if(e.dangerouslyAllowFullInternetAccess)return;let c=o.toUpperCase();if(!n.includes(c))throw new Ft(c,n)}async function a(o,c={}){let l=c.method?.toUpperCase()??"GET";r(o),i(l);let f=o,u=0,d=c.followRedirects??!0,h=c.timeoutMs!==void 0?Math.min(c.timeoutMs,s):s;for(;;){let m=new AbortController,p=setTimeout(()=>m.abort(),h);try{let g={method:l,headers:c.headers,signal:m.signal,redirect:"manual"};c.body&&!ha.has(l)&&(g.body=c.body);let v=await fetch(f,g);if(pa.has(v.status)&&d){let $=v.headers.get("location");if(!$)return await Rr(v,f);let C=new URL($,f).href;if(!e.dangerouslyAllowFullInternetAccess&&!Bs(C,e.allowedUrlPrefixes??[]))throw new Ue(C);if(u++,u>t)throw new je(t);f=C;continue}return await Rr(v,f)}finally{clearTimeout(p)}}}return a}async function Rr(e,t){let s=Object.create(null);return e.headers.forEach((n,r)=>{s[r.toLowerCase()]=n}),{status:e.status,statusText:e.statusText,headers:s,body:await e.text(),url:t}}var it=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;state;constructor(t={}){let s=t.fs??new Se(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
668
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Tr({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.network&&(this.secureFetch=Hs(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.state={env:r,cwd:n,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,bashPid:process.pid,nextVirtualPid:process.pid+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Zt(this.state.options)),this.state.env.set("BASHOPTS",Gt(this.state.shoptOptions)),pn(s,this.useDefaultLayout),n!=="/"&&s instanceof Se)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let i of fn(t.commands))this.registerCommand(i);if(t.network)for(let i of un())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)dn(i)?this.registerCommand(hn(i)):this.registerCommand(i)}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
665
+ `)}break}case"<>":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let O=await this.ctx.fs.readFile(_);this.ctx.state.fileDescriptors.set(E,`__rw__:${_.length}:${_}:0:${O}`)}catch{await this.ctx.fs.writeFile(_,"","utf8"),this.ctx.state.fileDescriptors.set(E,`__rw__:${_.length}:${_}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let _=w.slice(0,-1),O=Number.parseInt(_,10);if(!Number.isNaN(O)){let D=this.ctx.state.fileDescriptors.get(O);D!==void 0?this.ctx.state.fileDescriptors.set(E,D):this.ctx.state.fileDescriptors.set(E,`__dupout__:${O}`),this.ctx.state.fileDescriptors.delete(O)}}else{let _=Number.parseInt(w,10);Number.isNaN(_)||this.ctx.state.fileDescriptors.set(E,`__dupout__:${_}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(E);else if(w.endsWith("-")){let _=w.slice(0,-1),O=Number.parseInt(_,10);if(!Number.isNaN(O)){let D=this.ctx.state.fileDescriptors.get(O);D!==void 0?this.ctx.state.fileDescriptors.set(E,D):this.ctx.state.fileDescriptors.set(E,`__dupin__:${O}`),this.ctx.state.fileDescriptors.delete(O)}}else{let _=Number.parseInt(w,10);Number.isNaN(_)||this.ctx.state.fileDescriptors.set(E,`__dupin__:${_}`)}break}}}for(let[y,w]of r)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);if(this.ctx.state.tempExportedVars)for(let y of r.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await _r(this.ctx,f,u);r.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(r)));let p,g=null;try{p=await this.runCommand(f,u,d,s,!1,!1,l)}catch(y){if(y instanceof re||y instanceof ie)g=y,p=L;else throw y}let v=i+m;if(v&&(p={...p,stderr:v+p.stderr}),p=await H(this.ctx,p,t.redirections),g)throw g;if(u.length>0){let y=u[u.length-1];if((f==="declare"||f==="local"||f==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(y)){let w=y.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);w&&(y=w[1])}this.ctx.state.lastArg=y}else this.ctx.state.lastArg=f;let $=Fn(f)&&f!=="unset"&&f!=="eval";if(!this.ctx.state.options.posix||!$)for(let[y,w]of r)this.ctx.state.fullyUnsetLocals?.has(y)||(w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w));if(this.ctx.state.tempExportedVars)for(let y of r.keys())this.ctx.state.tempExportedVars.delete(y);return r.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(p={...p,stderr:this.ctx.state.expansionStderr+p.stderr},this.ctx.state.expansionStderr=""),p}async runCommand(t,s,n,r,i=!1,a=!1,o=-1){let c={ctx:this.ctx,runCommand:(f,u,d,h,m,p,g)=>this.runCommand(f,u,d,h,m,p,g),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(f,u,d)=>this.executeUserScript(f,u,d)},l=await mr(c,t,s,n,r,i,a,o);return l!==null?l:yr(c,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return Qt(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Lt(this.ctx,t)}async executeSubshell(t,s=""){return Dr(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return Tr(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await ge(this.ctx,t.redirections);if(s)return s;try{let n=await V(this.ctx,t.expression.expression),r=q(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),H(this.ctx,r,t.redirections)}catch(n){let r=S(`bash: arithmetic expression: ${n.message}
666
+ `);return H(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await ge(this.ctx,t.redirections);if(s)return s;try{let n=await ke(this.ctx,t.expression),r=q(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),H(this.ctx,r,t.redirections)}catch(n){let r=n instanceof De?1:2,i=S(`bash: conditional expression: ${n.message}
667
+ `,r);return H(this.ctx,i,t.redirections)}}};var Ae={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4};function Rr(e){return e?{maxCallDepth:e.maxCallDepth??Ae.maxCallDepth,maxCommandCount:e.maxCommandCount??Ae.maxCommandCount,maxLoopIterations:e.maxLoopIterations??Ae.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??Ae.maxAwkIterations,maxSedIterations:e.maxSedIterations??Ae.maxSedIterations,maxJqIterations:e.maxJqIterations??Ae.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??Ae.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??Ae.maxPythonTimeoutMs}:{...Ae}}function xr(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function ua(e){let t=xr(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function da(e,t){let s=xr(e);if(!s)return!1;let n=ua(t);return!n||s.origin!==n.origin?!1:n.pathPrefix==="/"||n.pathPrefix===""?!0:s.pathname.startsWith(n.pathPrefix)}function js(e,t){return!t||t.length===0?!1:t.some(s=>da(e,s))}var He=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},je=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},Ue=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},Mt=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}};var ha=20,pa=3e4,ma=["GET","HEAD"],ya=new Set(["GET","HEAD","OPTIONS"]),ga=new Set([301,302,303,307,308]);function Us(e){let t=e.maxRedirects??ha,s=e.timeoutMs??pa,n=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??ma;function r(o){if(!e.dangerouslyAllowFullInternetAccess&&!js(o,e.allowedUrlPrefixes??[]))throw new He(o)}function i(o){if(e.dangerouslyAllowFullInternetAccess)return;let c=o.toUpperCase();if(!n.includes(c))throw new Mt(c,n)}async function a(o,c={}){let l=c.method?.toUpperCase()??"GET";r(o),i(l);let f=o,u=0,d=c.followRedirects??!0,h=c.timeoutMs!==void 0?Math.min(c.timeoutMs,s):s;for(;;){let m=new AbortController,p=setTimeout(()=>m.abort(),h);try{let g={method:l,headers:c.headers,signal:m.signal,redirect:"manual"};c.body&&!ya.has(l)&&(g.body=c.body);let v=await fetch(f,g);if(ga.has(v.status)&&d){let $=v.headers.get("location");if(!$)return await Lr(v,f);let N=new URL($,f).href;if(!e.dangerouslyAllowFullInternetAccess&&!js(N,e.allowedUrlPrefixes??[]))throw new Ue(N);if(u++,u>t)throw new je(t);f=N;continue}return await Lr(v,f)}finally{clearTimeout(p)}}}return a}async function Lr(e,t){let s=Object.create(null);return e.headers.forEach((n,r)=>{s[r.toLowerCase()]=n}),{status:e.status,statusText:e.statusText,headers:s,body:await e.text(),url:t}}var it=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;state;constructor(t={}){let s=t.fs??new $e(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
668
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Rr({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.network&&(this.secureFetch=Us(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.state={env:r,cwd:n,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,bashPid:process.pid,nextVirtualPid:process.pid+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",Xt(this.state.options)),this.state.env.set("BASHOPTS",Kt(this.state.shoptOptions)),yn(s,this.useDefaultLayout),n!=="/"&&s instanceof $e)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let i of un(t.commands))this.registerCommand(i);if(t.network)for(let i of dn())this.registerCommand(i);if(t.python)for(let i of hn())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)pn(i)?this.registerCommand(mn(i)):this.registerCommand(i)}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
669
669
  # Built-in command: ${t.name}
670
670
  `;try{s.writeFileSync(`/bin/${t.name}`,n)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,n)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t}async exec(t,s){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
671
- `,exitCode:1,env:de(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:de(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let n=s?.cwd??this.state.cwd,r,i=n;if(s?.cwd)if(s.env&&"PWD"in s.env)r=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{r=await this.fs.realpath(n),i=r}catch{r=n}else r=n;let a=new Map(this.state.env);if(s?.env)for(let[l,f]of Object.entries(s.env))a.set(l,f);r!==void 0&&a.set("PWD",r);let o={...this.state,env:a,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable},c=t;s?.rawScript||(c=ma(t));try{let l=he(c),f={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn},d=await new rt(f,o).executeScript(l);return this.logResult(d)}catch(l){if(l instanceof z)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:l.exitCode,env:de(this.state.env,s?.env)});if(l instanceof ce)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:l.exitCode,env:de(this.state.env,s?.env)});if(l instanceof Te)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:1,env:de(this.state.env,s?.env)});if(l instanceof ee)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:ee.EXIT_CODE,env:de(this.state.env,s?.env)});if(l.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${l.message}
672
- `,exitCode:2,env:de(this.state.env,s?.env)});if(l instanceof Gs)return this.logResult({stdout:"",stderr:`bash: ${l.message}
671
+ `,exitCode:1,env:de(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:de(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let n=s?.cwd??this.state.cwd,r,i=n;if(s?.cwd)if(s.env&&"PWD"in s.env)r=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{r=await this.fs.realpath(n),i=r}catch{r=n}else r=n;let a=new Map(this.state.env);if(s?.env)for(let[l,f]of Object.entries(s.env))a.set(l,f);r!==void 0&&a.set("PWD",r);let o={...this.state,env:a,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable},c=t;s?.rawScript||(c=wa(t));try{let l=he(c),f={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn},d=await new rt(f,o).executeScript(l);return this.logResult(d)}catch(l){if(l instanceof z)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:l.exitCode,env:de(this.state.env,s?.env)});if(l instanceof ce)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:l.exitCode,env:de(this.state.env,s?.env)});if(l instanceof De)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:1,env:de(this.state.env,s?.env)});if(l instanceof ee)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:ee.EXIT_CODE,env:de(this.state.env,s?.env)});if(l.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${l.message}
672
+ `,exitCode:2,env:de(this.state.env,s?.env)});if(l instanceof Ks)return this.logResult({stdout:"",stderr:`bash: ${l.message}
673
673
  `,exitCode:2,env:de(this.state.env,s?.env)});if(l instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${l.message}
674
- `,exitCode:1,env:de(this.state.env,s?.env)});throw l}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,s){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),s)}getCwd(){return this.state.cwd}getEnv(){return Ne(this.state.env)}};function ma(e){let t=e.split(`
674
+ `,exitCode:1,env:de(this.state.env,s?.env)});throw l}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,s){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),s)}getCwd(){return this.state.cwd}getEnv(){return _e(this.state.env)}};function wa(e){let t=e.split(`
675
675
  `),s=[],n=[];for(let r=0;r<t.length;r++){let i=t[r];if(n.length>0){let c=n[n.length-1];if((c.stripTabs?i.replace(/^\t+/,""):i)===c.delimiter){s.push(i.trimStart()),n.pop();continue}s.push(i);continue}let a=i.trimStart();s.push(a);let o=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let c of a.matchAll(o)){let l=c[1]==="-",f=c[3];n.push({delimiter:f,stripTabs:l})}}return s.join(`
676
- `)}var Mt=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new Se,t?.mounts)for(let{mountPoint:s,filesystem:n}of t.mounts)this.mount(s,n)}mount(t,s){this.validateMountPath(t);let n=this.normalizePath(t);this.validateMount(n),this.mounts.set(n,{mountPoint:n,filesystem:s})}unmount(t){let s=this.normalizePath(t);if(!this.mounts.has(s))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(s)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}isMountPoint(t){let s=this.normalizePath(t);return this.mounts.has(s)}validateMountPath(t){let s=t.split("/");for(let n of s)if(n==="."||n==="..")throw new Error(`Invalid mount point '${t}': contains '.' or '..' segments`)}validateMount(t){if(t==="/")throw new Error("Cannot mount at root '/'");for(let s of this.mounts.keys())if(s!==t){if(t.startsWith(`${s}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${s}'`);if(s.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${s}'`)}}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`}routePath(t){let s=this.normalizePath(t),n=null,r=0;for(let i of this.mounts.values()){let a=i.mountPoint;if(s===a)return{fs:i.filesystem,relativePath:"/"};s.startsWith(`${a}/`)&&a.length>r&&(n=i,r=a.length)}if(n){let i=s.slice(r);return{fs:n.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:s}}getChildMountPoints(t){let s=this.normalizePath(t),n=s==="/"?"/":`${s}/`,r=[];for(let i of this.mounts.keys())if(i.startsWith(n)){let o=i.slice(n.length).split("/")[0];o&&!r.includes(o)&&r.push(o)}return r}async readFile(t,s){let{fs:n,relativePath:r}=this.routePath(t);return n.readFile(r,s)}async readFileBuffer(t){let{fs:s,relativePath:n}=this.routePath(t);return s.readFileBuffer(n)}async writeFile(t,s,n){let{fs:r,relativePath:i}=this.routePath(t);return r.writeFile(i,s,n)}async appendFile(t,s,n){let{fs:r,relativePath:i}=this.routePath(t);return r.appendFile(i,s,n)}async exists(t){let s=this.normalizePath(t);if(this.mounts.has(s)||this.getChildMountPoints(s).length>0)return!0;let{fs:r,relativePath:i}=this.routePath(t);return r.exists(i)}async stat(t){let s=this.normalizePath(t),n=this.mounts.get(s);if(n)try{return await n.filesystem.stat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.stat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:a}=this.routePath(t);return i.stat(a)}async lstat(t){let s=this.normalizePath(t),n=this.mounts.get(s);if(n)try{return await n.filesystem.lstat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.lstat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:a}=this.routePath(t);return i.lstat(a)}async mkdir(t,s){let n=this.normalizePath(t);if(this.mounts.has(n)){if(s?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(n).length>0&&s?.recursive)return;let{fs:i,relativePath:a}=this.routePath(t);return i.mkdir(a,s)}async readdir(t){let s=this.normalizePath(t),n=new Set,r=null,{fs:i,relativePath:a}=this.routePath(t);try{let c=await i.readdir(a);for(let l of c)n.add(l)}catch(c){let l=c.code,f=c.message||"";if(l!=="ENOENT"&&!f.includes("ENOENT"))throw c;r=c}let o=this.getChildMountPoints(s);for(let c of o)n.add(c);if(n.size===0&&r&&!this.mounts.has(s))throw r;return Array.from(n).sort()}async rm(t,s){let n=this.normalizePath(t);if(this.mounts.has(n))throw new Error(`EBUSY: mount point, cannot remove '${t}'`);if(this.getChildMountPoints(n).length>0)throw new Error(`EBUSY: contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:a}=this.routePath(t);return i.rm(a,s)}async cp(t,s,n){let r=this.routePath(t),i=this.routePath(s);return r.fs===i.fs?r.fs.cp(r.relativePath,i.relativePath,n):this.crossMountCopy(t,s,n)}async mv(t,s){let n=this.normalizePath(t);if(this.mounts.has(n))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let r=this.routePath(t),i=this.routePath(s);if(r.fs===i.fs)return r.fs.mv(r.relativePath,i.relativePath);await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}getAllPaths(){let t=new Set;for(let s of this.baseFs.getAllPaths())t.add(s);for(let s of this.mounts.keys()){let n=s.split("/").filter(Boolean),r="";for(let a of n)r=`${r}/${a}`,t.add(r);let i=this.mounts.get(s);if(i)for(let a of i.filesystem.getAllPaths())a==="/"?t.add(s):t.add(`${s}${a}`)}return Array.from(t).sort()}async chmod(t,s){let n=this.normalizePath(t),r=this.mounts.get(n);if(r)return r.filesystem.chmod("/",s);let{fs:i,relativePath:a}=this.routePath(t);return i.chmod(a,s)}async symlink(t,s){let{fs:n,relativePath:r}=this.routePath(s);return n.symlink(t,r)}async link(t,s){let n=this.routePath(t),r=this.routePath(s);if(n.fs!==r.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${s}'`);return n.fs.link(n.relativePath,r.relativePath)}async readlink(t){let{fs:s,relativePath:n}=this.routePath(t);return s.readlink(n)}async realpath(t){let s=this.normalizePath(t);if(this.mounts.get(s))return s;let{fs:r,relativePath:i}=this.routePath(t),a=await r.realpath(i);for(let[o,c]of this.mounts)if(s===o||s.startsWith(`${o}/`))return a==="/"?o:`${o}${a}`;return a}async crossMountCopy(t,s,n){let r=await this.lstat(t);if(r.isFile){let i=await this.readFileBuffer(t);await this.writeFile(s,i),await this.chmod(s,r.mode)}else if(r.isDirectory){if(!n?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(s,{recursive:!0});let i=await this.readdir(t);for(let a of i){let o=t==="/"?`/${a}`:`${t}/${a}`,c=s==="/"?`/${a}`:`${s}/${a}`;await this.crossMountCopy(o,c,n)}}else if(r.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,s)}}async utimes(t,s,n){let{fs:r,relativePath:i}=this.routePath(t);return r.utimes(i,s,n)}};import*as G from"node:fs";import*as qe from"node:path";var ya="/home/user/project",Ze=class{root;mountPoint;readOnly;memory=new Map;deleted=new Set;constructor(t){this.root=qe.resolve(t.root);let s=t.mountPoint??ya;if(this.mountPoint=s==="/"?"/":s.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${s}`);if(this.readOnly=t.readOnly??!1,!G.existsSync(this.root))throw new Error(`OverlayFs root does not exist: ${this.root}`);if(!G.statSync(this.root).isDirectory())throw new Error(`OverlayFs root is not a directory: ${this.root}`);this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let n of t)s+=`/${n}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let r=this.normalizePath(t).split("/").filter(Boolean),i="";for(let a of r)i+=`/${a}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let n=this.normalizePath(t),r=this.getDirname(n);r!=="/"&&this.mkdirSync(r);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(n,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=this.normalizePath(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=qe.join(this.root,n),i=qe.resolve(r);return!i.startsWith(this.root)&&i!==this.root.replace(/\/$/,"")?null:i}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.memory.has(s)||(this.ensureParentDirs(s),this.memory.set(s,{type:"directory",mode:493,mtime:new Date})),this.deleted.delete(s))}async existsInOverlay(t){let s=this.normalizePath(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let n=this.toRealPath(s);if(!n)return!1;try{return await G.promises.access(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=le(s);return Fe(n,r)}async readFileBuffer(t,s=new Set){let n=this.normalizePath(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let a=this.resolveSymlink(n,r.target);return this.readFileBuffer(a,s)}if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content}let i=this.toRealPath(n);if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let a=await G.promises.lstat(i);if(a.isSymbolicLink()){let c=await G.promises.readlink(i),l=this.resolveSymlink(n,c);return this.readFileBuffer(l,s)}if(a.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);let o=await G.promises.readFile(i);return new Uint8Array(o)}catch(a){throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):a}}async writeFile(t,s,n){this.assertWritable(`write '${t}'`);let r=this.normalizePath(t);this.ensureParentDirs(r);let i=le(n),a=$e(s,i);this.memory.set(r,{type:"file",content:a,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){this.assertWritable(`append '${t}'`);let r=this.normalizePath(t),i=le(n),a=$e(s,i),o;try{o=await this.readFileBuffer(r)}catch{o=new Uint8Array(0)}let c=new Uint8Array(o.length+a.length);c.set(o),c.set(a,o.length),this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:c,mode:420,mtime:new Date}),this.deleted.delete(r)}async exists(t){return this.existsInOverlay(t)}async stat(t,s=new Set){let n=this.normalizePath(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let o=this.resolveSymlink(n,r.target);return this.stat(o,s)}let a=0;return r.type==="file"&&(a=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:a,mtime:r.mtime}}let i=this.toRealPath(n);if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let a=await G.promises.stat(i);return{isFile:a.isFile(),isDirectory:a.isDirectory(),isSymbolicLink:!1,mode:a.mode,size:a.size,mtime:a.mtime}}catch(a){throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):a}}async lstat(t){let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let n=this.memory.get(s);if(n){if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime};let i=0;return n.type==="file"&&(i=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:i,mtime:n.mtime}}let r=this.toRealPath(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await G.promises.lstat(r);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):i}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}async mkdir(t,s){this.assertWritable(`mkdir '${t}'`);let n=this.normalizePath(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=this.dirname(n);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let o of this.deleted)if(o.startsWith(i)){let c=o.slice(i.length),l=c.split("/")[0];l&&!c.includes("/",l.length)&&r.add(l)}for(let[o,c]of this.memory)if(o!==s&&o.startsWith(i)){let l=o.slice(i.length),f=l.split("/")[0];f&&!r.has(f)&&!l.includes("/",1)&&n.set(f,{name:f,isFile:c.type==="file",isDirectory:c.type==="directory",isSymbolicLink:c.type==="symlink"})}let a=this.toRealPath(s);if(a)try{let o=await G.promises.readdir(a,{withFileTypes:!0});for(let c of o)!r.has(c.name)&&!n.has(c.name)&&n.set(c.name,{name:c.name,isFile:c.isFile(),isDirectory:c.isDirectory(),isSymbolicLink:c.isSymbolicLink()})}catch(o){if(o.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else if(o.code!=="ENOTDIR")throw o}return n}async resolveForReaddir(t,s=!1){let n=this.normalizePath(t),r=new Set,i=s,a=this.memory.get(n);for(;a&&a.type==="symlink";){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(n),i=!0,n=this.resolveSymlink(n,a.target),a=this.memory.get(n)}if(a)return{normalized:n,outsideOverlay:!1};if(this.getRelativeToMount(n)===null)return{normalized:n,outsideOverlay:!0};let c=this.toRealPath(n);if(!c)return{normalized:n,outsideOverlay:!0};try{if((await G.promises.lstat(c)).isSymbolicLink()){let f=await G.promises.readlink(c),u=this.resolveSymlink(n,f);return this.resolveForReaddir(u,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.keys()).sort((i,a)=>i<a?-1:i>a?1:0)}async readdirWithFileTypes(t){let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.values()).sort((i,a)=>i.name<a.name?-1:i.name>a.name?1:0)}async rm(t,s){this.assertWritable(`rm '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(n)).isDirectory){let a=await this.readdir(n);if(a.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of a){let c=n==="/"?`/${o}`:`${n}/${o}`;await this.rm(c,s)}}}}catch{}this.deleted.add(n),this.memory.delete(n)}async cp(t,s,n){this.assertWritable(`cp '${s}'`);let r=this.normalizePath(t),i=this.normalizePath(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let o=await this.stat(r);if(o.isFile){let c=await this.readFileBuffer(r);await this.writeFile(i,c)}else if(o.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let c=await this.readdir(r);for(let l of c){let f=r==="/"?`/${l}`:`${r}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(f,u,n)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let n=this.toRealPath(t);if(n)try{let r=G.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(a))continue;s.add(a);let o=qe.join(n,i);G.statSync(o).isDirectory()&&this.scanRealFs(a,s)}}catch{}}async chmod(t,s){this.assertWritable(`chmod '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(n);if(i){i.mode=s;return}let a=await this.stat(n);if(a.isFile){let o=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:o,mode:s,mtime:new Date})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){this.assertWritable(`symlink '${s}'`);let n=this.normalizePath(s);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.memory.set(n,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(n)}async link(t,s){this.assertWritable(`link '${s}'`);let n=this.normalizePath(t),r=this.normalizePath(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let a=await this.stat(n);if(!a.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let c=await this.readFileBuffer(n);this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:c,mode:a.mode,mtime:new Date}),this.deleted.delete(r)}async readlink(t){let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let n=this.memory.get(s);if(n){if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}let r=this.toRealPath(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{return await G.promises.readlink(r)}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, readlink '${t}'`):i.code==="EINVAL"?new Error(`EINVAL: invalid argument, readlink '${t}'`):i}}async realpath(t){let s=this.normalizePath(t),n=new Set,r=async o=>{let c=o==="/"?[]:o.slice(1).split("/"),l="";for(let f of c){if(l=`${l}/${f}`,n.has(l))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(l))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let u=this.memory.get(l),d=0,h=40;for(;u&&u.type==="symlink"&&d<h;){if(n.add(l),l=this.resolveSymlink(l,u.target),d++,n.has(l))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(l))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);u=this.memory.get(l)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!u){let m=this.toRealPath(l);if(m)try{if((await G.promises.lstat(m)).isSymbolicLink()){let g=await G.promises.readlink(m);return n.add(l),l=this.resolveSymlink(l,g),r(l)}}catch(p){throw p.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):p}}}return l||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){this.assertWritable(`utimes '${t}'`);let r=this.normalizePath(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let a=this.memory.get(r);if(a){a.mtime=n;return}let o=await this.stat(r);if(o.isFile){let c=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:c,mode:o.mode,mtime:n})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:o.mode,mtime:n})}};import*as B from"node:fs";import*as we from"node:path";var Wt=class{root;constructor(t){if(this.root=we.resolve(t.root),!B.existsSync(this.root))throw new Error(`ReadWriteFs root does not exist: ${this.root}`);if(!B.statSync(this.root).isDirectory())throw new Error(`ReadWriteFs root is not a directory: ${this.root}`)}toRealPath(t){let s=this.normalizePath(t),n=we.join(this.root,s);return we.resolve(n)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}async readFile(t,s){let n=await this.readFileBuffer(t),r=le(s);return Fe(n,r)}async readFileBuffer(t){let s=this.toRealPath(t);try{let n=await B.promises.readFile(s);return new Uint8Array(n)}catch(n){let r=n;throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):r.code==="EISDIR"?new Error(`EISDIR: illegal operation on a directory, read '${t}'`):n}}async writeFile(t,s,n){let r=this.toRealPath(t),i=le(n),a=$e(s,i),o=we.dirname(r);await B.promises.mkdir(o,{recursive:!0}),await B.promises.writeFile(r,a)}async appendFile(t,s,n){let r=this.toRealPath(t),i=le(n),a=$e(s,i),o=we.dirname(r);await B.promises.mkdir(o,{recursive:!0}),await B.promises.appendFile(r,a)}async exists(t){let s=this.toRealPath(t);try{return await B.promises.access(s),!0}catch{return!1}}async stat(t){let s=this.toRealPath(t);try{let n=await B.promises.stat(s);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:!1,mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):n}}async lstat(t){let s=this.toRealPath(t);try{let n=await B.promises.lstat(s);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink(),mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):n}}async mkdir(t,s){let n=this.toRealPath(t);try{await B.promises.mkdir(n,{recursive:s?.recursive})}catch(r){let i=r;throw i.code==="EEXIST"?new Error(`EEXIST: file already exists, mkdir '${t}'`):i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, mkdir '${t}'`):r}}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){let s=this.toRealPath(t);try{return(await B.promises.readdir(s,{withFileTypes:!0})).map(r=>({name:r.name,isFile:r.isFile(),isDirectory:r.isDirectory(),isSymbolicLink:r.isSymbolicLink()})).sort((r,i)=>r.name<i.name?-1:r.name>i.name?1:0)}catch(n){let r=n;throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, scandir '${t}'`):r.code==="ENOTDIR"?new Error(`ENOTDIR: not a directory, scandir '${t}'`):n}}async rm(t,s){let n=this.toRealPath(t);try{await B.promises.rm(n,{recursive:s?.recursive??!1,force:s?.force??!1})}catch(r){let i=r;throw i.code==="ENOENT"&&!s?.force?new Error(`ENOENT: no such file or directory, rm '${t}'`):i.code==="ENOTEMPTY"?new Error(`ENOTEMPTY: directory not empty, rm '${t}'`):r}}async cp(t,s,n){let r=this.toRealPath(t),i=this.toRealPath(s);try{await B.promises.cp(r,i,{recursive:n?.recursive??!1})}catch(a){let o=a;throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, cp '${t}'`):o.code==="EISDIR"?new Error(`EISDIR: is a directory, cp '${t}'`):a}}async mv(t,s){let n=this.toRealPath(t),r=this.toRealPath(s),i=we.dirname(r);await B.promises.mkdir(i,{recursive:!0});try{await B.promises.rename(n,r)}catch(a){let o=a;if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(o.code==="EXDEV"){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0});return}throw a}}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}getAllPaths(){let t=[];return this.scanDir("/",t),t}scanDir(t,s){let n=this.toRealPath(t);try{let r=B.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;s.push(a);let o=we.join(n,i);B.statSync(o).isDirectory()&&this.scanDir(a,s)}}catch{}}async chmod(t,s){let n=this.toRealPath(t);try{await B.promises.chmod(n,s)}catch(r){throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, chmod '${t}'`):r}}async symlink(t,s){let n=this.toRealPath(s);try{await B.promises.symlink(t,n)}catch(r){throw r.code==="EEXIST"?new Error(`EEXIST: file already exists, symlink '${s}'`):r}}async link(t,s){let n=this.toRealPath(t),r=this.toRealPath(s);try{await B.promises.link(n,r)}catch(i){let a=i;throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, link '${t}'`):a.code==="EEXIST"?new Error(`EEXIST: file already exists, link '${s}'`):a.code==="EPERM"?new Error(`EPERM: operation not permitted, link '${t}'`):i}}async readlink(t){let s=this.toRealPath(t);try{return await B.promises.readlink(s)}catch(n){let r=n;throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, readlink '${t}'`):r.code==="EINVAL"?new Error(`EINVAL: invalid argument, readlink '${t}'`):n}}async realpath(t){let s=this.toRealPath(t);try{let n=await B.promises.realpath(s);return n.startsWith(this.root)?n.slice(this.root.length)||"/":n}catch(n){let r=n;throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):r.code==="ELOOP"?new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`):n}}async utimes(t,s,n){let r=this.toRealPath(t);try{await B.promises.utimes(r,s,n)}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, utimes '${t}'`):i}}};var Ge=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;resultPromise;constructor(t,s,n,r,i=!1){this.cmdId=crypto.randomUUID(),this.cwd=n,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=s,this.env=r,this.explicitCwd=i,this.resultPromise=this.execute()}async execute(){let t=this.env||this.explicitCwd?{cwd:this.explicitCwd?this.cwd:void 0,env:this.env}:void 0,s=await this.bashEnv.exec(this.cmdLine,t);return this.exitCode=s.exitCode,s}async*logs(){let t=await this.resultPromise;t.stdout&&(yield{type:"stdout",data:t.stdout,timestamp:new Date}),t.stderr&&(yield{type:"stderr",data:t.stderr,timestamp:new Date})}async wait(){return await this.resultPromise,this}async output(){let t=await this.resultPromise;return t.stdout+t.stderr}async stdout(){return(await this.resultPromise).stdout}async stderr(){return(await this.resultPromise).stderr}async kill(){}};var zt=class e{bashEnv;constructor(t){this.bashEnv=t}static async create(t){let s=t?.fs;if(t?.overlayRoot){if(t?.fs)throw new Error("Cannot specify both 'fs' and 'overlayRoot' options");s=new Ze({root:t.overlayRoot})}let n=new it({env:t?.env,cwd:t?.cwd,fs:s,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network});return new e(n)}async runCommand(t,s){let n=s?.cwd??this.bashEnv.getCwd(),r=s?.cwd!==void 0;return new Ge(this.bashEnv,t,n,s?.env,r)}async writeFiles(t){for(let[s,n]of Object.entries(t)){let r;typeof n=="string"?r=n:n.encoding==="base64"?r=Buffer.from(n.content,"base64").toString("utf-8"):r=n.content;let i=s.substring(0,s.lastIndexOf("/"))||"/";i!=="/"&&await this.bashEnv.exec(`mkdir -p ${i}`),await this.bashEnv.writeFile(s,r)}}async readFile(t,s){let n=await this.bashEnv.readFile(t);return s==="base64"?Buffer.from(n).toString("base64"):n}async mkDir(t,s){let n=s?.recursive?"-p":"";await this.bashEnv.exec(`mkdir ${n} ${t}`)}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};export{it as Bash,Se as InMemoryFs,Mt as MountableFs,He as NetworkAccessDeniedError,Ze as OverlayFs,Wt as ReadWriteFs,Ue as RedirectNotAllowedError,zt as Sandbox,Ge as SandboxCommand,je as TooManyRedirectsError,zr as defineCommand,Mr as getCommandNames,Wr as getNetworkCommandNames};
676
+ `)}var Wt=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new $e,t?.mounts)for(let{mountPoint:s,filesystem:n}of t.mounts)this.mount(s,n)}mount(t,s){this.validateMountPath(t);let n=this.normalizePath(t);this.validateMount(n),this.mounts.set(n,{mountPoint:n,filesystem:s})}unmount(t){let s=this.normalizePath(t);if(!this.mounts.has(s))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(s)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}isMountPoint(t){let s=this.normalizePath(t);return this.mounts.has(s)}validateMountPath(t){let s=t.split("/");for(let n of s)if(n==="."||n==="..")throw new Error(`Invalid mount point '${t}': contains '.' or '..' segments`)}validateMount(t){if(t==="/")throw new Error("Cannot mount at root '/'");for(let s of this.mounts.keys())if(s!==t){if(t.startsWith(`${s}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${s}'`);if(s.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${s}'`)}}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`}routePath(t){let s=this.normalizePath(t),n=null,r=0;for(let i of this.mounts.values()){let a=i.mountPoint;if(s===a)return{fs:i.filesystem,relativePath:"/"};s.startsWith(`${a}/`)&&a.length>r&&(n=i,r=a.length)}if(n){let i=s.slice(r);return{fs:n.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:s}}getChildMountPoints(t){let s=this.normalizePath(t),n=s==="/"?"/":`${s}/`,r=[];for(let i of this.mounts.keys())if(i.startsWith(n)){let o=i.slice(n.length).split("/")[0];o&&!r.includes(o)&&r.push(o)}return r}async readFile(t,s){let{fs:n,relativePath:r}=this.routePath(t);return n.readFile(r,s)}async readFileBuffer(t){let{fs:s,relativePath:n}=this.routePath(t);return s.readFileBuffer(n)}async writeFile(t,s,n){let{fs:r,relativePath:i}=this.routePath(t);return r.writeFile(i,s,n)}async appendFile(t,s,n){let{fs:r,relativePath:i}=this.routePath(t);return r.appendFile(i,s,n)}async exists(t){let s=this.normalizePath(t);if(this.mounts.has(s)||this.getChildMountPoints(s).length>0)return!0;let{fs:r,relativePath:i}=this.routePath(t);return r.exists(i)}async stat(t){let s=this.normalizePath(t),n=this.mounts.get(s);if(n)try{return await n.filesystem.stat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.stat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:a}=this.routePath(t);return i.stat(a)}async lstat(t){let s=this.normalizePath(t),n=this.mounts.get(s);if(n)try{return await n.filesystem.lstat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(s).length>0)try{return await this.baseFs.lstat(s)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:a}=this.routePath(t);return i.lstat(a)}async mkdir(t,s){let n=this.normalizePath(t);if(this.mounts.has(n)){if(s?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(n).length>0&&s?.recursive)return;let{fs:i,relativePath:a}=this.routePath(t);return i.mkdir(a,s)}async readdir(t){let s=this.normalizePath(t),n=new Set,r=null,{fs:i,relativePath:a}=this.routePath(t);try{let c=await i.readdir(a);for(let l of c)n.add(l)}catch(c){let l=c.code,f=c.message||"";if(l!=="ENOENT"&&!f.includes("ENOENT"))throw c;r=c}let o=this.getChildMountPoints(s);for(let c of o)n.add(c);if(n.size===0&&r&&!this.mounts.has(s))throw r;return Array.from(n).sort()}async rm(t,s){let n=this.normalizePath(t);if(this.mounts.has(n))throw new Error(`EBUSY: mount point, cannot remove '${t}'`);if(this.getChildMountPoints(n).length>0)throw new Error(`EBUSY: contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:a}=this.routePath(t);return i.rm(a,s)}async cp(t,s,n){let r=this.routePath(t),i=this.routePath(s);return r.fs===i.fs?r.fs.cp(r.relativePath,i.relativePath,n):this.crossMountCopy(t,s,n)}async mv(t,s){let n=this.normalizePath(t);if(this.mounts.has(n))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let r=this.routePath(t),i=this.routePath(s);if(r.fs===i.fs)return r.fs.mv(r.relativePath,i.relativePath);await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}getAllPaths(){let t=new Set;for(let s of this.baseFs.getAllPaths())t.add(s);for(let s of this.mounts.keys()){let n=s.split("/").filter(Boolean),r="";for(let a of n)r=`${r}/${a}`,t.add(r);let i=this.mounts.get(s);if(i)for(let a of i.filesystem.getAllPaths())a==="/"?t.add(s):t.add(`${s}${a}`)}return Array.from(t).sort()}async chmod(t,s){let n=this.normalizePath(t),r=this.mounts.get(n);if(r)return r.filesystem.chmod("/",s);let{fs:i,relativePath:a}=this.routePath(t);return i.chmod(a,s)}async symlink(t,s){let{fs:n,relativePath:r}=this.routePath(s);return n.symlink(t,r)}async link(t,s){let n=this.routePath(t),r=this.routePath(s);if(n.fs!==r.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${s}'`);return n.fs.link(n.relativePath,r.relativePath)}async readlink(t){let{fs:s,relativePath:n}=this.routePath(t);return s.readlink(n)}async realpath(t){let s=this.normalizePath(t);if(this.mounts.get(s))return s;let{fs:r,relativePath:i}=this.routePath(t),a=await r.realpath(i);for(let[o,c]of this.mounts)if(s===o||s.startsWith(`${o}/`))return a==="/"?o:`${o}${a}`;return a}async crossMountCopy(t,s,n){let r=await this.lstat(t);if(r.isFile){let i=await this.readFileBuffer(t);await this.writeFile(s,i),await this.chmod(s,r.mode)}else if(r.isDirectory){if(!n?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(s,{recursive:!0});let i=await this.readdir(t);for(let a of i){let o=t==="/"?`/${a}`:`${t}/${a}`,c=s==="/"?`/${a}`:`${s}/${a}`;await this.crossMountCopy(o,c,n)}}else if(r.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,s)}}async utimes(t,s,n){let{fs:r,relativePath:i}=this.routePath(t);return r.utimes(i,s,n)}};import*as G from"node:fs";import*as qe from"node:path";var va="/home/user/project",Ze=class{root;mountPoint;readOnly;memory=new Map;deleted=new Set;constructor(t){this.root=qe.resolve(t.root);let s=t.mountPoint??va;if(this.mountPoint=s==="/"?"/":s.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${s}`);if(this.readOnly=t.readOnly??!1,!G.existsSync(this.root))throw new Error(`OverlayFs root does not exist: ${this.root}`);if(!G.statSync(this.root).isDirectory())throw new Error(`OverlayFs root is not a directory: ${this.root}`);this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let n of t)s+=`/${n}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let r=this.normalizePath(t).split("/").filter(Boolean),i="";for(let a of r)i+=`/${a}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let n=this.normalizePath(t),r=this.getDirname(n);r!=="/"&&this.mkdirSync(r);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(n,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=this.normalizePath(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=qe.join(this.root,n),i=qe.resolve(r);return!i.startsWith(this.root)&&i!==this.root.replace(/\/$/,"")?null:i}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.memory.has(s)||(this.ensureParentDirs(s),this.memory.set(s,{type:"directory",mode:493,mtime:new Date})),this.deleted.delete(s))}async existsInOverlay(t){let s=this.normalizePath(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let n=this.toRealPath(s);if(!n)return!1;try{return await G.promises.access(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=le(s);return Fe(n,r)}async readFileBuffer(t,s=new Set){let n=this.normalizePath(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let a=this.resolveSymlink(n,r.target);return this.readFileBuffer(a,s)}if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content}let i=this.toRealPath(n);if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let a=await G.promises.lstat(i);if(a.isSymbolicLink()){let c=await G.promises.readlink(i),l=this.resolveSymlink(n,c);return this.readFileBuffer(l,s)}if(a.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);let o=await G.promises.readFile(i);return new Uint8Array(o)}catch(a){throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):a}}async writeFile(t,s,n){this.assertWritable(`write '${t}'`);let r=this.normalizePath(t);this.ensureParentDirs(r);let i=le(n),a=be(s,i);this.memory.set(r,{type:"file",content:a,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){this.assertWritable(`append '${t}'`);let r=this.normalizePath(t),i=le(n),a=be(s,i),o;try{o=await this.readFileBuffer(r)}catch{o=new Uint8Array(0)}let c=new Uint8Array(o.length+a.length);c.set(o),c.set(a,o.length),this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:c,mode:420,mtime:new Date}),this.deleted.delete(r)}async exists(t){return this.existsInOverlay(t)}async stat(t,s=new Set){let n=this.normalizePath(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let o=this.resolveSymlink(n,r.target);return this.stat(o,s)}let a=0;return r.type==="file"&&(a=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:a,mtime:r.mtime}}let i=this.toRealPath(n);if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let a=await G.promises.stat(i);return{isFile:a.isFile(),isDirectory:a.isDirectory(),isSymbolicLink:!1,mode:a.mode,size:a.size,mtime:a.mtime}}catch(a){throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):a}}async lstat(t){let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let n=this.memory.get(s);if(n){if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime};let i=0;return n.type==="file"&&(i=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:i,mtime:n.mtime}}let r=this.toRealPath(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await G.promises.lstat(r);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):i}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}async mkdir(t,s){this.assertWritable(`mkdir '${t}'`);let n=this.normalizePath(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=this.dirname(n);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let o of this.deleted)if(o.startsWith(i)){let c=o.slice(i.length),l=c.split("/")[0];l&&!c.includes("/",l.length)&&r.add(l)}for(let[o,c]of this.memory)if(o!==s&&o.startsWith(i)){let l=o.slice(i.length),f=l.split("/")[0];f&&!r.has(f)&&!l.includes("/",1)&&n.set(f,{name:f,isFile:c.type==="file",isDirectory:c.type==="directory",isSymbolicLink:c.type==="symlink"})}let a=this.toRealPath(s);if(a)try{let o=await G.promises.readdir(a,{withFileTypes:!0});for(let c of o)!r.has(c.name)&&!n.has(c.name)&&n.set(c.name,{name:c.name,isFile:c.isFile(),isDirectory:c.isDirectory(),isSymbolicLink:c.isSymbolicLink()})}catch(o){if(o.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else if(o.code!=="ENOTDIR")throw o}return n}async resolveForReaddir(t,s=!1){let n=this.normalizePath(t),r=new Set,i=s,a=this.memory.get(n);for(;a&&a.type==="symlink";){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(n),i=!0,n=this.resolveSymlink(n,a.target),a=this.memory.get(n)}if(a)return{normalized:n,outsideOverlay:!1};if(this.getRelativeToMount(n)===null)return{normalized:n,outsideOverlay:!0};let c=this.toRealPath(n);if(!c)return{normalized:n,outsideOverlay:!0};try{if((await G.promises.lstat(c)).isSymbolicLink()){let f=await G.promises.readlink(c),u=this.resolveSymlink(n,f);return this.resolveForReaddir(u,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.keys()).sort((i,a)=>i<a?-1:i>a?1:0)}async readdirWithFileTypes(t){let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.values()).sort((i,a)=>i.name<a.name?-1:i.name>a.name?1:0)}async rm(t,s){this.assertWritable(`rm '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(n)).isDirectory){let a=await this.readdir(n);if(a.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of a){let c=n==="/"?`/${o}`:`${n}/${o}`;await this.rm(c,s)}}}}catch{}this.deleted.add(n),this.memory.delete(n)}async cp(t,s,n){this.assertWritable(`cp '${s}'`);let r=this.normalizePath(t),i=this.normalizePath(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let o=await this.stat(r);if(o.isFile){let c=await this.readFileBuffer(r);await this.writeFile(i,c)}else if(o.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let c=await this.readdir(r);for(let l of c){let f=r==="/"?`/${l}`:`${r}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(f,u,n)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let n=this.toRealPath(t);if(n)try{let r=G.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(a))continue;s.add(a);let o=qe.join(n,i);G.statSync(o).isDirectory()&&this.scanRealFs(a,s)}}catch{}}async chmod(t,s){this.assertWritable(`chmod '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(n);if(i){i.mode=s;return}let a=await this.stat(n);if(a.isFile){let o=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:o,mode:s,mtime:new Date})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){this.assertWritable(`symlink '${s}'`);let n=this.normalizePath(s);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.memory.set(n,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(n)}async link(t,s){this.assertWritable(`link '${s}'`);let n=this.normalizePath(t),r=this.normalizePath(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let a=await this.stat(n);if(!a.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let c=await this.readFileBuffer(n);this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:c,mode:a.mode,mtime:new Date}),this.deleted.delete(r)}async readlink(t){let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let n=this.memory.get(s);if(n){if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}let r=this.toRealPath(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{return await G.promises.readlink(r)}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, readlink '${t}'`):i.code==="EINVAL"?new Error(`EINVAL: invalid argument, readlink '${t}'`):i}}async realpath(t){let s=this.normalizePath(t),n=new Set,r=async o=>{let c=o==="/"?[]:o.slice(1).split("/"),l="";for(let f of c){if(l=`${l}/${f}`,n.has(l))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(l))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let u=this.memory.get(l),d=0,h=40;for(;u&&u.type==="symlink"&&d<h;){if(n.add(l),l=this.resolveSymlink(l,u.target),d++,n.has(l))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(l))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);u=this.memory.get(l)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!u){let m=this.toRealPath(l);if(m)try{if((await G.promises.lstat(m)).isSymbolicLink()){let g=await G.promises.readlink(m);return n.add(l),l=this.resolveSymlink(l,g),r(l)}}catch(p){throw p.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):p}}}return l||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){this.assertWritable(`utimes '${t}'`);let r=this.normalizePath(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let a=this.memory.get(r);if(a){a.mtime=n;return}let o=await this.stat(r);if(o.isFile){let c=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:c,mode:o.mode,mtime:n})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:o.mode,mtime:n})}};import*as B from"node:fs";import*as we from"node:path";var zt=class{root;constructor(t){if(this.root=we.resolve(t.root),!B.existsSync(this.root))throw new Error(`ReadWriteFs root does not exist: ${this.root}`);if(!B.statSync(this.root).isDirectory())throw new Error(`ReadWriteFs root is not a directory: ${this.root}`)}toRealPath(t){let s=this.normalizePath(t),n=we.join(this.root,s);return we.resolve(n)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}async readFile(t,s){let n=await this.readFileBuffer(t),r=le(s);return Fe(n,r)}async readFileBuffer(t){let s=this.toRealPath(t);try{let n=await B.promises.readFile(s);return new Uint8Array(n)}catch(n){let r=n;throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):r.code==="EISDIR"?new Error(`EISDIR: illegal operation on a directory, read '${t}'`):n}}async writeFile(t,s,n){let r=this.toRealPath(t),i=le(n),a=be(s,i),o=we.dirname(r);await B.promises.mkdir(o,{recursive:!0}),await B.promises.writeFile(r,a)}async appendFile(t,s,n){let r=this.toRealPath(t),i=le(n),a=be(s,i),o=we.dirname(r);await B.promises.mkdir(o,{recursive:!0}),await B.promises.appendFile(r,a)}async exists(t){let s=this.toRealPath(t);try{return await B.promises.access(s),!0}catch{return!1}}async stat(t){let s=this.toRealPath(t);try{let n=await B.promises.stat(s);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:!1,mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):n}}async lstat(t){let s=this.toRealPath(t);try{let n=await B.promises.lstat(s);return{isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink(),mode:n.mode,size:n.size,mtime:n.mtime}}catch(n){throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):n}}async mkdir(t,s){let n=this.toRealPath(t);try{await B.promises.mkdir(n,{recursive:s?.recursive})}catch(r){let i=r;throw i.code==="EEXIST"?new Error(`EEXIST: file already exists, mkdir '${t}'`):i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, mkdir '${t}'`):r}}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){let s=this.toRealPath(t);try{return(await B.promises.readdir(s,{withFileTypes:!0})).map(r=>({name:r.name,isFile:r.isFile(),isDirectory:r.isDirectory(),isSymbolicLink:r.isSymbolicLink()})).sort((r,i)=>r.name<i.name?-1:r.name>i.name?1:0)}catch(n){let r=n;throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, scandir '${t}'`):r.code==="ENOTDIR"?new Error(`ENOTDIR: not a directory, scandir '${t}'`):n}}async rm(t,s){let n=this.toRealPath(t);try{await B.promises.rm(n,{recursive:s?.recursive??!1,force:s?.force??!1})}catch(r){let i=r;throw i.code==="ENOENT"&&!s?.force?new Error(`ENOENT: no such file or directory, rm '${t}'`):i.code==="ENOTEMPTY"?new Error(`ENOTEMPTY: directory not empty, rm '${t}'`):r}}async cp(t,s,n){let r=this.toRealPath(t),i=this.toRealPath(s);try{await B.promises.cp(r,i,{recursive:n?.recursive??!1})}catch(a){let o=a;throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, cp '${t}'`):o.code==="EISDIR"?new Error(`EISDIR: is a directory, cp '${t}'`):a}}async mv(t,s){let n=this.toRealPath(t),r=this.toRealPath(s),i=we.dirname(r);await B.promises.mkdir(i,{recursive:!0});try{await B.promises.rename(n,r)}catch(a){let o=a;if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(o.code==="EXDEV"){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0});return}throw a}}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}getAllPaths(){let t=[];return this.scanDir("/",t),t}scanDir(t,s){let n=this.toRealPath(t);try{let r=B.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;s.push(a);let o=we.join(n,i);B.statSync(o).isDirectory()&&this.scanDir(a,s)}}catch{}}async chmod(t,s){let n=this.toRealPath(t);try{await B.promises.chmod(n,s)}catch(r){throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, chmod '${t}'`):r}}async symlink(t,s){let n=this.toRealPath(s);try{await B.promises.symlink(t,n)}catch(r){throw r.code==="EEXIST"?new Error(`EEXIST: file already exists, symlink '${s}'`):r}}async link(t,s){let n=this.toRealPath(t),r=this.toRealPath(s);try{await B.promises.link(n,r)}catch(i){let a=i;throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, link '${t}'`):a.code==="EEXIST"?new Error(`EEXIST: file already exists, link '${s}'`):a.code==="EPERM"?new Error(`EPERM: operation not permitted, link '${t}'`):i}}async readlink(t){let s=this.toRealPath(t);try{return await B.promises.readlink(s)}catch(n){let r=n;throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, readlink '${t}'`):r.code==="EINVAL"?new Error(`EINVAL: invalid argument, readlink '${t}'`):n}}async realpath(t){let s=this.toRealPath(t);try{let n=await B.promises.realpath(s);return n.startsWith(this.root)?n.slice(this.root.length)||"/":n}catch(n){let r=n;throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):r.code==="ELOOP"?new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`):n}}async utimes(t,s,n){let r=this.toRealPath(t);try{await B.promises.utimes(r,s,n)}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, utimes '${t}'`):i}}};var Ge=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;resultPromise;constructor(t,s,n,r,i=!1){this.cmdId=crypto.randomUUID(),this.cwd=n,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=s,this.env=r,this.explicitCwd=i,this.resultPromise=this.execute()}async execute(){let t=this.env||this.explicitCwd?{cwd:this.explicitCwd?this.cwd:void 0,env:this.env}:void 0,s=await this.bashEnv.exec(this.cmdLine,t);return this.exitCode=s.exitCode,s}async*logs(){let t=await this.resultPromise;t.stdout&&(yield{type:"stdout",data:t.stdout,timestamp:new Date}),t.stderr&&(yield{type:"stderr",data:t.stderr,timestamp:new Date})}async wait(){return await this.resultPromise,this}async output(){let t=await this.resultPromise;return t.stdout+t.stderr}async stdout(){return(await this.resultPromise).stdout}async stderr(){return(await this.resultPromise).stderr}async kill(){}};var Vt=class e{bashEnv;constructor(t){this.bashEnv=t}static async create(t){let s=t?.fs;if(t?.overlayRoot){if(t?.fs)throw new Error("Cannot specify both 'fs' and 'overlayRoot' options");s=new Ze({root:t.overlayRoot})}let n=new it({env:t?.env,cwd:t?.cwd,fs:s,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network});return new e(n)}async runCommand(t,s){let n=s?.cwd??this.bashEnv.getCwd(),r=s?.cwd!==void 0;return new Ge(this.bashEnv,t,n,s?.env,r)}async writeFiles(t){for(let[s,n]of Object.entries(t)){let r;typeof n=="string"?r=n:n.encoding==="base64"?r=Buffer.from(n.content,"base64").toString("utf-8"):r=n.content;let i=s.substring(0,s.lastIndexOf("/"))||"/";i!=="/"&&await this.bashEnv.exec(`mkdir -p ${i}`),await this.bashEnv.writeFile(s,r)}}async readFile(t,s){let n=await this.bashEnv.readFile(t);return s==="base64"?Buffer.from(n).toString("base64"):n}async mkDir(t,s){let n=s?.recursive?"-p":"";await this.bashEnv.exec(`mkdir ${n} ${t}`)}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};export{it as Bash,$e as InMemoryFs,Wt as MountableFs,He as NetworkAccessDeniedError,Ze as OverlayFs,zt as ReadWriteFs,Ue as RedirectNotAllowedError,Vt as Sandbox,Ge as SandboxCommand,je as TooManyRedirectsError,Hr as defineCommand,zr as getCommandNames,Vr as getNetworkCommandNames,Br as getPythonCommandNames};