just-bash 2.7.2 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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-GMMICOEF.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-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__)&&(Ie.push({name:"tar",load:async()=>(await import("./chunks/tar-5V4PGBFL.js")).tarCommand}),Ie.push({name:"yq",load:async()=>(await import("./chunks/yq-6SPP5BHS.js")).yqCommand}),Ie.push({name:"xan",load:async()=>(await import("./chunks/xan-HKCQ46BH.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,7 +149,7 @@ 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={":":[": [arguments]",`Null command.
153
153
  No effect; the command does nothing.
154
154
  Exit Status:
155
155
  Always succeeds.`],".":[". filename [arguments]",`Execute commands from a file in the current shell.
@@ -494,29 +494,29 @@ eval: usage: eval [arg ...]
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}
497
+ option is given.`]},Yn=Object.keys(Kn).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,d]=Kn[f];s?i+=`${f}: ${u}
500
500
  `:i+=`${f}: ${u}
501
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(`
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-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 Cr(e,o,l);let f=o;if(c)f=await fa(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 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};