just-bash 2.11.2 → 2.11.3

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,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
- import{B as _n,C as Cn,D as ce,E as Be,F as Y,G as Ae,H as _t,I as Pn,J as x,K as kn,L as Nn,M as Pe,N as cs,O as Ct,P as V,a as gn,b as ns,c as wn,d as St,e as K,f as W,g as Ee,h as te,i as Ce,j as Re,k as rs,l as At,m as vn,n as is,o as bn,p as ge,q as Te,r as $n,s as En,t as os,u as as,v as Le,w as Sn,x as An,y as Se,z as ls}from"./chunks/chunk-LS25HZNJ.js";import{a as Ie,b as $e}from"./chunks/chunk-4PRVMER6.js";import{a as rt}from"./chunks/chunk-SE4C7FJY.js";import{a as he,b as pe,c as le,d as ye,e as mn,f as z,g as Ve,h as bt,i as $t,j as yn,k as re,l as xe,m as Et,n as ve}from"./chunks/chunk-K5IXNHO5.js";import"./chunks/chunk-OBH7XN5N.js";import{a as be}from"./chunks/chunk-4VDEBYW7.js";import{a as vt}from"./chunks/chunk-KGOUQS5A.js";import*as pi from"node:fs";import*as mi from"node:readline";var Ge=[{name:"echo",load:async()=>(await import("./chunks/echo-2MUAOGUE.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-3J7U3HHI.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-TZC5BRAY.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-ZXYOL67L.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-6OKMS3KO.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-5KLM4EA6.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DWKSZGOQ.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-5QIBTLJG.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XH2ZB7WT.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-OY7X62QC.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-5TCJXDGY.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-4O2C4V42.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-6VBAPL3Y.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-YNOUXNUY.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-YMNRW3F3.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-V537TDFR.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-ZIV3TFVG.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-XH7E4E2C.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-FRIPZKKT.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-FRIPZKKT.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-FRIPZKKT.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-3R5G2XL4.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-PHQQJ4SI.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-PWEGD656.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-NZSEYCI6.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-FZWFZEN5.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-R3F3Z5DX.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-HDHQDWRG.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-3UVLMQ2K.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-GDDRKGRB.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-UHEPS2UL.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-XH3L75DR.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-XSVNTAWH.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-26XPP5KB.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-OYZ7KOYR.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-XXKZCWY5.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-NOZ7FFXW.js")).split},{name:"column",load:async()=>(await import("./chunks/column-XGV32UPN.js")).column},{name:"join",load:async()=>(await import("./chunks/join-Y4Q5WVVE.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-HK2SYCAR.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-K777TRNA.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-KBUKWB2E.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-5FAOMLBL.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-HEKABARE.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-66BNA4IN.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-EVLPSWFF.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-EVLPSWFF.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-UUKG55YW.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-YWPEV2QC.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-DP5UZP52.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-DP5UZP52.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KRGKPFOI.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-WB6O736J.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-WB6O736J.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-CXQ33VMW.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-YXBFJFHG.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-LE7GMFZD.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-6VDN5QZ5.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-PICQVS6Q.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-RS7REDYT.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-4C3A4THJ.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-V7KBLSQ7.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-MLHUWFYI.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-NCLXV2S3.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-BHNJ5ALF.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-HJJ3NJ5L.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-D5YKS5NV.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-WVZA3MCP.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-JF5TTAKQ.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-67WZ6OMV.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-TZBNTR4K.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-WY6RKE32.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-E7PN2UWC.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-52FBC34W.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-EENEW6WQ.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-EENEW6WQ.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-EENEW6WQ.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ge.push({name:"tar",load:async()=>(await import("./chunks/tar-7B5KH3QG.js")).tarCommand}),Ge.push({name:"yq",load:async()=>(await import("./chunks/yq-WUJ5JNDT.js")).yqCommand}),Ge.push({name:"xan",load:async()=>(await import("./chunks/xan-FMSZPFX4.js")).xanCommand}),Ge.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-4SEIR46P.js")).sqlite3Command}));var us=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(us.push({name:"python3",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).python3Command}),us.push({name:"python",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).pythonCommand}));var vi=[{name:"curl",load:async()=>(await import("./chunks/curl-RWQO3SBN.js")).curlCommand}],On=new Map;function fs(e){return{name:e.name,async execute(t,s){let n=On.get(e.name);if(n||(n=await e.load(),On.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-WM63KT7D.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function Tn(e){return(e?Ge.filter(s=>e.includes(s.name)):Ge).map(fs)}function Dn(){return vi.map(fs)}function xn(){return us.map(fs)}function In(e){return"load"in e&&typeof e.load=="function"}function Rn(e){let t=null;return{name:e.name,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var bi=new TextEncoder,$i=new TextDecoder;function Ke(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)s[n/2]=parseInt(e.slice(n,n+2),16);return s}if(t==="binary"||t==="latin1"){if(e.length<=65536)return Uint8Array.from(e,r=>r.charCodeAt(0));let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}return bi.encode(e)}function Pt(e,t){if(t==="base64"){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let s=65536,n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return btoa(n)}if(t==="hex")return Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join("");if(t==="binary"||t==="latin1"){if(typeof Buffer<"u")return Buffer.from(e).toString(t);let s=65536;if(e.length<=s)return String.fromCharCode(...e);let n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return n}return $i.decode(e)}function Fe(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var Xe=new TextEncoder;function Ei(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}function se(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var it=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,n]of Object.entries(t))typeof n=="function"?this.writeFileLazy(s,n):Ei(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,n,r){se(t,"write");let i=this.normalizePath(t);this.ensureParentDirs(i);let o=Fe(n),a=Ke(s,o);this.data.set(i,{type:"file",content:a,mode:r?.mode??420,mtime:r?.mtime??new Date})}writeFileLazy(t,s,n){se(t,"write");let r=this.normalizePath(t);this.ensureParentDirs(r),this.data.set(r,{type:"file",lazy:s,mode:n?.mode??420,mtime:n?.mtime??new Date})}async materializeLazy(t,s){let n=await s.lazy(),i={type:"file",content:typeof n=="string"?Xe.encode(n):n,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let n=await this.readFileBuffer(t),r=Fe(s);return Pt(n,r)}async readFileBuffer(t){se(t,"open");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in n){let r=await this.materializeLazy(s,n);return r.content instanceof Uint8Array?r.content:Xe.encode(r.content)}return n.content instanceof Uint8Array?n.content:Xe.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){se(t,"append");let r=this.normalizePath(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=Fe(n),a=Ke(s,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(r,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:Xe.encode("content"in l?l.content:""),u=new Uint8Array(c.length+a.length);u.set(c),u.set(a,c.length),this.data.set(r,{type:"file",content:u,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}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){se(t,"stat");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=Xe.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}async lstat(t){se(t,"lstat");let s=this.resolveIntermediateSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||new Date};n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=Xe.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let o=0;o<n.length-1;o++){let a=n[o];r=`${r}/${a}`;let l=this.data.get(r),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=this.resolveSymlink(r,l.target),l=this.data.get(r),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let o of n){r=`${r}/${o}`;let a=this.data.get(r),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=this.resolveSymlink(r,a.target),a=this.data.get(r),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){se(t,"mkdir");let n=this.normalizePath(t);if(this.data.has(n)){if(this.data.get(n)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let r=this.dirname(n);if(r!=="/"&&!this.data.has(r))if(s?.recursive)this.mkdirSync(r,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(n,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){se(t,"scandir");let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Set;for(;n&&n.type==="symlink";){if(r.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(s),s=this.resolveSymlink(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,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){se(t,"rm");let n=this.normalizePath(t),r=this.data.get(n);if(!r){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(r.type==="directory"){let i=await this.readdir(n);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=n==="/"?`/${o}`:`${n}/${o}`;await this.rm(a,s)}}}this.data.delete(n)}async cp(t,s,n){se(t,"cp"),se(s,"cp");let r=this.normalizePath(t),i=this.normalizePath(s),o=this.data.get(r);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.data.set(i,{...o,content:a})}else this.data.set(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(r);for(let l of a){let c=r==="/"?`/${l}`:`${r}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(c,u,n)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}async chmod(t,s){se(t,"chmod");let n=this.normalizePath(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);r.mode=s}async symlink(t,s){se(s,"symlink");let n=this.normalizePath(s);if(this.data.has(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){se(t,"link"),se(s,"link");let n=this.normalizePath(t),r=this.normalizePath(s),i=this.data.get(n);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(n,o)),this.ensureParentDirs(r),this.data.set(r,{type:"file",content:o.content,mode:o.mode,mtime:o.mtime})}async readlink(t){se(t,"readlink");let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}async realpath(t){se(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,n){se(t,"utimes");let r=this.normalizePath(t),i=this.resolvePathWithSymlinks(r),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=n}};function Si(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Ai(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 _i(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 Ci(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${gn}
2
+ import{B as Sn,C as An,D as ce,E as Be,F as Y,G as _e,H as _t,I as _n,J as x,K as Cn,L as Pn,M as ke,N as cs,O as Ct,P as V,a as mn,b as ns,c as yn,d as St,e as K,f as W,g as Se,h as te,i as Pe,j as Re,k as rs,l as At,m as gn,n as is,o as wn,p as ge,q as Te,r as vn,s as bn,t as os,u as as,v as Le,w as $n,x as En,y as Ae,z as ls}from"./chunks/chunk-X4GRWTSZ.js";import{a as Ie,b as Ee}from"./chunks/chunk-4PRVMER6.js";import{a as rt}from"./chunks/chunk-SE4C7FJY.js";import{a as he,b as pe,c as le,d as ye,e as hn,f as z,g as Ve,h as bt,i as $t,j as pn,k as re,l as xe,m as Et,n as be}from"./chunks/chunk-K5IXNHO5.js";import"./chunks/chunk-OBH7XN5N.js";import{a as $e}from"./chunks/chunk-4VDEBYW7.js";import{a as vt}from"./chunks/chunk-KGOUQS5A.js";import*as hi from"node:fs";import*as pi from"node:readline";var Ge=[{name:"echo",load:async()=>(await import("./chunks/echo-2MUAOGUE.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-3J7U3HHI.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-TZC5BRAY.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-ZXYOL67L.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-6OKMS3KO.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-5KLM4EA6.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-DWKSZGOQ.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-5QIBTLJG.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-XH2ZB7WT.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-OY7X62QC.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-5TCJXDGY.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-4O2C4V42.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-6VBAPL3Y.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-YNOUXNUY.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-YMNRW3F3.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-V537TDFR.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-ZIV3TFVG.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-XH7E4E2C.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-FRIPZKKT.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-FRIPZKKT.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-FRIPZKKT.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-3R5G2XL4.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-PHQQJ4SI.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-PWEGD656.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-NZSEYCI6.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-FZWFZEN5.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-R3F3Z5DX.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-HDHQDWRG.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-3UVLMQ2K.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-GDDRKGRB.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-UHEPS2UL.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-XH3L75DR.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-XSVNTAWH.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-26XPP5KB.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-OYZ7KOYR.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-XXKZCWY5.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-NOZ7FFXW.js")).split},{name:"column",load:async()=>(await import("./chunks/column-XGV32UPN.js")).column},{name:"join",load:async()=>(await import("./chunks/join-Y4Q5WVVE.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-HK2SYCAR.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-K777TRNA.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-KBUKWB2E.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-5FAOMLBL.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-HEKABARE.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-66BNA4IN.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-EVLPSWFF.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-EVLPSWFF.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-3GODYSFD.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-UUKG55YW.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-YWPEV2QC.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-DP5UZP52.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-DP5UZP52.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-KRGKPFOI.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-WB6O736J.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-WB6O736J.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-CXQ33VMW.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-YXBFJFHG.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-LE7GMFZD.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-6VDN5QZ5.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-PICQVS6Q.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-RS7REDYT.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-4C3A4THJ.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-V7KBLSQ7.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-MLHUWFYI.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-NCLXV2S3.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-BHNJ5ALF.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-HJJ3NJ5L.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-D5YKS5NV.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-WVZA3MCP.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-JF5TTAKQ.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-67WZ6OMV.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-TZBNTR4K.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-WY6RKE32.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-E7PN2UWC.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-52FBC34W.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-EENEW6WQ.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-EENEW6WQ.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-EENEW6WQ.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ge.push({name:"tar",load:async()=>(await import("./chunks/tar-7B5KH3QG.js")).tarCommand}),Ge.push({name:"yq",load:async()=>(await import("./chunks/yq-WUJ5JNDT.js")).yqCommand}),Ge.push({name:"xan",load:async()=>(await import("./chunks/xan-FMSZPFX4.js")).xanCommand}),Ge.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-4SEIR46P.js")).sqlite3Command}));var us=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(us.push({name:"python3",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).python3Command}),us.push({name:"python",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).pythonCommand}));var wi=[{name:"curl",load:async()=>(await import("./chunks/curl-RWQO3SBN.js")).curlCommand}],kn=new Map;function fs(e){return{name:e.name,async execute(t,s){let n=kn.get(e.name);if(n||(n=await e.load(),kn.set(e.name,n)),s.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:r}=await import("./chunks/flag-coverage-WM63KT7D.js");r(s.coverage,e.name,t)}return n.execute(t,s)}}}function Nn(e){return(e?Ge.filter(s=>e.includes(s.name)):Ge).map(fs)}function On(){return wi.map(fs)}function Tn(){return us.map(fs)}function Dn(e){return"load"in e&&typeof e.load=="function"}function xn(e){let t=null;return{name:e.name,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var vi=new TextEncoder,bi=new TextDecoder;function Ke(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)s[n/2]=parseInt(e.slice(n,n+2),16);return s}if(t==="binary"||t==="latin1"){if(e.length<=65536)return Uint8Array.from(e,r=>r.charCodeAt(0));let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}return vi.encode(e)}function Pt(e,t){if(t==="base64"){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let s=65536,n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return btoa(n)}if(t==="hex")return Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join("");if(t==="binary"||t==="latin1"){if(typeof Buffer<"u")return Buffer.from(e).toString(t);let s=65536;if(e.length<=s)return String.fromCharCode(...e);let n="";for(let r=0;r<e.length;r+=s){let i=e.subarray(r,r+s);n+=String.fromCharCode(...i)}return n}return bi.decode(e)}function Fe(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var Xe=new TextEncoder;function $i(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}function se(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var it=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,n]of Object.entries(t))typeof n=="function"?this.writeFileLazy(s,n):$i(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,n,r){se(t,"write");let i=this.normalizePath(t);this.ensureParentDirs(i);let o=Fe(n),a=Ke(s,o);this.data.set(i,{type:"file",content:a,mode:r?.mode??420,mtime:r?.mtime??new Date})}writeFileLazy(t,s,n){se(t,"write");let r=this.normalizePath(t);this.ensureParentDirs(r),this.data.set(r,{type:"file",lazy:s,mode:n?.mode??420,mtime:n?.mtime??new Date})}async materializeLazy(t,s){let n=await s.lazy(),i={type:"file",content:typeof n=="string"?Xe.encode(n):n,mode:s.mode,mtime:s.mtime};return this.data.set(t,i),i}async readFile(t,s){let n=await this.readFileBuffer(t),r=Fe(s);return Pt(n,r)}async readFileBuffer(t){se(t,"open");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in n){let r=await this.materializeLazy(s,n);return r.content instanceof Uint8Array?r.content:Xe.encode(r.content)}return n.content instanceof Uint8Array?n.content:Xe.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){se(t,"append");let r=this.normalizePath(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=Fe(n),a=Ke(s,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(r,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:Xe.encode("content"in l?l.content:""),u=new Uint8Array(c.length+a.length);u.set(c),u.set(a,c.length),this.data.set(r,{type:"file",content:u,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}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){se(t,"stat");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=Xe.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}async lstat(t){se(t,"lstat");let s=this.resolveIntermediateSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||new Date};n.type==="file"&&"lazy"in n&&(n=await this.materializeLazy(s,n));let r=0;return n.type==="file"&&"content"in n&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=Xe.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let o=0;o<n.length-1;o++){let a=n[o];r=`${r}/${a}`;let l=this.data.get(r),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=this.resolveSymlink(r,l.target),l=this.data.get(r),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let o of n){r=`${r}/${o}`;let a=this.data.get(r),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=this.resolveSymlink(r,a.target),a=this.data.get(r),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){se(t,"mkdir");let n=this.normalizePath(t);if(this.data.has(n)){if(this.data.get(n)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let r=this.dirname(n);if(r!=="/"&&!this.data.has(r))if(s?.recursive)this.mkdirSync(r,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(n,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){se(t,"scandir");let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Set;for(;n&&n.type==="symlink";){if(r.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(s),s=this.resolveSymlink(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,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){se(t,"rm");let n=this.normalizePath(t),r=this.data.get(n);if(!r){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(r.type==="directory"){let i=await this.readdir(n);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=n==="/"?`/${o}`:`${n}/${o}`;await this.rm(a,s)}}}this.data.delete(n)}async cp(t,s,n){se(t,"cp"),se(s,"cp");let r=this.normalizePath(t),i=this.normalizePath(s),o=this.data.get(r);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.data.set(i,{...o,content:a})}else this.data.set(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(r);for(let l of a){let c=r==="/"?`/${l}`:`${r}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(c,u,n)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}async chmod(t,s){se(t,"chmod");let n=this.normalizePath(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);r.mode=s}async symlink(t,s){se(s,"symlink");let n=this.normalizePath(s);if(this.data.has(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){se(t,"link"),se(s,"link");let n=this.normalizePath(t),r=this.normalizePath(s),i=this.data.get(n);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(n,o)),this.ensureParentDirs(r),this.data.set(r,{type:"file",content:o.content,mode:o.mode,mtime:o.mtime})}async readlink(t){se(t,"readlink");let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}async realpath(t){se(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,n){se(t,"utimes");let r=this.normalizePath(t),i=this.resolvePathWithSymlinks(r),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=n}};function Ei(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Si(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 _i(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${mn}
3
3
  `),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
4
- `),e.writeFileLazy?e.writeFileLazy("/proc/self/status",ns):e.writeFileSync("/proc/self/status",ns()),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 Ln(e,t){Si(e)&&(Ai(e,t),_i(e),Ci(e))}var Pi=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ki=["braceexpand","hashall","interactive-comments"];function ds(e){let t=[],s=[...ki.map(n=>({name:n,enabled:!0})),...Pi.map(n=>({name:n,enabled:e[n]}))].sort((n,r)=>n.name.localeCompare(r.name));for(let n of s)n.enabled&&t.push(n.name);return t.join(":")}function Ye(e){e.state.env.set("SHELLOPTS",ds(e.state.options))}var Ni=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function hs(e){let t=[];for(let s of Ni)e[s]&&t.push(s);return t.join(":")}function ps(e){e.state.env.set("BASHOPTS",hs(e.state.shoptOptions))}var Oi="BASH_ALIAS_";function Fn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function Mn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Wn(e,t){return e.env.get(`${Oi}${t}`)}function ms(e,t,s){if(!t.name||!Fn(t.name))return t;let n=Mn(t.name);if(!n)return t;let r=Wn(e,n);if(!r||s.has(n))return t;try{s.add(n);let i=new W,o=r,a=r.endsWith(" ");if(!a)for(let f of t.args){let d=Vn(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof St)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return zn(t,r);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return zn(t,r);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(Fn(f)){let d=Mn(f);if(d&&Wn(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=ms(e,h,s);m!==h&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(n),i}}function zn(e,t){let s=t;for(let o of e.args){let a=Vn(o);s+=` ${a}`}let n=new W,r=n.parseWordFromString("eval",!1,!1),i=n.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:r,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function Vn(e){let t="";for(let s of e.parts)switch(s.type){case"Literal":t+=s.value.replace(/([\s"'$`\\*?[\]{}()<>|&;#!])/g,"\\$1");break;case"SingleQuoted":t+=`'${s.value}'`;break;case"DoubleQuoted":t+=`"${s.parts.map(n=>n.type==="Literal"?n.value:`$${n.type}`).join("")}"`;break;case"ParameterExpansion":t+=`\${${s.parameter}}`;break;case"CommandSubstitution":t+="$(...)";break;case"ArithmeticExpansion":t+=`$((${s.expression}))`;break;case"Glob":t+=s.pattern;break;default:break}return t}async function Bn(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),n=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!n||!s.endsWith(")"))return null;let r=n[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+=At({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await Pe(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`${r}=(${c.join(" ")})`}async function jn(e,t){let s=-1,n=-1,r=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let A=g.value.indexOf("+=");if(A!==-1){let S=g.value.slice(0,A);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(S)){s=p,n=A,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(S)){s=p,n=A,r=!0;break}}let v=g.value.indexOf("=");if(v!==-1&&(v===0||g.value[v-1]!=="+")){let S=g.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(S)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(S)){s=p,n=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=r?2:1,l=o.value.slice(0,n),c=o.value.slice(n+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}${r?"+=":"="}${h}`}var Ti=["tar","yq","xan","sqlite3","python3","python"];function Hn(e){return Ti.includes(e)}var L=Object.freeze({stdout:"",stderr:"",exitCode:0});function F(e=""){return{stdout:e,stderr:"",exitCode:0}}function _(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function P(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function Z(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function De(e,t,s="",n=""){throw new re(e,t,s,n)}function ys(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new xe;return L}if(t.length>1)throw new z(1,"",`bash: break: too many arguments
4
+ `),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>ns(t)):e.writeFileSync("/proc/self/status",ns(t)),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 In(e,t,s={pid:1,ppid:0,uid:1e3,gid:1e3}){Ei(e)&&(Si(e,t),Ai(e),_i(e,s))}var Ci=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Pi=["braceexpand","hashall","interactive-comments"];function ds(e){let t=[],s=[...Pi.map(n=>({name:n,enabled:!0})),...Ci.map(n=>({name:n,enabled:e[n]}))].sort((n,r)=>n.name.localeCompare(r.name));for(let n of s)n.enabled&&t.push(n.name);return t.join(":")}function Ye(e){e.state.env.set("SHELLOPTS",ds(e.state.options))}var ki=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function hs(e){let t=[];for(let s of ki)e[s]&&t.push(s);return t.join(":")}function ps(e){e.state.env.set("BASHOPTS",hs(e.state.shoptOptions))}var Ni="BASH_ALIAS_";function Rn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function Ln(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Fn(e,t){return e.env.get(`${Ni}${t}`)}function ms(e,t,s){if(!t.name||!Rn(t.name))return t;let n=Ln(t.name);if(!n)return t;let r=Fn(e,n);if(!r||s.has(n))return t;try{s.add(n);let i=new W,o=r,a=r.endsWith(" ");if(!a)for(let f of t.args){let d=Wn(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof St)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return Mn(t,r);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return Mn(t,r);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(Rn(f)){let d=Ln(f);if(d&&Fn(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=ms(e,h,s);m!==h&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(n),i}}function Mn(e,t){let s=t;for(let o of e.args){let a=Wn(o);s+=` ${a}`}let n=new W,r=n.parseWordFromString("eval",!1,!1),i=n.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:r,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function Wn(e){let t="";for(let s of e.parts)switch(s.type){case"Literal":t+=s.value.replace(/([\s"'$`\\*?[\]{}()<>|&;#!])/g,"\\$1");break;case"SingleQuoted":t+=`'${s.value}'`;break;case"DoubleQuoted":t+=`"${s.parts.map(n=>n.type==="Literal"?n.value:`$${n.type}`).join("")}"`;break;case"ParameterExpansion":t+=`\${${s.parameter}}`;break;case"CommandSubstitution":t+="$(...)";break;case"ArithmeticExpansion":t+=`$((${s.expression}))`;break;case"Glob":t+=s.pattern;break;default:break}return t}async function zn(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),n=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!n||!s.endsWith(")"))return null;let r=n[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+=At({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await ke(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`${r}=(${c.join(" ")})`}async function Vn(e,t){let s=-1,n=-1,r=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let S=g.value.indexOf("+=");if(S!==-1){let A=g.value.slice(0,S);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A)){s=p,n=S,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(A)){s=p,n=S,r=!0;break}}let v=g.value.indexOf("=");if(v!==-1&&(v===0||g.value[v-1]!=="+")){let A=g.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(A)){s=p,n=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=r?2:1,l=o.value.slice(0,n),c=o.value.slice(n+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}${r?"+=":"="}${h}`}var Oi=["tar","yq","xan","sqlite3","python3","python"];function Bn(e){return Oi.includes(e)}var L=Object.freeze({stdout:"",stderr:"",exitCode:0});function F(e=""){return{stdout:e,stderr:"",exitCode:0}}function _(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function P(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function Z(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function De(e,t,s="",n=""){throw new re(e,t,s,n)}function ys(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new xe;return L}if(t.length>1)throw new z(1,"",`bash: break: too many arguments
5
5
  `);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new z(128,"",`bash: break: ${t[0]}: numeric argument required
6
6
  `);s=n}throw new he(s)}async function gs(e,t){let s,n=!1,r=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")r=!1,i++;else if(t[i]==="-P")r=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?s=e.state.env.get("HOME")||"/":o[0]==="-"?(s=e.state.previousDir,n=!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,n=!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 _(`bash: cd: ${s}: Not a directory
7
7
  `)}catch{return _(`bash: cd: ${s}: No such file or directory
8
8
  `)}}let u=c||"/";if(r)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(n?`${u}
9
- `:"")}function ws(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Di=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function kt(e){return Di.includes(e)}async function Nt(e,t,s){let n=ws(e,s);switch(t){case"-e":case"-a":return e.fs.exists(n);case"-f":return await e.fs.exists(n)?(await e.fs.stat(n)).isFile:!1;case"-d":return await e.fs.exists(n)?(await e.fs.stat(n)).isDirectory:!1;case"-r":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&256)!==0:!1;case"-w":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&128)!==0:!1;case"-x":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&64)!==0:!1;case"-s":return await e.fs.exists(n)?(await e.fs.stat(n)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(n)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&512)!==0:!1;case"-g":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(n);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].includes(n);case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(n);default:return!1}}var xi=["-nt","-ot","-ef"];function Ot(e){return xi.includes(e)}async function Tt(e,t,s,n){let r=ws(e,s),i=ws(e,n);switch(t){case"-nt":try{let o=await e.fs.stat(r),a=await e.fs.stat(i);return o.mtime>a.mtime}catch{return!1}case"-ot":try{let o=await e.fs.stat(r),a=await e.fs.stat(i);return o.mtime<a.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(r)||!await e.fs.exists(i))return!1;let o=e.fs.resolvePath(e.state.cwd,r),a=e.fs.resolvePath(e.state.cwd,i);return o===a}catch{return!1}default:return!1}}var Ii=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Dt(e){return Ii.has(e)}function xt(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 ot(e){return e==="="||e==="=="||e==="!="}function It(e,t,s,n=!1,r=!1,i=!1){if(n){let a=Qe(t,s,r,i);return e==="!="?!a:a}if(r){let a=t.toLowerCase()===s.toLowerCase();return e==="!="?!a:a}let o=t===s;return e==="!="?!o:o}var Ri=new Set(["-z","-n"]);function Rt(e){return Ri.has(e)}function Lt(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Ft(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let n=s[1],r=s[2];if(e.state.associativeArrays?.has(n)){let a=r;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(`${n}_${a}`)}let o;try{let a=new W,l=K(a,r);o=await V(e,l.expression)}catch{if(/^-?\d+$/.test(r))o=Number.parseInt(r,10);else{let a=e.state.env.get(r);o=a?Number.parseInt(a,10):0}}if(o<0){let a=te(e,n),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
9
+ `:"")}function ws(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Ti=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function kt(e){return Ti.includes(e)}async function Nt(e,t,s){let n=ws(e,s);switch(t){case"-e":case"-a":return e.fs.exists(n);case"-f":return await e.fs.exists(n)?(await e.fs.stat(n)).isFile:!1;case"-d":return await e.fs.exists(n)?(await e.fs.stat(n)).isDirectory:!1;case"-r":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&256)!==0:!1;case"-w":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&128)!==0:!1;case"-x":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&64)!==0:!1;case"-s":return await e.fs.exists(n)?(await e.fs.stat(n)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(n)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&512)!==0:!1;case"-g":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(n);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].includes(n);case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(n);default:return!1}}var Di=["-nt","-ot","-ef"];function Ot(e){return Di.includes(e)}async function Tt(e,t,s,n){let r=ws(e,s),i=ws(e,n);switch(t){case"-nt":try{let o=await e.fs.stat(r),a=await e.fs.stat(i);return o.mtime>a.mtime}catch{return!1}case"-ot":try{let o=await e.fs.stat(r),a=await e.fs.stat(i);return o.mtime<a.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(r)||!await e.fs.exists(i))return!1;let o=e.fs.resolvePath(e.state.cwd,r),a=e.fs.resolvePath(e.state.cwd,i);return o===a}catch{return!1}default:return!1}}var xi=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function Dt(e){return xi.has(e)}function xt(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 ot(e){return e==="="||e==="=="||e==="!="}function It(e,t,s,n=!1,r=!1,i=!1){if(n){let a=Qe(t,s,r,i);return e==="!="?!a:a}if(r){let a=t.toLowerCase()===s.toLowerCase();return e==="!="?!a:a}let o=t===s;return e==="!="?!o:o}var Ii=new Set(["-z","-n"]);function Rt(e){return Ii.has(e)}function Lt(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Ft(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let n=s[1],r=s[2];if(e.state.associativeArrays?.has(n)){let a=r;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(`${n}_${a}`)}let o;try{let a=new W,l=K(a,r);o=await V(e,l.expression)}catch{if(/^-?\d+$/.test(r))o=Number.parseInt(r,10);else{let a=e.state.env.get(r);o=a?Number.parseInt(a,10):0}}if(o<0){let a=te(e,n),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
10
10
  `,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
11
- `,!1}return e.state.env.has(`${n}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Re(e,t).length>0:te(e,t).length>0}async function Me(e,t){switch(t.type){case"CondBinary":{let s=await x(e,t.left),n=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),r;if(t.operator==="=~")if(n){let i=await x(e,t.right);r=Cn(i)}else r=await kn(e,t.right);else ot(t.operator)&&!n?r=await Nn(e,t.right):r=await x(e,t.right);if(ot(t.operator)){let i=e.state.shoptOptions.nocasematch;return It(t.operator,s,r,!n,i,!0)}if(Dt(t.operator))return xt(t.operator,await qn(e,s),await qn(e,r));if(Ot(t.operator))return Tt(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=Wi(r),l=rt(o,i?"i":"").match(s);if(Ce(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<r;case">":return s>r;default:return!1}}case"CondUnary":{let s=await x(e,t.operand);return kt(t.operator)?Nt(e,t.operator,s):Rt(t.operator)?Lt(t.operator,s):t.operator==="-v"?await Ft(e,s):t.operator==="-o"?bs(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 Me(e,t.operand);case"CondAnd":return await Me(e,t.left)?await Me(e,t.right):!1;case"CondOr":return await Me(e,t.left)?!0:await Me(e,t.right);case"CondGroup":return await Me(e,t.expression);case"CondWord":return await x(e,t.word)!=="";default:return!1}}async function at(e,t){if(t.length===0)return P("","",1);if(t.length===1)return Z(!!t[0]);if(t.length===2){let n=t[0],r=t[1];return n==="("?_(`test: '(' without matching ')'
11
+ `,!1}return e.state.env.has(`${n}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Re(e,t).length>0:te(e,t).length>0}async function Me(e,t){switch(t.type){case"CondBinary":{let s=await x(e,t.left),n=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),r;if(t.operator==="=~")if(n){let i=await x(e,t.right);r=An(i)}else r=await Cn(e,t.right);else ot(t.operator)&&!n?r=await Pn(e,t.right):r=await x(e,t.right);if(ot(t.operator)){let i=e.state.shoptOptions.nocasematch;return It(t.operator,s,r,!n,i,!0)}if(Dt(t.operator))return xt(t.operator,await Hn(e,s),await Hn(e,r));if(Ot(t.operator))return Tt(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=Mi(r),l=rt(o,i?"i":"").match(s);if(Pe(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<r;case">":return s>r;default:return!1}}case"CondUnary":{let s=await x(e,t.operand);return kt(t.operator)?Nt(e,t.operator,s):Rt(t.operator)?Lt(t.operator,s):t.operator==="-v"?await Ft(e,s):t.operator==="-o"?bs(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 Me(e,t.operand);case"CondAnd":return await Me(e,t.left)?await Me(e,t.right):!1;case"CondOr":return await Me(e,t.left)?!0:await Me(e,t.right);case"CondGroup":return await Me(e,t.expression);case"CondWord":return await x(e,t.word)!=="";default:return!1}}async function at(e,t){if(t.length===0)return P("","",1);if(t.length===1)return Z(!!t[0]);if(t.length===2){let n=t[0],r=t[1];return n==="("?_(`test: '(' without matching ')'
12
12
  `,2):kt(n)?Z(await Nt(e,n,r)):Rt(n)?Z(Lt(n,r)):n==="!"?Z(!r):n==="-v"?Z(await Ft(e,r)):n==="-o"?Z(bs(e,r)):n==="="||n==="=="||n==="!="||n==="<"||n===">"||n==="-eq"||n==="-ne"||n==="-lt"||n==="-le"||n==="-gt"||n==="-ge"||n==="-nt"||n==="-ot"||n==="-ef"?_(`test: ${n}: unary operator expected
13
- `,2):P("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(ot(r))return Z(It(r,n,i));if(Dt(r)){let o=Mt(n),a=Mt(i);return!o.valid||!a.valid?P("","",2):Z(xt(r,o.value,a.value))}if(Ot(r))return Z(await Tt(e,r,n,i));switch(r){case"-a":return Z(n!==""&&i!=="");case"-o":return Z(n!==""||i!=="");case">":return Z(n>i);case"<":return Z(n<i)}if(n==="!"){let o=await at(e,[r,i]);return P("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(n==="("&&i===")")return Z(r!=="")}if(t.length===4){if(t[0]==="!"){let n=await at(e,t.slice(1));return P("",n.stderr,n.exitCode===0?1:n.exitCode===1?0:n.exitCode)}if(t[0]==="("&&t[3]===")")return at(e,[t[1],t[2]])}let s=await Gn(e,t,0);return s.pos<t.length?_(`test: too many arguments
14
- `,2):Z(s.value)}async function Gn(e,t,s){return Li(e,t,s)}async function Li(e,t,s){let{value:n,pos:r}=await Un(e,t,s);for(;t[r]==="-o";){let i=await Un(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function Un(e,t,s){let{value:n,pos:r}=await vs(e,t,s);for(;t[r]==="-a";){let i=await vs(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function vs(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await vs(e,t,s+1);return{value:!n,pos:r}}return Fi(e,t,s)}async function Fi(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:o}=await Gn(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let r=t[s+1];if(ot(r)){let i=n,o=t[s+2]??"";return{value:It(r,i,o),pos:s+3}}if(Dt(r)){let i=Mt(n),o=Mt(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:xt(r,i.value,o.value),pos:s+3}}if(Ot(r)){let i=n,o=t[s+2]??"";return{value:await Tt(e,r,i,o),pos:s+3}}if(kt(n)){let i=t[s+1]??"";return{value:await Nt(e,n,i),pos:s+2}}if(Rt(n)){let i=t[s+1]??"";return{value:Lt(n,i),pos:s+2}}if(n==="-v"){let i=t[s+1]??"";return{value:await Ft(e,i),pos:s+2}}if(n==="-o"){let i=t[s+1]??"";return{value:bs(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function Qe(e,t,s=!1,n=!1){let r=`^${Kn(t,n)}$`;return rt(r,s?"is":"s").test(e)}function Kn(e,t){let s="";for(let n=0;n<e.length;n++){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=Xn(e,n+1);if(i!==-1){let o=e.slice(n+2,i),a=Yn(o),l=a.map(u=>Kn(u,t)),c=l.length>0?l.join("|"):"(?:)";if(r==="@")s+=`(?:${c})`;else if(r==="*")s+=`(?:${c})*`;else if(r==="+")s+=`(?:${c})+`;else if(r==="?")s+=`(?:${c})?`;else if(r==="!")if(i<e.length-1){let f=a.map(h=>Qn(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})$).*`;n=i;continue}}if(r==="\\")if(n+1<e.length){let i=e[n+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,n++}else s+="\\\\";else if(r==="*")s+=".*";else if(r==="?")s+=".";else if(r==="["){let i=e.indexOf("]",n+1);i!==-1?(s+=e.slice(n,i+1),n=i):s+="\\["}else/[\\^$.|+(){}]/.test(r)?s+=`\\${r}`:s+=r}return s}function Xn(e,t){let s=1,n=t+1;for(;n<e.length&&s>0;){let r=e[n];if(r==="\\"){n+=2;continue}if(r==="(")s++;else if(r===")"&&(s--,s===0))return n;n++}return-1}function Yn(e){let t=[],s="",n=0,r=0;for(;r<e.length;){let i=e[r];if(i==="\\"){s+=i,r+1<e.length?(s+=e[r+1],r+=2):r++;continue}i==="("?(n++,s+=i):i===")"?(n--,s+=i):i==="|"&&n===0?(t.push(s),s=""):s+=i,r++}return t.push(s),t}function Qn(e,t){let s=0,n=0;for(;n<e.length;){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=Xn(e,n+1);if(i!==-1){if(r==="@"){let o=e.slice(n+2,i),l=Yn(o).map(c=>Qn(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],n=i+1;continue}return null}return null}}if(r==="*")return null;if(r==="?"){s+=1,n++;continue}if(r==="["){let i=e.indexOf("]",n+1);if(i!==-1){s+=1,n=i+1;continue}s+=1,n++;continue}if(r==="\\"){s+=1,n+=2;continue}s+=1,n++}return s}function bs(e,t){let n=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return n?n():!1}async function qn(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 Zn(t);try{let s=new W,n=K(s,t);return await V(e,n.expression)}catch{return Zn(t)}}function Mi(e,t){let s=0;for(let n of e){let r;if(n>="0"&&n<="9")r=n.charCodeAt(0)-48;else if(n>="a"&&n<="z")r=n.charCodeAt(0)-97+10;else if(n>="A"&&n<="Z")r=n.charCodeAt(0)-65+36;else if(n==="@")r=62;else if(n==="_")r=63;else return Number.NaN;if(r>=t)return Number.NaN;s=s*t+r}return s}function Zn(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s,n=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(n){let r=Number.parseInt(n[1],10);r>=2&&r<=64?s=Mi(n[2],r):s=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?s=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?s=Number.parseInt(e,8):s=Number.parseInt(e,10);return Number.isNaN(s)&&(s=0),t?-s:s}function Mt(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 Wi(e){let t="",s=0;for(;s<e.length;)if(e[s]==="\\"&&s+1<e.length)t+=e[s]+e[s+1],s+=2;else if(e[s]==="["){let n=zi(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function zi(e,t){let s=t+1,n="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(n+="^",s++);let r=!1;s<e.length&&e[s]==="]"&&(r=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let 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+=Vi(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?(r&&(n+="\\]"),i&&(n+="\\["),n+=o,n+="]",{converted:n,endIndex:s}):{converted:"\\[",endIndex:t+1}}function Vi(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 ke(e){let t=[],s="",n=!1,r=!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==="'"&&!r){n||(o=!0),n=!n;continue}if(a==='"'&&!n){r||(o=!0),r=!r;continue}if((a===" "||a===" "||a===`
15
- `)&&!n&&!r){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function Wt(e){let t=[],s=0;for(;s<e.length;){for(;s<e.length&&/\s/.test(e[s]);)s++;if(s>=e.length)break;if(e[s]!=="["){s++;continue}s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)n+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)r+=e[s],s++;t.push([n,r])}return t}function Jn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:ke(t[2])};let s=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(s)return{name:s[1],isArray:!1,arrayIndex:s[2],value:s[3]};if(e.includes("=")){let n=e.indexOf("=");return{name:e.slice(0,n),isArray:!1,value:e.slice(n+1)}}return{name:e,isArray:!1}}async function Bi(e,t){try{let s=new W,n=K(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function er(e,t,s={}){let{name:n,isArray:r,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=Y(e,n);if(u)return u}if(r&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${n}_${u}`,i[u]);e.state.env.set(`${n}__length`,String(i.length))}else if(a!==void 0&&o!==void 0){let u=await Bi(e,a);e.state.env.set(`${n}_${u}`,o);let f=parseInt(e.state.env.get(`${n}__length`)??"0",10);u>=f&&e.state.env.set(`${n}__length`,String(u+1))}else o!==void 0&&e.state.env.set(n,o);return l&&ce(e,n),null}function We(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function Je(e,t){return e.state.localVarDepth?.get(t)}function zt(e,t){e.state.localVarDepth?.delete(t)}function tr(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let n=e.state.localVarStack.get(t)||[];n.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,n)}function Vt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function sr(e,t){if(e.state.localVarStack)for(let[s,n]of e.state.localVarStack.entries()){for(;n.length>0&&n[n.length-1].scopeIndex===t;)n.pop();n.length===0&&e.state.localVarStack.delete(s)}}var $s=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function nr(e){return $s.has(e)}var Es=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),et=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 je(e,t,s,n){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
13
+ `,2):P("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(ot(r))return Z(It(r,n,i));if(Dt(r)){let o=Mt(n),a=Mt(i);return!o.valid||!a.valid?P("","",2):Z(xt(r,o.value,a.value))}if(Ot(r))return Z(await Tt(e,r,n,i));switch(r){case"-a":return Z(n!==""&&i!=="");case"-o":return Z(n!==""||i!=="");case">":return Z(n>i);case"<":return Z(n<i)}if(n==="!"){let o=await at(e,[r,i]);return P("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(n==="("&&i===")")return Z(r!=="")}if(t.length===4){if(t[0]==="!"){let n=await at(e,t.slice(1));return P("",n.stderr,n.exitCode===0?1:n.exitCode===1?0:n.exitCode)}if(t[0]==="("&&t[3]===")")return at(e,[t[1],t[2]])}let s=await qn(e,t,0);return s.pos<t.length?_(`test: too many arguments
14
+ `,2):Z(s.value)}async function qn(e,t,s){return Ri(e,t,s)}async function Ri(e,t,s){let{value:n,pos:r}=await jn(e,t,s);for(;t[r]==="-o";){let i=await jn(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function jn(e,t,s){let{value:n,pos:r}=await vs(e,t,s);for(;t[r]==="-a";){let i=await vs(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function vs(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await vs(e,t,s+1);return{value:!n,pos:r}}return Li(e,t,s)}async function Li(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:o}=await qn(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let r=t[s+1];if(ot(r)){let i=n,o=t[s+2]??"";return{value:It(r,i,o),pos:s+3}}if(Dt(r)){let i=Mt(n),o=Mt(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:xt(r,i.value,o.value),pos:s+3}}if(Ot(r)){let i=n,o=t[s+2]??"";return{value:await Tt(e,r,i,o),pos:s+3}}if(kt(n)){let i=t[s+1]??"";return{value:await Nt(e,n,i),pos:s+2}}if(Rt(n)){let i=t[s+1]??"";return{value:Lt(n,i),pos:s+2}}if(n==="-v"){let i=t[s+1]??"";return{value:await Ft(e,i),pos:s+2}}if(n==="-o"){let i=t[s+1]??"";return{value:bs(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function Qe(e,t,s=!1,n=!1){let r=`^${Zn(t,n)}$`;return rt(r,s?"is":"s").test(e)}function Zn(e,t){let s="";for(let n=0;n<e.length;n++){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=Gn(e,n+1);if(i!==-1){let o=e.slice(n+2,i),a=Kn(o),l=a.map(u=>Zn(u,t)),c=l.length>0?l.join("|"):"(?:)";if(r==="@")s+=`(?:${c})`;else if(r==="*")s+=`(?:${c})*`;else if(r==="+")s+=`(?:${c})+`;else if(r==="?")s+=`(?:${c})?`;else if(r==="!")if(i<e.length-1){let f=a.map(h=>Xn(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})$).*`;n=i;continue}}if(r==="\\")if(n+1<e.length){let i=e[n+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,n++}else s+="\\\\";else if(r==="*")s+=".*";else if(r==="?")s+=".";else if(r==="["){let i=e.indexOf("]",n+1);i!==-1?(s+=e.slice(n,i+1),n=i):s+="\\["}else/[\\^$.|+(){}]/.test(r)?s+=`\\${r}`:s+=r}return s}function Gn(e,t){let s=1,n=t+1;for(;n<e.length&&s>0;){let r=e[n];if(r==="\\"){n+=2;continue}if(r==="(")s++;else if(r===")"&&(s--,s===0))return n;n++}return-1}function Kn(e){let t=[],s="",n=0,r=0;for(;r<e.length;){let i=e[r];if(i==="\\"){s+=i,r+1<e.length?(s+=e[r+1],r+=2):r++;continue}i==="("?(n++,s+=i):i===")"?(n--,s+=i):i==="|"&&n===0?(t.push(s),s=""):s+=i,r++}return t.push(s),t}function Xn(e,t){let s=0,n=0;for(;n<e.length;){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=Gn(e,n+1);if(i!==-1){if(r==="@"){let o=e.slice(n+2,i),l=Kn(o).map(c=>Xn(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],n=i+1;continue}return null}return null}}if(r==="*")return null;if(r==="?"){s+=1,n++;continue}if(r==="["){let i=e.indexOf("]",n+1);if(i!==-1){s+=1,n=i+1;continue}s+=1,n++;continue}if(r==="\\"){s+=1,n+=2;continue}s+=1,n++}return s}function bs(e,t){let n=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return n?n():!1}async function Hn(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 Un(t);try{let s=new W,n=K(s,t);return await V(e,n.expression)}catch{return Un(t)}}function Fi(e,t){let s=0;for(let n of e){let r;if(n>="0"&&n<="9")r=n.charCodeAt(0)-48;else if(n>="a"&&n<="z")r=n.charCodeAt(0)-97+10;else if(n>="A"&&n<="Z")r=n.charCodeAt(0)-65+36;else if(n==="@")r=62;else if(n==="_")r=63;else return Number.NaN;if(r>=t)return Number.NaN;s=s*t+r}return s}function Un(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s,n=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(n){let r=Number.parseInt(n[1],10);r>=2&&r<=64?s=Fi(n[2],r):s=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?s=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?s=Number.parseInt(e,8):s=Number.parseInt(e,10);return Number.isNaN(s)&&(s=0),t?-s:s}function Mt(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 Mi(e){let t="",s=0;for(;s<e.length;)if(e[s]==="\\"&&s+1<e.length)t+=e[s]+e[s+1],s+=2;else if(e[s]==="["){let n=Wi(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function Wi(e,t){let s=t+1,n="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(n+="^",s++);let r=!1;s<e.length&&e[s]==="]"&&(r=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let 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+=zi(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?(r&&(n+="\\]"),i&&(n+="\\["),n+=o,n+="]",{converted:n,endIndex:s}):{converted:"\\[",endIndex:t+1}}function zi(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 Ne(e){let t=[],s="",n=!1,r=!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==="'"&&!r){n||(o=!0),n=!n;continue}if(a==='"'&&!n){r||(o=!0),r=!r;continue}if((a===" "||a===" "||a===`
15
+ `)&&!n&&!r){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function Wt(e){let t=[],s=0;for(;s<e.length;){for(;s<e.length&&/\s/.test(e[s]);)s++;if(s>=e.length)break;if(e[s]!=="["){s++;continue}s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)n+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)r+=e[s],s++;t.push([n,r])}return t}function Yn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Ne(t[2])};let s=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(s)return{name:s[1],isArray:!1,arrayIndex:s[2],value:s[3]};if(e.includes("=")){let n=e.indexOf("=");return{name:e.slice(0,n),isArray:!1,value:e.slice(n+1)}}return{name:e,isArray:!1}}async function Vi(e,t){try{let s=new W,n=K(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Qn(e,t,s={}){let{name:n,isArray:r,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=Y(e,n);if(u)return u}if(r&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${n}_${u}`,i[u]);e.state.env.set(`${n}__length`,String(i.length))}else if(a!==void 0&&o!==void 0){let u=await Vi(e,a);e.state.env.set(`${n}_${u}`,o);let f=parseInt(e.state.env.get(`${n}__length`)??"0",10);u>=f&&e.state.env.set(`${n}__length`,String(u+1))}else o!==void 0&&e.state.env.set(n,o);return l&&ce(e,n),null}function We(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function Je(e,t){return e.state.localVarDepth?.get(t)}function zt(e,t){e.state.localVarDepth?.delete(t)}function Jn(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let n=e.state.localVarStack.get(t)||[];n.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,n)}function Vt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function er(e,t){if(e.state.localVarStack)for(let[s,n]of e.state.localVarStack.entries()){for(;n.length>0&&n[n.length-1].scopeIndex===t;)n.pop();n.length===0&&e.state.localVarStack.delete(s)}}var $s=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function tr(e){return $s.has(e)}var Es=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),et=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 je(e,t,s,n){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
16
16
  `;if(n.checkNoclobber&&e.state.options.noclobber&&!n.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
17
- `}catch{}return null}function Q(e){let s=Math.min(e.length,8192);for(let n=0;n<s;n++)if(e.charCodeAt(n)>255)return"utf8";return"binary"}function ji(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),o=r+n+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 rr(e,t){let s=new Map;for(let n=0;n<t.length;n++){let r=t[n];if(r.target.type==="HereDoc")continue;if(r.operator===">&"||r.operator==="<&"){if(cs(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
18
- `};s.set(n,await x(e,r.target))}else{let o=await Ct(e,r.target);if("error"in o)return{targets:s,error:o.error};s.set(n,o.target)}}return{targets:s}}function Hi(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd;return e.state.nextFd++,t}async function Bt(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 n=Hi(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await x(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(r,10);if(!Number.isNaN(i)){let o=e.state.fileDescriptors.get(i);o!==void 0&&e.state.fileDescriptors.set(n,o);continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,r);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),e.state.fileDescriptors.set(n,`__file__:${i}`)}else if(s.operator==="<<<")e.state.fileDescriptors.set(n,`${r}
17
+ `}catch{}return null}function Q(e){let s=Math.min(e.length,8192);for(let n=0;n<s;n++)if(e.charCodeAt(n)>255)return"utf8";return"binary"}function Bi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),o=r+n+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 sr(e,t){let s=new Map;for(let n=0;n<t.length;n++){let r=t[n];if(r.target.type==="HereDoc")continue;if(r.operator===">&"||r.operator==="<&"){if(cs(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
18
+ `};s.set(n,await x(e,r.target))}else{let o=await Ct(e,r.target);if("error"in o)return{targets:s,error:o.error};s.set(n,o.target)}}return{targets:s}}function ji(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd;return e.state.nextFd++,t}async function Bt(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 n=ji(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await x(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(r,10);if(!Number.isNaN(i)){let o=e.state.fileDescriptors.get(i);o!==void 0&&e.state.fileDescriptors.set(n,o);continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,r);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),e.state.fileDescriptors.set(n,`__file__:${i}`)}else if(s.operator==="<<<")e.state.fileDescriptors.set(n,`${r}
19
19
  `);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,r),o=await e.fs.readFile(i);e.state.fileDescriptors.set(n,o)}catch{return P("",`bash: ${r}: No such file or directory
20
- `,1)}}}return null}async function Ne(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let n=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!n)continue;let r;if(n){if(r=await x(e,s.target),r==="-"||!Number.isNaN(Number.parseInt(r,10))||s.fd!=null)continue}else{let a=await Ct(e,s.target);if("error"in a)return P("",a.error,1);r=a.target}let i=e.fs.resolvePath(e.state.cwd,r),o=s.operator===">|";if(i.includes("\0"))return P("",`bash: ${r}: No such file or directory
20
+ `,1)}}}return null}async function Oe(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let n=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!n)continue;let r;if(n){if(r=await x(e,s.target),r==="-"||!Number.isNaN(Number.parseInt(r,10))||s.fd!=null)continue}else{let a=await Ct(e,s.target);if("error"in a)return P("",a.error,1);r=a.target}let i=e.fs.resolvePath(e.state.cwd,r),o=s.operator===">|";if(i.includes("\0"))return P("",`bash: ${r}: No such file or directory
21
21
  `,1);try{let a=await e.fs.stat(i);if(a.isDirectory)return P("",`bash: ${r}: Is a directory
22
22
  `,1);if(e.state.options.noclobber&&!o&&!a.isDirectory&&r!=="/dev/null")return P("",`bash: ${r}: cannot overwrite existing file
23
23
  `,1)}catch{}if(r!=="/dev/null"&&r!=="/dev/stdout"&&r!=="/dev/stderr"&&r!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),r==="/dev/full")return P("",`bash: /dev/full: No space left on device
@@ -28,15 +28,15 @@ import{B as _n,C as Cn,D as ce,E as Be,F as Y,G as Ae,H as _t,I as Pn,J as x,K a
28
28
  `,o=1;break}if(f==="/dev/null")i="";else{let p=e.fs.resolvePath(e.state.cwd,f),g=await je(e,p,f,{checkNoclobber:!0,isClobber:m});if(g){i+=g,o=1;break}await e.fs.writeFile(p,i,Q(i)),i=""}}break}case">>":{let h=u.fd??1;if(h===1){if(f==="/dev/stdout")break;if(f==="/dev/stderr"){i+=r,r="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
29
29
  `,o=1,r="";break}let m=e.fs.resolvePath(e.state.cwd,f),p=await je(e,m,f,{});if(p){i+=p,o=1,r="";break}await e.fs.appendFile(m,r,Q(r)),r=""}else if(h===2){if(f==="/dev/stderr")break;if(f==="/dev/stdout"){r+=i,i="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
30
30
  `,o=1;break}let m=e.fs.resolvePath(e.state.cwd,f),p=await je(e,m,f,{});if(p){i+=p,o=1;break}await e.fs.appendFile(m,i,Q(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
31
- `,o=1)}break}if(f==="2"||f==="&2")h===1&&(i+=r,r="");else if(f==="1"||f==="&1")r+=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 je(e,p,f,{checkNoclobber:!0});if(g){i=g,o=1,r="";break}if(u.fd==null){let A=r+i;await e.fs.writeFile(p,A,Q(A)),r="",i=""}else h===1?(await e.fs.writeFile(p,r,Q(r)),r=""):h===2&&(await e.fs.writeFile(p,i,Q(i)),i="")}}else{let p=e.state.fileDescriptors?.get(m);if(p?.startsWith("__file__:")){let g=p.slice(9);h===1?(await e.fs.appendFile(g,r,Q(r)),r=""):h===2&&(await e.fs.appendFile(g,i,Q(i)),i="")}else if(p?.startsWith("__rw__:")){let g=ji(p);g&&(h===1?(await e.fs.appendFile(g.path,r,Q(r)),r=""):h===2&&(await e.fs.appendFile(g.path,i,Q(i)),i=""))}else if(p?.startsWith("__dupout__:")){let g=Number.parseInt(p.slice(11),10);if(g!==1)if(g===2)h===1&&(i+=r,r="");else{let A=e.state.fileDescriptors?.get(g);if(A?.startsWith("__file__:")){let v=A.slice(9);h===1?(await e.fs.appendFile(v,r,Q(r)),r=""):h===2&&(await e.fs.appendFile(v,i,Q(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
31
+ `,o=1)}break}if(f==="2"||f==="&2")h===1&&(i+=r,r="");else if(f==="1"||f==="&1")r+=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 je(e,p,f,{checkNoclobber:!0});if(g){i=g,o=1,r="";break}if(u.fd==null){let S=r+i;await e.fs.writeFile(p,S,Q(S)),r="",i=""}else h===1?(await e.fs.writeFile(p,r,Q(r)),r=""):h===2&&(await e.fs.writeFile(p,i,Q(i)),i="")}}else{let p=e.state.fileDescriptors?.get(m);if(p?.startsWith("__file__:")){let g=p.slice(9);h===1?(await e.fs.appendFile(g,r,Q(r)),r=""):h===2&&(await e.fs.appendFile(g,i,Q(i)),i="")}else if(p?.startsWith("__rw__:")){let g=Bi(p);g&&(h===1?(await e.fs.appendFile(g.path,r,Q(r)),r=""):h===2&&(await e.fs.appendFile(g.path,i,Q(i)),i=""))}else if(p?.startsWith("__dupout__:")){let g=Number.parseInt(p.slice(11),10);if(g!==1)if(g===2)h===1&&(i+=r,r="");else{let S=e.state.fileDescriptors?.get(g);if(S?.startsWith("__file__:")){let v=S.slice(9);h===1?(await e.fs.appendFile(v,r,Q(r)),r=""):h===2&&(await e.fs.appendFile(v,i,Q(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
32
32
  `,o=1,r=""):m>=3&&(i+=`bash: ${m}: Bad file descriptor
33
33
  `,o=1,r="")}}break}case"&>":{if(f==="/dev/full"){i=`bash: echo: write error: No space left on device
34
34
  `,o=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await je(e,h,f,{checkNoclobber:!0});if(m){i=m,o=1,r="";break}let p=r+i;await e.fs.writeFile(h,p,Q(p)),r="",i="";break}case"&>>":{if(f==="/dev/full"){i=`bash: echo: write error: No space left on device
35
- `,o=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await je(e,h,f,{});if(m){i=m,o=1,r="";break}let p=r+i;await e.fs.appendFile(h,p,Q(p)),r="",i="";break}}}}let a=e.state.fileDescriptors?.get(1);if(a){if(a==="__dupout__:2")i+=r,r="";else if(a.startsWith("__file__:")){let c=a.slice(9);await e.fs.appendFile(c,r,Q(r)),r=""}else if(a.startsWith("__file_append__:")){let c=a.slice(16);await e.fs.appendFile(c,r,Q(r)),r=""}}let l=e.state.fileDescriptors?.get(2);if(l){if(l==="__dupout__:1")r+=i,i="";else if(l.startsWith("__file__:")){let c=l.slice(9);await e.fs.appendFile(c,i,Q(i)),i=""}else if(l.startsWith("__file_append__:")){let c=l.slice(16);await e.fs.appendFile(c,i,Q(i)),i=""}}return P(r,i,o)}function ir(e,t){if(e.state.options.posix&&$s.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
36
- `;throw new z(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function Ui(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await x(e,r.content);r.stripTabs&&(i=i.split(`
35
+ `,o=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await je(e,h,f,{});if(m){i=m,o=1,r="";break}let p=r+i;await e.fs.appendFile(h,p,Q(p)),r="",i="";break}}}}let a=e.state.fileDescriptors?.get(1);if(a){if(a==="__dupout__:2")i+=r,r="";else if(a.startsWith("__file__:")){let c=a.slice(9);await e.fs.appendFile(c,r,Q(r)),r=""}else if(a.startsWith("__file_append__:")){let c=a.slice(16);await e.fs.appendFile(c,r,Q(r)),r=""}}let l=e.state.fileDescriptors?.get(2);if(l){if(l==="__dupout__:1")r+=i,i="";else if(l.startsWith("__file__:")){let c=l.slice(9);await e.fs.appendFile(c,i,Q(i)),i=""}else if(l.startsWith("__file_append__:")){let c=l.slice(16);await e.fs.appendFile(c,i,Q(i)),i=""}}return P(r,i,o)}function nr(e,t){if(e.state.options.posix&&$s.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
36
+ `;throw new z(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function Hi(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await x(e,r.content);r.stripTabs&&(i=i.split(`
37
37
  `).map(a=>a.replace(/^\t+/,"")).join(`
38
38
  `)),(n.fd??0)===0&&(s=i)}else if(n.operator==="<<<"&&n.target.type==="Word")s=`${await x(e,n.target)}
39
- `;else if(n.operator==="<"&&n.target.type==="Word"){let r=await x(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function jt(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,De(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(r??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let i=new Map;for(let 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(sr(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 rr(e,t.redirections);if(l)return o(),P("",l,1);try{let c=await Ui(e,t.redirections),u=n||c,f=await e.executeCommand(t.body,u);return o(),H(e,f,t.redirections,a)}catch(c){if(o(),c instanceof le){let u=P(c.stdout,c.stderr,c.exitCode);return H(e,u,t.redirections,a)}throw c}}var ar=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],As=[".",":","[","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"],qi=["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"],Zi=As;async function _s(e,t){let s=[],n=null,r="",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 _(`compgen: -A: option requires an argument
39
+ `;else if(n.operator==="<"&&n.target.type==="Word"){let r=await x(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function jt(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,De(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(r??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let i=new Map;for(let 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(er(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 sr(e,t.redirections);if(l)return o(),P("",l,1);try{let c=await Hi(e,t.redirections),u=n||c,f=await e.executeCommand(t.body,u);return o(),H(e,f,t.redirections,a)}catch(c){if(o(),c instanceof le){let u=P(c.stdout,c.stderr,c.exitCode);return H(e,u,t.redirections,a)}throw c}}var ir=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],As=[".",":","[","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"],Ui=["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"],qi=As;async function _s(e,t){let s=[],n=null,r="",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 _(`compgen: -A: option requires an argument
40
40
  `,2);let b=t[y];if(!m.includes(b))return _(`compgen: ${b}: invalid action name
41
41
  `,2);s.push(b)}else if(w==="-W"){if(y++,y>=t.length)return _(`compgen: -W: option requires an argument
42
42
  `,2);n=t[y]}else if(w==="-P"){if(y++,y>=t.length)return _(`compgen: -P: option requires an argument
@@ -47,15 +47,15 @@ import{B as _n,C as Cn,D as ce,E as Be,F as Y,G as Ae,H as _t,I as Pn,J as x,K a
47
47
  `,2);f=t[y]}else if(w==="-C"){if(y++,y>=t.length)return _(`compgen: -C: option requires an argument
48
48
  `,2);d=t[y]}else if(w==="-X"){if(y++,y>=t.length)return _(`compgen: -X: option requires an argument
49
49
  `,2);u=t[y]}else if(w==="-G"){if(y++,y>=t.length)return _(`compgen: -G: option requires an argument
50
- `,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 Ss(e,o);p.push(...y)}if(c){let y=await or(e,o);p.push(...y)}for(let y of s)if(y==="variable"){let w=Gi(e,o);p.push(...w)}else if(y==="export"){let w=Ki(e,o);p.push(...w)}else if(y==="function"){let w=Xi(e,o);p.push(...w)}else if(y==="builtin"){let w=Yi(o);p.push(...w)}else if(y==="keyword"){let w=Qi(o);p.push(...w)}else if(y==="alias"){let w=Ji(e,o);p.push(...w)}else if(y==="shopt"){let w=eo(o);p.push(...w)}else if(y==="helptopic"){let w=to(o);p.push(...w)}else if(y==="directory"){let w=await Ss(e,o);p.push(...w)}else if(y==="file"){let w=await or(e,o);p.push(...w)}else if(y==="user"){let w=so(o);p.push(...w)}else if(y==="command"){let w=await no(e,o);p.push(...w)}if(n!==null)try{let y=await ro(e,n),w=io(e,y);for(let b of w)(o===null||b.startsWith(o))&&p.push(b)}catch{return P("","",1)}if(a){let y=await Ss(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 D of e.state.env.keys())(D==="COMPREPLY"||D.startsWith("COMPREPLY_")||D==="COMPREPLY__length")&&(b.set(D,e.state.env.get(D)),e.state.env.delete(D));let $=["compgen",h[0]??"",""];try{let D=await jt(e,y,$,"");if(D.exitCode!==0)return tt(e,w),tt(e,b),P("",D.stderr,1);g=D.stdout;let N=oo(e);p.push(...N)}catch{return tt(e,w),tt(e,b),P("","",1)}tt(e,w),tt(e,b)}}if(d!==null)try{let y=Ee(d),w=await e.executeScript(y);if(w.exitCode!==0)return P("",w.stderr,w.exitCode);if(w.stdout){let b=w.stdout.split(`
50
+ `,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 Ss(e,o);p.push(...y)}if(c){let y=await rr(e,o);p.push(...y)}for(let y of s)if(y==="variable"){let w=Zi(e,o);p.push(...w)}else if(y==="export"){let w=Gi(e,o);p.push(...w)}else if(y==="function"){let w=Ki(e,o);p.push(...w)}else if(y==="builtin"){let w=Xi(o);p.push(...w)}else if(y==="keyword"){let w=Yi(o);p.push(...w)}else if(y==="alias"){let w=Qi(e,o);p.push(...w)}else if(y==="shopt"){let w=Ji(o);p.push(...w)}else if(y==="helptopic"){let w=eo(o);p.push(...w)}else if(y==="directory"){let w=await Ss(e,o);p.push(...w)}else if(y==="file"){let w=await rr(e,o);p.push(...w)}else if(y==="user"){let w=to(o);p.push(...w)}else if(y==="command"){let w=await so(e,o);p.push(...w)}if(n!==null)try{let y=await no(e,n),w=ro(e,y);for(let b of w)(o===null||b.startsWith(o))&&p.push(b)}catch{return P("","",1)}if(a){let y=await Ss(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 D of e.state.env.keys())(D==="COMPREPLY"||D.startsWith("COMPREPLY_")||D==="COMPREPLY__length")&&(b.set(D,e.state.env.get(D)),e.state.env.delete(D));let $=["compgen",h[0]??"",""];try{let D=await jt(e,y,$,"");if(D.exitCode!==0)return tt(e,w),tt(e,b),P("",D.stderr,1);g=D.stdout;let N=io(e);p.push(...N)}catch{return tt(e,w),tt(e,b),P("","",1)}tt(e,w),tt(e,b)}}if(d!==null)try{let y=Se(d),w=await e.executeScript(y);if(w.exitCode!==0)return P("",w.stderr,w.exitCode);if(w.stdout){let b=w.stdout.split(`
51
51
  `);for(let $ of b)$.length>0&&p.push($)}}catch(y){if(y.name==="ParseException")return _(`compgen: -C: ${y.message}
52
- `,2);throw y}let A=p;if(u!==null){let y=u.startsWith("!"),w=y?u.slice(1):u;A=p.filter(b=>{let $=Qe(b,w,!1,!0);return y?$:!$})}if(A.length===0&&o!==null)return P(g,"",1);let v=A.map(y=>`${r}${y}${i}`).join(`
53
- `),S=g+(v?`${v}
54
- `:"");return F(S)}function Gi(e,t){let s=new Set;for(let r of e.state.env.keys()){if(r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length"))continue;let i=r.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)?s.add(r):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function Ki(e,t){let s=e.state.exportedVars??new Set,n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n=n.filter(r=>r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length")?!1:e.state.env.has(r)),n.sort()}function Xi(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function Yi(e){let t=[...As];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Qi(e){let t=[...ar];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ji(e,t){let s=[];for(let r of e.state.env.keys())if(r.startsWith("BASH_ALIAS_")){let i=r.slice(11);s.push(i)}let n=s;return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function eo(e){let t=[...qi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function to(e){let t=[...Zi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function Ss(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";r=t.slice(o+1),a.startsWith("/")?n=a:n=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(n);for(let o of i){let a=`${n}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!r||o.startsWith(r)))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 or(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";r=t.slice(o+1),a.startsWith("/")?n=a:n=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(n);for(let o of i)if(!r||o.startsWith(r))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 so(e){return["root","nobody"]}async function no(e,t){let s=new Set;for(let i of As)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 ar)s.add(i);let n=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of n.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let r=Array.from(s);return t!==null&&(r=r.filter(i=>i.startsWith(t))),r.sort()}async function ro(e,t){let n=new W().parseWordFromString(t,!1,!1);return await x(e,n)}function io(e,t){let s=e.state.env.get("IFS")??`
55
- `;if(s.length===0)return[t];let n=new Set(s.split("")),r=[],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 n.has(a)?(i.length>0&&(r.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&r.push(i),r}function tt(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function oo(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=Se(e,"COMPREPLY");for(let[,i]of r)t.push(i)}else{let r=e.state.env.get("COMPREPLY");r!==void 0&&t.push(r)}return t}var ao=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ps(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=!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")n=!0;else if(d==="-D")r=!0;else if(d==="-W"){if(f++,f>=t.length)return _(`complete: -W: option requires an argument
52
+ `,2);throw y}let S=p;if(u!==null){let y=u.startsWith("!"),w=y?u.slice(1):u;S=p.filter(b=>{let $=Qe(b,w,!1,!0);return y?$:!$})}if(S.length===0&&o!==null)return P(g,"",1);let v=S.map(y=>`${r}${y}${i}`).join(`
53
+ `),A=g+(v?`${v}
54
+ `:"");return F(A)}function Zi(e,t){let s=new Set;for(let r of e.state.env.keys()){if(r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length"))continue;let i=r.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)?s.add(r):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function Gi(e,t){let s=e.state.exportedVars??new Set,n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n=n.filter(r=>r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length")?!1:e.state.env.has(r)),n.sort()}function Ki(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function Xi(e){let t=[...As];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Yi(e){let t=[...ir];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Qi(e,t){let s=[];for(let r of e.state.env.keys())if(r.startsWith("BASH_ALIAS_")){let i=r.slice(11);s.push(i)}let n=s;return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function Ji(e){let t=[...Ui];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function eo(e){let t=[...qi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function Ss(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";r=t.slice(o+1),a.startsWith("/")?n=a:n=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(n);for(let o of i){let a=`${n}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!r||o.startsWith(r)))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 rr(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";r=t.slice(o+1),a.startsWith("/")?n=a:n=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(n);for(let o of i)if(!r||o.startsWith(r))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 to(e){return["root","nobody"]}async function so(e,t){let s=new Set;for(let i of As)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 ir)s.add(i);let n=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of n.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let r=Array.from(s);return t!==null&&(r=r.filter(i=>i.startsWith(t))),r.sort()}async function no(e,t){let n=new W().parseWordFromString(t,!1,!1);return await x(e,n)}function ro(e,t){let s=e.state.env.get("IFS")??`
55
+ `;if(s.length===0)return[t];let n=new Set(s.split("")),r=[],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 n.has(a)?(i.length>0&&(r.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&r.push(i),r}function tt(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function io(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=Ae(e,"COMPREPLY");for(let[,i]of r)t.push(i)}else{let r=e.state.env.get("COMPREPLY");r!==void 0&&t.push(r)}return t}var oo=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ps(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=!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")n=!0;else if(d==="-D")r=!0;else if(d==="-W"){if(f++,f>=t.length)return _(`complete: -W: option requires an argument
56
56
  `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return _(`complete: -F: option requires an argument
57
57
  `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return _(`complete: -o: option requires an argument
58
- `,2);let h=t[f];if(!ao.includes(h))return _(`complete: ${h}: invalid option name
58
+ `,2);let h=t[f];if(!oo.includes(h))return _(`complete: ${h}: invalid option name
59
59
  `,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return _(`complete: -A: option requires an argument
60
60
  `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return _(`complete: -C: option requires an argument
61
61
  `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return _(`complete: -G: option requires an argument
@@ -69,50 +69,50 @@ import{B as _n,C as Cn,D as ce,E as Be,F as Y,G as Ae,H as _t,I as Pn,J as x,K a
69
69
  `:""),`complete: ${i}: no completion specification
70
70
  `,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}`,n.push(a)}return n.length===0?F(""):F(`${n.join(`
71
71
  `)}
72
- `)}var lr=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function ks(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")n=!0;else if(l==="-o"){if(a++,a>=t.length)return _(`compopt: -o: option requires an argument
73
- `,2);let c=t[a];if(!lr.includes(c))return _(`compopt: ${c}: invalid option name
72
+ `)}var or=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function ks(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")n=!0;else if(l==="-o"){if(a++,a>=t.length)return _(`compopt: -o: option requires an argument
73
+ `,2);let c=t[a];if(!or.includes(c))return _(`compopt: ${c}: invalid option name
74
74
  `,2);r.push(c)}else if(l==="+o"){if(a++,a>=t.length)return _(`compopt: +o: option requires an argument
75
- `,2);let c=t[a];if(!lr.includes(c))return _(`compopt: ${c}: invalid option name
75
+ `,2);let c=t[a];if(!or.includes(c))return _(`compopt: ${c}: invalid option name
76
76
  `,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 r)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(n){let a=e.state.completionSpecs.get("__empty__")??{},l=new Set(a.options??[]);for(let c of r)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 r)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 _(`compopt: not currently executing completion function
77
77
  `,1)}function Ns(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new xe;return L}if(t.length>1)throw new z(1,"",`bash: continue: too many arguments
78
78
  `);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new z(1,"",`bash: continue: ${t[0]}: numeric argument required
79
- `);s=n}throw new pe(s)}function U(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 Os(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function Ts(e){let t="$'";for(let s=0;s<e.length;s++){let n=e[s],r=e.charCodeAt(s);r===7?t+="\\a":r===8?t+="\\b":r===9?t+="\\t":r===10?t+="\\n":r===11?t+="\\v":r===12?t+="\\f":r===13?t+="\\r":r===27?t+="\\e":r===39?t+="\\'":r===92?t+="\\\\":r<32||r===127?t+=`\\${r.toString(8).padStart(3,"0")}`:t+=n}return t+="'",t}function Ht(e){return Os(e)?Ts(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function He(e){return Os(e)?Ts(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ds(e){return Os(e)?Ts(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function cr(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),ge(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 xs(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function ur(e,t){let s="",n="",r=!1;for(let i of t){let o=cr(e,i);if(e.state.associativeArrays?.has(i)){let u=Re(e,i);if(u.length===0)s+=`declare -A ${i}=()
79
+ `);s=n}throw new pe(s)}function U(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 Os(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function Ts(e){let t="$'";for(let s=0;s<e.length;s++){let n=e[s],r=e.charCodeAt(s);r===7?t+="\\a":r===8?t+="\\b":r===9?t+="\\t":r===10?t+="\\n":r===11?t+="\\v":r===12?t+="\\f":r===13?t+="\\r":r===27?t+="\\e":r===39?t+="\\'":r===92?t+="\\\\":r<32||r===127?t+=`\\${r.toString(8).padStart(3,"0")}`:t+=n}return t+="'",t}function Ht(e){return Os(e)?Ts(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function He(e){return Os(e)?Ts(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ds(e){return Os(e)?Ts(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function ar(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),ge(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 xs(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function lr(e,t){let s="",n="",r=!1;for(let i of t){let o=ar(e,i);if(e.state.associativeArrays?.has(i)){let u=Re(e,i);if(u.length===0)s+=`declare -A ${i}=()
80
80
  `;else{let f=u.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",m=xs(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${f.join(" ")})
81
81
  `}continue}let l=te(e,i);if(l.length>0){let u=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${He(d)}`});s+=`declare -a ${i}=(${u.join(" ")})
82
82
  `;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
83
83
  `;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${Ds(c)}
84
84
  `;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${o} ${i}
85
85
  `:(n+=`bash: declare: ${i}: not found
86
- `,r=!0)}}return P(s,n,r?1:0)}function fr(e,t){let{filterExport:s,filterReadonly:n,filterNameref:r,filterIndexedArray:i,filterAssocArray:o}=t,a=s||n||r||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=cr(e,f),h=e.state.associativeArrays?.has(f),m=te(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)||n&&!e.state.readonlyVars?.has(f)||r&&!ge(e,f)))continue;if(h){let A=Re(e,f);if(A.length===0)l+=`declare -A ${f}=()
87
- `;else{let v=A.map(S=>{let y=e.state.env.get(`${f}_${S}`)??"",w=xs(y);return`['${S}']=${w}`});l+=`declare -A ${f}=(${v.join(" ")})
88
- `}continue}if(m.length>0){let A=m.map(v=>{let S=e.state.env.get(`${f}_${v}`)??"";return`[${v}]=${He(S)}`});l+=`declare -a ${f}=(${A.join(" ")})
86
+ `,r=!0)}}return P(s,n,r?1:0)}function cr(e,t){let{filterExport:s,filterReadonly:n,filterNameref:r,filterIndexedArray:i,filterAssocArray:o}=t,a=s||n||r||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=ar(e,f),h=e.state.associativeArrays?.has(f),m=te(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)||n&&!e.state.readonlyVars?.has(f)||r&&!ge(e,f)))continue;if(h){let S=Re(e,f);if(S.length===0)l+=`declare -A ${f}=()
87
+ `;else{let v=S.map(A=>{let y=e.state.env.get(`${f}_${A}`)??"",w=xs(y);return`['${A}']=${w}`});l+=`declare -A ${f}=(${v.join(" ")})
88
+ `}continue}if(m.length>0){let S=m.map(v=>{let A=e.state.env.get(`${f}_${v}`)??"";return`[${v}]=${He(A)}`});l+=`declare -a ${f}=(${S.join(" ")})
89
89
  `;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
90
90
  `;continue}let g=e.state.env.get(f);g!==void 0&&(l+=`declare ${d} ${f}=${Ds(g)}
91
- `)}return F(l)}function dr(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Re(e,n);if(r.length===0)t+=`declare -A ${n}=()
91
+ `)}return F(l)}function ur(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Re(e,n);if(r.length===0)t+=`declare -A ${n}=()
92
92
  `;else{let i=r.map(o=>{let a=e.state.env.get(`${n}_${o}`)??"",l=xs(a);return`['${o}']=${l}`});t+=`declare -A ${n}=(${i.join(" ")})
93
- `}}return F(t)}function hr(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let o=r.slice(0,-8);e.state.associativeArrays?.has(o)||s.add(o);continue}let i=r.lastIndexOf("_");if(i>0){let o=r.slice(0,i),a=r.slice(i+1);/^\d+$/.test(a)&&(e.state.associativeArrays?.has(o)||s.add(o))}}let n=Array.from(s).sort();for(let r of n){let i=te(e,r);if(i.length===0)t+=`declare -a ${r}=()
93
+ `}}return F(t)}function fr(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let o=r.slice(0,-8);e.state.associativeArrays?.has(o)||s.add(o);continue}let i=r.lastIndexOf("_");if(i>0){let o=r.slice(0,i),a=r.slice(i+1);/^\d+$/.test(a)&&(e.state.associativeArrays?.has(o)||s.add(o))}}let n=Array.from(s).sort();for(let r of n){let i=te(e,r);if(i.length===0)t+=`declare -a ${r}=()
94
94
  `;else{let o=i.map(a=>{let l=e.state.env.get(`${r}_${a}`)??"";return`[${a}]=${He(l)}`});t+=`declare -a ${r}=(${o.join(" ")})
95
- `}}return F(t)}function pr(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let o=r.slice(0,-8);s.add(o);continue}let i=r.lastIndexOf("_");if(i>0){let o=r.slice(0,i),a=r.slice(i+1);if(/^\d+$/.test(a)||e.state.associativeArrays?.has(o)){s.add(o);continue}}s.add(r)}let n=Array.from(s).sort();for(let r of n){if(e.state.associativeArrays?.has(r)||te(e,r).length>0||e.state.env.has(`${r}__length`))continue;let a=e.state.env.get(r);a!==void 0&&(t+=`${r}=${Ht(a)}
96
- `)}return F(t)}function Is(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function lt(e,t){return e.state.integerVars?.has(t)??!1}function Rs(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function lo(e,t){return e.state.lowercaseVars?.has(t)??!1}function Ls(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function co(e,t){return e.state.uppercaseVars?.has(t)??!1}function st(e,t,s){return lo(e,t)?s.toLowerCase():co(e,t)?s.toUpperCase():s}async function mr(e,t){try{let s=new W,n=K(s,t),r=await V(e,n.expression);return String(r)}catch{return"0"}}function uo(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],n=s.length;if(e[n]!=="[")return null;let r=0,i=n+1;for(;n<e.length;n++)if(e[n]==="[")r++;else if(e[n]==="]"&&(r--,r===0))break;if(r!==0)return null;let o=e.slice(i,n);if(n++,e[n]!=="=")return null;n++;let a=e.slice(n);return{name:s,indexExpr:o,value:a}}async function Fs(e,t){let s=!1,n=!1,r=!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,A=[];for(let N=0;N<t.length;N++){let I=t[N];if(I==="-a")s=!0;else if(I==="-A")n=!0;else if(I==="-r")r=!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==="--"){A.push(...t.slice(N+1));break}else if(I.startsWith("+")){for(let C of I.slice(1))if(C==="n")l=!0;else if(C==="a")c=!0;else if(C==="x")u=!0;else if(C!=="r"){if(C!=="i"){if(!(C==="f"||C==="F"))return P("",`bash: typeset: +${C}: invalid option
95
+ `}}return F(t)}function dr(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let o=r.slice(0,-8);s.add(o);continue}let i=r.lastIndexOf("_");if(i>0){let o=r.slice(0,i),a=r.slice(i+1);if(/^\d+$/.test(a)||e.state.associativeArrays?.has(o)){s.add(o);continue}}s.add(r)}let n=Array.from(s).sort();for(let r of n){if(e.state.associativeArrays?.has(r)||te(e,r).length>0||e.state.env.has(`${r}__length`))continue;let a=e.state.env.get(r);a!==void 0&&(t+=`${r}=${Ht(a)}
96
+ `)}return F(t)}function Is(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function lt(e,t){return e.state.integerVars?.has(t)??!1}function Rs(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function ao(e,t){return e.state.lowercaseVars?.has(t)??!1}function Ls(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function lo(e,t){return e.state.uppercaseVars?.has(t)??!1}function st(e,t,s){return ao(e,t)?s.toLowerCase():lo(e,t)?s.toUpperCase():s}async function hr(e,t){try{let s=new W,n=K(s,t),r=await V(e,n.expression);return String(r)}catch{return"0"}}function co(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],n=s.length;if(e[n]!=="[")return null;let r=0,i=n+1;for(;n<e.length;n++)if(e[n]==="[")r++;else if(e[n]==="]"&&(r--,r===0))break;if(r!==0)return null;let o=e.slice(i,n);if(n++,e[n]!=="=")return null;n++;let a=e.slice(n);return{name:s,indexExpr:o,value:a}}async function Fs(e,t){let s=!1,n=!1,r=!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")n=!0;else if(I==="-r")r=!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 C of I.slice(1))if(C==="n")l=!0;else if(C==="a")c=!0;else if(C==="x")u=!0;else if(C!=="r"){if(C!=="i"){if(!(C==="f"||C==="F"))return P("",`bash: typeset: +${C}: invalid option
97
97
  `,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 C of I.slice(1))if(C==="a")s=!0;else if(C==="A")n=!0;else if(C==="r")r=!0;else if(C==="x")i=!0;else if(C==="p")o=!0;else if(C==="n")a=!0;else if(C==="i")f=!0;else if(C==="l")d=!0;else if(C==="u")h=!0;else if(C==="f")m=!0;else if(C==="F")p=!0;else if(C==="g")g=!0;else return P("",`bash: typeset: -${C}: invalid option
98
- `,2);else A.push(I)}let S=e.state.localScopes.length>0&&!g,y=N=>{if(!S)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(!S)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(N)||I.set(N,e.state.env.get(N));let C=`${N}_`;for(let O of e.state.env.keys())O.startsWith(C)&&!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=>{S&&We(e,N)};if(p){if(A.length===0){let C=Array.from(e.state.functions.keys()).sort(),k="";for(let O of C)k+=`declare -f ${O}
99
- `;return F(k)}let N=!0,I="";for(let C of A)e.state.functions.has(C)?I+=`${C}
100
- `:N=!1;return P(I,"",N?0:1)}if(m){if(A.length===0){let I="",C=Array.from(e.state.functions.keys()).sort();for(let k of C)I+=`${k} ()
98
+ `,2);else S.push(I)}let A=e.state.localScopes.length>0&&!g,y=N=>{if(!A)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(!A)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(N)||I.set(N,e.state.env.get(N));let C=`${N}_`;for(let O of e.state.env.keys())O.startsWith(C)&&!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=>{A&&We(e,N)};if(p){if(S.length===0){let C=Array.from(e.state.functions.keys()).sort(),k="";for(let O of C)k+=`declare -f ${O}
99
+ `;return F(k)}let N=!0,I="";for(let C of S)e.state.functions.has(C)?I+=`${C}
100
+ `:N=!1;return P(I,"",N?0:1)}if(m){if(S.length===0){let I="",C=Array.from(e.state.functions.keys()).sort();for(let k of C)I+=`${k} ()
101
101
  {
102
102
  # function body
103
103
  }
104
- `;return F(I)}let N=!0;for(let I of A)e.state.functions.has(I)||(N=!1);return P("","",N?0:1)}if(o&&A.length>0)return ur(e,A);if(o&&A.length===0)return fr(e,{filterExport:i,filterReadonly:r,filterNameref:a,filterIndexedArray:s,filterAssocArray:n});if(A.length===0&&n&&!o)return dr(e);if(A.length===0&&s&&!o)return hr(e);if(A.length===0&&!o)return pr(e);let $="",D=0;for(let N of A){let I=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(I&&!c){let E=I[1],T=I[2];if(n&&te(e,E).length>0){$+=`bash: declare: ${E}: cannot convert indexed to associative array
104
+ `;return F(I)}let N=!0;for(let I of S)e.state.functions.has(I)||(N=!1);return P("","",N?0:1)}if(o&&S.length>0)return lr(e,S);if(o&&S.length===0)return cr(e,{filterExport:i,filterReadonly:r,filterNameref:a,filterIndexedArray:s,filterAssocArray:n});if(S.length===0&&n&&!o)return ur(e);if(S.length===0&&s&&!o)return fr(e);if(S.length===0&&!o)return dr(e);let $="",D=0;for(let N of S){let I=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(I&&!c){let E=I[1],T=I[2];if(n&&te(e,E).length>0){$+=`bash: declare: ${E}: cannot convert indexed to associative array
105
105
  `,D=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has(E)){$+=`bash: declare: ${E}: cannot convert associative to indexed array
106
- `,D=1;continue}if(w(E),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(E)),Ce(e,E),e.state.env.delete(E),e.state.env.delete(`${E}__length`),n&&T.includes("[")){let R=Wt(T);for(let[X,M]of R){let q=U(e,M);e.state.env.set(`${E}_${X}`,q)}}else if(n){let R=ke(T);for(let X=0;X<R.length;X+=2){let M=R[X],q=X+1<R.length?U(e,R[X+1]):"";e.state.env.set(`${E}_${M}`,q)}}else{let R=ke(T);if(R.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let q of R){let ne=q.match(/^\[([^\]]+)\]=(.*)$/);if(ne){let de=ne[1],Ze=ne[2],yi=U(e,Ze),nt;if(/^-?\d+$/.test(de))nt=Number.parseInt(de,10);else try{let gi=new W,wi=K(gi,de);nt=await V(e,wi.expression)}catch{nt=0}e.state.env.set(`${E}_${nt}`,yi),M=nt+1}else{let de=U(e,q);e.state.env.set(`${E}_${M}`,de),M++}}}else{for(let M=0;M<R.length;M++)e.state.env.set(`${E}_${M}`,R[M]);e.state.env.set(`${E}__length`,String(R.length))}}b(E),r&&ce(e,E),i&&Ae(e,E);continue}if(l){let E=N.includes("=")?N.slice(0,N.indexOf("=")):N;if($n(e,E),!N.includes("="))continue}if(u){let E=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(_t(e,E),!N.includes("="))continue}let C=uo(N);if(C){let{name:E,indexExpr:T,value:R}=C,X=Y(e,E);if(X)return X;w(E);let M;try{let ne=new W,de=K(ne,T);M=await V(e,de.expression)}catch{let ne=parseInt(T,10);M=Number.isNaN(ne)?0:ne}e.state.env.set(`${E}_${M}`,R);let q=parseInt(e.state.env.get(`${E}__length`)??"0",10);M>=q&&e.state.env.set(`${E}__length`,String(M+1)),b(E),r&&ce(e,E),i&&Ae(e,E);continue}let k=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(k&&!c){let E=k[1],T=k[2],R=Y(e,E);if(R)return R;w(E);let X=ke(T);if(e.state.associativeArrays?.has(E)){let M=Wt(T);for(let[q,ne]of M){let de=U(e,ne);e.state.env.set(`${E}_${q}`,de)}}else{let M=te(e,E),q=0,ne=e.state.env.get(E);M.length===0&&ne!==void 0?(e.state.env.set(`${E}_0`,ne),e.state.env.delete(E),q=1):M.length>0&&(q=Math.max(...M)+1);for(let Ze=0;Ze<X.length;Ze++)e.state.env.set(`${E}_${q+Ze}`,U(e,X[Ze]));let de=q+X.length;e.state.env.set(`${E}__length`,String(de))}b(E),r&&ce(e,E),i&&Ae(e,E);continue}let O=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(O){let E=O[1],T=U(e,O[2]),R=Y(e,E);if(R)return R;y(E),f&&Is(e,E),d&&Rs(e,E),h&&Ls(e,E);let M=te(e,E).length>0||e.state.associativeArrays?.has(E);if(lt(e,E)){let q=e.state.env.get(E)??"0",ne=parseInt(q,10)||0,de=parseInt(await mr(e,T),10)||0;T=String(ne+de),e.state.env.set(E,T)}else if(M){T=st(e,E,T);let q=`${E}_0`,ne=e.state.env.get(q)??"";e.state.env.set(q,ne+T)}else{T=st(e,E,T);let q=e.state.env.get(E)??"";e.state.env.set(E,q+T)}b(E),r&&ce(e,E),i&&Ae(e,E),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(E));continue}if(N.includes("=")){let E=N.indexOf("="),T=N.slice(0,E),R=N.slice(E+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(T)){$+=`bash: typeset: \`${T}': not a valid identifier
106
+ `,D=1;continue}if(w(E),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(E)),Pe(e,E),e.state.env.delete(E),e.state.env.delete(`${E}__length`),n&&T.includes("[")){let R=Wt(T);for(let[X,M]of R){let q=U(e,M);e.state.env.set(`${E}_${X}`,q)}}else if(n){let R=Ne(T);for(let X=0;X<R.length;X+=2){let M=R[X],q=X+1<R.length?U(e,R[X+1]):"";e.state.env.set(`${E}_${M}`,q)}}else{let R=Ne(T);if(R.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let q of R){let ne=q.match(/^\[([^\]]+)\]=(.*)$/);if(ne){let de=ne[1],Ze=ne[2],mi=U(e,Ze),nt;if(/^-?\d+$/.test(de))nt=Number.parseInt(de,10);else try{let yi=new W,gi=K(yi,de);nt=await V(e,gi.expression)}catch{nt=0}e.state.env.set(`${E}_${nt}`,mi),M=nt+1}else{let de=U(e,q);e.state.env.set(`${E}_${M}`,de),M++}}}else{for(let M=0;M<R.length;M++)e.state.env.set(`${E}_${M}`,R[M]);e.state.env.set(`${E}__length`,String(R.length))}}b(E),r&&ce(e,E),i&&_e(e,E);continue}if(l){let E=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(vn(e,E),!N.includes("="))continue}if(u){let E=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(_t(e,E),!N.includes("="))continue}let C=co(N);if(C){let{name:E,indexExpr:T,value:R}=C,X=Y(e,E);if(X)return X;w(E);let M;try{let ne=new W,de=K(ne,T);M=await V(e,de.expression)}catch{let ne=parseInt(T,10);M=Number.isNaN(ne)?0:ne}e.state.env.set(`${E}_${M}`,R);let q=parseInt(e.state.env.get(`${E}__length`)??"0",10);M>=q&&e.state.env.set(`${E}__length`,String(M+1)),b(E),r&&ce(e,E),i&&_e(e,E);continue}let k=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(k&&!c){let E=k[1],T=k[2],R=Y(e,E);if(R)return R;w(E);let X=Ne(T);if(e.state.associativeArrays?.has(E)){let M=Wt(T);for(let[q,ne]of M){let de=U(e,ne);e.state.env.set(`${E}_${q}`,de)}}else{let M=te(e,E),q=0,ne=e.state.env.get(E);M.length===0&&ne!==void 0?(e.state.env.set(`${E}_0`,ne),e.state.env.delete(E),q=1):M.length>0&&(q=Math.max(...M)+1);for(let Ze=0;Ze<X.length;Ze++)e.state.env.set(`${E}_${q+Ze}`,U(e,X[Ze]));let de=q+X.length;e.state.env.set(`${E}__length`,String(de))}b(E),r&&ce(e,E),i&&_e(e,E);continue}let O=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(O){let E=O[1],T=U(e,O[2]),R=Y(e,E);if(R)return R;y(E),f&&Is(e,E),d&&Rs(e,E),h&&Ls(e,E);let M=te(e,E).length>0||e.state.associativeArrays?.has(E);if(lt(e,E)){let q=e.state.env.get(E)??"0",ne=parseInt(q,10)||0,de=parseInt(await hr(e,T),10)||0;T=String(ne+de),e.state.env.set(E,T)}else if(M){T=st(e,E,T);let q=`${E}_0`,ne=e.state.env.get(q)??"";e.state.env.set(q,ne+T)}else{T=st(e,E,T);let q=e.state.env.get(E)??"";e.state.env.set(E,q+T)}b(E),r&&ce(e,E),i&&_e(e,E),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(E));continue}if(N.includes("=")){let E=N.indexOf("="),T=N.slice(0,E),R=N.slice(E+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(T)){$+=`bash: typeset: \`${T}': not a valid identifier
107
107
  `,D=1;continue}let X=Y(e,T);if(X)return X;if(y(T),a){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){$+=`bash: declare: \`${R}': invalid variable name for name reference
108
- `,D=1;continue}e.state.env.set(T,R),Te(e,T),R!==""&&as(e,R)&&os(e,T),b(T),r&&ce(e,T),i&&Ae(e,T);continue}if(f&&Is(e,T),d&&Rs(e,T),h&&Ls(e,T),lt(e,T)&&(R=await mr(e,R)),R=st(e,T,R),ge(e,T)){let M=Le(e,T);M&&M!==T?e.state.env.set(M,R):e.state.env.set(T,R)}else e.state.env.set(T,R);b(T),r&&ce(e,T),i&&Ae(e,T),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(T))}else{let E=N;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(E)){$+=`bash: typeset: \`${E}': not a valid identifier
109
- `,D=1;continue}if(s||n?w(E):y(E),a){Te(e,E);let R=e.state.env.get(E);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?En(e,E):R&&as(e,R)&&os(e,E),b(E),r&&ce(e,E),i&&Ae(e,E);continue}if(f&&Is(e,E),d&&Rs(e,E),h&&Ls(e,E),n){if(te(e,E).length>0){$+=`bash: declare: ${E}: cannot convert indexed to associative array
110
- `,D=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(E)}let T=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${E}_`)&&!R.startsWith(`${E}__length`));!e.state.env.has(E)&&!T&&(s||n?e.state.env.set(`${E}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(E))),b(E),r&&ce(e,E),i&&Ae(e,E)}}return P("",$,D)}async function Ms(e,t){let s=!1,n=!1,r=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")n=!0;else if(a==="-p")r=!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}"
111
- `}}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=Y(e,f);if(h)return h;let m=ke(d);if(e.state.associativeArrays?.has(f)){let p=Wt(d);for(let[g,A]of p){let v=U(e,A);e.state.env.set(`${f}_${g}`,v)}}else{let p=te(e,f),g=0,A=e.state.env.get(f);p.length===0&&A!==void 0?(e.state.env.set(`${f}_0`,A),e.state.env.delete(f),g=1):p.length>0&&(g=Math.max(...p)+1);for(let S=0;S<m.length;S++)e.state.env.set(`${f}_${g+S}`,U(e,m[S]));let v=g+m.length;e.state.env.set(`${f}__length`,String(v))}ce(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=U(e,l[2]),h=Y(e,f);if(h)return h;let m=e.state.env.get(f)??"";e.state.env.set(f,m+d),ce(e,f);continue}let c=Jn(o);if(c.value===void 0&&!c.isArray){ce(e,c.name);continue}let u=await er(e,c,{makeReadonly:!0});if(u)return u}return L}function Ws(e){return e.state.directoryStack??=[],e.state.directoryStack}function ct(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function fo(e){let t=e.split("/").filter(n=>n&&n!=="."),s=[];for(let n of t)n===".."?s.pop():s.push(n);return`/${s.join("/")}`}async function zs(e,t){let s=Ws(e),n;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(n!==void 0)return _(`bash: pushd: too many arguments
108
+ `,D=1;continue}e.state.env.set(T,R),Te(e,T),R!==""&&as(e,R)&&os(e,T),b(T),r&&ce(e,T),i&&_e(e,T);continue}if(f&&Is(e,T),d&&Rs(e,T),h&&Ls(e,T),lt(e,T)&&(R=await hr(e,R)),R=st(e,T,R),ge(e,T)){let M=Le(e,T);M&&M!==T?e.state.env.set(M,R):e.state.env.set(T,R)}else e.state.env.set(T,R);b(T),r&&ce(e,T),i&&_e(e,T),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(T))}else{let E=N;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(E)){$+=`bash: typeset: \`${E}': not a valid identifier
109
+ `,D=1;continue}if(s||n?w(E):y(E),a){Te(e,E);let R=e.state.env.get(E);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?bn(e,E):R&&as(e,R)&&os(e,E),b(E),r&&ce(e,E),i&&_e(e,E);continue}if(f&&Is(e,E),d&&Rs(e,E),h&&Ls(e,E),n){if(te(e,E).length>0){$+=`bash: declare: ${E}: cannot convert indexed to associative array
110
+ `,D=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(E)}let T=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${E}_`)&&!R.startsWith(`${E}__length`));!e.state.env.has(E)&&!T&&(s||n?e.state.env.set(`${E}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(E))),b(E),r&&ce(e,E),i&&_e(e,E)}}return P("",$,D)}async function Ms(e,t){let s=!1,n=!1,r=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")n=!0;else if(a==="-p")r=!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}"
111
+ `}}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=Y(e,f);if(h)return h;let m=Ne(d);if(e.state.associativeArrays?.has(f)){let p=Wt(d);for(let[g,S]of p){let v=U(e,S);e.state.env.set(`${f}_${g}`,v)}}else{let p=te(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 A=0;A<m.length;A++)e.state.env.set(`${f}_${g+A}`,U(e,m[A]));let v=g+m.length;e.state.env.set(`${f}__length`,String(v))}ce(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=U(e,l[2]),h=Y(e,f);if(h)return h;let m=e.state.env.get(f)??"";e.state.env.set(f,m+d),ce(e,f);continue}let c=Yn(o);if(c.value===void 0&&!c.isArray){ce(e,c.name);continue}let u=await Qn(e,c,{makeReadonly:!0});if(u)return u}return L}function Ws(e){return e.state.directoryStack??=[],e.state.directoryStack}function ct(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function uo(e){let t=e.split("/").filter(n=>n&&n!=="."),s=[];for(let n of t)n===".."?s.pop():s.push(n);return`/${s.join("/")}`}async function zs(e,t){let s=Ws(e),n;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(n!==void 0)return _(`bash: pushd: too many arguments
112
112
  `,2);n=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return _(`bash: pushd: ${l}: invalid option
113
113
  `,2);if(n!==void 0)return _(`bash: pushd: too many arguments
114
114
  `,2);n=l}}if(n===void 0){if(s.length<2)return _(`bash: pushd: no other directory
115
- `,1);let a=s[0];s[0]=s[1],s[1]=a,n=s[0]}let r;if(n.startsWith("/"))r=n;else if(n===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),r=`/${a.join("/")}`}else n==="."?r=e.state.cwd:n.startsWith("~")?r=(e.state.env.get("HOME")||"/")+n.slice(1):r=`${e.state.cwd}/${n}`;r=fo(r);try{if(!(await e.fs.stat(r)).isDirectory)return _(`bash: pushd: ${n}: Not a directory
115
+ `,1);let a=s[0];s[0]=s[1],s[1]=a,n=s[0]}let r;if(n.startsWith("/"))r=n;else if(n===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),r=`/${a.join("/")}`}else n==="."?r=e.state.cwd:n.startsWith("~")?r=(e.state.env.get("HOME")||"/")+n.slice(1):r=`${e.state.cwd}/${n}`;r=uo(r);try{if(!(await e.fs.stat(r)).isDirectory)return _(`bash: pushd: ${n}: Not a directory
116
116
  `,1)}catch{return _(`bash: pushd: ${n}: No such file or directory
117
117
  `,1)}s.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[r,...s].map(a=>ct(a,i)).join(" ")}
118
118
  `;return F(o)}function Vs(e,t){let s=Ws(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?_(`bash: popd: ${o}: invalid option
@@ -129,11 +129,11 @@ import{B as _n,C as Cn,D as ce,E as Be,F as Y,G as Ae,H as _t,I as Pn,J as x,K a
129
129
  `:c=a.map(u=>r?u:ct(u,l)).join(" ")+`
130
130
  `,F(c)}async function Ut(e,t,s){let n=t;if(n.length>0){let a=n[0];if(a==="--")n=n.slice(1);else if(a.startsWith("-")&&a!=="-"&&a.length>1)return _(`bash: eval: ${a}: invalid option
131
131
  eval: usage: eval [arg ...]
132
- `,2)}if(n.length===0)return L;let r=n.join(" ");if(r.trim()==="")return L;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=Ee(r);return await e.executeScript(a)}catch(a){if(a instanceof he||a instanceof pe||a instanceof le||a instanceof z)throw a;if(a.name==="ParseException")return _(`bash: eval: ${a.message}
132
+ `,2)}if(n.length===0)return L;let r=n.join(" ");if(r.trim()==="")return L;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=Se(r);return await e.executeScript(a)}catch(a){if(a instanceof he||a instanceof pe||a instanceof le||a instanceof z)throw a;if(a.name==="ParseException")return _(`bash: eval: ${a.message}
133
133
  `);throw a}finally{e.state.groupStdin=i}}function js(e,t){let s,n="";if(t.length===0)s=e.state.lastExitCode;else{let r=t[0],i=Number.parseInt(r,10);r===""||Number.isNaN(i)||!/^-?\d+$/.test(r)?(n=`bash: exit: ${r}: numeric argument required
134
134
  `,s=2):s=(i%256+256)%256}throw new z(s,"",n)}function Hs(e,t){let s=!1,n=[];for(let o of t)o==="-n"?s=!0:o==="-p"||o==="--"||n.push(o);if(n.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}"
135
135
  `}}return F(o)}if(s){for(let o of n){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=U(e,o.slice(c+1)),e.state.env.set(a,l)}else a=o;_t(e,a)}return L}let r="",i=0;for(let o of n){let a,l,c=!1,u=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)a=u[1],l=U(e,u[2]),c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=U(e,o.slice(f+1))}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){r+=`bash: export: \`${o}': not a valid identifier
136
- `,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,"");Ae(e,a)}return P("",r,i)}function qt(e,t){if(t.length<2)return _(`bash: getopts: usage: getopts optstring name [arg ...]
136
+ `,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,"");_e(e,a)}return P("",r,i)}function qt(e,t){if(t.length<2)return _(`bash: getopts: usage: getopts optstring name [arg ...]
137
137
  `);let s=t[0],n=t[1],r=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n),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 r||e.state.env.set(n,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),r||e.state.env.set(n,"?"),{exitCode:r?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"),qt(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}
138
138
  `,r||e.state.env.set(n,"?"),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:r?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),r||e.state.env.set(n,":")):(p=`bash: option requires an argument -- ${d}
139
139
  `,r||e.state.env.set(n,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?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 r||e.state.env.set(n,d),{exitCode:r?2:0,stdout:"",stderr:""}}async function Us(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,n=!1,r=!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")n=!0,c++;else if(m==="-l")r=!0,c++;else if(m==="-t")o=!0,c++;else if(m==="-p"){if(i=!0,c++,c>=t.length)return _(`bash: hash: -p: option requires an argument
@@ -142,17 +142,17 @@ eval: usage: eval [arg ...]
142
142
  `,1);c++}else l.push(m),c++}if(s)return e.state.hashTable.clear(),L;if(n){if(l.length===0)return _(`bash: hash: -d: option requires an argument
143
143
  `,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
144
144
  `,m=!0);return m?_(p,1):L}if(o){if(l.length===0)return _(`bash: hash: -t: option requires an argument
145
- `,1);let m="",p=!1,g="";for(let A of l){let v=e.state.hashTable.get(A);v?l.length>1?m+=`${A} ${v}
145
+ `,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}
146
146
  `:m+=`${v}
147
- `:(g+=`bash: hash: ${A}: not found
147
+ `:(g+=`bash: hash: ${S}: not found
148
148
  `,p=!0)}return p?{exitCode:1,stdout:m,stderr:g}:F(m)}if(i){if(l.length===0)return _(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
149
149
  `,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
150
150
  `);let m="";if(r)for(let[p,g]of e.state.hashTable)m+=`builtin hash -p ${g} ${p}
151
151
  `;else{m=`hits command
152
152
  `;for(let[,p]of e.state.hashTable)m+=` 1 ${p}
153
153
  `}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
154
- `,u=!0;continue}let p=!1;for(let g of h){if(!g)continue;let A=`${g}/${m}`;if(await e.fs.exists(A)){e.state.hashTable.set(m,A),p=!0;break}}p||(f+=`bash: hash: ${m}: not found
155
- `,u=!0)}return u?_(f,1):L}var yr=new Map([[":",[": [arguments]",`Null command.
154
+ `,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
155
+ `,u=!0)}return u?_(f,1):L}var pr=new Map([[":",[": [arguments]",`Null command.
156
156
  No effect; the command does nothing.
157
157
  Exit Status:
158
158
  Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
@@ -497,31 +497,31 @@ eval: usage: eval [arg ...]
497
497
  job specification, and reports its termination status.
498
498
  Exit Status:
499
499
  Returns the status of the last ID; fails if ID is invalid or an invalid
500
- option is given.`]]]),gr=[...yr.keys()].sort();function qs(e,t){let s=!1,n=[],r=0;for(;r<t.length;){let l=t[r];if(l==="--"){for(r++;r<t.length;)n.push(t[r]),r++;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 _(`bash: help: -${u}: invalid option
501
- `,2)}r++}else n.push(l),r++}if(n.length===0)return po();let i="",o=!1,a="";for(let l of n){let c=ho(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
502
- `,o=!0;continue}for(let u of c){let f=yr.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
500
+ option is given.`]]]),mr=[...pr.keys()].sort();function qs(e,t){let s=!1,n=[],r=0;for(;r<t.length;){let l=t[r];if(l==="--"){for(r++;r<t.length;)n.push(t[r]),r++;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 _(`bash: help: -${u}: invalid option
501
+ `,2)}r++}else n.push(l),r++}if(n.length===0)return ho();let i="",o=!1,a="";for(let l of n){let c=fo(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
502
+ `,o=!0;continue}for(let u of c){let f=pr.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
503
503
  `:i+=`${u}: ${d}
504
504
  ${h}
505
- `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function ho(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=rt(`^${t}$`);return gr.filter(n=>s.test(n))}function po(){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=gr.slice(),n=Math.ceil(s.length/2);for(let r=0;r<n;r++){let i=s[r]||"",o=s[r+n]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return F(`${e.join(`
505
+ `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function fo(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=rt(`^${t}$`);return mr.filter(n=>s.test(n))}function ho(){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=mr.slice(),n=Math.ceil(s.length/2);for(let r=0;r<n;r++){let i=s[r]||"",o=s[r+n]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return F(`${e.join(`
506
506
  `)}
507
- `)}function mo(e){let t=[],s="",n=0;for(let r of e){for(let i of r)i==="("?n++:i===")"&&n--;s?s+=` ${r}`:s=r,n===0&&(t.push(s),s="")}return s&&t.push(s),t}async function Zs(e,t){if(t.length===0)return _(`bash: let: expression expected
508
- `);let s=mo(t),n=0;for(let r of s)try{let o=Ee(`(( ${r} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(n=await V(e,a.expression.expression))}}catch(i){return _(`bash: let: ${r}: ${i.message}
507
+ `)}function po(e){let t=[],s="",n=0;for(let r of e){for(let i of r)i==="("?n++:i===")"&&n--;s?s+=` ${r}`:s=r,n===0&&(t.push(s),s="")}return s&&t.push(s),t}async function Zs(e,t){if(t.length===0)return _(`bash: let: expression expected
508
+ `);let s=po(t),n=0;for(let r of s)try{let o=Se(`(( ${r} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(n=await V(e,a.expression.expression))}}catch(i){return _(`bash: let: ${r}: ${i.message}
509
509
  `)}return P("","",n===0?1:0)}async function Gs(e,t){if(e.state.localScopes.length===0)return _(`bash: local: can only be used in a function
510
510
  `);let s=e.state.localScopes[e.state.localScopes.length-1],n="",r=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}
511
- `)}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 A=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
512
- `,r=1;continue}if(Y(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 S=ke(A);for(let y=0;y<S.length;y++)e.state.env.set(`${u}_${y}`,S[y]);e.state.env.set(`${u}__length`,String(S.length)),We(e,u),i&&Te(e,u);continue}let h=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){u=h[1];let A=h[2];if(Y(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let $=`${u}_`;for(let N of e.state.env.keys())N.startsWith($)&&!N.includes("__")&&(s.has(N)||s.set(N,e.state.env.get(N)));let D=`${u}__length`;e.state.env.has(D)&&!s.has(D)&&s.set(D,e.state.env.get(D))}let v=ke(A),S=te(e,u),y=0,w=e.state.env.get(u);S.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),y=1):S.length>0&&(y=Math.max(...S)+1);for(let $=0;$<v.length;$++)e.state.env.set(`${u}_${y+$}`,U(e,v[$]));let b=y+v.length;e.state.env.set(`${u}__length`,String(b)),We(e,u),i&&Te(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){u=m[1];let A=U(e,m[2]);Y(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+A),We(e,u),i&&Te(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){u=p[1];let A=p[2],v=U(e,p[3]);if(Y(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 b=`${u}__length`;e.state.env.has(b)&&!s.has(b)&&s.set(b,e.state.env.get(b))}let S;try{let w=new W,b=K(w,A);S=await V(e,b.expression)}catch{let w=parseInt(A,10);S=Number.isNaN(w)?0:w}e.state.env.set(`${u}_${S}`,v);let y=parseInt(e.state.env.get(`${u}__length`)??"0",10);S>=y&&e.state.env.set(`${u}__length`,String(S+1)),We(e,u),i&&Te(e,u);continue}if(c.includes("=")){let A=c.indexOf("=");u=c.slice(0,A),f=U(e,c.slice(A+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
513
- `,r=1;continue}let g=s.has(u);if(f!==void 0){let A=e.state.env.get(u);if(e.state.tempEnvBindings){let v=e.state.accessedTempEnvVars?.has(u),S=e.state.mutatedTempEnvVars?.has(u);if(!v&&!S)for(let y=e.state.tempEnvBindings.length-1;y>=0;y--){let w=e.state.tempEnvBindings[y];if(w.has(u)){A=w.get(u);break}}}tr(e,u,A)}if(!g){let A=e.state.env.get(u);if(e.state.tempEnvBindings)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let S=e.state.tempEnvBindings[v];if(S.has(u)){A=S.get(u);break}}if(s.set(u,A),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 S=`${u}__length`;e.state.env.has(S)&&!s.has(S)&&s.set(S,e.state.env.get(S))}}if(o&&f===void 0){let A=`${u}_`;for(let v of e.state.env.keys())v.startsWith(A)&&!v.includes("__")&&e.state.env.delete(v);e.state.env.set(`${u}__length`,"0")}else if(f!==void 0){if(Y(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){n+=`bash: local: \`${f}': invalid variable name for name reference
514
- `,r=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 A=e.state.tempEnvBindings?.some(v=>v.has(u));!g&&!A&&e.state.env.delete(u)}We(e,u),i&&Te(e,u)}return P("",n,r)}function Ks(e,t,s){let n=`
511
+ `)}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 S=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
512
+ `,r=1;continue}if(Y(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 A=Ne(S);for(let y=0;y<A.length;y++)e.state.env.set(`${u}_${y}`,A[y]);e.state.env.set(`${u}__length`,String(A.length)),We(e,u),i&&Te(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(Y(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let $=`${u}_`;for(let N of e.state.env.keys())N.startsWith($)&&!N.includes("__")&&(s.has(N)||s.set(N,e.state.env.get(N)));let D=`${u}__length`;e.state.env.has(D)&&!s.has(D)&&s.set(D,e.state.env.get(D))}let v=Ne(S),A=te(e,u),y=0,w=e.state.env.get(u);A.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),y=1):A.length>0&&(y=Math.max(...A)+1);for(let $=0;$<v.length;$++)e.state.env.set(`${u}_${y+$}`,U(e,v[$]));let b=y+v.length;e.state.env.set(`${u}__length`,String(b)),We(e,u),i&&Te(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){u=m[1];let S=U(e,m[2]);Y(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),We(e,u),i&&Te(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=U(e,p[3]);if(Y(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 b=`${u}__length`;e.state.env.has(b)&&!s.has(b)&&s.set(b,e.state.env.get(b))}let A;try{let w=new W,b=K(w,S);A=await V(e,b.expression)}catch{let w=parseInt(S,10);A=Number.isNaN(w)?0:w}e.state.env.set(`${u}_${A}`,v);let y=parseInt(e.state.env.get(`${u}__length`)??"0",10);A>=y&&e.state.env.set(`${u}__length`,String(A+1)),We(e,u),i&&Te(e,u);continue}if(c.includes("=")){let S=c.indexOf("=");u=c.slice(0,S),f=U(e,c.slice(S+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
513
+ `,r=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),A=e.state.mutatedTempEnvVars?.has(u);if(!v&&!A)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}}}Jn(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 A=e.state.tempEnvBindings[v];if(A.has(u)){S=A.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 A=`${u}__length`;e.state.env.has(A)&&!s.has(A)&&s.set(A,e.state.env.get(A))}}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(Y(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){n+=`bash: local: \`${f}': invalid variable name for name reference
514
+ `,r=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)}We(e,u),i&&Te(e,u)}return P("",n,r)}function Ks(e,t,s){let n=`
515
515
  `,r=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?(n=t[c+1]===""?"\0":t[c+1]||`
516
516
  `,c+=2):v==="-n"&&c+1<t.length?(r=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(n);if(v===-1){if(d.length>0){if(m<o)m++;else if(r===0||h<r){if(i+h>=p)return P("",`mapfile: array element limit exceeded (${p})
517
- `,1);let w=d,b=w.indexOf("\0");b!==-1&&(w=w.substring(0,b)),f.push(w),h++}}break}let S=d.substring(0,v),y=S.indexOf("\0");if(y!==-1&&(S=S.substring(0,y)),!a&&n!=="\0"&&(S+=n),d=d.substring(v+n.length),m<o){m++;continue}if(r>0&&h>=r)break;if(i+h>=p)return P("",`mapfile: array element limit exceeded (${p})
518
- `,1);f.push(S),h++}i===0&&Ce(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),A=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(g,A))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),P("","",0)}function yo(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),o=r+n+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 go(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function Xs(e,t,s,n=-1){let r=!1,i=`
519
- `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,m=!1,p=(C,k)=>{let O=1;for(;O<C.length;){let E=C[O];if(E==="r")r=!0,O++;else if(E==="s")O++;else{if(E==="d")return O+1<C.length?(i=C.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(i=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if(E==="n"){if(O+1<C.length){let T=C.substring(O+1);return a=Number.parseInt(T,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(E==="N"){if(O+1<C.length){let T=C.substring(O+1);return l=Number.parseInt(T,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(E==="a")return O+1<C.length?(c=C.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(c=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if(E==="p")return O+1<C.length?(o=C.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(o=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if(E==="u"){if(O+1<C.length){let T=C.substring(O+1);return u=Number.parseInt(T,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(E==="t"){if(O+1<C.length){let T=C.substring(O+1);return f=Number.parseFloat(T),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==="e"||E==="i"||E==="P"){if(E==="i"&&k+1<t.length)return{nextArgIndex:k+2};O++}else O++}}}return{nextArgIndex:k+1}};for(;h<t.length;){let C=t[h];if(C.startsWith("-")&&C.length>1&&C!=="--"){let k=p(C,h);if(k.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(k.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=k.nextArgIndex}else if(C==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(C),h++}if(m)return P("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)Ce(e,c);else{for(let C of d)e.state.env.set(C,"");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 A=i===""?"\0":i,v="",S=0,y=!0,w=C=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,g.substring(C));else if(n>=0&&e.state.fileDescriptors){let k=e.state.fileDescriptors.get(n);if(k?.startsWith("__rw__:")){let O=yo(k);if(O){let E=O.position+C;e.state.fileDescriptors.set(n,go(O.path,E,O.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=g.substring(C))};if(l>=0){let C=Math.min(l,g.length);v=g.substring(0,C),S=C,y=C>=l,w(S);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 P("","",y?0:1)}else if(a>=0){let C=0,k=0,O=!1;for(;k<g.length&&C<a;){let E=g[k];if(E===A){S=k+1,O=!0;break}if(!r&&E==="\\"&&k+1<g.length){let T=g[k+1];if(T===A&&A===`
520
- `){k+=2,S=k;continue}if(T===A){k+=2,C++,v+=T,S=k;continue}v+=T,k+=2,C++,S=k}else v+=E,k++,C++,S=k}y=C>=a||O,w(S)}else{S=0;let C=0;for(;C<g.length;){let k=g[C];if(k===A){S=C+A.length,y=!0;break}if(!r&&k==="\\"&&C+1<g.length){let O=g[C+1];if(O===`
521
- `){C+=2;continue}if(O===A){v+=O,C+=2;continue}v+=k,v+=O,C+=2;continue}v+=k,C++}if(C>=g.length&&(y=!1,S=C,v.length===0&&g.length===0)){for(let k of d)e.state.env.set(k,"");return c&&Ce(e,c),P("","",1)}w(S)}A===`
517
+ `,1);let w=d,b=w.indexOf("\0");b!==-1&&(w=w.substring(0,b)),f.push(w),h++}}break}let A=d.substring(0,v),y=A.indexOf("\0");if(y!==-1&&(A=A.substring(0,y)),!a&&n!=="\0"&&(A+=n),d=d.substring(v+n.length),m<o){m++;continue}if(r>0&&h>=r)break;if(i+h>=p)return P("",`mapfile: array element limit exceeded (${p})
518
+ `,1);f.push(A),h++}i===0&&Pe(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=""),P("","",0)}function mo(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),o=r+n+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 yo(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function Xs(e,t,s,n=-1){let r=!1,i=`
519
+ `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,m=!1,p=(C,k)=>{let O=1;for(;O<C.length;){let E=C[O];if(E==="r")r=!0,O++;else if(E==="s")O++;else{if(E==="d")return O+1<C.length?(i=C.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(i=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if(E==="n"){if(O+1<C.length){let T=C.substring(O+1);return a=Number.parseInt(T,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(E==="N"){if(O+1<C.length){let T=C.substring(O+1);return l=Number.parseInt(T,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(E==="a")return O+1<C.length?(c=C.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(c=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if(E==="p")return O+1<C.length?(o=C.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(o=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if(E==="u"){if(O+1<C.length){let T=C.substring(O+1);return u=Number.parseInt(T,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(E==="t"){if(O+1<C.length){let T=C.substring(O+1);return f=Number.parseFloat(T),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==="e"||E==="i"||E==="P"){if(E==="i"&&k+1<t.length)return{nextArgIndex:k+2};O++}else O++}}}return{nextArgIndex:k+1}};for(;h<t.length;){let C=t[h];if(C.startsWith("-")&&C.length>1&&C!=="--"){let k=p(C,h);if(k.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(k.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=k.nextArgIndex}else if(C==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(C),h++}if(m)return P("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)Pe(e,c);else{for(let C of d)e.state.env.set(C,"");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 S=i===""?"\0":i,v="",A=0,y=!0,w=C=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,g.substring(C));else if(n>=0&&e.state.fileDescriptors){let k=e.state.fileDescriptors.get(n);if(k?.startsWith("__rw__:")){let O=mo(k);if(O){let E=O.position+C;e.state.fileDescriptors.set(n,yo(O.path,E,O.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=g.substring(C))};if(l>=0){let C=Math.min(l,g.length);v=g.substring(0,C),A=C,y=C>=l,w(A);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 P("","",y?0:1)}else if(a>=0){let C=0,k=0,O=!1;for(;k<g.length&&C<a;){let E=g[k];if(E===S){A=k+1,O=!0;break}if(!r&&E==="\\"&&k+1<g.length){let T=g[k+1];if(T===S&&S===`
520
+ `){k+=2,A=k;continue}if(T===S){k+=2,C++,v+=T,A=k;continue}v+=T,k+=2,C++,A=k}else v+=E,k++,C++,A=k}y=C>=a||O,w(A)}else{A=0;let C=0;for(;C<g.length;){let k=g[C];if(k===S){A=C+S.length,y=!0;break}if(!r&&k==="\\"&&C+1<g.length){let O=g[C+1];if(O===`
521
+ `){C+=2;continue}if(O===S){v+=O,C+=2;continue}v+=k,v+=O,C+=2;continue}v+=k,C++}if(C>=g.length&&(y=!1,A=C,v.length===0&&g.length===0)){for(let k of d)e.state.env.set(k,"");return c&&Pe(e,c),P("","",1)}w(A)}S===`
522
522
  `&&v.endsWith(`
523
- `)&&(v=v.slice(0,-1));let b=C=>r?C:C.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",b(v)),P("","",y?0:1);let $=vn(e.state.env);if(c){let{words:C}=is(v,$,void 0,r),k=e.limits?.maxArrayElements??1e5;if(C.length>k)return P("",`read: array element limit exceeded (${k})
524
- `,1);Ce(e,c);for(let O=0;O<C.length;O++)e.state.env.set(`${c}_${O}`,b(C[O]));return P("","",y?0:1)}let D=d.length,{words:N,wordStarts:I}=is(v,$,D,r);for(let C=0;C<d.length;C++){let k=d[C];if(C<d.length-1)e.state.env.set(k,b(N[C]??""));else if(C<I.length){let O=v.substring(I[C]);O=bn(O,$,r),O=b(O),e.state.env.set(k,O)}else e.state.env.set(k,"")}return P("","",y?0:1)}function Ys(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return _("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let n=t[0],r=Number.parseInt(n,10);if(n===""||Number.isNaN(r)||!/^-?\d+$/.test(n))return _(`bash: return: ${n}: numeric argument required
523
+ `)&&(v=v.slice(0,-1));let b=C=>r?C:C.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",b(v)),P("","",y?0:1);let $=gn(e.state.env);if(c){let{words:C}=is(v,$,void 0,r),k=e.limits?.maxArrayElements??1e5;if(C.length>k)return P("",`read: array element limit exceeded (${k})
524
+ `,1);Pe(e,c);for(let O=0;O<C.length;O++)e.state.env.set(`${c}_${O}`,b(C[O]));return P("","",y?0:1)}let D=d.length,{words:N,wordStarts:I}=is(v,$,D,r);for(let C=0;C<d.length;C++){let k=d[C];if(C<d.length-1)e.state.env.set(k,b(N[C]??""));else if(C<I.length){let O=v.substring(I[C]);O=wn(O,$,r),O=b(O),e.state.env.set(k,O)}else e.state.env.set(k,"")}return P("","",y?0:1)}function Ys(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return _("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let n=t[0],r=Number.parseInt(n,10);if(n===""||Number.isNaN(r)||!/^-?\d+$/.test(n))return _(`bash: return: ${n}: numeric argument required
525
525
  `,2);s=(r%256+256)%256}throw new le(s)}var Zt=`set: usage: set [-eux] [+eux] [-o option] [+o option]
526
526
  Options:
527
527
  -e Exit immediately if a command exits with non-zero status
@@ -538,56 +538,56 @@ Options:
538
538
  +o pipefail Disable pipefail
539
539
  -o xtrace Same as -x
540
540
  +o xtrace Disable xtrace
541
- `,wr=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]]),vr=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]]),br=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],$r=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Er(e,t,s){t!==null&&(s&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=s,Ye(e))}function wo(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function vo(e,t){let s=te(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${He(i)}`});return`${t}=(${n.join(" ")})`}function bo(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function $o(e,t){let s=Re(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${bo(r)}]=${He(i)}`});return`${t}=(${n.join(" ")} )`}function Eo(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let n of e.state.env.keys()){let r=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(r){let i=r[1];s.has(i)||t.add(i)}}return t}function So(e){return e.state.associativeArrays??new Set}function Js(e,t){if(t.includes("--help"))return F(Zt);if(t.length===0){let n=Eo(e),r=So(e),i=l=>{for(let c of r){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)||n.has(l)||r.has(l))continue;let u=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(u&&n.has(u[1]))continue;let f=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);f&&n.has(f[1])||i(l)||f&&r.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}=${Ht(c)}`);for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))a.push(vo(e,l));for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push($o(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(`
541
+ `,yr=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]]),gr=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]]),wr=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],vr=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function br(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,Ye(e))}function go(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function wo(e,t){let s=te(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${He(i)}`});return`${t}=(${n.join(" ")})`}function vo(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function bo(e,t){let s=Re(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${vo(r)}]=${He(i)}`});return`${t}=(${n.join(" ")} )`}function $o(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let n of e.state.env.keys()){let r=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(r){let i=r[1];s.has(i)||t.add(i)}}return t}function Eo(e){return e.state.associativeArrays??new Set}function Js(e,t){if(t.includes("--help"))return F(Zt);if(t.length===0){let n=$o(e),r=Eo(e),i=l=>{for(let c of r){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)||n.has(l)||r.has(l))continue;let u=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(u&&n.has(u[1]))continue;let f=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);f&&n.has(f[1])||i(l)||f&&r.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}=${Ht(c)}`);for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))a.push(wo(e,l));for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push(bo(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(`
542
542
  `)}
543
- `:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&wo(t,s)){let r=t[s+1];if(!vr.has(r)){let i=`bash: set: ${r}: invalid option name
544
- ${Zt}`;if(e.state.options.posix)throw new ve(1,"",i);return _(i)}Er(e,vr.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=br.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=$r.map(a=>`${a.padEnd(16)}off`),o=[...r,...i].sort();return F(`${o.join(`
543
+ `:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&go(t,s)){let r=t[s+1];if(!gr.has(r)){let i=`bash: set: ${r}: invalid option name
544
+ ${Zt}`;if(e.state.options.posix)throw new be(1,"",i);return _(i)}br(e,gr.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=wr.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=vr.map(a=>`${a.padEnd(16)}off`),o=[...r,...i].sort();return F(`${o.join(`
545
545
  `)}
546
- `)}if(n==="+o"){let r=br.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=$r.map(a=>`set +o ${a}`),o=[...r,...i].sort();return F(`${o.join(`
546
+ `)}if(n==="+o"){let r=wr.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=vr.map(a=>`set +o ${a}`),o=[...r,...i].sort();return F(`${o.join(`
547
547
  `)}
548
- `)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let o=n[i];if(!wr.has(o)){let a=`bash: set: ${n[0]}${o}: invalid option
549
- ${Zt}`;if(e.state.options.posix)throw new ve(1,"",a);return _(a)}Er(e,wr.get(o)??null,r)}s++;continue}if(n==="--")return Qs(e,t.slice(s+1)),L;if(n==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Ye(e),s+1<t.length)return Qs(e,t.slice(s+1)),L;s++;continue}if(n==="+"){s++;continue}if(n.startsWith("-")||n.startsWith("+")){let r=`bash: set: ${n}: invalid option
550
- ${Zt}`;if(e.state.options.posix)throw new ve(1,"",r);return _(r)}return Qs(e,t.slice(s)),L}return L}function Qs(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let n=0;n<t.length;n++)e.state.env.set(String(n+1),t[n]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function en(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
551
- `;if(e.state.options.posix)throw new ve(1,"",a);return _(a)}s=o}let n=Number.parseInt(e.state.env.get("#")||"0",10);if(s>n){let o=`bash: shift: shift count out of range
552
- `;if(e.state.options.posix)throw new ve(1,"",o);return _(o)}if(s===0)return L;let r=[];for(let o=1;o<=n;o++)r.push(e.state.env.get(String(o))||"");let i=r.slice(s);for(let o=1;o<=n;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 tn(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
548
+ `)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let o=n[i];if(!yr.has(o)){let a=`bash: set: ${n[0]}${o}: invalid option
549
+ ${Zt}`;if(e.state.options.posix)throw new be(1,"",a);return _(a)}br(e,yr.get(o)??null,r)}s++;continue}if(n==="--")return Qs(e,t.slice(s+1)),L;if(n==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Ye(e),s+1<t.length)return Qs(e,t.slice(s+1)),L;s++;continue}if(n==="+"){s++;continue}if(n.startsWith("-")||n.startsWith("+")){let r=`bash: set: ${n}: invalid option
550
+ ${Zt}`;if(e.state.options.posix)throw new be(1,"",r);return _(r)}return Qs(e,t.slice(s)),L}return L}function Qs(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let n=0;n<t.length;n++)e.state.env.set(String(n+1),t[n]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function en(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
551
+ `;if(e.state.options.posix)throw new be(1,"",a);return _(a)}s=o}let n=Number.parseInt(e.state.env.get("#")||"0",10);if(s>n){let o=`bash: shift: shift count out of range
552
+ `;if(e.state.options.posix)throw new be(1,"",o);return _(o)}if(s===0)return L;let r=[];for(let o=1;o<=n;o++)r.push(e.state.env.get(String(o))||"");let i=r.slice(s);for(let o=1;o<=n;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 tn(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
553
553
  `,2);let n=s[0],r=null,i=null;if(n.includes("/")){let c=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(c),r=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}/${n}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),r=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(f),r=f}catch{}}}if(i===null)return _(`bash: ${n}: No such file or directory
554
- `);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=n;try{let c=Ee(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof z)throw c;if(c instanceof le)return P(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return _(`bash: ${n}: ${c.message}
555
- `);throw c}}function Sr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Ao(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Ar(e,t){if(Ao(t))return null;try{let s=new W,n=K(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function _r(e,t){if(e.state.localVarStack?.has(t)){let n=Vt(e,t);if(n){n.value===void 0?e.state.env.delete(t):e.state.env.set(t,n.value);let r=e.state.localVarStack?.get(t);if(!r||r.length===0)zt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),sn(e,t);else{let i=r[r.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),zt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let n=e.state.localScopes.length-1;n>=0;n--){let r=e.state.localScopes[n];if(r.has(t)){let i=r.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),r.delete(t);let o=!1;for(let a=n-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||zt(e,t),!0}}return!1}function sn(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let s=e.state.tempEnvBindings.length-1;s>=0;s--){let n=e.state.tempEnvBindings[s];if(n.has(t)){let r=n.get(t);return r===void 0?e.state.env.delete(t):e.state.env.set(t,r),n.delete(t),!0}}return!1}async function Cr(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),r=new W().parseWordFromString(s,!0,!1);return x(e,r)}if(t.includes("$")){let n=new W().parseWordFromString(t,!1,!1);return x(e,n)}return t}async function nn(e,t){let s="both",n="",r=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],h=c[2];if(h==="@"||h==="*"){let S=Se(e,d);for(let[y]of S)e.state.env.delete(`${d}_${y}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let S=await Cr(e,h);e.state.env.delete(`${d}_${S}`);continue}let p=ls(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){n+=`bash: unset: ${d}: not an array variable
556
- `,r=1;continue}let v=await Ar(e,h);if(v===null&&p){n+=`bash: unset: ${h}: not a valid identifier
557
- `,r=1;continue}if(v===null)continue;if(v<0){let S=Se(e,d),y=S.length,w=e.state.currentLine;if(y===0){n+=`bash: line ${w}: unset: [${v}]: bad array subscript
554
+ `);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=n;try{let c=Se(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof z)throw c;if(c instanceof le)return P(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return _(`bash: ${n}: ${c.message}
555
+ `);throw c}}function $r(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function So(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Er(e,t){if(So(t))return null;try{let s=new W,n=K(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function Sr(e,t){if(e.state.localVarStack?.has(t)){let n=Vt(e,t);if(n){n.value===void 0?e.state.env.delete(t):e.state.env.set(t,n.value);let r=e.state.localVarStack?.get(t);if(!r||r.length===0)zt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),sn(e,t);else{let i=r[r.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),zt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let n=e.state.localScopes.length-1;n>=0;n--){let r=e.state.localScopes[n];if(r.has(t)){let i=r.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),r.delete(t);let o=!1;for(let a=n-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||zt(e,t),!0}}return!1}function sn(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let s=e.state.tempEnvBindings.length-1;s>=0;s--){let n=e.state.tempEnvBindings[s];if(n.has(t)){let r=n.get(t);return r===void 0?e.state.env.delete(t):e.state.env.set(t,r),n.delete(t),!0}}return!1}async function Ar(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),r=new W().parseWordFromString(s,!0,!1);return x(e,r)}if(t.includes("$")){let n=new W().parseWordFromString(t,!1,!1);return x(e,n)}return t}async function nn(e,t){let s="both",n="",r=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],h=c[2];if(h==="@"||h==="*"){let A=Ae(e,d);for(let[y]of A)e.state.env.delete(`${d}_${y}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let A=await Ar(e,h);e.state.env.delete(`${d}_${A}`);continue}let p=ls(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){n+=`bash: unset: ${d}: not an array variable
556
+ `,r=1;continue}let v=await Er(e,h);if(v===null&&p){n+=`bash: unset: ${h}: not a valid identifier
557
+ `,r=1;continue}if(v===null)continue;if(v<0){let A=Ae(e,d),y=A.length,w=e.state.currentLine;if(y===0){n+=`bash: line ${w}: unset: [${v}]: bad array subscript
558
558
  `,r=1;continue}let b=y+v;if(b<0){n+=`bash: line ${w}: unset: [${v}]: bad array subscript
559
- `,r=1;continue}let $=S[b][0];e.state.env.delete(`${d}_${$}`);continue}e.state.env.delete(`${d}_${v}`);continue}if(!Sr(i)){n+=`bash: unset: \`${i}': not a valid identifier
559
+ `,r=1;continue}let $=A[b][0];e.state.env.delete(`${d}_${$}`);continue}e.state.env.delete(`${d}_${v}`);continue}if(!$r(i)){n+=`bash: unset: \`${i}': not a valid identifier
560
560
  `,r=1;continue}let u=i;if(ge(e,i)){let d=Le(e,i);d&&d!==i&&(u=d)}if(Be(e,u)){n+=`bash: unset: ${u}: cannot unset: readonly variable
561
- `,r=1;continue}let f=Je(e,u);if(f!==void 0&&f!==e.state.callDepth)_r(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=Vt(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 sn(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=Se(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 Cr(e,u);e.state.env.delete(`${c}_${p}`);continue}let d=ls(e,c);if(e.state.env.has(c)&&!d&&!f){n+=`bash: unset: ${c}: not an array variable
562
- `,r=1;continue}let m=await Ar(e,u);if(m===null&&d){n+=`bash: unset: ${u}: not a valid identifier
563
- `,r=1;continue}if(m===null)continue;if(m<0){let p=Se(e,c),g=p.length,A=e.state.currentLine;if(g===0){n+=`bash: line ${A}: unset: [${m}]: bad array subscript
564
- `,r=1;continue}let v=g+m;if(v<0){n+=`bash: line ${A}: unset: [${m}]: bad array subscript
565
- `,r=1;continue}let S=p[v][0];e.state.env.delete(`${c}_${S}`);continue}e.state.env.delete(`${c}_${m}`);continue}if(!Sr(i)){n+=`bash: unset: \`${i}': not a valid identifier
561
+ `,r=1;continue}let f=Je(e,u);if(f!==void 0&&f!==e.state.callDepth)Sr(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=Vt(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 sn(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=Ae(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 Ar(e,u);e.state.env.delete(`${c}_${p}`);continue}let d=ls(e,c);if(e.state.env.has(c)&&!d&&!f){n+=`bash: unset: ${c}: not an array variable
562
+ `,r=1;continue}let m=await Er(e,u);if(m===null&&d){n+=`bash: unset: ${u}: not a valid identifier
563
+ `,r=1;continue}if(m===null)continue;if(m<0){let p=Ae(e,c),g=p.length,S=e.state.currentLine;if(g===0){n+=`bash: line ${S}: unset: [${m}]: bad array subscript
564
+ `,r=1;continue}let v=g+m;if(v<0){n+=`bash: line ${S}: unset: [${m}]: bad array subscript
565
+ `,r=1;continue}let A=p[v][0];e.state.env.delete(`${c}_${A}`);continue}e.state.env.delete(`${c}_${m}`);continue}if(!$r(i)){n+=`bash: unset: \`${i}': not a valid identifier
566
566
  `,r=1;continue}let a=i;if(ge(e,i)){let c=Le(e,i);c&&c!==i&&(a=c)}if(Be(e,a)){n+=`bash: unset: ${a}: cannot unset: readonly variable
567
- `,r=1;continue}let l=Je(e,a);if(l!==void 0&&l!==e.state.callDepth)_r(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=Vt(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 sn(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return P("",n,r)}var rn=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],_o=["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 Gt(e){return rn.includes(e)}function Co(e){return _o.includes(e)}function Pr(e,t){let s=!1,n=!1,r=!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":n=!0;break;case"p":r=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
568
- `}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return Po(e,a,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
567
+ `,r=1;continue}let l=Je(e,a);if(l!==void 0&&l!==e.state.callDepth)Sr(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=Vt(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 sn(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return P("",n,r)}var rn=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Ao=["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 Gt(e){return rn.includes(e)}function _o(e){return Ao.includes(e)}function _r(e,t){let s=!1,n=!1,r=!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":n=!0;break;case"p":r=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
568
+ `}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return Co(e,a,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
569
569
  `};if(a.length===0){if(s||n){let h=[];for(let m of rn){let p=e.state.shoptOptions[m];s&&p?h.push(r?`shopt -s ${m}`:`${m} on`):n&&!p&&h.push(r?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
570
570
  `)}
571
571
  `:"",stderr:""}}let d=[];for(let h of rn){let m=e.state.shoptOptions[h];d.push(r?`shopt ${m?"-s":"-u"} ${h}`:`${h} ${m?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
572
572
  `)}
573
- `,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!Gt(d)&&!Co(d)){u+=`shopt: ${d}: invalid shell option name
573
+ `,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!Gt(d)&&!_o(d)){u+=`shopt: ${d}: invalid shell option name
574
574
  `,c=!0;continue}if(s)Gt(d)&&(e.state.shoptOptions[d]=!0,ps(e));else if(n)Gt(d)&&(e.state.shoptOptions[d]=!1,ps(e));else if(Gt(d)){let h=e.state.shoptOptions[d];i?h||(c=!0):r?(f.push(`shopt ${h?"-s":"-u"} ${d}`),h||(c=!0)):(f.push(`${d} ${h?"on":"off"}`),h||(c=!0))}else i?c=!0:r?(f.push(`shopt -u ${d}`),c=!0):(f.push(`${d} off`),c=!0)}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
575
575
  `)}
576
- `:"",stderr:u}}function Po(e,t,s,n,r,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||n&&g||d.push(r?`set ${g?"-o":"+o"} ${h}`:`${h} ${g?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
576
+ `:"",stderr:u}}function Co(e,t,s,n,r,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||n&&g||d.push(r?`set ${g?"-o":"+o"} ${h}`:`${h} ${g?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
577
577
  `)}
578
578
  `:"",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
579
579
  `,c=!0;continue}if(m){s||n||(i?c=!0:r?(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,Ye(e);else if(n)e.state.options[p]=!1,Ye(e);else{let g=e.state.options[p];i?g||(c=!0):r?(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(`
580
580
  `)}
581
- `:"",stderr:u}}async function kr(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 r=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of r){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 Kt(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 r=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of r){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 Dr(e,t,s,n){let r=!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"?r=!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 n(p);if(b.length>0){for(let $ of b)u+=`${$}
581
+ `:"",stderr:u}}async function Cr(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 r=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of r){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 Kt(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 r=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of r){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 Or(e,t,s,n){let r=!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"?r=!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 n(p);if(b.length>0){for(let $ of b)u+=`${$}
582
582
  `;h=!0,g=!0}}else{let b=await s(p);b&&(u+=`${b}
583
- `,h=!0,g=!0)}g||(m=!0);continue}let A=!l&&e.state.functions.has(p);if(a&&A){if(!i)if(r)u+=`function
584
- `;else{let b=e.state.functions.get(p),$=b?Nr(p,b):`${p} is a function
583
+ `,h=!0,g=!0)}g||(m=!0);continue}let S=!l&&e.state.functions.has(p);if(a&&S){if(!i)if(r)u+=`function
584
+ `;else{let b=e.state.functions.get(p),$=b?Pr(p,b):`${p} is a function
585
585
  `;u+=$}g=!0}let v=e.state.env.get(`BASH_ALIAS_${p}`);if(v!==void 0&&(a||!g)&&(i||(r?u+=`alias
586
586
  `:u+=`${p} is aliased to \`${v}'
587
587
  `),g=!0,!a)||Es.has(p)&&(a||!g)&&(i||(r?u+=`keyword
588
588
  `:u+=`${p} is a shell keyword
589
- `),g=!0,!a))continue;if(!a&&A&&!g){if(!i)if(r)u+=`function
590
- `;else{let b=e.state.functions.get(p),$=b?Nr(p,b):`${p} is a function
589
+ `),g=!0,!a))continue;if(!a&&S&&!g){if(!i)if(r)u+=`function
590
+ `;else{let b=e.state.functions.get(p),$=b?Pr(p,b):`${p} is a function
591
591
  `;u+=$}g=!0;continue}if(!(et.has(p)&&(a||!g)&&(i||(r?u+=`builtin
592
592
  `:u+=`${p} is a shell builtin
593
593
  `),g=!0,!a))){if(a){let b=await n(p);for(let $ of b)i?u+=`${$}
@@ -597,12 +597,12 @@ ${Zt}`;if(e.state.options.posix)throw new ve(1,"",r);return _(r)}return Qs(e,t.s
597
597
  `:r?u+=`file
598
598
  `:u+=`${p} is ${b}
599
599
  `,h=!0,g=!0)}if(!g&&(m=!0,!r&&!i)){let b=!0;if(p.includes("/")){let $=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists($)&&(b=!1)}b&&(f+=`bash: type: ${p}: not found
600
- `)}}}return i?d=m&&!h?1:0:d=m?1:0,P(u,f,d)}function Nr(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(r=>ut(r)).join("; "):s=ut(t.body),`${e} is a function
600
+ `)}}}return i?d=m&&!h?1:0:d=m?1:0,P(u,f,d)}function Pr(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(r=>ut(r)).join("; "):s=ut(t.body),`${e} is a function
601
601
  ${e} ()
602
602
  {
603
603
  ${s}
604
604
  }
605
- `}function ut(e){if(Array.isArray(e))return e.map(t=>ut(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let n=e.pipelines[s];t.push(ko(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(Or(t.name));for(let n of t.args)s.push(Or(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>ut(n)).join("; ")}; }`:"..."}function ko(e){let t=e.commands.map(s=>ut(s));return(e.negated?"! ":"")+t.join(" | ")}function Or(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>Tr(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=Tr(s);return t}function Tr(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function xr(e,t,s,n){let r="",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)n?r+=`${a} is an alias for "${l}"
605
+ `}function ut(e){if(Array.isArray(e))return e.map(t=>ut(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let n=e.pipelines[s];t.push(Po(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(kr(t.name));for(let n of t.args)s.push(kr(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>ut(n)).join("; ")}; }`:"..."}function Po(e){let t=e.commands.map(s=>ut(s));return(e.negated?"! ":"")+t.join(" | ")}function kr(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>Nr(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=Nr(s);return t}function Nr(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function Tr(e,t,s,n){let r="",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)n?r+=`${a} is an alias for "${l}"
606
606
  `:r+=`alias ${a}='${l}'
607
607
  `;else if(Es.has(a))n?r+=`${a} is a shell keyword
608
608
  `:r+=`${a}
@@ -616,96 +616,96 @@ ${e} ()
616
616
  `),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}`),n?r+=`${a} is ${f}
617
617
  `:r+=`${f}
618
618
  `}else n&&(i+=`${a}: not found
619
- `),o=1}return P(r,i,o)}async function Ir(e,t){if(t.includes("/")){let r=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(r)){try{let i=await e.fs.stat(r);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let n=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let r of n){if(!r)continue;let o=`${r.startsWith("/")?r:e.fs.resolvePath(e.state.cwd,r)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${r}/${t}`}}if(e.commands.has(t)){for(let r of n)if(r==="/usr/bin"||r==="/bin")return`${r}/${t}`;return`/usr/bin/${t}`}return null}async function Rr(e,t,s,n,r,i,o,a){let{ctx:l,runCommand:c}=e;if(l.coverage&&et.has(t)&&l.coverage.hit(`bash:builtin:${t}`),t==="export")return Hs(l,s);if(t==="unset")return nn(l,s);if(t==="exit")return js(l,s);if(t==="local")return Gs(l,s);if(t==="set")return Js(l,s);if(t==="break")return ys(l,s);if(t==="continue")return Ns(l,s);if(t==="return")return Ys(l,s);if(t==="eval"&&l.state.options.posix)return Ut(l,s,r);if(t==="shift")return en(l,s);if(t==="getopts")return qt(l,s);if(t==="compgen")return _s(l,s);if(t==="complete")return Ps(l,s);if(t==="compopt")return ks(l,s);if(t==="pushd")return await zs(l,s);if(t==="popd")return Vs(l,s);if(t==="dirs")return Bs(l,s);if(t==="source"||t===".")return tn(l,s);if(t==="read")return Xs(l,s,r,a);if(t==="mapfile"||t==="readarray")return Ks(l,s,r);if(t==="declare"||t==="typeset")return Fs(l,s);if(t==="readonly")return Ms(l,s);if(!i){let u=l.state.functions.get(t);if(u)return jt(l,u,s,r)}if(t==="eval")return Ut(l,s,r);if(t==="cd")return await gs(l,s);if(t===":"||t==="true")return L;if(t==="false")return Z(!1);if(t==="let")return Zs(l,s);if(t==="command")return No(e,s,r);if(t==="builtin")return Oo(e,s,r);if(t==="shopt")return Pr(l,s);if(t==="exec"){if(s.length===0)return L;let[u,...f]=s;return c(u,f,[],r,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await Dr(l,s,u=>Ir(l,u),u=>Kt(l,u));if(t==="hash")return Us(l,s);if(t==="help")return qs(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return _("[: missing `]'\n",2);u=s.slice(0,-1)}return at(l,u)}return null}async function No(e,t,s){let{ctx:n,runCommand:r}=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 xr(n,l,a,o);let[c,...u]=l;return r(c,u,[],s,!0,i,-1)}async function Oo(e,t,s){let{runCommand:n}=e;if(t.length===0)return L;let r=t;if(r[0]==="--"&&(r=r.slice(1),r.length===0))return L;let i=r[0];if(!et.has(i))return _(`bash: builtin: ${i}: not a shell builtin
620
- `);let[,...o]=r;return n(i,o,[],s,!0,!1,-1)}async function Lr(e,t,s,n,r){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await kr(i,t,r?"/usr/bin:/bin":void 0);if(!c)return Hn(t)?_(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
619
+ `),o=1}return P(r,i,o)}async function Dr(e,t){if(t.includes("/")){let r=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(r)){try{let i=await e.fs.stat(r);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let n=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let r of n){if(!r)continue;let o=`${r.startsWith("/")?r:e.fs.resolvePath(e.state.cwd,r)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${r}/${t}`}}if(e.commands.has(t)){for(let r of n)if(r==="/usr/bin"||r==="/bin")return`${r}/${t}`;return`/usr/bin/${t}`}return null}async function xr(e,t,s,n,r,i,o,a){let{ctx:l,runCommand:c}=e;if(l.coverage&&et.has(t)&&l.coverage.hit(`bash:builtin:${t}`),t==="export")return Hs(l,s);if(t==="unset")return nn(l,s);if(t==="exit")return js(l,s);if(t==="local")return Gs(l,s);if(t==="set")return Js(l,s);if(t==="break")return ys(l,s);if(t==="continue")return Ns(l,s);if(t==="return")return Ys(l,s);if(t==="eval"&&l.state.options.posix)return Ut(l,s,r);if(t==="shift")return en(l,s);if(t==="getopts")return qt(l,s);if(t==="compgen")return _s(l,s);if(t==="complete")return Ps(l,s);if(t==="compopt")return ks(l,s);if(t==="pushd")return await zs(l,s);if(t==="popd")return Vs(l,s);if(t==="dirs")return Bs(l,s);if(t==="source"||t===".")return tn(l,s);if(t==="read")return Xs(l,s,r,a);if(t==="mapfile"||t==="readarray")return Ks(l,s,r);if(t==="declare"||t==="typeset")return Fs(l,s);if(t==="readonly")return Ms(l,s);if(!i){let u=l.state.functions.get(t);if(u)return jt(l,u,s,r)}if(t==="eval")return Ut(l,s,r);if(t==="cd")return await gs(l,s);if(t===":"||t==="true")return L;if(t==="false")return Z(!1);if(t==="let")return Zs(l,s);if(t==="command")return ko(e,s,r);if(t==="builtin")return No(e,s,r);if(t==="shopt")return _r(l,s);if(t==="exec"){if(s.length===0)return L;let[u,...f]=s;return c(u,f,[],r,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await Or(l,s,u=>Dr(l,u),u=>Kt(l,u));if(t==="hash")return Us(l,s);if(t==="help")return qs(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return _("[: missing `]'\n",2);u=s.slice(0,-1)}return at(l,u)}return null}async function ko(e,t,s){let{ctx:n,runCommand:r}=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 Tr(n,l,a,o);let[c,...u]=l;return r(c,u,[],s,!0,i,-1)}async function No(e,t,s){let{runCommand:n}=e;if(t.length===0)return L;let r=t;if(r[0]==="--"&&(r=r.slice(1),r.length===0))return L;let i=r[0];if(!et.has(i))return _(`bash: builtin: ${i}: not a shell builtin
620
+ `);let[,...o]=r;return n(i,o,[],s,!0,!1,-1)}async function Ir(e,t,s,n,r){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await Cr(i,t,r?"/usr/bin:/bin":void 0);if(!c)return Bn(t)?_(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
621
621
  `,127):_(`bash: ${t}: command not found
622
622
  `,127);if("error"in c)return c.error==="permission_denied"?_(`bash: ${t}: Permission denied
623
623
  `,126):_(`bash: ${t}: No such file or directory
624
- `,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,n);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=n||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,coverage:i.coverage};try{return await u.execute(s,m)}catch(p){if(p instanceof re)throw p;return _(`${t}: ${be(p)}
625
- `)}}async function on(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let n="",r="",i=0;try{for(let o of t){let a=await e.executeStatement(o);n+=a.stdout,r+=a.stderr,i=a.exitCode}}finally{e.state.inCondition=s}return{stdout:n,stderr:r,exitCode:i}}function ft(e,t,s,n){if(e instanceof he)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"break",stdout:t,stderr:s};if(e instanceof pe)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"continue",stdout:t,stderr:s};if(e instanceof le||e instanceof ye||e instanceof z||e instanceof re)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=be(e);return{action:"error",stdout:t,stderr:`${s}${r}
626
- `,exitCode:1}}async function Xt(e,t,s="",n=""){let r=s,i=n,o=0;try{for(let a of t){let l=await e.executeStatement(a);r+=l.stdout,i+=l.stderr,o=l.exitCode}}catch(a){if(Et(a)||a instanceof ye||a instanceof z||a instanceof re||a instanceof xe)throw a.prependOutput(r,i),a;return{stdout:r,stderr:`${i}${be(a)}
627
- `,exitCode:1}}return{stdout:r,stderr:i,exitCode:o}}async function Fr(e,t){let s="",n="";for(let r of t.clauses){let i=await on(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return Xt(e,r.body,s,n)}return t.elseBody?Xt(e,t.elseBody,s,n):P(s,n,0)}async function Mr(e,t){let s=await Ne(e,t.redirections);if(s)return s;let n="",r="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return _(`bash: \`${t.variable}': not a valid identifier
628
- `);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 Pe(e,c);a.push(...u.values)}}catch(c){if(c instanceof $t)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&De(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);n+=f.stdout,r+=f.stderr,i=f.exitCode}}catch(u){let f=ft(u,n,r,e.state.loopDepth);if(n=f.stdout,r=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=P(n,r,f.exitCode??1);return H(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=P(n,r,i);return H(e,l,t.redirections)}async function Wr(e,t){let s=await Ne(e,t.redirections);if(s)return s;let n=t.line;n!==void 0&&(e.state.currentLine=n);let r="",i="",o=0,a=0;t.init&&await V(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&De(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,i),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await V(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);r+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=ft(c,r,i,e.state.loopDepth);if(r=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(r,i,u.exitCode??1);return H(e,f,t.redirections)}throw u.error}t.update&&await V(e,t.update.expression)}}finally{e.state.loopDepth--}let l=P(r,i,o);return H(e,l,t.redirections)}async function zr(e,t,s=""){let n="",r="",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
+ `,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,n);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=n||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,coverage:i.coverage};try{return await u.execute(s,m)}catch(p){if(p instanceof re)throw p;return _(`${t}: ${$e(p)}
625
+ `)}}async function on(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let n="",r="",i=0;try{for(let o of t){let a=await e.executeStatement(o);n+=a.stdout,r+=a.stderr,i=a.exitCode}}finally{e.state.inCondition=s}return{stdout:n,stderr:r,exitCode:i}}function ft(e,t,s,n){if(e instanceof he)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"break",stdout:t,stderr:s};if(e instanceof pe)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"continue",stdout:t,stderr:s};if(e instanceof le||e instanceof ye||e instanceof z||e instanceof re)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=$e(e);return{action:"error",stdout:t,stderr:`${s}${r}
626
+ `,exitCode:1}}async function Xt(e,t,s="",n=""){let r=s,i=n,o=0;try{for(let a of t){let l=await e.executeStatement(a);r+=l.stdout,i+=l.stderr,o=l.exitCode}}catch(a){if(Et(a)||a instanceof ye||a instanceof z||a instanceof re||a instanceof xe)throw a.prependOutput(r,i),a;return{stdout:r,stderr:`${i}${$e(a)}
627
+ `,exitCode:1}}return{stdout:r,stderr:i,exitCode:o}}async function Rr(e,t){let s="",n="";for(let r of t.clauses){let i=await on(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return Xt(e,r.body,s,n)}return t.elseBody?Xt(e,t.elseBody,s,n):P(s,n,0)}async function Lr(e,t){let s=await Oe(e,t.redirections);if(s)return s;let n="",r="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return _(`bash: \`${t.variable}': not a valid identifier
628
+ `);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 ke(e,c);a.push(...u.values)}}catch(c){if(c instanceof $t)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&De(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);n+=f.stdout,r+=f.stderr,i=f.exitCode}}catch(u){let f=ft(u,n,r,e.state.loopDepth);if(n=f.stdout,r=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=P(n,r,f.exitCode??1);return H(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=P(n,r,i);return H(e,l,t.redirections)}async function Fr(e,t){let s=await Oe(e,t.redirections);if(s)return s;let n=t.line;n!==void 0&&(e.state.currentLine=n);let r="",i="",o=0,a=0;t.init&&await V(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&De(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,i),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await V(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);r+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=ft(c,r,i,e.state.loopDepth);if(r=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(r,i,u.exitCode??1);return H(e,f,t.redirections)}throw u.error}t.update&&await V(e,t.update.expression)}}finally{e.state.loopDepth--}let l=P(r,i,o);return H(e,l,t.redirections)}async function Mr(e,t,s=""){let n="",r="",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(`
629
629
  `).map(d=>d.replace(/^\t+/,"")).join(`
630
630
  `)),a=f}else if(c.operator==="<<<"&&c.target.type==="Word")a=`${await x(e,c.target)}
631
631
  `;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 _(`bash: ${u}: No such file or directory
632
- `)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&De(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r);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);n+=m.stdout,r+=m.stderr,c=m.exitCode}}catch(h){if(h instanceof he){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;u=!0}else if(h instanceof pe){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;f=!0}else 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);n+=m.stdout,r+=m.stderr,i=m.exitCode}}catch(h){let m=ft(h,n,r,e.state.loopDepth);if(n=m.stdout,r=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return P(n,r,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return P(n,r,i)}async function Vr(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&De(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let o=await on(e,t.condition);if(s+=o.stdout,n+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,n+=l.stderr,r=l.exitCode}}catch(a){let l=ft(a,s,n,e.state.loopDepth);if(s=l.stdout,n=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return P(s,n,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return P(s,n,r)}async function Br(e,t){let s=await Ne(e,t.redirections);if(s)return s;let n="",r="",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);Pn(d)&&(h=_n(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(Qe(o,h,m,p)){f=!0;break}}if(f){let d=await Xt(e,u.body,n,r);if(n=d.stdout,r=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=P(n,r,i);return H(e,l,t.redirections)}function an(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function jr(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),o=r+n+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 Hr="+ ";async function Ur(e){let t=e.state.env.get("PS4");if(t===void 0)return Hr;if(t==="")return"";try{let n=new W().parseWordFromString(t,!1,!1);return await x(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
633
- `,t||Hr}}function To(e){return e.map(t=>Do(t)).join(" ")}function Do(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
632
+ `)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&De(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r);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);n+=m.stdout,r+=m.stderr,c=m.exitCode}}catch(h){if(h instanceof he){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;u=!0}else if(h instanceof pe){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;f=!0}else 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);n+=m.stdout,r+=m.stderr,i=m.exitCode}}catch(h){let m=ft(h,n,r,e.state.loopDepth);if(n=m.stdout,r=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return P(n,r,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return P(n,r,i)}async function Wr(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&De(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let o=await on(e,t.condition);if(s+=o.stdout,n+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,n+=l.stderr,r=l.exitCode}}catch(a){let l=ft(a,s,n,e.state.loopDepth);if(s=l.stdout,n=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return P(s,n,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return P(s,n,r)}async function zr(e,t){let s=await Oe(e,t.redirections);if(s)return s;let n="",r="",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);_n(d)&&(h=Sn(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(Qe(o,h,m,p)){f=!0;break}}if(f){let d=await Xt(e,u.body,n,r);if(n=d.stdout,r=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=P(n,r,i);return H(e,l,t.redirections)}function an(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function Vr(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),o=r+n+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 Br="+ ";async function jr(e){let t=e.state.env.get("PS4");if(t===void 0)return Br;if(t==="")return"";try{let n=new W().parseWordFromString(t,!1,!1);return await x(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
633
+ `,t||Br}}function Oo(e){return e.map(t=>To(t)).join(" ")}function To(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
634
634
  `),r=e.includes(" "),i=e.includes("\\"),o=e.includes("'");if(s||n||r||i){let l="";for(let c of e){let u=c.charCodeAt(0);c===`
635
- `?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 qr(e,t,s){if(!e.state.options.xtrace)return"";let n=await Ur(e),r=[t,...s],i=To(r);return`${n}${i}
636
- `}async function Zr(e,t,s){return e.state.options.xtrace?`${await Ur(e)}${t}=${s}
637
- `:""}async function Gr(e,t,s){let n=t.timed?performance.now():0,r="",i=L,o=0,a=[],l="",c=t.commands.length>1,u=e.state.lastArg;for(let d=0;d<t.commands.length;d++){let h=t.commands[d],m=d===t.commands.length-1,p=d===0;c&&(e.state.lastArg="",p||(e.state.groupStdin=void 0));let A=c&&(!m||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,v;try{v=await s(h,r)}catch(S){if(S instanceof bt)v={stdout:S.stdout,stderr:S.stderr,exitCode:1};else if(S instanceof z&&t.commands.length>1)v={stdout:S.stdout,stderr:S.stderr,exitCode:S.exitCode};else if(S instanceof ye&&t.commands.length>1)v={stdout:S.stdout,stderr:S.stderr,exitCode:S.exitCode};else throw A&&(e.state.env=A),S}A&&(e.state.env=A),a.push(v.exitCode),v.exitCode!==0&&(o=v.exitCode),m?i=v:(t.pipeStderr?.[d]??!1?r=v.stderr+v.stdout:(r=v.stdout,l+=v.stderr),i={stdout:"",stderr:"",exitCode:v.exitCode})}if(l&&(i={...i,stderr:l+i.stderr}),t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand"){for(let d of e.state.env.keys())d.startsWith("PIPESTATUS_")&&e.state.env.delete(d);for(let d=0;d<a.length;d++)e.state.env.set(`PIPESTATUS_${d}`,String(a[d]));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 h=(performance.now()-n)/1e3,m=Math.floor(h/60),p=h%60,g;t.timePosix?g=`real ${h.toFixed(2)}
635
+ `?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 Hr(e,t,s){if(!e.state.options.xtrace)return"";let n=await jr(e),r=[t,...s],i=Oo(r);return`${n}${i}
636
+ `}async function Ur(e,t,s){return e.state.options.xtrace?`${await jr(e)}${t}=${s}
637
+ `:""}async function qr(e,t,s){let n=t.timed?performance.now():0,r="",i=L,o=0,a=[],l="",c=t.commands.length>1,u=e.state.lastArg;for(let d=0;d<t.commands.length;d++){let h=t.commands[d],m=d===t.commands.length-1,p=d===0;c&&(e.state.lastArg="",p||(e.state.groupStdin=void 0));let S=c&&(!m||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,v;try{v=await s(h,r)}catch(A){if(A instanceof bt)v={stdout:A.stdout,stderr:A.stderr,exitCode:1};else if(A instanceof z&&t.commands.length>1)v={stdout:A.stdout,stderr:A.stderr,exitCode:A.exitCode};else if(A instanceof ye&&t.commands.length>1)v={stdout:A.stdout,stderr:A.stderr,exitCode:A.exitCode};else throw S&&(e.state.env=S),A}S&&(e.state.env=S),a.push(v.exitCode),v.exitCode!==0&&(o=v.exitCode),m?i=v:(t.pipeStderr?.[d]??!1?r=v.stderr+v.stdout:(r=v.stdout,l+=v.stderr),i={stdout:"",stderr:"",exitCode:v.exitCode})}if(l&&(i={...i,stderr:l+i.stderr}),t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand"){for(let d of e.state.env.keys())d.startsWith("PIPESTATUS_")&&e.state.env.delete(d);for(let d=0;d<a.length;d++)e.state.env.set(`PIPESTATUS_${d}`,String(a[d]));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 h=(performance.now()-n)/1e3,m=Math.floor(h/60),p=h%60,g;t.timePosix?g=`real ${h.toFixed(2)}
638
638
  user 0.00
639
639
  sys 0.00
640
640
  `:g=`
641
641
  real ${`${m}m${p.toFixed(3)}s`}
642
642
  user 0m0.000s
643
643
  sys 0m0.000s
644
- `,i={...i,stderr:i.stderr+g}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=u),i}async function Kr(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let u=await xo(e,t,i,r.array,r.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:u.error};if(n+=u.xtraceOutput,u.continueToNext)continue}let o=r.value?await x(e,r.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:P("",`bash: ${i}: bad array subscript
645
- `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await Mo(e,t,l[1],l[2],o,r.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await zo(e,t,i,o,r.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:c.error};n+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:n,tempAssignments:s}}async function xo(e,t,s,n,r,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
646
- `,1)};if(ge(e,s)){let u=Sn(e,s);if(u===void 0||u==="")throw new z(1,"","");let f=Le(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
644
+ `,i={...i,stderr:i.stderr+g}}return c&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=u),i}async function Zr(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let u=await Do(e,t,i,r.array,r.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:u.error};if(n+=u.xtraceOutput,u.continueToNext)continue}let o=r.value?await x(e,r.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:P("",`bash: ${i}: bad array subscript
645
+ `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await Fo(e,t,l[1],l[2],o,r.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await Wo(e,t,i,o,r.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:c.error};n+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:n,tempAssignments:s}}async function Do(e,t,s,n,r,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
646
+ `,1)};if(ge(e,s)){let u=$n(e,s);if(u===void 0||u==="")throw new z(1,"","");let f=Le(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
647
647
  `,1)}}if(Be(e,s)){if(t.name)return o+=`bash: ${s}: readonly variable
648
- `,{continueToNext:!0,xtraceOutput:o};let u=Y(e,s);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let a=e.state.associativeArrays?.has(s),l=Io(n),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 Ro(e,t,s,n,r,c,u=>{o+=u}):l?await Lo(e,s,n,r,c):await Fo(e,s,n,r,c),t.name){i.set(s,e.state.env.get(s));let f=`(${n.map(d=>At(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:o}}function Io(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],n=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(t.parts.length<3)return!1;let r=t.parts[2];return r.type!=="Literal"?!1:r.value.startsWith("]=")||r.value.startsWith("]+=")}return n.type!=="Literal"?!1:n.value.startsWith("]")?n.value.startsWith("]=")||n.value.startsWith("]+="):s.pattern.endsWith("]")?n.value.startsWith("=")||n.value.startsWith("+="):!1}return!1})}async function Ro(e,t,s,n,r,i,o){let a=[];for(let l of n){let c=rs(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=U(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})}}r||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
649
- `)}}async function Lo(e,t,s,n,r){let i=[];for(let a of s){let l=rs(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=U(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await Pe(e,a);i.push({type:"non-keyed",values:c.values})}}n||r();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new W,u=K(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 Fo(e,t,s,n,r){let i=[];for(let a of s){let l=await Pe(e,a);i.push(...l.values)}let o=0;if(n){let a=Se(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 r();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);n||e.state.env.set(`${t}__length`,String(i.length))}async function Mo(e,t,s,n,r,i,o){let a=s;if(ge(e,s)){let f=Le(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: \`${f}': not a valid identifier
650
- `,1)};a=f}}if(Be(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=Y(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await Xr(e,a,n);else{let f=await Wo(e,a,n);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${a}_${f.index}`}let u=i?(e.state.env.get(c)||"")+r:r;if(t.name)o.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=Je(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 Xr(e,t,s){let n;if(s.startsWith("'")&&s.endsWith("'"))n=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let r=s.slice(1,-1),o=new W().parseWordFromString(r,!0,!1);n=await x(e,o)}else if(s.includes("$")){let i=new W().parseWordFromString(s,!1,!1);n=await x(e,i)}else n=s;return`${t}_${n}`}async function Wo(e,t,s){let n=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(n=s.slice(1,-1));let r;if(/^-?\d+$/.test(n))r=Number.parseInt(n,10);else{try{let i=new W,o=K(i,n);r=await V(e,o.expression,!1)}catch(i){if(i instanceof Ve){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
651
- `;if(i.fatal)throw new z(1,"",l);return{index:0,error:P("",l,1)}}let o=e.state.env.get(s);r=o?Number.parseInt(o,10):0}Number.isNaN(r)&&(r=0)}if(r<0){let i=Se(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:P("",`bash: line ${a}: ${t}[${s}]: bad array subscript
648
+ `,{continueToNext:!0,xtraceOutput:o};let u=Y(e,s);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let a=e.state.associativeArrays?.has(s),l=xo(n),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 Io(e,t,s,n,r,c,u=>{o+=u}):l?await Ro(e,s,n,r,c):await Lo(e,s,n,r,c),t.name){i.set(s,e.state.env.get(s));let f=`(${n.map(d=>At(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:o}}function xo(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],n=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(t.parts.length<3)return!1;let r=t.parts[2];return r.type!=="Literal"?!1:r.value.startsWith("]=")||r.value.startsWith("]+=")}return n.type!=="Literal"?!1:n.value.startsWith("]")?n.value.startsWith("]=")||n.value.startsWith("]+="):s.pattern.endsWith("]")?n.value.startsWith("=")||n.value.startsWith("+="):!1}return!1})}async function Io(e,t,s,n,r,i,o){let a=[];for(let l of n){let c=rs(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=U(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})}}r||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
649
+ `)}}async function Ro(e,t,s,n,r){let i=[];for(let a of s){let l=rs(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=U(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await ke(e,a);i.push({type:"non-keyed",values:c.values})}}n||r();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new W,u=K(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 Lo(e,t,s,n,r){let i=[];for(let a of s){let l=await ke(e,a);i.push(...l.values)}let o=0;if(n){let a=Ae(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 r();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);n||e.state.env.set(`${t}__length`,String(i.length))}async function Fo(e,t,s,n,r,i,o){let a=s;if(ge(e,s)){let f=Le(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: \`${f}': not a valid identifier
650
+ `,1)};a=f}}if(Be(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=Y(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await Gr(e,a,n);else{let f=await Mo(e,a,n);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${a}_${f.index}`}let u=i?(e.state.env.get(c)||"")+r:r;if(t.name)o.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=Je(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 Gr(e,t,s){let n;if(s.startsWith("'")&&s.endsWith("'"))n=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let r=s.slice(1,-1),o=new W().parseWordFromString(r,!0,!1);n=await x(e,o)}else if(s.includes("$")){let i=new W().parseWordFromString(s,!1,!1);n=await x(e,i)}else n=s;return`${t}_${n}`}async function Mo(e,t,s){let n=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(n=s.slice(1,-1));let r;if(/^-?\d+$/.test(n))r=Number.parseInt(n,10);else{try{let i=new W,o=K(i,n);r=await V(e,o.expression,!1)}catch(i){if(i instanceof Ve){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
651
+ `;if(i.fatal)throw new z(1,"",l);return{index:0,error:P("",l,1)}}let o=e.state.env.get(s);r=o?Number.parseInt(o,10):0}Number.isNaN(r)&&(r=0)}if(r<0){let i=Ae(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:P("",`bash: line ${a}: ${t}[${s}]: bad array subscript
652
652
  `,1)}}if(r=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+r,r<0){let a=e.state.currentLine;return{index:0,error:P("",`bash: line ${a}: ${t}[${s}]: bad array subscript
653
- `,1)}}}return{index:r}}async function zo(e,t,s,n,r,i){let o="",a=s,l=null;if(ge(e,s)){let f=An(e,s,n);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: circular name reference
653
+ `,1)}}}return{index:r}}async function Wo(e,t,s,n,r,i){let o="",a=s,l=null;if(ge(e,s)){let f=En(e,s,n);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: circular name reference
654
654
  `,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(Be(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
655
- `,{continueToNext:!0,xtraceOutput:o};let f=Y(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(lt(e,a))try{let f=new W;if(r){let h=`(${e.state.env.get(a)||"0"}) + (${n})`,m=K(f,h);c=String(await V(e,m.expression))}else{let d=K(f,n);c=String(await V(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-TL4Q62VX.js"),d=f(e,a)?`${a}_0`:a;c=r?(e.state.env.get(d)||"")+n:n}c=st(e,a,c),o+=await Zr(e,a,c);let u=a;if(l)u=await Vo(e,l);else{let{isArray:f}=await import("./chunks/expansion-TL4Q62VX.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 Vo(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return Xr(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let o=new W,a=K(o,n);i=await V(e,a.expression,!1)}catch{let o=e.state.env.get(n);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=Se(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function Yr(e,t,s,n){let r=await Ne(e,t.redirections);if(r)return r;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($=>new Map($)),u){e.state.localVarStack=new Map;for(let[$,D]of u.entries())e.state.localVarStack.set($,D.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 A=e.state.groupStdin;s&&(e.state.groupStdin=s);let v="",S="",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=A,e.state.bashPid=g,e.state.lastArg=p};try{for(let $ of t.body){let D=await n($);v+=D.stdout,S+=D.stderr,y=D.exitCode}}catch($){if(w(),$ instanceof re)throw $;if($ instanceof xe){v+=$.stdout,S+=$.stderr;let N=P(v,S,0);return H(e,N,t.redirections)}if($ instanceof he||$ instanceof pe){v+=$.stdout,S+=$.stderr;let N=P(v,S,0);return H(e,N,t.redirections)}if($ instanceof z){v+=$.stdout,S+=$.stderr;let N=P(v,S,$.exitCode);return H(e,N,t.redirections)}if($ instanceof le){v+=$.stdout,S+=$.stderr;let N=P(v,S,$.exitCode);return H(e,N,t.redirections)}if($ instanceof ye){let N=P(v+$.stdout,S+$.stderr,$.exitCode);return H(e,N,t.redirections)}let D=P(v,`${S}${be($)}
656
- `,1);return H(e,D,t.redirections)}w();let b=P(v,S,y);return H(e,b,t.redirections)}async function Qr(e,t,s,n){let r="",i="",o=0,a=await Bt(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(`
655
+ `,{continueToNext:!0,xtraceOutput:o};let f=Y(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(lt(e,a))try{let f=new W;if(r){let h=`(${e.state.env.get(a)||"0"}) + (${n})`,m=K(f,h);c=String(await V(e,m.expression))}else{let d=K(f,n);c=String(await V(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-LT2QL7LY.js"),d=f(e,a)?`${a}_0`:a;c=r?(e.state.env.get(d)||"")+n:n}c=st(e,a,c),o+=await Ur(e,a,c);let u=a;if(l)u=await zo(e,l);else{let{isArray:f}=await import("./chunks/expansion-LT2QL7LY.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 zo(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return Gr(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let o=new W,a=K(o,n);i=await V(e,a.expression,!1)}catch{let o=e.state.env.get(n);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=Ae(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function Kr(e,t,s,n){let r=await Oe(e,t.redirections);if(r)return r;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($=>new Map($)),u){e.state.localVarStack=new Map;for(let[$,D]of u.entries())e.state.localVarStack.set($,D.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="",A="",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 $ of t.body){let D=await n($);v+=D.stdout,A+=D.stderr,y=D.exitCode}}catch($){if(w(),$ instanceof re)throw $;if($ instanceof xe){v+=$.stdout,A+=$.stderr;let N=P(v,A,0);return H(e,N,t.redirections)}if($ instanceof he||$ instanceof pe){v+=$.stdout,A+=$.stderr;let N=P(v,A,0);return H(e,N,t.redirections)}if($ instanceof z){v+=$.stdout,A+=$.stderr;let N=P(v,A,$.exitCode);return H(e,N,t.redirections)}if($ instanceof le){v+=$.stdout,A+=$.stderr;let N=P(v,A,$.exitCode);return H(e,N,t.redirections)}if($ instanceof ye){let N=P(v+$.stdout,A+$.stderr,$.exitCode);return H(e,N,t.redirections)}let D=P(v,`${A}${$e($)}
656
+ `,1);return H(e,D,t.redirections)}w();let b=P(v,A,y);return H(e,b,t.redirections)}async function Xr(e,t,s,n){let r="",i="",o=0,a=await Bt(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(`
657
657
  `).map(p=>p.replace(/^\t+/,"")).join(`
658
658
  `));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)}
659
659
  `;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
660
- `,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await n(f);r+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof re)throw f;if(Et(f)||f instanceof ye||f instanceof z)throw f.prependOutput(r,i),f;return P(r,`${i}${be(f)}
661
- `,1)}e.state.groupStdin=c;let u=P(r,i,o);return H(e,u,t.redirections)}async function Jr(e,t,s,n,r){let i;try{i=await e.fs.readFile(t)}catch{return _(`bash: ${t}: No such file or directory
660
+ `,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await n(f);r+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof re)throw f;if(Et(f)||f instanceof ye||f instanceof z)throw f.prependOutput(r,i),f;return P(r,`${i}${$e(f)}
661
+ `,1)}e.state.groupStdin=c;let u=P(r,i,o);return H(e,u,t.redirections)}async function Yr(e,t,s,n,r){let i;try{i=await e.fs.readFile(t)}catch{return _(`bash: ${t}: No such file or directory
662
662
  `,127)}if(i.startsWith("#!")){let g=i.indexOf(`
663
- `);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++,n&&(e.state.groupStdin=n),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(s.length)),e.state.env.set("@",s.join(" ")),e.state.env.set("*",s.join(" "));for(let g=0;g<s.length&&g<9;g++)e.state.env.set(String(g+1),s[g]);for(let g=s.length+1;g<=9;g++)e.state.env.delete(String(g));let p=()=>{e.state.env=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 A=new W().parse(i),v=await r(A);return p(),v}catch(g){if(p(),g instanceof z||g instanceof re)throw g;if(g.name==="ParseException")return _(`bash: ${t}: ${g.message}
664
- `);throw g}}var dt=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,coverage:t.coverage}}buildExportedEnv(){let t=this.ctx.state.exportedVars,s=this.ctx.state.tempExportedVars,n=new Set;if(t)for(let i of t)n.add(i);if(s)for(let i of s)n.add(i);if(n.size===0)return Object.create(null);let r=Object.create(null);for(let i of n){let o=this.ctx.state.env.get(i);o!==void 0&&(r[i]=o)}return r}async executeScript(t){let s="",n="",r=0;for(let i of t.statements)try{let o=await this.executeStatement(i);s+=o.stdout,n+=o.stderr,r=o.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}catch(o){if(o instanceof z)throw o.prependOutput(s,n),o;if(o instanceof ve)return s+=o.stdout,n+=o.stderr,r=o.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)};if(o instanceof re)throw o;if(o instanceof ye)return s+=o.stdout,n+=o.stderr,r=o.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)};if(o instanceof mn)return s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)};if(o instanceof bt)return s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)};if(o instanceof Ve){s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(o instanceof yn){s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(o instanceof he||o instanceof pe){if(this.ctx.state.loopDepth>0)throw o.prependOutput(s,n),o;s+=o.stdout,n+=o.stderr;continue}throw o instanceof le&&o.prependOutput(s,n),o}return{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Jr(this.ctx,t,s,n,r=>this.executeScript(r))}async executeStatement(t){if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&De(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new St(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",n="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(n+=`${t.sourceText}
665
- `);let r=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==="&&"&&r!==0||f==="||"&&r===0)continue;let d=await this.executePipeline(u);s+=d.stdout,n+=d.stderr,r=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}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&&r!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new ye(r,s,n);return P(s,n,r)}async executePipeline(t){return Gr(this.ctx,t,(s,n)=>this.executeCommand(s,n))}async executeCommand(t,s){switch(this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return Fr(this.ctx,t);case"For":return Mr(this.ctx,t);case"CStyleFor":return Wr(this.ctx,t);case"While":return zr(this.ctx,t,s);case"Until":return Vr(this.ctx,t);case"Case":return Br(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return ir(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return L}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(n){if(n instanceof $t)return _(n.stderr);throw n}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let y=t,w=100;for(;w>0;){let b=this.expandAlias(y);if(b===y)break;y=b,w--}this.aliasExpansionStack.clear(),y!==t&&(t=y)}this.ctx.state.expansionStderr="";let n=await Kr(this.ctx,t);if(n.error)return n.error;let r=n.tempAssignments,i=n.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await Ne(this.ctx,t.redirections);if(w)return w;let b=P("",i,0);return H(this.ctx,b,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&&an(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(r.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 Bt(this.ctx,t.redirections);if(l){for(let[y,w]of r)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 x(this.ctx,w.content);w.stripTabs&&(b=b.split(`
663
+ `);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++,n&&(e.state.groupStdin=n),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(s.length)),e.state.env.set("@",s.join(" ")),e.state.env.set("*",s.join(" "));for(let g=0;g<s.length&&g<9;g++)e.state.env.set(String(g+1),s[g]);for(let g=s.length+1;g<=9;g++)e.state.env.delete(String(g));let p=()=>{e.state.env=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 r(S);return p(),v}catch(g){if(p(),g instanceof z||g instanceof re)throw g;if(g.name==="ParseException")return _(`bash: ${t}: ${g.message}
664
+ `);throw g}}var dt=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,coverage:t.coverage}}buildExportedEnv(){let t=this.ctx.state.exportedVars,s=this.ctx.state.tempExportedVars,n=new Set;if(t)for(let i of t)n.add(i);if(s)for(let i of s)n.add(i);if(n.size===0)return Object.create(null);let r=Object.create(null);for(let i of n){let o=this.ctx.state.env.get(i);o!==void 0&&(r[i]=o)}return r}async executeScript(t){let s="",n="",r=0;for(let i of t.statements)try{let o=await this.executeStatement(i);s+=o.stdout,n+=o.stderr,r=o.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}catch(o){if(o instanceof z)throw o.prependOutput(s,n),o;if(o instanceof be)return s+=o.stdout,n+=o.stderr,r=o.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)};if(o instanceof re)throw o;if(o instanceof ye)return s+=o.stdout,n+=o.stderr,r=o.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)};if(o instanceof hn)return s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)};if(o instanceof bt)return s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)};if(o instanceof Ve){s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(o instanceof pn){s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(o instanceof he||o instanceof pe){if(this.ctx.state.loopDepth>0)throw o.prependOutput(s,n),o;s+=o.stdout,n+=o.stderr;continue}throw o instanceof le&&o.prependOutput(s,n),o}return{stdout:s,stderr:n,exitCode:r,env:Ie(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Yr(this.ctx,t,s,n,r=>this.executeScript(r))}async executeStatement(t){if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&De(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new St(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",n="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(n+=`${t.sourceText}
665
+ `);let r=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==="&&"&&r!==0||f==="||"&&r===0)continue;let d=await this.executePipeline(u);s+=d.stdout,n+=d.stderr,r=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}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&&r!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new ye(r,s,n);return P(s,n,r)}async executePipeline(t){return qr(this.ctx,t,(s,n)=>this.executeCommand(s,n))}async executeCommand(t,s){switch(this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return Rr(this.ctx,t);case"For":return Lr(this.ctx,t);case"CStyleFor":return Fr(this.ctx,t);case"While":return Mr(this.ctx,t,s);case"Until":return Wr(this.ctx,t);case"Case":return zr(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return nr(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return L}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(n){if(n instanceof $t)return _(n.stderr);throw n}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let y=t,w=100;for(;w>0;){let b=this.expandAlias(y);if(b===y)break;y=b,w--}this.aliasExpansionStack.clear(),y!==t&&(t=y)}this.ctx.state.expansionStderr="";let n=await Zr(this.ctx,t);if(n.error)return n.error;let r=n.tempAssignments,i=n.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await Oe(this.ctx,t.redirections);if(w)return w;let b=P("",i,0);return H(this.ctx,b,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&&an(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(r.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 Bt(this.ctx,t.redirections);if(l){for(let[y,w]of r)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 x(this.ctx,w.content);w.stripTabs&&(b=b.split(`
666
666
  `).map(D=>D.replace(/^\t+/,"")).join(`
667
667
  `));let $=y.fd??0;$!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),this.ctx.state.fileDescriptors.set($,b)):s=b;continue}if(y.operator==="<<<"&&y.target.type==="Word"){s=`${await x(this.ctx,y.target)}
668
668
  `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await x(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 x(this.ctx,y.target);for(let[b,$]of r)$===void 0?this.ctx.state.env.delete(b):this.ctx.state.env.set(b,$);return _(`bash: ${w}: No such file or directory
669
- `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await x(this.ctx,y.target),b=Number.parseInt(w,10);if(!Number.isNaN(b)&&this.ctx.state.fileDescriptors){let $=this.ctx.state.fileDescriptors.get(b);if($!==void 0)if($.startsWith("__rw__:")){let D=jr($);D&&(s=D.content.slice(D.position),c=b)}else $.startsWith("__file__:")||$.startsWith("__file_append__:")||(s=$)}}}let u=await x(this.ctx,t.name),f=[],d=[];if(an(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 Bn(this.ctx,y);if(w)f.push(w),d.push(!0);else{let b=await jn(this.ctx,y);if(b!==null)f.push(b),d.push(!0);else{let $=await Pe(this.ctx,y);for(let D of $.values)f.push(D),d.push($.quoted)}}}else for(let y of t.args){let w=await Pe(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 P("","",this.ctx.state.lastExitCode)}return _(`bash: : command not found
669
+ `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await x(this.ctx,y.target),b=Number.parseInt(w,10);if(!Number.isNaN(b)&&this.ctx.state.fileDescriptors){let $=this.ctx.state.fileDescriptors.get(b);if($!==void 0)if($.startsWith("__rw__:")){let D=Vr($);D&&(s=D.content.slice(D.position),c=b)}else $.startsWith("__file__:")||$.startsWith("__file_append__:")||(s=$)}}}let u=await x(this.ctx,t.name),f=[],d=[];if(an(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 zn(this.ctx,y);if(w)f.push(w),d.push(!0);else{let b=await Vn(this.ctx,y);if(b!==null)f.push(b),d.push(!0);else{let $=await ke(this.ctx,y);for(let D of $.values)f.push(D),d.push($.quoted)}}}else for(let y of t.args){let w=await ke(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 P("","",this.ctx.state.lastExitCode)}return _(`bash: : command not found
670
670
  `,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),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 $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile($,"","utf8"),this.ctx.state.fileDescriptors.set(b,`__file__:${$}`);break}case">>":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);this.ctx.state.fileDescriptors.set(b,`__file_append__:${$}`);break}case"<":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let D=await this.ctx.fs.readFile($);this.ctx.state.fileDescriptors.set(b,D)}catch{return _(`bash: ${w}: No such file or directory
671
- `)}break}case"<>":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let D=await this.ctx.fs.readFile($);this.ctx.state.fileDescriptors.set(b,`__rw__:${$.length}:${$}:0:${D}`)}catch{await this.ctx.fs.writeFile($,"","utf8"),this.ctx.state.fileDescriptors.set(b,`__rw__:${$.length}:${$}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let $=w.slice(0,-1),D=Number.parseInt($,10);if(!Number.isNaN(D)){let N=this.ctx.state.fileDescriptors.get(D);N!==void 0?this.ctx.state.fileDescriptors.set(b,N):this.ctx.state.fileDescriptors.set(b,`__dupout__:${D}`),this.ctx.state.fileDescriptors.delete(D)}}else{let $=Number.parseInt(w,10);Number.isNaN($)||this.ctx.state.fileDescriptors.set(b,`__dupout__:${$}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let $=w.slice(0,-1),D=Number.parseInt($,10);if(!Number.isNaN(D)){let N=this.ctx.state.fileDescriptors.get(D);N!==void 0?this.ctx.state.fileDescriptors.set(b,N):this.ctx.state.fileDescriptors.set(b,`__dupin__:${D}`),this.ctx.state.fileDescriptors.delete(D)}}else{let $=Number.parseInt(w,10);Number.isNaN($)||this.ctx.state.fileDescriptors.set(b,`__dupin__:${$}`)}break}}}for(let[y,w]of r)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);if(this.ctx.state.tempExportedVars)for(let y of r.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await qr(this.ctx,u,f);r.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(r)));let p,g=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(y){if(y instanceof he||y instanceof pe)g=y,p=L;else throw y}let A=i+m;if(A&&(p={...p,stderr:A+p.stderr}),p=await H(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=nr(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!v)for(let[y,w]of r)this.ctx.state.fullyUnsetLocals?.has(y)||(w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w));if(this.ctx.state.tempExportedVars)for(let y of r.keys())this.ctx.state.tempExportedVars.delete(y);return r.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(p={...p,stderr:this.ctx.state.expansionStderr+p.stderr},this.ctx.state.expansionStderr=""),p}async runCommand(t,s,n,r,i=!1,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 Rr(l,t,s,n,r,i,o,a);return c!==null?c:Lr(l,t,s,r,o)}aliasExpansionStack=new Set;expandAlias(t){return ms(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Kt(this.ctx,t)}async executeSubshell(t,s=""){return Yr(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return Qr(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Ne(this.ctx,t.redirections);if(s)return s;try{let n=await V(this.ctx,t.expression.expression),r=Z(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),H(this.ctx,r,t.redirections)}catch(n){let r=_(`bash: arithmetic expression: ${n.message}
672
- `);return H(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Ne(this.ctx,t.redirections);if(s)return s;try{let n=await Me(this.ctx,t.expression),r=Z(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),H(this.ctx,r,t.redirections)}catch(n){let r=n instanceof Ve?1:2,i=_(`bash: conditional expression: ${n.message}
673
- `,r);return H(this.ctx,i,t.redirections)}}};var ue={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 ei(e){return e?{maxCallDepth:e.maxCallDepth??ue.maxCallDepth,maxCommandCount:e.maxCommandCount??ue.maxCommandCount,maxLoopIterations:e.maxLoopIterations??ue.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??ue.maxAwkIterations,maxSedIterations:e.maxSedIterations??ue.maxSedIterations,maxJqIterations:e.maxJqIterations??ue.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??ue.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??ue.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??ue.maxGlobOperations,maxStringLength:e.maxStringLength??ue.maxStringLength,maxArrayElements:e.maxArrayElements??ue.maxArrayElements,maxHeredocSize:e.maxHeredocSize??ue.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??ue.maxSubstitutionDepth}:{...ue}}function ti(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function Bo(e){let t=ti(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function jo(e,t){let s=ti(e);if(!s)return!1;let n=Bo(t);return!n||s.origin!==n.origin?!1:n.pathPrefix==="/"||n.pathPrefix===""?!0:s.pathname.startsWith(n.pathPrefix)}function ln(e,t){return!t||t.length===0?!1:t.some(s=>jo(e,s))}var ht=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},pt=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},mt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},Yt=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}},yt=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};var Ho=20,Uo=3e4,qo=10485760,Zo=["GET","HEAD"],Go=new Set(["GET","HEAD","OPTIONS"]),Ko=new Set([301,302,303,307,308]);function cn(e){let t=e.maxRedirects??Ho,s=e.timeoutMs??Uo,n=e.maxResponseSize??qo,r=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??Zo;function i(l){if(!e.dangerouslyAllowFullInternetAccess&&!ln(l,e.allowedUrlPrefixes??[]))throw new ht(l)}function o(l){if(e.dangerouslyAllowFullInternetAccess)return;let c=l.toUpperCase();if(!r.includes(c))throw new Yt(c,r)}async function a(l,c={}){let u=c.method?.toUpperCase()??"GET";i(l),o(u);let f=l,d=0,h=c.followRedirects??!0,m=c.timeoutMs!==void 0?Math.min(c.timeoutMs,s):s;for(;;){let p=new AbortController,g=setTimeout(()=>p.abort(),m);try{let A={method:u,headers:c.headers,signal:p.signal,redirect:"manual"};c.body&&!Go.has(u)&&(A.body=c.body);let v=await fetch(f,A);if(Ko.has(v.status)&&h){let S=v.headers.get("location");if(!S)return await si(v,f,n);let y=new URL(S,f).href;if(!e.dangerouslyAllowFullInternetAccess&&!ln(y,e.allowedUrlPrefixes??[]))throw new mt(y);if(d++,d>t)throw new pt(t);f=y;continue}return await si(v,f,n)}finally{clearTimeout(g)}}}return a}async function si(e,t,s){let n=Object.create(null);if(e.headers.forEach((i,o)=>{n[o.toLowerCase()]=i}),s>0){let i=e.headers.get("content-length");if(i){let o=parseInt(i,10);if(!Number.isNaN(o)&&o>s)throw new yt(s)}}let r;if(s>0&&e.body){let i=e.body.getReader(),o=new TextDecoder,a=[],l=0;for(;;){let{done:c,value:u}=await i.read();if(c)break;if(l+=u.byteLength,l>s)throw i.cancel(),new yt(s);a.push(o.decode(u,{stream:!0}))}a.push(o.decode()),r=a.join("")}else r=await e.text();return{status:e.status,statusText:e.statusText,headers:n,body:r,url:t}}function ni(){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"},{prop:"SharedArrayBuffer",target:globalThis,violationType:"shared_array_buffer",strategy:"throw",reason:"SharedArrayBuffer could enable side-channel communication or timing attacks"},{prop:"Atomics",target:globalThis,violationType:"atomics",strategy:"throw",reason:"Atomics could enable side-channel communication or timing attacks"}];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 gt=typeof __BROWSER__<"u"&&__BROWSER__;function ri(){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 fn=null;if(!gt)try{let{createRequire:e}=await import("node:module");fn=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=`
674
-
675
- This is a defense-in-depth measure and indicates a bug in just-bash. Please report this at security@vercel.com`,ie=class extends Error{violation;constructor(t,s){super(t+Xo),this.violation=s,this.name="SecurityViolationError"}},fe=!gt&&fn?new fn:null,Yo=1e3,un={enabled:!0,auditMode:!1};function Qo(e){return e===void 0?{...un,enabled:!1}:typeof e=="boolean"?{...un,enabled:e}:{...un,...e}}var Qt=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(Qo(t))),e.instance}static resetInstance(){e.instance&&(e.instance.forceDeactivate(),e.instance=null)}static isInSandboxedContext(){return fe?fe?.getStore()?.sandboxActive===!0:!1}static getCurrentExecutionId(){if(fe)return fe?.getStore()?.executionId}updateConfig(t){this.config={...this.config,...t}}activate(){if(gt||!this.config.enabled){let s=ri();return{run:n=>n(),deactivate:()=>{},executionId:s}}this.refCount++,this.refCount===1&&(this.applyPatches(),this.activationTime=Date.now());let t=ri();return{run:s=>fe.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 gt||this.config.auditMode||!fe?!1:fe?.getStore()?.sandboxActive===!0}recordViolation(t,s,n){let r={timestamp:Date.now(),type:t,message:n,path:s,stack:new Error().stack,executionId:fe?.getStore()?.executionId};if(this.violations.length<Yo&&this.violations.push(r),this.config.onViolation)try{this.config.onViolation(r)}catch(i){console.debug("[DefenseInDepthBox] onViolation callback threw:",i instanceof Error?i.message:i)}return r}createBlockingProxy(t,s,n){let r=this;return new Proxy(t,{apply(i,o,a){if(r.shouldBlock()){let l=`${s} is blocked during script execution`,c=r.recordViolation(n,s,l);throw new ie(l,c)}return r.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&r.recordViolation(n,s,`${s} called (audit mode)`),Reflect.apply(i,o,a)},construct(i,o,a){if(r.shouldBlock()){let l=`${s} constructor is blocked during script execution`,c=r.recordViolation(n,s,l);throw new ie(l,c)}return r.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&r.recordViolation(n,s,`${s} constructor called (audit mode)`),Reflect.construct(i,o,a)}})}createBlockingObjectProxy(t,s,n){let r=this;return new Proxy(t,{get(i,o,a){if(r.shouldBlock()){let l=`${s}.${String(o)}`,c=`${l} is blocked during script execution`,u=r.recordViolation(n,l,c);throw new ie(c,u)}if(r.config.auditMode&&fe?.getStore()?.sandboxActive===!0){let l=`${s}.${String(o)}`;r.recordViolation(n,l,`${l} accessed (audit mode)`)}return Reflect.get(i,o,a)},set(i,o,a,l){if(r.shouldBlock()){let c=`${s}.${String(o)}`,u=`${c} modification is blocked during script execution`,f=r.recordViolation(n,c,u);throw new ie(u,f)}return Reflect.set(i,o,a,l)},ownKeys(i){if(r.shouldBlock()){let o=`${s} enumeration is blocked during script execution`,a=r.recordViolation(n,s,o);throw new ie(o,a)}return Reflect.ownKeys(i)},getOwnPropertyDescriptor(i,o){if(r.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} descriptor access is blocked during script execution`,c=r.recordViolation(n,a,l);throw new ie(l,c)}return Reflect.getOwnPropertyDescriptor(i,o)},has(i,o){if(r.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} existence check is blocked during script execution`,c=r.recordViolation(n,a,l);throw new ie(l,c)}return Reflect.has(i,o)}})}applyPatches(){let t=ni();for(let s of t)this.applyPatch(s);this.protectConstructorChain(),this.protectErrorPrepareStackTrace(),this.protectModuleLoad(),this.protectProcessMainModule()}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 n=s?.value;Object.defineProperty(Error,"prepareStackTrace",{get(){return n},set(r){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 ie(i,o)}t.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&t.recordViolation("error_prepare_stack_trace","Error.prepareStackTrace","Error.prepareStackTrace set (audit mode)"),n=r},configurable:!0})}catch(s){console.debug("[DefenseInDepthBox] Could not protect Error.prepareStackTrace:",s instanceof Error?s.message:s)}}patchPrototypeConstructor(t,s,n){let r=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(r.shouldBlock()){let a=`${s} access is blocked during script execution`,l=r.recordViolation(n,s,a);throw new ie(a,l)}return r.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&r.recordViolation(n,s,`${s} accessed (audit mode)`),o},set(a){if(r.shouldBlock()){let l=`${s} modification is blocked during script execution`,c=r.recordViolation(n,s,l);throw new ie(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)}}protectProcessMainModule(){if(typeof process>"u")return;let t=this;try{let s=Object.getOwnPropertyDescriptor(process,"mainModule");this.originalDescriptors.push({target:process,prop:"mainModule",descriptor:s});let n=s?.value;n!==void 0&&Object.defineProperty(process,"mainModule",{get(){if(t.shouldBlock()){let r="process.mainModule access is blocked during script execution",i=t.recordViolation("process_main_module","process.mainModule",r);throw new ie(r,i)}return t.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&t.recordViolation("process_main_module","process.mainModule","process.mainModule accessed (audit mode)"),n},set(r){if(t.shouldBlock()){let i="process.mainModule modification is blocked during script execution",o=t.recordViolation("process_main_module","process.mainModule",i);throw new ie(i,o)}Object.defineProperty(process,"mainModule",{value:r,writable:!0,configurable:!0})},configurable:!0})}catch(s){console.debug("[DefenseInDepthBox] Could not protect process.mainModule:",s instanceof Error?s.message:s)}}protectModuleLoad(){if(!gt)try{let t=null;if(typeof process<"u"){let o=process.mainModule;o&&typeof o=="object"&&(t=o.constructor)}if(!t&&typeof vt<"u"&&typeof vt.main<"u"&&(t=vt.main.constructor),!t||typeof t._load!="function")return;let s=t._load,n=Object.getOwnPropertyDescriptor(t,"_load");this.originalDescriptors.push({target:t,prop:"_load",descriptor:n});let i=this.createBlockingProxy(s,"Module._load","module_load");Object.defineProperty(t,"_load",{value:i,writable:!0,configurable:!0})}catch(t){console.debug("[DefenseInDepthBox] Could not protect Module._load:",t instanceof Error?t.message:t)}}applyPatch(t){let{target:s,prop:n,violationType:r,strategy:i}=t;try{let o=s[n];if(o===void 0)return;let a=Object.getOwnPropertyDescriptor(s,n);if(this.originalDescriptors.push({target:s,prop:n,descriptor:a}),i==="freeze")typeof o=="object"&&o!==null&&Object.freeze(o);else{let l=this.getPathForTarget(s,n),c=typeof o=="function"?this.createBlockingProxy(o,l,r):this.createBlockingObjectProxy(o,l,r);Object.defineProperty(s,n,{value:c,writable:!0,configurable:!0})}}catch(o){let a=this.getPathForTarget(s,n);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:n,descriptor:r}=this.originalDescriptors[t];try{r?Object.defineProperty(s,n,r):delete s[n]}catch(i){let o=this.getPathForTarget(s,n);console.debug(`[DefenseInDepthBox] Could not restore ${o}:`,i instanceof Error?i.message:i)}}this.originalDescriptors=[]}};function ii(e){return qe(e)}function qe(e){return e.statements.map(oi).join(`
676
- `)}function oi(e){let t=[];for(let n=0;n<e.pipelines.length;n++)t.push(Jo(e.pipelines[n])),n<e.operators.length&&t.push(e.operators[n]);let s=t.join(" ");return e.background&&(s+=" &"),s}function Jo(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let s=[];for(let r=0;r<e.commands.length;r++)if(s.push(ai(e.commands[r])),r<e.commands.length-1){let i=e.pipeStderr?.[r];s.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+s.join(" ")}function ai(e){switch(e.type){case"SimpleCommand":return ea(e);case"If":return ca(e);case"For":return ua(e);case"CStyleFor":return fa(e);case"While":return da(e);case"Until":return ha(e);case"Case":return pa(e);case"Subshell":return ya(e);case"Group":return ga(e);case"ArithmeticCommand":return wa(e);case"ConditionalCommand":return va(e);case"FunctionDef":return ba(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function ea(e){let t=[];for(let s of e.assignments)t.push(ta(s));e.name&&t.push(ae(e.name));for(let s of e.args)t.push(ae(s));for(let s of e.redirections)t.push(ui(s));return t.join(" ")}function ta(e){let t=e.append?"+=":"=";if(e.array){let s=e.array.map(ae).join(" ");return`${e.name}${t}(${s})`}return e.value?`${e.name}${t}${ae(e.value)}`:`${e.name}${t}`}function ae(e){return e.parts.map(t=>Jt(t,!1)).join("")}function ze(e){return e.parts.map(t=>Jt(t,!0)).join("")}function Jt(e,t){switch(e.type){case"Literal":return t?na(e.value):sa(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(s=>Jt(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return li(e);case"CommandSubstitution":return e.legacy?`\`${qe(e.body)}\``:`$(${qe(e.body)})`;case"ArithmeticExpansion":return`$((${B(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${qe(e.body)})`:`>(${qe(e.body)})`;case"BraceExpansion":return aa(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let s=e;throw new Error(`Unsupported word part type: ${s.type}`)}}}function sa(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function na(e){return e.replace(/[$`"\\]/g,"\\$&")}function ra(e,t){return e.parts.map(s=>ia(s,t)).join("")}function ia(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return li(e);case"CommandSubstitution":return e.legacy?`\`${qe(e.body)}\``:`$(${qe(e.body)})`;case"ArithmeticExpansion":return`$((${B(e.expression.expression)}))`;default:return Jt(e,!1)}}function li(e){return e.operation?`\${${ci(e.parameter,e.operation)}}`:oa(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function oa(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function ci(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${ze(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${ze(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?ze(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${ze(t.word)}`;case"Substring":{let s=B(t.offset.expression);return t.length?`${e}:${s}:${B(t.length.expression)}`:`${e}:${s}`}case"PatternRemoval":{let s=t.side==="prefix"?"#":"%",n=t.greedy?`${s}${s}`:s;return`${e}${n}${ze(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let n=t.replacement?`/${ze(t.replacement)}`:"";return`${e}${s}${ze(t.pattern)}${n}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",n=t.all?`${s}${s}`:s,r=t.pattern?ze(t.pattern):"";return`${e}${n}${r}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${ci(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let s=t;throw new Error(`Unsupported parameter operation type: ${s.type}`)}}}function aa(e){return`{${e.items.map(la).join(",")}}`}function la(e){if(e.type==="Word")return ae(e.word);let t=e.startStr??String(e.start),s=e.endStr??String(e.end);return e.step!==void 0?`${t}..${s}..${e.step}`:`${t}..${s}`}function ui(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let s=e.target,n=s.quoted?`'${s.delimiter}'`:s.delimiter,r=ra(s.content,s.quoted);return`${t}${e.operator}${n}
677
- ${r}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${ae(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${ae(e.target)}`:`${t}${e.operator} ${ae(e.target)}`}function _e(e){return e.length===0?"":` ${e.map(ui).join(" ")}`}function we(e){return e.map(oi).join(`
678
- `)}function ca(e){let t=[];for(let s=0;s<e.clauses.length;s++){let n=e.clauses[s],r=s===0?"if":"elif";t.push(`${r} ${we(n.condition)}; then
671
+ `)}break}case"<>":{let $=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let D=await this.ctx.fs.readFile($);this.ctx.state.fileDescriptors.set(b,`__rw__:${$.length}:${$}:0:${D}`)}catch{await this.ctx.fs.writeFile($,"","utf8"),this.ctx.state.fileDescriptors.set(b,`__rw__:${$.length}:${$}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let $=w.slice(0,-1),D=Number.parseInt($,10);if(!Number.isNaN(D)){let N=this.ctx.state.fileDescriptors.get(D);N!==void 0?this.ctx.state.fileDescriptors.set(b,N):this.ctx.state.fileDescriptors.set(b,`__dupout__:${D}`),this.ctx.state.fileDescriptors.delete(D)}}else{let $=Number.parseInt(w,10);Number.isNaN($)||this.ctx.state.fileDescriptors.set(b,`__dupout__:${$}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let $=w.slice(0,-1),D=Number.parseInt($,10);if(!Number.isNaN(D)){let N=this.ctx.state.fileDescriptors.get(D);N!==void 0?this.ctx.state.fileDescriptors.set(b,N):this.ctx.state.fileDescriptors.set(b,`__dupin__:${D}`),this.ctx.state.fileDescriptors.delete(D)}}else{let $=Number.parseInt(w,10);Number.isNaN($)||this.ctx.state.fileDescriptors.set(b,`__dupin__:${$}`)}break}}}for(let[y,w]of r)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);if(this.ctx.state.tempExportedVars)for(let y of r.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await Hr(this.ctx,u,f);r.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(r)));let p,g=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(y){if(y instanceof he||y instanceof pe)g=y,p=L;else throw y}let S=i+m;if(S&&(p={...p,stderr:S+p.stderr}),p=await H(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=tr(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!v)for(let[y,w]of r)this.ctx.state.fullyUnsetLocals?.has(y)||(w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w));if(this.ctx.state.tempExportedVars)for(let y of r.keys())this.ctx.state.tempExportedVars.delete(y);return r.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(p={...p,stderr:this.ctx.state.expansionStderr+p.stderr},this.ctx.state.expansionStderr=""),p}async runCommand(t,s,n,r,i=!1,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 xr(l,t,s,n,r,i,o,a);return c!==null?c:Ir(l,t,s,r,o)}aliasExpansionStack=new Set;expandAlias(t){return ms(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Kt(this.ctx,t)}async executeSubshell(t,s=""){return Kr(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return Xr(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Oe(this.ctx,t.redirections);if(s)return s;try{let n=await V(this.ctx,t.expression.expression),r=Z(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),H(this.ctx,r,t.redirections)}catch(n){let r=_(`bash: arithmetic expression: ${n.message}
672
+ `);return H(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await Oe(this.ctx,t.redirections);if(s)return s;try{let n=await Me(this.ctx,t.expression),r=Z(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),H(this.ctx,r,t.redirections)}catch(n){let r=n instanceof Ve?1:2,i=_(`bash: conditional expression: ${n.message}
673
+ `,r);return H(this.ctx,i,t.redirections)}}};var ue={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 Qr(e){return e?{maxCallDepth:e.maxCallDepth??ue.maxCallDepth,maxCommandCount:e.maxCommandCount??ue.maxCommandCount,maxLoopIterations:e.maxLoopIterations??ue.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??ue.maxAwkIterations,maxSedIterations:e.maxSedIterations??ue.maxSedIterations,maxJqIterations:e.maxJqIterations??ue.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??ue.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??ue.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??ue.maxGlobOperations,maxStringLength:e.maxStringLength??ue.maxStringLength,maxArrayElements:e.maxArrayElements??ue.maxArrayElements,maxHeredocSize:e.maxHeredocSize??ue.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??ue.maxSubstitutionDepth}:{...ue}}function Jr(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function Vo(e){let t=Jr(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function Bo(e,t){let s=Jr(e);if(!s)return!1;let n=Vo(t);return!n||s.origin!==n.origin?!1:n.pathPrefix==="/"||n.pathPrefix===""?!0:s.pathname.startsWith(n.pathPrefix)}function ln(e,t){return!t||t.length===0?!1:t.some(s=>Bo(e,s))}var ht=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},pt=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},mt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},Yt=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}},yt=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};var jo=20,Ho=3e4,Uo=10485760,qo=["GET","HEAD"],Zo=new Set(["GET","HEAD","OPTIONS"]),Go=new Set([301,302,303,307,308]);function cn(e){let t=e.maxRedirects??jo,s=e.timeoutMs??Ho,n=e.maxResponseSize??Uo,r=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??qo;function i(l){if(!e.dangerouslyAllowFullInternetAccess&&!ln(l,e.allowedUrlPrefixes??[]))throw new ht(l)}function o(l){if(e.dangerouslyAllowFullInternetAccess)return;let c=l.toUpperCase();if(!r.includes(c))throw new Yt(c,r)}async function a(l,c={}){let u=c.method?.toUpperCase()??"GET";i(l),o(u);let f=l,d=0,h=c.followRedirects??!0,m=c.timeoutMs!==void 0?Math.min(c.timeoutMs,s):s;for(;;){let p=new AbortController,g=setTimeout(()=>p.abort(),m);try{let S={method:u,headers:c.headers,signal:p.signal,redirect:"manual"};c.body&&!Zo.has(u)&&(S.body=c.body);let v=await fetch(f,S);if(Go.has(v.status)&&h){let A=v.headers.get("location");if(!A)return await ei(v,f,n);let y=new URL(A,f).href;if(!e.dangerouslyAllowFullInternetAccess&&!ln(y,e.allowedUrlPrefixes??[]))throw new mt(y);if(d++,d>t)throw new pt(t);f=y;continue}return await ei(v,f,n)}finally{clearTimeout(g)}}}return a}async function ei(e,t,s){let n=Object.create(null);if(e.headers.forEach((i,o)=>{n[o.toLowerCase()]=i}),s>0){let i=e.headers.get("content-length");if(i){let o=parseInt(i,10);if(!Number.isNaN(o)&&o>s)throw new yt(s)}}let r;if(s>0&&e.body){let i=e.body.getReader(),o=new TextDecoder,a=[],l=0;for(;;){let{done:c,value:u}=await i.read();if(c)break;if(l+=u.byteLength,l>s)throw i.cancel(),new yt(s);a.push(o.decode(u,{stream:!0}))}a.push(o.decode()),r=a.join("")}else r=await e.text();return{status:e.status,statusText:e.statusText,headers:n,body:r,url:t}}function ti(){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"},{prop:"SharedArrayBuffer",target:globalThis,violationType:"shared_array_buffer",strategy:"throw",reason:"SharedArrayBuffer could enable side-channel communication or timing attacks"},{prop:"Atomics",target:globalThis,violationType:"atomics",strategy:"throw",reason:"Atomics could enable side-channel communication or timing attacks"}];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 gt=typeof __BROWSER__<"u"&&__BROWSER__;function si(){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 fn=null;if(!gt)try{let{createRequire:e}=await import("node:module");fn=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 Ko=`
674
+
675
+ This is a defense-in-depth measure and indicates a bug in just-bash. Please report this at security@vercel.com`,ie=class extends Error{violation;constructor(t,s){super(t+Ko),this.violation=s,this.name="SecurityViolationError"}},fe=!gt&&fn?new fn:null,Xo=1e3,un={enabled:!0,auditMode:!1};function Yo(e){return e===void 0?{...un,enabled:!1}:typeof e=="boolean"?{...un,enabled:e}:{...un,...e}}var Qt=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(Yo(t))),e.instance}static resetInstance(){e.instance&&(e.instance.forceDeactivate(),e.instance=null)}static isInSandboxedContext(){return fe?fe?.getStore()?.sandboxActive===!0:!1}static getCurrentExecutionId(){if(fe)return fe?.getStore()?.executionId}updateConfig(t){this.config={...this.config,...t}}activate(){if(gt||!this.config.enabled){let s=si();return{run:n=>n(),deactivate:()=>{},executionId:s}}this.refCount++,this.refCount===1&&(this.applyPatches(),this.activationTime=Date.now());let t=si();return{run:s=>fe.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 gt||this.config.auditMode||!fe?!1:fe?.getStore()?.sandboxActive===!0}recordViolation(t,s,n){let r={timestamp:Date.now(),type:t,message:n,path:s,stack:new Error().stack,executionId:fe?.getStore()?.executionId};if(this.violations.length<Xo&&this.violations.push(r),this.config.onViolation)try{this.config.onViolation(r)}catch(i){console.debug("[DefenseInDepthBox] onViolation callback threw:",i instanceof Error?i.message:i)}return r}createBlockingProxy(t,s,n){let r=this;return new Proxy(t,{apply(i,o,a){if(r.shouldBlock()){let l=`${s} is blocked during script execution`,c=r.recordViolation(n,s,l);throw new ie(l,c)}return r.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&r.recordViolation(n,s,`${s} called (audit mode)`),Reflect.apply(i,o,a)},construct(i,o,a){if(r.shouldBlock()){let l=`${s} constructor is blocked during script execution`,c=r.recordViolation(n,s,l);throw new ie(l,c)}return r.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&r.recordViolation(n,s,`${s} constructor called (audit mode)`),Reflect.construct(i,o,a)}})}createBlockingObjectProxy(t,s,n){let r=this;return new Proxy(t,{get(i,o,a){if(r.shouldBlock()){let l=`${s}.${String(o)}`,c=`${l} is blocked during script execution`,u=r.recordViolation(n,l,c);throw new ie(c,u)}if(r.config.auditMode&&fe?.getStore()?.sandboxActive===!0){let l=`${s}.${String(o)}`;r.recordViolation(n,l,`${l} accessed (audit mode)`)}return Reflect.get(i,o,a)},set(i,o,a,l){if(r.shouldBlock()){let c=`${s}.${String(o)}`,u=`${c} modification is blocked during script execution`,f=r.recordViolation(n,c,u);throw new ie(u,f)}return Reflect.set(i,o,a,l)},ownKeys(i){if(r.shouldBlock()){let o=`${s} enumeration is blocked during script execution`,a=r.recordViolation(n,s,o);throw new ie(o,a)}return Reflect.ownKeys(i)},getOwnPropertyDescriptor(i,o){if(r.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} descriptor access is blocked during script execution`,c=r.recordViolation(n,a,l);throw new ie(l,c)}return Reflect.getOwnPropertyDescriptor(i,o)},has(i,o){if(r.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} existence check is blocked during script execution`,c=r.recordViolation(n,a,l);throw new ie(l,c)}return Reflect.has(i,o)}})}applyPatches(){let t=ti();for(let s of t)this.applyPatch(s);this.protectConstructorChain(),this.protectErrorPrepareStackTrace(),this.protectModuleLoad(),this.protectProcessMainModule()}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 n=s?.value;Object.defineProperty(Error,"prepareStackTrace",{get(){return n},set(r){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 ie(i,o)}t.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&t.recordViolation("error_prepare_stack_trace","Error.prepareStackTrace","Error.prepareStackTrace set (audit mode)"),n=r},configurable:!0})}catch(s){console.debug("[DefenseInDepthBox] Could not protect Error.prepareStackTrace:",s instanceof Error?s.message:s)}}patchPrototypeConstructor(t,s,n){let r=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(r.shouldBlock()){let a=`${s} access is blocked during script execution`,l=r.recordViolation(n,s,a);throw new ie(a,l)}return r.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&r.recordViolation(n,s,`${s} accessed (audit mode)`),o},set(a){if(r.shouldBlock()){let l=`${s} modification is blocked during script execution`,c=r.recordViolation(n,s,l);throw new ie(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)}}protectProcessMainModule(){if(typeof process>"u")return;let t=this;try{let s=Object.getOwnPropertyDescriptor(process,"mainModule");this.originalDescriptors.push({target:process,prop:"mainModule",descriptor:s});let n=s?.value;n!==void 0&&Object.defineProperty(process,"mainModule",{get(){if(t.shouldBlock()){let r="process.mainModule access is blocked during script execution",i=t.recordViolation("process_main_module","process.mainModule",r);throw new ie(r,i)}return t.config.auditMode&&fe?.getStore()?.sandboxActive===!0&&t.recordViolation("process_main_module","process.mainModule","process.mainModule accessed (audit mode)"),n},set(r){if(t.shouldBlock()){let i="process.mainModule modification is blocked during script execution",o=t.recordViolation("process_main_module","process.mainModule",i);throw new ie(i,o)}Object.defineProperty(process,"mainModule",{value:r,writable:!0,configurable:!0})},configurable:!0})}catch(s){console.debug("[DefenseInDepthBox] Could not protect process.mainModule:",s instanceof Error?s.message:s)}}protectModuleLoad(){if(!gt)try{let t=null;if(typeof process<"u"){let o=process.mainModule;o&&typeof o=="object"&&(t=o.constructor)}if(!t&&typeof vt<"u"&&typeof vt.main<"u"&&(t=vt.main.constructor),!t||typeof t._load!="function")return;let s=t._load,n=Object.getOwnPropertyDescriptor(t,"_load");this.originalDescriptors.push({target:t,prop:"_load",descriptor:n});let i=this.createBlockingProxy(s,"Module._load","module_load");Object.defineProperty(t,"_load",{value:i,writable:!0,configurable:!0})}catch(t){console.debug("[DefenseInDepthBox] Could not protect Module._load:",t instanceof Error?t.message:t)}}applyPatch(t){let{target:s,prop:n,violationType:r,strategy:i}=t;try{let o=s[n];if(o===void 0)return;let a=Object.getOwnPropertyDescriptor(s,n);if(this.originalDescriptors.push({target:s,prop:n,descriptor:a}),i==="freeze")typeof o=="object"&&o!==null&&Object.freeze(o);else{let l=this.getPathForTarget(s,n),c=typeof o=="function"?this.createBlockingProxy(o,l,r):this.createBlockingObjectProxy(o,l,r);Object.defineProperty(s,n,{value:c,writable:!0,configurable:!0})}}catch(o){let a=this.getPathForTarget(s,n);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:n,descriptor:r}=this.originalDescriptors[t];try{r?Object.defineProperty(s,n,r):delete s[n]}catch(i){let o=this.getPathForTarget(s,n);console.debug(`[DefenseInDepthBox] Could not restore ${o}:`,i instanceof Error?i.message:i)}}this.originalDescriptors=[]}};function ni(e){return qe(e)}function qe(e){return e.statements.map(ri).join(`
676
+ `)}function ri(e){let t=[];for(let n=0;n<e.pipelines.length;n++)t.push(Qo(e.pipelines[n])),n<e.operators.length&&t.push(e.operators[n]);let s=t.join(" ");return e.background&&(s+=" &"),s}function Qo(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let s=[];for(let r=0;r<e.commands.length;r++)if(s.push(ii(e.commands[r])),r<e.commands.length-1){let i=e.pipeStderr?.[r];s.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+s.join(" ")}function ii(e){switch(e.type){case"SimpleCommand":return Jo(e);case"If":return la(e);case"For":return ca(e);case"CStyleFor":return ua(e);case"While":return fa(e);case"Until":return da(e);case"Case":return ha(e);case"Subshell":return ma(e);case"Group":return ya(e);case"ArithmeticCommand":return ga(e);case"ConditionalCommand":return wa(e);case"FunctionDef":return va(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function Jo(e){let t=[];for(let s of e.assignments)t.push(ea(s));e.name&&t.push(oe(e.name));for(let s of e.args)t.push(oe(s));for(let s of e.redirections)t.push(li(s));return t.join(" ")}function ea(e){let t=e.append?"+=":"=";if(e.array){let s=e.array.map(oe).join(" ");return`${e.name}${t}(${s})`}return e.value?`${e.name}${t}${oe(e.value)}`:`${e.name}${t}`}function oe(e){return e.parts.map(t=>Jt(t,!1)).join("")}function ze(e){return e.parts.map(t=>Jt(t,!0)).join("")}function Jt(e,t){switch(e.type){case"Literal":return t?sa(e.value):ta(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(s=>Jt(s,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return oi(e);case"CommandSubstitution":return e.legacy?`\`${qe(e.body)}\``:`$(${qe(e.body)})`;case"ArithmeticExpansion":return`$((${B(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${qe(e.body)})`:`>(${qe(e.body)})`;case"BraceExpansion":return oa(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let s=e;throw new Error(`Unsupported word part type: ${s.type}`)}}}function ta(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function sa(e){return e.replace(/[$`"\\]/g,"\\$&")}function na(e,t){return e.parts.map(s=>ra(s,t)).join("")}function ra(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return oi(e);case"CommandSubstitution":return e.legacy?`\`${qe(e.body)}\``:`$(${qe(e.body)})`;case"ArithmeticExpansion":return`$((${B(e.expression.expression)}))`;default:return Jt(e,!1)}}function oi(e){return e.operation?`\${${ai(e.parameter,e.operation)}}`:ia(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function ia(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function ai(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${ze(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${ze(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?ze(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${ze(t.word)}`;case"Substring":{let s=B(t.offset.expression);return t.length?`${e}:${s}:${B(t.length.expression)}`:`${e}:${s}`}case"PatternRemoval":{let s=t.side==="prefix"?"#":"%",n=t.greedy?`${s}${s}`:s;return`${e}${n}${ze(t.pattern)}`}case"PatternReplacement":{let s="/";t.all?s="//":t.anchor==="start"?s="/#":t.anchor==="end"&&(s="/%");let n=t.replacement?`/${ze(t.replacement)}`:"";return`${e}${s}${ze(t.pattern)}${n}`}case"CaseModification":{let s=t.direction==="upper"?"^":",",n=t.all?`${s}${s}`:s,r=t.pattern?ze(t.pattern):"";return`${e}${n}${r}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${ai(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let s=t;throw new Error(`Unsupported parameter operation type: ${s.type}`)}}}function oa(e){return`{${e.items.map(aa).join(",")}}`}function aa(e){if(e.type==="Word")return oe(e.word);let t=e.startStr??String(e.start),s=e.endStr??String(e.end);return e.step!==void 0?`${t}..${s}..${e.step}`:`${t}..${s}`}function li(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let s=e.target,n=s.quoted?`'${s.delimiter}'`:s.delimiter,r=na(s.content,s.quoted);return`${t}${e.operator}${n}
677
+ ${r}${s.delimiter}`}return e.operator==="<<<"?`${t}<<< ${oe(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${oe(e.target)}`:`${t}${e.operator} ${oe(e.target)}`}function Ce(e){return e.length===0?"":` ${e.map(li).join(" ")}`}function we(e){return e.map(ri).join(`
678
+ `)}function la(e){let t=[];for(let s=0;s<e.clauses.length;s++){let n=e.clauses[s],r=s===0?"if":"elif";t.push(`${r} ${we(n.condition)}; then
679
679
  ${we(n.body)}`)}return e.elseBody&&t.push(`else
680
680
  ${we(e.elseBody)}`),`${t.join(`
681
681
  `)}
682
- fi${_e(e.redirections)}`}function ua(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let s=e.words.map(ae).join(" ");t=`for ${e.variable} in ${s}`}return`${t}; do
682
+ fi${Ce(e.redirections)}`}function ca(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let s=e.words.map(oe).join(" ");t=`for ${e.variable} in ${s}`}return`${t}; do
683
683
  ${we(e.body)}
684
- done${_e(e.redirections)}`}function fa(e){let t=e.init?B(e.init.expression):"",s=e.condition?B(e.condition.expression):"",n=e.update?B(e.update.expression):"";return`for ((${t}; ${s}; ${n})); do
684
+ done${Ce(e.redirections)}`}function ua(e){let t=e.init?B(e.init.expression):"",s=e.condition?B(e.condition.expression):"",n=e.update?B(e.update.expression):"";return`for ((${t}; ${s}; ${n})); do
685
685
  ${we(e.body)}
686
- done${_e(e.redirections)}`}function da(e){return`while ${we(e.condition)}; do
686
+ done${Ce(e.redirections)}`}function fa(e){return`while ${we(e.condition)}; do
687
687
  ${we(e.body)}
688
- done${_e(e.redirections)}`}function ha(e){return`until ${we(e.condition)}; do
688
+ done${Ce(e.redirections)}`}function da(e){return`until ${we(e.condition)}; do
689
689
  ${we(e.body)}
690
- done${_e(e.redirections)}`}function pa(e){let t=e.items.map(ma).join(`
691
- `);return`case ${ae(e.word)} in
690
+ done${Ce(e.redirections)}`}function ha(e){let t=e.items.map(pa).join(`
691
+ `);return`case ${oe(e.word)} in
692
692
  ${t}
693
- esac${_e(e.redirections)}`}function ma(e){let t=e.patterns.map(ae).join(" | "),s=we(e.body);return s?`${t})
693
+ esac${Ce(e.redirections)}`}function pa(e){let t=e.patterns.map(oe).join(" | "),s=we(e.body);return s?`${t})
694
694
  ${s}
695
695
  ${e.terminator}`:`${t})
696
- ${e.terminator}`}function ya(e){return`(${we(e.body)})${_e(e.redirections)}`}function ga(e){return`{ ${we(e.body)}; }${_e(e.redirections)}`}function wa(e){return`((${B(e.expression.expression)}))${_e(e.redirections)}`}function va(e){return`[[ ${Ue(e.expression)} ]]${_e(e.redirections)}`}function ba(e){let t=ai(e.body);return`${e.name}() ${t}${_e(e.redirections)}`}function B(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${B(e.left)} ${e.operator} ${B(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${B(e.operand)}`:`${B(e.operand)}${e.operator}`;case"ArithTernary":return`${B(e.condition)} ? ${B(e.consequent)} : ${B(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${B(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${B(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${B(e.target)}[${B(e.subscript)}]`:B(e.target)} ${e.operator} ${B(e.value)}`;case"ArithDynamicElement":return`${B(e.nameExpr)}[${B(e.subscript)}]`;case"ArithGroup":return`(${B(e.expression)})`;case"ArithNested":return`$((${B(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${B(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(B).join("");case"ArithDoubleSubscript":return`${e.array}[${B(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function Ue(e){switch(e.type){case"CondBinary":return`${ae(e.left)} ${e.operator} ${ae(e.right)}`;case"CondUnary":return`${e.operator} ${ae(e.operand)}`;case"CondNot":return`! ${Ue(e.operand)}`;case"CondAnd":return`${Ue(e.left)} && ${Ue(e.right)}`;case"CondOr":return`${Ue(e.left)} || ${Ue(e.right)}`;case"CondGroup":return`( ${Ue(e.expression)} )`;case"CondWord":return ae(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var es=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;transformPlugins=[];state;constructor(t={}){let s=t.fs??new it(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
697
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=ei({...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=cn(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth,this.coverageWriter=t.coverage,this.state={env:r,cwd:n,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,bashPid:process.pid,nextVirtualPid:process.pid+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",ds(this.state.options)),this.state.env.set("BASHOPTS",hs(this.state.shoptOptions)),Ln(s,this.useDefaultLayout),n!=="/"&&s instanceof it)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let i of Tn(t.commands))this.registerCommand(i);if(t.network)for(let i of Dn())this.registerCommand(i);if(t.python)for(let i of xn())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)In(i)?this.registerCommand(Rn(i)):this.registerCommand(i)}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
696
+ ${e.terminator}`}function ma(e){return`(${we(e.body)})${Ce(e.redirections)}`}function ya(e){return`{ ${we(e.body)}; }${Ce(e.redirections)}`}function ga(e){return`((${B(e.expression.expression)}))${Ce(e.redirections)}`}function wa(e){return`[[ ${Ue(e.expression)} ]]${Ce(e.redirections)}`}function va(e){let t=ii(e.body);return`${e.name}() ${t}${Ce(e.redirections)}`}function B(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${B(e.left)} ${e.operator} ${B(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${B(e.operand)}`:`${B(e.operand)}${e.operator}`;case"ArithTernary":return`${B(e.condition)} ? ${B(e.consequent)} : ${B(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${B(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${B(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${B(e.target)}[${B(e.subscript)}]`:B(e.target)} ${e.operator} ${B(e.value)}`;case"ArithDynamicElement":return`${B(e.nameExpr)}[${B(e.subscript)}]`;case"ArithGroup":return`(${B(e.expression)})`;case"ArithNested":return`$((${B(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${B(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(B).join("");case"ArithDoubleSubscript":return`${e.array}[${B(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function Ue(e){switch(e.type){case"CondBinary":return`${oe(e.left)} ${e.operator} ${oe(e.right)}`;case"CondUnary":return`${e.operator} ${oe(e.operand)}`;case"CondNot":return`! ${Ue(e.operand)}`;case"CondAnd":return`${Ue(e.left)} && ${Ue(e.right)}`;case"CondOr":return`${Ue(e.left)} || ${Ue(e.right)}`;case"CondGroup":return`( ${Ue(e.expression)} )`;case"CondWord":return oe(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var es=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;transformPlugins=[];state;constructor(t={}){let s=t.fs??new it(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
697
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Qr({...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=cn(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth,this.coverageWriter=t.coverage,this.state={env:r,cwd:n,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+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",ds(this.state.options)),this.state.env.set("BASHOPTS",hs(this.state.shoptOptions)),In(s,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),n!=="/"&&s instanceof it)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let i of Nn(t.commands))this.registerCommand(i);if(t.network)for(let i of On())this.registerCommand(i);if(t.python)for(let i of Tn())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)Dn(i)?this.registerCommand(xn(i)):this.registerCommand(i)}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
698
698
  # Built-in command: ${t.name}
699
699
  `;try{s.writeFileSync(`/bin/${t.name}`,n)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,n)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t}async exec(t,s){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
700
- `,exitCode:1,env:$e(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:$e(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let n=s?.cwd??this.state.cwd,r,i=n;if(s?.cwd)if(s.env&&"PWD"in s.env)r=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{r=await this.fs.realpath(n),i=r}catch{r=n}else r=n;let o=new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))o.set(f,d);r!==void 0&&o.set("PWD",r);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,groupStdin:s?.stdin},l=t;s?.rawScript||(l=fi(t));let u=(this.defenseInDepthConfig?Qt.getInstance(this.defenseInDepthConfig):null)?.activate();try{let f=async()=>{let d=Ee(l),h;if(this.transformPlugins.length>0){let v=Object.create(null);for(let S of this.transformPlugins){let y=S.transform({ast:d,metadata:v});d=y.ast,y.metadata&&(v={...v,...y.metadata})}h=v}let m={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter},A=await new dt(m,a).executeScript(d);return h&&(A.metadata=h),this.logResult(A)};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:$e(this.state.env,s?.env)});if(f instanceof ve)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:$e(this.state.env,s?.env)});if(f instanceof Ve)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:$e(this.state.env,s?.env)});if(f instanceof re)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:re.EXIT_CODE,env:$e(this.state.env,s?.env)});if(f instanceof ie)return this.logResult({stdout:"",stderr:`bash: security violation: ${f.message}
701
- `,exitCode:1,env:$e(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${f.message}
702
- `,exitCode:2,env:$e(this.state.env,s?.env)});if(f instanceof wn)return this.logResult({stdout:"",stderr:`bash: ${f.message}
703
- `,exitCode:2,env:$e(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${f.message}
704
- `,exitCode:1,env:$e(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 Ie(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){let s=fi(t),n=Ee(s),r=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:n,metadata:r});n=o.ast,o.metadata&&(r={...r,...o.metadata})}return{script:ii(n),ast:n,metadata:r}}};function fi(e){let t=e.split(`
700
+ `,exitCode:1,env:Ee(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:Ee(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let n=s?.cwd??this.state.cwd,r,i=n;if(s?.cwd)if(s.env&&"PWD"in s.env)r=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{r=await this.fs.realpath(n),i=r}catch{r=n}else r=n;let o=new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))o.set(f,d);r!==void 0&&o.set("PWD",r);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,groupStdin:s?.stdin},l=t;s?.rawScript||(l=ci(t));let u=(this.defenseInDepthConfig?Qt.getInstance(this.defenseInDepthConfig):null)?.activate();try{let f=async()=>{let d=Se(l),h;if(this.transformPlugins.length>0){let v=Object.create(null);for(let A of this.transformPlugins){let y=A.transform({ast:d,metadata:v});d=y.ast,y.metadata&&(v={...v,...y.metadata})}h=v}let m={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter},S=await new dt(m,a).executeScript(d);return h&&(S.metadata=h),this.logResult(S)};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:Ee(this.state.env,s?.env)});if(f instanceof be)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:Ee(this.state.env,s?.env)});if(f instanceof Ve)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:Ee(this.state.env,s?.env)});if(f instanceof re)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:re.EXIT_CODE,env:Ee(this.state.env,s?.env)});if(f instanceof ie)return this.logResult({stdout:"",stderr:`bash: security violation: ${f.message}
701
+ `,exitCode:1,env:Ee(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${f.message}
702
+ `,exitCode:2,env:Ee(this.state.env,s?.env)});if(f instanceof yn)return this.logResult({stdout:"",stderr:`bash: ${f.message}
703
+ `,exitCode:2,env:Ee(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${f.message}
704
+ `,exitCode:1,env:Ee(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 Ie(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){let s=ci(t),n=Se(s),r=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:n,metadata:r});n=o.ast,o.metadata&&(r={...r,...o.metadata})}return{script:ni(n),ast:n,metadata:r}}};function ci(e){let t=e.split(`
705
705
  `),s=[],n=[];for(let r=0;r<t.length;r++){let i=t[r];if(n.length>0){let l=n[n.length-1];if((l.stripTabs?i.replace(/^\t+/,""):i)===l.delimiter){s.push(i.trimStart()),n.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];n.push({delimiter:u,stripTabs:c})}}return s.join(`
706
- `)}import*as G from"node:fs";import*as Oe from"node:path";import*as me from"node:fs";import*as oe from"node:path";function j(e){if(!e||e==="/")return"/";let t=e.endsWith("/")&&e!=="/"?e.slice(0,-1):e;t.startsWith("/")||(t=`/${t}`);let s=t.split("/").filter(r=>r&&r!=="."),n=[];for(let r of s)r===".."?n.pop():n.push(r);return`/${n.join("/")}`||"/"}function wt(e,t){return e===t||e.startsWith(`${t}/`)}function ts(e,t){try{let s=me.realpathSync(e);return wt(s,t)}catch(s){if(s.code==="ENOENT"){let r=oe.dirname(e);return r===e?!1:ts(r,t)}return!1}}function dn(e,t){try{let s=me.realpathSync(e);return wt(s,t)?s:null}catch(s){if(s.code==="ENOENT"){let n=oe.dirname(e);if(n===e)return null;let r=dn(n,t);if(r===null)return null;try{if(me.lstatSync(e).isSymbolicLink()){let o=me.readlinkSync(e),a=oe.isAbsolute(o)?o:oe.resolve(oe.dirname(e),o);if(dn(a,t)===null)return null}}catch{}return oe.join(r,oe.basename(e))}return null}}function hn(e,t,s){let n=dn(e,s);if(n===null)return null;let r=oe.resolve(e),i=r.slice(t.length),o=n.slice(s.length);if(i!==o)return null;try{if(me.lstatSync(r).isSymbolicLink())return null}catch{}return n}function di(e,t){if(!me.existsSync(e))throw new Error(`${t} root does not exist: ${e}`);if(!me.statSync(e).isDirectory())throw new Error(`${t} root is not a directory: ${e}`)}function J(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function hi(e,t){if(!oe.isAbsolute(e))return{withinRoot:!0,relativePath:e};let s;try{s=me.realpathSync(e)}catch{s=oe.resolve(e)}return wt(s,t)?{withinRoot:!0,relativePath:s.slice(t.length)||"/"}:{withinRoot:!1,safeName:oe.basename(e)}}var $a="/home/user/project",ss=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=Oe.resolve(t.root);let s=t.mountPoint??$a;if(this.mountPoint=s==="/"?"/":s.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${s}`);this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.allowSymlinks=t.allowSymlinks??!1,di(this.root,"OverlayFs"),this.canonicalRoot=G.realpathSync(this.root),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let n of t)s+=`/${n}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let r=j(t).split("/").filter(Boolean),i="";for(let o of r)i+=`/${o}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let n=j(t),r=this.getDirname(n);r!=="/"&&this.mkdirSync(r);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(n,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=j(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=Oe.join(this.root,n),i=Oe.resolve(r);return wt(i,this.root)?i:null}dirname(t){let s=j(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}validateRealPath_(t){return this.allowSymlinks?ts(t,this.canonicalRoot):hn(t,this.root,this.canonicalRoot)!==null}validateRealPathParent_(t){let s=Oe.dirname(t);return this.allowSymlinks?ts(s,this.canonicalRoot):hn(s,this.root,this.canonicalRoot)!==null}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=j(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let n=this.toRealPath(s);if(!n||!this.validateRealPathParent_(n))return!1;try{return await G.promises.lstat(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=Fe(s);return Pt(n,r)}async readFileBuffer(t,s=new Set){J(t,"open");let n=j(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let o=this.resolveSymlink(n,r.target);return this.readFileBuffer(o,s)}if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content}let i=this.toRealPath(n);if(!i||!this.validateRealPath_(i))throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let o=await G.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let l=await G.promises.readlink(i),c=this.realTargetToVirtual(n,l),u=this.resolveSymlink(n,c);return this.readFileBuffer(u,s)}if(o.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(this.maxFileReadSize>0&&o.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${o.size} bytes, max ${this.maxFileReadSize})`);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,n){J(t,"write"),this.assertWritable(`write '${t}'`);let r=j(t);this.ensureParentDirs(r);let i=Fe(n),o=Ke(s,i);this.memory.set(r,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){J(t,"append"),this.assertWritable(`append '${t}'`);let r=j(t),i=Fe(n),o=Ke(s,i),a;try{a=await this.readFileBuffer(r)}catch{a=new Uint8Array(0)}let l=new Uint8Array(a.length+o.length);l.set(a),l.set(o,a.length),this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(r)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){J(t,"stat");let n=j(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let a=this.resolveSymlink(n,r.target);return this.stat(a,s)}let o=0;return r.type==="file"&&(o=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:o,mtime:r.mtime}}let i=this.toRealPath(n);if(!i||!this.validateRealPath_(i))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await G.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let a=await G.promises.readlink(i),l=this.realTargetToVirtual(n,a),c=this.resolveSymlink(n,l);return this.stat(c,s)}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=j(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let n=this.memory.get(s);if(n){if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime};let i=0;return n.type==="file"&&(i=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:i,mtime:n.mtime}}let r=this.toRealPath(s);if(!r||!this.validateRealPathParent_(r))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await G.promises.lstat(r);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):i}}resolveSymlink(t,s){if(s.startsWith("/"))return j(s);let n=this.dirname(t);return j(n==="/"?`/${s}`:`${n}/${s}`)}realTargetToVirtual(t,s){let n=hi(s,this.canonicalRoot);if(n.withinRoot){if(!Oe.isAbsolute(s))return s;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,s){J(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let n=j(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=this.dirname(n);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let a of this.deleted)if(a.startsWith(i)){let l=a.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&r.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&&!r.has(u)&&!c.includes("/",1)&&n.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let o=this.toRealPath(s);if(o&&this.validateRealPath_(o))try{let a=await G.promises.readdir(o,{withFileTypes:!0});for(let l of a)!r.has(l.name)&&!n.has(l.name)&&n.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 n}async resolveForReaddir(t,s=!1){let n=j(t),r=new Set,i=s,o=this.memory.get(n);for(;o&&o.type==="symlink";){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(n),i=!0,n=this.resolveSymlink(n,o.target),o=this.memory.get(n)}if(o)return{normalized:n,outsideOverlay:!1};if(this.getRelativeToMount(n)===null)return{normalized:n,outsideOverlay:!0};let l=this.toRealPath(n);if(!l||!this.validateRealPath_(l))return{normalized:n,outsideOverlay:!0};try{if((await G.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:n,outsideOverlay:!0};let u=await G.promises.readlink(l),f=this.realTargetToVirtual(n,u),d=this.resolveSymlink(n,f);return this.resolveForReaddir(d,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){J(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){J(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,s){J(t,"rm"),this.assertWritable(`rm '${t}'`);let n=j(t);if(!await this.existsInOverlay(n)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(n)).isDirectory){let o=await this.readdir(n);if(o.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of o){let l=n==="/"?`/${a}`:`${n}/${a}`;await this.rm(l,s)}}}}catch(i){if(i instanceof Error&&(i.message.includes("ENOTEMPTY")||i.message.includes("EISDIR")))throw i}this.deleted.add(n),this.memory.delete(n)}async cp(t,s,n){J(t,"cp"),J(s,"cp"),this.assertWritable(`cp '${s}'`);let r=j(t),i=j(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(r);if(a.isFile){let l=await this.readFileBuffer(r);await this.writeFile(i,l)}else if(a.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(r);for(let c of l){let u=r==="/"?`/${c}`:`${r}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,n)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){if(s.startsWith("/"))return j(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return j(n)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let n=this.toRealPath(t);if(!(!n||!this.validateRealPath_(n)))try{let r=G.readdirSync(n);for(let i of r){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(o))continue;s.add(o);let a=Oe.join(n,i);G.lstatSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){J(t,"chmod"),this.assertWritable(`chmod '${t}'`);let n=j(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(n);if(i){i.mode=s;return}let o=await this.stat(n);if(o.isFile){let a=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:a,mode:s,mtime:new Date})}else o.isDirectory&&this.memory.set(n,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);J(s,"symlink"),this.assertWritable(`symlink '${s}'`);let n=j(s);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.memory.set(n,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(n)}async link(t,s){J(t,"link"),J(s,"link"),this.assertWritable(`link '${s}'`);let n=j(t),r=j(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(n);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(n);this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:o.mode,mtime:new Date}),this.deleted.delete(r)}async readlink(t){J(t,"readlink");let s=j(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let n=this.memory.get(s);if(n){if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}let r=this.toRealPath(s);if(!r||!this.validateRealPathParent_(r))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await G.promises.readlink(r);return this.realTargetToVirtual(s,i)}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=j(t),n=new Set,r=async a=>{let l=a==="/"?[]:a.slice(1).split("/"),c="";for(let u of l){if(c=`${c}/${u}`,n.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(n.add(c),c=this.resolveSymlink(c,f.target),d++,n.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&&this.validateRealPath_(m))try{if((await G.promises.lstat(m)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let g=await G.promises.readlink(m),A=this.realTargetToVirtual(c,g);return n.add(c),c=this.resolveSymlink(c,A),r(c)}}catch(p){throw p.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):p}else if(m&&!this.allowSymlinks&&this.validateRealPathParent_(m))try{if((await G.promises.lstat(m)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(p){throw p.message?.includes("ENOENT")||p.message?.includes("ELOOP")?new Error(`ENOENT: no such file or directory, realpath '${t}'`):p}}}return c||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){J(t,"utimes"),this.assertWritable(`utimes '${t}'`);let r=j(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.memory.get(r);if(o){o.mtime=n;return}let a=await this.stat(r);if(a.isFile){let l=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:l,mode:a.mode,mtime:n})}else a.isDirectory&&this.memory.set(r,{type:"directory",mode:a.mode,mtime:n})}};var ee={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m"},pn=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new ss({root:s,mountPoint:"/"});this.env=new es({fs:n,cwd:t.cwd||"/",env:{HOME:"/",USER:"user",SHELL:"/bin/bash",TERM:"xterm-256color",...t.env},network:t.network!==!1?{dangerouslyAllowFullInternetAccess:!0}:void 0}),this.isInteractive=process.stdin.isTTY===!0,this.rl=mi.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
706
+ `)}import*as G from"node:fs";import*as me from"node:path";import*as ve from"node:fs";import*as ae from"node:path";function j(e){if(!e||e==="/")return"/";let t=e.endsWith("/")&&e!=="/"?e.slice(0,-1):e;t.startsWith("/")||(t=`/${t}`);let s=t.split("/").filter(r=>r&&r!=="."),n=[];for(let r of s)r===".."?n.pop():n.push(r);return`/${n.join("/")}`||"/"}function ts(e,t){return e===t||e.startsWith(`${t}/`)}function wt(e,t){try{let s=ve.realpathSync(e);return ts(s,t)?s:null}catch(s){if(s.code==="ENOENT"){let n=ae.dirname(e);if(n===e)return null;let r=wt(n,t);if(r===null)return null;try{if(ve.lstatSync(e).isSymbolicLink()){let o=ve.readlinkSync(e),a=ae.isAbsolute(o)?o:ae.resolve(ae.dirname(e),o);if(wt(a,t)===null)return null}}catch{}return ae.join(r,ae.basename(e))}return null}}function ui(e,t,s){let n=wt(e,s);if(n===null)return null;let r=ae.resolve(e),i=r.slice(t.length),o=n.slice(s.length);if(i!==o)return null;try{if(ve.lstatSync(r).isSymbolicLink())return null}catch{}return n}function fi(e,t){if(!ve.existsSync(e))throw new Error(`${t} root does not exist: ${e}`);if(!ve.statSync(e).isDirectory())throw new Error(`${t} root is not a directory: ${e}`)}function J(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function di(e,t){if(!ae.isAbsolute(e))return{withinRoot:!0,relativePath:e};let s;try{s=ve.realpathSync(e)}catch{s=ae.resolve(e)}return ts(s,t)?{withinRoot:!0,relativePath:s.slice(t.length)||"/"}:{withinRoot:!1,safeName:ae.basename(e)}}var ba="/home/user/project",ss=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;allowSymlinks;memory=new Map;deleted=new Set;constructor(t){this.root=me.resolve(t.root);let s=t.mountPoint??ba;if(this.mountPoint=s==="/"?"/":s.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${s}`);this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.allowSymlinks=t.allowSymlinks??!1,fi(this.root,"OverlayFs"),this.canonicalRoot=G.realpathSync(this.root),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let n of t)s+=`/${n}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let r=j(t).split("/").filter(Boolean),i="";for(let o of r)i+=`/${o}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let n=j(t),r=this.getDirname(n);r!=="/"&&this.mkdirSync(r);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(n,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=j(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=me.join(this.root,n),i=me.resolve(r);return ts(i,this.root)?i:null}dirname(t){let s=j(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}resolveRealPath_(t){return t?this.allowSymlinks?wt(t,this.canonicalRoot):ui(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let s=me.dirname(t),n=this.resolveRealPath_(s);return n===null?null:me.join(n,me.basename(t))}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=j(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let n=this.resolveRealPathParent_(this.toRealPath(s));if(!n)return!1;try{return await G.promises.lstat(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=Fe(s);return Pt(n,r)}async readFileBuffer(t,s=new Set){J(t,"open");let n=j(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let o=this.resolveSymlink(n,r.target);return this.readFileBuffer(o,s)}if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content}let i=this.resolveRealPath_(this.toRealPath(n));if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let o=await G.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${t}'`);let l=await G.promises.readlink(i),c=this.realTargetToVirtual(n,l),u=this.resolveSymlink(n,c);return this.readFileBuffer(u,s)}if(o.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(this.maxFileReadSize>0&&o.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${t}' (${o.size} bytes, max ${this.maxFileReadSize})`);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,n){J(t,"write"),this.assertWritable(`write '${t}'`);let r=j(t);this.ensureParentDirs(r);let i=Fe(n),o=Ke(s,i);this.memory.set(r,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){J(t,"append"),this.assertWritable(`append '${t}'`);let r=j(t),i=Fe(n),o=Ke(s,i),a;try{a=await this.readFileBuffer(r)}catch{a=new Uint8Array(0)}let l=new Uint8Array(a.length+o.length);l.set(a),l.set(o,a.length),this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(r)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){J(t,"stat");let n=j(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let a=this.resolveSymlink(n,r.target);return this.stat(a,s)}let o=0;return r.type==="file"&&(o=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:o,mtime:r.mtime}}let i=this.resolveRealPath_(this.toRealPath(n));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await G.promises.lstat(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let a=await G.promises.readlink(i),l=this.realTargetToVirtual(n,a),c=this.resolveSymlink(n,l);return this.stat(c,s)}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=j(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let n=this.memory.get(s);if(n){if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime};let i=0;return n.type==="file"&&(i=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:i,mtime:n.mtime}}let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await G.promises.lstat(r);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):i}}resolveSymlink(t,s){if(s.startsWith("/"))return j(s);let n=this.dirname(t);return j(n==="/"?`/${s}`:`${n}/${s}`)}realTargetToVirtual(t,s){let n=di(s,this.canonicalRoot);if(n.withinRoot){if(!me.isAbsolute(s))return s;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,s){J(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let n=j(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=this.dirname(n);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let a of this.deleted)if(a.startsWith(i)){let l=a.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&r.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&&!r.has(u)&&!c.includes("/",1)&&n.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let o=this.resolveRealPath_(this.toRealPath(s));if(o)try{let a=await G.promises.readdir(o,{withFileTypes:!0});for(let l of a)!r.has(l.name)&&!n.has(l.name)&&n.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 n}async resolveForReaddir(t,s=!1){let n=j(t),r=new Set,i=s,o=this.memory.get(n);for(;o&&o.type==="symlink";){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(n),i=!0,n=this.resolveSymlink(n,o.target),o=this.memory.get(n)}if(o)return{normalized:n,outsideOverlay:!1};if(this.getRelativeToMount(n)===null)return{normalized:n,outsideOverlay:!0};let l=this.resolveRealPath_(this.toRealPath(n));if(!l)return{normalized:n,outsideOverlay:!0};try{if((await G.promises.lstat(l)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:n,outsideOverlay:!0};let u=await G.promises.readlink(l),f=this.realTargetToVirtual(n,u),d=this.resolveSymlink(n,f);return this.resolveForReaddir(d,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){J(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){J(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,s){J(t,"rm"),this.assertWritable(`rm '${t}'`);let n=j(t);if(!await this.existsInOverlay(n)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(n)).isDirectory){let o=await this.readdir(n);if(o.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of o){let l=n==="/"?`/${a}`:`${n}/${a}`;await this.rm(l,s)}}}}catch(i){if(i instanceof Error&&(i.message.includes("ENOTEMPTY")||i.message.includes("EISDIR")))throw i}this.deleted.add(n),this.memory.delete(n)}async cp(t,s,n){J(t,"cp"),J(s,"cp"),this.assertWritable(`cp '${s}'`);let r=j(t),i=j(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(r);if(a.isFile){let l=await this.readFileBuffer(r);await this.writeFile(i,l)}else if(a.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(r);for(let c of l){let u=r==="/"?`/${c}`:`${r}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,n)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){if(s.startsWith("/"))return j(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return j(n)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let n=this.resolveRealPath_(this.toRealPath(t));if(n)try{let r=G.readdirSync(n);for(let i of r){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(o))continue;s.add(o);let a=me.join(n,i);G.lstatSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){J(t,"chmod"),this.assertWritable(`chmod '${t}'`);let n=j(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(n);if(i){i.mode=s;return}let o=await this.stat(n);if(o.isFile){let a=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:a,mode:s,mtime:new Date})}else o.isDirectory&&this.memory.set(n,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${s}'`);J(s,"symlink"),this.assertWritable(`symlink '${s}'`);let n=j(s);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.memory.set(n,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(n)}async link(t,s){J(t,"link"),J(s,"link"),this.assertWritable(`link '${s}'`);let n=j(t),r=j(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(n);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(n);this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:o.mode,mtime:new Date}),this.deleted.delete(r)}async readlink(t){J(t,"readlink");let s=j(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let n=this.memory.get(s);if(n){if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}let r=this.resolveRealPathParent_(this.toRealPath(s));if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await G.promises.readlink(r);return this.realTargetToVirtual(s,i)}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=j(t),n=new Set,r=async a=>{let l=a==="/"?[]:a.slice(1).split("/"),c="";for(let u of l){if(c=`${c}/${u}`,n.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(n.add(c),c=this.resolveSymlink(c,f.target),d++,n.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),p=this.resolveRealPath_(m);if(p)try{if((await G.promises.lstat(p)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let S=await G.promises.readlink(p),v=this.realTargetToVirtual(c,S);return n.add(c),c=this.resolveSymlink(c,v),r(c)}}catch(g){throw g.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):g}else if(!this.allowSymlinks){let g=this.resolveRealPathParent_(m);if(g)try{if((await G.promises.lstat(g)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(S){throw S.message?.includes("ENOENT")||S.message?.includes("ELOOP")?new Error(`ENOENT: no such file or directory, realpath '${t}'`):S}}}}return c||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){J(t,"utimes"),this.assertWritable(`utimes '${t}'`);let r=j(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.memory.get(r);if(o){o.mtime=n;return}let a=await this.stat(r);if(a.isFile){let l=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:l,mode:a.mode,mtime:n})}else a.isDirectory&&this.memory.set(r,{type:"directory",mode:a.mode,mtime:n})}};var ee={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m"},dn=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new ss({root:s,mountPoint:"/"});this.env=new es({fs:n,cwd:t.cwd||"/",env:{HOME:"/",USER:"user",SHELL:"/bin/bash",TERM:"xterm-256color",...t.env},network:t.network!==!1?{dangerouslyAllowFullInternetAccess:!0}:void 0}),this.isInteractive=process.stdin.isTTY===!0,this.rl=pi.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
707
707
  `),this.prompt()}),process.stdin.isTTY&&this.rl.on("close",()=>{this.running=!1,console.log(`
708
- Goodbye!`),process.exit(0)})}syncHistory(){let t=this.env.getEnv();t.BASH_HISTORY=JSON.stringify(this.history)}getPrompt(){let t=this.env.getCwd(),s=this.env.getEnv().HOME||"/home/user",n=t;return t===s?n="~":t.startsWith(`${s}/`)&&(n=`~${t.slice(s.length)}`),`${ee.green}${ee.bold}user@virtual${ee.reset}:${ee.blue}${ee.bold}${n}${ee.reset}$ `}async executeCommand(t){let s=t.trim();if(s){if(this.history.push(s),s==="exit"||s.startsWith("exit ")){let n=s.split(/\s+/),r=n[1]?parseInt(n[1],10):0;console.log("exit"),process.exit(r)}this.syncHistory();try{let n=await this.env.exec(s);n.stdout&&process.stdout.write(n.stdout),n.stderr&&process.stderr.write(`${ee.red}${n.stderr}${ee.reset}`)}catch(n){console.error(`${ee.red}Error: ${be(n)}${ee.reset}`)}}}printWelcome(){console.log(`
708
+ Goodbye!`),process.exit(0)})}syncHistory(){let t=this.env.getEnv();t.BASH_HISTORY=JSON.stringify(this.history)}getPrompt(){let t=this.env.getCwd(),s=this.env.getEnv().HOME||"/home/user",n=t;return t===s?n="~":t.startsWith(`${s}/`)&&(n=`~${t.slice(s.length)}`),`${ee.green}${ee.bold}user@virtual${ee.reset}:${ee.blue}${ee.bold}${n}${ee.reset}$ `}async executeCommand(t){let s=t.trim();if(s){if(this.history.push(s),s==="exit"||s.startsWith("exit ")){let n=s.split(/\s+/),r=n[1]?parseInt(n[1],10):0;console.log("exit"),process.exit(r)}this.syncHistory();try{let n=await this.env.exec(s);n.stdout&&process.stdout.write(n.stdout),n.stderr&&process.stderr.write(`${ee.red}${n.stderr}${ee.reset}`)}catch(n){console.error(`${ee.red}Error: ${$e(n)}${ee.reset}`)}}}printWelcome(){console.log(`
709
709
  ${ee.cyan}${ee.bold}\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
710
710
  \u2551 Virtual Shell v1.0 \u2551
711
711
  \u2551 A simulated bash environment in TypeScript \u2551
@@ -715,7 +715,7 @@ ${ee.dim}Exploring: ${process.cwd()}${ee.reset}
715
715
 
716
716
  Type ${ee.green}help${ee.reset} for available commands, ${ee.green}exit${ee.reset} to quit.
717
717
  Reads from real filesystem, writes stay in memory (OverlayFs).
718
- `)}prompt(){this.rl.question(this.getPrompt(),async t=>{this.running&&(await this.executeCommand(t),this.prompt())})}async run(){if(this.isInteractive)this.printWelcome(),this.prompt();else{let t=[];this.rl.on("line",s=>{t.push(s)}),await new Promise(s=>{this.rl.on("close",s)});for(let s of t)await this.executeCommand(s)}}};function Ea(){let e=process.argv.slice(2),t={network:!0};for(let s=0;s<e.length;s++)if(e[s]==="--cwd"&&e[s+1])t.cwd=e[++s];else if(e[s]==="--files"&&e[s+1]){let n=e[++s];try{let r=pi.readFileSync(n,"utf-8");t.files=JSON.parse(r)}catch(r){console.error(`Error reading files from ${n}:`,r),process.exit(1)}}else e[s]==="--no-network"?t.network=!1:(e[s]==="--help"||e[s]==="-h")&&(console.log(`
718
+ `)}prompt(){this.rl.question(this.getPrompt(),async t=>{this.running&&(await this.executeCommand(t),this.prompt())})}async run(){if(this.isInteractive)this.printWelcome(),this.prompt();else{let t=[];this.rl.on("line",s=>{t.push(s)}),await new Promise(s=>{this.rl.on("close",s)});for(let s of t)await this.executeCommand(s)}}};function $a(){let e=process.argv.slice(2),t={network:!0};for(let s=0;s<e.length;s++)if(e[s]==="--cwd"&&e[s+1])t.cwd=e[++s];else if(e[s]==="--files"&&e[s+1]){let n=e[++s];try{let r=hi.readFileSync(n,"utf-8");t.files=JSON.parse(r)}catch(r){console.error(`Error reading files from ${n}:`,r),process.exit(1)}}else e[s]==="--no-network"?t.network=!1:(e[s]==="--help"||e[s]==="-h")&&(console.log(`
719
719
  Usage: pnpm shell [options]
720
720
 
721
721
  Interactive shell using OverlayFs - reads from the current directory,
@@ -729,4 +729,4 @@ Options:
729
729
  Example:
730
730
  pnpm shell
731
731
  pnpm shell --no-network
732
- `),process.exit(0));return t}var Sa=Ea(),Aa=new pn(Sa);Aa.run();
732
+ `),process.exit(0));return t}var Ea=$a(),Sa=new dn(Ea);Sa.run();