just-bash 2.9.0 → 2.9.2

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,155 +1,155 @@
1
- import{B as fr,C as dr,D as ie,E as Le,F as K,G as ge,H as yt,I as hr,J as x,K as pr,L as mr,M as be,N as Jt,O as gt,P as V,a as sr,b as rr,c as nr,d as pt,e as Z,f as W,g as we,h as Q,i as ve,j as Te,k as Gt,l as mt,m as ir,n as Xt,o as or,p as de,q as Pe,r as ar,s as lr,t as Kt,u as Yt,v as De,w as cr,x as ur,y as ye,z as Qt}from"./chunks/chunk-2AON5K3E.js";import{a as Oe,b as me}from"./chunks/chunk-OJDRYQWQ.js";import{a as le,b as ce,c as ne,d as fe,e as er,f as z,g as Re,h as ft,i as dt,j as tr,k as re,l as Ne,m as ht,n as pe}from"./chunks/chunk-PSW6BMXW.js";import{a as tt}from"./chunks/chunk-YNYSPYQ5.js";import"./chunks/chunk-NUFRM6SI.js";import{a as Ae}from"./chunks/chunk-44UOCSGV.js";import"./chunks/chunk-DXB73IDG.js";var Fe=[{name:"echo",load:async()=>(await import("./chunks/echo-6S7WE7XB.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-GPKR7D6K.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-4U5V2VHK.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-PUJHEPXS.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-SF2UE4KB.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-DU6C7ZEO.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-TDTEBHHI.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-MJFRIDNT.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-NJSENVKC.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-JPBZPM4O.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-Y7YB677N.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-ODWUR7E6.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-S4NVAMC4.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-EM4O3U4P.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-SA7P5NJ7.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-52LRAWXT.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-VDPK3LVS.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-IOLJTP7U.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-JNKRPEYR.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-4K5HXNXE.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-YNEKUV4T.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-LT2PE47K.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-XBP4SJA3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-AXQM7FFF.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-NVKWEAZF.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-QAP6Y75J.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-UJSEBPIQ.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-FKUV5GH5.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-KWQGFZH5.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-6CFXIPYZ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-VSTNOVF5.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-I7A2VXFD.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-LRU5XCFP.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-LGSGJHV5.js")).split},{name:"column",load:async()=>(await import("./chunks/column-R6OLMEUA.js")).column},{name:"join",load:async()=>(await import("./chunks/join-X3QYPZUA.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-4KHTWVWB.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-WTVSUXL3.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-CFA5ZIGT.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-YPJLCQYA.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-UFVZH4SS.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-T4JUAAB2.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-M3AXY56V.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-M3AXY56V.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-TMBGOQO6.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-4FRA6OJ7.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-VT2LJIDX.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-2LEQ2SZJ.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-2JFR3HGT.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-ELUS3RW7.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-PN3CMG7K.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-AK4QE4WR.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-X3X3N6IE.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-EGF4KTWV.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-5VRIVQYP.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-YSFDPKPV.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-TGZPGVOK.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-37LOTSQP.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-I4J5BPZA.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-APPTAFMI.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-ZK6GQVSL.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-UD3E73G5.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-GF77XMJD.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-2X4JLF4W.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-NWR32CGF.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-YUDAIS32.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-3FPDPLWJ.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Fe.push({name:"tar",load:async()=>(await import("./chunks/tar-5V4PGBFL.js")).tarCommand}),Fe.push({name:"yq",load:async()=>(await import("./chunks/yq-6RVO6I5Q.js")).yqCommand}),Fe.push({name:"xan",load:async()=>(await import("./chunks/xan-I4Y5DD3C.js")).xanCommand}),Fe.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-5QVZOGER.js")).sqlite3Command}));var wt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(wt.push({name:"python3",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).python3Command}),wt.push({name:"python",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).pythonCommand}));var gr=[{name:"curl",load:async()=>(await import("./chunks/curl-QDCXHQMX.js")).curlCommand}],yr=new Map;function es(e){return{name:e.name,async execute(t,s){let r=yr.get(e.name);return r||(r=await e.load(),yr.set(e.name,r)),r.execute(t,s)}}}function Yn(){return Fe.map(e=>e.name)}function Qn(){return gr.map(e=>e.name)}function wr(e){return(e?Fe.filter(s=>e.includes(s.name)):Fe).map(es)}function vr(){return gr.map(es)}function Jn(){return wt.map(e=>e.name)}function br(){return wt.map(es)}function Er(e){return"load"in e&&typeof e.load=="function"}function ei(e,t){return{name:e,execute:t}}function $r(e){let t=null;return{name:e.name,async execute(s,r){return t||(t=await e.load()),t.execute(s,r)}}}var ti=new TextEncoder,si=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 r=0;r<e.length;r+=2)s[r/2]=parseInt(e.slice(r,r+2),16);return s}return t==="binary"||t==="latin1"?Uint8Array.from(e,s=>s.charCodeAt(0)):ti.encode(e)}function Ve(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):si.decode(e)}function he(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var vt=new TextEncoder;function ri(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}function te(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var Ce=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,r]of Object.entries(t))ri(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.lastIndexOf("/");return r===0?"/":s.slice(0,r)}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,r,n){te(t,"write");let i=this.normalizePath(t);this.ensureParentDirs(i);let o=he(r),a=_e(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}async readFile(t,s){let r=await this.readFileBuffer(t),n=he(s);return Ve(r,n)}async readFileBuffer(t){te(t,"open");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content instanceof Uint8Array?r.content:vt.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){te(t,"append");let n=this.normalizePath(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=he(r),a=_e(s,o);if(i?.type==="file"){let l=i.content instanceof Uint8Array?i.content:vt.encode(i.content),c=new Uint8Array(l.length+a.length);c.set(l),c.set(a,l.length),this.data.set(n,{type:"file",content:c,mode:i.mode,mtime:new Date})}else this.writeFileSync(t,s,r)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){te(t,"stat");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let n=0;return r.type==="file"&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=vt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}async lstat(t){te(t,"lstat");let s=this.resolveIntermediateSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};let n=0;return r.type==="file"&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=vt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let r=this.dirname(t);return this.normalizePath(r==="/"?`/${s}`:`${r}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.slice(1).split("/");if(r.length<=1)return s;let n="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];n=`${n}/${a}`;let l=this.data.get(n),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(n),n=this.resolveSymlink(n,l.target),l=this.data.get(n),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${n}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.slice(1).split("/"),n="",i=new Set;for(let o of r){n=`${n}/${o}`;let a=this.data.get(n),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(n),n=this.resolveSymlink(n,a.target),a=this.data.get(n),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return n}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){te(t,"mkdir");let r=this.normalizePath(t);if(this.data.has(r)){if(this.data.get(r)?.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 n=this.dirname(r);if(n!=="/"&&!this.data.has(n))if(s?.recursive)this.mkdirSync(n,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){te(t,"scandir");let s=this.normalizePath(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Set;for(;r&&r.type==="symlink";){if(n.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(s),s=this.resolveSymlink(s,r.target),r=this.data.get(s)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,s){te(t,"rm");let r=this.normalizePath(t),n=this.data.get(r);if(!n){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(n.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=r==="/"?`/${o}`:`${r}/${o}`;await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){te(t,"cp"),te(s,"cp");let n=this.normalizePath(t),i=this.normalizePath(s),o=this.data.get(n);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(n);for(let l of a){let c=n==="/"?`/${l}`:`${n}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(c,u,r)}}}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 r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}async chmod(t,s){te(t,"chmod");let r=this.normalizePath(t),n=this.data.get(r);if(!n)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);n.mode=s}async symlink(t,s){te(s,"symlink");let r=this.normalizePath(s);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){te(t,"link"),te(s,"link");let r=this.normalizePath(t),n=this.normalizePath(s),i=this.data.get(r);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(n))throw new Error(`EEXIST: file already exists, link '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"file",content:i.content,mode:i.mode,mtime:i.mtime})}async readlink(t){te(t,"readlink");let s=this.normalizePath(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async realpath(t){te(t,"realpath");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,r){te(t,"utimes");let n=this.normalizePath(t),i=this.resolvePathWithSymlinks(n),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};function ni(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function ii(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 oi(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 ai(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${sr}
1
+ import{B as dr,C as hr,D as ie,E as Le,F as K,G as ge,H as yt,I as pr,J as D,K as mr,L as yr,M as be,N as es,O as gt,P as V,a as rr,b as nr,c as ir,d as pt,e as Z,f as W,g as we,h as Q,i as ve,j as xe,k as Xt,l as mt,m as or,n as Kt,o as ar,p as de,q as Pe,r as lr,s as cr,t as Yt,u as Qt,v as Te,w as ur,x as fr,y as ye,z as Jt}from"./chunks/chunk-2AON5K3E.js";import{a as Oe,b as me}from"./chunks/chunk-OJDRYQWQ.js";import{a as le,b as ce,c as ne,d as fe,e as tr,f as z,g as Re,h as ft,i as dt,j as sr,k as re,l as Ne,m as ht,n as pe}from"./chunks/chunk-PSW6BMXW.js";import{a as tt}from"./chunks/chunk-YNYSPYQ5.js";import"./chunks/chunk-NUFRM6SI.js";import{a as Ae}from"./chunks/chunk-44UOCSGV.js";import"./chunks/chunk-DXB73IDG.js";var Fe=[{name:"echo",load:async()=>(await import("./chunks/echo-6S7WE7XB.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-GPKR7D6K.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-4U5V2VHK.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-PUJHEPXS.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-SF2UE4KB.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-DU6C7ZEO.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-TDTEBHHI.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-MJFRIDNT.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-NJSENVKC.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-JPBZPM4O.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-Y7YB677N.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-ODWUR7E6.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-S4NVAMC4.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-EM4O3U4P.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-SA7P5NJ7.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-52LRAWXT.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-VDPK3LVS.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-IOLJTP7U.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-JNKRPEYR.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-4K5HXNXE.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-YNEKUV4T.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-LT2PE47K.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-XBP4SJA3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-AXQM7FFF.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-NVKWEAZF.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-QAP6Y75J.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-UJSEBPIQ.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-FKUV5GH5.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-KWQGFZH5.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-6CFXIPYZ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-VSTNOVF5.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-I7A2VXFD.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-LRU5XCFP.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-LGSGJHV5.js")).split},{name:"column",load:async()=>(await import("./chunks/column-R6OLMEUA.js")).column},{name:"join",load:async()=>(await import("./chunks/join-X3QYPZUA.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-4KHTWVWB.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-WTVSUXL3.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-CFA5ZIGT.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-YPJLCQYA.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-UFVZH4SS.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-T4JUAAB2.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-M3AXY56V.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-M3AXY56V.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-TMBGOQO6.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-4FRA6OJ7.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-VT2LJIDX.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-GMMYKAEP.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-2JFR3HGT.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-ELUS3RW7.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-PN3CMG7K.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-AK4QE4WR.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-X3X3N6IE.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-EGF4KTWV.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-5VRIVQYP.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-YSFDPKPV.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-TGZPGVOK.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-37LOTSQP.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-I4J5BPZA.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-APPTAFMI.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-ZK6GQVSL.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-UD3E73G5.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-GF77XMJD.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-2X4JLF4W.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-NWR32CGF.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-YUDAIS32.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-3FPDPLWJ.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Fe.push({name:"tar",load:async()=>(await import("./chunks/tar-5V4PGBFL.js")).tarCommand}),Fe.push({name:"yq",load:async()=>(await import("./chunks/yq-5WHXPM6R.js")).yqCommand}),Fe.push({name:"xan",load:async()=>(await import("./chunks/xan-DYADHWWG.js")).xanCommand}),Fe.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-DK5YHTWU.js")).sqlite3Command}));var wt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(wt.push({name:"python3",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).python3Command}),wt.push({name:"python",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).pythonCommand}));var wr=[{name:"curl",load:async()=>(await import("./chunks/curl-QDCXHQMX.js")).curlCommand}],gr=new Map;function ts(e){return{name:e.name,async execute(t,s){let r=gr.get(e.name);return r||(r=await e.load(),gr.set(e.name,r)),r.execute(t,s)}}}function Qn(){return Fe.map(e=>e.name)}function Jn(){return wr.map(e=>e.name)}function vr(e){return(e?Fe.filter(s=>e.includes(s.name)):Fe).map(ts)}function br(){return wr.map(ts)}function ei(){return wt.map(e=>e.name)}function Er(){return wt.map(ts)}function $r(e){return"load"in e&&typeof e.load=="function"}function ti(e,t){return{name:e,execute:t}}function Sr(e){let t=null;return{name:e.name,async execute(s,r){return t||(t=await e.load()),t.execute(s,r)}}}var si=new TextEncoder,ri=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 r=0;r<e.length;r+=2)s[r/2]=parseInt(e.slice(r,r+2),16);return s}return t==="binary"||t==="latin1"?Uint8Array.from(e,s=>s.charCodeAt(0)):si.encode(e)}function Ve(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):ri.decode(e)}function he(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var vt=new TextEncoder;function ni(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}function te(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var Ce=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,r]of Object.entries(t))ni(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.lastIndexOf("/");return r===0?"/":s.slice(0,r)}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,r,n){te(t,"write");let i=this.normalizePath(t);this.ensureParentDirs(i);let o=he(r),a=_e(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}async readFile(t,s){let r=await this.readFileBuffer(t),n=he(s);return Ve(r,n)}async readFileBuffer(t){te(t,"open");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content instanceof Uint8Array?r.content:vt.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){te(t,"append");let n=this.normalizePath(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=he(r),a=_e(s,o);if(i?.type==="file"){let l=i.content instanceof Uint8Array?i.content:vt.encode(i.content),c=new Uint8Array(l.length+a.length);c.set(l),c.set(a,l.length),this.data.set(n,{type:"file",content:c,mode:i.mode,mtime:new Date})}else this.writeFileSync(t,s,r)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){te(t,"stat");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let n=0;return r.type==="file"&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=vt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}async lstat(t){te(t,"lstat");let s=this.resolveIntermediateSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};let n=0;return r.type==="file"&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=vt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let r=this.dirname(t);return this.normalizePath(r==="/"?`/${s}`:`${r}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.slice(1).split("/");if(r.length<=1)return s;let n="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];n=`${n}/${a}`;let l=this.data.get(n),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(n),n=this.resolveSymlink(n,l.target),l=this.data.get(n),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${n}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.slice(1).split("/"),n="",i=new Set;for(let o of r){n=`${n}/${o}`;let a=this.data.get(n),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(n),n=this.resolveSymlink(n,a.target),a=this.data.get(n),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return n}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){te(t,"mkdir");let r=this.normalizePath(t);if(this.data.has(r)){if(this.data.get(r)?.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 n=this.dirname(r);if(n!=="/"&&!this.data.has(n))if(s?.recursive)this.mkdirSync(n,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){te(t,"scandir");let s=this.normalizePath(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Set;for(;r&&r.type==="symlink";){if(n.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(s),s=this.resolveSymlink(s,r.target),r=this.data.get(s)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,s){te(t,"rm");let r=this.normalizePath(t),n=this.data.get(r);if(!n){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(n.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=r==="/"?`/${o}`:`${r}/${o}`;await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){te(t,"cp"),te(s,"cp");let n=this.normalizePath(t),i=this.normalizePath(s),o=this.data.get(n);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(n);for(let l of a){let c=n==="/"?`/${l}`:`${n}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(c,u,r)}}}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 r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}async chmod(t,s){te(t,"chmod");let r=this.normalizePath(t),n=this.data.get(r);if(!n)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);n.mode=s}async symlink(t,s){te(s,"symlink");let r=this.normalizePath(s);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){te(t,"link"),te(s,"link");let r=this.normalizePath(t),n=this.normalizePath(s),i=this.data.get(r);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(n))throw new Error(`EEXIST: file already exists, link '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"file",content:i.content,mode:i.mode,mtime:i.mtime})}async readlink(t){te(t,"readlink");let s=this.normalizePath(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async realpath(t){te(t,"realpath");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,r){te(t,"utimes");let n=this.normalizePath(t),i=this.resolvePathWithSymlinks(n),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};function ii(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function oi(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 ai(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 li(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${rr}
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",rr()),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 Sr(e,t){ni(e)&&(ii(e,t),oi(e),ai(e))}var li=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ci=["braceexpand","hashall","interactive-comments"];function ts(e){let t=[],s=[...ci.map(r=>({name:r,enabled:!0})),...li.map(r=>({name:r,enabled:e[r]}))].sort((r,n)=>r.name.localeCompare(n.name));for(let r of s)r.enabled&&t.push(r.name);return t.join(":")}function Be(e){e.state.env.set("SHELLOPTS",ts(e.state.options))}var ui=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function ss(e){let t=[];for(let s of ui)e[s]&&t.push(s);return t.join(":")}function rs(e){e.state.env.set("BASHOPTS",ss(e.state.shoptOptions))}var fi="BASH_ALIAS_";function Ar(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function Pr(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function _r(e,t){return e.env.get(`${fi}${t}`)}function ns(e,t,s){if(!t.name||!Ar(t.name))return t;let r=Pr(t.name);if(!r)return t;let n=_r(e,r);if(!n||s.has(r))return t;try{s.add(r);let i=new W,o=n,a=n.endsWith(" ");if(!a)for(let f of t.args){let d=kr(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof pt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return Cr(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return Cr(t,n);let u={...c,assignments:[...t.assignments,...c.assignments],redirections:[...c.redirections,...t.redirections],line:t.line};if(a&&t.args.length>0&&(u={...u,args:[...u.args,...t.args]},u.args.length>0)){let f=u.args[0];if(Ar(f)){let d=Pr(f);if(d&&_r(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=ns(e,h,s);m!==h&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(r),i}}function Cr(e,t){let s=t;for(let o of e.args){let a=kr(o);s+=` ${a}`}let r=new W,n=r.parseWordFromString("eval",!1,!1),i=r.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:n,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function kr(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(r=>r.type==="Literal"?r.value:`$${r.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 Nr(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),r=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!r||!s.endsWith(")"))return null;let n=r[1],i=[],o=!1,a="",l=!1;for(let u of t.parts)if(u.type==="Literal"){let f=u.value;if(!o){let d=f.indexOf("=(");d!==-1&&(o=!0,f=f.slice(d+2))}if(o){f.endsWith(")")&&(f=f.slice(0,-1));let d=f.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(a||l)&&(i.push(a),a="",l=!1):h&&(a+=h)}}else if(o)if(u.type==="BraceExpansion")if(/^\[.+\]=/.test(a))a+=mt({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await be(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await x(e,{type:"Word",parts:[u]});a+=f}(a||l)&&i.push(a);let c=i.map(u=>/^\[.+\]=/.test(u)?u:u===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(u)&&!u.startsWith("'")&&!u.startsWith('"')?`'${u.replace(/'/g,"'\\''")}'`:u);return`${n}=(${c.join(" ")})`}async function Or(e,t){let s=-1,r=-1,n=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let b=g.value.indexOf("+=");if(b!==-1){let k=g.value.slice(0,b);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(k)){s=p,r=b,n=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(k)){s=p,r=b,n=!0;break}}let E=g.value.indexOf("=");if(E!==-1&&(E===0||g.value[E-1]!=="+")){let k=g.value.slice(0,E);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(k)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(k)){s=p,r=E;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),o=t.parts[s];if(o.type!=="Literal")return null;let a=n?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(s+1),f="";for(let p of i)f+=await x(e,{type:"Word",parts:[p]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await x(e,d):"";return`${f}${n?"+=":"="}${h}`}var di=["tar","yq","xan","sqlite3","python3","python"];function Tr(e){return di.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 ke(e,t,s="",r=""){throw new re(e,t,s,r)}function is(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ne;return L}if(t.length>1)throw new z(1,"",`bash: break: too many arguments
3
+ `),e.writeFileSync("/proc/self/status",nr()),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 Ar(e,t){ii(e)&&(oi(e,t),ai(e),li(e))}var ci=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ui=["braceexpand","hashall","interactive-comments"];function ss(e){let t=[],s=[...ui.map(r=>({name:r,enabled:!0})),...ci.map(r=>({name:r,enabled:e[r]}))].sort((r,n)=>r.name.localeCompare(n.name));for(let r of s)r.enabled&&t.push(r.name);return t.join(":")}function Be(e){e.state.env.set("SHELLOPTS",ss(e.state.options))}var fi=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function rs(e){let t=[];for(let s of fi)e[s]&&t.push(s);return t.join(":")}function ns(e){e.state.env.set("BASHOPTS",rs(e.state.shoptOptions))}var di="BASH_ALIAS_";function Pr(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function _r(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Cr(e,t){return e.env.get(`${di}${t}`)}function is(e,t,s){if(!t.name||!Pr(t.name))return t;let r=_r(t.name);if(!r)return t;let n=Cr(e,r);if(!n||s.has(r))return t;try{s.add(r);let i=new W,o=n,a=n.endsWith(" ");if(!a)for(let f of t.args){let d=Nr(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof pt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return kr(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return kr(t,n);let u={...c,assignments:[...t.assignments,...c.assignments],redirections:[...c.redirections,...t.redirections],line:t.line};if(a&&t.args.length>0&&(u={...u,args:[...u.args,...t.args]},u.args.length>0)){let f=u.args[0];if(Pr(f)){let d=_r(f);if(d&&Cr(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=is(e,h,s);m!==h&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(r),i}}function kr(e,t){let s=t;for(let o of e.args){let a=Nr(o);s+=` ${a}`}let r=new W,n=r.parseWordFromString("eval",!1,!1),i=r.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:n,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function Nr(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(r=>r.type==="Literal"?r.value:`$${r.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 Or(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),r=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!r||!s.endsWith(")"))return null;let n=r[1],i=[],o=!1,a="",l=!1;for(let u of t.parts)if(u.type==="Literal"){let f=u.value;if(!o){let d=f.indexOf("=(");d!==-1&&(o=!0,f=f.slice(d+2))}if(o){f.endsWith(")")&&(f=f.slice(0,-1));let d=f.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(a||l)&&(i.push(a),a="",l=!1):h&&(a+=h)}}else if(o)if(u.type==="BraceExpansion")if(/^\[.+\]=/.test(a))a+=mt({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await be(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await D(e,{type:"Word",parts:[u]});a+=f}(a||l)&&i.push(a);let c=i.map(u=>/^\[.+\]=/.test(u)?u:u===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(u)&&!u.startsWith("'")&&!u.startsWith('"')?`'${u.replace(/'/g,"'\\''")}'`:u);return`${n}=(${c.join(" ")})`}async function xr(e,t){let s=-1,r=-1,n=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let S=g.value.indexOf("+=");if(S!==-1){let C=g.value.slice(0,S);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(C)){s=p,r=S,n=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(C)){s=p,r=S,n=!0;break}}let v=g.value.indexOf("=");if(v!==-1&&(v===0||g.value[v-1]!=="+")){let C=g.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(C)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(C)){s=p,r=v;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),o=t.parts[s];if(o.type!=="Literal")return null;let a=n?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(s+1),f="";for(let p of i)f+=await D(e,{type:"Word",parts:[p]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await D(e,d):"";return`${f}${n?"+=":"="}${h}`}var hi=["tar","yq","xan","sqlite3","python3","python"];function Tr(e){return hi.includes(e)}var L=Object.freeze({stdout:"",stderr:"",exitCode:0});function F(e=""){return{stdout:e,stderr:"",exitCode:0}}function A(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function _(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function q(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function ke(e,t,s="",r=""){throw new re(e,t,s,r)}function os(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ne;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 r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new z(128,"",`bash: break: ${t[0]}: numeric argument required
5
- `);s=r}throw new le(s)}async function os(e,t){let s,r=!1,n=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")n=!1,i++;else if(t[i]==="-P")n=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?s=e.state.env.get("HOME")||"/":o[0]==="-"?(s=e.state.previousDir,r=!0):s=o[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.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,r=!0;break}}catch{}}}}let l=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).split("/").filter(f=>f&&f!=="."),c="";for(let f of l)if(f==="..")c=c.split("/").slice(0,-1).join("/")||"/";else{c=c?`${c}/${f}`:`/${f}`;try{if(!(await e.fs.stat(c)).isDirectory)return S(`bash: cd: ${s}: Not a directory
6
- `)}catch{return S(`bash: cd: ${s}: No such file or directory
5
+ `);s=r}throw new le(s)}async function as(e,t){let s,r=!1,n=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")n=!1,i++;else if(t[i]==="-P")n=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?s=e.state.env.get("HOME")||"/":o[0]==="-"?(s=e.state.previousDir,r=!0):s=o[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.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,r=!0;break}}catch{}}}}let l=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).split("/").filter(f=>f&&f!=="."),c="";for(let f of l)if(f==="..")c=c.split("/").slice(0,-1).join("/")||"/";else{c=c?`${c}/${f}`:`/${f}`;try{if(!(await e.fs.stat(c)).isDirectory)return A(`bash: cd: ${s}: Not a directory
6
+ `)}catch{return A(`bash: cd: ${s}: No such file or directory
7
7
  `)}}let u=c||"/";if(n)try{u=await e.fs.realpath(u)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=u,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),F(r?`${u}
8
- `:"")}function as(e,t){return e.fs.resolvePath(e.state.cwd,t)}var hi=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function bt(e){return hi.includes(e)}async function Et(e,t,s){let r=as(e,s);switch(t){case"-e":case"-a":return e.fs.exists(r);case"-f":return await e.fs.exists(r)?(await e.fs.stat(r)).isFile:!1;case"-d":return await e.fs.exists(r)?(await e.fs.stat(r)).isDirectory:!1;case"-r":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&256)!==0:!1;case"-w":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&128)!==0:!1;case"-x":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&64)!==0:!1;case"-s":return await e.fs.exists(r)?(await e.fs.stat(r)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(r)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&512)!==0:!1;case"-g":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(r);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=>r===i||r.endsWith(i));case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(r);default:return!1}}var pi=["-nt","-ot","-ef"];function $t(e){return pi.includes(e)}async function St(e,t,s,r){let n=as(e,s),i=as(e,r);switch(t){case"-nt":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime>a.mtime}catch{return!1}case"-ot":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime<a.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(n)||!await e.fs.exists(i))return!1;let o=e.fs.resolvePath(e.state.cwd,n),a=e.fs.resolvePath(e.state.cwd,i);return o===a}catch{return!1}default:return!1}}var mi=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function At(e){return mi.has(e)}function Pt(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 st(e){return e==="="||e==="=="||e==="!="}function _t(e,t,s,r=!1,n=!1,i=!1){if(r){let a=je(t,s,n,i);return e==="!="?!a:a}if(n){let a=t.toLowerCase()===s.toLowerCase();return e==="!="?!a:a}let o=t===s;return e==="!="?!o:o}var yi=new Set(["-z","-n"]);function Ct(e){return yi.has(e)}function kt(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Nt(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let r=s[1],n=s[2];if(e.state.associativeArrays?.has(r)){let a=n;return(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),a=a.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(l,c)=>e.state.env.get(c)||""),e.state.env.has(`${r}_${a}`)}let o;try{let a=new W,l=Z(a,n);o=await V(e,l.expression)}catch{if(/^-?\d+$/.test(n))o=Number.parseInt(n,10);else{let a=e.state.env.get(n);o=a?Number.parseInt(a,10):0}}if(o<0){let a=Q(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
8
+ `:"")}function ls(e,t){return e.fs.resolvePath(e.state.cwd,t)}var pi=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function bt(e){return pi.includes(e)}async function Et(e,t,s){let r=ls(e,s);switch(t){case"-e":case"-a":return e.fs.exists(r);case"-f":return await e.fs.exists(r)?(await e.fs.stat(r)).isFile:!1;case"-d":return await e.fs.exists(r)?(await e.fs.stat(r)).isDirectory:!1;case"-r":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&256)!==0:!1;case"-w":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&128)!==0:!1;case"-x":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&64)!==0:!1;case"-s":return await e.fs.exists(r)?(await e.fs.stat(r)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(r)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&512)!==0:!1;case"-g":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(r);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=>r===i||r.endsWith(i));case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(r);default:return!1}}var mi=["-nt","-ot","-ef"];function $t(e){return mi.includes(e)}async function St(e,t,s,r){let n=ls(e,s),i=ls(e,r);switch(t){case"-nt":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime>a.mtime}catch{return!1}case"-ot":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime<a.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(n)||!await e.fs.exists(i))return!1;let o=e.fs.resolvePath(e.state.cwd,n),a=e.fs.resolvePath(e.state.cwd,i);return o===a}catch{return!1}default:return!1}}var yi=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function At(e){return yi.has(e)}function Pt(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 st(e){return e==="="||e==="=="||e==="!="}function _t(e,t,s,r=!1,n=!1,i=!1){if(r){let a=je(t,s,n,i);return e==="!="?!a:a}if(n){let a=t.toLowerCase()===s.toLowerCase();return e==="!="?!a:a}let o=t===s;return e==="!="?!o:o}var gi=new Set(["-z","-n"]);function Ct(e){return gi.has(e)}function kt(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Nt(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let r=s[1],n=s[2];if(e.state.associativeArrays?.has(r)){let a=n;return(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),a=a.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(l,c)=>e.state.env.get(c)||""),e.state.env.has(`${r}_${a}`)}let o;try{let a=new W,l=Z(a,n);o=await V(e,l.expression)}catch{if(/^-?\d+$/.test(n))o=Number.parseInt(n,10);else{let a=e.state.env.get(n);o=a?Number.parseInt(a,10):0}}if(o<0){let a=Q(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
9
9
  `,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
10
- `,!1}return e.state.env.has(`${r}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Te(e,t).length>0:Q(e,t).length>0}async function xe(e,t){switch(t.type){case"CondBinary":{let s=await x(e,t.left),r=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),n;if(t.operator==="=~")if(r){let i=await x(e,t.right);n=dr(i)}else n=await pr(e,t.right);else st(t.operator)&&!r?n=await mr(e,t.right):n=await x(e,t.right);if(st(t.operator)){let i=e.state.shoptOptions.nocasematch;return _t(t.operator,s,n,!r,i,!0)}if(At(t.operator))return Pt(t.operator,await xr(e,s),await xr(e,n));if($t(t.operator))return St(e,t.operator,s,n);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=bi(n),l=tt(o,i?"i":"").match(s);if(ve(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)e.state.env.set(`BASH_REMATCH_${c}`,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<n;case">":return s>n;default:return!1}}case"CondUnary":{let s=await x(e,t.operand);return bt(t.operator)?Et(e,t.operator,s):Ct(t.operator)?kt(t.operator,s):t.operator==="-v"?await Nt(e,s):t.operator==="-o"?cs(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await x(e,t.operand.expression.word)})`!=="":!await xe(e,t.operand);case"CondAnd":return await xe(e,t.left)?await xe(e,t.right):!1;case"CondOr":return await xe(e,t.left)?!0:await xe(e,t.right);case"CondGroup":return await xe(e,t.expression);case"CondWord":return await x(e,t.word)!=="";default:return!1}}async function rt(e,t){if(t.length===0)return P("","",1);if(t.length===1)return q(!!t[0]);if(t.length===2){let r=t[0],n=t[1];return r==="("?S(`test: '(' without matching ')'
11
- `,2):bt(r)?q(await Et(e,r,n)):Ct(r)?q(kt(r,n)):r==="!"?q(!n):r==="-v"?q(await Nt(e,n)):r==="-o"?q(cs(e,n)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?S(`test: ${r}: unary operator expected
12
- `,2):P("","",1)}if(t.length===3){let r=t[0],n=t[1],i=t[2];if(st(n))return q(_t(n,r,i));if(At(n)){let o=Ot(r),a=Ot(i);return!o.valid||!a.valid?P("","",2):q(Pt(n,o.value,a.value))}if($t(n))return q(await St(e,n,r,i));switch(n){case"-a":return q(r!==""&&i!=="");case"-o":return q(r!==""||i!=="");case">":return q(r>i);case"<":return q(r<i)}if(r==="!"){let o=await rt(e,[n,i]);return P("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return q(n!=="")}if(t.length===4){if(t[0]==="!"){let r=await rt(e,t.slice(1));return P("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return rt(e,[t[1],t[2]])}let s=await Rr(e,t,0);return s.pos<t.length?S(`test: too many arguments
13
- `,2):q(s.value)}async function Rr(e,t,s){return gi(e,t,s)}async function gi(e,t,s){let{value:r,pos:n}=await Dr(e,t,s);for(;t[n]==="-o";){let i=await Dr(e,t,n+1);r=r||i.value,n=i.pos}return{value:r,pos:n}}async function Dr(e,t,s){let{value:r,pos:n}=await ls(e,t,s);for(;t[n]==="-a";){let i=await ls(e,t,n+1);r=r&&i.value,n=i.pos}return{value:r,pos:n}}async function ls(e,t,s){if(t[s]==="!"){let{value:r,pos:n}=await ls(e,t,s+1);return{value:!r,pos:n}}return wi(e,t,s)}async function wi(e,t,s){let r=t[s];if(r==="("){let{value:i,pos:o}=await Rr(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let n=t[s+1];if(st(n)){let i=r,o=t[s+2]??"";return{value:_t(n,i,o),pos:s+3}}if(At(n)){let i=Ot(r),o=Ot(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:Pt(n,i.value,o.value),pos:s+3}}if($t(n)){let i=r,o=t[s+2]??"";return{value:await St(e,n,i,o),pos:s+3}}if(bt(r)){let i=t[s+1]??"";return{value:await Et(e,r,i),pos:s+2}}if(Ct(r)){let i=t[s+1]??"";return{value:kt(r,i),pos:s+2}}if(r==="-v"){let i=t[s+1]??"";return{value:await Nt(e,i),pos:s+2}}if(r==="-o"){let i=t[s+1]??"";return{value:cs(e,i),pos:s+2}}return{value:r!==void 0&&r!=="",pos:s+1}}function je(e,t,s=!1,r=!1){let n=`^${Lr(t,r)}$`;return tt(n,s?"is":"s").test(e)}function Lr(e,t){let s="";for(let r=0;r<e.length;r++){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=Fr(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=Mr(o),l=a.map(u=>Lr(u,t)),c=l.length>0?l.join("|"):"(?:)";if(n==="@")s+=`(?:${c})`;else if(n==="*")s+=`(?:${c})*`;else if(n==="+")s+=`(?:${c})+`;else if(n==="?")s+=`(?:${c})?`;else if(n==="!")if(i<e.length-1){let f=a.map(h=>Wr(h,t));if(f.every(h=>h!==null)&&f.every(h=>h===f[0])&&f[0]!==null){let h=f[0];if(h===0)s+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${c})).{${h}}`),s+=`(?:${m.join("|")})`}}else s+=`(?:(?!(?:${c})).)*?`}else s+=`(?!(?:${c})$).*`;r=i;continue}}if(n==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,r++}else s+="\\\\";else if(n==="*")s+=".*";else if(n==="?")s+=".";else if(n==="["){let i=e.indexOf("]",r+1);i!==-1?(s+=e.slice(r,i+1),r=i):s+="\\["}else/[\\^$.|+(){}]/.test(n)?s+=`\\${n}`:s+=n}return s}function Fr(e,t){let s=1,r=t+1;for(;r<e.length&&s>0;){let n=e[r];if(n==="\\"){r+=2;continue}if(n==="(")s++;else if(n===")"&&(s--,s===0))return r;r++}return-1}function Mr(e){let t=[],s="",r=0,n=0;for(;n<e.length;){let i=e[n];if(i==="\\"){s+=i,n+1<e.length?(s+=e[n+1],n+=2):n++;continue}i==="("?(r++,s+=i):i===")"?(r--,s+=i):i==="|"&&r===0?(t.push(s),s=""):s+=i,n++}return t.push(s),t}function Wr(e,t){let s=0,r=0;for(;r<e.length;){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=Fr(e,r+1);if(i!==-1){if(n==="@"){let o=e.slice(r+2,i),l=Mr(o).map(c=>Wr(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],r=i+1;continue}return null}return null}}if(n==="*")return null;if(n==="?"){s+=1,r++;continue}if(n==="["){let i=e.indexOf("]",r+1);if(i!==-1){s+=1,r=i+1;continue}s+=1,r++;continue}if(n==="\\"){s+=1,r+=2;continue}s+=1,r++}return s}function cs(e,t){let r=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 r?r():!1}async function xr(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 Ir(t);try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{return Ir(t)}}function vi(e,t){let s=0;for(let r of e){let n;if(r>="0"&&r<="9")n=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")n=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")n=r.charCodeAt(0)-65+36;else if(r==="@")n=62;else if(r==="_")n=63;else return Number.NaN;if(n>=t)return Number.NaN;s=s*t+n}return s}function Ir(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,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let n=Number.parseInt(r[1],10);n>=2&&n<=64?s=vi(r[2],n):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 Ot(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 bi(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 r=Ei(e,s);t+=r.converted,s=r.endIndex}else t+=e[s],s++;return t}function Ei(e,t){let s=t+1,r="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(r+="^",s++);let n=!1;s<e.length&&e[s]==="]"&&(n=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let o="",a=!1;for(;s<e.length;){let l=e[s];if(l==="]"){a=!0,s++;break}if(l==="["&&s+1<e.length&&e[s+1]===":"){let c=e.indexOf(":]",s+2);if(c!==-1){let u=e.slice(s+2,c);o+=$i(u),s=c+2;continue}}if(l==="["&&s+1<e.length){let c=e[s+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,s+2);if(f!==-1){let d=e.slice(s+2,f);o+=d,s=f+2;continue}}}if(l==="\\"&&s+1<e.length){o+=l+e[s+1],s+=2;continue}o+=l,s++}return a?(n&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:s}):{converted:"\\[",endIndex:t+1}}function $i(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 Ee(e){let t=[],s="",r=!1,n=!1,i=!1,o=!1;for(let a of e){if(i){s+=a,i=!1,o=!0;continue}if(a==="\\"){i=!0;continue}if(a==="'"&&!n){r||(o=!0),r=!r;continue}if(a==='"'&&!r){n||(o=!0),n=!n;continue}if((a===" "||a===" "||a===`
14
- `)&&!r&&!n){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function Tt(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 r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)r+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)n+=e[s],s++;t.push([r,n])}return t}function zr(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Ee(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 r=e.indexOf("=");return{name:e.slice(0,r),isArray:!1,value:e.slice(r+1)}}return{name:e,isArray:!1}}async function Si(e,t){try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Vr(e,t,s={}){let{name:r,isArray:n,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=K(e,r);if(u)return u}if(n&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${r}_${u}`,i[u]);e.state.env.set(`${r}__length`,String(i.length))}else if(a!==void 0&&o!==void 0){let u=await Si(e,a);e.state.env.set(`${r}_${u}`,o);let f=parseInt(e.state.env.get(`${r}__length`)??"0",10);u>=f&&e.state.env.set(`${r}__length`,String(u+1))}else o!==void 0&&e.state.env.set(r,o);return l&&ie(e,r),null}function Ie(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function He(e,t){return e.state.localVarDepth?.get(t)}function Dt(e,t){e.state.localVarDepth?.delete(t)}function Br(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function xt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function jr(e,t){if(e.state.localVarStack)for(let[s,r]of e.state.localVarStack.entries()){for(;r.length>0&&r[r.length-1].scopeIndex===t;)r.pop();r.length===0&&e.state.localVarStack.delete(s)}}var us=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Hr(e){return us.has(e)}var fs=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),nt=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 Me(e,t,s,r){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
10
+ `,!1}return e.state.env.has(`${r}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?xe(e,t).length>0:Q(e,t).length>0}async function De(e,t){switch(t.type){case"CondBinary":{let s=await D(e,t.left),r=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),n;if(t.operator==="=~")if(r){let i=await D(e,t.right);n=hr(i)}else n=await mr(e,t.right);else st(t.operator)&&!r?n=await yr(e,t.right):n=await D(e,t.right);if(st(t.operator)){let i=e.state.shoptOptions.nocasematch;return _t(t.operator,s,n,!r,i,!0)}if(At(t.operator))return Pt(t.operator,await Ir(e,s),await Ir(e,n));if($t(t.operator))return St(e,t.operator,s,n);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=Ei(n),l=tt(o,i?"i":"").match(s);if(ve(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)e.state.env.set(`BASH_REMATCH_${c}`,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<n;case">":return s>n;default:return!1}}case"CondUnary":{let s=await D(e,t.operand);return bt(t.operator)?Et(e,t.operator,s):Ct(t.operator)?kt(t.operator,s):t.operator==="-v"?await Nt(e,s):t.operator==="-o"?us(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await D(e,t.operand.expression.word)})`!=="":!await De(e,t.operand);case"CondAnd":return await De(e,t.left)?await De(e,t.right):!1;case"CondOr":return await De(e,t.left)?!0:await De(e,t.right);case"CondGroup":return await De(e,t.expression);case"CondWord":return await D(e,t.word)!=="";default:return!1}}async function rt(e,t){if(t.length===0)return _("","",1);if(t.length===1)return q(!!t[0]);if(t.length===2){let r=t[0],n=t[1];return r==="("?A(`test: '(' without matching ')'
11
+ `,2):bt(r)?q(await Et(e,r,n)):Ct(r)?q(kt(r,n)):r==="!"?q(!n):r==="-v"?q(await Nt(e,n)):r==="-o"?q(us(e,n)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?A(`test: ${r}: unary operator expected
12
+ `,2):_("","",1)}if(t.length===3){let r=t[0],n=t[1],i=t[2];if(st(n))return q(_t(n,r,i));if(At(n)){let o=Ot(r),a=Ot(i);return!o.valid||!a.valid?_("","",2):q(Pt(n,o.value,a.value))}if($t(n))return q(await St(e,n,r,i));switch(n){case"-a":return q(r!==""&&i!=="");case"-o":return q(r!==""||i!=="");case">":return q(r>i);case"<":return q(r<i)}if(r==="!"){let o=await rt(e,[n,i]);return _("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return q(n!=="")}if(t.length===4){if(t[0]==="!"){let r=await rt(e,t.slice(1));return _("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return rt(e,[t[1],t[2]])}let s=await Lr(e,t,0);return s.pos<t.length?A(`test: too many arguments
13
+ `,2):q(s.value)}async function Lr(e,t,s){return wi(e,t,s)}async function wi(e,t,s){let{value:r,pos:n}=await Dr(e,t,s);for(;t[n]==="-o";){let i=await Dr(e,t,n+1);r=r||i.value,n=i.pos}return{value:r,pos:n}}async function Dr(e,t,s){let{value:r,pos:n}=await cs(e,t,s);for(;t[n]==="-a";){let i=await cs(e,t,n+1);r=r&&i.value,n=i.pos}return{value:r,pos:n}}async function cs(e,t,s){if(t[s]==="!"){let{value:r,pos:n}=await cs(e,t,s+1);return{value:!r,pos:n}}return vi(e,t,s)}async function vi(e,t,s){let r=t[s];if(r==="("){let{value:i,pos:o}=await Lr(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let n=t[s+1];if(st(n)){let i=r,o=t[s+2]??"";return{value:_t(n,i,o),pos:s+3}}if(At(n)){let i=Ot(r),o=Ot(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:Pt(n,i.value,o.value),pos:s+3}}if($t(n)){let i=r,o=t[s+2]??"";return{value:await St(e,n,i,o),pos:s+3}}if(bt(r)){let i=t[s+1]??"";return{value:await Et(e,r,i),pos:s+2}}if(Ct(r)){let i=t[s+1]??"";return{value:kt(r,i),pos:s+2}}if(r==="-v"){let i=t[s+1]??"";return{value:await Nt(e,i),pos:s+2}}if(r==="-o"){let i=t[s+1]??"";return{value:us(e,i),pos:s+2}}return{value:r!==void 0&&r!=="",pos:s+1}}function je(e,t,s=!1,r=!1){let n=`^${Fr(t,r)}$`;return tt(n,s?"is":"s").test(e)}function Fr(e,t){let s="";for(let r=0;r<e.length;r++){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=Mr(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=Wr(o),l=a.map(u=>Fr(u,t)),c=l.length>0?l.join("|"):"(?:)";if(n==="@")s+=`(?:${c})`;else if(n==="*")s+=`(?:${c})*`;else if(n==="+")s+=`(?:${c})+`;else if(n==="?")s+=`(?:${c})?`;else if(n==="!")if(i<e.length-1){let f=a.map(h=>zr(h,t));if(f.every(h=>h!==null)&&f.every(h=>h===f[0])&&f[0]!==null){let h=f[0];if(h===0)s+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${c})).{${h}}`),s+=`(?:${m.join("|")})`}}else s+=`(?:(?!(?:${c})).)*?`}else s+=`(?!(?:${c})$).*`;r=i;continue}}if(n==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,r++}else s+="\\\\";else if(n==="*")s+=".*";else if(n==="?")s+=".";else if(n==="["){let i=e.indexOf("]",r+1);i!==-1?(s+=e.slice(r,i+1),r=i):s+="\\["}else/[\\^$.|+(){}]/.test(n)?s+=`\\${n}`:s+=n}return s}function Mr(e,t){let s=1,r=t+1;for(;r<e.length&&s>0;){let n=e[r];if(n==="\\"){r+=2;continue}if(n==="(")s++;else if(n===")"&&(s--,s===0))return r;r++}return-1}function Wr(e){let t=[],s="",r=0,n=0;for(;n<e.length;){let i=e[n];if(i==="\\"){s+=i,n+1<e.length?(s+=e[n+1],n+=2):n++;continue}i==="("?(r++,s+=i):i===")"?(r--,s+=i):i==="|"&&r===0?(t.push(s),s=""):s+=i,n++}return t.push(s),t}function zr(e,t){let s=0,r=0;for(;r<e.length;){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=Mr(e,r+1);if(i!==-1){if(n==="@"){let o=e.slice(r+2,i),l=Wr(o).map(c=>zr(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],r=i+1;continue}return null}return null}}if(n==="*")return null;if(n==="?"){s+=1,r++;continue}if(n==="["){let i=e.indexOf("]",r+1);if(i!==-1){s+=1,r=i+1;continue}s+=1,r++;continue}if(n==="\\"){s+=1,r+=2;continue}s+=1,r++}return s}function us(e,t){let r=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 r?r():!1}async function Ir(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 Rr(t);try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{return Rr(t)}}function bi(e,t){let s=0;for(let r of e){let n;if(r>="0"&&r<="9")n=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")n=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")n=r.charCodeAt(0)-65+36;else if(r==="@")n=62;else if(r==="_")n=63;else return Number.NaN;if(n>=t)return Number.NaN;s=s*t+n}return s}function Rr(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,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let n=Number.parseInt(r[1],10);n>=2&&n<=64?s=bi(r[2],n):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 Ot(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 Ei(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 r=$i(e,s);t+=r.converted,s=r.endIndex}else t+=e[s],s++;return t}function $i(e,t){let s=t+1,r="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(r+="^",s++);let n=!1;s<e.length&&e[s]==="]"&&(n=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let o="",a=!1;for(;s<e.length;){let l=e[s];if(l==="]"){a=!0,s++;break}if(l==="["&&s+1<e.length&&e[s+1]===":"){let c=e.indexOf(":]",s+2);if(c!==-1){let u=e.slice(s+2,c);o+=Si(u),s=c+2;continue}}if(l==="["&&s+1<e.length){let c=e[s+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,s+2);if(f!==-1){let d=e.slice(s+2,f);o+=d,s=f+2;continue}}}if(l==="\\"&&s+1<e.length){o+=l+e[s+1],s+=2;continue}o+=l,s++}return a?(n&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:s}):{converted:"\\[",endIndex:t+1}}function Si(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 Ee(e){let t=[],s="",r=!1,n=!1,i=!1,o=!1;for(let a of e){if(i){s+=a,i=!1,o=!0;continue}if(a==="\\"){i=!0;continue}if(a==="'"&&!n){r||(o=!0),r=!r;continue}if(a==='"'&&!r){n||(o=!0),n=!n;continue}if((a===" "||a===" "||a===`
14
+ `)&&!r&&!n){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function xt(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 r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)r+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)n+=e[s],s++;t.push([r,n])}return t}function Vr(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Ee(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 r=e.indexOf("=");return{name:e.slice(0,r),isArray:!1,value:e.slice(r+1)}}return{name:e,isArray:!1}}async function Ai(e,t){try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Br(e,t,s={}){let{name:r,isArray:n,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=K(e,r);if(u)return u}if(n&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${r}_${u}`,i[u]);e.state.env.set(`${r}__length`,String(i.length))}else if(a!==void 0&&o!==void 0){let u=await Ai(e,a);e.state.env.set(`${r}_${u}`,o);let f=parseInt(e.state.env.get(`${r}__length`)??"0",10);u>=f&&e.state.env.set(`${r}__length`,String(u+1))}else o!==void 0&&e.state.env.set(r,o);return l&&ie(e,r),null}function Ie(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function He(e,t){return e.state.localVarDepth?.get(t)}function Tt(e,t){e.state.localVarDepth?.delete(t)}function jr(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function Dt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function Hr(e,t){if(e.state.localVarStack)for(let[s,r]of e.state.localVarStack.entries()){for(;r.length>0&&r[r.length-1].scopeIndex===t;)r.pop();r.length===0&&e.state.localVarStack.delete(s)}}var fs=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Ur(e){return fs.has(e)}var ds=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),nt=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 Me(e,t,s,r){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
15
15
  `;if(r.checkNoclobber&&e.state.options.noclobber&&!r.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 Ai(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}async function Ur(e,t){let s=new Map;for(let r=0;r<t.length;r++){let n=t[r];if(n.target.type==="HereDoc")continue;if(n.operator===">&"||n.operator==="<&"){if(Jt(e,n.target))return{targets:s,error:`bash: $@: ambiguous redirect
17
- `};s.set(r,await x(e,n.target))}else{let o=await gt(e,n.target);if("error"in o)return{targets:s,error:o.error};s.set(r,o.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 It(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 x(e,s.target)==="-"){let i=e.state.env.get(s.fdVariable);if(i!==void 0){let o=Number.parseInt(i,10);Number.isNaN(o)||e.state.fileDescriptors.delete(o)}continue}let r=Pi(e);if(e.state.env.set(s.fdVariable,String(r)),s.target.type==="Word"){let n=await x(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(n,10);if(!Number.isNaN(i)){let o=e.state.fileDescriptors.get(i);o!==void 0&&e.state.fileDescriptors.set(r,o);continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,n);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),e.state.fileDescriptors.set(r,`__file__:${i}`)}else if(s.operator==="<<<")e.state.fileDescriptors.set(r,`${n}
18
- `);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,n),o=await e.fs.readFile(i);e.state.fileDescriptors.set(r,o)}catch{return P("",`bash: ${n}: No such file or directory
19
- `,1)}}}return null}async function $e(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let r=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!r)continue;let n;if(r){if(n=await x(e,s.target),n==="-"||!Number.isNaN(Number.parseInt(n,10))||s.fd!=null)continue}else{let a=await gt(e,s.target);if("error"in a)return P("",a.error,1);n=a.target}let i=e.fs.resolvePath(e.state.cwd,n),o=s.operator===">|";try{let a=await e.fs.stat(i);if(a.isDirectory)return P("",`bash: ${n}: Is a directory
20
- `,1);if(e.state.options.noclobber&&!o&&!a.isDirectory&&n!=="/dev/null")return P("",`bash: ${n}: cannot overwrite existing file
21
- `,1)}catch{}if(n!=="/dev/null"&&n!=="/dev/stdout"&&n!=="/dev/stderr"&&n!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),n==="/dev/full")return P("",`bash: /dev/full: No space left on device
22
- `,1)}return null}async function j(e,t,s,r){let{stdout:n,stderr:i,exitCode:o}=t;for(let c=0;c<s.length;c++){let u=s[c];if(u.target.type==="HereDoc")continue;let f,d=r?.get(c);if(d!==void 0)f=d;else if(u.operator===">&"||u.operator==="<&"){if(Jt(e,u.target)){i+=`bash: $@: ambiguous redirect
23
- `,o=1,n="";continue}f=await x(e,u.target)}else{let m=await gt(e,u.target);if("error"in m){i+=m.error,o=1,n="";continue}f=m.target}if(!u.fdVariable)switch(u.operator){case">":case">|":{let h=u.fd??1,m=u.operator===">|";if(h===1){if(f==="/dev/stdout")break;if(f==="/dev/stderr"){i+=n,n="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
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 Pi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}async function qr(e,t){let s=new Map;for(let r=0;r<t.length;r++){let n=t[r];if(n.target.type==="HereDoc")continue;if(n.operator===">&"||n.operator==="<&"){if(es(e,n.target))return{targets:s,error:`bash: $@: ambiguous redirect
17
+ `};s.set(r,await D(e,n.target))}else{let o=await gt(e,n.target);if("error"in o)return{targets:s,error:o.error};s.set(r,o.target)}}return{targets:s}}function _i(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd;return e.state.nextFd++,t}async function It(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 D(e,s.target)==="-"){let i=e.state.env.get(s.fdVariable);if(i!==void 0){let o=Number.parseInt(i,10);Number.isNaN(o)||e.state.fileDescriptors.delete(o)}continue}let r=_i(e);if(e.state.env.set(s.fdVariable,String(r)),s.target.type==="Word"){let n=await D(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(n,10);if(!Number.isNaN(i)){let o=e.state.fileDescriptors.get(i);o!==void 0&&e.state.fileDescriptors.set(r,o);continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,n);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),e.state.fileDescriptors.set(r,`__file__:${i}`)}else if(s.operator==="<<<")e.state.fileDescriptors.set(r,`${n}
18
+ `);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,n),o=await e.fs.readFile(i);e.state.fileDescriptors.set(r,o)}catch{return _("",`bash: ${n}: No such file or directory
19
+ `,1)}}}return null}async function $e(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let r=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!r)continue;let n;if(r){if(n=await D(e,s.target),n==="-"||!Number.isNaN(Number.parseInt(n,10))||s.fd!=null)continue}else{let a=await gt(e,s.target);if("error"in a)return _("",a.error,1);n=a.target}let i=e.fs.resolvePath(e.state.cwd,n),o=s.operator===">|";try{let a=await e.fs.stat(i);if(a.isDirectory)return _("",`bash: ${n}: Is a directory
20
+ `,1);if(e.state.options.noclobber&&!o&&!a.isDirectory&&n!=="/dev/null")return _("",`bash: ${n}: cannot overwrite existing file
21
+ `,1)}catch{}if(n!=="/dev/null"&&n!=="/dev/stdout"&&n!=="/dev/stderr"&&n!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),n==="/dev/full")return _("",`bash: /dev/full: No space left on device
22
+ `,1)}return null}async function j(e,t,s,r){let{stdout:n,stderr:i,exitCode:o}=t;for(let c=0;c<s.length;c++){let u=s[c];if(u.target.type==="HereDoc")continue;let f,d=r?.get(c);if(d!==void 0)f=d;else if(u.operator===">&"||u.operator==="<&"){if(es(e,u.target)){i+=`bash: $@: ambiguous redirect
23
+ `,o=1,n="";continue}f=await D(e,u.target)}else{let m=await gt(e,u.target);if("error"in m){i+=m.error,o=1,n="";continue}f=m.target}if(!u.fdVariable)switch(u.operator){case">":case">|":{let h=u.fd??1,m=u.operator===">|";if(h===1){if(f==="/dev/stdout")break;if(f==="/dev/stderr"){i+=n,n="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
24
24
  `,o=1,n="";break}let p=e.fs.resolvePath(e.state.cwd,f),g=await Me(e,p,f,{checkNoclobber:!0,isClobber:m});if(g){i+=g,o=1,n="";break}await e.fs.writeFile(p,n,Y(n)),n=""}else if(h===2){if(f==="/dev/stderr")break;if(f==="/dev/stdout"){n+=i,i="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
25
25
  `,o=1;break}if(f==="/dev/null")i="";else{let p=e.fs.resolvePath(e.state.cwd,f),g=await Me(e,p,f,{checkNoclobber:!0,isClobber:m});if(g){i+=g,o=1;break}await e.fs.writeFile(p,i,Y(i)),i=""}}break}case">>":{let h=u.fd??1;if(h===1){if(f==="/dev/stdout")break;if(f==="/dev/stderr"){i+=n,n="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
26
26
  `,o=1,n="";break}let m=e.fs.resolvePath(e.state.cwd,f),p=await Me(e,m,f,{});if(p){i+=p,o=1,n="";break}await e.fs.appendFile(m,n,Y(n)),n=""}else if(h===2){if(f==="/dev/stderr")break;if(f==="/dev/stdout"){n+=i,i="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
27
27
  `,o=1;break}let m=e.fs.resolvePath(e.state.cwd,f),p=await Me(e,m,f,{});if(p){i+=p,o=1;break}await e.fs.appendFile(m,i,Y(i)),i=""}break}case">&":case"<&":{let h=u.fd??1;if(f==="-")break;if(f.endsWith("-")){let m=f.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
- `,o=1)}break}if(f==="2"||f==="&2")h===1&&(i+=n,n="");else if(f==="1"||f==="&1")n+=i,i="";else{let m=Number.parseInt(f,10);if(Number.isNaN(m)){if(u.operator===">&"){let p=e.fs.resolvePath(e.state.cwd,f),g=await Me(e,p,f,{checkNoclobber:!0});if(g){i=g,o=1,n="";break}if(u.fd==null){let b=n+i;await e.fs.writeFile(p,b,Y(b)),n="",i=""}else h===1?(await e.fs.writeFile(p,n,Y(n)),n=""):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,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(g,i,Y(i)),i="")}else if(p?.startsWith("__rw__:")){let g=Ai(p);g&&(h===1?(await e.fs.appendFile(g.path,n,Y(n)),n=""):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+=n,n="");else{let b=e.state.fileDescriptors?.get(g);if(b?.startsWith("__file__:")){let E=b.slice(9);h===1?(await e.fs.appendFile(E,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(E,i,Y(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
28
+ `,o=1)}break}if(f==="2"||f==="&2")h===1&&(i+=n,n="");else if(f==="1"||f==="&1")n+=i,i="";else{let m=Number.parseInt(f,10);if(Number.isNaN(m)){if(u.operator===">&"){let p=e.fs.resolvePath(e.state.cwd,f),g=await Me(e,p,f,{checkNoclobber:!0});if(g){i=g,o=1,n="";break}if(u.fd==null){let S=n+i;await e.fs.writeFile(p,S,Y(S)),n="",i=""}else h===1?(await e.fs.writeFile(p,n,Y(n)),n=""):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,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(g,i,Y(i)),i="")}else if(p?.startsWith("__rw__:")){let g=Pi(p);g&&(h===1?(await e.fs.appendFile(g.path,n,Y(n)),n=""):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+=n,n="");else{let S=e.state.fileDescriptors?.get(g);if(S?.startsWith("__file__:")){let v=S.slice(9);h===1?(await e.fs.appendFile(v,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(v,i,Y(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
29
29
  `,o=1,n=""):m>=3&&(i+=`bash: ${m}: Bad file descriptor
30
30
  `,o=1,n="")}}break}case"&>":{if(f==="/dev/full"){i=`bash: echo: write error: No space left on device
31
31
  `,o=1,n="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await Me(e,h,f,{checkNoclobber:!0});if(m){i=m,o=1,n="";break}let p=n+i;await e.fs.writeFile(h,p,Y(p)),n="",i="";break}case"&>>":{if(f==="/dev/full"){i=`bash: echo: write error: No space left on device
32
- `,o=1,n="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await Me(e,h,f,{});if(m){i=m,o=1,n="";break}let p=n+i;await e.fs.appendFile(h,p,Y(p)),n="",i="";break}}}let a=e.state.fileDescriptors?.get(1);if(a){if(a==="__dupout__:2")i+=n,n="";else if(a.startsWith("__file__:")){let c=a.slice(9);await e.fs.appendFile(c,n,Y(n)),n=""}else if(a.startsWith("__file_append__:")){let c=a.slice(16);await e.fs.appendFile(c,n,Y(n)),n=""}}let l=e.state.fileDescriptors?.get(2);if(l){if(l==="__dupout__:1")n+=i,i="";else if(l.startsWith("__file__:")){let c=l.slice(9);await e.fs.appendFile(c,i,Y(i)),i=""}else if(l.startsWith("__file_append__:")){let c=l.slice(16);await e.fs.appendFile(c,i,Y(i)),i=""}}return P(n,i,o)}function qr(e,t){if(e.state.options.posix&&us.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
33
- `;throw new z(2,"",r)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function _i(e,t){let s="";for(let r of t)if((r.operator==="<<"||r.operator==="<<-")&&r.target.type==="HereDoc"){let n=r.target,i=await x(e,n.content);n.stripTabs&&(i=i.split(`
32
+ `,o=1,n="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await Me(e,h,f,{});if(m){i=m,o=1,n="";break}let p=n+i;await e.fs.appendFile(h,p,Y(p)),n="",i="";break}}}let a=e.state.fileDescriptors?.get(1);if(a){if(a==="__dupout__:2")i+=n,n="";else if(a.startsWith("__file__:")){let c=a.slice(9);await e.fs.appendFile(c,n,Y(n)),n=""}else if(a.startsWith("__file_append__:")){let c=a.slice(16);await e.fs.appendFile(c,n,Y(n)),n=""}}let l=e.state.fileDescriptors?.get(2);if(l){if(l==="__dupout__:1")n+=i,i="";else if(l.startsWith("__file__:")){let c=l.slice(9);await e.fs.appendFile(c,i,Y(i)),i=""}else if(l.startsWith("__file_append__:")){let c=l.slice(16);await e.fs.appendFile(c,i,Y(i)),i=""}}return _(n,i,o)}function Zr(e,t){if(e.state.options.posix&&fs.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
33
+ `;throw new z(2,"",r)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function Ci(e,t){let s="";for(let r of t)if((r.operator==="<<"||r.operator==="<<-")&&r.target.type==="HereDoc"){let n=r.target,i=await D(e,n.content);n.stripTabs&&(i=i.split(`
34
34
  `).map(a=>a.replace(/^\t+/,"")).join(`
35
- `)),(r.fd??0)===0&&(s=i)}else if(r.operator==="<<<"&&r.target.type==="Word")s=`${await x(e,r.target)}
36
- `;else if(r.operator==="<"&&r.target.type==="Word"){let n=await x(e,r.target),i=e.fs.resolvePath(e.state.cwd,n);try{s=await e.fs.readFile(i)}catch{}}return s}async function Rt(e,t,s,r="",n){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,ke(`${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(n??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 c=0;c<s.length;c++)i.set(String(c+1),e.state.env.get(String(c+1))),e.state.env.set(String(c+1),s[c]);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 o=()=>{let c=e.state.localScopes.length-1,u=e.state.localScopes.pop();if(u)for(let[f,d]of u)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);if(jr(e,c),e.state.fullyUnsetLocals)for(let[f,d]of e.state.fullyUnsetLocals.entries())d===c&&e.state.fullyUnsetLocals.delete(f);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let f=e.state.localExportedVars.pop();if(f)for(let d of f)e.state.exportedVars?.delete(d)}for(let[f,d]of i)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:a,error:l}=await Ur(e,t.redirections);if(l)return o(),P("",l,1);try{let c=await _i(e,t.redirections),u=r||c,f=await e.executeCommand(t.body,u);return o(),j(e,f,t.redirections,a)}catch(c){if(o(),c instanceof ne){let u=P(c.stdout,c.stderr,c.exitCode);return j(e,u,t.redirections,a)}throw c}}var Gr=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],hs=[".",":","[","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"],Ci=["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"],ki=hs;async function ps(e,t){let s=[],r=null,n="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=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
- `,2);let v=t[y];if(!m.includes(v))return S(`compgen: ${v}: invalid action name
38
- `,2);s.push(v)}else if(w==="-W"){if(y++,y>=t.length)return S(`compgen: -W: option requires an argument
39
- `,2);r=t[y]}else if(w==="-P"){if(y++,y>=t.length)return S(`compgen: -P: option requires an argument
40
- `,2);n=t[y]}else if(w==="-S"){if(y++,y>=t.length)return S(`compgen: -S: option requires an argument
41
- `,2);i=t[y]}else if(w==="-o"){if(y++,y>=t.length)return S(`compgen: -o: option requires an argument
42
- `,2);let v=t[y];if(v==="plusdirs")a=!0;else if(v==="dirnames")l=!0;else if(v==="default")c=!0;else if(!(v==="filenames"||v==="nospace"||v==="bashdefault"||v==="noquote"))return S(`compgen: ${v}: invalid option name
43
- `,2)}else if(w==="-F"){if(y++,y>=t.length)return S(`compgen: -F: option requires an argument
44
- `,2);f=t[y]}else if(w==="-C"){if(y++,y>=t.length)return S(`compgen: -C: option requires an argument
45
- `,2);d=t[y]}else if(w==="-X"){if(y++,y>=t.length)return S(`compgen: -X: option requires an argument
46
- `,2);u=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)}o=h[0]??null;let p=[];if(l){let y=await ds(e,o);p.push(...y)}if(c){let y=await Zr(e,o);p.push(...y)}for(let y of s)if(y==="variable"){let w=Ni(e,o);p.push(...w)}else if(y==="export"){let w=Oi(e,o);p.push(...w)}else if(y==="function"){let w=Ti(e,o);p.push(...w)}else if(y==="builtin"){let w=Di(o);p.push(...w)}else if(y==="keyword"){let w=xi(o);p.push(...w)}else if(y==="alias"){let w=Ii(e,o);p.push(...w)}else if(y==="shopt"){let w=Ri(o);p.push(...w)}else if(y==="helptopic"){let w=Li(o);p.push(...w)}else if(y==="directory"){let w=await ds(e,o);p.push(...w)}else if(y==="file"){let w=await Zr(e,o);p.push(...w)}else if(y==="user"){let w=Fi(o);p.push(...w)}else if(y==="command"){let w=await Mi(e,o);p.push(...w)}if(r!==null)try{let y=await Wi(e,r),w=zi(e,y);for(let v of w)(o===null||v.startsWith(o))&&p.push(v)}catch{return P("","",1)}if(a){let y=await ds(e,o);for(let w of y)p.includes(w)||p.push(w)}let g="";if(f!==null){let y=e.state.functions.get(f);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 v=new Map;for(let T of e.state.env.keys())(T==="COMPREPLY"||T.startsWith("COMPREPLY_")||T==="COMPREPLY__length")&&(v.set(T,e.state.env.get(T)),e.state.env.delete(T));let _=["compgen",h[0]??"",""];try{let T=await Rt(e,y,_,"");if(T.exitCode!==0)return Ue(e,w),Ue(e,v),P("",T.stderr,1);g=T.stdout;let D=Vi(e);p.push(...D)}catch{return Ue(e,w),Ue(e,v),P("","",1)}Ue(e,w),Ue(e,v)}}if(d!==null)try{let y=we(d),w=await e.executeScript(y);if(w.exitCode!==0)return P("",w.stderr,w.exitCode);if(w.stdout){let v=w.stdout.split(`
48
- `);for(let _ of v)_.length>0&&p.push(_)}}catch(y){if(y.name==="ParseException")return S(`compgen: -C: ${y.message}
49
- `,2);throw y}let b=p;if(u!==null){let y=u.startsWith("!"),w=y?u.slice(1):u;b=p.filter(v=>{let _=je(v,w,!1,!0);return y?_:!_})}if(b.length===0&&o!==null)return P(g,"",1);let E=b.map(y=>`${n}${y}${i}`).join(`
50
- `),k=g+(E?`${E}
51
- `:"");return F(k)}function Ni(e,t){let s=new Set;for(let n of e.state.env.keys()){if(n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length"))continue;let i=n.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)?s.add(n):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function Oi(e,t){let s=e.state.exportedVars??new Set,r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r=r.filter(n=>n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length")?!1:e.state.env.has(n)),r.sort()}function Ti(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(r=>r.startsWith(t))),s.sort()}function Di(e){let t=[...hs];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function xi(e){let t=[...Gr];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ii(e,t){let s=[];for(let n of e.state.env.keys())if(n.startsWith("BASH_ALIAS_")){let i=n.slice(11);s.push(i)}let r=s;return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function Ri(e){let t=[...Ci];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Li(e){let t=[...ki];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function ds(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i){let a=`${r}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!n||o.startsWith(n)))if(t?.includes("/")){let c=t.lastIndexOf("/"),u=t.slice(0,c+1);s.push(u+o)}else s.push(o)}catch{}}}catch{}return s.sort()}async function Zr(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i)if(!n||o.startsWith(n))if(t?.includes("/")){let a=t.lastIndexOf("/"),l=t.slice(0,a+1);s.push(l+o)}else s.push(o)}catch{}return s.sort()}function Fi(e){return["root","nobody"]}async function Mi(e,t){let s=new Set;for(let i of hs)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 Gr)s.add(i);let r=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of r.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let n=Array.from(s);return t!==null&&(n=n.filter(i=>i.startsWith(t))),n.sort()}async function Wi(e,t){let r=new W().parseWordFromString(t,!1,!1);return await x(e,r)}function zi(e,t){let s=e.state.env.get("IFS")??`
52
- `;if(s.length===0)return[t];let r=new Set(s.split("")),n=[],i="",o=0;for(;o<t.length;){let a=t[o];if(a==="\\"&&o+1<t.length){let l=t[o+1];i+=l,o+=2}else r.has(a)?(i.length>0&&(n.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&n.push(i),n}function Ue(e,t){for(let[s,r]of t)r===void 0?e.state.env.delete(s):e.state.env.set(s,r)}function Vi(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let n=ye(e,"COMPREPLY");for(let[,i]of n)t.push(i)}else{let n=e.state.env.get("COMPREPLY");n!==void 0&&t.push(n)}return t}var Bi=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function ys(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")s=!0;else if(d==="-r")r=!0;else if(d==="-D")n=!0;else if(d==="-W"){if(f++,f>=t.length)return S(`complete: -W: option requires an argument
53
- `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return S(`complete: -F: option requires an argument
54
- `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return S(`complete: -o: option requires an argument
55
- `,2);let h=t[f];if(!Bi.includes(h))return S(`complete: ${h}: invalid option name
56
- `,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return S(`complete: -A: option requires an argument
57
- `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return S(`complete: -C: option requires an argument
58
- `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return S(`complete: -G: option requires an argument
59
- `,2)}else if(d==="-P"){if(f++,f>=t.length)return S(`complete: -P: option requires an argument
60
- `,2)}else if(d==="-S"){if(f++,f>=t.length)return S(`complete: -S: option requires an argument
61
- `,2)}else if(d==="-X"){if(f++,f>=t.length)return S(`complete: -X: option requires an argument
62
- `,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(r){if(u.length===0)return e.state.completionSpecs.clear(),F("");for(let f of u)e.state.completionSpecs.delete(f);return F("")}if(s)return u.length===0?ms(e):ms(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!n)return ms(e);if(o&&u.length===0&&!n)return S(`complete: -F: option requires a command name
63
- `,2);if(n){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),o!==void 0&&(f.function=o),a!==void 0&&(f.command=a),l.length>0&&(f.options=l),c.length>0&&(f.actions=c),e.state.completionSpecs.set("__default__",f),F("")}for(let f of u){let d={};i!==void 0&&(d.wordlist=i),o!==void 0&&(d.function=o),a!==void 0&&(d.command=a),l.length>0&&(d.options=l),c.length>0&&(d.actions=c),e.state.completionSpecs.set(f,d)}return F("")}function ms(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
64
- `;return P("",i,1)}return F("")}let r=[],n=t||Array.from(s.keys());for(let i of n){if(i==="__default__")continue;let o=s.get(i);if(!o){if(t)return P(r.join(`
35
+ `)),(r.fd??0)===0&&(s=i)}else if(r.operator==="<<<"&&r.target.type==="Word")s=`${await D(e,r.target)}
36
+ `;else if(r.operator==="<"&&r.target.type==="Word"){let n=await D(e,r.target),i=e.fs.resolvePath(e.state.cwd,n);try{s=await e.fs.readFile(i)}catch{}}return s}async function Rt(e,t,s,r="",n){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,ke(`${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(n??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 c=0;c<s.length;c++)i.set(String(c+1),e.state.env.get(String(c+1))),e.state.env.set(String(c+1),s[c]);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 o=()=>{let c=e.state.localScopes.length-1,u=e.state.localScopes.pop();if(u)for(let[f,d]of u)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);if(Hr(e,c),e.state.fullyUnsetLocals)for(let[f,d]of e.state.fullyUnsetLocals.entries())d===c&&e.state.fullyUnsetLocals.delete(f);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let f=e.state.localExportedVars.pop();if(f)for(let d of f)e.state.exportedVars?.delete(d)}for(let[f,d]of i)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:a,error:l}=await qr(e,t.redirections);if(l)return o(),_("",l,1);try{let c=await Ci(e,t.redirections),u=r||c,f=await e.executeCommand(t.body,u);return o(),j(e,f,t.redirections,a)}catch(c){if(o(),c instanceof ne){let u=_(c.stdout,c.stderr,c.exitCode);return j(e,u,t.redirections,a)}throw c}}var Xr=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],ps=[".",":","[","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"],ki=["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"],Ni=ps;async function ms(e,t){let s=[],r=null,n="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=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 A(`compgen: -A: option requires an argument
37
+ `,2);let b=t[y];if(!m.includes(b))return A(`compgen: ${b}: invalid action name
38
+ `,2);s.push(b)}else if(w==="-W"){if(y++,y>=t.length)return A(`compgen: -W: option requires an argument
39
+ `,2);r=t[y]}else if(w==="-P"){if(y++,y>=t.length)return A(`compgen: -P: option requires an argument
40
+ `,2);n=t[y]}else if(w==="-S"){if(y++,y>=t.length)return A(`compgen: -S: option requires an argument
41
+ `,2);i=t[y]}else if(w==="-o"){if(y++,y>=t.length)return A(`compgen: -o: option requires an argument
42
+ `,2);let b=t[y];if(b==="plusdirs")a=!0;else if(b==="dirnames")l=!0;else if(b==="default")c=!0;else if(!(b==="filenames"||b==="nospace"||b==="bashdefault"||b==="noquote"))return A(`compgen: ${b}: invalid option name
43
+ `,2)}else if(w==="-F"){if(y++,y>=t.length)return A(`compgen: -F: option requires an argument
44
+ `,2);f=t[y]}else if(w==="-C"){if(y++,y>=t.length)return A(`compgen: -C: option requires an argument
45
+ `,2);d=t[y]}else if(w==="-X"){if(y++,y>=t.length)return A(`compgen: -X: option requires an argument
46
+ `,2);u=t[y]}else if(w==="-G"){if(y++,y>=t.length)return A(`compgen: -G: option requires an argument
47
+ `,2)}else if(w==="--"){h.push(...t.slice(y+1));break}else w.startsWith("-")||h.push(w)}o=h[0]??null;let p=[];if(l){let y=await hs(e,o);p.push(...y)}if(c){let y=await Gr(e,o);p.push(...y)}for(let y of s)if(y==="variable"){let w=Oi(e,o);p.push(...w)}else if(y==="export"){let w=xi(e,o);p.push(...w)}else if(y==="function"){let w=Ti(e,o);p.push(...w)}else if(y==="builtin"){let w=Di(o);p.push(...w)}else if(y==="keyword"){let w=Ii(o);p.push(...w)}else if(y==="alias"){let w=Ri(e,o);p.push(...w)}else if(y==="shopt"){let w=Li(o);p.push(...w)}else if(y==="helptopic"){let w=Fi(o);p.push(...w)}else if(y==="directory"){let w=await hs(e,o);p.push(...w)}else if(y==="file"){let w=await Gr(e,o);p.push(...w)}else if(y==="user"){let w=Mi(o);p.push(...w)}else if(y==="command"){let w=await Wi(e,o);p.push(...w)}if(r!==null)try{let y=await zi(e,r),w=Vi(e,y);for(let b of w)(o===null||b.startsWith(o))&&p.push(b)}catch{return _("","",1)}if(a){let y=await hs(e,o);for(let w of y)p.includes(w)||p.push(w)}let g="";if(f!==null){let y=e.state.functions.get(f);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 b=new Map;for(let T of e.state.env.keys())(T==="COMPREPLY"||T.startsWith("COMPREPLY_")||T==="COMPREPLY__length")&&(b.set(T,e.state.env.get(T)),e.state.env.delete(T));let E=["compgen",h[0]??"",""];try{let T=await Rt(e,y,E,"");if(T.exitCode!==0)return Ue(e,w),Ue(e,b),_("",T.stderr,1);g=T.stdout;let N=Bi(e);p.push(...N)}catch{return Ue(e,w),Ue(e,b),_("","",1)}Ue(e,w),Ue(e,b)}}if(d!==null)try{let y=we(d),w=await e.executeScript(y);if(w.exitCode!==0)return _("",w.stderr,w.exitCode);if(w.stdout){let b=w.stdout.split(`
48
+ `);for(let E of b)E.length>0&&p.push(E)}}catch(y){if(y.name==="ParseException")return A(`compgen: -C: ${y.message}
49
+ `,2);throw y}let S=p;if(u!==null){let y=u.startsWith("!"),w=y?u.slice(1):u;S=p.filter(b=>{let E=je(b,w,!1,!0);return y?E:!E})}if(S.length===0&&o!==null)return _(g,"",1);let v=S.map(y=>`${n}${y}${i}`).join(`
50
+ `),C=g+(v?`${v}
51
+ `:"");return F(C)}function Oi(e,t){let s=new Set;for(let n of e.state.env.keys()){if(n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length"))continue;let i=n.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)?s.add(n):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function xi(e,t){let s=e.state.exportedVars??new Set,r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r=r.filter(n=>n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length")?!1:e.state.env.has(n)),r.sort()}function Ti(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(r=>r.startsWith(t))),s.sort()}function Di(e){let t=[...ps];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ii(e){let t=[...Xr];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ri(e,t){let s=[];for(let n of e.state.env.keys())if(n.startsWith("BASH_ALIAS_")){let i=n.slice(11);s.push(i)}let r=s;return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function Li(e){let t=[...ki];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Fi(e){let t=[...Ni];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function hs(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i){let a=`${r}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!n||o.startsWith(n)))if(t?.includes("/")){let c=t.lastIndexOf("/"),u=t.slice(0,c+1);s.push(u+o)}else s.push(o)}catch{}}}catch{}return s.sort()}async function Gr(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i)if(!n||o.startsWith(n))if(t?.includes("/")){let a=t.lastIndexOf("/"),l=t.slice(0,a+1);s.push(l+o)}else s.push(o)}catch{}return s.sort()}function Mi(e){return["root","nobody"]}async function Wi(e,t){let s=new Set;for(let i of ps)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 Xr)s.add(i);let r=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of r.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let n=Array.from(s);return t!==null&&(n=n.filter(i=>i.startsWith(t))),n.sort()}async function zi(e,t){let r=new W().parseWordFromString(t,!1,!1);return await D(e,r)}function Vi(e,t){let s=e.state.env.get("IFS")??`
52
+ `;if(s.length===0)return[t];let r=new Set(s.split("")),n=[],i="",o=0;for(;o<t.length;){let a=t[o];if(a==="\\"&&o+1<t.length){let l=t[o+1];i+=l,o+=2}else r.has(a)?(i.length>0&&(n.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&n.push(i),n}function Ue(e,t){for(let[s,r]of t)r===void 0?e.state.env.delete(s):e.state.env.set(s,r)}function Bi(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let n=ye(e,"COMPREPLY");for(let[,i]of n)t.push(i)}else{let n=e.state.env.get("COMPREPLY");n!==void 0&&t.push(n)}return t}var ji=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function gs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")s=!0;else if(d==="-r")r=!0;else if(d==="-D")n=!0;else if(d==="-W"){if(f++,f>=t.length)return A(`complete: -W: option requires an argument
53
+ `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return A(`complete: -F: option requires an argument
54
+ `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return A(`complete: -o: option requires an argument
55
+ `,2);let h=t[f];if(!ji.includes(h))return A(`complete: ${h}: invalid option name
56
+ `,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return A(`complete: -A: option requires an argument
57
+ `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return A(`complete: -C: option requires an argument
58
+ `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return A(`complete: -G: option requires an argument
59
+ `,2)}else if(d==="-P"){if(f++,f>=t.length)return A(`complete: -P: option requires an argument
60
+ `,2)}else if(d==="-S"){if(f++,f>=t.length)return A(`complete: -S: option requires an argument
61
+ `,2)}else if(d==="-X"){if(f++,f>=t.length)return A(`complete: -X: option requires an argument
62
+ `,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(r){if(u.length===0)return e.state.completionSpecs.clear(),F("");for(let f of u)e.state.completionSpecs.delete(f);return F("")}if(s)return u.length===0?ys(e):ys(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!n)return ys(e);if(o&&u.length===0&&!n)return A(`complete: -F: option requires a command name
63
+ `,2);if(n){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),o!==void 0&&(f.function=o),a!==void 0&&(f.command=a),l.length>0&&(f.options=l),c.length>0&&(f.actions=c),e.state.completionSpecs.set("__default__",f),F("")}for(let f of u){let d={};i!==void 0&&(d.wordlist=i),o!==void 0&&(d.function=o),a!==void 0&&(d.command=a),l.length>0&&(d.options=l),c.length>0&&(d.actions=c),e.state.completionSpecs.set(f,d)}return F("")}function ys(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
64
+ `;return _("",i,1)}return F("")}let r=[],n=t||Array.from(s.keys());for(let i of n){if(i==="__default__")continue;let o=s.get(i);if(!o){if(t)return _(r.join(`
65
65
  `)+(r.length>0?`
66
66
  `:""),`complete: ${i}: no completion specification
67
67
  `,1);continue}let a="complete";if(o.options)for(let l of o.options)a+=` -o ${l}`;if(o.actions)for(let l of o.actions)a+=` -A ${l}`;o.wordlist!==void 0&&(o.wordlist.includes(" ")||o.wordlist.includes("'")?a+=` -W '${o.wordlist}'`:a+=` -W ${o.wordlist}`),o.function!==void 0&&(a+=` -F ${o.function}`),o.isDefault&&(a+=" -D"),a+=` ${i}`,r.push(a)}return r.length===0?F(""):F(`${r.join(`
68
68
  `)}
69
- `)}var Xr=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function gs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return S(`compopt: -o: option requires an argument
70
- `,2);let c=t[a];if(!Xr.includes(c))return S(`compopt: ${c}: invalid option name
71
- `,2);n.push(c)}else if(l==="+o"){if(a++,a>=t.length)return S(`compopt: +o: option requires an argument
72
- `,2);let c=t[a];if(!Xr.includes(c))return S(`compopt: ${c}: invalid option name
73
- `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(s){let a=e.state.completionSpecs.get("__default__")??{isDefault:!0},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__default__",a),F("")}if(r){let a=e.state.completionSpecs.get("__empty__")??{},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__empty__",a),F("")}if(o.length>0){for(let a of o){let l=e.state.completionSpecs.get(a)??{},c=new Set(l.options??[]);for(let u of n)c.add(u);for(let u of i)c.delete(u);l.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set(a,l)}return F("")}return S(`compopt: not currently executing completion function
74
- `,1)}function ws(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ne;return L}if(t.length>1)throw new z(1,"",`bash: continue: too many arguments
69
+ `)}var Kr=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function ws(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return A(`compopt: -o: option requires an argument
70
+ `,2);let c=t[a];if(!Kr.includes(c))return A(`compopt: ${c}: invalid option name
71
+ `,2);n.push(c)}else if(l==="+o"){if(a++,a>=t.length)return A(`compopt: +o: option requires an argument
72
+ `,2);let c=t[a];if(!Kr.includes(c))return A(`compopt: ${c}: invalid option name
73
+ `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(s){let a=e.state.completionSpecs.get("__default__")??{isDefault:!0},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__default__",a),F("")}if(r){let a=e.state.completionSpecs.get("__empty__")??{},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__empty__",a),F("")}if(o.length>0){for(let a of o){let l=e.state.completionSpecs.get(a)??{},c=new Set(l.options??[]);for(let u of n)c.add(u);for(let u of i)c.delete(u);l.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set(a,l)}return F("")}return A(`compopt: not currently executing completion function
74
+ `,1)}function vs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ne;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 r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new z(1,"",`bash: continue: ${t[0]}: numeric argument required
76
- `);s=r}throw new ce(s)}function H(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 vs(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function bs(e){let t="$'";for(let s=0;s<e.length;s++){let r=e[s],n=e.charCodeAt(s);n===7?t+="\\a":n===8?t+="\\b":n===9?t+="\\t":n===10?t+="\\n":n===11?t+="\\v":n===12?t+="\\f":n===13?t+="\\r":n===27?t+="\\e":n===39?t+="\\'":n===92?t+="\\\\":n<32||n===127?t+=`\\${n.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function Lt(e){return vs(e)?bs(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function We(e){return vs(e)?bs(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Es(e){return vs(e)?bs(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Kr(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),de(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 $s(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Yr(e,t){let s="",r="",n=!1;for(let i of t){let o=Kr(e,i);if(e.state.associativeArrays?.has(i)){let u=Te(e,i);if(u.length===0)s+=`declare -A ${i}=()
77
- `;else{let f=u.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",m=$s(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${f.join(" ")})
76
+ `);s=r}throw new ce(s)}function H(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 bs(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function Es(e){let t="$'";for(let s=0;s<e.length;s++){let r=e[s],n=e.charCodeAt(s);n===7?t+="\\a":n===8?t+="\\b":n===9?t+="\\t":n===10?t+="\\n":n===11?t+="\\v":n===12?t+="\\f":n===13?t+="\\r":n===27?t+="\\e":n===39?t+="\\'":n===92?t+="\\\\":n<32||n===127?t+=`\\${n.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function Lt(e){return bs(e)?Es(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function We(e){return bs(e)?Es(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function $s(e){return bs(e)?Es(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Yr(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),de(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 Ss(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Qr(e,t){let s="",r="",n=!1;for(let i of t){let o=Yr(e,i);if(e.state.associativeArrays?.has(i)){let u=xe(e,i);if(u.length===0)s+=`declare -A ${i}=()
77
+ `;else{let f=u.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",m=Ss(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${f.join(" ")})
78
78
  `}continue}let l=Q(e,i);if(l.length>0){let u=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${We(d)}`});s+=`declare -a ${i}=(${u.join(" ")})
79
79
  `;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
80
- `;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${Es(c)}
80
+ `;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${$s(c)}
81
81
  `;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${o} ${i}
82
82
  `:(r+=`bash: declare: ${i}: not found
83
- `,n=!0)}}return P(s,r,n?1:0)}function Qr(e,t){let{filterExport:s,filterReadonly:r,filterNameref:n,filterIndexedArray:i,filterAssocArray:o}=t,a=s||r||n||i||o,l="",c=new Set;for(let f of e.state.env.keys()){if(f.startsWith("BASH_"))continue;if(f.endsWith("__length")){let h=f.slice(0,-8);c.add(h);continue}let d=f.lastIndexOf("_");if(d>0){let h=f.slice(0,d),m=f.slice(d+1);if(/^\d+$/.test(m)||e.state.associativeArrays?.has(h)){c.add(h);continue}}c.add(f)}if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())c.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)c.add(f);let u=Array.from(c).sort();for(let f of u){let d=Kr(e,f),h=e.state.associativeArrays?.has(f),m=Q(e,f),p=!h&&(m.length>0||e.state.env.has(`${f}__length`));if(a&&(o&&!h||i&&!p||s&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||n&&!de(e,f)))continue;if(h){let b=Te(e,f);if(b.length===0)l+=`declare -A ${f}=()
84
- `;else{let E=b.map(k=>{let y=e.state.env.get(`${f}_${k}`)??"",w=$s(y);return`['${k}']=${w}`});l+=`declare -A ${f}=(${E.join(" ")})
85
- `}continue}if(m.length>0){let b=m.map(E=>{let k=e.state.env.get(`${f}_${E}`)??"";return`[${E}]=${We(k)}`});l+=`declare -a ${f}=(${b.join(" ")})
83
+ `,n=!0)}}return _(s,r,n?1:0)}function Jr(e,t){let{filterExport:s,filterReadonly:r,filterNameref:n,filterIndexedArray:i,filterAssocArray:o}=t,a=s||r||n||i||o,l="",c=new Set;for(let f of e.state.env.keys()){if(f.startsWith("BASH_"))continue;if(f.endsWith("__length")){let h=f.slice(0,-8);c.add(h);continue}let d=f.lastIndexOf("_");if(d>0){let h=f.slice(0,d),m=f.slice(d+1);if(/^\d+$/.test(m)||e.state.associativeArrays?.has(h)){c.add(h);continue}}c.add(f)}if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())c.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)c.add(f);let u=Array.from(c).sort();for(let f of u){let d=Yr(e,f),h=e.state.associativeArrays?.has(f),m=Q(e,f),p=!h&&(m.length>0||e.state.env.has(`${f}__length`));if(a&&(o&&!h||i&&!p||s&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||n&&!de(e,f)))continue;if(h){let S=xe(e,f);if(S.length===0)l+=`declare -A ${f}=()
84
+ `;else{let v=S.map(C=>{let y=e.state.env.get(`${f}_${C}`)??"",w=Ss(y);return`['${C}']=${w}`});l+=`declare -A ${f}=(${v.join(" ")})
85
+ `}continue}if(m.length>0){let S=m.map(v=>{let C=e.state.env.get(`${f}_${v}`)??"";return`[${v}]=${We(C)}`});l+=`declare -a ${f}=(${S.join(" ")})
86
86
  `;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
87
- `;continue}let g=e.state.env.get(f);g!==void 0&&(l+=`declare ${d} ${f}=${Es(g)}
88
- `)}return F(l)}function Jr(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let r of s){let n=Te(e,r);if(n.length===0)t+=`declare -A ${r}=()
89
- `;else{let i=n.map(o=>{let a=e.state.env.get(`${r}_${o}`)??"",l=$s(a);return`['${o}']=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
90
- `}}return F(t)}function en(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);e.state.associativeArrays?.has(o)||s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);/^\d+$/.test(a)&&(e.state.associativeArrays?.has(o)||s.add(o))}}let r=Array.from(s).sort();for(let n of r){let i=Q(e,n);if(i.length===0)t+=`declare -a ${n}=()
87
+ `;continue}let g=e.state.env.get(f);g!==void 0&&(l+=`declare ${d} ${f}=${$s(g)}
88
+ `)}return F(l)}function en(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let r of s){let n=xe(e,r);if(n.length===0)t+=`declare -A ${r}=()
89
+ `;else{let i=n.map(o=>{let a=e.state.env.get(`${r}_${o}`)??"",l=Ss(a);return`['${o}']=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
90
+ `}}return F(t)}function tn(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);e.state.associativeArrays?.has(o)||s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);/^\d+$/.test(a)&&(e.state.associativeArrays?.has(o)||s.add(o))}}let r=Array.from(s).sort();for(let n of r){let i=Q(e,n);if(i.length===0)t+=`declare -a ${n}=()
91
91
  `;else{let o=i.map(a=>{let l=e.state.env.get(`${n}_${a}`)??"";return`[${a}]=${We(l)}`});t+=`declare -a ${n}=(${o.join(" ")})
92
- `}}return F(t)}function tn(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);if(/^\d+$/.test(a)||e.state.associativeArrays?.has(o)){s.add(o);continue}}s.add(n)}let r=Array.from(s).sort();for(let n of r){if(e.state.associativeArrays?.has(n)||Q(e,n).length>0||e.state.env.has(`${n}__length`))continue;let a=e.state.env.get(n);a!==void 0&&(t+=`${n}=${Lt(a)}
93
- `)}return F(t)}function Ss(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function it(e,t){return e.state.integerVars?.has(t)??!1}function As(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function ji(e,t){return e.state.lowercaseVars?.has(t)??!1}function Ps(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Hi(e,t){return e.state.uppercaseVars?.has(t)??!1}function qe(e,t,s){return ji(e,t)?s.toLowerCase():Hi(e,t)?s.toUpperCase():s}async function sn(e,t){try{let s=new W,r=Z(s,t),n=await V(e,r.expression);return String(n)}catch{return"0"}}function Ui(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],r=s.length;if(e[r]!=="[")return null;let n=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")n++;else if(e[r]==="]"&&(n--,n===0))break;if(n!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:s,indexExpr:o,value:a}}async function _s(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,h=!1,m=!1,p=!1,g=!1,b=[];for(let D=0;D<t.length;D++){let I=t[D];if(I==="-a")s=!0;else if(I==="-A")r=!0;else if(I==="-r")n=!0;else if(I==="-x")i=!0;else if(I==="-p")o=!0;else if(I==="-n")a=!0;else if(I==="+n")l=!0;else if(I==="+a")c=!0;else if(I==="+x")u=!0;else if(I==="--"){b.push(...t.slice(D+1));break}else if(I.startsWith("+")){for(let A of I.slice(1))if(A==="n")l=!0;else if(A==="a")c=!0;else if(A==="x")u=!0;else if(A!=="r"){if(A!=="i"){if(!(A==="f"||A==="F"))return P("",`bash: typeset: +${A}: invalid option
94
- `,2)}}}else if(I==="-i")f=!0;else if(I==="-l")d=!0;else if(I==="-u")h=!0;else if(I==="-f")m=!0;else if(I==="-F")p=!0;else if(I==="-g")g=!0;else if(I.startsWith("-"))for(let A of I.slice(1))if(A==="a")s=!0;else if(A==="A")r=!0;else if(A==="r")n=!0;else if(A==="x")i=!0;else if(A==="p")o=!0;else if(A==="n")a=!0;else if(A==="i")f=!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 b.push(I)}let k=e.state.localScopes.length>0&&!g,y=D=>{if(!k)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(D)||I.set(D,e.state.env.get(D))},w=D=>{if(!k)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(D)||I.set(D,e.state.env.get(D));let A=`${D}_`;for(let N of e.state.env.keys())N.startsWith(A)&&!N.includes("__")&&(I.has(N)||I.set(N,e.state.env.get(N)));let C=`${D}__length`;e.state.env.has(C)&&!I.has(C)&&I.set(C,e.state.env.get(C))},v=D=>{k&&Ie(e,D)};if(p){if(b.length===0){let A=Array.from(e.state.functions.keys()).sort(),C="";for(let N of A)C+=`declare -f ${N}
96
- `;return F(C)}let D=!0,I="";for(let A of b)e.state.functions.has(A)?I+=`${A}
97
- `:D=!1;return P(I,"",D?0:1)}if(m){if(b.length===0){let I="",A=Array.from(e.state.functions.keys()).sort();for(let C of A)I+=`${C} ()
92
+ `}}return F(t)}function sn(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);if(/^\d+$/.test(a)||e.state.associativeArrays?.has(o)){s.add(o);continue}}s.add(n)}let r=Array.from(s).sort();for(let n of r){if(e.state.associativeArrays?.has(n)||Q(e,n).length>0||e.state.env.has(`${n}__length`))continue;let a=e.state.env.get(n);a!==void 0&&(t+=`${n}=${Lt(a)}
93
+ `)}return F(t)}function As(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function it(e,t){return e.state.integerVars?.has(t)??!1}function Ps(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Hi(e,t){return e.state.lowercaseVars?.has(t)??!1}function _s(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Ui(e,t){return e.state.uppercaseVars?.has(t)??!1}function qe(e,t,s){return Hi(e,t)?s.toLowerCase():Ui(e,t)?s.toUpperCase():s}async function rn(e,t){try{let s=new W,r=Z(s,t),n=await V(e,r.expression);return String(n)}catch{return"0"}}function qi(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],r=s.length;if(e[r]!=="[")return null;let n=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")n++;else if(e[r]==="]"&&(n--,n===0))break;if(n!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:s,indexExpr:o,value:a}}async function Cs(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,h=!1,m=!1,p=!1,g=!1,S=[];for(let N=0;N<t.length;N++){let I=t[N];if(I==="-a")s=!0;else if(I==="-A")r=!0;else if(I==="-r")n=!0;else if(I==="-x")i=!0;else if(I==="-p")o=!0;else if(I==="-n")a=!0;else if(I==="+n")l=!0;else if(I==="+a")c=!0;else if(I==="+x")u=!0;else if(I==="--"){S.push(...t.slice(N+1));break}else if(I.startsWith("+")){for(let P of I.slice(1))if(P==="n")l=!0;else if(P==="a")c=!0;else if(P==="x")u=!0;else if(P!=="r"){if(P!=="i"){if(!(P==="f"||P==="F"))return _("",`bash: typeset: +${P}: invalid option
94
+ `,2)}}}else if(I==="-i")f=!0;else if(I==="-l")d=!0;else if(I==="-u")h=!0;else if(I==="-f")m=!0;else if(I==="-F")p=!0;else if(I==="-g")g=!0;else if(I.startsWith("-"))for(let P of I.slice(1))if(P==="a")s=!0;else if(P==="A")r=!0;else if(P==="r")n=!0;else if(P==="x")i=!0;else if(P==="p")o=!0;else if(P==="n")a=!0;else if(P==="i")f=!0;else if(P==="l")d=!0;else if(P==="u")h=!0;else if(P==="f")m=!0;else if(P==="F")p=!0;else if(P==="g")g=!0;else return _("",`bash: typeset: -${P}: invalid option
95
+ `,2);else S.push(I)}let C=e.state.localScopes.length>0&&!g,y=N=>{if(!C)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(N)||I.set(N,e.state.env.get(N))},w=N=>{if(!C)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(N)||I.set(N,e.state.env.get(N));let P=`${N}_`;for(let O of e.state.env.keys())O.startsWith(P)&&!O.includes("__")&&(I.has(O)||I.set(O,e.state.env.get(O)));let k=`${N}__length`;e.state.env.has(k)&&!I.has(k)&&I.set(k,e.state.env.get(k))},b=N=>{C&&Ie(e,N)};if(p){if(S.length===0){let P=Array.from(e.state.functions.keys()).sort(),k="";for(let O of P)k+=`declare -f ${O}
96
+ `;return F(k)}let N=!0,I="";for(let P of S)e.state.functions.has(P)?I+=`${P}
97
+ `:N=!1;return _(I,"",N?0:1)}if(m){if(S.length===0){let I="",P=Array.from(e.state.functions.keys()).sort();for(let k of P)I+=`${k} ()
98
98
  {
99
99
  # function body
100
100
  }
101
- `;return F(I)}let D=!0;for(let I of b)e.state.functions.has(I)||(D=!1);return P("","",D?0:1)}if(o&&b.length>0)return Yr(e,b);if(o&&b.length===0)return Qr(e,{filterExport:i,filterReadonly:n,filterNameref:a,filterIndexedArray:s,filterAssocArray:r});if(b.length===0&&r&&!o)return Jr(e);if(b.length===0&&s&&!o)return en(e);if(b.length===0&&!o)return tn(e);let _="",T=0;for(let D of b){let I=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(I&&!c){let $=I[1],O=I[2];if(r&&Q(e,$).length>0){_+=`bash: declare: ${$}: cannot convert indexed to associative array
102
- `,T=1;continue}if((s||!r&&!s)&&e.state.associativeArrays?.has($)){_+=`bash: declare: ${$}: cannot convert associative to indexed array
103
- `,T=1;continue}if(w($),r&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)),ve(e,$),e.state.env.delete($),e.state.env.delete(`${$}__length`),r&&O.includes("[")){let R=Tt(O);for(let[X,M]of R){let U=H(e,M);e.state.env.set(`${$}_${X}`,U)}}else if(r){let R=Ee(O);for(let X=0;X<R.length;X+=2){let M=R[X],U=X+1<R.length?H(e,R[X+1]):"";e.state.env.set(`${$}_${M}`,U)}}else{let R=Ee(O);if(R.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let U of R){let ee=U.match(/^\[([^\]]+)\]=(.*)$/);if(ee){let ae=ee[1],ze=ee[2],Gn=H(e,ze),et;if(/^-?\d+$/.test(ae))et=Number.parseInt(ae,10);else try{let Xn=new W,Kn=Z(Xn,ae);et=await V(e,Kn.expression)}catch{et=0}e.state.env.set(`${$}_${et}`,Gn),M=et+1}else{let ae=H(e,U);e.state.env.set(`${$}_${M}`,ae),M++}}}else{for(let M=0;M<R.length;M++)e.state.env.set(`${$}_${M}`,R[M]);e.state.env.set(`${$}__length`,String(R.length))}}v($),n&&ie(e,$),i&&ge(e,$);continue}if(l){let $=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(ar(e,$),!D.includes("="))continue}if(u){let $=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(yt(e,$),!D.includes("="))continue}let A=Ui(D);if(A){let{name:$,indexExpr:O,value:R}=A,X=K(e,$);if(X)return X;w($);let M;try{let ee=new W,ae=Z(ee,O);M=await V(e,ae.expression)}catch{let ee=parseInt(O,10);M=Number.isNaN(ee)?0:ee}e.state.env.set(`${$}_${M}`,R);let U=parseInt(e.state.env.get(`${$}__length`)??"0",10);M>=U&&e.state.env.set(`${$}__length`,String(M+1)),v($),n&&ie(e,$),i&&ge(e,$);continue}let C=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(C&&!c){let $=C[1],O=C[2],R=K(e,$);if(R)return R;w($);let X=Ee(O);if(e.state.associativeArrays?.has($)){let M=Tt(O);for(let[U,ee]of M){let ae=H(e,ee);e.state.env.set(`${$}_${U}`,ae)}}else{let M=Q(e,$),U=0,ee=e.state.env.get($);M.length===0&&ee!==void 0?(e.state.env.set(`${$}_0`,ee),e.state.env.delete($),U=1):M.length>0&&(U=Math.max(...M)+1);for(let ze=0;ze<X.length;ze++)e.state.env.set(`${$}_${U+ze}`,H(e,X[ze]));let ae=U+X.length;e.state.env.set(`${$}__length`,String(ae))}v($),n&&ie(e,$),i&&ge(e,$);continue}let N=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(N){let $=N[1],O=H(e,N[2]),R=K(e,$);if(R)return R;y($),f&&Ss(e,$),d&&As(e,$),h&&Ps(e,$);let M=Q(e,$).length>0||e.state.associativeArrays?.has($);if(it(e,$)){let U=e.state.env.get($)??"0",ee=parseInt(U,10)||0,ae=parseInt(await sn(e,O),10)||0;O=String(ee+ae),e.state.env.set($,O)}else if(M){O=qe(e,$,O);let U=`${$}_0`,ee=e.state.env.get(U)??"";e.state.env.set(U,ee+O)}else{O=qe(e,$,O);let U=e.state.env.get($)??"";e.state.env.set($,U+O)}v($),n&&ie(e,$),i&&ge(e,$),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add($));continue}if(D.includes("=")){let $=D.indexOf("="),O=D.slice(0,$),R=D.slice($+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(O)){_+=`bash: typeset: \`${O}': not a valid identifier
104
- `,T=1;continue}let X=K(e,O);if(X)return X;if(y(O),a){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){_+=`bash: declare: \`${R}': invalid variable name for name reference
105
- `,T=1;continue}e.state.env.set(O,R),Pe(e,O),R!==""&&Yt(e,R)&&Kt(e,O),v(O),n&&ie(e,O),i&&ge(e,O);continue}if(f&&Ss(e,O),d&&As(e,O),h&&Ps(e,O),it(e,O)&&(R=await sn(e,R)),R=qe(e,O,R),de(e,O)){let M=De(e,O);M&&M!==O?e.state.env.set(M,R):e.state.env.set(O,R)}else e.state.env.set(O,R);v(O),n&&ie(e,O),i&&ge(e,O),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(O))}else{let $=D;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test($)){_+=`bash: typeset: \`${$}': not a valid identifier
106
- `,T=1;continue}if(s||r?w($):y($),a){Pe(e,$);let R=e.state.env.get($);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?lr(e,$):R&&Yt(e,R)&&Kt(e,$),v($),n&&ie(e,$),i&&ge(e,$);continue}if(f&&Ss(e,$),d&&As(e,$),h&&Ps(e,$),r){if(Q(e,$).length>0){_+=`bash: declare: ${$}: cannot convert indexed to associative array
107
- `,T=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)}let O=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${$}_`)&&!R.startsWith(`${$}__length`));!e.state.env.has($)&&!O&&(s||r?e.state.env.set(`${$}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add($))),v($),n&&ie(e,$),i&&ge(e,$)}}return P("",_,T)}async function Cs(e,t){let s=!1,r=!1,n=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")r=!0;else if(a==="-p")n=!0;else if(a==="--"){i.push(...t.slice(o+1));break}else a.startsWith("-")||i.push(a)}if(i.length===0){let o="",a=Array.from(e.state.readonlyVars||[]).sort();for(let l of a){let c=e.state.env.get(l);if(c!==void 0){let u=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -r ${l}="${u}"
108
- `}}return F(o)}for(let o of i){let a=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(a){let f=a[1],d=a[2],h=K(e,f);if(h)return h;let m=Ee(d);if(e.state.associativeArrays?.has(f)){let p=Tt(d);for(let[g,b]of p){let E=H(e,b);e.state.env.set(`${f}_${g}`,E)}}else{let p=Q(e,f),g=0,b=e.state.env.get(f);p.length===0&&b!==void 0?(e.state.env.set(`${f}_0`,b),e.state.env.delete(f),g=1):p.length>0&&(g=Math.max(...p)+1);for(let k=0;k<m.length;k++)e.state.env.set(`${f}_${g+k}`,H(e,m[k]));let E=g+m.length;e.state.env.set(`${f}__length`,String(E))}ie(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=H(e,l[2]),h=K(e,f);if(h)return h;let m=e.state.env.get(f)??"";e.state.env.set(f,m+d),ie(e,f);continue}let c=zr(o);if(c.value===void 0&&!c.isArray){ie(e,c.name);continue}let u=await Vr(e,c,{makeReadonly:!0});if(u)return u}return L}function ks(e){return e.state.directoryStack??=[],e.state.directoryStack}function ot(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function qi(e){let t=e.split("/").filter(r=>r&&r!=="."),s=[];for(let r of t)r===".."?s.pop():s.push(r);return`/${s.join("/")}`}async function Ns(e,t){let s=ks(e),r;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(r!==void 0)return S(`bash: pushd: too many arguments
109
- `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return S(`bash: pushd: ${l}: invalid option
110
- `,2);if(r!==void 0)return S(`bash: pushd: too many arguments
111
- `,2);r=l}}if(r===void 0){if(s.length<2)return S(`bash: pushd: no other directory
112
- `,1);let a=s[0];s[0]=s[1],s[1]=a,r=s[0]}let n;if(r.startsWith("/"))n=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),n=`/${a.join("/")}`}else r==="."?n=e.state.cwd:r.startsWith("~")?n=(e.state.env.get("HOME")||"/")+r.slice(1):n=`${e.state.cwd}/${r}`;n=qi(n);try{if(!(await e.fs.stat(n)).isDirectory)return S(`bash: pushd: ${r}: Not a directory
113
- `,1)}catch{return S(`bash: pushd: ${r}: No such file or directory
101
+ `;return F(I)}let N=!0;for(let I of S)e.state.functions.has(I)||(N=!1);return _("","",N?0:1)}if(o&&S.length>0)return Qr(e,S);if(o&&S.length===0)return Jr(e,{filterExport:i,filterReadonly:n,filterNameref:a,filterIndexedArray:s,filterAssocArray:r});if(S.length===0&&r&&!o)return en(e);if(S.length===0&&s&&!o)return tn(e);if(S.length===0&&!o)return sn(e);let E="",T=0;for(let N of S){let I=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(I&&!c){let $=I[1],x=I[2];if(r&&Q(e,$).length>0){E+=`bash: declare: ${$}: cannot convert indexed to associative array
102
+ `,T=1;continue}if((s||!r&&!s)&&e.state.associativeArrays?.has($)){E+=`bash: declare: ${$}: cannot convert associative to indexed array
103
+ `,T=1;continue}if(w($),r&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)),ve(e,$),e.state.env.delete($),e.state.env.delete(`${$}__length`),r&&x.includes("[")){let R=xt(x);for(let[X,M]of R){let U=H(e,M);e.state.env.set(`${$}_${X}`,U)}}else if(r){let R=Ee(x);for(let X=0;X<R.length;X+=2){let M=R[X],U=X+1<R.length?H(e,R[X+1]):"";e.state.env.set(`${$}_${M}`,U)}}else{let R=Ee(x);if(R.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let U of R){let ee=U.match(/^\[([^\]]+)\]=(.*)$/);if(ee){let ae=ee[1],ze=ee[2],Xn=H(e,ze),et;if(/^-?\d+$/.test(ae))et=Number.parseInt(ae,10);else try{let Kn=new W,Yn=Z(Kn,ae);et=await V(e,Yn.expression)}catch{et=0}e.state.env.set(`${$}_${et}`,Xn),M=et+1}else{let ae=H(e,U);e.state.env.set(`${$}_${M}`,ae),M++}}}else{for(let M=0;M<R.length;M++)e.state.env.set(`${$}_${M}`,R[M]);e.state.env.set(`${$}__length`,String(R.length))}}b($),n&&ie(e,$),i&&ge(e,$);continue}if(l){let $=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(lr(e,$),!N.includes("="))continue}if(u){let $=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(yt(e,$),!N.includes("="))continue}let P=qi(N);if(P){let{name:$,indexExpr:x,value:R}=P,X=K(e,$);if(X)return X;w($);let M;try{let ee=new W,ae=Z(ee,x);M=await V(e,ae.expression)}catch{let ee=parseInt(x,10);M=Number.isNaN(ee)?0:ee}e.state.env.set(`${$}_${M}`,R);let U=parseInt(e.state.env.get(`${$}__length`)??"0",10);M>=U&&e.state.env.set(`${$}__length`,String(M+1)),b($),n&&ie(e,$),i&&ge(e,$);continue}let k=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(k&&!c){let $=k[1],x=k[2],R=K(e,$);if(R)return R;w($);let X=Ee(x);if(e.state.associativeArrays?.has($)){let M=xt(x);for(let[U,ee]of M){let ae=H(e,ee);e.state.env.set(`${$}_${U}`,ae)}}else{let M=Q(e,$),U=0,ee=e.state.env.get($);M.length===0&&ee!==void 0?(e.state.env.set(`${$}_0`,ee),e.state.env.delete($),U=1):M.length>0&&(U=Math.max(...M)+1);for(let ze=0;ze<X.length;ze++)e.state.env.set(`${$}_${U+ze}`,H(e,X[ze]));let ae=U+X.length;e.state.env.set(`${$}__length`,String(ae))}b($),n&&ie(e,$),i&&ge(e,$);continue}let O=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(O){let $=O[1],x=H(e,O[2]),R=K(e,$);if(R)return R;y($),f&&As(e,$),d&&Ps(e,$),h&&_s(e,$);let M=Q(e,$).length>0||e.state.associativeArrays?.has($);if(it(e,$)){let U=e.state.env.get($)??"0",ee=parseInt(U,10)||0,ae=parseInt(await rn(e,x),10)||0;x=String(ee+ae),e.state.env.set($,x)}else if(M){x=qe(e,$,x);let U=`${$}_0`,ee=e.state.env.get(U)??"";e.state.env.set(U,ee+x)}else{x=qe(e,$,x);let U=e.state.env.get($)??"";e.state.env.set($,U+x)}b($),n&&ie(e,$),i&&ge(e,$),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add($));continue}if(N.includes("=")){let $=N.indexOf("="),x=N.slice(0,$),R=N.slice($+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(x)){E+=`bash: typeset: \`${x}': not a valid identifier
104
+ `,T=1;continue}let X=K(e,x);if(X)return X;if(y(x),a){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){E+=`bash: declare: \`${R}': invalid variable name for name reference
105
+ `,T=1;continue}e.state.env.set(x,R),Pe(e,x),R!==""&&Qt(e,R)&&Yt(e,x),b(x),n&&ie(e,x),i&&ge(e,x);continue}if(f&&As(e,x),d&&Ps(e,x),h&&_s(e,x),it(e,x)&&(R=await rn(e,R)),R=qe(e,x,R),de(e,x)){let M=Te(e,x);M&&M!==x?e.state.env.set(M,R):e.state.env.set(x,R)}else e.state.env.set(x,R);b(x),n&&ie(e,x),i&&ge(e,x),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(x))}else{let $=N;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test($)){E+=`bash: typeset: \`${$}': not a valid identifier
106
+ `,T=1;continue}if(s||r?w($):y($),a){Pe(e,$);let R=e.state.env.get($);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?cr(e,$):R&&Qt(e,R)&&Yt(e,$),b($),n&&ie(e,$),i&&ge(e,$);continue}if(f&&As(e,$),d&&Ps(e,$),h&&_s(e,$),r){if(Q(e,$).length>0){E+=`bash: declare: ${$}: cannot convert indexed to associative array
107
+ `,T=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)}let x=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${$}_`)&&!R.startsWith(`${$}__length`));!e.state.env.has($)&&!x&&(s||r?e.state.env.set(`${$}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add($))),b($),n&&ie(e,$),i&&ge(e,$)}}return _("",E,T)}async function ks(e,t){let s=!1,r=!1,n=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")r=!0;else if(a==="-p")n=!0;else if(a==="--"){i.push(...t.slice(o+1));break}else a.startsWith("-")||i.push(a)}if(i.length===0){let o="",a=Array.from(e.state.readonlyVars||[]).sort();for(let l of a){let c=e.state.env.get(l);if(c!==void 0){let u=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -r ${l}="${u}"
108
+ `}}return F(o)}for(let o of i){let a=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(a){let f=a[1],d=a[2],h=K(e,f);if(h)return h;let m=Ee(d);if(e.state.associativeArrays?.has(f)){let p=xt(d);for(let[g,S]of p){let v=H(e,S);e.state.env.set(`${f}_${g}`,v)}}else{let p=Q(e,f),g=0,S=e.state.env.get(f);p.length===0&&S!==void 0?(e.state.env.set(`${f}_0`,S),e.state.env.delete(f),g=1):p.length>0&&(g=Math.max(...p)+1);for(let C=0;C<m.length;C++)e.state.env.set(`${f}_${g+C}`,H(e,m[C]));let v=g+m.length;e.state.env.set(`${f}__length`,String(v))}ie(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=H(e,l[2]),h=K(e,f);if(h)return h;let m=e.state.env.get(f)??"";e.state.env.set(f,m+d),ie(e,f);continue}let c=Vr(o);if(c.value===void 0&&!c.isArray){ie(e,c.name);continue}let u=await Br(e,c,{makeReadonly:!0});if(u)return u}return L}function Ns(e){return e.state.directoryStack??=[],e.state.directoryStack}function ot(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Zi(e){let t=e.split("/").filter(r=>r&&r!=="."),s=[];for(let r of t)r===".."?s.pop():s.push(r);return`/${s.join("/")}`}async function Os(e,t){let s=Ns(e),r;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(r!==void 0)return A(`bash: pushd: too many arguments
109
+ `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return A(`bash: pushd: ${l}: invalid option
110
+ `,2);if(r!==void 0)return A(`bash: pushd: too many arguments
111
+ `,2);r=l}}if(r===void 0){if(s.length<2)return A(`bash: pushd: no other directory
112
+ `,1);let a=s[0];s[0]=s[1],s[1]=a,r=s[0]}let n;if(r.startsWith("/"))n=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),n=`/${a.join("/")}`}else r==="."?n=e.state.cwd:r.startsWith("~")?n=(e.state.env.get("HOME")||"/")+r.slice(1):n=`${e.state.cwd}/${r}`;n=Zi(n);try{if(!(await e.fs.stat(n)).isDirectory)return A(`bash: pushd: ${r}: Not a directory
113
+ `,1)}catch{return A(`bash: pushd: ${r}: No such file or directory
114
114
  `,1)}s.unshift(e.state.cwd),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 i=e.state.env.get("HOME")||"",o=`${[n,...s].map(a=>ot(a,i)).join(" ")}
115
- `;return F(o)}function Os(e,t){let s=ks(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?S(`bash: popd: ${o}: invalid option
116
- `,2):S(`bash: popd: too many arguments
117
- `,2);if(s.length===0)return S(`bash: popd: directory stack empty
118
- `,1);let r=s.shift();if(!r)return S(`bash: popd: directory stack empty
115
+ `;return F(o)}function xs(e,t){let s=Ns(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?A(`bash: popd: ${o}: invalid option
116
+ `,2):A(`bash: popd: too many arguments
117
+ `,2);if(s.length===0)return A(`bash: popd: directory stack empty
118
+ `,1);let r=s.shift();if(!r)return A(`bash: popd: directory stack empty
119
119
  `,1);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 n=e.state.env.get("HOME")||"",i=`${[r,...s].map(o=>ot(o,n)).join(" ")}
120
- `;return F(i)}function Ts(e,t){let s=ks(e),r=!1,n=!1,i=!1,o=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")r=!0;else if(f==="l")n=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return S(`bash: dirs: -${f}: invalid option
121
- `,2);else return S(`bash: dirs: too many arguments
120
+ `;return F(i)}function Ts(e,t){let s=Ns(e),r=!1,n=!1,i=!1,o=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")r=!0;else if(f==="l")n=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return A(`bash: dirs: -${f}: invalid option
121
+ `,2);else return A(`bash: dirs: too many arguments
122
122
  `,1);if(r)return e.state.directoryStack=[],L;let a=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=n?u:ot(u,l);return` ${f} ${d}`}).join(`
123
123
  `),c+=`
124
124
  `):i?c=a.map(u=>n?u:ot(u,l)).join(`
125
125
  `)+`
126
126
  `:c=a.map(u=>n?u:ot(u,l)).join(" ")+`
127
- `,F(c)}async function Ft(e,t,s){let r=t;if(r.length>0){let a=r[0];if(a==="--")r=r.slice(1);else if(a.startsWith("-")&&a!=="-"&&a.length>1)return S(`bash: eval: ${a}: invalid option
127
+ `,F(c)}async function Ft(e,t,s){let r=t;if(r.length>0){let a=r[0];if(a==="--")r=r.slice(1);else if(a.startsWith("-")&&a!=="-"&&a.length>1)return A(`bash: eval: ${a}: invalid option
128
128
  eval: usage: eval [arg ...]
129
- `,2)}if(r.length===0)return L;let n=r.join(" ");if(n.trim()==="")return L;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=we(n);return await e.executeScript(a)}catch(a){if(a instanceof le||a instanceof ce||a instanceof ne||a instanceof z)throw a;if(a.name==="ParseException")return S(`bash: eval: ${a.message}
129
+ `,2)}if(r.length===0)return L;let n=r.join(" ");if(n.trim()==="")return L;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=we(n);return await e.executeScript(a)}catch(a){if(a instanceof le||a instanceof ce||a instanceof ne||a instanceof z)throw a;if(a.name==="ParseException")return A(`bash: eval: ${a.message}
130
130
  `);throw a}finally{e.state.groupStdin=i}}function Ds(e,t){let s,r="";if(t.length===0)s=e.state.lastExitCode;else{let n=t[0],i=Number.parseInt(n,10);n===""||Number.isNaN(i)||!/^-?\d+$/.test(n)?(r=`bash: exit: ${n}: numeric argument required
131
- `,s=2):s=(i%256+256)%256}throw new z(s,"",r)}function xs(e,t){let s=!1,r=[];for(let o of t)o==="-n"?s=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!s){let o="",a=e.state.exportedVars??new Set,l=Array.from(a).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -x ${c}="${f}"
131
+ `,s=2):s=(i%256+256)%256}throw new z(s,"",r)}function Is(e,t){let s=!1,r=[];for(let o of t)o==="-n"?s=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!s){let o="",a=e.state.exportedVars??new Set,l=Array.from(a).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -x ${c}="${f}"
132
132
  `}}return F(o)}if(s){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=H(e,o.slice(c+1)),e.state.env.set(a,l)}else a=o;yt(e,a)}return L}let n="",i=0;for(let o of r){let a,l,c=!1,u=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)a=u[1],l=H(e,u[2]),c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=H(e,o.slice(f+1))}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){n+=`bash: export: \`${o}': not a valid identifier
133
- `,i=1;continue}if(l!==void 0)if(c){let f=e.state.env.get(a)??"";e.state.env.set(a,f+l)}else e.state.env.set(a,l);else e.state.env.has(a)||e.state.env.set(a,"");ge(e,a)}return P("",n,i)}function Mt(e,t){if(t.length<2)return S(`bash: getopts: usage: getopts optstring name [arg ...]
133
+ `,i=1;continue}if(l!==void 0)if(c){let f=e.state.env.get(a)??"";e.state.env.set(a,f+l)}else e.state.env.set(a,l);else e.state.env.has(a)||e.state.env.set(a,"");ge(e,a)}return _("",n,i)}function Mt(e,t){if(t.length<2)return A(`bash: getopts: usage: getopts optstring name [arg ...]
134
134
  `);let s=t[0],r=t[1],n=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=s.startsWith(":"),o=i?s.slice(1):s,a;if(t.length>2)a=t.slice(2);else{let p=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let g=1;g<=p;g++)a.push(e.state.env.get(String(g))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let c=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),l>a.length)return n||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return n||e.state.env.set(r,"?"),{exitCode:n?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),n||e.state.env.set(r,"?"),{exitCode:n?2:1,stdout:"",stderr:""};let f=c===0?1:c,d=u[f];if(!d)return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),Mt(e,t);let h=o.indexOf(d);if(h===-1){let p="";return i?e.state.env.set("OPTARG",d):p=`bash: illegal option -- ${d}
135
135
  `,n||e.state.env.set(r,"?"),f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0")),{exitCode:n?2:0,stdout:"",stderr:p}}if(h+1<o.length&&o[h+1]===":")if(f+1<u.length)e.state.env.set("OPTARG",u.slice(f+1)),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0");else{if(l>=a.length){let p="";return i?(e.state.env.set("OPTARG",d),n||e.state.env.set(r,":")):(p=`bash: option requires an argument -- ${d}
136
- `,n||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:0,stdout:"",stderr:p}}e.state.env.set("OPTARG",a[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return n||e.state.env.set(r,d),{exitCode:n?2:0,stdout:"",stderr:""}}async function Is(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,r=!1,n=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let m=t[c];if(m==="--"){c++,l.push(...t.slice(c));break}if(m==="-r")s=!0,c++;else if(m==="-d")r=!0,c++;else if(m==="-l")n=!0,c++;else if(m==="-t")o=!0,c++;else if(m==="-p"){if(i=!0,c++,c>=t.length)return S(`bash: hash: -p: option requires an argument
137
- `,1);a=t[c],c++}else if(m.startsWith("-")&&m.length>1){for(let p of m.slice(1))if(p==="r")s=!0;else if(p==="d")r=!0;else if(p==="l")n=!0;else if(p==="t")o=!0;else return p==="p"?S(`bash: hash: -p: option requires an argument
138
- `,1):S(`bash: hash: -${p}: invalid option
139
- `,1);c++}else l.push(m),c++}if(s)return e.state.hashTable.clear(),L;if(r){if(l.length===0)return S(`bash: hash: -d: option requires an argument
136
+ `,n||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:0,stdout:"",stderr:p}}e.state.env.set("OPTARG",a[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return n||e.state.env.set(r,d),{exitCode:n?2:0,stdout:"",stderr:""}}async function Rs(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,r=!1,n=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let m=t[c];if(m==="--"){c++,l.push(...t.slice(c));break}if(m==="-r")s=!0,c++;else if(m==="-d")r=!0,c++;else if(m==="-l")n=!0,c++;else if(m==="-t")o=!0,c++;else if(m==="-p"){if(i=!0,c++,c>=t.length)return A(`bash: hash: -p: option requires an argument
137
+ `,1);a=t[c],c++}else if(m.startsWith("-")&&m.length>1){for(let p of m.slice(1))if(p==="r")s=!0;else if(p==="d")r=!0;else if(p==="l")n=!0;else if(p==="t")o=!0;else return p==="p"?A(`bash: hash: -p: option requires an argument
138
+ `,1):A(`bash: hash: -${p}: invalid option
139
+ `,1);c++}else l.push(m),c++}if(s)return e.state.hashTable.clear(),L;if(r){if(l.length===0)return A(`bash: hash: -d: option requires an argument
140
140
  `,1);let m=!1,p="";for(let g of l)e.state.hashTable.has(g)?e.state.hashTable.delete(g):(p+=`bash: hash: ${g}: not found
141
- `,m=!0);return m?S(p,1):L}if(o){if(l.length===0)return S(`bash: hash: -t: option requires an argument
142
- `,1);let m="",p=!1,g="";for(let b of l){let E=e.state.hashTable.get(b);E?l.length>1?m+=`${b} ${E}
143
- `:m+=`${E}
144
- `:(g+=`bash: hash: ${b}: not found
145
- `,p=!0)}return p?{exitCode:1,stdout:m,stderr:g}:F(m)}if(i){if(l.length===0)return S(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
141
+ `,m=!0);return m?A(p,1):L}if(o){if(l.length===0)return A(`bash: hash: -t: option requires an argument
142
+ `,1);let m="",p=!1,g="";for(let S of l){let v=e.state.hashTable.get(S);v?l.length>1?m+=`${S} ${v}
143
+ `:m+=`${v}
144
+ `:(g+=`bash: hash: ${S}: not found
145
+ `,p=!0)}return p?{exitCode:1,stdout:m,stderr:g}:F(m)}if(i){if(l.length===0)return A(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
146
146
  `,1);let m=l[0];return e.state.hashTable.set(m,a),L}if(l.length===0){if(e.state.hashTable.size===0)return F(`hash: hash table empty
147
147
  `);let m="";if(n)for(let[p,g]of e.state.hashTable)m+=`builtin hash -p ${g} ${p}
148
148
  `;else{m=`hits command
149
149
  `;for(let[,p]of e.state.hashTable)m+=` 1 ${p}
150
150
  `}return F(m)}let u=!1,f="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let m of l){if(m.includes("/")){f+=`bash: hash: ${m}: cannot use / in name
151
- `,u=!0;continue}let p=!1;for(let g of h){if(!g)continue;let b=`${g}/${m}`;if(await e.fs.exists(b)){e.state.hashTable.set(m,b),p=!0;break}}p||(f+=`bash: hash: ${m}: not found
152
- `,u=!0)}return u?S(f,1):L}var rn=new Map([[":",[": [arguments]",`Null command.
151
+ `,u=!0;continue}let p=!1;for(let g of h){if(!g)continue;let S=`${g}/${m}`;if(await e.fs.exists(S)){e.state.hashTable.set(m,S),p=!0;break}}p||(f+=`bash: hash: ${m}: not found
152
+ `,u=!0)}return u?A(f,1):L}var nn=new Map([[":",[": [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,31 +494,31 @@ 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.`]]]),nn=[...rn.keys()].sort();function Rs(e,t){let s=!1,r=[],n=0;for(;n<t.length;){let l=t[n];if(l==="--"){for(n++;n<t.length;)r.push(t[n]),n++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")s=!0;else return S(`bash: help: -${u}: invalid option
498
- `,2)}n++}else r.push(l),n++}if(r.length===0)return Gi();let i="",o=!1,a="";for(let l of r){let c=Zi(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
499
- `,o=!0;continue}for(let u of c){let f=rn.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
497
+ option is given.`]]]),on=[...nn.keys()].sort();function Ls(e,t){let s=!1,r=[],n=0;for(;n<t.length;){let l=t[n];if(l==="--"){for(n++;n<t.length;)r.push(t[n]),n++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")s=!0;else return A(`bash: help: -${u}: invalid option
498
+ `,2)}n++}else r.push(l),n++}if(r.length===0)return Xi();let i="",o=!1,a="";for(let l of r){let c=Gi(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
499
+ `,o=!0;continue}for(let u of c){let f=nn.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
500
500
  `:i+=`${u}: ${d}
501
501
  ${h}
502
- `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Zi(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=tt(`^${t}$`);return nn.filter(r=>s.test(r))}function Gi(){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=nn.slice(),r=Math.ceil(s.length/2);for(let n=0;n<r;n++){let i=s[n]||"",o=s[n+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return F(`${e.join(`
502
+ `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Gi(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=tt(`^${t}$`);return on.filter(r=>s.test(r))}function Xi(){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=on.slice(),r=Math.ceil(s.length/2);for(let n=0;n<r;n++){let i=s[n]||"",o=s[n+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return F(`${e.join(`
503
503
  `)}
504
- `)}function Xi(e){let t=[],s="",r=0;for(let n of e){for(let i of n)i==="("?r++:i===")"&&r--;s?s+=` ${n}`:s=n,r===0&&(t.push(s),s="")}return s&&t.push(s),t}async function Ls(e,t){if(t.length===0)return S(`bash: let: expression expected
505
- `);let s=Xi(t),r=0;for(let n of s)try{let o=we(`(( ${n} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(r=await V(e,a.expression.expression))}}catch(i){return S(`bash: let: ${n}: ${i.message}
506
- `)}return P("","",r===0?1:0)}async function Fs(e,t){if(e.state.localScopes.length===0)return S(`bash: local: can only be used in a function
504
+ `)}function Ki(e){let t=[],s="",r=0;for(let n of e){for(let i of n)i==="("?r++:i===")"&&r--;s?s+=` ${n}`:s=n,r===0&&(t.push(s),s="")}return s&&t.push(s),t}async function Fs(e,t){if(t.length===0)return A(`bash: let: expression expected
505
+ `);let s=Ki(t),r=0;for(let n of s)try{let o=we(`(( ${n} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(r=await V(e,a.expression.expression))}}catch(i){return A(`bash: let: ${n}: ${i.message}
506
+ `)}return _("","",r===0?1:0)}async function Ms(e,t){if(e.state.localScopes.length===0)return A(`bash: local: can only be used in a function
507
507
  `);let s=e.state.localScopes[e.state.localScopes.length-1],r="",n=0,i=!1,o=!1,a=!1,l=[];for(let c of t)if(c==="-n")i=!0;else if(c==="-a")o=!0;else if(c==="-p")a=!0;else if(c.startsWith("-")&&!c.includes("="))for(let u of c.slice(1))u==="n"?i=!0:u==="a"?o=!0:u==="p"&&(a=!0);else l.push(c);if(l.length===0){let c="",u=Array.from(s.keys()).filter(f=>!f.includes("_")||!f.match(/_\d+$/)).filter(f=>!f.includes("__length")).sort();for(let f of u){let d=e.state.env.get(f);d!==void 0&&(c+=`${f}=${d}
508
- `)}return P(c,"",0)}for(let c of l){let u,f,d=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){u=d[1];let b=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
509
- `,n=1;continue}if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let y=`${u}_`;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 E=`${u}_`;for(let y of e.state.env.keys())y.startsWith(E)&&!y.includes("__")&&e.state.env.delete(y);let k=Ee(b);for(let y=0;y<k.length;y++)e.state.env.set(`${u}_${y}`,k[y]);e.state.env.set(`${u}__length`,String(k.length)),Ie(e,u),i&&Pe(e,u);continue}let h=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){u=h[1];let b=h[2];if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let _=`${u}_`;for(let D of e.state.env.keys())D.startsWith(_)&&!D.includes("__")&&(s.has(D)||s.set(D,e.state.env.get(D)));let T=`${u}__length`;e.state.env.has(T)&&!s.has(T)&&s.set(T,e.state.env.get(T))}let E=Ee(b),k=Q(e,u),y=0,w=e.state.env.get(u);k.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),y=1):k.length>0&&(y=Math.max(...k)+1);for(let _=0;_<E.length;_++)e.state.env.set(`${u}_${y+_}`,H(e,E[_]));let v=y+E.length;e.state.env.set(`${u}__length`,String(v)),Ie(e,u),i&&Pe(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){u=m[1];let b=H(e,m[2]);K(e,u,"bash"),s.has(u)||s.set(u,e.state.env.get(u));let E=e.state.env.get(u)??"";e.state.env.set(u,E+b),Ie(e,u),i&&Pe(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){u=p[1];let b=p[2],E=H(e,p[3]);if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let w=`${u}_`;for(let _ of e.state.env.keys())_.startsWith(w)&&!_.includes("__")&&(s.has(_)||s.set(_,e.state.env.get(_)));let v=`${u}__length`;e.state.env.has(v)&&!s.has(v)&&s.set(v,e.state.env.get(v))}let k;try{let w=new W,v=Z(w,b);k=await V(e,v.expression)}catch{let w=parseInt(b,10);k=Number.isNaN(w)?0:w}e.state.env.set(`${u}_${k}`,E);let y=parseInt(e.state.env.get(`${u}__length`)??"0",10);k>=y&&e.state.env.set(`${u}__length`,String(k+1)),Ie(e,u),i&&Pe(e,u);continue}if(c.includes("=")){let b=c.indexOf("=");u=c.slice(0,b),f=H(e,c.slice(b+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
510
- `,n=1;continue}let g=s.has(u);if(f!==void 0){let b=e.state.env.get(u);if(e.state.tempEnvBindings){let E=e.state.accessedTempEnvVars?.has(u),k=e.state.mutatedTempEnvVars?.has(u);if(!E&&!k)for(let y=e.state.tempEnvBindings.length-1;y>=0;y--){let w=e.state.tempEnvBindings[y];if(w.has(u)){b=w.get(u);break}}}Br(e,u,b)}if(!g){let b=e.state.env.get(u);if(e.state.tempEnvBindings)for(let E=e.state.tempEnvBindings.length-1;E>=0;E--){let k=e.state.tempEnvBindings[E];if(k.has(u)){b=k.get(u);break}}if(s.set(u,b),o){let E=`${u}_`;for(let y of e.state.env.keys())y.startsWith(E)&&!y.includes("__")&&(s.has(y)||s.set(y,e.state.env.get(y)));let k=`${u}__length`;e.state.env.has(k)&&!s.has(k)&&s.set(k,e.state.env.get(k))}}if(o&&f===void 0){let b=`${u}_`;for(let E of e.state.env.keys())E.startsWith(b)&&!E.includes("__")&&e.state.env.delete(E);e.state.env.set(`${u}__length`,"0")}else if(f!==void 0){if(K(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){r+=`bash: local: \`${f}': invalid variable name for name reference
511
- `,n=1;continue}e.state.env.set(u,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(u))}else{let b=e.state.tempEnvBindings?.some(E=>E.has(u));!g&&!b&&e.state.env.delete(u)}Ie(e,u),i&&Pe(e,u)}return P("",r,n)}function Ms(e,t,s){let r=`
512
- `,n=0,i=0,o=0,a=!1,l="MAPFILE",c=0;for(;c<t.length;){let E=t[c];E==="-d"&&c+1<t.length?(r=t[c+1]===""?"\0":t[c+1]||`
513
- `,c+=2):E==="-n"&&c+1<t.length?(n=Number.parseInt(t[c+1],10)||0,c+=2):E==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):E==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):E==="-t"?(a=!0,c++):E==="-u"||E==="-C"||E==="-c"?c+=2:(E.startsWith("-")||(l=E),c++)}let u=s;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=u,h=0,m=0,p=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let E=d.indexOf(r);if(E===-1){if(d.length>0){if(m<o)m++;else if(n===0||h<n){if(i+h>=p)return P("",`mapfile: array element limit exceeded (${p})
514
- `,1);let w=d,v=w.indexOf("\0");v!==-1&&(w=w.substring(0,v)),f.push(w),h++}}break}let k=d.substring(0,E),y=k.indexOf("\0");if(y!==-1&&(k=k.substring(0,y)),!a&&r!=="\0"&&(k+=r),d=d.substring(E+r.length),m<o){m++;continue}if(n>0&&h>=n)break;if(i+h>=p)return P("",`mapfile: array element limit exceeded (${p})
515
- `,1);f.push(k),h++}i===0&&ve(e,l);for(let E=0;E<f.length;E++)e.state.env.set(`${l}_${i+E}`,f[E]);let g=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(g,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),P("","",0)}function Ki(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}function Yi(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function Ws(e,t,s,r=-1){let n=!1,i=`
516
- `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,m=!1,p=(A,C)=>{let N=1;for(;N<A.length;){let $=A[N];if($==="r")n=!0,N++;else if($==="s")N++;else{if($==="d")return N+1<A.length?(i=A.substring(N+1),{nextArgIndex:C+1}):C+1<t.length?(i=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if($==="n"){if(N+1<A.length){let O=A.substring(N+1);return a=Number.parseInt(O,10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:C+1}}else if(C+1<t.length)return a=Number.parseInt(t[C+1],10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if($==="N"){if(N+1<A.length){let O=A.substring(N+1);return l=Number.parseInt(O,10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:C+1}}else if(C+1<t.length)return l=Number.parseInt(t[C+1],10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else{if($==="a")return N+1<A.length?(c=A.substring(N+1),{nextArgIndex:C+1}):C+1<t.length?(c=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if($==="p")return N+1<A.length?(o=A.substring(N+1),{nextArgIndex:C+1}):C+1<t.length?(o=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if($==="u"){if(N+1<A.length){let O=A.substring(N+1);return u=Number.parseInt(O,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:C+1}}else if(C+1<t.length)return u=Number.parseInt(t[C+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if($==="t"){if(N+1<A.length){let O=A.substring(N+1);return f=Number.parseFloat(O),Number.isNaN(f)&&(f=0),{nextArgIndex:C+1}}else if(C+1<t.length)return f=Number.parseFloat(t[C+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if($==="e"||$==="i"||$==="P"){if($==="i"&&C+1<t.length)return{nextArgIndex:C+2};N++}else N++}}}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&&c===null&&d.push("REPLY"),f===0){if(c)ve(e,c);else{for(let A of d)e.state.env.set(A,"");d.length===0&&e.state.env.set("REPLY","")}return P("","",0)}if(f<0&&f!==-1)return P("","",1);let g=s;u>=0?e.state.fileDescriptors?g=e.state.fileDescriptors.get(u)||"":g="":!g&&e.state.groupStdin!==void 0&&(g=e.state.groupStdin);let b=i===""?"\0":i,E="",k=0,y=!0,w=A=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,g.substring(A));else if(r>=0&&e.state.fileDescriptors){let C=e.state.fileDescriptors.get(r);if(C?.startsWith("__rw__:")){let N=Ki(C);if(N){let $=N.position+A;e.state.fileDescriptors.set(r,Yi(N.path,$,N.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=g.substring(A))};if(l>=0){let A=Math.min(l,g.length);E=g.substring(0,A),k=A,y=A>=l,w(k);let C=d[0]||"REPLY";e.state.env.set(C,E);for(let N=1;N<d.length;N++)e.state.env.set(d[N],"");return P("","",y?0:1)}else if(a>=0){let A=0,C=0,N=!1;for(;C<g.length&&A<a;){let $=g[C];if($===b){k=C+1,N=!0;break}if(!n&&$==="\\"&&C+1<g.length){let O=g[C+1];if(O===b&&b===`
517
- `){C+=2,k=C;continue}if(O===b){C+=2,A++,E+=O,k=C;continue}E+=O,C+=2,A++,k=C}else E+=$,C++,A++,k=C}y=A>=a||N,w(k)}else{k=0;let A=0;for(;A<g.length;){let C=g[A];if(C===b){k=A+b.length,y=!0;break}if(!n&&C==="\\"&&A+1<g.length){let N=g[A+1];if(N===`
518
- `){A+=2;continue}if(N===b){E+=N,A+=2;continue}E+=C,E+=N,A+=2;continue}E+=C,A++}if(A>=g.length&&(y=!1,k=A,E.length===0&&g.length===0)){for(let C of d)e.state.env.set(C,"");return c&&ve(e,c),P("","",1)}w(k)}b===`
519
- `&&E.endsWith(`
520
- `)&&(E=E.slice(0,-1));let v=A=>n?A:A.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",v(E)),P("","",y?0:1);let _=ir(e.state.env);if(c){let{words:A}=Xt(E,_,void 0,n),C=e.limits?.maxArrayElements??1e5;if(A.length>C)return P("",`read: array element limit exceeded (${C})
521
- `,1);ve(e,c);for(let N=0;N<A.length;N++)e.state.env.set(`${c}_${N}`,v(A[N]));return P("","",y?0:1)}let T=d.length,{words:D,wordStarts:I}=Xt(E,_,T,n);for(let A=0;A<d.length;A++){let C=d[A];if(A<d.length-1)e.state.env.set(C,v(D[A]??""));else if(A<I.length){let N=E.substring(I[A]);N=or(N,_,n),N=v(N),e.state.env.set(C,N)}else e.state.env.set(C,"")}return P("","",y?0:1)}function zs(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 r=t[0],n=Number.parseInt(r,10);if(r===""||Number.isNaN(n)||!/^-?\d+$/.test(r))return S(`bash: return: ${r}: numeric argument required
508
+ `)}return _(c,"",0)}for(let c of l){let u,f,d=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){u=d[1];let S=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
509
+ `,n=1;continue}if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let y=`${u}_`;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 v=`${u}_`;for(let y of e.state.env.keys())y.startsWith(v)&&!y.includes("__")&&e.state.env.delete(y);let C=Ee(S);for(let y=0;y<C.length;y++)e.state.env.set(`${u}_${y}`,C[y]);e.state.env.set(`${u}__length`,String(C.length)),Ie(e,u),i&&Pe(e,u);continue}let h=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){u=h[1];let S=h[2];if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let E=`${u}_`;for(let N of e.state.env.keys())N.startsWith(E)&&!N.includes("__")&&(s.has(N)||s.set(N,e.state.env.get(N)));let T=`${u}__length`;e.state.env.has(T)&&!s.has(T)&&s.set(T,e.state.env.get(T))}let v=Ee(S),C=Q(e,u),y=0,w=e.state.env.get(u);C.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),y=1):C.length>0&&(y=Math.max(...C)+1);for(let E=0;E<v.length;E++)e.state.env.set(`${u}_${y+E}`,H(e,v[E]));let b=y+v.length;e.state.env.set(`${u}__length`,String(b)),Ie(e,u),i&&Pe(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){u=m[1];let S=H(e,m[2]);K(e,u,"bash"),s.has(u)||s.set(u,e.state.env.get(u));let v=e.state.env.get(u)??"";e.state.env.set(u,v+S),Ie(e,u),i&&Pe(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){u=p[1];let S=p[2],v=H(e,p[3]);if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let w=`${u}_`;for(let E of e.state.env.keys())E.startsWith(w)&&!E.includes("__")&&(s.has(E)||s.set(E,e.state.env.get(E)));let b=`${u}__length`;e.state.env.has(b)&&!s.has(b)&&s.set(b,e.state.env.get(b))}let C;try{let w=new W,b=Z(w,S);C=await V(e,b.expression)}catch{let w=parseInt(S,10);C=Number.isNaN(w)?0:w}e.state.env.set(`${u}_${C}`,v);let y=parseInt(e.state.env.get(`${u}__length`)??"0",10);C>=y&&e.state.env.set(`${u}__length`,String(C+1)),Ie(e,u),i&&Pe(e,u);continue}if(c.includes("=")){let S=c.indexOf("=");u=c.slice(0,S),f=H(e,c.slice(S+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
510
+ `,n=1;continue}let g=s.has(u);if(f!==void 0){let S=e.state.env.get(u);if(e.state.tempEnvBindings){let v=e.state.accessedTempEnvVars?.has(u),C=e.state.mutatedTempEnvVars?.has(u);if(!v&&!C)for(let y=e.state.tempEnvBindings.length-1;y>=0;y--){let w=e.state.tempEnvBindings[y];if(w.has(u)){S=w.get(u);break}}}jr(e,u,S)}if(!g){let S=e.state.env.get(u);if(e.state.tempEnvBindings)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let C=e.state.tempEnvBindings[v];if(C.has(u)){S=C.get(u);break}}if(s.set(u,S),o){let v=`${u}_`;for(let y of e.state.env.keys())y.startsWith(v)&&!y.includes("__")&&(s.has(y)||s.set(y,e.state.env.get(y)));let C=`${u}__length`;e.state.env.has(C)&&!s.has(C)&&s.set(C,e.state.env.get(C))}}if(o&&f===void 0){let S=`${u}_`;for(let v of e.state.env.keys())v.startsWith(S)&&!v.includes("__")&&e.state.env.delete(v);e.state.env.set(`${u}__length`,"0")}else if(f!==void 0){if(K(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){r+=`bash: local: \`${f}': invalid variable name for name reference
511
+ `,n=1;continue}e.state.env.set(u,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(u))}else{let S=e.state.tempEnvBindings?.some(v=>v.has(u));!g&&!S&&e.state.env.delete(u)}Ie(e,u),i&&Pe(e,u)}return _("",r,n)}function Ws(e,t,s){let r=`
512
+ `,n=0,i=0,o=0,a=!1,l="MAPFILE",c=0;for(;c<t.length;){let v=t[c];v==="-d"&&c+1<t.length?(r=t[c+1]===""?"\0":t[c+1]||`
513
+ `,c+=2):v==="-n"&&c+1<t.length?(n=Number.parseInt(t[c+1],10)||0,c+=2):v==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):v==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):v==="-t"?(a=!0,c++):v==="-u"||v==="-C"||v==="-c"?c+=2:(v.startsWith("-")||(l=v),c++)}let u=s;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=u,h=0,m=0,p=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let v=d.indexOf(r);if(v===-1){if(d.length>0){if(m<o)m++;else if(n===0||h<n){if(i+h>=p)return _("",`mapfile: array element limit exceeded (${p})
514
+ `,1);let w=d,b=w.indexOf("\0");b!==-1&&(w=w.substring(0,b)),f.push(w),h++}}break}let C=d.substring(0,v),y=C.indexOf("\0");if(y!==-1&&(C=C.substring(0,y)),!a&&r!=="\0"&&(C+=r),d=d.substring(v+r.length),m<o){m++;continue}if(n>0&&h>=n)break;if(i+h>=p)return _("",`mapfile: array element limit exceeded (${p})
515
+ `,1);f.push(C),h++}i===0&&ve(e,l);for(let v=0;v<f.length;v++)e.state.env.set(`${l}_${i+v}`,f[v]);let g=parseInt(e.state.env.get(`${l}__length`)||"0",10),S=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(g,S))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),_("","",0)}function Yi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}function Qi(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function zs(e,t,s,r=-1){let n=!1,i=`
516
+ `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,m=!1,p=(P,k)=>{let O=1;for(;O<P.length;){let $=P[O];if($==="r")n=!0,O++;else if($==="s")O++;else{if($==="d")return O+1<P.length?(i=P.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(i=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if($==="n"){if(O+1<P.length){let x=P.substring(O+1);return a=Number.parseInt(x,10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:k+1}}else if(k+1<t.length)return a=Number.parseInt(t[k+1],10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:k+2};return{nextArgIndex:k+1}}else if($==="N"){if(O+1<P.length){let x=P.substring(O+1);return l=Number.parseInt(x,10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:k+1}}else if(k+1<t.length)return l=Number.parseInt(t[k+1],10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:k+2};return{nextArgIndex:k+1}}else{if($==="a")return O+1<P.length?(c=P.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(c=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if($==="p")return O+1<P.length?(o=P.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(o=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if($==="u"){if(O+1<P.length){let x=P.substring(O+1);return u=Number.parseInt(x,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:k+1}}else if(k+1<t.length)return u=Number.parseInt(t[k+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:k+2};return{nextArgIndex:k+1}}else if($==="t"){if(O+1<P.length){let x=P.substring(O+1);return f=Number.parseFloat(x),Number.isNaN(f)&&(f=0),{nextArgIndex:k+1}}else if(k+1<t.length)return f=Number.parseFloat(t[k+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:k+2};return{nextArgIndex:k+1}}else if($==="e"||$==="i"||$==="P"){if($==="i"&&k+1<t.length)return{nextArgIndex:k+2};O++}else O++}}}return{nextArgIndex:k+1}};for(;h<t.length;){let P=t[h];if(P.startsWith("-")&&P.length>1&&P!=="--"){let k=p(P,h);if(k.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(k.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=k.nextArgIndex}else if(P==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(P),h++}if(m)return _("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)ve(e,c);else{for(let P of d)e.state.env.set(P,"");d.length===0&&e.state.env.set("REPLY","")}return _("","",0)}if(f<0&&f!==-1)return _("","",1);let g=s;u>=0?e.state.fileDescriptors?g=e.state.fileDescriptors.get(u)||"":g="":!g&&e.state.groupStdin!==void 0&&(g=e.state.groupStdin);let S=i===""?"\0":i,v="",C=0,y=!0,w=P=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,g.substring(P));else if(r>=0&&e.state.fileDescriptors){let k=e.state.fileDescriptors.get(r);if(k?.startsWith("__rw__:")){let O=Yi(k);if(O){let $=O.position+P;e.state.fileDescriptors.set(r,Qi(O.path,$,O.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=g.substring(P))};if(l>=0){let P=Math.min(l,g.length);v=g.substring(0,P),C=P,y=P>=l,w(C);let k=d[0]||"REPLY";e.state.env.set(k,v);for(let O=1;O<d.length;O++)e.state.env.set(d[O],"");return _("","",y?0:1)}else if(a>=0){let P=0,k=0,O=!1;for(;k<g.length&&P<a;){let $=g[k];if($===S){C=k+1,O=!0;break}if(!n&&$==="\\"&&k+1<g.length){let x=g[k+1];if(x===S&&S===`
517
+ `){k+=2,C=k;continue}if(x===S){k+=2,P++,v+=x,C=k;continue}v+=x,k+=2,P++,C=k}else v+=$,k++,P++,C=k}y=P>=a||O,w(C)}else{C=0;let P=0;for(;P<g.length;){let k=g[P];if(k===S){C=P+S.length,y=!0;break}if(!n&&k==="\\"&&P+1<g.length){let O=g[P+1];if(O===`
518
+ `){P+=2;continue}if(O===S){v+=O,P+=2;continue}v+=k,v+=O,P+=2;continue}v+=k,P++}if(P>=g.length&&(y=!1,C=P,v.length===0&&g.length===0)){for(let k of d)e.state.env.set(k,"");return c&&ve(e,c),_("","",1)}w(C)}S===`
519
+ `&&v.endsWith(`
520
+ `)&&(v=v.slice(0,-1));let b=P=>n?P:P.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",b(v)),_("","",y?0:1);let E=or(e.state.env);if(c){let{words:P}=Kt(v,E,void 0,n),k=e.limits?.maxArrayElements??1e5;if(P.length>k)return _("",`read: array element limit exceeded (${k})
521
+ `,1);ve(e,c);for(let O=0;O<P.length;O++)e.state.env.set(`${c}_${O}`,b(P[O]));return _("","",y?0:1)}let T=d.length,{words:N,wordStarts:I}=Kt(v,E,T,n);for(let P=0;P<d.length;P++){let k=d[P];if(P<d.length-1)e.state.env.set(k,b(N[P]??""));else if(P<I.length){let O=v.substring(I[P]);O=ar(O,E,n),O=b(O),e.state.env.set(k,O)}else e.state.env.set(k,"")}return _("","",y?0:1)}function Vs(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return A("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let r=t[0],n=Number.parseInt(r,10);if(r===""||Number.isNaN(n)||!/^-?\d+$/.test(r))return A(`bash: return: ${r}: numeric argument required
522
522
  `,2);s=(n%256+256)%256}throw new ne(s)}var Wt=`set: usage: set [-eux] [+eux] [-o option] [+o option]
523
523
  Options:
524
524
  -e Exit immediately if a command exits with non-zero status
@@ -535,73 +535,73 @@ Options:
535
535
  +o pipefail Disable pipefail
536
536
  -o xtrace Same as -x
537
537
  +o xtrace Disable xtrace
538
- `,on=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]]),an=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]]),ln=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],cn=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function un(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,Be(e))}function Qi(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Ji(e,t){let s=Q(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${n}]=${We(i)}`});return`${t}=(${r.join(" ")})`}function eo(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function to(e,t){let s=Te(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${eo(n)}]=${We(i)}`});return`${t}=(${r.join(" ")} )`}function so(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let r of e.state.env.keys()){let n=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(n){let i=n[1];s.has(i)||t.add(i)}}return t}function ro(e){return e.state.associativeArrays??new Set}function Bs(e,t){if(t.includes("--help"))return F(Wt);if(t.length===0){let r=so(e),n=ro(e),i=l=>{for(let c of n){let u=`${c}_`,f=`${c}__length`;if(l!==f&&l.startsWith(u)){if(l.slice(u.length).startsWith("_length"))continue;return!0}}return!1},o=[];for(let[l,c]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l)||r.has(l)||n.has(l))continue;let u=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(u&&r.has(u[1]))continue;let f=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);f&&r.has(f[1])||i(l)||f&&n.has(f[1])||o.push([l,c])}let a=[];for(let[l,c]of o.sort(([u],[f])=>u<f?-1:u>f?1:0))a.push(`${l}=${Lt(c)}`);for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push(Ji(e,l));for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))a.push(to(e,l));return a.sort((l,c)=>{let u=l.split("=")[0],f=c.split("=")[0];return u<f?-1:u>f?1:0}),F(a.length>0?`${a.join(`
538
+ `,an=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]]),ln=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]]),cn=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],un=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function fn(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,Be(e))}function Ji(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function eo(e,t){let s=Q(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${n}]=${We(i)}`});return`${t}=(${r.join(" ")})`}function to(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function so(e,t){let s=xe(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${to(n)}]=${We(i)}`});return`${t}=(${r.join(" ")} )`}function ro(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let r of e.state.env.keys()){let n=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(n){let i=n[1];s.has(i)||t.add(i)}}return t}function no(e){return e.state.associativeArrays??new Set}function js(e,t){if(t.includes("--help"))return F(Wt);if(t.length===0){let r=ro(e),n=no(e),i=l=>{for(let c of n){let u=`${c}_`,f=`${c}__length`;if(l!==f&&l.startsWith(u)){if(l.slice(u.length).startsWith("_length"))continue;return!0}}return!1},o=[];for(let[l,c]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l)||r.has(l)||n.has(l))continue;let u=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(u&&r.has(u[1]))continue;let f=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);f&&r.has(f[1])||i(l)||f&&n.has(f[1])||o.push([l,c])}let a=[];for(let[l,c]of o.sort(([u],[f])=>u<f?-1:u>f?1:0))a.push(`${l}=${Lt(c)}`);for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push(eo(e,l));for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))a.push(so(e,l));return a.sort((l,c)=>{let u=l.split("=")[0],f=c.split("=")[0];return u<f?-1:u>f?1:0}),F(a.length>0?`${a.join(`
539
539
  `)}
540
- `:"")}let s=0;for(;s<t.length;){let r=t[s];if((r==="-o"||r==="+o")&&Qi(t,s)){let n=t[s+1];if(!an.has(n)){let i=`bash: set: ${n}: invalid option name
541
- ${Wt}`;if(e.state.options.posix)throw new pe(1,"",i);return S(i)}un(e,an.get(n)??null,r==="-o"),s+=2;continue}if(r==="-o"){let n=ln.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=cn.map(a=>`${a.padEnd(16)}off`),o=[...n,...i].sort();return F(`${o.join(`
540
+ `:"")}let s=0;for(;s<t.length;){let r=t[s];if((r==="-o"||r==="+o")&&Ji(t,s)){let n=t[s+1];if(!ln.has(n)){let i=`bash: set: ${n}: invalid option name
541
+ ${Wt}`;if(e.state.options.posix)throw new pe(1,"",i);return A(i)}fn(e,ln.get(n)??null,r==="-o"),s+=2;continue}if(r==="-o"){let n=cn.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=un.map(a=>`${a.padEnd(16)}off`),o=[...n,...i].sort();return F(`${o.join(`
542
542
  `)}
543
- `)}if(r==="+o"){let n=ln.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=cn.map(a=>`set +o ${a}`),o=[...n,...i].sort();return F(`${o.join(`
543
+ `)}if(r==="+o"){let n=cn.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=un.map(a=>`set +o ${a}`),o=[...n,...i].sort();return F(`${o.join(`
544
544
  `)}
545
- `)}if(r.length>1&&(r[0]==="-"||r[0]==="+")&&r[1]!=="-"){let n=r[0]==="-";for(let i=1;i<r.length;i++){let o=r[i];if(!on.has(o)){let a=`bash: set: ${r[0]}${o}: invalid option
546
- ${Wt}`;if(e.state.options.posix)throw new pe(1,"",a);return S(a)}un(e,on.get(o)??null,n)}s++;continue}if(r==="--")return Vs(e,t.slice(s+1)),L;if(r==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Be(e),s+1<t.length)return Vs(e,t.slice(s+1)),L;s++;continue}if(r==="+"){s++;continue}if(r.startsWith("-")||r.startsWith("+")){let n=`bash: set: ${r}: invalid option
547
- ${Wt}`;if(e.state.options.posix)throw new pe(1,"",n);return S(n)}return Vs(e,t.slice(s)),L}return L}function Vs(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let r=0;r<t.length;r++)e.state.env.set(String(r+1),t[r]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function js(e,t){let s=1;if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)||o<0){let a=`bash: shift: ${t[0]}: numeric argument required
548
- `;if(e.state.options.posix)throw new pe(1,"",a);return S(a)}s=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(s>r){let o=`bash: shift: shift count out of range
549
- `;if(e.state.options.posix)throw new pe(1,"",o);return S(o)}if(s===0)return L;let n=[];for(let o=1;o<=r;o++)n.push(e.state.env.get(String(o))||"");let i=n.slice(s);for(let o=1;o<=r;o++)e.state.env.delete(String(o));for(let o=0;o<i.length;o++)e.state.env.set(String(o+1),i[o]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),L}async function Hs(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
550
- `,2);let r=s[0],n=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),n=c}catch{}}else{let u=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of u){let d=e.fs.resolvePath(e.state.cwd,`${f}/${r}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),n=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),n=f}catch{}}}if(i===null)return S(`bash: ${r}: No such file or directory
551
- `);let o=new Map;if(s.length>1){for(let u=1;u<=9;u++)o.set(String(u),e.state.env.get(String(u)));o.set("#",e.state.env.get("#")),o.set("@",e.state.env.get("@"));let c=s.slice(1);e.state.env.set("#",String(c.length)),e.state.env.set("@",c.join(" "));for(let u=0;u<c.length&&u<9;u++)e.state.env.set(String(u+1),c[u]);for(let u=c.length+1;u<=9;u++)e.state.env.delete(String(u))}let a=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=a,s.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};e.state.sourceDepth++,e.state.currentSource=r;try{let c=we(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof z)throw c;if(c instanceof ne)return P(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return S(`bash: ${r}: ${c.message}
552
- `);throw c}}function fn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function no(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function dn(e,t){if(no(t))return null;try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function hn(e,t){if(e.state.localVarStack?.has(t)){let r=xt(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let n=e.state.localVarStack?.get(t);if(!n||n.length===0)Dt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),Us(e,t);else{let i=n[n.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),Dt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let r=e.state.localScopes.length-1;r>=0;r--){let n=e.state.localScopes[r];if(n.has(t)){let i=n.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),n.delete(t);let o=!1;for(let a=r-1;a>=0;a--)if(e.state.localScopes[a].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,a+1),o=!0;break}return o||Dt(e,t),!0}}return!1}function Us(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 r=e.state.tempEnvBindings[s];if(r.has(t)){let n=r.get(t);return n===void 0?e.state.env.delete(t):e.state.env.set(t,n),r.delete(t),!0}}return!1}async function pn(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),n=new W().parseWordFromString(s,!0,!1);return x(e,n)}if(t.includes("$")){let r=new W().parseWordFromString(t,!1,!1);return x(e,r)}return t}async function qs(e,t){let s="both",r="",n=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 c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],h=c[2];if(h==="@"||h==="*"){let k=ye(e,d);for(let[y]of k)e.state.env.delete(`${d}_${y}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let k=await pn(e,h);e.state.env.delete(`${d}_${k}`);continue}let p=Qt(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){r+=`bash: unset: ${d}: not an array variable
553
- `,n=1;continue}let E=await dn(e,h);if(E===null&&p){r+=`bash: unset: ${h}: not a valid identifier
554
- `,n=1;continue}if(E===null)continue;if(E<0){let k=ye(e,d),y=k.length,w=e.state.currentLine;if(y===0){r+=`bash: line ${w}: unset: [${E}]: bad array subscript
555
- `,n=1;continue}let v=y+E;if(v<0){r+=`bash: line ${w}: unset: [${E}]: bad array subscript
556
- `,n=1;continue}let _=k[v][0];e.state.env.delete(`${d}_${_}`);continue}e.state.env.delete(`${d}_${E}`);continue}if(!fn(i)){r+=`bash: unset: \`${i}': not a valid identifier
557
- `,n=1;continue}let u=i;if(de(e,i)){let d=De(e,i);d&&d!==i&&(u=d)}if(Le(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
558
- `,n=1;continue}let f=He(e,u);if(f!==void 0&&f!==e.state.callDepth)hn(e,u);else if(e.state.fullyUnsetLocals?.has(u))e.state.env.delete(u);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(u),h=e.state.mutatedTempEnvVars?.has(u);if((d||h)&&e.state.localVarStack?.has(u)){let m=xt(e,u);m?m.value===void 0?e.state.env.delete(u):e.state.env.set(u,m.value):e.state.env.delete(u)}else e.state.env.delete(u)}else Us(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(u==="@"||u==="*"){let p=ye(e,c);for(let[g]of p)e.state.env.delete(`${c}_${g}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let p=await pn(e,u);e.state.env.delete(`${c}_${p}`);continue}let d=Qt(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
559
- `,n=1;continue}let m=await dn(e,u);if(m===null&&d){r+=`bash: unset: ${u}: not a valid identifier
560
- `,n=1;continue}if(m===null)continue;if(m<0){let p=ye(e,c),g=p.length,b=e.state.currentLine;if(g===0){r+=`bash: line ${b}: unset: [${m}]: bad array subscript
561
- `,n=1;continue}let E=g+m;if(E<0){r+=`bash: line ${b}: unset: [${m}]: bad array subscript
562
- `,n=1;continue}let k=p[E][0];e.state.env.delete(`${c}_${k}`);continue}e.state.env.delete(`${c}_${m}`);continue}if(!fn(i)){r+=`bash: unset: \`${i}': not a valid identifier
563
- `,n=1;continue}let a=i;if(de(e,i)){let c=De(e,i);c&&c!==i&&(a=c)}if(Le(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
564
- `,n=1;continue}let l=He(e,a);if(l!==void 0&&l!==e.state.callDepth)hn(e,a);else if(e.state.fullyUnsetLocals?.has(a))e.state.env.delete(a);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(a),u=e.state.mutatedTempEnvVars?.has(a);if((c||u)&&e.state.localVarStack?.has(a)){let f=xt(e,a);f?f.value===void 0?e.state.env.delete(a):e.state.env.set(a,f.value):e.state.env.delete(a)}else e.state.env.delete(a)}else Us(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return P("",r,n)}var Zs=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],io=["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 zt(e){return Zs.includes(e)}function oo(e){return io.includes(e)}function mn(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=[],l=0;for(;l<t.length;){let d=t[l];if(d==="--"){l++;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":r=!0;break;case"p":n=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
565
- `}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return ao(e,a,s,r,n,i);if(s&&r)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
566
- `};if(a.length===0){if(s||r){let h=[];for(let m of Zs){let p=e.state.shoptOptions[m];s&&p?h.push(n?`shopt -s ${m}`:`${m} on`):r&&!p&&h.push(n?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
545
+ `)}if(r.length>1&&(r[0]==="-"||r[0]==="+")&&r[1]!=="-"){let n=r[0]==="-";for(let i=1;i<r.length;i++){let o=r[i];if(!an.has(o)){let a=`bash: set: ${r[0]}${o}: invalid option
546
+ ${Wt}`;if(e.state.options.posix)throw new pe(1,"",a);return A(a)}fn(e,an.get(o)??null,n)}s++;continue}if(r==="--")return Bs(e,t.slice(s+1)),L;if(r==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Be(e),s+1<t.length)return Bs(e,t.slice(s+1)),L;s++;continue}if(r==="+"){s++;continue}if(r.startsWith("-")||r.startsWith("+")){let n=`bash: set: ${r}: invalid option
547
+ ${Wt}`;if(e.state.options.posix)throw new pe(1,"",n);return A(n)}return Bs(e,t.slice(s)),L}return L}function Bs(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let r=0;r<t.length;r++)e.state.env.set(String(r+1),t[r]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function Hs(e,t){let s=1;if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)||o<0){let a=`bash: shift: ${t[0]}: numeric argument required
548
+ `;if(e.state.options.posix)throw new pe(1,"",a);return A(a)}s=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(s>r){let o=`bash: shift: shift count out of range
549
+ `;if(e.state.options.posix)throw new pe(1,"",o);return A(o)}if(s===0)return L;let n=[];for(let o=1;o<=r;o++)n.push(e.state.env.get(String(o))||"");let i=n.slice(s);for(let o=1;o<=r;o++)e.state.env.delete(String(o));for(let o=0;o<i.length;o++)e.state.env.set(String(o+1),i[o]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),L}async function Us(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return _("",`bash: source: filename argument required
550
+ `,2);let r=s[0],n=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),n=c}catch{}}else{let u=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of u){let d=e.fs.resolvePath(e.state.cwd,`${f}/${r}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),n=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),n=f}catch{}}}if(i===null)return A(`bash: ${r}: No such file or directory
551
+ `);let o=new Map;if(s.length>1){for(let u=1;u<=9;u++)o.set(String(u),e.state.env.get(String(u)));o.set("#",e.state.env.get("#")),o.set("@",e.state.env.get("@"));let c=s.slice(1);e.state.env.set("#",String(c.length)),e.state.env.set("@",c.join(" "));for(let u=0;u<c.length&&u<9;u++)e.state.env.set(String(u+1),c[u]);for(let u=c.length+1;u<=9;u++)e.state.env.delete(String(u))}let a=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=a,s.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};e.state.sourceDepth++,e.state.currentSource=r;try{let c=we(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof z)throw c;if(c instanceof ne)return _(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return A(`bash: ${r}: ${c.message}
552
+ `);throw c}}function dn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function io(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function hn(e,t){if(io(t))return null;try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function pn(e,t){if(e.state.localVarStack?.has(t)){let r=Dt(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let n=e.state.localVarStack?.get(t);if(!n||n.length===0)Tt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),qs(e,t);else{let i=n[n.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),Tt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let r=e.state.localScopes.length-1;r>=0;r--){let n=e.state.localScopes[r];if(n.has(t)){let i=n.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),n.delete(t);let o=!1;for(let a=r-1;a>=0;a--)if(e.state.localScopes[a].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,a+1),o=!0;break}return o||Tt(e,t),!0}}return!1}function qs(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 r=e.state.tempEnvBindings[s];if(r.has(t)){let n=r.get(t);return n===void 0?e.state.env.delete(t):e.state.env.set(t,n),r.delete(t),!0}}return!1}async function mn(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),n=new W().parseWordFromString(s,!0,!1);return D(e,n)}if(t.includes("$")){let r=new W().parseWordFromString(t,!1,!1);return D(e,r)}return t}async function Zs(e,t){let s="both",r="",n=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 c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],h=c[2];if(h==="@"||h==="*"){let C=ye(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 mn(e,h);e.state.env.delete(`${d}_${C}`);continue}let p=Jt(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){r+=`bash: unset: ${d}: not an array variable
553
+ `,n=1;continue}let v=await hn(e,h);if(v===null&&p){r+=`bash: unset: ${h}: not a valid identifier
554
+ `,n=1;continue}if(v===null)continue;if(v<0){let C=ye(e,d),y=C.length,w=e.state.currentLine;if(y===0){r+=`bash: line ${w}: unset: [${v}]: bad array subscript
555
+ `,n=1;continue}let b=y+v;if(b<0){r+=`bash: line ${w}: unset: [${v}]: bad array subscript
556
+ `,n=1;continue}let E=C[b][0];e.state.env.delete(`${d}_${E}`);continue}e.state.env.delete(`${d}_${v}`);continue}if(!dn(i)){r+=`bash: unset: \`${i}': not a valid identifier
557
+ `,n=1;continue}let u=i;if(de(e,i)){let d=Te(e,i);d&&d!==i&&(u=d)}if(Le(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
558
+ `,n=1;continue}let f=He(e,u);if(f!==void 0&&f!==e.state.callDepth)pn(e,u);else if(e.state.fullyUnsetLocals?.has(u))e.state.env.delete(u);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(u),h=e.state.mutatedTempEnvVars?.has(u);if((d||h)&&e.state.localVarStack?.has(u)){let m=Dt(e,u);m?m.value===void 0?e.state.env.delete(u):e.state.env.set(u,m.value):e.state.env.delete(u)}else e.state.env.delete(u)}else qs(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(u==="@"||u==="*"){let p=ye(e,c);for(let[g]of p)e.state.env.delete(`${c}_${g}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let p=await mn(e,u);e.state.env.delete(`${c}_${p}`);continue}let d=Jt(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
559
+ `,n=1;continue}let m=await hn(e,u);if(m===null&&d){r+=`bash: unset: ${u}: not a valid identifier
560
+ `,n=1;continue}if(m===null)continue;if(m<0){let p=ye(e,c),g=p.length,S=e.state.currentLine;if(g===0){r+=`bash: line ${S}: unset: [${m}]: bad array subscript
561
+ `,n=1;continue}let v=g+m;if(v<0){r+=`bash: line ${S}: unset: [${m}]: bad array subscript
562
+ `,n=1;continue}let C=p[v][0];e.state.env.delete(`${c}_${C}`);continue}e.state.env.delete(`${c}_${m}`);continue}if(!dn(i)){r+=`bash: unset: \`${i}': not a valid identifier
563
+ `,n=1;continue}let a=i;if(de(e,i)){let c=Te(e,i);c&&c!==i&&(a=c)}if(Le(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
564
+ `,n=1;continue}let l=He(e,a);if(l!==void 0&&l!==e.state.callDepth)pn(e,a);else if(e.state.fullyUnsetLocals?.has(a))e.state.env.delete(a);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(a),u=e.state.mutatedTempEnvVars?.has(a);if((c||u)&&e.state.localVarStack?.has(a)){let f=Dt(e,a);f?f.value===void 0?e.state.env.delete(a):e.state.env.set(a,f.value):e.state.env.delete(a)}else e.state.env.delete(a)}else qs(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return _("",r,n)}var Gs=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],oo=["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 zt(e){return Gs.includes(e)}function ao(e){return oo.includes(e)}function yn(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=[],l=0;for(;l<t.length;){let d=t[l];if(d==="--"){l++;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":r=!0;break;case"p":n=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
565
+ `}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return lo(e,a,s,r,n,i);if(s&&r)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
566
+ `};if(a.length===0){if(s||r){let h=[];for(let m of Gs){let p=e.state.shoptOptions[m];s&&p?h.push(n?`shopt -s ${m}`:`${m} on`):r&&!p&&h.push(n?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
567
567
  `)}
568
- `:"",stderr:""}}let d=[];for(let h of Zs){let m=e.state.shoptOptions[h];d.push(n?`shopt ${m?"-s":"-u"} ${h}`:`${h} ${m?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
568
+ `:"",stderr:""}}let d=[];for(let h of Gs){let m=e.state.shoptOptions[h];d.push(n?`shopt ${m?"-s":"-u"} ${h}`:`${h} ${m?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
569
569
  `)}
570
- `,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!zt(d)&&!oo(d)){u+=`shopt: ${d}: invalid shell option name
571
- `,c=!0;continue}if(s)zt(d)&&(e.state.shoptOptions[d]=!0,rs(e));else if(r)zt(d)&&(e.state.shoptOptions[d]=!1,rs(e));else if(zt(d)){let h=e.state.shoptOptions[d];i?h||(c=!0):n?(f.push(`shopt ${h?"-s":"-u"} ${d}`),h||(c=!0)):(f.push(`${d} ${h?"on":"off"}`),h||(c=!0))}else i?c=!0:n?(f.push(`shopt -u ${d}`),c=!0):(f.push(`${d} off`),c=!0)}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
570
+ `,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!zt(d)&&!ao(d)){u+=`shopt: ${d}: invalid shell option name
571
+ `,c=!0;continue}if(s)zt(d)&&(e.state.shoptOptions[d]=!0,ns(e));else if(r)zt(d)&&(e.state.shoptOptions[d]=!1,ns(e));else if(zt(d)){let h=e.state.shoptOptions[d];i?h||(c=!0):n?(f.push(`shopt ${h?"-s":"-u"} ${d}`),h||(c=!0)):(f.push(`${d} ${h?"on":"off"}`),h||(c=!0))}else i?c=!0:n?(f.push(`shopt -u ${d}`),c=!0):(f.push(`${d} off`),c=!0)}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
572
572
  `)}
573
- `:"",stderr:u}}function ao(e,t,s,r,n,i){let o=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"]]),a=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],l=[...o.keys(),...a].sort();if(t.length===0){let d=[];for(let h of l){let m=a.includes(h),p=o.get(h),g=m||!p?!1:e.state.options[p];s&&!g||r&&g||d.push(n?`set ${g?"-o":"+o"} ${h}`:`${h} ${g?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
573
+ `:"",stderr:u}}function lo(e,t,s,r,n,i){let o=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"]]),a=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],l=[...o.keys(),...a].sort();if(t.length===0){let d=[];for(let h of l){let m=a.includes(h),p=o.get(h),g=m||!p?!1:e.state.options[p];s&&!g||r&&g||d.push(n?`set ${g?"-o":"+o"} ${h}`:`${h} ${g?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
574
574
  `)}
575
575
  `:"",stderr:""}}let c=!1,u="",f=[];for(let d of t){let h=o.has(d),m=a.includes(d);if(!h&&!m){u+=`shopt: ${d}: invalid option name
576
576
  `,c=!0;continue}if(m){s||r||(i?c=!0:n?(f.push(`set +o ${d}`),c=!0):(f.push(`${d} off`),c=!0));continue}let p=o.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,Be(e);else if(r)e.state.options[p]=!1,Be(e);else{let g=e.state.options[p];i?g||(c=!0):n?(f.push(`set ${g?"-o":"+o"} ${d}`),g||(c=!0)):(f.push(`${d} ${g?"on":"off"}`),g||(c=!0))}}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
577
577
  `)}
578
- `:"",stderr:u}}async function yn(e,t,s){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};let a=o.split("/").pop()||t,l=e.commands.get(a);try{let c=await e.fs.stat(o);return c.isDirectory?{error:"permission_denied",path:o}:l?{cmd:l,path:o}:(c.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!s&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o)if(await e.fs.exists(o)){let a=e.commands.get(t);if(a)return{cmd:a,path:o};try{let l=await e.fs.stat(o);if(!l.isDirectory&&(l.mode&73)!==0)return{script:!0,path:o}}catch{}}else e.state.hashTable.delete(t)}let n=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of n){if(!o)continue;let l=`${o.startsWith("/")?o:e.fs.resolvePath(e.state.cwd,o)}/${t}`;if(await e.fs.exists(l))try{let c=await e.fs.stat(l);if(c.isDirectory)continue;let u=(c.mode&73)!==0,f=e.commands.get(t),d=o==="/bin"||o==="/usr/bin";if(f&&d)return{cmd:f,path:l};if(u){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let o=e.commands.get(t);if(o)return{cmd:o,path:`/usr/bin/${t}`}}return null}async function Vt(e,t){let s=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let o=await e.fs.stat(i);o.isDirectory||(o.mode&73)!==0&&s.push(t)}catch{}return s}let n=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of n){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?a:`${i}/${t}`)}}return s}async function bn(e,t,s,r){let n=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let g of p.slice(1))g==="t"?n=!0:g==="p"?i=!0:g==="P"?o=!0:g==="a"?a=!0:g==="f"&&(l=!0);else c.push(p);let u="",f="",d=0,h=!1,m=!1;for(let p of c){let g=!1;if(o){if(a){let v=await r(p);if(v.length>0){for(let _ of v)u+=`${_}
579
- `;h=!0,g=!0}}else{let v=await s(p);v&&(u+=`${v}
580
- `,h=!0,g=!0)}g||(m=!0);continue}let b=!l&&e.state.functions.has(p);if(a&&b){if(!i)if(n)u+=`function
581
- `;else{let v=e.state.functions.get(p),_=v?gn(p,v):`${p} is a function
582
- `;u+=_}g=!0}let E=e.state.env.get(`BASH_ALIAS_${p}`);if(E!==void 0&&(a||!g)&&(i||(n?u+=`alias
583
- `:u+=`${p} is aliased to \`${E}'
584
- `),g=!0,!a)||fs.has(p)&&(a||!g)&&(i||(n?u+=`keyword
578
+ `:"",stderr:u}}async function gn(e,t,s){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};let a=o.split("/").pop()||t,l=e.commands.get(a);try{let c=await e.fs.stat(o);return c.isDirectory?{error:"permission_denied",path:o}:l?{cmd:l,path:o}:(c.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!s&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o)if(await e.fs.exists(o)){let a=e.commands.get(t);if(a)return{cmd:a,path:o};try{let l=await e.fs.stat(o);if(!l.isDirectory&&(l.mode&73)!==0)return{script:!0,path:o}}catch{}}else e.state.hashTable.delete(t)}let n=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of n){if(!o)continue;let l=`${o.startsWith("/")?o:e.fs.resolvePath(e.state.cwd,o)}/${t}`;if(await e.fs.exists(l))try{let c=await e.fs.stat(l);if(c.isDirectory)continue;let u=(c.mode&73)!==0,f=e.commands.get(t),d=o==="/bin"||o==="/usr/bin";if(f&&d)return{cmd:f,path:l};if(u){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let o=e.commands.get(t);if(o)return{cmd:o,path:`/usr/bin/${t}`}}return null}async function Vt(e,t){let s=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let o=await e.fs.stat(i);o.isDirectory||(o.mode&73)!==0&&s.push(t)}catch{}return s}let n=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of n){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?a:`${i}/${t}`)}}return s}async function En(e,t,s,r){let n=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let g of p.slice(1))g==="t"?n=!0:g==="p"?i=!0:g==="P"?o=!0:g==="a"?a=!0:g==="f"&&(l=!0);else c.push(p);let u="",f="",d=0,h=!1,m=!1;for(let p of c){let g=!1;if(o){if(a){let b=await r(p);if(b.length>0){for(let E of b)u+=`${E}
579
+ `;h=!0,g=!0}}else{let b=await s(p);b&&(u+=`${b}
580
+ `,h=!0,g=!0)}g||(m=!0);continue}let S=!l&&e.state.functions.has(p);if(a&&S){if(!i)if(n)u+=`function
581
+ `;else{let b=e.state.functions.get(p),E=b?wn(p,b):`${p} is a function
582
+ `;u+=E}g=!0}let v=e.state.env.get(`BASH_ALIAS_${p}`);if(v!==void 0&&(a||!g)&&(i||(n?u+=`alias
583
+ `:u+=`${p} is aliased to \`${v}'
584
+ `),g=!0,!a)||ds.has(p)&&(a||!g)&&(i||(n?u+=`keyword
585
585
  `:u+=`${p} is a shell keyword
586
- `),g=!0,!a))continue;if(!a&&b&&!g){if(!i)if(n)u+=`function
587
- `;else{let v=e.state.functions.get(p),_=v?gn(p,v):`${p} is a function
588
- `;u+=_}g=!0;continue}if(!(nt.has(p)&&(a||!g)&&(i||(n?u+=`builtin
586
+ `),g=!0,!a))continue;if(!a&&S&&!g){if(!i)if(n)u+=`function
587
+ `;else{let b=e.state.functions.get(p),E=b?wn(p,b):`${p} is a function
588
+ `;u+=E}g=!0;continue}if(!(nt.has(p)&&(a||!g)&&(i||(n?u+=`builtin
589
589
  `:u+=`${p} is a shell builtin
590
- `),g=!0,!a))){if(a){let v=await r(p);for(let _ of v)i?u+=`${_}
590
+ `),g=!0,!a))){if(a){let b=await r(p);for(let E of b)i?u+=`${E}
591
591
  `:n?u+=`file
592
- `:u+=`${p} is ${_}
593
- `,h=!0,g=!0}else if(!g){let v=await s(p);v&&(i?u+=`${v}
592
+ `:u+=`${p} is ${E}
593
+ `,h=!0,g=!0}else if(!g){let b=await s(p);b&&(i?u+=`${b}
594
594
  `:n?u+=`file
595
- `:u+=`${p} is ${v}
596
- `,h=!0,g=!0)}if(!g&&(m=!0,!n&&!i)){let v=!0;if(p.includes("/")){let _=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(_)&&(v=!1)}v&&(f+=`bash: type: ${p}: not found
597
- `)}}}return i?d=m&&!h?1:0:d=m?1:0,P(u,f,d)}function gn(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(n=>at(n)).join("; "):s=at(t.body),`${e} is a function
595
+ `:u+=`${p} is ${b}
596
+ `,h=!0,g=!0)}if(!g&&(m=!0,!n&&!i)){let b=!0;if(p.includes("/")){let E=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(E)&&(b=!1)}b&&(f+=`bash: type: ${p}: not found
597
+ `)}}}return i?d=m&&!h?1:0:d=m?1:0,_(u,f,d)}function wn(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(n=>at(n)).join("; "):s=at(t.body),`${e} is a function
598
598
  ${e} ()
599
599
  {
600
600
  ${s}
601
601
  }
602
- `}function at(e){if(Array.isArray(e))return e.map(t=>at(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let r=e.pipelines[s];t.push(lo(r)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(wn(t.name));for(let r of t.args)s.push(wn(r));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>at(r)).join("; ")}; }`:"..."}function lo(e){let t=e.commands.map(s=>at(s));return(e.negated?"! ":"")+t.join(" | ")}function wn(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(r=>vn(r)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=vn(s);return t}function vn(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function En(e,t,s,r){let n="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)r?n+=`${a} is an alias for "${l}"
602
+ `}function at(e){if(Array.isArray(e))return e.map(t=>at(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let r=e.pipelines[s];t.push(co(r)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(vn(t.name));for(let r of t.args)s.push(vn(r));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>at(r)).join("; ")}; }`:"..."}function co(e){let t=e.commands.map(s=>at(s));return(e.negated?"! ":"")+t.join(" | ")}function vn(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(r=>bn(r)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=bn(s);return t}function bn(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function $n(e,t,s,r){let n="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)r?n+=`${a} is an alias for "${l}"
603
603
  `:n+=`alias ${a}='${l}'
604
- `;else if(fs.has(a))r?n+=`${a} is a shell keyword
604
+ `;else if(ds.has(a))r?n+=`${a} is a shell keyword
605
605
  `:n+=`${a}
606
606
  `;else if(nt.has(a))r?n+=`${a} is a shell builtin
607
607
  `:n+=`${a}
@@ -613,74 +613,74 @@ ${e} ()
613
613
  `),o=1)}else if(e.commands.has(a)){let u=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),f=null;for(let d of u){if(!d)continue;let h=`${d}/${a}`;try{let m=await e.fs.stat(h);if(!m.isDirectory&&(m.mode&73)!==0){f=h;break}}catch{}}f||(f=`/usr/bin/${a}`),r?n+=`${a} is ${f}
614
614
  `:n+=`${f}
615
615
  `}else r&&(i+=`${a}: not found
616
- `),o=1}return P(n,i,o)}async function $n(e,t){if(t.includes("/")){let n=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(n)){try{let i=await e.fs.stat(n);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let r=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let n of r){if(!n)continue;let o=`${n.startsWith("/")?n:e.fs.resolvePath(e.state.cwd,n)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${n}/${t}`}}if(e.commands.has(t)){for(let n of r)if(n==="/usr/bin"||n==="/bin")return`${n}/${t}`;return`/usr/bin/${t}`}return null}async function Sn(e,t,s,r,n,i,o,a){let{ctx:l,runCommand:c}=e;if(t==="export")return xs(l,s);if(t==="unset")return qs(l,s);if(t==="exit")return Ds(l,s);if(t==="local")return Fs(l,s);if(t==="set")return Bs(l,s);if(t==="break")return is(l,s);if(t==="continue")return ws(l,s);if(t==="return")return zs(l,s);if(t==="eval"&&l.state.options.posix)return Ft(l,s,n);if(t==="shift")return js(l,s);if(t==="getopts")return Mt(l,s);if(t==="compgen")return ps(l,s);if(t==="complete")return ys(l,s);if(t==="compopt")return gs(l,s);if(t==="pushd")return await Ns(l,s);if(t==="popd")return Os(l,s);if(t==="dirs")return Ts(l,s);if(t==="source"||t===".")return Hs(l,s);if(t==="read")return Ws(l,s,n,a);if(t==="mapfile"||t==="readarray")return Ms(l,s,n);if(t==="declare"||t==="typeset")return _s(l,s);if(t==="readonly")return Cs(l,s);if(!i){let u=l.state.functions.get(t);if(u)return Rt(l,u,s,n)}if(t==="eval")return Ft(l,s,n);if(t==="cd")return await os(l,s);if(t===":"||t==="true")return L;if(t==="false")return q(!1);if(t==="let")return Ls(l,s);if(t==="command")return co(e,s,n);if(t==="builtin")return uo(e,s,n);if(t==="shopt")return mn(l,s);if(t==="exec"){if(s.length===0)return L;let[u,...f]=s;return c(u,f,[],n,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await bn(l,s,u=>$n(l,u),u=>Vt(l,u));if(t==="hash")return Is(l,s);if(t==="help")return Rs(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return S("[: missing `]'\n",2);u=s.slice(0,-1)}return rt(l,u)}return null}async function co(e,t,s){let{ctx:r,runCommand:n}=e;if(t.length===0)return L;let i=!1,o=!1,a=!1,l=t;for(;l.length>0&&l[0].startsWith("-");){let f=l[0];if(f==="--"){l=l.slice(1);break}for(let d of f.slice(1))d==="p"?i=!0:d==="V"?o=!0:d==="v"&&(a=!0);l=l.slice(1)}if(l.length===0)return L;if(a||o)return await En(r,l,a,o);let[c,...u]=l;return n(c,u,[],s,!0,i,-1)}async function uo(e,t,s){let{runCommand:r}=e;if(t.length===0)return L;let n=t;if(n[0]==="--"&&(n=n.slice(1),n.length===0))return L;let i=n[0];if(!nt.has(i))return S(`bash: builtin: ${i}: not a shell builtin
617
- `);let[,...o]=n;return r(i,o,[],s,!0,!1,-1)}async function An(e,t,s,r,n){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await yn(i,t,n?"/usr/bin:/bin":void 0);if(!c)return Tr(t)?S(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
618
- `,127):S(`bash: ${t}: command not found
619
- `,127);if("error"in c)return c.error==="permission_denied"?S(`bash: ${t}: Permission denied
620
- `,126):S(`bash: ${t}: No such file or directory
621
- `,127);if("script"in c)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,c.path)),await a(c.path,s,r);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=r||i.state.groupStdin||"",h=o(),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 u.execute(s,m)}catch(p){return S(`${t}: ${Ae(p)}
622
- `)}}async function Gs(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let r="",n="",i=0;try{for(let o of t){let a=await e.executeStatement(o);r+=a.stdout,n+=a.stderr,i=a.exitCode}}finally{e.state.inCondition=s}return{stdout:r,stderr:n,exitCode:i}}function lt(e,t,s,r){if(e instanceof le)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>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 ce)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>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 ne||e instanceof fe||e instanceof z||e instanceof re)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let n=Ae(e);return{action:"error",stdout:t,stderr:`${s}${n}
616
+ `),o=1}return _(n,i,o)}async function Sn(e,t){if(t.includes("/")){let n=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(n)){try{let i=await e.fs.stat(n);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let r=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let n of r){if(!n)continue;let o=`${n.startsWith("/")?n:e.fs.resolvePath(e.state.cwd,n)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${n}/${t}`}}if(e.commands.has(t)){for(let n of r)if(n==="/usr/bin"||n==="/bin")return`${n}/${t}`;return`/usr/bin/${t}`}return null}async function An(e,t,s,r,n,i,o,a){let{ctx:l,runCommand:c}=e;if(t==="export")return Is(l,s);if(t==="unset")return Zs(l,s);if(t==="exit")return Ds(l,s);if(t==="local")return Ms(l,s);if(t==="set")return js(l,s);if(t==="break")return os(l,s);if(t==="continue")return vs(l,s);if(t==="return")return Vs(l,s);if(t==="eval"&&l.state.options.posix)return Ft(l,s,n);if(t==="shift")return Hs(l,s);if(t==="getopts")return Mt(l,s);if(t==="compgen")return ms(l,s);if(t==="complete")return gs(l,s);if(t==="compopt")return ws(l,s);if(t==="pushd")return await Os(l,s);if(t==="popd")return xs(l,s);if(t==="dirs")return Ts(l,s);if(t==="source"||t===".")return Us(l,s);if(t==="read")return zs(l,s,n,a);if(t==="mapfile"||t==="readarray")return Ws(l,s,n);if(t==="declare"||t==="typeset")return Cs(l,s);if(t==="readonly")return ks(l,s);if(!i){let u=l.state.functions.get(t);if(u)return Rt(l,u,s,n)}if(t==="eval")return Ft(l,s,n);if(t==="cd")return await as(l,s);if(t===":"||t==="true")return L;if(t==="false")return q(!1);if(t==="let")return Fs(l,s);if(t==="command")return uo(e,s,n);if(t==="builtin")return fo(e,s,n);if(t==="shopt")return yn(l,s);if(t==="exec"){if(s.length===0)return L;let[u,...f]=s;return c(u,f,[],n,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await En(l,s,u=>Sn(l,u),u=>Vt(l,u));if(t==="hash")return Rs(l,s);if(t==="help")return Ls(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return A("[: missing `]'\n",2);u=s.slice(0,-1)}return rt(l,u)}return null}async function uo(e,t,s){let{ctx:r,runCommand:n}=e;if(t.length===0)return L;let i=!1,o=!1,a=!1,l=t;for(;l.length>0&&l[0].startsWith("-");){let f=l[0];if(f==="--"){l=l.slice(1);break}for(let d of f.slice(1))d==="p"?i=!0:d==="V"?o=!0:d==="v"&&(a=!0);l=l.slice(1)}if(l.length===0)return L;if(a||o)return await $n(r,l,a,o);let[c,...u]=l;return n(c,u,[],s,!0,i,-1)}async function fo(e,t,s){let{runCommand:r}=e;if(t.length===0)return L;let n=t;if(n[0]==="--"&&(n=n.slice(1),n.length===0))return L;let i=n[0];if(!nt.has(i))return A(`bash: builtin: ${i}: not a shell builtin
617
+ `);let[,...o]=n;return r(i,o,[],s,!0,!1,-1)}async function Pn(e,t,s,r,n){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await gn(i,t,n?"/usr/bin:/bin":void 0);if(!c)return Tr(t)?A(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
618
+ `,127):A(`bash: ${t}: command not found
619
+ `,127);if("error"in c)return c.error==="permission_denied"?A(`bash: ${t}: Permission denied
620
+ `,126):A(`bash: ${t}: No such file or directory
621
+ `,127);if("script"in c)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,c.path)),await a(c.path,s,r);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=r||i.state.groupStdin||"",h=o(),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 u.execute(s,m)}catch(p){return A(`${t}: ${Ae(p)}
622
+ `)}}async function Xs(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let r="",n="",i=0;try{for(let o of t){let a=await e.executeStatement(o);r+=a.stdout,n+=a.stderr,i=a.exitCode}}finally{e.state.inCondition=s}return{stdout:r,stderr:n,exitCode:i}}function lt(e,t,s,r){if(e instanceof le)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>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 ce)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>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 ne||e instanceof fe||e instanceof z||e instanceof re)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let n=Ae(e);return{action:"error",stdout:t,stderr:`${s}${n}
623
623
  `,exitCode:1}}async function Bt(e,t,s="",r=""){let n=s,i=r,o=0;try{for(let a of t){let l=await e.executeStatement(a);n+=l.stdout,i+=l.stderr,o=l.exitCode}}catch(a){if(ht(a)||a instanceof fe||a instanceof z||a instanceof re||a instanceof Ne)throw a.prependOutput(n,i),a;return{stdout:n,stderr:`${i}${Ae(a)}
624
- `,exitCode:1}}return{stdout:n,stderr:i,exitCode:o}}async function Pn(e,t){let s="",r="";for(let n of t.clauses){let i=await Gs(e,n.condition);if(s+=i.stdout,r+=i.stderr,i.exitCode===0)return Bt(e,n.body,s,r)}return t.elseBody?Bt(e,t.elseBody,s,r):P(s,r,0)}async function _n(e,t){let s=await $e(e,t.redirections);if(s)return s;let r="",n="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return S(`bash: \`${t.variable}': not a valid identifier
625
- `);let a=[];if(t.words===null)a=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)a=[];else try{for(let c of t.words){let u=await be(e,c);a.push(...u.values)}}catch(c){if(c instanceof dt)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&ke(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);r+=f.stdout,n+=f.stderr,i=f.exitCode}}catch(u){let f=lt(u,r,n,e.state.loopDepth);if(r=f.stdout,n=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=P(r,n,f.exitCode??1);return j(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=P(r,n,i);return j(e,l,t.redirections)}async function Cn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r=t.line;r!==void 0&&(e.state.currentLine=r);let n="",i="",o=0,a=0;t.init&&await V(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&ke(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,i),!(t.condition&&(r!==void 0&&(e.state.currentLine=r),await V(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);n+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=lt(c,n,i,e.state.loopDepth);if(n=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await V(e,t.update.expression);continue}if(u.action==="error"){let f=P(n,i,u.exitCode??1);return j(e,f,t.redirections)}throw u.error}t.update&&await V(e,t.update.expression)}}finally{e.state.loopDepth--}let l=P(n,i,o);return j(e,l,t.redirections)}async function kn(e,t,s=""){let r="",n="",i=0,o=0,a=s;for(let c of t.redirections)if((c.operator==="<<"||c.operator==="<<-")&&c.target.type==="HereDoc"){let u=c.target,f=await x(e,u.content);u.stripTabs&&(f=f.split(`
624
+ `,exitCode:1}}return{stdout:n,stderr:i,exitCode:o}}async function _n(e,t){let s="",r="";for(let n of t.clauses){let i=await Xs(e,n.condition);if(s+=i.stdout,r+=i.stderr,i.exitCode===0)return Bt(e,n.body,s,r)}return t.elseBody?Bt(e,t.elseBody,s,r):_(s,r,0)}async function Cn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r="",n="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return A(`bash: \`${t.variable}': not a valid identifier
625
+ `);let a=[];if(t.words===null)a=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)a=[];else try{for(let c of t.words){let u=await be(e,c);a.push(...u.values)}}catch(c){if(c instanceof dt)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&ke(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);r+=f.stdout,n+=f.stderr,i=f.exitCode}}catch(u){let f=lt(u,r,n,e.state.loopDepth);if(r=f.stdout,n=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=_(r,n,f.exitCode??1);return j(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=_(r,n,i);return j(e,l,t.redirections)}async function kn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r=t.line;r!==void 0&&(e.state.currentLine=r);let n="",i="",o=0,a=0;t.init&&await V(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&ke(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,i),!(t.condition&&(r!==void 0&&(e.state.currentLine=r),await V(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);n+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=lt(c,n,i,e.state.loopDepth);if(n=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await V(e,t.update.expression);continue}if(u.action==="error"){let f=_(n,i,u.exitCode??1);return j(e,f,t.redirections)}throw u.error}t.update&&await V(e,t.update.expression)}}finally{e.state.loopDepth--}let l=_(n,i,o);return j(e,l,t.redirections)}async function Nn(e,t,s=""){let r="",n="",i=0,o=0,a=s;for(let c of t.redirections)if((c.operator==="<<"||c.operator==="<<-")&&c.target.type==="HereDoc"){let u=c.target,f=await D(e,u.content);u.stripTabs&&(f=f.split(`
626
626
  `).map(d=>d.replace(/^\t+/,"")).join(`
627
- `)),a=f}else if(c.operator==="<<<"&&c.target.type==="Word")a=`${await x(e,c.target)}
628
- `;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await x(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await x(e,c.target);return S(`bash: ${u}: No such file or directory
629
- `)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&ke(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,c=m.exitCode}}catch(h){if(h instanceof le){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;u=!0}else if(h instanceof ce){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;f=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let h of t.body){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,i=m.exitCode}}catch(h){let m=lt(h,r,n,e.state.loopDepth);if(r=m.stdout,n=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return P(r,n,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return P(r,n,i)}async function Nn(e,t){let s="",r="",n=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&ke(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,r);let o=await Gs(e,t.condition);if(s+=o.stdout,r+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,r+=l.stderr,n=l.exitCode}}catch(a){let l=lt(a,s,r,e.state.loopDepth);if(s=l.stdout,r=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return P(s,r,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return P(s,r,n)}async function On(e,t){let s=await $e(e,t.redirections);if(s)return s;let r="",n="",i=0,o=await x(e,t.word),a=!1;for(let c=0;c<t.items.length;c++){let u=t.items[c],f=a;if(!a)for(let d of u.patterns){let h=await x(e,d);hr(d)&&(h=fr(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(je(o,h,m,p)){f=!0;break}}if(f){let d=await Bt(e,u.body,r,n);if(r=d.stdout,n=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=P(r,n,i);return j(e,l,t.redirections)}function Xs(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function Tn(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}var Dn="+ ";async function xn(e){let t=e.state.env.get("PS4");if(t===void 0)return Dn;if(t==="")return"";try{let r=new W().parseWordFromString(t,!1,!1);return await x(e,r)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
630
- `,t||Dn}}function fo(e){return e.map(t=>ho(t)).join(" ")}function ho(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
627
+ `)),a=f}else if(c.operator==="<<<"&&c.target.type==="Word")a=`${await D(e,c.target)}
628
+ `;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await D(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await D(e,c.target);return A(`bash: ${u}: No such file or directory
629
+ `)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&ke(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,c=m.exitCode}}catch(h){if(h instanceof le){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;u=!0}else if(h instanceof ce){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;f=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let h of t.body){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,i=m.exitCode}}catch(h){let m=lt(h,r,n,e.state.loopDepth);if(r=m.stdout,n=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return _(r,n,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return _(r,n,i)}async function On(e,t){let s="",r="",n=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&ke(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,r);let o=await Xs(e,t.condition);if(s+=o.stdout,r+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,r+=l.stderr,n=l.exitCode}}catch(a){let l=lt(a,s,r,e.state.loopDepth);if(s=l.stdout,r=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return _(s,r,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return _(s,r,n)}async function xn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r="",n="",i=0,o=await D(e,t.word),a=!1;for(let c=0;c<t.items.length;c++){let u=t.items[c],f=a;if(!a)for(let d of u.patterns){let h=await D(e,d);pr(d)&&(h=dr(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(je(o,h,m,p)){f=!0;break}}if(f){let d=await Bt(e,u.body,r,n);if(r=d.stdout,n=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=_(r,n,i);return j(e,l,t.redirections)}function Ks(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function Tn(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}var Dn="+ ";async function In(e){let t=e.state.env.get("PS4");if(t===void 0)return Dn;if(t==="")return"";try{let r=new W().parseWordFromString(t,!1,!1);return await D(e,r)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
630
+ `,t||Dn}}function ho(e){return e.map(t=>po(t)).join(" ")}function po(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
631
631
  `),n=e.includes(" "),i=e.includes("\\"),o=e.includes("'");if(s||r||n||i){let l="";for(let c of e){let u=c.charCodeAt(0);c===`
632
- `?l+="\\n":c===" "?l+="\\t":c==="\\"?l+="\\\\":c==="'"?l+="'":c==='"'?l+='"':u<32||u===127?u<256?l+=`\\x${u.toString(16).padStart(2,"0")}`:l+=`\\u${u.toString(16).padStart(4,"0")}`:l+=c}return`$'${l}'`}return o?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function In(e,t,s){if(!e.state.options.xtrace)return"";let r=await xn(e),n=[t,...s],i=fo(n);return`${r}${i}
633
- `}async function Rn(e,t,s){return e.state.options.xtrace?`${await xn(e)}${t}=${s}
634
- `:""}async function Ln(e,t,s){let r=t.timed?performance.now():0,n="",i=L,o=0,a=[],l=t.commands.length>1,c=e.state.lastArg;for(let f=0;f<t.commands.length;f++){let d=t.commands[f],h=f===t.commands.length-1;l&&(e.state.lastArg="");let p=l&&(!h||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,g;try{g=await s(d,n)}catch(b){if(b instanceof ft)g={stdout:b.stdout,stderr:b.stderr,exitCode:1};else if(b instanceof z&&t.commands.length>1)g={stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode};else if(b instanceof fe&&t.commands.length>1)g={stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode};else throw p&&(e.state.env=p),b}p&&(e.state.env=p),a.push(g.exitCode),g.exitCode!==0&&(o=g.exitCode),h?i=g:t.pipeStderr?.[f]??!1?(n=g.stderr+g.stdout,i={stdout:"",stderr:"",exitCode:g.exitCode}):(n=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 f of e.state.env.keys())f.startsWith("PIPESTATUS_")&&e.state.env.delete(f);for(let f=0;f<a.length;f++)e.state.env.set(`PIPESTATUS_${f}`,String(a[f]));e.state.env.set("PIPESTATUS__length",String(a.length))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let d=(performance.now()-r)/1e3,h=Math.floor(d/60),m=d%60,p;t.timePosix?p=`real ${d.toFixed(2)}
632
+ `?l+="\\n":c===" "?l+="\\t":c==="\\"?l+="\\\\":c==="'"?l+="'":c==='"'?l+='"':u<32||u===127?u<256?l+=`\\x${u.toString(16).padStart(2,"0")}`:l+=`\\u${u.toString(16).padStart(4,"0")}`:l+=c}return`$'${l}'`}return o?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function Rn(e,t,s){if(!e.state.options.xtrace)return"";let r=await In(e),n=[t,...s],i=ho(n);return`${r}${i}
633
+ `}async function Ln(e,t,s){return e.state.options.xtrace?`${await In(e)}${t}=${s}
634
+ `:""}async function Fn(e,t,s){let r=t.timed?performance.now():0,n="",i=L,o=0,a=[],l=t.commands.length>1,c=e.state.lastArg;for(let f=0;f<t.commands.length;f++){let d=t.commands[f],h=f===t.commands.length-1;l&&(e.state.lastArg="");let p=l&&(!h||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,g;try{g=await s(d,n)}catch(S){if(S instanceof ft)g={stdout:S.stdout,stderr:S.stderr,exitCode:1};else if(S instanceof z&&t.commands.length>1)g={stdout:S.stdout,stderr:S.stderr,exitCode:S.exitCode};else if(S instanceof fe&&t.commands.length>1)g={stdout:S.stdout,stderr:S.stderr,exitCode:S.exitCode};else throw p&&(e.state.env=p),S}p&&(e.state.env=p),a.push(g.exitCode),g.exitCode!==0&&(o=g.exitCode),h?i=g:t.pipeStderr?.[f]??!1?(n=g.stderr+g.stdout,i={stdout:"",stderr:"",exitCode:g.exitCode}):(n=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 f of e.state.env.keys())f.startsWith("PIPESTATUS_")&&e.state.env.delete(f);for(let f=0;f<a.length;f++)e.state.env.set(`PIPESTATUS_${f}`,String(a[f]));e.state.env.set("PIPESTATUS__length",String(a.length))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let d=(performance.now()-r)/1e3,h=Math.floor(d/60),m=d%60,p;t.timePosix?p=`real ${d.toFixed(2)}
635
635
  user 0.00
636
636
  sys 0.00
637
637
  `:p=`
638
638
  real ${`${h}m${m.toFixed(3)}s`}
639
639
  user 0m0.000s
640
640
  sys 0m0.000s
641
- `,i={...i,stderr:i.stderr+p}}return l&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=c),i}async function Fn(e,t){let s=new Map,r="";for(let n of t.assignments){let i=n.name;if(n.array){let u=await po(e,t,i,n.array,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=n.value?await x(e,n.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:P("",`bash: ${i}: bad array subscript
642
- `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await vo(e,t,l[1],l[2],o,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await Eo(e,t,i,o,n.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:s}}async function po(e,t,s,r,n,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
643
- `,1)};if(de(e,s)){let u=cr(e,s);if(u===void 0||u==="")throw new z(1,"","");let f=De(e,s);if(f&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(f))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
641
+ `,i={...i,stderr:i.stderr+p}}return l&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=c),i}async function Mn(e,t){let s=new Map,r="";for(let n of t.assignments){let i=n.name;if(n.array){let u=await mo(e,t,i,n.array,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=n.value?await D(e,n.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:_("",`bash: ${i}: bad array subscript
642
+ `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await bo(e,t,l[1],l[2],o,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await $o(e,t,i,o,n.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:s}}async function mo(e,t,s,r,n,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
643
+ `,1)};if(de(e,s)){let u=ur(e,s);if(u===void 0||u==="")throw new z(1,"","");let f=Te(e,s);if(f&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(f))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
644
644
  `,1)}}if(Le(e,s)){if(t.name)return o+=`bash: ${s}: readonly variable
645
- `,{continueToNext:!0,xtraceOutput:o};let u=K(e,s);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let a=e.state.associativeArrays?.has(s),l=mo(r),c=()=>{let u=`${s}_`;for(let f of e.state.env.keys())f.startsWith(u)&&!f.includes("__")&&e.state.env.delete(f);e.state.env.delete(s)};if(a&&l?await yo(e,t,s,r,n,c,u=>{o+=u}):l?await go(e,s,r,n,c):await wo(e,s,r,n,c),t.name){i.set(s,e.state.env.get(s));let f=`(${r.map(d=>mt(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:o}}function mo(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],r=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let n=t.parts[2];return n.type!=="Literal"?!1:n.value.startsWith("]=")||n.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):s.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function yo(e,t,s,r,n,i,o){let a=[];for(let l of r){let c=Gt(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?h=await x(e,{type:"Word",parts:f}):h="",h=H(e,h),a.push({type:"keyed",key:u,value:h,append:d})}else{let u=await x(e,l);a.push({type:"invalid",expandedValue:u})}}n||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=e.state.env.get(`${s}_${l.key}`)??"";e.state.env.set(`${s}_${l.key}`,c+l.value)}else e.state.env.set(`${s}_${l.key}`,l.value);else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${s}: ${l.expandedValue}: must use subscript when assigning associative array
646
- `)}}async function go(e,t,s,r,n){let i=[];for(let a of s){let l=Gt(a);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await x(e,{type:"Word",parts:u}):d="",d=H(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await be(e,a);i.push({type:"non-keyed",values:c.values})}}r||n();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new W,u=Z(c,a.indexExpr);l=await V(e,u.expression,!1)}catch{if(/^-?\d+$/.test(a.indexExpr))l=Number.parseInt(a.indexExpr,10);else{let c=e.state.env.get(a.indexExpr);l=c?Number.parseInt(c,10):0,Number.isNaN(l)&&(l=0)}}if(a.append){let c=e.state.env.get(`${t}_${l}`)??"";e.state.env.set(`${t}_${l}`,c+a.value)}else e.state.env.set(`${t}_${l}`,a.value);o=l+1}else for(let l of a.values)e.state.env.set(`${t}_${o++}`,l)}async function wo(e,t,s,r,n){let i=[];for(let a of s){let l=await be(e,a);i.push(...l.values)}let o=0;if(r){let a=ye(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(e.state.env.set(`${t}_0`,l),e.state.env.delete(t),o=1)}}else n();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);r||e.state.env.set(`${t}__length`,String(i.length))}async function vo(e,t,s,r,n,i,o){let a=s;if(de(e,s)){let f=De(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: \`${f}': not a valid identifier
647
- `,1)};a=f}}if(Le(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=K(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await Mn(e,a,r);else{let f=await bo(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${a}_${f.index}`}let u=i?(e.state.env.get(c)||"")+n:n;if(t.name)o.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=He(e,a);if(f!==void 0&&f===e.state.callDepth&&e.state.localScopes.length>0){let d=e.state.localScopes[e.state.localScopes.length-1];d.has(c)||d.set(c,e.state.env.get(c))}e.state.env.set(c,u)}return{continueToNext:!0,xtraceOutput:""}}async function Mn(e,t,s){let r;if(s.startsWith("'")&&s.endsWith("'"))r=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let n=s.slice(1,-1),o=new W().parseWordFromString(n,!0,!1);r=await x(e,o)}else if(s.includes("$")){let i=new W().parseWordFromString(s,!1,!1);r=await x(e,i)}else r=s;return`${t}_${r}`}async function bo(e,t,s){let r=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(r=s.slice(1,-1));let n;if(/^-?\d+$/.test(r))n=Number.parseInt(r,10);else{try{let i=new W,o=Z(i,r);n=await V(e,o.expression,!1)}catch(i){if(i instanceof Re){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
648
- `;if(i.fatal)throw new z(1,"",l);return{index:0,error:P("",l,1)}}let o=e.state.env.get(s);n=o?Number.parseInt(o,10):0}Number.isNaN(n)&&(n=0)}if(n<0){let i=ye(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:P("",`bash: line ${a}: ${t}[${s}]: bad array subscript
649
- `,1)}}if(n=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+n,n<0){let a=e.state.currentLine;return{index:0,error:P("",`bash: line ${a}: ${t}[${s}]: bad array subscript
650
- `,1)}}}return{index:n}}async function Eo(e,t,s,r,n,i){let o="",a=s,l=null;if(de(e,s)){let f=ur(e,s,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: circular name reference
645
+ `,{continueToNext:!0,xtraceOutput:o};let u=K(e,s);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let a=e.state.associativeArrays?.has(s),l=yo(r),c=()=>{let u=`${s}_`;for(let f of e.state.env.keys())f.startsWith(u)&&!f.includes("__")&&e.state.env.delete(f);e.state.env.delete(s)};if(a&&l?await go(e,t,s,r,n,c,u=>{o+=u}):l?await wo(e,s,r,n,c):await vo(e,s,r,n,c),t.name){i.set(s,e.state.env.get(s));let f=`(${r.map(d=>mt(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:o}}function yo(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],r=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let n=t.parts[2];return n.type!=="Literal"?!1:n.value.startsWith("]=")||n.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):s.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function go(e,t,s,r,n,i,o){let a=[];for(let l of r){let c=Xt(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?h=await D(e,{type:"Word",parts:f}):h="",h=H(e,h),a.push({type:"keyed",key:u,value:h,append:d})}else{let u=await D(e,l);a.push({type:"invalid",expandedValue:u})}}n||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=e.state.env.get(`${s}_${l.key}`)??"";e.state.env.set(`${s}_${l.key}`,c+l.value)}else e.state.env.set(`${s}_${l.key}`,l.value);else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${s}: ${l.expandedValue}: must use subscript when assigning associative array
646
+ `)}}async function wo(e,t,s,r,n){let i=[];for(let a of s){let l=Xt(a);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await D(e,{type:"Word",parts:u}):d="",d=H(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await be(e,a);i.push({type:"non-keyed",values:c.values})}}r||n();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new W,u=Z(c,a.indexExpr);l=await V(e,u.expression,!1)}catch{if(/^-?\d+$/.test(a.indexExpr))l=Number.parseInt(a.indexExpr,10);else{let c=e.state.env.get(a.indexExpr);l=c?Number.parseInt(c,10):0,Number.isNaN(l)&&(l=0)}}if(a.append){let c=e.state.env.get(`${t}_${l}`)??"";e.state.env.set(`${t}_${l}`,c+a.value)}else e.state.env.set(`${t}_${l}`,a.value);o=l+1}else for(let l of a.values)e.state.env.set(`${t}_${o++}`,l)}async function vo(e,t,s,r,n){let i=[];for(let a of s){let l=await be(e,a);i.push(...l.values)}let o=0;if(r){let a=ye(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(e.state.env.set(`${t}_0`,l),e.state.env.delete(t),o=1)}}else n();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);r||e.state.env.set(`${t}__length`,String(i.length))}async function bo(e,t,s,r,n,i,o){let a=s;if(de(e,s)){let f=Te(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: \`${f}': not a valid identifier
647
+ `,1)};a=f}}if(Le(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=K(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await Wn(e,a,r);else{let f=await Eo(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${a}_${f.index}`}let u=i?(e.state.env.get(c)||"")+n:n;if(t.name)o.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=He(e,a);if(f!==void 0&&f===e.state.callDepth&&e.state.localScopes.length>0){let d=e.state.localScopes[e.state.localScopes.length-1];d.has(c)||d.set(c,e.state.env.get(c))}e.state.env.set(c,u)}return{continueToNext:!0,xtraceOutput:""}}async function Wn(e,t,s){let r;if(s.startsWith("'")&&s.endsWith("'"))r=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let n=s.slice(1,-1),o=new W().parseWordFromString(n,!0,!1);r=await D(e,o)}else if(s.includes("$")){let i=new W().parseWordFromString(s,!1,!1);r=await D(e,i)}else r=s;return`${t}_${r}`}async function Eo(e,t,s){let r=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(r=s.slice(1,-1));let n;if(/^-?\d+$/.test(r))n=Number.parseInt(r,10);else{try{let i=new W,o=Z(i,r);n=await V(e,o.expression,!1)}catch(i){if(i instanceof Re){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
648
+ `;if(i.fatal)throw new z(1,"",l);return{index:0,error:_("",l,1)}}let o=e.state.env.get(s);n=o?Number.parseInt(o,10):0}Number.isNaN(n)&&(n=0)}if(n<0){let i=ye(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
649
+ `,1)}}if(n=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+n,n<0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
650
+ `,1)}}}return{index:n}}async function $o(e,t,s,r,n,i){let o="",a=s,l=null;if(de(e,s)){let f=fr(e,s,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: circular name reference
651
651
  `,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};a=f;let d=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},a=d[1])}if(Le(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
652
- `,{continueToNext:!0,xtraceOutput:o};let f=K(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(it(e,a))try{let f=new W;if(n){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,m=Z(f,h);c=String(await V(e,m.expression))}else{let d=Z(f,r);c=String(await V(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-7IMG6HKQ.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=qe(e,a,c),o+=await Rn(e,a,c);let u=a;if(l)u=await $o(e,l);else{let{isArray:f}=await import("./chunks/expansion-7IMG6HKQ.js");f(e,a)&&(u=`${a}_0`)}return t.name?(i.set(u,e.state.env.get(u)),e.state.env.set(u,c)):(e.state.env.set(u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function $o(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return Mn(e,s,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new W,a=Z(o,r);i=await V(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=ye(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function Wn(e,t,s,r){let n=await $e(e,t.redirections);if(n)return n;let i=new Map(e.state.env),o=e.state.cwd,a={...e.state.options},l=e.state.localScopes,c=e.state.localVarStack,u=e.state.localVarDepth,f=e.state.fullyUnsetLocals;if(e.state.localScopes=l.map(v=>new Map(v)),c){e.state.localVarStack=new Map;for(let[v,_]of c.entries())e.state.localVarStack.set(v,_.map(T=>({...T})))}u&&(e.state.localVarDepth=new Map(u)),f&&(e.state.fullyUnsetLocals=new Map(f));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 b="",E="",k=0,y=()=>{e.state.env=i,e.state.cwd=o,e.state.options=a,e.state.localScopes=l,e.state.localVarStack=c,e.state.localVarDepth=u,e.state.fullyUnsetLocals=f,e.state.loopDepth=d,e.state.parentHasLoopContext=h,e.state.groupStdin=g,e.state.bashPid=p,e.state.lastArg=m};try{for(let v of t.body){let _=await r(v);b+=_.stdout,E+=_.stderr,k=_.exitCode}}catch(v){if(y(),v instanceof re)throw v;if(v instanceof Ne){b+=v.stdout,E+=v.stderr;let T=P(b,E,0);return j(e,T,t.redirections)}if(v instanceof le||v instanceof ce){b+=v.stdout,E+=v.stderr;let T=P(b,E,0);return j(e,T,t.redirections)}if(v instanceof z){b+=v.stdout,E+=v.stderr;let T=P(b,E,v.exitCode);return j(e,T,t.redirections)}if(v instanceof ne){b+=v.stdout,E+=v.stderr;let T=P(b,E,v.exitCode);return j(e,T,t.redirections)}if(v instanceof fe){let T=P(b+v.stdout,E+v.stderr,v.exitCode);return j(e,T,t.redirections)}let _=P(b,`${E}${Ae(v)}
653
- `,1);return j(e,_,t.redirections)}y();let w=P(b,E,k);return j(e,w,t.redirections)}async function zn(e,t,s,r){let n="",i="",o=0,a=await It(e,t.redirections);if(a)return a;let l=s;for(let f of t.redirections)if((f.operator==="<<"||f.operator==="<<-")&&f.target.type==="HereDoc"){let d=f.target,h=await x(e,d.content);d.stripTabs&&(h=h.split(`
652
+ `,{continueToNext:!0,xtraceOutput:o};let f=K(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(it(e,a))try{let f=new W;if(n){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,m=Z(f,h);c=String(await V(e,m.expression))}else{let d=Z(f,r);c=String(await V(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-7IMG6HKQ.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=qe(e,a,c),o+=await Ln(e,a,c);let u=a;if(l)u=await So(e,l);else{let{isArray:f}=await import("./chunks/expansion-7IMG6HKQ.js");f(e,a)&&(u=`${a}_0`)}return t.name?(i.set(u,e.state.env.get(u)),e.state.env.set(u,c)):(e.state.env.set(u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function So(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return Wn(e,s,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new W,a=Z(o,r);i=await V(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=ye(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function zn(e,t,s,r){let n=await $e(e,t.redirections);if(n)return n;let i=new Map(e.state.env),o=e.state.cwd,a={...e.state.options},l=new Map(e.state.functions),c=e.state.localScopes,u=e.state.localVarStack,f=e.state.localVarDepth,d=e.state.fullyUnsetLocals;if(e.state.localScopes=c.map(E=>new Map(E)),u){e.state.localVarStack=new Map;for(let[E,T]of u.entries())e.state.localVarStack.set(E,T.map(N=>({...N})))}f&&(e.state.localVarDepth=new Map(f)),d&&(e.state.fullyUnsetLocals=new Map(d));let h=e.state.loopDepth,m=e.state.parentHasLoopContext;e.state.parentHasLoopContext=h>0,e.state.loopDepth=0;let p=e.state.lastArg,g=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let S=e.state.groupStdin;s&&(e.state.groupStdin=s);let v="",C="",y=0,w=()=>{e.state.env=i,e.state.cwd=o,e.state.options=a,e.state.functions=l,e.state.localScopes=c,e.state.localVarStack=u,e.state.localVarDepth=f,e.state.fullyUnsetLocals=d,e.state.loopDepth=h,e.state.parentHasLoopContext=m,e.state.groupStdin=S,e.state.bashPid=g,e.state.lastArg=p};try{for(let E of t.body){let T=await r(E);v+=T.stdout,C+=T.stderr,y=T.exitCode}}catch(E){if(w(),E instanceof re)throw E;if(E instanceof Ne){v+=E.stdout,C+=E.stderr;let N=_(v,C,0);return j(e,N,t.redirections)}if(E instanceof le||E instanceof ce){v+=E.stdout,C+=E.stderr;let N=_(v,C,0);return j(e,N,t.redirections)}if(E instanceof z){v+=E.stdout,C+=E.stderr;let N=_(v,C,E.exitCode);return j(e,N,t.redirections)}if(E instanceof ne){v+=E.stdout,C+=E.stderr;let N=_(v,C,E.exitCode);return j(e,N,t.redirections)}if(E instanceof fe){let N=_(v+E.stdout,C+E.stderr,E.exitCode);return j(e,N,t.redirections)}let T=_(v,`${C}${Ae(E)}
653
+ `,1);return j(e,T,t.redirections)}w();let b=_(v,C,y);return j(e,b,t.redirections)}async function Vn(e,t,s,r){let n="",i="",o=0,a=await It(e,t.redirections);if(a)return a;let l=s;for(let f of t.redirections)if((f.operator==="<<"||f.operator==="<<-")&&f.target.type==="HereDoc"){let d=f.target,h=await D(e,d.content);d.stripTabs&&(h=h.split(`
654
654
  `).map(p=>p.replace(/^\t+/,"")).join(`
655
- `));let m=f.fd??0;m!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,h)):l=h}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await x(e,f.target)}
656
- `;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await x(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await x(e,f.target);return P("",`bash: ${d}: No such file or directory
657
- `,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await r(f);n+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof re)throw f;if(ht(f)||f instanceof fe||f instanceof z)throw f.prependOutput(n,i),f;return P(n,`${i}${Ae(f)}
658
- `,1)}e.state.groupStdin=c;let u=P(n,i,o);return j(e,u,t.redirections)}async function Vn(e,t,s,r,n){let i;try{i=await e.fs.readFile(t)}catch{return S(`bash: ${t}: No such file or directory
655
+ `));let m=f.fd??0;m!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,h)):l=h}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await D(e,f.target)}
656
+ `;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await D(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await D(e,f.target);return _("",`bash: ${d}: No such file or directory
657
+ `,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await r(f);n+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof re)throw f;if(ht(f)||f instanceof fe||f instanceof z)throw f.prependOutput(n,i),f;return _(n,`${i}${Ae(f)}
658
+ `,1)}e.state.groupStdin=c;let u=_(n,i,o);return j(e,u,t.redirections)}async function Bn(e,t,s,r,n){let i;try{i=await e.fs.readFile(t)}catch{return A(`bash: ${t}: No such file or directory
659
659
  `,127)}if(i.startsWith("#!")){let g=i.indexOf(`
660
- `);g!==-1&&(i=i.slice(g+1))}let o=new Map(e.state.env),a=e.state.cwd,l={...e.state.options},c=e.state.loopDepth,u=e.state.parentHasLoopContext,f=e.state.lastArg,d=e.state.bashPid,h=e.state.groupStdin,m=e.state.currentSource;e.state.parentHasLoopContext=c>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),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=o,e.state.cwd=a,e.state.options=l,e.state.loopDepth=c,e.state.parentHasLoopContext=u,e.state.lastArg=f,e.state.bashPid=d,e.state.groupStdin=h,e.state.currentSource=m};try{let b=new W().parse(i),E=await n(b);return p(),E}catch(g){if(p(),g instanceof z||g instanceof re)throw g;if(g.name==="ParseException")return S(`bash: ${t}: ${g.message}
661
- `);throw g}}var ct=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,r=new Set;if(t)for(let i of t)r.add(i);if(s)for(let i of s)r.add(i);if(r.size===0)return Object.create(null);let n=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(n[i]=o)}return n}async executeScript(t){let s="",r="",n=0;for(let i of t.statements)try{let o=await this.executeStatement(i);s+=o.stdout,r+=o.stderr,n=o.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(o){if(o instanceof z)throw o.prependOutput(s,r),o;if(o instanceof pe)return s+=o.stdout,r+=o.stderr,n=o.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof re)throw o;if(o instanceof fe)return s+=o.stdout,r+=o.stderr,n=o.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof er)return s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof ft)return s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof Re){s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(o instanceof tr){s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(o instanceof le||o instanceof ce){if(this.ctx.state.loopDepth>0)throw o.prependOutput(s,r),o;s+=o.stdout,r+=o.stderr;continue}throw o instanceof ne&&o.prependOutput(s,r),o}return{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)}}async executeUserScript(t,s,r=""){return Vn(this.ctx,t,s,r,n=>this.executeScript(n))}async executeStatement(t){if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&ke(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new pt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",r="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(r+=`${t.sourceText}
662
- `);let n=0,i=-1,o=!1;for(let c=0;c<t.pipelines.length;c++){let u=t.pipelines[c],f=c>0?t.operators[c-1]:null;if(f==="&&"&&n!==0||f==="||"&&n===0)continue;let d=await this.executePipeline(u);s+=d.stdout,r+=d.stderr,n=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}let a=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&n!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new fe(n,s,r);return P(s,r,n)}async executePipeline(t){return Ln(this.ctx,t,(s,r)=>this.executeCommand(s,r))}async executeCommand(t,s){switch(t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return Pn(this.ctx,t);case"For":return _n(this.ctx,t);case"CStyleFor":return Cn(this.ctx,t);case"While":return kn(this.ctx,t,s);case"Until":return Nn(this.ctx,t);case"Case":return On(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return qr(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(r){if(r instanceof dt)return S(r.stderr);throw r}}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 v=this.expandAlias(y);if(v===y)break;y=v,w--}this.aliasExpansionStack.clear(),y!==t&&(t=y)}this.ctx.state.expansionStderr="";let r=await Fn(this.ctx,t);if(r.error)return r.error;let n=r.tempAssignments,i=r.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await $e(this.ctx,t.redirections);if(w)return w;let v=P("",i,0);return j(this.ctx,v,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 o=t.name&&Xs(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(n.keys());if(a.length>0&&!o){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let y of a)this.ctx.state.tempExportedVars.add(y)}let l=await It(this.ctx,t.redirections);if(l){for(let[y,w]of n)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);return l}let c=-1;for(let y of t.redirections){if((y.operator==="<<"||y.operator==="<<-")&&y.target.type==="HereDoc"){let w=y.target,v=await x(this.ctx,w.content);w.stripTabs&&(v=v.split(`
660
+ `);g!==-1&&(i=i.slice(g+1))}let o=new Map(e.state.env),a=e.state.cwd,l={...e.state.options},c=e.state.loopDepth,u=e.state.parentHasLoopContext,f=e.state.lastArg,d=e.state.bashPid,h=e.state.groupStdin,m=e.state.currentSource;e.state.parentHasLoopContext=c>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),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=o,e.state.cwd=a,e.state.options=l,e.state.loopDepth=c,e.state.parentHasLoopContext=u,e.state.lastArg=f,e.state.bashPid=d,e.state.groupStdin=h,e.state.currentSource=m};try{let S=new W().parse(i),v=await n(S);return p(),v}catch(g){if(p(),g instanceof z||g instanceof re)throw g;if(g.name==="ParseException")return A(`bash: ${t}: ${g.message}
661
+ `);throw g}}var ct=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,r=new Set;if(t)for(let i of t)r.add(i);if(s)for(let i of s)r.add(i);if(r.size===0)return Object.create(null);let n=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(n[i]=o)}return n}async executeScript(t){let s="",r="",n=0;for(let i of t.statements)try{let o=await this.executeStatement(i);s+=o.stdout,r+=o.stderr,n=o.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(o){if(o instanceof z)throw o.prependOutput(s,r),o;if(o instanceof pe)return s+=o.stdout,r+=o.stderr,n=o.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof re)throw o;if(o instanceof fe)return s+=o.stdout,r+=o.stderr,n=o.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof tr)return s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof ft)return s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof Re){s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(o instanceof sr){s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(o instanceof le||o instanceof ce){if(this.ctx.state.loopDepth>0)throw o.prependOutput(s,r),o;s+=o.stdout,r+=o.stderr;continue}throw o instanceof ne&&o.prependOutput(s,r),o}return{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)}}async executeUserScript(t,s,r=""){return Bn(this.ctx,t,s,r,n=>this.executeScript(n))}async executeStatement(t){if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&ke(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new pt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",r="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(r+=`${t.sourceText}
662
+ `);let n=0,i=-1,o=!1;for(let c=0;c<t.pipelines.length;c++){let u=t.pipelines[c],f=c>0?t.operators[c-1]:null;if(f==="&&"&&n!==0||f==="||"&&n===0)continue;let d=await this.executePipeline(u);s+=d.stdout,r+=d.stderr,n=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}let a=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&n!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new fe(n,s,r);return _(s,r,n)}async executePipeline(t){return Fn(this.ctx,t,(s,r)=>this.executeCommand(s,r))}async executeCommand(t,s){switch(t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return _n(this.ctx,t);case"For":return Cn(this.ctx,t);case"CStyleFor":return kn(this.ctx,t);case"While":return Nn(this.ctx,t,s);case"Until":return On(this.ctx,t);case"Case":return xn(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Zr(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(r){if(r instanceof dt)return A(r.stderr);throw r}}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 b=this.expandAlias(y);if(b===y)break;y=b,w--}this.aliasExpansionStack.clear(),y!==t&&(t=y)}this.ctx.state.expansionStderr="";let r=await Mn(this.ctx,t);if(r.error)return r.error;let n=r.tempAssignments,i=r.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await $e(this.ctx,t.redirections);if(w)return w;let b=_("",i,0);return j(this.ctx,b,t.redirections)}this.ctx.state.lastArg="";let y=(this.ctx.state.expansionStderr||"")+i;return this.ctx.state.expansionStderr="",_("",y,this.ctx.state.lastExitCode)}let o=t.name&&Ks(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(n.keys());if(a.length>0&&!o){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let y of a)this.ctx.state.tempExportedVars.add(y)}let l=await It(this.ctx,t.redirections);if(l){for(let[y,w]of n)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);return l}let c=-1;for(let y of t.redirections){if((y.operator==="<<"||y.operator==="<<-")&&y.target.type==="HereDoc"){let w=y.target,b=await D(this.ctx,w.content);w.stripTabs&&(b=b.split(`
663
663
  `).map(T=>T.replace(/^\t+/,"")).join(`
664
- `));let _=y.fd??0;_!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),this.ctx.state.fileDescriptors.set(_,v)):s=v;continue}if(y.operator==="<<<"&&y.target.type==="Word"){s=`${await x(this.ctx,y.target)}
665
- `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await x(this.ctx,y.target),v=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);s=await this.ctx.fs.readFile(v)}catch{let w=await x(this.ctx,y.target);for(let[v,_]of n)_===void 0?this.ctx.state.env.delete(v):this.ctx.state.env.set(v,_);return S(`bash: ${w}: No such file or directory
666
- `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await x(this.ctx,y.target),v=Number.parseInt(w,10);if(!Number.isNaN(v)&&this.ctx.state.fileDescriptors){let _=this.ctx.state.fileDescriptors.get(v);if(_!==void 0)if(_.startsWith("__rw__:")){let T=Tn(_);T&&(s=T.content.slice(T.position),c=v)}else _.startsWith("__file__:")||_.startsWith("__file_append__:")||(s=_)}}}let u=await x(this.ctx,t.name),f=[],d=[];if(Xs(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let y of t.args){let w=await Nr(this.ctx,y);if(w)f.push(w),d.push(!0);else{let v=await Or(this.ctx,y);if(v!==null)f.push(v),d.push(!0);else{let _=await be(this.ctx,y);for(let T of _.values)f.push(T),d.push(_.quoted)}}}else for(let y of t.args){let w=await be(this.ctx,y);for(let v of w.values)f.push(v),d.push(w.quoted)}if(!u){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(f.length>0){let w=f.shift();return d.shift(),await this.runCommand(w,f,d,s,!1,!1,c)}return P("","",this.ctx.state.lastExitCode)}return S(`bash: : command not found
667
- `,127)}if(u==="exec"&&(f.length===0||f[0]==="--")){for(let y of t.redirections){if(y.target.type==="HereDoc"||y.fdVariable)continue;let w=await x(this.ctx,y.target),v=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(v,`__file__:${_}`);break}case">>":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);this.ctx.state.fileDescriptors.set(v,`__file_append__:${_}`);break}case"<":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let T=await this.ctx.fs.readFile(_);this.ctx.state.fileDescriptors.set(v,T)}catch{return S(`bash: ${w}: No such file or directory
668
- `)}break}case"<>":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let T=await this.ctx.fs.readFile(_);this.ctx.state.fileDescriptors.set(v,`__rw__:${_.length}:${_}:0:${T}`)}catch{await this.ctx.fs.writeFile(_,"","utf8"),this.ctx.state.fileDescriptors.set(v,`__rw__:${_.length}:${_}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(v);else if(w.endsWith("-")){let _=w.slice(0,-1),T=Number.parseInt(_,10);if(!Number.isNaN(T)){let D=this.ctx.state.fileDescriptors.get(T);D!==void 0?this.ctx.state.fileDescriptors.set(v,D):this.ctx.state.fileDescriptors.set(v,`__dupout__:${T}`),this.ctx.state.fileDescriptors.delete(T)}}else{let _=Number.parseInt(w,10);Number.isNaN(_)||this.ctx.state.fileDescriptors.set(v,`__dupout__:${_}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(v);else if(w.endsWith("-")){let _=w.slice(0,-1),T=Number.parseInt(_,10);if(!Number.isNaN(T)){let D=this.ctx.state.fileDescriptors.get(T);D!==void 0?this.ctx.state.fileDescriptors.set(v,D):this.ctx.state.fileDescriptors.set(v,`__dupin__:${T}`),this.ctx.state.fileDescriptors.delete(T)}}else{let _=Number.parseInt(w,10);Number.isNaN(_)||this.ctx.state.fileDescriptors.set(v,`__dupin__:${_}`)}break}}}for(let[y,w]of n)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 n.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await In(this.ctx,u,f);n.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(n)));let p,g=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(y){if(y instanceof le||y instanceof ce)g=y,p=L;else throw y}let b=i+m;if(b&&(p={...p,stderr:b+p.stderr}),p=await j(this.ctx,p,t.redirections),g)throw g;if(f.length>0){let y=f[f.length-1];if((u==="declare"||u==="local"||u==="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=u;let E=Hr(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!E)for(let[y,w]of n)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 n.keys())this.ctx.state.tempExportedVars.delete(y);return n.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,r,n,i=!1,o=!1,a=-1){let l={ctx:this.ctx,runCommand:(u,f,d,h,m,p,g)=>this.runCommand(u,f,d,h,m,p,g),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await Sn(l,t,s,r,n,i,o,a);return c!==null?c:An(l,t,s,n,o)}aliasExpansionStack=new Set;expandAlias(t){return ns(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Vt(this.ctx,t)}async executeSubshell(t,s=""){return Wn(this.ctx,t,s,r=>this.executeStatement(r))}async executeGroup(t,s=""){return zn(this.ctx,t,s,r=>this.executeStatement(r))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await $e(this.ctx,t.redirections);if(s)return s;try{let r=await V(this.ctx,t.expression.expression),n=q(r!==0);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),j(this.ctx,n,t.redirections)}catch(r){let n=S(`bash: arithmetic expression: ${r.message}
669
- `);return j(this.ctx,n,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await $e(this.ctx,t.redirections);if(s)return s;try{let r=await xe(this.ctx,t.expression),n=q(r);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),j(this.ctx,n,t.redirections)}catch(r){let n=r instanceof Re?1:2,i=S(`bash: conditional expression: ${r.message}
670
- `,n);return j(this.ctx,i,t.redirections)}}};var oe={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50};function Bn(e){return e?{maxCallDepth:e.maxCallDepth??oe.maxCallDepth,maxCommandCount:e.maxCommandCount??oe.maxCommandCount,maxLoopIterations:e.maxLoopIterations??oe.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??oe.maxAwkIterations,maxSedIterations:e.maxSedIterations??oe.maxSedIterations,maxJqIterations:e.maxJqIterations??oe.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??oe.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??oe.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??oe.maxGlobOperations,maxStringLength:e.maxStringLength??oe.maxStringLength,maxArrayElements:e.maxArrayElements??oe.maxArrayElements,maxHeredocSize:e.maxHeredocSize??oe.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??oe.maxSubstitutionDepth}:{...oe}}function jn(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function So(e){let t=jn(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function Ao(e,t){let s=jn(e);if(!s)return!1;let r=So(t);return!r||s.origin!==r.origin?!1:r.pathPrefix==="/"||r.pathPrefix===""?!0:s.pathname.startsWith(r.pathPrefix)}function Ks(e,t){return!t||t.length===0?!1:t.some(s=>Ao(e,s))}var Ze=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},Ge=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},Xe=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},jt=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}};var Po=20,_o=3e4,Co=["GET","HEAD"],ko=new Set(["GET","HEAD","OPTIONS"]),No=new Set([301,302,303,307,308]);function Ys(e){let t=e.maxRedirects??Po,s=e.timeoutMs??_o,r=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??Co;function n(a){if(!e.dangerouslyAllowFullInternetAccess&&!Ks(a,e.allowedUrlPrefixes??[]))throw new Ze(a)}function i(a){if(e.dangerouslyAllowFullInternetAccess)return;let l=a.toUpperCase();if(!r.includes(l))throw new jt(l,r)}async function o(a,l={}){let c=l.method?.toUpperCase()??"GET";n(a),i(c);let u=a,f=0,d=l.followRedirects??!0,h=l.timeoutMs!==void 0?Math.min(l.timeoutMs,s):s;for(;;){let m=new AbortController,p=setTimeout(()=>m.abort(),h);try{let g={method:c,headers:l.headers,signal:m.signal,redirect:"manual"};l.body&&!ko.has(c)&&(g.body=l.body);let b=await fetch(u,g);if(No.has(b.status)&&d){let E=b.headers.get("location");if(!E)return await Hn(b,u);let k=new URL(E,u).href;if(!e.dangerouslyAllowFullInternetAccess&&!Ks(k,e.allowedUrlPrefixes??[]))throw new Xe(k);if(f++,f>t)throw new Ge(t);u=k;continue}return await Hn(b,u)}finally{clearTimeout(p)}}}return o}async function Hn(e,t){let s=Object.create(null);return e.headers.forEach((r,n)=>{s[n.toLowerCase()]=r}),{status:e.status,statusText:e.statusText,headers:s,body:await e.text(),url:t}}import{AsyncLocalStorage as Oo}from"node:async_hooks";import{randomUUID as qn}from"node:crypto";function Un(){let e=[{prop:"Function",target:globalThis,violationType:"function_constructor",strategy:"throw",reason:"Function constructor allows arbitrary code execution"},{prop:"eval",target:globalThis,violationType:"eval",strategy:"throw",reason:"eval() allows arbitrary code execution"},{prop:"setTimeout",target:globalThis,violationType:"setTimeout",strategy:"throw",reason:"setTimeout with string argument allows code execution"},{prop:"setInterval",target:globalThis,violationType:"setInterval",strategy:"throw",reason:"setInterval with string argument allows code execution"},{prop:"setImmediate",target:globalThis,violationType:"setImmediate",strategy:"throw",reason:"setImmediate could be used to escape sandbox context"},{prop:"env",target:process,violationType:"process_env",strategy:"throw",reason:"process.env could leak sensitive environment variables"},{prop:"binding",target:process,violationType:"process_binding",strategy:"throw",reason:"process.binding provides access to native Node.js modules"},{prop:"_linkedBinding",target:process,violationType:"process_binding",strategy:"throw",reason:"process._linkedBinding provides access to native Node.js modules"},{prop:"dlopen",target:process,violationType:"process_dlopen",strategy:"throw",reason:"process.dlopen allows loading native addons"},{prop:"WeakRef",target:globalThis,violationType:"weak_ref",strategy:"throw",reason:"WeakRef could be used to leak references outside sandbox"},{prop:"FinalizationRegistry",target:globalThis,violationType:"finalization_registry",strategy:"throw",reason:"FinalizationRegistry could be used to leak references outside sandbox"},{prop:"Reflect",target:globalThis,violationType:"reflect",strategy:"freeze",reason:"Reflect provides introspection capabilities"},{prop:"Proxy",target:globalThis,violationType:"proxy",strategy:"throw",reason:"Proxy allows intercepting and modifying object behavior"},{prop:"WebAssembly",target:globalThis,violationType:"webassembly",strategy:"throw",reason:"WebAssembly allows executing arbitrary compiled code"}];try{let t=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&e.push({prop:"constructor",target:Object.getPrototypeOf(async()=>{}),violationType:"async_function_constructor",strategy:"throw",reason:"AsyncFunction constructor allows arbitrary async code execution"})}catch{}try{let t=Object.getPrototypeOf(function*(){}).constructor;t&&t!==Function&&e.push({prop:"constructor",target:Object.getPrototypeOf(function*(){}),violationType:"generator_function_constructor",strategy:"throw",reason:"GeneratorFunction constructor allows arbitrary generator code execution"})}catch{}try{let t=Object.getPrototypeOf(async function*(){}).constructor;t&&t!==Function&&t!==Object.getPrototypeOf(async()=>{}).constructor&&e.push({prop:"constructor",target:Object.getPrototypeOf(async function*(){}),violationType:"async_generator_function_constructor",strategy:"throw",reason:"AsyncGeneratorFunction constructor allows arbitrary async generator code execution"})}catch{}return e.filter(t=>{try{return t.target[t.prop]!==void 0}catch{return!1}})}var Js=typeof __BROWSER__<"u"&&__BROWSER__,To=`
671
-
672
- This is a defense-in-depth measure and indicates a bug in just-bash. Please report this at security@vercel.com`,se=class extends Error{violation;constructor(t,s){super(t+To),this.violation=s,this.name="SecurityViolationError"}},ue=Js?null:new Oo,Do=1e3,Qs={enabled:!0,auditMode:!1};function xo(e){return e===void 0?{...Qs,enabled:!1}:typeof e=="boolean"?{...Qs,enabled:e}:{...Qs,...e}}var Ke=class e{static instance=null;config;refCount=0;originalDescriptors=[];violations=[];activationTime=0;totalActiveTimeMs=0;constructor(t){this.config=t}static getInstance(t){return e.instance||(e.instance=new e(xo(t))),e.instance}static resetInstance(){e.instance&&(e.instance.forceDeactivate(),e.instance=null)}static isInSandboxedContext(){return ue?ue?.getStore()?.sandboxActive===!0:!1}static getCurrentExecutionId(){if(ue)return ue?.getStore()?.executionId}updateConfig(t){this.config={...this.config,...t}}activate(){if(Js||!this.config.enabled){let s=qn();return{run:r=>r(),deactivate:()=>{},executionId:s}}this.refCount++,this.refCount===1&&(this.applyPatches(),this.activationTime=Date.now());let t=qn();return{run:s=>ue.run({sandboxActive:!0,executionId:t},s),deactivate:()=>{this.refCount--,this.refCount===0&&(this.restorePatches(),this.totalActiveTimeMs+=Date.now()-this.activationTime),this.refCount<0&&(this.refCount=0)},executionId:t}}forceDeactivate(){this.refCount>0&&(this.restorePatches(),this.totalActiveTimeMs+=Date.now()-this.activationTime),this.refCount=0}isActive(){return this.refCount>0}getStats(){return{violationsBlocked:this.violations.length,violations:[...this.violations],activeTimeMs:this.totalActiveTimeMs+(this.refCount>0?Date.now()-this.activationTime:0),refCount:this.refCount}}clearViolations(){this.violations=[]}getPathForTarget(t,s){return t===globalThis?`globalThis.${s}`:t===process?`process.${s}`:t===Error?`Error.${s}`:t===Function.prototype?`Function.prototype.${s}`:t===Object.prototype?`Object.prototype.${s}`:`<object>.${s}`}shouldBlock(){return Js||this.config.auditMode||!ue?!1:ue?.getStore()?.sandboxActive===!0}recordViolation(t,s,r){let n={timestamp:Date.now(),type:t,message:r,path:s,stack:new Error().stack,executionId:ue?.getStore()?.executionId};if(this.violations.length<Do&&this.violations.push(n),this.config.onViolation)try{this.config.onViolation(n)}catch(i){console.debug("[DefenseInDepthBox] onViolation callback threw:",i instanceof Error?i.message:i)}return n}createBlockingProxy(t,s,r){let n=this;return new Proxy(t,{apply(i,o,a){if(n.shouldBlock()){let l=`${s} is blocked during script execution`,c=n.recordViolation(r,s,l);throw new se(l,c)}return n.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&n.recordViolation(r,s,`${s} called (audit mode)`),Reflect.apply(i,o,a)},construct(i,o,a){if(n.shouldBlock()){let l=`${s} constructor is blocked during script execution`,c=n.recordViolation(r,s,l);throw new se(l,c)}return n.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&n.recordViolation(r,s,`${s} constructor called (audit mode)`),Reflect.construct(i,o,a)}})}createBlockingObjectProxy(t,s,r){let n=this;return new Proxy(t,{get(i,o,a){if(n.shouldBlock()){let l=`${s}.${String(o)}`,c=`${l} is blocked during script execution`,u=n.recordViolation(r,l,c);throw new se(c,u)}if(n.config.auditMode&&ue?.getStore()?.sandboxActive===!0){let l=`${s}.${String(o)}`;n.recordViolation(r,l,`${l} accessed (audit mode)`)}return Reflect.get(i,o,a)},set(i,o,a,l){if(n.shouldBlock()){let c=`${s}.${String(o)}`,u=`${c} modification is blocked during script execution`,f=n.recordViolation(r,c,u);throw new se(u,f)}return Reflect.set(i,o,a,l)},ownKeys(i){if(n.shouldBlock()){let o=`${s} enumeration is blocked during script execution`,a=n.recordViolation(r,s,o);throw new se(o,a)}return Reflect.ownKeys(i)},getOwnPropertyDescriptor(i,o){if(n.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} descriptor access is blocked during script execution`,c=n.recordViolation(r,a,l);throw new se(l,c)}return Reflect.getOwnPropertyDescriptor(i,o)},has(i,o){if(n.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} existence check is blocked during script execution`,c=n.recordViolation(r,a,l);throw new se(l,c)}return Reflect.has(i,o)}})}applyPatches(){let t=Un();for(let s of t)this.applyPatch(s);this.protectConstructorChain(),this.protectErrorPrepareStackTrace()}protectConstructorChain(){this.patchPrototypeConstructor(Function.prototype,"Function.prototype.constructor","function_constructor");try{let t=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&this.patchPrototypeConstructor(t.prototype,"AsyncFunction.prototype.constructor","async_function_constructor")}catch(t){console.debug("[DefenseInDepthBox] Could not patch AsyncFunction.prototype.constructor:",t instanceof Error?t.message:t)}try{let t=Object.getPrototypeOf(function*(){}).constructor;t&&t!==Function&&this.patchPrototypeConstructor(t.prototype,"GeneratorFunction.prototype.constructor","generator_function_constructor")}catch(t){console.debug("[DefenseInDepthBox] Could not patch GeneratorFunction.prototype.constructor:",t instanceof Error?t.message:t)}try{let t=Object.getPrototypeOf(async function*(){}).constructor,s=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&t!==s&&this.patchPrototypeConstructor(t.prototype,"AsyncGeneratorFunction.prototype.constructor","async_generator_function_constructor")}catch(t){console.debug("[DefenseInDepthBox] Could not patch AsyncGeneratorFunction.prototype.constructor:",t instanceof Error?t.message:t)}}protectErrorPrepareStackTrace(){let t=this;try{let s=Object.getOwnPropertyDescriptor(Error,"prepareStackTrace");this.originalDescriptors.push({target:Error,prop:"prepareStackTrace",descriptor:s});let r=s?.value;Object.defineProperty(Error,"prepareStackTrace",{get(){return r},set(n){if(t.shouldBlock()){let i="Error.prepareStackTrace modification is blocked during script execution",o=t.recordViolation("error_prepare_stack_trace","Error.prepareStackTrace",i);throw new se(i,o)}t.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&t.recordViolation("error_prepare_stack_trace","Error.prepareStackTrace","Error.prepareStackTrace set (audit mode)"),r=n},configurable:!0})}catch(s){console.debug("[DefenseInDepthBox] Could not protect Error.prepareStackTrace:",s instanceof Error?s.message:s)}}patchPrototypeConstructor(t,s,r){let n=this;try{let i=Object.getOwnPropertyDescriptor(t,"constructor");this.originalDescriptors.push({target:t,prop:"constructor",descriptor:i});let o=i?.value;Object.defineProperty(t,"constructor",{get(){if(n.shouldBlock()){let a=`${s} access is blocked during script execution`,l=n.recordViolation(r,s,a);throw new se(a,l)}return n.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&n.recordViolation(r,s,`${s} accessed (audit mode)`),o},set(a){if(n.shouldBlock()){let l=`${s} modification is blocked during script execution`,c=n.recordViolation(r,s,l);throw new se(l,c)}Object.defineProperty(this,"constructor",{value:a,writable:!0,configurable:!0})},configurable:!0})}catch(i){console.debug(`[DefenseInDepthBox] Could not patch ${s}:`,i instanceof Error?i.message:i)}}applyPatch(t){let{target:s,prop:r,violationType:n,strategy:i}=t;try{let o=s[r];if(o===void 0)return;let a=Object.getOwnPropertyDescriptor(s,r);if(this.originalDescriptors.push({target:s,prop:r,descriptor:a}),i==="freeze")typeof o=="object"&&o!==null&&Object.freeze(o);else{let l=this.getPathForTarget(s,r),c=typeof o=="function"?this.createBlockingProxy(o,l,n):this.createBlockingObjectProxy(o,l,n);Object.defineProperty(s,r,{value:c,writable:!0,configurable:!0})}}catch(o){let a=this.getPathForTarget(s,r);console.debug(`[DefenseInDepthBox] Could not patch ${a}:`,o instanceof Error?o.message:o)}}restorePatches(){for(let t=this.originalDescriptors.length-1;t>=0;t--){let{target:s,prop:r,descriptor:n}=this.originalDescriptors[t];try{n?Object.defineProperty(s,r,n):delete s[r]}catch(i){let o=this.getPathForTarget(s,r);console.debug(`[DefenseInDepthBox] Could not restore ${o}:`,i instanceof Error?i.message:i)}}this.originalDescriptors=[]}};var ut=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;state;constructor(t={}){let s=t.fs??new Ce(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),n=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
673
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Bn({...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=Ys(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth,this.state={env:n,cwd:r,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",ts(this.state.options)),this.state.env.set("BASHOPTS",ss(this.state.shoptOptions)),Sr(s,this.useDefaultLayout),r!=="/"&&s instanceof Ce)try{s.mkdirSync(r,{recursive:!0})}catch{}for(let i of wr(t.commands))this.registerCommand(i);if(t.network)for(let i of vr())this.registerCommand(i);if(t.python)for(let i of br())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)Er(i)?this.registerCommand($r(i)):this.registerCommand(i)}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let r=`#!/bin/bash
664
+ `));let E=y.fd??0;E!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),this.ctx.state.fileDescriptors.set(E,b)):s=b;continue}if(y.operator==="<<<"&&y.target.type==="Word"){s=`${await D(this.ctx,y.target)}
665
+ `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await D(this.ctx,y.target),b=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);s=await this.ctx.fs.readFile(b)}catch{let w=await D(this.ctx,y.target);for(let[b,E]of n)E===void 0?this.ctx.state.env.delete(b):this.ctx.state.env.set(b,E);return A(`bash: ${w}: No such file or directory
666
+ `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await D(this.ctx,y.target),b=Number.parseInt(w,10);if(!Number.isNaN(b)&&this.ctx.state.fileDescriptors){let E=this.ctx.state.fileDescriptors.get(b);if(E!==void 0)if(E.startsWith("__rw__:")){let T=Tn(E);T&&(s=T.content.slice(T.position),c=b)}else E.startsWith("__file__:")||E.startsWith("__file_append__:")||(s=E)}}}let u=await D(this.ctx,t.name),f=[],d=[];if(Ks(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let y of t.args){let w=await Or(this.ctx,y);if(w)f.push(w),d.push(!0);else{let b=await xr(this.ctx,y);if(b!==null)f.push(b),d.push(!0);else{let E=await be(this.ctx,y);for(let T of E.values)f.push(T),d.push(E.quoted)}}}else for(let y of t.args){let w=await be(this.ctx,y);for(let b of w.values)f.push(b),d.push(w.quoted)}if(!u){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(f.length>0){let w=f.shift();return d.shift(),await this.runCommand(w,f,d,s,!1,!1,c)}return _("","",this.ctx.state.lastExitCode)}return A(`bash: : command not found
667
+ `,127)}if(u==="exec"&&(f.length===0||f[0]==="--")){for(let y of t.redirections){if(y.target.type==="HereDoc"||y.fdVariable)continue;let w=await D(this.ctx,y.target),b=y.fd??(y.operator==="<"||y.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),y.operator){case">":case">|":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile(E,"","utf8"),this.ctx.state.fileDescriptors.set(b,`__file__:${E}`);break}case">>":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);this.ctx.state.fileDescriptors.set(b,`__file_append__:${E}`);break}case"<":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let T=await this.ctx.fs.readFile(E);this.ctx.state.fileDescriptors.set(b,T)}catch{return A(`bash: ${w}: No such file or directory
668
+ `)}break}case"<>":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let T=await this.ctx.fs.readFile(E);this.ctx.state.fileDescriptors.set(b,`__rw__:${E.length}:${E}:0:${T}`)}catch{await this.ctx.fs.writeFile(E,"","utf8"),this.ctx.state.fileDescriptors.set(b,`__rw__:${E.length}:${E}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let E=w.slice(0,-1),T=Number.parseInt(E,10);if(!Number.isNaN(T)){let N=this.ctx.state.fileDescriptors.get(T);N!==void 0?this.ctx.state.fileDescriptors.set(b,N):this.ctx.state.fileDescriptors.set(b,`__dupout__:${T}`),this.ctx.state.fileDescriptors.delete(T)}}else{let E=Number.parseInt(w,10);Number.isNaN(E)||this.ctx.state.fileDescriptors.set(b,`__dupout__:${E}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let E=w.slice(0,-1),T=Number.parseInt(E,10);if(!Number.isNaN(T)){let N=this.ctx.state.fileDescriptors.get(T);N!==void 0?this.ctx.state.fileDescriptors.set(b,N):this.ctx.state.fileDescriptors.set(b,`__dupin__:${T}`),this.ctx.state.fileDescriptors.delete(T)}}else{let E=Number.parseInt(w,10);Number.isNaN(E)||this.ctx.state.fileDescriptors.set(b,`__dupin__:${E}`)}break}}}for(let[y,w]of n)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 n.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await Rn(this.ctx,u,f);n.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(n)));let p,g=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(y){if(y instanceof le||y instanceof ce)g=y,p=L;else throw y}let S=i+m;if(S&&(p={...p,stderr:S+p.stderr}),p=await j(this.ctx,p,t.redirections),g)throw g;if(f.length>0){let y=f[f.length-1];if((u==="declare"||u==="local"||u==="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=u;let v=Ur(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!v)for(let[y,w]of n)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 n.keys())this.ctx.state.tempExportedVars.delete(y);return n.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,r,n,i=!1,o=!1,a=-1){let l={ctx:this.ctx,runCommand:(u,f,d,h,m,p,g)=>this.runCommand(u,f,d,h,m,p,g),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await An(l,t,s,r,n,i,o,a);return c!==null?c:Pn(l,t,s,n,o)}aliasExpansionStack=new Set;expandAlias(t){return is(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Vt(this.ctx,t)}async executeSubshell(t,s=""){return zn(this.ctx,t,s,r=>this.executeStatement(r))}async executeGroup(t,s=""){return Vn(this.ctx,t,s,r=>this.executeStatement(r))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await $e(this.ctx,t.redirections);if(s)return s;try{let r=await V(this.ctx,t.expression.expression),n=q(r!==0);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),j(this.ctx,n,t.redirections)}catch(r){let n=A(`bash: arithmetic expression: ${r.message}
669
+ `);return j(this.ctx,n,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await $e(this.ctx,t.redirections);if(s)return s;try{let r=await De(this.ctx,t.expression),n=q(r);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),j(this.ctx,n,t.redirections)}catch(r){let n=r instanceof Re?1:2,i=A(`bash: conditional expression: ${r.message}
670
+ `,n);return j(this.ctx,i,t.redirections)}}};var oe={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50};function jn(e){return e?{maxCallDepth:e.maxCallDepth??oe.maxCallDepth,maxCommandCount:e.maxCommandCount??oe.maxCommandCount,maxLoopIterations:e.maxLoopIterations??oe.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??oe.maxAwkIterations,maxSedIterations:e.maxSedIterations??oe.maxSedIterations,maxJqIterations:e.maxJqIterations??oe.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??oe.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??oe.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??oe.maxGlobOperations,maxStringLength:e.maxStringLength??oe.maxStringLength,maxArrayElements:e.maxArrayElements??oe.maxArrayElements,maxHeredocSize:e.maxHeredocSize??oe.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??oe.maxSubstitutionDepth}:{...oe}}function Hn(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function Ao(e){let t=Hn(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function Po(e,t){let s=Hn(e);if(!s)return!1;let r=Ao(t);return!r||s.origin!==r.origin?!1:r.pathPrefix==="/"||r.pathPrefix===""?!0:s.pathname.startsWith(r.pathPrefix)}function Ys(e,t){return!t||t.length===0?!1:t.some(s=>Po(e,s))}var Ze=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},Ge=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},Xe=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},jt=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}};var _o=20,Co=3e4,ko=["GET","HEAD"],No=new Set(["GET","HEAD","OPTIONS"]),Oo=new Set([301,302,303,307,308]);function Qs(e){let t=e.maxRedirects??_o,s=e.timeoutMs??Co,r=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??ko;function n(a){if(!e.dangerouslyAllowFullInternetAccess&&!Ys(a,e.allowedUrlPrefixes??[]))throw new Ze(a)}function i(a){if(e.dangerouslyAllowFullInternetAccess)return;let l=a.toUpperCase();if(!r.includes(l))throw new jt(l,r)}async function o(a,l={}){let c=l.method?.toUpperCase()??"GET";n(a),i(c);let u=a,f=0,d=l.followRedirects??!0,h=l.timeoutMs!==void 0?Math.min(l.timeoutMs,s):s;for(;;){let m=new AbortController,p=setTimeout(()=>m.abort(),h);try{let g={method:c,headers:l.headers,signal:m.signal,redirect:"manual"};l.body&&!No.has(c)&&(g.body=l.body);let S=await fetch(u,g);if(Oo.has(S.status)&&d){let v=S.headers.get("location");if(!v)return await Un(S,u);let C=new URL(v,u).href;if(!e.dangerouslyAllowFullInternetAccess&&!Ys(C,e.allowedUrlPrefixes??[]))throw new Xe(C);if(f++,f>t)throw new Ge(t);u=C;continue}return await Un(S,u)}finally{clearTimeout(p)}}}return o}async function Un(e,t){let s=Object.create(null);return e.headers.forEach((r,n)=>{s[n.toLowerCase()]=r}),{status:e.status,statusText:e.statusText,headers:s,body:await e.text(),url:t}}function qn(){let e=[{prop:"Function",target:globalThis,violationType:"function_constructor",strategy:"throw",reason:"Function constructor allows arbitrary code execution"},{prop:"eval",target:globalThis,violationType:"eval",strategy:"throw",reason:"eval() allows arbitrary code execution"},{prop:"setTimeout",target:globalThis,violationType:"setTimeout",strategy:"throw",reason:"setTimeout with string argument allows code execution"},{prop:"setInterval",target:globalThis,violationType:"setInterval",strategy:"throw",reason:"setInterval with string argument allows code execution"},{prop:"setImmediate",target:globalThis,violationType:"setImmediate",strategy:"throw",reason:"setImmediate could be used to escape sandbox context"},{prop:"env",target:process,violationType:"process_env",strategy:"throw",reason:"process.env could leak sensitive environment variables"},{prop:"binding",target:process,violationType:"process_binding",strategy:"throw",reason:"process.binding provides access to native Node.js modules"},{prop:"_linkedBinding",target:process,violationType:"process_binding",strategy:"throw",reason:"process._linkedBinding provides access to native Node.js modules"},{prop:"dlopen",target:process,violationType:"process_dlopen",strategy:"throw",reason:"process.dlopen allows loading native addons"},{prop:"WeakRef",target:globalThis,violationType:"weak_ref",strategy:"throw",reason:"WeakRef could be used to leak references outside sandbox"},{prop:"FinalizationRegistry",target:globalThis,violationType:"finalization_registry",strategy:"throw",reason:"FinalizationRegistry could be used to leak references outside sandbox"},{prop:"Reflect",target:globalThis,violationType:"reflect",strategy:"freeze",reason:"Reflect provides introspection capabilities"},{prop:"Proxy",target:globalThis,violationType:"proxy",strategy:"throw",reason:"Proxy allows intercepting and modifying object behavior"},{prop:"WebAssembly",target:globalThis,violationType:"webassembly",strategy:"throw",reason:"WebAssembly allows executing arbitrary compiled code"}];try{let t=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&e.push({prop:"constructor",target:Object.getPrototypeOf(async()=>{}),violationType:"async_function_constructor",strategy:"throw",reason:"AsyncFunction constructor allows arbitrary async code execution"})}catch{}try{let t=Object.getPrototypeOf(function*(){}).constructor;t&&t!==Function&&e.push({prop:"constructor",target:Object.getPrototypeOf(function*(){}),violationType:"generator_function_constructor",strategy:"throw",reason:"GeneratorFunction constructor allows arbitrary generator code execution"})}catch{}try{let t=Object.getPrototypeOf(async function*(){}).constructor;t&&t!==Function&&t!==Object.getPrototypeOf(async()=>{}).constructor&&e.push({prop:"constructor",target:Object.getPrototypeOf(async function*(){}),violationType:"async_generator_function_constructor",strategy:"throw",reason:"AsyncGeneratorFunction constructor allows arbitrary async generator code execution"})}catch{}return e.filter(t=>{try{return t.target[t.prop]!==void 0}catch{return!1}})}var Ht=typeof __BROWSER__<"u"&&__BROWSER__;function Zn(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var er=null;if(!Ht)try{let{createRequire:e}=await import("node:module");er=e(import.meta.url)("node:async_hooks").AsyncLocalStorage}catch(e){console.debug("[DefenseInDepthBox] AsyncLocalStorage not available, defense-in-depth disabled:",e instanceof Error?e.message:e)}var xo=`
671
+
672
+ This is a defense-in-depth measure and indicates a bug in just-bash. Please report this at security@vercel.com`,se=class extends Error{violation;constructor(t,s){super(t+xo),this.violation=s,this.name="SecurityViolationError"}},ue=!Ht&&er?new er:null,To=1e3,Js={enabled:!0,auditMode:!1};function Do(e){return e===void 0?{...Js,enabled:!1}:typeof e=="boolean"?{...Js,enabled:e}:{...Js,...e}}var Ke=class e{static instance=null;config;refCount=0;originalDescriptors=[];violations=[];activationTime=0;totalActiveTimeMs=0;constructor(t){this.config=t}static getInstance(t){return e.instance||(e.instance=new e(Do(t))),e.instance}static resetInstance(){e.instance&&(e.instance.forceDeactivate(),e.instance=null)}static isInSandboxedContext(){return ue?ue?.getStore()?.sandboxActive===!0:!1}static getCurrentExecutionId(){if(ue)return ue?.getStore()?.executionId}updateConfig(t){this.config={...this.config,...t}}activate(){if(Ht||!this.config.enabled){let s=Zn();return{run:r=>r(),deactivate:()=>{},executionId:s}}this.refCount++,this.refCount===1&&(this.applyPatches(),this.activationTime=Date.now());let t=Zn();return{run:s=>ue.run({sandboxActive:!0,executionId:t},s),deactivate:()=>{this.refCount--,this.refCount===0&&(this.restorePatches(),this.totalActiveTimeMs+=Date.now()-this.activationTime),this.refCount<0&&(this.refCount=0)},executionId:t}}forceDeactivate(){this.refCount>0&&(this.restorePatches(),this.totalActiveTimeMs+=Date.now()-this.activationTime),this.refCount=0}isActive(){return this.refCount>0}getStats(){return{violationsBlocked:this.violations.length,violations:[...this.violations],activeTimeMs:this.totalActiveTimeMs+(this.refCount>0?Date.now()-this.activationTime:0),refCount:this.refCount}}clearViolations(){this.violations=[]}getPathForTarget(t,s){return t===globalThis?`globalThis.${s}`:t===process?`process.${s}`:t===Error?`Error.${s}`:t===Function.prototype?`Function.prototype.${s}`:t===Object.prototype?`Object.prototype.${s}`:`<object>.${s}`}shouldBlock(){return Ht||this.config.auditMode||!ue?!1:ue?.getStore()?.sandboxActive===!0}recordViolation(t,s,r){let n={timestamp:Date.now(),type:t,message:r,path:s,stack:new Error().stack,executionId:ue?.getStore()?.executionId};if(this.violations.length<To&&this.violations.push(n),this.config.onViolation)try{this.config.onViolation(n)}catch(i){console.debug("[DefenseInDepthBox] onViolation callback threw:",i instanceof Error?i.message:i)}return n}createBlockingProxy(t,s,r){let n=this;return new Proxy(t,{apply(i,o,a){if(n.shouldBlock()){let l=`${s} is blocked during script execution`,c=n.recordViolation(r,s,l);throw new se(l,c)}return n.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&n.recordViolation(r,s,`${s} called (audit mode)`),Reflect.apply(i,o,a)},construct(i,o,a){if(n.shouldBlock()){let l=`${s} constructor is blocked during script execution`,c=n.recordViolation(r,s,l);throw new se(l,c)}return n.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&n.recordViolation(r,s,`${s} constructor called (audit mode)`),Reflect.construct(i,o,a)}})}createBlockingObjectProxy(t,s,r){let n=this;return new Proxy(t,{get(i,o,a){if(n.shouldBlock()){let l=`${s}.${String(o)}`,c=`${l} is blocked during script execution`,u=n.recordViolation(r,l,c);throw new se(c,u)}if(n.config.auditMode&&ue?.getStore()?.sandboxActive===!0){let l=`${s}.${String(o)}`;n.recordViolation(r,l,`${l} accessed (audit mode)`)}return Reflect.get(i,o,a)},set(i,o,a,l){if(n.shouldBlock()){let c=`${s}.${String(o)}`,u=`${c} modification is blocked during script execution`,f=n.recordViolation(r,c,u);throw new se(u,f)}return Reflect.set(i,o,a,l)},ownKeys(i){if(n.shouldBlock()){let o=`${s} enumeration is blocked during script execution`,a=n.recordViolation(r,s,o);throw new se(o,a)}return Reflect.ownKeys(i)},getOwnPropertyDescriptor(i,o){if(n.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} descriptor access is blocked during script execution`,c=n.recordViolation(r,a,l);throw new se(l,c)}return Reflect.getOwnPropertyDescriptor(i,o)},has(i,o){if(n.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} existence check is blocked during script execution`,c=n.recordViolation(r,a,l);throw new se(l,c)}return Reflect.has(i,o)}})}applyPatches(){let t=qn();for(let s of t)this.applyPatch(s);this.protectConstructorChain(),this.protectErrorPrepareStackTrace()}protectConstructorChain(){this.patchPrototypeConstructor(Function.prototype,"Function.prototype.constructor","function_constructor");try{let t=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&this.patchPrototypeConstructor(t.prototype,"AsyncFunction.prototype.constructor","async_function_constructor")}catch(t){console.debug("[DefenseInDepthBox] Could not patch AsyncFunction.prototype.constructor:",t instanceof Error?t.message:t)}try{let t=Object.getPrototypeOf(function*(){}).constructor;t&&t!==Function&&this.patchPrototypeConstructor(t.prototype,"GeneratorFunction.prototype.constructor","generator_function_constructor")}catch(t){console.debug("[DefenseInDepthBox] Could not patch GeneratorFunction.prototype.constructor:",t instanceof Error?t.message:t)}try{let t=Object.getPrototypeOf(async function*(){}).constructor,s=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&t!==s&&this.patchPrototypeConstructor(t.prototype,"AsyncGeneratorFunction.prototype.constructor","async_generator_function_constructor")}catch(t){console.debug("[DefenseInDepthBox] Could not patch AsyncGeneratorFunction.prototype.constructor:",t instanceof Error?t.message:t)}}protectErrorPrepareStackTrace(){let t=this;try{let s=Object.getOwnPropertyDescriptor(Error,"prepareStackTrace");this.originalDescriptors.push({target:Error,prop:"prepareStackTrace",descriptor:s});let r=s?.value;Object.defineProperty(Error,"prepareStackTrace",{get(){return r},set(n){if(t.shouldBlock()){let i="Error.prepareStackTrace modification is blocked during script execution",o=t.recordViolation("error_prepare_stack_trace","Error.prepareStackTrace",i);throw new se(i,o)}t.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&t.recordViolation("error_prepare_stack_trace","Error.prepareStackTrace","Error.prepareStackTrace set (audit mode)"),r=n},configurable:!0})}catch(s){console.debug("[DefenseInDepthBox] Could not protect Error.prepareStackTrace:",s instanceof Error?s.message:s)}}patchPrototypeConstructor(t,s,r){let n=this;try{let i=Object.getOwnPropertyDescriptor(t,"constructor");this.originalDescriptors.push({target:t,prop:"constructor",descriptor:i});let o=i?.value;Object.defineProperty(t,"constructor",{get(){if(n.shouldBlock()){let a=`${s} access is blocked during script execution`,l=n.recordViolation(r,s,a);throw new se(a,l)}return n.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&n.recordViolation(r,s,`${s} accessed (audit mode)`),o},set(a){if(n.shouldBlock()){let l=`${s} modification is blocked during script execution`,c=n.recordViolation(r,s,l);throw new se(l,c)}Object.defineProperty(this,"constructor",{value:a,writable:!0,configurable:!0})},configurable:!0})}catch(i){console.debug(`[DefenseInDepthBox] Could not patch ${s}:`,i instanceof Error?i.message:i)}}applyPatch(t){let{target:s,prop:r,violationType:n,strategy:i}=t;try{let o=s[r];if(o===void 0)return;let a=Object.getOwnPropertyDescriptor(s,r);if(this.originalDescriptors.push({target:s,prop:r,descriptor:a}),i==="freeze")typeof o=="object"&&o!==null&&Object.freeze(o);else{let l=this.getPathForTarget(s,r),c=typeof o=="function"?this.createBlockingProxy(o,l,n):this.createBlockingObjectProxy(o,l,n);Object.defineProperty(s,r,{value:c,writable:!0,configurable:!0})}}catch(o){let a=this.getPathForTarget(s,r);console.debug(`[DefenseInDepthBox] Could not patch ${a}:`,o instanceof Error?o.message:o)}}restorePatches(){for(let t=this.originalDescriptors.length-1;t>=0;t--){let{target:s,prop:r,descriptor:n}=this.originalDescriptors[t];try{n?Object.defineProperty(s,r,n):delete s[r]}catch(i){let o=this.getPathForTarget(s,r);console.debug(`[DefenseInDepthBox] Could not restore ${o}:`,i instanceof Error?i.message:i)}}this.originalDescriptors=[]}};var ut=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;state;constructor(t={}){let s=t.fs??new Ce(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),n=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
673
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=jn({...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=Qs(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth,this.state={env:n,cwd:r,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",ss(this.state.options)),this.state.env.set("BASHOPTS",rs(this.state.shoptOptions)),Ar(s,this.useDefaultLayout),r!=="/"&&s instanceof Ce)try{s.mkdirSync(r,{recursive:!0})}catch{}for(let i of vr(t.commands))this.registerCommand(i);if(t.network)for(let i of br())this.registerCommand(i);if(t.python)for(let i of Er())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)$r(i)?this.registerCommand(Sr(i)):this.registerCommand(i)}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let r=`#!/bin/bash
674
674
  # Built-in command: ${t.name}
675
675
  `;try{s.writeFileSync(`/bin/${t.name}`,r)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,r)}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.
676
676
  `,exitCode:1,env:me(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:me(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let r=s?.cwd??this.state.cwd,n,i=r;if(s?.cwd)if(s.env&&"PWD"in s.env)n=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{n=await this.fs.realpath(r),i=n}catch{n=r}else n=r;let o=new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))o.set(f,d);n!==void 0&&o.set("PWD",n);let a={...this.state,env:o,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable},l=t;s?.rawScript||(l=Io(t));let u=(this.defenseInDepthConfig?Ke.getInstance(this.defenseInDepthConfig):null)?.activate();try{let f=async()=>{let d=we(l),h={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn},p=await new ct(h,a).executeScript(d);return this.logResult(p)};return u?await u.run(f):await f()}catch(f){if(f instanceof z)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:me(this.state.env,s?.env)});if(f instanceof pe)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:me(this.state.env,s?.env)});if(f instanceof Re)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:me(this.state.env,s?.env)});if(f instanceof re)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:re.EXIT_CODE,env:me(this.state.env,s?.env)});if(f instanceof se)return this.logResult({stdout:"",stderr:`bash: security violation: ${f.message}
677
677
  `,exitCode:1,env:me(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${f.message}
678
- `,exitCode:2,env:me(this.state.env,s?.env)});if(f instanceof nr)return this.logResult({stdout:"",stderr:`bash: ${f.message}
678
+ `,exitCode:2,env:me(this.state.env,s?.env)});if(f instanceof ir)return this.logResult({stdout:"",stderr:`bash: ${f.message}
679
679
  `,exitCode:2,env:me(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${f.message}
680
680
  `,exitCode:1,env:me(this.state.env,s?.env)});throw f}finally{u?.deactivate()}}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 Oe(this.state.env)}};function Io(e){let t=e.split(`
681
681
  `),s=[],r=[];for(let n=0;n<t.length;n++){let i=t[n];if(r.length>0){let l=r[r.length-1];if((l.stripTabs?i.replace(/^\t+/,""):i)===l.delimiter){s.push(i.trimStart()),r.pop();continue}s.push(i);continue}let o=i.trimStart();s.push(o);let a=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let l of o.matchAll(a)){let c=l[1]==="-",u=l[3];r.push({delimiter:u,stripTabs:c})}}return s.join(`
682
- `)}var Ht=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new Ce,t?.mounts)for(let{mountPoint:s,filesystem:r}of t.mounts)this.mount(s,r)}mount(t,s){this.validateMountPath(t);let r=this.normalizePath(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,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 r of s)if(r==="."||r==="..")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 r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.join("/")}`}routePath(t){let s=this.normalizePath(t),r=null,n=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(s===o)return{fs:i.filesystem,relativePath:"/"};s.startsWith(`${o}/`)&&o.length>n&&(r=i,n=o.length)}if(r){let i=s.slice(n);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:s}}getChildMountPoints(t){let s=this.normalizePath(t),r=s==="/"?"/":`${s}/`,n=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!n.includes(a)&&n.push(a)}return n}async readFile(t,s){let{fs:r,relativePath:n}=this.routePath(t);return r.readFile(n,s)}async readFileBuffer(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readFileBuffer(r)}async writeFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.writeFile(i,s,r)}async appendFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.appendFile(i,s,r)}async exists(t){let s=this.normalizePath(t);if(this.mounts.has(s)||this.getChildMountPoints(s).length>0)return!0;let{fs:n,relativePath:i}=this.routePath(t);return n.exists(i)}async stat(t){let s=this.normalizePath(t),r=this.mounts.get(s);if(r)try{return await r.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:o}=this.routePath(t);return i.stat(o)}async lstat(t){let s=this.normalizePath(t),r=this.mounts.get(s);if(r)try{return await r.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:o}=this.routePath(t);return i.lstat(o)}async mkdir(t,s){let r=this.normalizePath(t);if(this.mounts.has(r)){if(s?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&s?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,s)}async readdir(t){let s=this.normalizePath(t),r=new Set,n=null,{fs:i,relativePath:o}=this.routePath(t);try{let l=await i.readdir(o);for(let c of l)r.add(c)}catch(l){let c=l.code,u=l.message||"";if(c!=="ENOENT"&&!u.includes("ENOENT"))throw l;n=l}let a=this.getChildMountPoints(s);for(let l of a)r.add(l);if(r.size===0&&n&&!this.mounts.has(s))throw n;return Array.from(r).sort()}async rm(t,s){let r=this.normalizePath(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot remove '${t}'`);if(this.getChildMountPoints(r).length>0)throw new Error(`EBUSY: contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:o}=this.routePath(t);return i.rm(o,s)}async cp(t,s,r){let n=this.routePath(t),i=this.routePath(s);return n.fs===i.fs?n.fs.cp(n.relativePath,i.relativePath,r):this.crossMountCopy(t,s,r)}async mv(t,s){let r=this.normalizePath(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let n=this.routePath(t),i=this.routePath(s);if(n.fs===i.fs)return n.fs.mv(n.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 r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}getAllPaths(){let t=new Set;for(let s of this.baseFs.getAllPaths())t.add(s);for(let s of this.mounts.keys()){let r=s.split("/").filter(Boolean),n="";for(let o of r)n=`${n}/${o}`,t.add(n);let i=this.mounts.get(s);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(s):t.add(`${s}${o}`)}return Array.from(t).sort()}async chmod(t,s){let r=this.normalizePath(t),n=this.mounts.get(r);if(n)return n.filesystem.chmod("/",s);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,s)}async symlink(t,s){let{fs:r,relativePath:n}=this.routePath(s);return r.symlink(t,n)}async link(t,s){let r=this.routePath(t),n=this.routePath(s);if(r.fs!==n.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${s}'`);return r.fs.link(r.relativePath,n.relativePath)}async readlink(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readlink(r)}async realpath(t){let s=this.normalizePath(t);if(this.mounts.get(s))return s;let{fs:n,relativePath:i}=this.routePath(t),o=await n.realpath(i);for(let[a,l]of this.mounts)if(s===a||s.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,s,r){let n=await this.lstat(t);if(n.isFile){let i=await this.readFileBuffer(t);await this.writeFile(s,i),await this.chmod(s,n.mode)}else if(n.isDirectory){if(!r?.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 o of i){let a=t==="/"?`/${o}`:`${t}/${o}`,l=s==="/"?`/${o}`:`${s}/${o}`;await this.crossMountCopy(a,l,r)}}else if(n.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,s)}}async utimes(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.utimes(i,s,r)}};import*as G from"node:fs";import*as Ye from"node:path";var Ro="/home/user/project";function J(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var Qe=class{root;mountPoint;readOnly;memory=new Map;deleted=new Set;constructor(t){this.root=Ye.resolve(t.root);let s=t.mountPoint??Ro;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 r of t)s+=`/${r}`,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 n=this.normalizePath(t).split("/").filter(Boolean),i="";for(let o of n)i+=`/${o}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let r=this.normalizePath(t),n=this.getDirname(r);n!=="/"&&this.mkdirSync(n);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(r,{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 r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.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),r=this.getRelativeToMount(s);if(r===null)return null;let n=Ye.join(this.root,r),i=Ye.resolve(n);return!i.startsWith(this.root)&&i!==this.root.replace(/\/$/,"")?null:i}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.lastIndexOf("/");return r===0?"/":s.slice(0,r)}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 r=this.toRealPath(s);if(!r)return!1;try{return await G.promises.access(r),!0}catch{return!1}}async readFile(t,s){let r=await this.readFileBuffer(t),n=he(s);return Ve(r,n)}async readFileBuffer(t,s=new Set){J(t,"open");let r=this.normalizePath(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let o=this.resolveSymlink(r,n.target);return this.readFileBuffer(o,s)}if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content}let i=this.toRealPath(r);if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let o=await G.promises.lstat(i);if(o.isSymbolicLink()){let l=await G.promises.readlink(i),c=this.resolveSymlink(r,l);return this.readFileBuffer(c,s)}if(o.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);let a=await G.promises.readFile(i);return new Uint8Array(a)}catch(o){throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):o}}async writeFile(t,s,r){J(t,"write"),this.assertWritable(`write '${t}'`);let n=this.normalizePath(t);this.ensureParentDirs(n);let i=he(r),o=_e(s,i);this.memory.set(n,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(n)}async appendFile(t,s,r){J(t,"append"),this.assertWritable(`append '${t}'`);let n=this.normalizePath(t),i=he(r),o=_e(s,i),a;try{a=await this.readFileBuffer(n)}catch{a=new Uint8Array(0)}let l=new Uint8Array(a.length+o.length);l.set(a),l.set(o,a.length),this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(n)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){J(t,"stat");let r=this.normalizePath(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let a=this.resolveSymlink(r,n.target);return this.stat(a,s)}let o=0;return n.type==="file"&&(o=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:o,mtime:n.mtime}}let i=this.toRealPath(r);if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await G.promises.stat(i);return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime}}catch(o){throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):o}}async lstat(t){J(t,"lstat");let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let r=this.memory.get(s);if(r){if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime};let i=0;return r.type==="file"&&(i=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:i,mtime:r.mtime}}let n=this.toRealPath(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await G.promises.lstat(n);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 r=this.dirname(t);return this.normalizePath(r==="/"?`/${s}`:`${r}/${s}`)}async mkdir(t,s){J(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=this.normalizePath(t);if(await this.existsInOverlay(r)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=this.dirname(r);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(r,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(r)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Map,n=new Set,i=s==="/"?"/":`${s}/`;for(let a of this.deleted)if(a.startsWith(i)){let l=a.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&n.add(c)}for(let[a,l]of this.memory)if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!n.has(u)&&!c.includes("/",1)&&r.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let o=this.toRealPath(s);if(o)try{let a=await G.promises.readdir(o,{withFileTypes:!0});for(let l of a)!n.has(l.name)&&!r.has(l.name)&&r.set(l.name,{name:l.name,isFile:l.isFile(),isDirectory:l.isDirectory(),isSymbolicLink:l.isSymbolicLink()})}catch(a){if(a.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else if(a.code!=="ENOTDIR")throw a}return r}async resolveForReaddir(t,s=!1){let r=this.normalizePath(t),n=new Set,i=s,o=this.memory.get(r);for(;o&&o.type==="symlink";){if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(r),i=!0,r=this.resolveSymlink(r,o.target),o=this.memory.get(r)}if(o)return{normalized:r,outsideOverlay:!1};if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let l=this.toRealPath(r);if(!l)return{normalized:r,outsideOverlay:!0};try{if((await G.promises.lstat(l)).isSymbolicLink()){let u=await G.promises.readlink(l),f=this.resolveSymlink(r,u);return this.resolveForReaddir(f,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){J(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){J(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,s){J(t,"rm"),this.assertWritable(`rm '${t}'`);let r=this.normalizePath(t);if(!await this.existsInOverlay(r)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(r)).isDirectory){let o=await this.readdir(r);if(o.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of o){let l=r==="/"?`/${a}`:`${r}/${a}`;await this.rm(l,s)}}}}catch{}this.deleted.add(r),this.memory.delete(r)}async cp(t,s,r){J(t,"cp"),J(s,"cp"),this.assertWritable(`cp '${s}'`);let n=this.normalizePath(t),i=this.normalizePath(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(n);for(let c of l){let u=n==="/"?`/${c}`:`${n}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}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 r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}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 r=this.toRealPath(t);if(r)try{let n=G.readdirSync(r);for(let i of n){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(o))continue;s.add(o);let a=Ye.join(r,i);G.statSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){J(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=this.normalizePath(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(r);if(i){i.mode=s;return}let o=await this.stat(r);if(o.isFile){let a=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:a,mode:s,mtime:new Date})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){J(s,"symlink"),this.assertWritable(`symlink '${s}'`);let r=this.normalizePath(s);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.memory.set(r,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(r)}async link(t,s){J(t,"link"),J(s,"link"),this.assertWritable(`link '${s}'`);let r=this.normalizePath(t),n=this.normalizePath(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(r);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:o.mode,mtime:new Date}),this.deleted.delete(n)}async readlink(t){J(t,"readlink");let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let r=this.memory.get(s);if(r){if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}let n=this.toRealPath(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{return await G.promises.readlink(n)}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){J(t,"realpath");let s=this.normalizePath(t),r=new Set,n=async a=>{let l=a==="/"?[]:a.slice(1).split("/"),c="";for(let u of l){if(c=`${c}/${u}`,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(c),d=0,h=40;for(;f&&f.type==="symlink"&&d<h;){if(r.add(c),c=this.resolveSymlink(c,f.target),d++,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(c)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let m=this.toRealPath(c);if(m)try{if((await G.promises.lstat(m)).isSymbolicLink()){let g=await G.promises.readlink(m);return r.add(c),c=this.resolveSymlink(c,g),n(c)}}catch(p){throw p.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):p}}}return c||"/"},i=await n(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,r){J(t,"utimes"),this.assertWritable(`utimes '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.memory.get(n);if(o){o.mtime=r;return}let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:l,mode:a.mode,mtime:r})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:a.mode,mtime:r})}};import*as B from"node:fs";import*as Se from"node:path";var Ut=class{root;constructor(t){if(this.root=Se.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),r=Se.join(this.root,s);return Se.resolve(r)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.join("/")}`||"/"}async readFile(t,s){let r=await this.readFileBuffer(t),n=he(s);return Ve(r,n)}async readFileBuffer(t){let s=this.toRealPath(t);try{let r=await B.promises.readFile(s);return new Uint8Array(r)}catch(r){let n=r;throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):n.code==="EISDIR"?new Error(`EISDIR: illegal operation on a directory, read '${t}'`):r}}async writeFile(t,s,r){let n=this.toRealPath(t),i=he(r),o=_e(s,i),a=Se.dirname(n);await B.promises.mkdir(a,{recursive:!0}),await B.promises.writeFile(n,o)}async appendFile(t,s,r){let n=this.toRealPath(t),i=he(r),o=_e(s,i),a=Se.dirname(n);await B.promises.mkdir(a,{recursive:!0}),await B.promises.appendFile(n,o)}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 r=await B.promises.stat(s);return{isFile:r.isFile(),isDirectory:r.isDirectory(),isSymbolicLink:!1,mode:r.mode,size:r.size,mtime:r.mtime}}catch(r){throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):r}}async lstat(t){let s=this.toRealPath(t);try{let r=await B.promises.lstat(s);return{isFile:r.isFile(),isDirectory:r.isDirectory(),isSymbolicLink:r.isSymbolicLink(),mode:r.mode,size:r.size,mtime:r.mtime}}catch(r){throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):r}}async mkdir(t,s){let r=this.toRealPath(t);try{await B.promises.mkdir(r,{recursive:s?.recursive})}catch(n){let i=n;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}'`):n}}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){let s=this.toRealPath(t);try{return(await B.promises.readdir(s,{withFileTypes:!0})).map(n=>({name:n.name,isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink()})).sort((n,i)=>n.name<i.name?-1:n.name>i.name?1:0)}catch(r){let n=r;throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, scandir '${t}'`):n.code==="ENOTDIR"?new Error(`ENOTDIR: not a directory, scandir '${t}'`):r}}async rm(t,s){let r=this.toRealPath(t);try{await B.promises.rm(r,{recursive:s?.recursive??!1,force:s?.force??!1})}catch(n){let i=n;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}'`):n}}async cp(t,s,r){let n=this.toRealPath(t),i=this.toRealPath(s);try{await B.promises.cp(n,i,{recursive:r?.recursive??!1})}catch(o){let a=o;throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, cp '${t}'`):a.code==="EISDIR"?new Error(`EISDIR: is a directory, cp '${t}'`):o}}async mv(t,s){let r=this.toRealPath(t),n=this.toRealPath(s),i=Se.dirname(n);await B.promises.mkdir(i,{recursive:!0});try{await B.promises.rename(r,n)}catch(o){let a=o;if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(a.code==="EXDEV"){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0});return}throw o}}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}getAllPaths(){let t=[];return this.scanDir("/",t),t}scanDir(t,s){let r=this.toRealPath(t);try{let n=B.readdirSync(r);for(let i of n){let o=t==="/"?`/${i}`:`${t}/${i}`;s.push(o);let a=Se.join(r,i);B.statSync(a).isDirectory()&&this.scanDir(o,s)}}catch{}}async chmod(t,s){let r=this.toRealPath(t);try{await B.promises.chmod(r,s)}catch(n){throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, chmod '${t}'`):n}}async symlink(t,s){let r=this.toRealPath(s);try{await B.promises.symlink(t,r)}catch(n){throw n.code==="EEXIST"?new Error(`EEXIST: file already exists, symlink '${s}'`):n}}async link(t,s){let r=this.toRealPath(t),n=this.toRealPath(s);try{await B.promises.link(r,n)}catch(i){let o=i;throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, link '${t}'`):o.code==="EEXIST"?new Error(`EEXIST: file already exists, link '${s}'`):o.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(r){let n=r;throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, readlink '${t}'`):n.code==="EINVAL"?new Error(`EINVAL: invalid argument, readlink '${t}'`):r}}async realpath(t){let s=this.toRealPath(t);try{let r=await B.promises.realpath(s);return r.startsWith(this.root)?r.slice(this.root.length)||"/":r}catch(r){let n=r;throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):n.code==="ELOOP"?new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`):r}}async utimes(t,s,r){let n=this.toRealPath(t);try{await B.promises.utimes(n,s,r)}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, utimes '${t}'`):i}}};var Je=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;resultPromise;constructor(t,s,r,n,i=!1){this.cmdId=crypto.randomUUID(),this.cwd=r,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=s,this.env=n,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 qt=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 Qe({root:t.overlayRoot})}let r=new ut({env:t?.env,cwd:t?.cwd,fs:s,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network});return new e(r)}async runCommand(t,s){let r=s?.cwd??this.bashEnv.getCwd(),n=s?.cwd!==void 0;return new Je(this.bashEnv,t,r,s?.env,n)}async writeFiles(t){for(let[s,r]of Object.entries(t)){let n;typeof r=="string"?n=r:r.encoding==="base64"?n=Buffer.from(r.content,"base64").toString("utf-8"):n=r.content;let i=s.substring(0,s.lastIndexOf("/"))||"/";i!=="/"&&await this.bashEnv.exec(`mkdir -p ${i}`),await this.bashEnv.writeFile(s,n)}}async readFile(t,s){let r=await this.bashEnv.readFile(t);return s==="base64"?Buffer.from(r).toString("base64"):r}async mkDir(t,s){let r=s?.recursive?"-p":"";await this.bashEnv.exec(`mkdir ${r} ${t}`)}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};var Zt=class{violations=[];violationsByType=new Map;options;constructor(t={}){this.options={maxViolationsPerType:t.maxViolationsPerType??100,includeStackTraces:t.includeStackTraces??!0,onViolation:t.onViolation??(()=>{}),logToConsole:t.logToConsole??!1}}record(t){let s=this.options.includeStackTraces?t:{...t,stack:void 0};this.violations.unshift(s);let r=this.violationsByType.get(t.type);r||(r=[],this.violationsByType.set(t.type,r)),r.length<this.options.maxViolationsPerType&&r.push(s),this.options.logToConsole&&console.warn(`[SecurityViolation] ${t.type}: ${t.message}`,t.path),this.options.onViolation(s)}getViolations(){return[...this.violations]}getViolationsByType(t){return[...this.violationsByType.get(t)??[]]}getSummary(){let t=[];for(let[s,r]of this.violationsByType){if(r.length===0)continue;let n=new Set,i=Number.POSITIVE_INFINITY,o=0;for(let a of r)n.add(a.path),i=Math.min(i,a.timestamp),o=Math.max(o,a.timestamp);t.push({type:s,count:r.length,firstSeen:i,lastSeen:o,paths:Array.from(n)})}return t.sort((s,r)=>r.count-s.count),t}getTotalCount(){return this.violations.length}hasViolations(){return this.violations.length>0}clear(){this.violations=[],this.violationsByType.clear()}createCallback(){return t=>this.record(t)}};function Zn(){return e=>{console.warn("[DefenseInDepth] Security violation detected:",`
682
+ `)}var Ut=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new Ce,t?.mounts)for(let{mountPoint:s,filesystem:r}of t.mounts)this.mount(s,r)}mount(t,s){this.validateMountPath(t);let r=this.normalizePath(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,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 r of s)if(r==="."||r==="..")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 r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.join("/")}`}routePath(t){let s=this.normalizePath(t),r=null,n=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(s===o)return{fs:i.filesystem,relativePath:"/"};s.startsWith(`${o}/`)&&o.length>n&&(r=i,n=o.length)}if(r){let i=s.slice(n);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:s}}getChildMountPoints(t){let s=this.normalizePath(t),r=s==="/"?"/":`${s}/`,n=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!n.includes(a)&&n.push(a)}return n}async readFile(t,s){let{fs:r,relativePath:n}=this.routePath(t);return r.readFile(n,s)}async readFileBuffer(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readFileBuffer(r)}async writeFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.writeFile(i,s,r)}async appendFile(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.appendFile(i,s,r)}async exists(t){let s=this.normalizePath(t);if(this.mounts.has(s)||this.getChildMountPoints(s).length>0)return!0;let{fs:n,relativePath:i}=this.routePath(t);return n.exists(i)}async stat(t){let s=this.normalizePath(t),r=this.mounts.get(s);if(r)try{return await r.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:o}=this.routePath(t);return i.stat(o)}async lstat(t){let s=this.normalizePath(t),r=this.mounts.get(s);if(r)try{return await r.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:o}=this.routePath(t);return i.lstat(o)}async mkdir(t,s){let r=this.normalizePath(t);if(this.mounts.has(r)){if(s?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&s?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,s)}async readdir(t){let s=this.normalizePath(t),r=new Set,n=null,{fs:i,relativePath:o}=this.routePath(t);try{let l=await i.readdir(o);for(let c of l)r.add(c)}catch(l){let c=l.code,u=l.message||"";if(c!=="ENOENT"&&!u.includes("ENOENT"))throw l;n=l}let a=this.getChildMountPoints(s);for(let l of a)r.add(l);if(r.size===0&&n&&!this.mounts.has(s))throw n;return Array.from(r).sort()}async rm(t,s){let r=this.normalizePath(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot remove '${t}'`);if(this.getChildMountPoints(r).length>0)throw new Error(`EBUSY: contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:o}=this.routePath(t);return i.rm(o,s)}async cp(t,s,r){let n=this.routePath(t),i=this.routePath(s);return n.fs===i.fs?n.fs.cp(n.relativePath,i.relativePath,r):this.crossMountCopy(t,s,r)}async mv(t,s){let r=this.normalizePath(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let n=this.routePath(t),i=this.routePath(s);if(n.fs===i.fs)return n.fs.mv(n.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 r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}getAllPaths(){let t=new Set;for(let s of this.baseFs.getAllPaths())t.add(s);for(let s of this.mounts.keys()){let r=s.split("/").filter(Boolean),n="";for(let o of r)n=`${n}/${o}`,t.add(n);let i=this.mounts.get(s);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(s):t.add(`${s}${o}`)}return Array.from(t).sort()}async chmod(t,s){let r=this.normalizePath(t),n=this.mounts.get(r);if(n)return n.filesystem.chmod("/",s);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,s)}async symlink(t,s){let{fs:r,relativePath:n}=this.routePath(s);return r.symlink(t,n)}async link(t,s){let r=this.routePath(t),n=this.routePath(s);if(r.fs!==n.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${s}'`);return r.fs.link(r.relativePath,n.relativePath)}async readlink(t){let{fs:s,relativePath:r}=this.routePath(t);return s.readlink(r)}async realpath(t){let s=this.normalizePath(t);if(this.mounts.get(s))return s;let{fs:n,relativePath:i}=this.routePath(t),o=await n.realpath(i);for(let[a,l]of this.mounts)if(s===a||s.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,s,r){let n=await this.lstat(t);if(n.isFile){let i=await this.readFileBuffer(t);await this.writeFile(s,i),await this.chmod(s,n.mode)}else if(n.isDirectory){if(!r?.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 o of i){let a=t==="/"?`/${o}`:`${t}/${o}`,l=s==="/"?`/${o}`:`${s}/${o}`;await this.crossMountCopy(a,l,r)}}else if(n.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,s)}}async utimes(t,s,r){let{fs:n,relativePath:i}=this.routePath(t);return n.utimes(i,s,r)}};import*as G from"node:fs";import*as Ye from"node:path";var Ro="/home/user/project";function J(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var Qe=class{root;mountPoint;readOnly;memory=new Map;deleted=new Set;constructor(t){this.root=Ye.resolve(t.root);let s=t.mountPoint??Ro;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 r of t)s+=`/${r}`,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 n=this.normalizePath(t).split("/").filter(Boolean),i="";for(let o of n)i+=`/${o}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let r=this.normalizePath(t),n=this.getDirname(r);n!=="/"&&this.mkdirSync(n);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(r,{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 r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.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),r=this.getRelativeToMount(s);if(r===null)return null;let n=Ye.join(this.root,r),i=Ye.resolve(n);return!i.startsWith(this.root)&&i!==this.root.replace(/\/$/,"")?null:i}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.lastIndexOf("/");return r===0?"/":s.slice(0,r)}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 r=this.toRealPath(s);if(!r)return!1;try{return await G.promises.access(r),!0}catch{return!1}}async readFile(t,s){let r=await this.readFileBuffer(t),n=he(s);return Ve(r,n)}async readFileBuffer(t,s=new Set){J(t,"open");let r=this.normalizePath(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let o=this.resolveSymlink(r,n.target);return this.readFileBuffer(o,s)}if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content}let i=this.toRealPath(r);if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let o=await G.promises.lstat(i);if(o.isSymbolicLink()){let l=await G.promises.readlink(i),c=this.resolveSymlink(r,l);return this.readFileBuffer(c,s)}if(o.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);let a=await G.promises.readFile(i);return new Uint8Array(a)}catch(o){throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):o}}async writeFile(t,s,r){J(t,"write"),this.assertWritable(`write '${t}'`);let n=this.normalizePath(t);this.ensureParentDirs(n);let i=he(r),o=_e(s,i);this.memory.set(n,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(n)}async appendFile(t,s,r){J(t,"append"),this.assertWritable(`append '${t}'`);let n=this.normalizePath(t),i=he(r),o=_e(s,i),a;try{a=await this.readFileBuffer(n)}catch{a=new Uint8Array(0)}let l=new Uint8Array(a.length+o.length);l.set(a),l.set(o,a.length),this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(n)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){J(t,"stat");let r=this.normalizePath(t);if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(r),this.deleted.has(r))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let n=this.memory.get(r);if(n){if(n.type==="symlink"){let a=this.resolveSymlink(r,n.target);return this.stat(a,s)}let o=0;return n.type==="file"&&(o=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:o,mtime:n.mtime}}let i=this.toRealPath(r);if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await G.promises.stat(i);return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime}}catch(o){throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):o}}async lstat(t){J(t,"lstat");let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let r=this.memory.get(s);if(r){if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime};let i=0;return r.type==="file"&&(i=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:i,mtime:r.mtime}}let n=this.toRealPath(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await G.promises.lstat(n);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 r=this.dirname(t);return this.normalizePath(r==="/"?`/${s}`:`${r}/${s}`)}async mkdir(t,s){J(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=this.normalizePath(t);if(await this.existsInOverlay(r)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=this.dirname(r);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(r,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(r)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Map,n=new Set,i=s==="/"?"/":`${s}/`;for(let a of this.deleted)if(a.startsWith(i)){let l=a.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&n.add(c)}for(let[a,l]of this.memory)if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!n.has(u)&&!c.includes("/",1)&&r.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let o=this.toRealPath(s);if(o)try{let a=await G.promises.readdir(o,{withFileTypes:!0});for(let l of a)!n.has(l.name)&&!r.has(l.name)&&r.set(l.name,{name:l.name,isFile:l.isFile(),isDirectory:l.isDirectory(),isSymbolicLink:l.isSymbolicLink()})}catch(a){if(a.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else if(a.code!=="ENOTDIR")throw a}return r}async resolveForReaddir(t,s=!1){let r=this.normalizePath(t),n=new Set,i=s,o=this.memory.get(r);for(;o&&o.type==="symlink";){if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(r),i=!0,r=this.resolveSymlink(r,o.target),o=this.memory.get(r)}if(o)return{normalized:r,outsideOverlay:!1};if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let l=this.toRealPath(r);if(!l)return{normalized:r,outsideOverlay:!0};try{if((await G.promises.lstat(l)).isSymbolicLink()){let u=await G.promises.readlink(l),f=this.resolveSymlink(r,u);return this.resolveForReaddir(f,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){J(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){J(t,"scandir");let{normalized:s,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let n=await this.readdirCore(t,s);return Array.from(n.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,s){J(t,"rm"),this.assertWritable(`rm '${t}'`);let r=this.normalizePath(t);if(!await this.existsInOverlay(r)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(r)).isDirectory){let o=await this.readdir(r);if(o.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of o){let l=r==="/"?`/${a}`:`${r}/${a}`;await this.rm(l,s)}}}}catch{}this.deleted.add(r),this.memory.delete(r)}async cp(t,s,r){J(t,"cp"),J(s,"cp"),this.assertWritable(`cp '${s}'`);let n=this.normalizePath(t),i=this.normalizePath(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(n);for(let c of l){let u=n==="/"?`/${c}`:`${n}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}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 r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}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 r=this.toRealPath(t);if(r)try{let n=G.readdirSync(r);for(let i of n){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(o))continue;s.add(o);let a=Ye.join(r,i);G.statSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){J(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=this.normalizePath(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(r);if(i){i.mode=s;return}let o=await this.stat(r);if(o.isFile){let a=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:a,mode:s,mtime:new Date})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){J(s,"symlink"),this.assertWritable(`symlink '${s}'`);let r=this.normalizePath(s);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.memory.set(r,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(r)}async link(t,s){J(t,"link"),J(s,"link"),this.assertWritable(`link '${s}'`);let r=this.normalizePath(t),n=this.normalizePath(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(r);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(n),this.memory.set(n,{type:"file",content:l,mode:o.mode,mtime:new Date}),this.deleted.delete(n)}async readlink(t){J(t,"readlink");let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let r=this.memory.get(s);if(r){if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}let n=this.toRealPath(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{return await G.promises.readlink(n)}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){J(t,"realpath");let s=this.normalizePath(t),r=new Set,n=async a=>{let l=a==="/"?[]:a.slice(1).split("/"),c="";for(let u of l){if(c=`${c}/${u}`,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(c),d=0,h=40;for(;f&&f.type==="symlink"&&d<h;){if(r.add(c),c=this.resolveSymlink(c,f.target),d++,r.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(c)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let m=this.toRealPath(c);if(m)try{if((await G.promises.lstat(m)).isSymbolicLink()){let g=await G.promises.readlink(m);return r.add(c),c=this.resolveSymlink(c,g),n(c)}}catch(p){throw p.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):p}}}return c||"/"},i=await n(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,r){J(t,"utimes"),this.assertWritable(`utimes '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.memory.get(n);if(o){o.mtime=r;return}let a=await this.stat(n);if(a.isFile){let l=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:l,mode:a.mode,mtime:r})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:a.mode,mtime:r})}};import*as B from"node:fs";import*as Se from"node:path";var qt=class{root;constructor(t){if(this.root=Se.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),r=Se.join(this.root,s);return Se.resolve(r)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.join("/")}`||"/"}async readFile(t,s){let r=await this.readFileBuffer(t),n=he(s);return Ve(r,n)}async readFileBuffer(t){let s=this.toRealPath(t);try{let r=await B.promises.readFile(s);return new Uint8Array(r)}catch(r){let n=r;throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):n.code==="EISDIR"?new Error(`EISDIR: illegal operation on a directory, read '${t}'`):r}}async writeFile(t,s,r){let n=this.toRealPath(t),i=he(r),o=_e(s,i),a=Se.dirname(n);await B.promises.mkdir(a,{recursive:!0}),await B.promises.writeFile(n,o)}async appendFile(t,s,r){let n=this.toRealPath(t),i=he(r),o=_e(s,i),a=Se.dirname(n);await B.promises.mkdir(a,{recursive:!0}),await B.promises.appendFile(n,o)}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 r=await B.promises.stat(s);return{isFile:r.isFile(),isDirectory:r.isDirectory(),isSymbolicLink:!1,mode:r.mode,size:r.size,mtime:r.mtime}}catch(r){throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):r}}async lstat(t){let s=this.toRealPath(t);try{let r=await B.promises.lstat(s);return{isFile:r.isFile(),isDirectory:r.isDirectory(),isSymbolicLink:r.isSymbolicLink(),mode:r.mode,size:r.size,mtime:r.mtime}}catch(r){throw r.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):r}}async mkdir(t,s){let r=this.toRealPath(t);try{await B.promises.mkdir(r,{recursive:s?.recursive})}catch(n){let i=n;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}'`):n}}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){let s=this.toRealPath(t);try{return(await B.promises.readdir(s,{withFileTypes:!0})).map(n=>({name:n.name,isFile:n.isFile(),isDirectory:n.isDirectory(),isSymbolicLink:n.isSymbolicLink()})).sort((n,i)=>n.name<i.name?-1:n.name>i.name?1:0)}catch(r){let n=r;throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, scandir '${t}'`):n.code==="ENOTDIR"?new Error(`ENOTDIR: not a directory, scandir '${t}'`):r}}async rm(t,s){let r=this.toRealPath(t);try{await B.promises.rm(r,{recursive:s?.recursive??!1,force:s?.force??!1})}catch(n){let i=n;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}'`):n}}async cp(t,s,r){let n=this.toRealPath(t),i=this.toRealPath(s);try{await B.promises.cp(n,i,{recursive:r?.recursive??!1})}catch(o){let a=o;throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, cp '${t}'`):a.code==="EISDIR"?new Error(`EISDIR: is a directory, cp '${t}'`):o}}async mv(t,s){let r=this.toRealPath(t),n=this.toRealPath(s),i=Se.dirname(n);await B.promises.mkdir(i,{recursive:!0});try{await B.promises.rename(r,n)}catch(o){let a=o;if(a.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(a.code==="EXDEV"){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0});return}throw o}}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}getAllPaths(){let t=[];return this.scanDir("/",t),t}scanDir(t,s){let r=this.toRealPath(t);try{let n=B.readdirSync(r);for(let i of n){let o=t==="/"?`/${i}`:`${t}/${i}`;s.push(o);let a=Se.join(r,i);B.statSync(a).isDirectory()&&this.scanDir(o,s)}}catch{}}async chmod(t,s){let r=this.toRealPath(t);try{await B.promises.chmod(r,s)}catch(n){throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, chmod '${t}'`):n}}async symlink(t,s){let r=this.toRealPath(s);try{await B.promises.symlink(t,r)}catch(n){throw n.code==="EEXIST"?new Error(`EEXIST: file already exists, symlink '${s}'`):n}}async link(t,s){let r=this.toRealPath(t),n=this.toRealPath(s);try{await B.promises.link(r,n)}catch(i){let o=i;throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, link '${t}'`):o.code==="EEXIST"?new Error(`EEXIST: file already exists, link '${s}'`):o.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(r){let n=r;throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, readlink '${t}'`):n.code==="EINVAL"?new Error(`EINVAL: invalid argument, readlink '${t}'`):r}}async realpath(t){let s=this.toRealPath(t);try{let r=await B.promises.realpath(s);return r.startsWith(this.root)?r.slice(this.root.length)||"/":r}catch(r){let n=r;throw n.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):n.code==="ELOOP"?new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`):r}}async utimes(t,s,r){let n=this.toRealPath(t);try{await B.promises.utimes(n,s,r)}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, utimes '${t}'`):i}}};var Je=class{cmdId;cwd;startedAt;exitCode;bashEnv;cmdLine;env;explicitCwd;resultPromise;constructor(t,s,r,n,i=!1){this.cmdId=crypto.randomUUID(),this.cwd=r,this.startedAt=new Date,this.bashEnv=t,this.cmdLine=s,this.env=n,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 Qe({root:t.overlayRoot})}let r=new ut({env:t?.env,cwd:t?.cwd,fs:s,maxCallDepth:t?.maxCallDepth,maxCommandCount:t?.maxCommandCount,maxLoopIterations:t?.maxLoopIterations,network:t?.network});return new e(r)}async runCommand(t,s){let r=s?.cwd??this.bashEnv.getCwd(),n=s?.cwd!==void 0;return new Je(this.bashEnv,t,r,s?.env,n)}async writeFiles(t){for(let[s,r]of Object.entries(t)){let n;typeof r=="string"?n=r:r.encoding==="base64"?n=Buffer.from(r.content,"base64").toString("utf-8"):n=r.content;let i=s.substring(0,s.lastIndexOf("/"))||"/";i!=="/"&&await this.bashEnv.exec(`mkdir -p ${i}`),await this.bashEnv.writeFile(s,n)}}async readFile(t,s){let r=await this.bashEnv.readFile(t);return s==="base64"?Buffer.from(r).toString("base64"):r}async mkDir(t,s){let r=s?.recursive?"-p":"";await this.bashEnv.exec(`mkdir ${r} ${t}`)}async stop(){}async extendTimeout(t){}get domain(){}get bashEnvInstance(){return this.bashEnv}};var Gt=class{violations=[];violationsByType=new Map;options;constructor(t={}){this.options={maxViolationsPerType:t.maxViolationsPerType??100,includeStackTraces:t.includeStackTraces??!0,onViolation:t.onViolation??(()=>{}),logToConsole:t.logToConsole??!1}}record(t){let s=this.options.includeStackTraces?t:{...t,stack:void 0};this.violations.unshift(s);let r=this.violationsByType.get(t.type);r||(r=[],this.violationsByType.set(t.type,r)),r.length<this.options.maxViolationsPerType&&r.push(s),this.options.logToConsole&&console.warn(`[SecurityViolation] ${t.type}: ${t.message}`,t.path),this.options.onViolation(s)}getViolations(){return[...this.violations]}getViolationsByType(t){return[...this.violationsByType.get(t)??[]]}getSummary(){let t=[];for(let[s,r]of this.violationsByType){if(r.length===0)continue;let n=new Set,i=Number.POSITIVE_INFINITY,o=0;for(let a of r)n.add(a.path),i=Math.min(i,a.timestamp),o=Math.max(o,a.timestamp);t.push({type:s,count:r.length,firstSeen:i,lastSeen:o,paths:Array.from(n)})}return t.sort((s,r)=>r.count-s.count),t}getTotalCount(){return this.violations.length}hasViolations(){return this.violations.length>0}clear(){this.violations=[],this.violationsByType.clear()}createCallback(){return t=>this.record(t)}};function Gn(){return e=>{console.warn("[DefenseInDepth] Security violation detected:",`
683
683
  Type: ${e.type}`,`
684
684
  Path: ${e.path}`,`
685
685
  Message: ${e.message}`,e.executionId?`
686
- ExecutionId: ${e.executionId}`:"")}}export{ut as Bash,Ke as DefenseInDepthBox,Ce as InMemoryFs,Ht as MountableFs,Ze as NetworkAccessDeniedError,Qe as OverlayFs,Ut as ReadWriteFs,Xe as RedirectNotAllowedError,qt as Sandbox,Je as SandboxCommand,se as SecurityViolationError,Zt as SecurityViolationLogger,Ge as TooManyRedirectsError,Zn as createConsoleViolationCallback,ei as defineCommand,Yn as getCommandNames,Qn as getNetworkCommandNames,Jn as getPythonCommandNames};
686
+ ExecutionId: ${e.executionId}`:"")}}export{ut as Bash,Ke as DefenseInDepthBox,Ce as InMemoryFs,Ut as MountableFs,Ze as NetworkAccessDeniedError,Qe as OverlayFs,qt as ReadWriteFs,Xe as RedirectNotAllowedError,Zt as Sandbox,Je as SandboxCommand,se as SecurityViolationError,Gt as SecurityViolationLogger,Ge as TooManyRedirectsError,Gn as createConsoleViolationCallback,ti as defineCommand,Qn as getCommandNames,Jn as getNetworkCommandNames,ei as getPythonCommandNames};