just-git 1.3.1 → 1.3.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,24 +1,19 @@
1
- var _e=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});function mr(t){if(t==="")return".";if(t==="/")return"/";let e=t.charCodeAt(0)===47,n=t.charCodeAt(t.length-1)===47,r=t.split("/"),s=[];for(let o of r)o===""||o==="."||(o===".."?e||s.length>0&&s[s.length-1]!==".."?s.pop():s.push(".."):s.push(o));let i=s.join("/");return e&&(i=`/${i}`),n&&i.length>1&&!i.endsWith("/")&&(i+="/"),i||(e?"/":n?"./":".")}function B(...t){if(t.length===0)return".";let e=t.filter(n=>n!=="").join("/");return e===""?".":mr(e)}function Bt(t){if(t==="")return".";if(t==="/")return"/";let e=t.length;for(;e>1&&t.charCodeAt(e-1)===47;)e--;let n=t.slice(0,e),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}var Nt=(()=>{let t=new Array(256);for(let e=0;e<256;e++)t[e]=(e>>4).toString(16)+(e&15).toString(16);return t})();function ge(t){let e="";for(let n=0;n<20;n++)e+=Nt[t[n]];return e}function Ce(t,e){let n="";for(let r=0;r<20;r++)n+=Nt[t[e+r]];return n}function J(t){let e=new Uint8Array(20);for(let n=0;n<20;n++)e[n]=parseInt(t.slice(n*2,n*2+2),16);return e}function Ft(t){return t.length===4&&t.toLowerCase()===".git"}function Gt(t){if(t.length===0||t.includes("\0")||t.charCodeAt(0)===47||t.charCodeAt(t.length-1)===47)return!1;let e=t.split("/");for(let n of e)if(n.length===0||n==="."||n===".."||Ft(n))return!1;return!0}function _t(t,e){return e===t?!1:t==="/"?e.startsWith("/")&&e.length>1:e.startsWith(t+"/")}function Wt(t){if(t.length===0||t.charCodeAt(0)===47)return!1;let e=t.split("/");for(let n of e)if(n===".."||Ft(n))return!1;return!0}var pr=new TextEncoder;function ct(t){return typeof t=="string"?pr.encode(t):t}function yr(){if(typeof globalThis.Bun<"u")return()=>{let t=new Bun.CryptoHasher("sha1"),e={update(n){return t.update(ct(n)),e},hex:()=>Promise.resolve(t.digest("hex"))};return e};try{let t=_e(["node","crypto"].join(":"));if(typeof t.createHash=="function")return()=>{let e=t.createHash("sha1"),n={update(r){return e.update(ct(r)),n},hex:()=>Promise.resolve(e.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let t=[],e={update(n){return t.push(ct(n)),e},async hex(){let n=0;for(let o of t)n+=o.byteLength;let r=new Uint8Array(n),s=0;for(let o of t)r.set(o,s),s+=o.byteLength;let i=await crypto.subtle.digest("SHA-1",r);return ge(new Uint8Array(i))}};return e};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var zt=yr(),Ie=zt;async function ce(t){return zt().update(t).hex()}var gr=1145655875,br=2;async function We(t,e){let n=B(t.gitDir,"index"),r=await wr(e);await t.fs.writeFile(n,r)}function Vt(t){let e=[...t].sort(Kt);return{version:br,entries:e}}function fe(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}async function wr(t){let e=new TextEncoder,n=[...t.entries].sort(Kt),r=[],s=12;for(let d of n){let h=e.encode(d.path);r.push(h);let m=62+h.byteLength+1;s+=Math.ceil(m/8)*8}s+=20;let i=new ArrayBuffer(s),o=new Uint8Array(i),a=new DataView(i),c=0;a.setUint32(c,gr),c+=4,a.setUint32(c,t.version),c+=4,a.setUint32(c,n.length),c+=4;for(let d=0;d<n.length;d++){let h=n[d],m=r[d],y=c;a.setUint32(c,h.stat.ctimeSeconds),a.setUint32(c+4,h.stat.ctimeNanoseconds),a.setUint32(c+8,h.stat.mtimeSeconds),a.setUint32(c+12,h.stat.mtimeNanoseconds),a.setUint32(c+16,h.stat.dev),a.setUint32(c+20,h.stat.ino),a.setUint32(c+24,h.mode),a.setUint32(c+28,h.stat.uid),a.setUint32(c+32,h.stat.gid),a.setUint32(c+36,h.stat.size),c+=40;let p=J(h.hash);o.set(p,c),c+=20;let b=Math.min(m.byteLength,4095),R=(h.stage&3)<<12|b;a.setUint16(c,R),c+=2,o.set(m,c),c+=m.byteLength,o[c]=0,c+=1;let v=62+m.byteLength+1,C=Math.ceil(v/8)*8;c=y+C}let f=o.subarray(0,c),l=await ce(f),u=J(l);return o.set(u,c),o}function Kt(t,e){return t.path<e.path?-1:t.path>e.path?1:t.stage-e.stage}var xr=new Set(["tree","commit","tag"]),ze=class{map=new Map;currentBytes=0;maxBytes;constructor(e=16*1024*1024){this.maxBytes=e}get(e){return this.map.get(e)}set(e,n){if(!xr.has(n.type))return;let r=n.content.byteLength;if(!(r>this.maxBytes/2)&&!this.map.has(e)){for(;this.currentBytes+r>this.maxBytes&&this.map.size>0;){let s=this.map.keys().next().value;this.currentBytes-=this.map.get(s).content.byteLength,this.map.delete(s)}this.map.set(e,n),this.currentBytes+=r}}get size(){return this.map.size}get bytes(){return this.currentBytes}clear(){this.map.clear(),this.currentBytes=0}};var Yt=new Uint32Array(256);for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;Yt[t]=e}function qt(t){let e=4294967295;for(let n=0;n<t.byteLength;n++)e=Yt[(e^t[n])&255]^e>>>8;return(e^4294967295)>>>0}var Q=Uint8Array,Ee=Uint16Array,Ir=Int32Array,Xt=new Q([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Jt=new Q([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Er=new Q([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Zt=(t,e)=>{let n=new Ee(31);for(let s=0;s<31;++s)n[s]=e+=1<<t[s-1];let r=new Ir(n[30]);for(let s=1;s<30;++s)for(let i=n[s];i<n[s+1];++i)r[i]=i-n[s]<<5|s;return{b:n,r}},{b:Qt}=Zt(Xt,2);Qt[28]=258;var{b:Or}=Zt(Jt,0),ut=new Ee(32768);for(let t=0;t<32768;++t){let e=(t&43690)>>1|(t&21845)<<1;e=(e&52428)>>2|(e&13107)<<2,e=(e&61680)>>4|(e&3855)<<4,ut[t]=((e&65280)>>8|(e&255)<<8)>>1}var Ae=(t,e,n)=>{let r=t.length,s=0,i=new Ee(e);for(;s<r;++s)t[s]&&++i[t[s]-1];let o=new Ee(e);for(s=1;s<e;++s)o[s]=o[s-1]+i[s-1]<<1;let a;if(n){a=new Ee(1<<e);let c=15-e;for(s=0;s<r;++s)if(t[s]){let f=s<<4|t[s],l=e-t[s],u=o[t[s]-1]++<<l;for(let d=u|(1<<l)-1;u<=d;++u)a[ut[u]>>c]=f}}else for(a=new Ee(r),s=0;s<r;++s)t[s]&&(a[s]=ut[o[t[s]-1]++]>>15-t[s]);return a},$e=new Q(288);for(let t=0;t<144;++t)$e[t]=8;for(let t=144;t<256;++t)$e[t]=9;for(let t=256;t<280;++t)$e[t]=7;for(let t=280;t<288;++t)$e[t]=8;var en=new Q(32);for(let t=0;t<32;++t)en[t]=5;var Rr=Ae($e,9,1),Pr=Ae(en,5,1),ft=t=>{let e=t[0];for(let n=1;n<t.length;++n)t[n]>e&&(e=t[n]);return e},Z=(t,e,n)=>{let r=e/8|0;return(t[r]|t[r+1]<<8)>>(e&7)&n},lt=(t,e)=>{let n=e/8|0;return(t[n]|t[n+1]<<8|t[n+2]<<16)>>(e&7)},tn=t=>(t+7)/8|0,kr=(t,e,n)=>((e==null||e<0)&&(e=0),(n==null||n>t.length)&&(n=t.length),new Q(t.subarray(e,n))),ee=(t,e)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(e||n[t]||"unknown inflate error")},nn=(t,e,n,r)=>{let s=t.length,i=r?r.length:0;if(!s||e.f&&!e.l)return n||new Q(0);let o=!n,a=o||e.i!=2,c=e.i;o&&(n=new Q(s*3));let f=R=>{let v=n.length;if(R>v){let C=new Q(Math.max(v*2,R));C.set(n),n=C}},l=e.f||0,u=e.p||0,d=e.b||0,h=e.l,m=e.d,y=e.m,p=e.n,b=s*8;do{if(!h){l=Z(t,u,1);let O=Z(t,u+1,3);if(u+=3,O)if(O==1)h=Rr,m=Pr,y=9,p=5;else if(O==2){let w=Z(t,u,31)+257,E=Z(t,u+10,15)+4,T=w+Z(t,u+5,31)+1;u+=14;let I=new Q(T),P=new Q(19);for(let g=0;g<E;++g)P[Er[g]]=Z(t,u+g*3,7);u+=E*3;let S=ft(P),$=(1<<S)-1,D=Ae(P,S,1);for(let g=0;g<T;){let k=D[Z(t,u,$)];u+=k&15;let M=k>>4;if(M<16)I[g++]=M;else{let L=0,j=0;for(M==16?(j=3+Z(t,u,3),u+=2,L=I[g-1]):M==17?(j=3+Z(t,u,7),u+=3):M==18&&(j=11+Z(t,u,127),u+=7);j--;)I[g++]=L}}let ae=I.subarray(0,w),x=I.subarray(w);y=ft(ae),p=ft(x),h=Ae(ae,y,1),m=Ae(x,p,1)}else ee(1);else{let w=tn(u)+4,E=t[w-4]|t[w-3]<<8,T=w+E;if(T>s){c&&ee(0);break}a&&f(d+E),n.set(t.subarray(w,T),d),e.b=d+=E,e.p=u=T*8,e.f=l;continue}if(u>b){c&&ee(0);break}}a&&f(d+131072);let R=(1<<y)-1,v=(1<<p)-1,C=u;for(;;C=u){let O=h[lt(t,u)&R],w=O>>4;if(u+=O&15,u>b){c&&ee(0);break}if(O||ee(2),w<256)n[d++]=w;else if(w==256){C=u,h=null;break}else{let E=w-254;if(w>264){let $=w-257,D=Xt[$];E=Z(t,u,(1<<D)-1)+Qt[$],u+=D}let T=m[lt(t,u)&v],I=T>>4;T||ee(3),u+=T&15;let P=Or[I];if(I>3){let $=Jt[I];P+=lt(t,u)&(1<<$)-1,u+=$}if(u>b){c&&ee(0);break}a&&f(d+131072);let S=d+E;if(d<P){let $=i-P,D=Math.min(P,S);for($+d<0&&ee(3);d<D;++d)n[d]=r[$+d]}for(;d<S;++d)n[d]=n[d-P]}}e.l=h,e.p=C,e.b=d,e.f=l,h&&(l=1,e.m=y,e.d=m,e.n=p)}while(!l);return d!=n.length&&o?kr(n,0,d):n.subarray(0,d)},rn=t=>(((t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31)&&ee(0,"invalid zlib data"),t[1]&32&&ee(0,"zlib dictionaries are not supported"),2);function sn(t){let e=rn(t);return nn(t.subarray(e,-4),{i:2})}function ht(t){let e=rn(t),n={i:2},r=nn(t.subarray(e),n),s=tn(n.p);return{result:r,bytesConsumed:e+s+4}}async function Sr(){let t;if(!(typeof document<"u"))try{t=_e(["node","zlib"].join(":"))}catch{try{t=await import(["node","zlib"].join(":"))}catch{}}if(t&&typeof t.deflateSync=="function"&&typeof t.inflateSync=="function"){let r=null;try{let s=t.inflateSync(t.deflateSync(Buffer.from("x")),{info:!0});s?.engine&&typeof s.engine.bytesWritten=="number"&&(r=i=>{let o=t.inflateSync(i,{info:!0});return{result:new Uint8Array(o.buffer),bytesConsumed:o.engine.bytesWritten}})}catch{}return{deflateSync:s=>new Uint8Array(t.deflateSync(s)),inflateSync:s=>new Uint8Array(t.inflateSync(s)),inflateWithConsumed:r??ht}}let n;return typeof globalThis.CompressionStream=="function"?n=async r=>{let s=new CompressionStream("deflate"),i=s.writable.getWriter();return i.write(r),i.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())}:n=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:n,inflateSync:sn,inflateWithConsumed:ht}}var Tr=null;function dt(){return Tr??=Sr()}async function Ve(t){return await(await dt()).deflateSync(t)}async function Oe(t){return await(await dt()).inflateSync(t)}async function on(t,e){let n=await dt(),{result:r,bytesConsumed:s}=n.inflateWithConsumed(t);if(r.byteLength!==e)throw new Error(`Inflate size mismatch: got ${r.byteLength}, expected ${e}`);return{result:r,bytesConsumed:s}}var pt=1346454347,fn=2,ln=1,un=2,hn=3,dn=4,Ke=6,yt=7,jr={[ln]:"commit",[un]:"tree",[hn]:"blob",[dn]:"tag"},vr={commit:ln,tree:un,blob:hn,tag:dn};async function Ye(t,e){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),r=n.getUint32(0);if(r!==pt)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${pt.toString(16)})`);let s=n.getUint32(4);if(s!==fn)throw new Error(`Unsupported pack version: ${s}`);if(t.byteLength>=32){let f=Ce(t,t.byteLength-20),l=Ie();l.update(t.subarray(0,t.byteLength-20));let u=await l.hex();if(u!==f)throw new Error(`pack checksum mismatch: expected ${f}, computed ${u}`)}let i=n.getUint32(8),o=[],a=12;for(let f=0;f<i;f++){let l=await Cr(t,a);o.push(l),a=l.nextOffset}return(await Ar(o,e)).map((f,l)=>({...f,offset:o[l].headerOffset,nextOffset:o[l].nextOffset}))}async function Cr(t,e){let n=e,r=t[e++],s=r>>4&7,i=r&15,o=4;for(;r&128;)r=t[e++],i|=(r&127)<<o,o+=7;let a,c;if(s===Ke){let u=t[e++];for(a=u&127;u&128;)a+=1,u=t[e++],a=(a<<7)+(u&127);a=n-a}else s===yt&&(c=Ce(t,e),e+=20);let{result:f,bytesConsumed:l}=await on(t.subarray(e),i);return{headerOffset:n,typeNum:s,inflated:f,baseOffset:a,baseHash:c,nextOffset:e+l}}var an=50;async function Ar(t,e){let n=new Map;for(let i=0;i<t.length;i++)n.set(t[i].headerOffset,i);let r=new Array(t.length).fill(null);async function s(i,o=0){if(o>an)throw new Error(`delta chain depth ${o} exceeds limit of ${an}`);let a=r[i];if(a)return a;let c=t[i];if(c.typeNum!==Ke&&c.typeNum!==yt){let h=jr[c.typeNum];if(!h)throw new Error(`Unknown object type: ${c.typeNum}`);let m={type:h,content:c.inflated,hash:await mt(h,c.inflated)};return r[i]=m,m}if(c.typeNum===Ke){let h=n.get(c.baseOffset);if(h===void 0)throw new Error(`OFS_DELTA base not found at offset ${c.baseOffset}`);let m=await s(h,o+1),y=Le(m.content,c.inflated),p={type:m.type,content:y,hash:await mt(m.type,y)};return r[i]=p,p}let f=await $r(t,r,c.baseHash,s),l;if(f!==void 0)l=await s(f,o+1);else if(e){let h=await e(c.baseHash);h&&(l=h)}if(!l)throw new Error(`REF_DELTA base not found for hash ${c.baseHash}`);let u=Le(l.content,c.inflated),d={type:l.type,content:u,hash:await mt(l.type,u)};return r[i]=d,d}for(let i=0;i<t.length;i++)await s(i);return r}async function $r(t,e,n,r){for(let s=0;s<e.length;s++)if(e[s]?.hash===n)return s;for(let s=0;s<t.length;s++){let i=t[s];if(i.typeNum!==Ke&&i.typeNum!==yt&&(await r(s)).hash===n)return s}}function Le(t,e){let n=0,{value:r,newPos:s}=cn(e,n);if(n=s,r!==t.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${t.byteLength}`);let{value:i,newPos:o}=cn(e,n);n=o;let a=new Uint8Array(i),c=0;for(;n<e.byteLength;){let f=e[n++];if(f&128){let l=0,u=0;f&1&&(l=e[n++]),f&2&&(l|=e[n++]<<8),f&4&&(l|=e[n++]<<16),f&8&&(l|=e[n++]<<24),f&16&&(u=e[n++]),f&32&&(u|=e[n++]<<8),f&64&&(u|=e[n++]<<16),u===0&&(u=65536),a.set(t.subarray(l,l+u),c),c+=u}else if(f>0)a.set(e.subarray(n,n+f),c),c+=f,n+=f;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==i)throw new Error(`Delta produced ${c} bytes, expected ${i}`);return a}async function mn(t){let e=[],n=new Uint8Array(12),r=new DataView(n.buffer);r.setUint32(0,pt),r.setUint32(4,fn),r.setUint32(8,t.length),e.push(n);for(let s of t){let i=vr[s.type],o=await Ve(s.content);e.push(Mr(i,s.content.byteLength)),e.push(o)}return Lr(e)}async function Lr(t){let e=0;for(let o of t)e+=o.byteLength;e+=20;let n=new Uint8Array(e),r=0;for(let o of t)n.set(o,r),r+=o.byteLength;let s=Ie();s.update(n.subarray(0,r));let i=await s.hex();return n.set(J(i),r),n}function Mr(t,e){let n=[],r=t<<4|e&15;for(e>>=4;e>0;)n.push(r|128),r=e&127,e>>=7;return n.push(r),new Uint8Array(n)}function cn(t,e){let n=0,r=0,s;do s=t[e++],n|=(s&127)<<r,r+=7;while(s&128);return{value:n,newPos:e}}var Dr=new TextEncoder;async function mt(t,e){let n=Dr.encode(`${t} ${e.byteLength}\0`),r=Ie();return r.update(n),r.update(e),r.hex()}var pn=4285812579,yn=2,le=class{fanout;hashes;offsets;largeOffsets;count;constructor(e){let n=new DataView(e.buffer,e.byteOffset,e.byteLength);if(n.getUint32(0)!==pn)throw new Error("Invalid pack index: bad magic");if(n.getUint32(4)!==yn)throw new Error(`Unsupported pack index version: ${n.getUint32(4)}`);this.fanout=new Uint32Array(256);let r=8;for(let i=0;i<256;i++)this.fanout[i]=n.getUint32(r),r+=4;this.count=this.fanout[255],this.hashes=new Uint8Array(e.buffer,e.byteOffset+r,this.count*20),r+=this.count*20,r+=this.count*4,this.offsets=new Uint32Array(this.count);for(let i=0;i<this.count;i++)this.offsets[i]=n.getUint32(r),r+=4;let s=!1;for(let i=0;i<this.count;i++)if(this.offsets[i]&2147483648){s=!0;break}this.largeOffsets=s?new DataView(e.buffer,e.byteOffset+r):null}lookup(e){let n=J(e),r=n[0],s=r===0?0:this.fanout[r-1],i=this.fanout[r],o=s,a=i;for(;o<a;){let c=o+a>>>1,f=this.compareAt(c,n);if(f<0)o=c+1;else if(f>0)a=c;else return this.getOffset(c)}return null}has(e){return this.lookup(e)!==null}get objectCount(){return this.count}allHashes(){let e=[];for(let n=0;n<this.count;n++)e.push(this.hashAtSlot(n));return e}findByPrefix(e){if(e.length<2)return[];let n=parseInt(e.slice(0,2),16),r=n===0?0:this.fanout[n-1],s=this.fanout[n],i=J(e.padEnd(40,"0")),o=e.length,a=[];for(let c=r;c<s;c++){let f=c*20,l=!0;for(let u=0;u<o;u++){let d=u%2===0?this.hashes[f+(u>>1)]>>4&15:this.hashes[f+(u>>1)]&15,h=u%2===0?i[u>>1]>>4&15:i[u>>1]&15;if(d!==h){l=!1;break}}l&&a.push(this.hashAtSlot(c))}return a}hashAtSlot(e){let n="",r=e*20;for(let s=0;s<20;s++){let i=this.hashes[r+s];n+=(i>>4).toString(16)+(i&15).toString(16)}return n}compareAt(e,n){let r=e*20;for(let s=0;s<20;s++){let i=this.hashes[r+s],o=n[s];if(i<o)return-1;if(i>o)return 1}return 0}getOffset(e){let n=this.offsets[e];if(n&2147483648){let r=n&2147483647;return Number(this.largeOffsets.getBigUint64(r*8))}return n}};async function Ur(t,e){let n=[...t].sort((h,m)=>h.hash<m.hash?-1:h.hash>m.hash?1:0),r=n.length,s=[];for(let h of n)h.offset>=2147483648&&s.push(BigInt(h.offset));let i=8+256*4+r*20+r*4+r*4+s.length*8+20+20,o=new Uint8Array(i),a=new DataView(o.buffer),c=0;a.setUint32(c,pn),c+=4,a.setUint32(c,yn),c+=4;let f=new Uint32Array(256);for(let h of n){let m=parseInt(h.hash.slice(0,2),16);for(let y=m;y<256;y++)f[y]++}for(let h=0;h<256;h++)a.setUint32(c,f[h]),c+=4;for(let h of n)o.set(J(h.hash),c),c+=20;for(let h of n)a.setUint32(c,h.crc),c+=4;let l=0;for(let h of n)h.offset>=2147483648?a.setUint32(c,2147483648|l++):a.setUint32(c,h.offset),c+=4;for(let h of s)a.setBigUint64(c,h),c+=8;o.set(e,c),c+=20;let u=Ie();u.update(o.subarray(0,c));let d=await u.hex();return o.set(J(d),c),o}async function gn(t){let n=(await Ye(t)).map(s=>({hash:s.hash,offset:s.offset,crc:qt(t.subarray(s.offset,s.nextOffset))})),r=t.subarray(t.byteLength-20);return Ur(n,r)}var Hr=6,Br=7,Nr={1:"commit",2:"tree",3:"blob",4:"tag"},bn=50,Me=class{constructor(e,n){this.data=e;this.index=n instanceof le?n:new le(n)}index;hasObject(e){return this.index.has(e)}findByPrefix(e){return this.index.findByPrefix(e)}async readObject(e){let n=this.index.lookup(e);return n===null?null:this.readAt(n,0)}get objectCount(){return this.index.objectCount}async readAt(e,n){if(n>bn)throw new Error(`delta chain depth ${n} exceeds limit of ${bn}`);let r=this.data,s=e,i=r[s++],o=i>>4&7,a=i&15,c=4;for(;i&128;)i=r[s++],a|=(i&127)<<c,c+=7;if(o===Hr){let u=r[s++],d=u&127;for(;u&128;)d+=1,u=r[s++],d=(d<<7)+(u&127);let h=await Oe(r.subarray(s)),m=await this.readAt(e-d,n+1);return{type:m.type,content:Le(m.content,h)}}if(o===Br){let u=Ce(r,s);s+=20;let d=await Oe(r.subarray(s)),h=this.index.lookup(u);if(h===null)throw new Error(`REF_DELTA base ${u} not found in pack`);let m=await this.readAt(h,n+1);return{type:m.type,content:Le(m.content,d)}}let f=Nr[o];if(!f)throw new Error(`Unknown pack object type: ${o}`);let l=await Oe(r.subarray(s));if(l.byteLength!==a)throw new Error(`Pack inflate size mismatch at offset ${e}: got ${l.byteLength}, expected ${a}`);return{type:f,content:l}}};var Fr=new TextEncoder,Gr=new TextDecoder;function wt(t,e){let n=Fr.encode(`${t} ${e.byteLength}\0`),r=new Uint8Array(n.byteLength+e.byteLength);return r.set(n),r.set(e,n.byteLength),r}function _r(t,e){let n=e.indexOf(0);if(n===-1)throw new Error(`Corrupt object ${t}: no null byte in header`);let r=Gr.decode(e.subarray(0,n)),s=r.indexOf(" ");if(s===-1)throw new Error(`Corrupt object ${t}: malformed header "${r}"`);let i=r.slice(0,s),o=parseInt(r.slice(s+1),10),a=e.subarray(n+1);if(a.byteLength!==o)throw new Error(`Corrupt object ${t}: expected ${o} bytes, got ${a.byteLength}`);return{type:i,content:a}}function gt(t,e){return B(t,"objects",e.slice(0,2),e.slice(2))}var bt=class{constructor(e,n,r){this.fs=e;this.gitDir=n;this.cache=new ze(r),this.packDir=B(n,"objects","pack")}packs=[];loadedPackNames=new Set;discoverPromise=null;cache;packDir;async write(e,n){let r=wt(e,n),s=await ce(r),i=gt(this.gitDir,s);if(await this.fs.exists(i))return s;let o=B(this.gitDir,"objects",s.slice(0,2));return await this.fs.mkdir(o,{recursive:!0}),await this.fs.writeFile(i,await Ve(r)),s}async read(e){let n=this.cache.get(e);if(n)return n;let r=gt(this.gitDir,e);if(await this.fs.exists(r)){let s=await this.fs.readFileBuffer(r),i=await Oe(s),o=await ce(i);if(o!==e)throw new Error(`corrupt loose object ${e}: SHA-1 mismatch (computed ${o})`);let a=_r(e,i);return this.cache.set(e,a),a}await this.discover();for(let s of this.packs){if(!s.index.has(e))continue;let o=await(await this.ensureReader(s)).readObject(e);if(o)return this.cache.set(e,o),o}throw new Error(`object ${e} not found`)}async exists(e){if(await this.fs.exists(gt(this.gitDir,e)))return!0;await this.discover();for(let n of this.packs)if(n.index.has(e))return!0;return!1}async ingestPack(e){if(e.byteLength<32)return 0;let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==1346454347)throw new Error(`invalid pack signature: 0x${r.toString(16)} (expected 0x5041434b)`);let s=n.getUint32(4);if(s!==2)throw new Error(`unsupported pack version: ${s}`);let i=n.getUint32(8);if(i===0)return 0;let o=e.subarray(e.byteLength-20),a=ge(o),c=await ce(e.subarray(0,e.byteLength-20));if(c!==a)throw new Error(`pack checksum mismatch: expected ${a}, computed ${c}`);await this.fs.mkdir(this.packDir,{recursive:!0});let f=`pack-${a}`,l=B(this.packDir,`${f}.pack`);await this.fs.writeFile(l,e);let u=await gn(e),d=B(this.packDir,`${f}.idx`);await this.fs.writeFile(d,u),this.loadedPackNames.add(f);let h=new le(u);return this.packs.push({name:f,index:h,reader:new Me(e,h)}),i}async ingestPackStream(e){let n=[];for await(let s of e)n.push(s);if(n.length===0)return 0;let r=await mn(n);return this.ingestPack(r)}invalidatePacks(){this.packs=[],this.loadedPackNames.clear(),this.discoverPromise=null,this.cache.clear()}async findByPrefix(e){if(e.length<4)return[];let n=e.slice(0,2),r=e.slice(2),s=B(this.gitDir,"objects",n),i=[];if(await this.fs.exists(s)){let o=await this.fs.readdir(s);for(let a of o)a.startsWith(r)&&i.push(`${n}${a}`)}await this.discover();for(let o of this.packs)for(let a of o.index.findByPrefix(e))i.includes(a)||i.push(a);return i}async ensureReader(e){if(e.reader)return e.reader;let n=B(this.packDir,`${e.name}.pack`),r=await this.fs.readFileBuffer(n);return e.reader=new Me(r,e.index),e.reader}discover(){return this.discoverPromise||(this.discoverPromise=this.doDiscover()),this.discoverPromise}async doDiscover(){if(!await this.fs.exists(this.packDir))return;let e=await this.fs.readdir(this.packDir);for(let n of e){if(!n.endsWith(".idx"))continue;let r=n.slice(0,-4);if(this.loadedPackNames.has(r))continue;let s=B(this.packDir,`${r}.pack`);if(!await this.fs.exists(s))continue;let i=await this.fs.readFileBuffer(B(this.packDir,n));this.loadedPackNames.add(r),this.packs.push({name:r,index:new le(i),reader:null})}}};function De(t){let e=t.indexOf("<"),n=t.indexOf(">");if(e===-1||n===-1)throw new Error(`Malformed identity line: "${t}"`);let r=t.slice(0,e).trimEnd(),s=t.slice(e+1,n),i=t.slice(n+2),[o="0",a="+0000"]=i.split(" "),c=parseInt(o,10);return{name:r,email:s,timestamp:c,timezone:a}}function qe(t){return`${t.name} <${t.email}> ${t.timestamp} ${t.timezone}`}var Wr=new TextEncoder,zr=new TextDecoder;function wn(t){let e=zr.decode(t),n=e.indexOf(`
1
+ var Me=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var kt=(()=>{let t=new Array(256);for(let e=0;e<256;e++)t[e]=(e>>4).toString(16)+(e&15).toString(16);return t})();function ke(t){let e="";for(let n=0;n<20;n++)e+=kt[t[n]];return e}function Je(t,e){let n="";for(let r=0;r<20;r++)n+=kt[t[e+r]];return n}function ye(t){let e=new Uint8Array(20);for(let n=0;n<20;n++)e[n]=parseInt(t.slice(n*2,n*2+2),16);return e}var zn=new TextEncoder;function Qe(t){return typeof t=="string"?zn.encode(t):t}function Vn(){if(typeof globalThis.Bun<"u")return()=>{let t=new Bun.CryptoHasher("sha1"),e={update(n){return t.update(Qe(n)),e},hex:()=>Promise.resolve(t.digest("hex"))};return e};try{let t=Me(["node","crypto"].join(":"));if(typeof t.createHash=="function")return()=>{let e=t.createHash("sha1"),n={update(r){return e.update(Qe(r)),n},hex:()=>Promise.resolve(e.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let t=[],e={update(n){return t.push(Qe(n)),e},async hex(){let n=0;for(let o of t)n+=o.byteLength;let r=new Uint8Array(n),s=0;for(let o of t)r.set(o,s),s+=o.byteLength;let i=await crypto.subtle.digest("SHA-1",r);return ke(new Uint8Array(i))}};return e};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var Tt=Vn(),et=Tt;async function De(t){return Tt().update(t).hex()}var Z=Uint8Array,ge=Uint16Array,Kn=Int32Array,St=new Z([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Ct=new Z([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Yn=new Z([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),vt=(t,e)=>{let n=new ge(31);for(let s=0;s<31;++s)n[s]=e+=1<<t[s-1];let r=new Kn(n[30]);for(let s=1;s<30;++s)for(let i=n[s];i<n[s+1];++i)r[i]=i-n[s]<<5|s;return{b:n,r}},{b:jt}=vt(St,2);jt[28]=258;var{b:qn}=vt(Ct,0),rt=new ge(32768);for(let t=0;t<32768;++t){let e=(t&43690)>>1|(t&21845)<<1;e=(e&52428)>>2|(e&13107)<<2,e=(e&61680)>>4|(e&3855)<<4,rt[t]=((e&65280)>>8|(e&255)<<8)>>1}var Te=(t,e,n)=>{let r=t.length,s=0,i=new ge(e);for(;s<r;++s)t[s]&&++i[t[s]-1];let o=new ge(e);for(s=1;s<e;++s)o[s]=o[s-1]+i[s-1]<<1;let a;if(n){a=new ge(1<<e);let c=15-e;for(s=0;s<r;++s)if(t[s]){let l=s<<4|t[s],f=e-t[s],u=o[t[s]-1]++<<f;for(let d=u|(1<<f)-1;u<=d;++u)a[rt[u]>>c]=l}}else for(a=new ge(r),s=0;s<r;++s)t[s]&&(a[s]=rt[o[t[s]-1]++]>>15-t[s]);return a},Se=new Z(288);for(let t=0;t<144;++t)Se[t]=8;for(let t=144;t<256;++t)Se[t]=9;for(let t=256;t<280;++t)Se[t]=7;for(let t=280;t<288;++t)Se[t]=8;var At=new Z(32);for(let t=0;t<32;++t)At[t]=5;var Xn=Te(Se,9,1),Zn=Te(At,5,1),tt=t=>{let e=t[0];for(let n=1;n<t.length;++n)t[n]>e&&(e=t[n]);return e},X=(t,e,n)=>{let r=e/8|0;return(t[r]|t[r+1]<<8)>>(e&7)&n},nt=(t,e)=>{let n=e/8|0;return(t[n]|t[n+1]<<8|t[n+2]<<16)>>(e&7)},$t=t=>(t+7)/8|0,Jn=(t,e,n)=>((e==null||e<0)&&(e=0),(n==null||n>t.length)&&(n=t.length),new Z(t.subarray(e,n))),Q=(t,e)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(e||n[t]||"unknown inflate error")},Lt=(t,e,n,r)=>{let s=t.length,i=r?r.length:0;if(!s||e.f&&!e.l)return n||new Z(0);let o=!n,a=o||e.i!=2,c=e.i;o&&(n=new Z(s*3));let l=R=>{let v=n.length;if(R>v){let j=new Z(Math.max(v*2,R));j.set(n),n=j}},f=e.f||0,u=e.p||0,d=e.b||0,h=e.l,m=e.d,y=e.m,p=e.n,b=s*8;do{if(!h){f=X(t,u,1);let O=X(t,u+1,3);if(u+=3,O)if(O==1)h=Xn,m=Zn,y=9,p=5;else if(O==2){let w=X(t,u,31)+257,x=X(t,u+10,15)+4,S=w+X(t,u+5,31)+1;u+=14;let E=new Z(S),P=new Z(19);for(let g=0;g<x;++g)P[Yn[g]]=X(t,u+g*3,7);u+=x*3;let T=tt(P),$=(1<<T)-1,D=Te(P,T,1);for(let g=0;g<S;){let k=D[X(t,u,$)];u+=k&15;let M=k>>4;if(M<16)E[g++]=M;else{let L=0,C=0;for(M==16?(C=3+X(t,u,3),u+=2,L=E[g-1]):M==17?(C=3+X(t,u,7),u+=3):M==18&&(C=11+X(t,u,127),u+=7);C--;)E[g++]=L}}let oe=E.subarray(0,w),I=E.subarray(w);y=tt(oe),p=tt(I),h=Te(oe,y,1),m=Te(I,p,1)}else Q(1);else{let w=$t(u)+4,x=t[w-4]|t[w-3]<<8,S=w+x;if(S>s){c&&Q(0);break}a&&l(d+x),n.set(t.subarray(w,S),d),e.b=d+=x,e.p=u=S*8,e.f=f;continue}if(u>b){c&&Q(0);break}}a&&l(d+131072);let R=(1<<y)-1,v=(1<<p)-1,j=u;for(;;j=u){let O=h[nt(t,u)&R],w=O>>4;if(u+=O&15,u>b){c&&Q(0);break}if(O||Q(2),w<256)n[d++]=w;else if(w==256){j=u,h=null;break}else{let x=w-254;if(w>264){let $=w-257,D=St[$];x=X(t,u,(1<<D)-1)+jt[$],u+=D}let S=m[nt(t,u)&v],E=S>>4;S||Q(3),u+=S&15;let P=qn[E];if(E>3){let $=Ct[E];P+=nt(t,u)&(1<<$)-1,u+=$}if(u>b){c&&Q(0);break}a&&l(d+131072);let T=d+x;if(d<P){let $=i-P,D=Math.min(P,T);for($+d<0&&Q(3);d<D;++d)n[d]=r[$+d]}for(;d<T;++d)n[d]=n[d-P]}}e.l=h,e.p=j,e.b=d,e.f=f,h&&(f=1,e.m=y,e.d=m,e.n=p)}while(!f);return d!=n.length&&o?Jn(n,0,d):n.subarray(0,d)},Mt=t=>(((t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31)&&Q(0,"invalid zlib data"),t[1]&32&&Q(0,"zlib dictionaries are not supported"),2);function Dt(t){let e=Mt(t);return Lt(t.subarray(e,-4),{i:2})}function st(t){let e=Mt(t),n={i:2},r=Lt(t.subarray(e),n),s=$t(n.p);return{result:r,bytesConsumed:e+s+4}}async function Qn(){let t;if(!(typeof document<"u"))try{t=Me(["node","zlib"].join(":"))}catch{try{t=await import(["node","zlib"].join(":"))}catch{}}if(t&&typeof t.deflateSync=="function"&&typeof t.inflateSync=="function"){let r=null;try{let s=t.inflateSync(t.deflateSync(Buffer.from("x")),{info:!0});s?.engine&&typeof s.engine.bytesWritten=="number"&&(r=i=>{let o=t.inflateSync(i,{info:!0});return{result:new Uint8Array(o.buffer),bytesConsumed:o.engine.bytesWritten}})}catch{}return{deflateSync:s=>new Uint8Array(t.deflateSync(s)),inflateSync:s=>new Uint8Array(t.inflateSync(s)),inflateWithConsumed:r??st}}let n;return typeof globalThis.CompressionStream=="function"?n=async r=>{let s=new CompressionStream("deflate"),i=s.writable.getWriter();return i.write(r),i.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())}:n=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:n,inflateSync:Dt,inflateWithConsumed:st}}var er=null;function tr(){return er??=Qn()}async function Ht(t,e){let n=await tr(),{result:r,bytesConsumed:s}=n.inflateWithConsumed(t);if(r.byteLength!==e)throw new Error(`Inflate size mismatch: got ${r.byteLength}, expected ${e}`);return{result:r,bytesConsumed:s}}var Ut=1346454347,nr=2,rr=1,sr=2,ir=3,or=4,He=6,ot=7,ar={[rr]:"commit",[sr]:"tree",[ir]:"blob",[or]:"tag"};async function Gt(t,e){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),r=n.getUint32(0);if(r!==Ut)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${Ut.toString(16)})`);let s=n.getUint32(4);if(s!==nr)throw new Error(`Unsupported pack version: ${s}`);if(t.byteLength>=32){let l=Je(t,t.byteLength-20),f=et();f.update(t.subarray(0,t.byteLength-20));let u=await f.hex();if(u!==l)throw new Error(`pack checksum mismatch: expected ${l}, computed ${u}`)}let i=n.getUint32(8),o=[],a=12;for(let l=0;l<i;l++){let f=await cr(t,a);o.push(f),a=f.nextOffset}return(await lr(o,e)).map((l,f)=>({...l,offset:o[f].headerOffset,nextOffset:o[f].nextOffset}))}async function cr(t,e){let n=e,r=t[e++],s=r>>4&7,i=r&15,o=4;for(;r&128;)r=t[e++],i|=(r&127)<<o,o+=7;let a,c;if(s===He){let u=t[e++];for(a=u&127;u&128;)a+=1,u=t[e++],a=(a<<7)+(u&127);a=n-a}else s===ot&&(c=Je(t,e),e+=20);let{result:l,bytesConsumed:f}=await Ht(t.subarray(e),i);return{headerOffset:n,typeNum:s,inflated:l,baseOffset:a,baseHash:c,nextOffset:e+f}}var Nt=50;async function lr(t,e){let n=new Map;for(let i=0;i<t.length;i++)n.set(t[i].headerOffset,i);let r=new Array(t.length).fill(null);async function s(i,o=0){if(o>Nt)throw new Error(`delta chain depth ${o} exceeds limit of ${Nt}`);let a=r[i];if(a)return a;let c=t[i];if(c.typeNum!==He&&c.typeNum!==ot){let h=ar[c.typeNum];if(!h)throw new Error(`Unknown object type: ${c.typeNum}`);let m={type:h,content:c.inflated,hash:await it(h,c.inflated)};return r[i]=m,m}if(c.typeNum===He){let h=n.get(c.baseOffset);if(h===void 0)throw new Error(`OFS_DELTA base not found at offset ${c.baseOffset}`);let m=await s(h,o+1),y=Bt(m.content,c.inflated),p={type:m.type,content:y,hash:await it(m.type,y)};return r[i]=p,p}let l=await fr(t,r,c.baseHash,s),f;if(l!==void 0)f=await s(l,o+1);else if(e){let h=await e(c.baseHash);h&&(f=h)}if(!f)throw new Error(`REF_DELTA base not found for hash ${c.baseHash}`);let u=Bt(f.content,c.inflated),d={type:f.type,content:u,hash:await it(f.type,u)};return r[i]=d,d}for(let i=0;i<t.length;i++)await s(i);return r}async function fr(t,e,n,r){for(let s=0;s<e.length;s++)if(e[s]?.hash===n)return s;for(let s=0;s<t.length;s++){let i=t[s];if(i.typeNum!==He&&i.typeNum!==ot&&(await r(s)).hash===n)return s}}function Bt(t,e){let n=0,{value:r,newPos:s}=Ft(e,n);if(n=s,r!==t.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${t.byteLength}`);let{value:i,newPos:o}=Ft(e,n);n=o;let a=new Uint8Array(i),c=0;for(;n<e.byteLength;){let l=e[n++];if(l&128){let f=0,u=0;l&1&&(f=e[n++]),l&2&&(f|=e[n++]<<8),l&4&&(f|=e[n++]<<16),l&8&&(f|=e[n++]<<24),l&16&&(u=e[n++]),l&32&&(u|=e[n++]<<8),l&64&&(u|=e[n++]<<16),u===0&&(u=65536),a.set(t.subarray(f,f+u),c),c+=u}else if(l>0)a.set(e.subarray(n,n+l),c),c+=l,n+=l;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==i)throw new Error(`Delta produced ${c} bytes, expected ${i}`);return a}function Ft(t,e){let n=0,r=0,s;do s=t[e++],n|=(s&127)<<r,r+=7;while(s&128);return{value:n,newPos:e}}var ur=new TextEncoder;async function it(t,e){let n=ur.encode(`${t} ${e.byteLength}\0`),r=et();return r.update(n),r.update(e),r.hex()}function hr(t){if(t==="")return".";if(t==="/")return"/";let e=t.charCodeAt(0)===47,n=t.charCodeAt(t.length-1)===47,r=t.split("/"),s=[];for(let o of r)o===""||o==="."||(o===".."?e||s.length>0&&s[s.length-1]!==".."?s.pop():s.push(".."):s.push(o));let i=s.join("/");return e&&(i=`/${i}`),n&&i.length>1&&!i.endsWith("/")&&(i+="/"),i||(e?"/":n?"./":".")}function be(...t){if(t.length===0)return".";let e=t.filter(n=>n!=="").join("/");return e===""?".":hr(e)}function _t(t){if(t==="")return".";if(t==="/")return"/";let e=t.length;for(;e>1&&t.charCodeAt(e-1)===47;)e--;let n=t.slice(0,e),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}var dr=new TextEncoder,Ei=new TextDecoder;function Wt(t,e){let n=dr.encode(`${t} ${e.byteLength}\0`),r=new Uint8Array(n.byteLength+e.byteLength);return r.set(n),r.set(e,n.byteLength),r}function Ce(t){let e=t.indexOf("<"),n=t.indexOf(">");if(e===-1||n===-1)throw new Error(`Malformed identity line: "${t}"`);let r=t.slice(0,e).trimEnd(),s=t.slice(e+1,n),i=t.slice(n+2),[o="0",a="+0000"]=i.split(" "),c=parseInt(o,10);return{name:r,email:s,timestamp:c,timezone:a}}function Ue(t){return`${t.name} <${t.email}> ${t.timestamp} ${t.timezone}`}var mr=new TextEncoder,pr=new TextDecoder;function zt(t){let e=pr.decode(t),n=e.indexOf(`
2
2
 
3
- `),r=n===-1?e:e.slice(0,n),s=n===-1?"":e.slice(n+2),i="",o=[],a,c;for(let f of r.split(`
4
- `)){let l=f.indexOf(" ");if(l===-1)continue;let u=f.slice(0,l),d=f.slice(l+1);switch(u){case"tree":i=d;break;case"parent":o.push(d);break;case"author":a=De(d);break;case"committer":c=De(d);break}}if(!i)throw new Error("Commit missing tree field");if(!a)throw new Error("Commit missing author field");if(!c)throw new Error("Commit missing committer field");return{type:"commit",tree:i,parents:o,author:a,committer:c,message:s}}function Xe(t){let e=[];e.push(`tree ${t.tree}`);for(let n of t.parents)e.push(`parent ${n}`);return e.push(`author ${qe(t.author)}`),e.push(`committer ${qe(t.committer)}`),e.push(""),e.push(t.message),Wr.encode(e.join(`
5
- `))}var Oo=new TextEncoder,Vr=new TextDecoder;function xn(t){let e=Vr.decode(t),n=e.indexOf(`
3
+ `),r=n===-1?e:e.slice(0,n),s=n===-1?"":e.slice(n+2),i="",o=[],a,c;for(let l of r.split(`
4
+ `)){let f=l.indexOf(" ");if(f===-1)continue;let u=l.slice(0,f),d=l.slice(f+1);switch(u){case"tree":i=d;break;case"parent":o.push(d);break;case"author":a=Ce(d);break;case"committer":c=Ce(d);break}}if(!i)throw new Error("Commit missing tree field");if(!a)throw new Error("Commit missing author field");if(!c)throw new Error("Commit missing committer field");return{type:"commit",tree:i,parents:o,author:a,committer:c,message:s}}function Ne(t){let e=[];e.push(`tree ${t.tree}`);for(let n of t.parents)e.push(`parent ${n}`);return e.push(`author ${Ue(t.author)}`),e.push(`committer ${Ue(t.committer)}`),e.push(""),e.push(t.message),mr.encode(e.join(`
5
+ `))}var Ti=new TextEncoder,yr=new TextDecoder;function Vt(t){let e=yr.decode(t),n=e.indexOf(`
6
6
 
7
- `),r=n===-1?e:e.slice(0,n),s=n===-1?"":e.slice(n+2),i="",o="commit",a="",c;for(let f of r.split(`
8
- `)){let l=f.indexOf(" ");if(l===-1)continue;let u=f.slice(0,l),d=f.slice(l+1);switch(u){case"object":i=d;break;case"type":o=d;break;case"tag":a=d;break;case"tagger":c=De(d);break}}if(!i)throw new Error("Tag missing object field");if(!a)throw new Error("Tag missing tag name field");if(!c)throw new Error("Tag missing tagger field");return{type:"tag",object:i,objectType:o,name:a,tagger:c,message:s}}async function W(t,e,n){let r=await t.objectStore.write(e,n);return t.hooks?.onObjectWrite?.({repo:t,type:e,hash:r}),r}async function z(t,e){return t.objectStore.read(e)}async function In(t,e){return t.objectStore.exists(e)}async function En(t,e){return t.objectStore.findByPrefix(e)}function ne(t){let e=Math.min(t.length,8e3);for(let n=0;n<e;n++)if(t.charCodeAt(n)===0)return!0;return!1}var Kr=new TextDecoder;async function U(t,e){let n=await z(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return Kr.decode(n.content)}async function ue(t,e){let n=await z(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return n.content}async function A(t,e){let n=await z(t,e);if(n.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${n.type}`);return wn(n.content)}async function Ue(t,e){let n=e;for(let r=0;r<100;r++){let s=await z(t,n);if(s.type==="commit")return n;if(s.type==="tag"){n=xn(s.content).object;continue}throw new Error(`Cannot peel ${s.type} object ${e} to commit`)}throw new Error(`Tag chain too deep for ${e}`)}var G={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"};function Je(t){return typeof t=="string"?{type:"direct",hash:t}:t}var xt="ref: ",On=10,It=class{constructor(e,n){this.fs=e;this.gitDir=n}casLocks=new Map;async readRef(e){let n=B(this.gitDir,e);if(await this.fs.exists(n)){let i=(await this.fs.readFile(n)).trim();return i.startsWith(xt)?{type:"symbolic",target:i.slice(xt.length)}:{type:"direct",hash:i}}let s=(await this.readPackedRefs()).get(e);return s?{type:"direct",hash:s}:null}async writeRef(e,n){let r=Je(n),s=B(this.gitDir,e);await Rn(this.fs,s),r.type==="symbolic"?await this.fs.writeFile(s,`${xt}${r.target}
9
- `):await this.fs.writeFile(s,`${r.hash}
10
- `)}async deleteRef(e){let n=B(this.gitDir,e);await this.fs.exists(n)&&await this.fs.rm(n),await this.removePackedRef(e)}async listRefs(e="refs"){let n=[],r=B(this.gitDir,e);await this.fs.exists(r)&&await this.walkRefs(r,e,n);let s=await this.readPackedRefs();if(s.size>0){let i=new Set(n.map(a=>a.name)),o=`${e}/`;for(let[a,c]of s)a.startsWith(o)&&!i.has(a)&&n.push({name:a,hash:c})}return n.sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async compareAndSwapRef(e,n,r){let i=(this.casLocks.get(e)??Promise.resolve(!1)).then(()=>this.compareAndSwapUnsafe(e,n,r),()=>this.compareAndSwapUnsafe(e,n,r));this.casLocks.set(e,i);try{return await i}finally{this.casLocks.get(e)===i&&this.casLocks.delete(e)}}async compareAndSwapUnsafe(e,n,r){let s=await this.resolveRefInternal(e);if(n===null){if(await this.readRef(e)!==null)return!1}else if(s!==n)return!1;return r===null?await this.deleteRef(e):await this.writeRef(e,r),!0}async resolveRefInternal(e){let n=e;for(let r=0;r<On;r++){let s=await this.readRef(n);if(!s)return null;if(s.type==="direct")return s.hash;n=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}async readPackedRefs(){let e=B(this.gitDir,"packed-refs");if(!await this.fs.exists(e))return new Map;let n=await this.fs.readFile(e),r=new Map;for(let s of n.split(`
11
- `)){if(!s||s.startsWith("#")||s.startsWith("^"))continue;let i=s.indexOf(" ");if(i===-1)continue;let o=s.slice(0,i),a=s.slice(i+1).trim();o.length===40&&a&&r.set(a,o)}return r}async removePackedRef(e){let n=B(this.gitDir,"packed-refs");if(!await this.fs.exists(n))return;let s=(await this.fs.readFile(n)).split(`
12
- `),i=[],o=!1;for(let c of s){if(o&&c.startsWith("^")){o=!1;continue}if(o=!1,!c||c.startsWith("#")){i.push(c);continue}let f=c.indexOf(" ");if(f!==-1&&c.slice(f+1).trim()===e){o=!0;continue}i.push(c)}i.some(c=>c&&!c.startsWith("#")&&!c.startsWith("^"))?await this.fs.writeFile(n,i.join(`
13
- `)):await this.fs.rm(n)}async walkRefs(e,n,r){let s=await this.fs.readdir(e);for(let i of s){let o=B(e,i),a=`${n}/${i}`,c=await this.fs.stat(o);if(c.isDirectory)await this.walkRefs(o,a,r);else if(c.isFile){let f=await this.resolveRefInternal(a);f&&r.push({name:a,hash:f})}}}};async function Yr(t,e){return t.refStore.readRef(e)}async function re(t,e){let n=e;for(let r=0;r<On;r++){let s=await Yr(t,n);if(!s)return null;if(s.type==="direct")return s.hash;n=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}async function Et(t,e="refs"){return t.refStore.listRefs(e)}async function Rn(t,e){let n=e.lastIndexOf("/");if(n>0){let r=e.slice(0,n);await t.mkdir(r,{recursive:!0})}}function qr(t){let e=[],n=t.length;for(;n>0;){let i=t.slice(0,n).match(/^(.+?)~(\d*)$/);if(i&&i[1]!==void 0&&i[2]!==void 0){let c=i[2]===""?1:parseInt(i[2],10);e.unshift({type:"tilde",n:c}),n=i[1].length;continue}let o=t.slice(0,n).match(/^(.+?)\^{([^}]*)}$/);if(o&&o[1]!==void 0&&o[2]!==void 0){e.unshift({type:"peel",target:o[2]}),n=o[1].length;continue}let a=t.slice(0,n).match(/^(.+?)\^(\d*)$/);if(a&&a[1]!==void 0&&a[2]!==void 0){let c=a[2]===""?1:parseInt(a[2],10);e.unshift({type:"caret",n:c}),n=a[1].length;continue}break}let r=t.slice(0,n),s=r.match(/^(.+?)@\{(\d+)\}$/);return s&&s[1]!==void 0&&s[2]!==void 0?{base:s[1],reflogIndex:parseInt(s[2],10),suffixes:e}:{base:r,suffixes:e}}var Xr=["HEAD","FETCH_HEAD","ORIG_HEAD","MERGE_HEAD","CHERRY_PICK_HEAD","REBASE_HEAD"];async function Jr(t,e){let n=await En(t,e);if(n.length===0)return null;if(n.length>1)throw new Ot(e);return n[0]}var Ot=class extends Error{constructor(n){super(`short object ID ${n} is ambiguous`);this.prefix=n}};async function Zr(t,e){if(e==="HEAD"||e==="@")return re(t,"HEAD");if(Xr.includes(e))return re(t,e);if(/^[0-9a-f]{40}$/.test(e))return await In(t,e)?e:null;if(/^[0-9a-f]{4,39}$/.test(e)){let i=await Jr(t,e);if(i)return i}if(e.startsWith("refs/")){let i=await re(t,e);if(i)return i}let n=await re(t,`refs/heads/${e}`);if(n)return n;let r=await re(t,`refs/tags/${e}`);if(r)return r;let s=await re(t,`refs/remotes/${e}`);return s||null}async function Qr(t,e,n){if(n===""||n==="commit")try{return await Ue(t,e)}catch{return null}if(n==="tree"){let s;try{s=await Ue(t,e)}catch{return null}return(await A(t,s)).tree}return(await z(t,e)).type!==n?null:e}async function es(t,e,n){let r=e;n.some(i=>i.type==="tilde"||i.type==="caret")&&(r=await Ue(t,r));for(let i of n)if(i.type==="peel"){if(!r)return null;r=await Qr(t,r,i.target)}else if(i.type==="tilde")for(let o=0;o<i.n;o++){if(!r)return null;let a=await A(t,r);if(a.parents.length===0||(r=a.parents[0]??null,!r))return null}else{if(i.n===0)continue;if(!r)return null;let o=await A(t,r);if(i.n>o.parents.length||(r=o.parents[i.n-1]??null,!r))return null}return r}async function Pn(t,e){let{base:n,reflogIndex:r,suffixes:s}=qr(e);if(r!==void 0)return null;let i=await Zr(t,n);return i?es(t,i,s):null}var Uo=new TextEncoder;function se(t){return typeof t=="string"?t==="120000":t===40960}var ts=new TextEncoder,kn=new TextDecoder,ns=new Set(["100644","100755","040000","120000","160000"]);function rs(t){return t.length===4&&t.toLowerCase()===".git"}function ss(t,e){if(t.length===0)throw new Error("invalid tree entry: empty name");if(t.includes("/"))throw new Error(`invalid tree entry: name contains slash: '${t}'`);if(t.includes("\0"))throw new Error("invalid tree entry: name contains null byte");if(t==="."||t==="..")throw new Error(`invalid tree entry: '${t}'`);if(rs(t))throw new Error(`invalid tree entry: '${t}'`);if(!ns.has(e))throw new Error(`invalid tree entry mode: '${e}' for '${t}'`)}function He(t){let e=[],n=0;for(;n<t.byteLength;){let r=t.indexOf(32,n);if(r===-1)break;let s=kn.decode(t.subarray(n,r)),i=t.indexOf(0,r+1);if(i===-1)break;let o=kn.decode(t.subarray(r+1,i)),a=t.subarray(i+1,i+21),c=ge(a),f=s.padStart(6,"0");ss(o,f),e.push({mode:f,name:o,hash:c}),n=i+21}return{type:"tree",entries:e}}function Ze(t){let e=[];for(let i of t.entries){let o=i.mode.replace(/^0+/,""),a=ts.encode(`${o} ${i.name}\0`),c=J(i.hash);e.push(a),e.push(c)}let n=e.reduce((i,o)=>i+o.byteLength,0),r=new Uint8Array(n),s=0;for(let i of e)r.set(i,s),s+=i.byteLength;return r}async function Rt(t,e){return Sn(t,e,"")}async function Sn(t,e,n){let r=[],s=new Map;for(let o of e){let a=n?o.path.slice(n.length+1):o.path,c=a.indexOf("/");if(c===-1)r.push({mode:is(o.mode),name:a,hash:o.hash});else{let f=a.slice(0,c),l=s.get(f);l||(l=[],s.set(f,l)),l.push(o)}}for(let[o,a]of s){let c=n?`${n}/${o}`:o,f=await Sn(t,a,c);r.push({mode:G.DIRECTORY,name:o,hash:f})}r.sort((o,a)=>{let c=o.mode===G.DIRECTORY?`${o.name}/`:o.name,f=a.mode===G.DIRECTORY?`${a.name}/`:a.name;return c<f?-1:c>f?1:0});let i=Ze({type:"tree",entries:r});return W(t,"tree",i)}async function ie(t,e,n=""){let r=await z(t,e);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let s=He(r.content),i=[];for(let o of s.entries){let a=n?`${n}/${o.name}`:o.name;if(o.mode===G.DIRECTORY){let c=await ie(t,o.hash,a);i.push(...c)}else i.push({path:a,mode:o.mode,hash:o.hash})}return i}async function he(t,e){if(!e)return new Map;let n=await ie(t,e);return new Map(n.map(r=>[r.path,r]))}async function oe(t,e,n){let r=await he(t,e),s=await he(t,n),i=[];for(let[o,a]of r){let c=s.get(o);c?(a.hash!==c.hash||a.mode!==c.mode)&&i.push({path:o,status:"modified",oldHash:a.hash,newHash:c.hash,oldMode:a.mode,newMode:c.mode}):i.push({path:o,status:"deleted",oldHash:a.hash,oldMode:a.mode})}for(let[o,a]of s)r.has(o)||i.push({path:o,status:"added",newHash:a.hash,newMode:a.mode});return i.sort((o,a)=>Be(o.path,a.path))}function is(t){return t.toString(8).padStart(6,"0")}function Tn(t){return{stdout:"",stderr:`fatal: ${t}
14
- `,exitCode:128}}var Vo=Tn("not a git repository (or any of the parent directories): .git"),Ko=Tn("this operation must be run in a work tree");function Be(t,e){return t<e?-1:t>e?1:0}function te(t){if(t.length===0)return[];let e=t.split(`
15
- `);return e[e.length-1]===""&&e.pop(),e}var os=4,jn=1024,Qe=100,nt=0,et=1,Re=2;function kt(t){let e=1;for(;e*e<t;)e++;return e}function as(t,e){let n=new Map,r=[],s=new Array(t.length),i=new Array(e.length);for(let o=0;o<t.length;o++){let a=t[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len1++,s[o]=c}for(let o=0;o<e.length;o++){let a=e[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len2++,i[o]=c}return{classes1:s,classes2:i,classInfo:r}}function cs(t,e,n,r){let s=0,i=Math.min(e,r);for(;s<i&&t[s]===n[s];)s++;let o=s,a=0,c=i-o;for(;a<c&&t[e-1-a]===n[r-1-a];)a++;return{dstart:o,dend1:e-a-1,dend2:r-a-1}}function vn(t,e,n,r){e-n>Qe&&(n=e-Qe),r-e>Qe&&(r=e+Qe);let s=0,i=1;for(let c=1;e-c>=n;c++){let f=t[e-c];if(f===nt)s++;else if(f===Re)i++;else break}if(s===0)return!1;let o=0,a=1;for(let c=1;e+c<=r;c++){let f=t[e+c];if(f===nt)o++;else if(f===Re)a++;else break}return o===0?!1:(o+=s,a+=i,a*os<a+o)}function fs(t,e,n,r,s,i,o,a,c,f){let l=new Uint8Array(e),u=new Uint8Array(r),d=Math.min(kt(e),jn);for(let p=i;p<=o;p++){let b=s[t[p]].len2;b===0?l[p]=nt:b>=d?l[p]=Re:l[p]=et}let h=Math.min(kt(r),jn);for(let p=i;p<=a;p++){let b=s[n[p]].len1;b===0?u[p]=nt:b>=h?u[p]=Re:u[p]=et}let m=[];for(let p=i;p<=o;p++)l[p]===et||l[p]===Re&&!vn(l,p,i,o)?m.push(p):c[p]=1;let y=[];for(let p=i;p<=a;p++)u[p]===et||u[p]===Re&&!vn(u,p,i,a)?y.push(p):f[p]=1;return{refIndex1:m,nreff1:m.length,refIndex2:y,nreff2:y.length}}var de=20,Cn=4,ls=256,us=256,tt=2147483647;function V(t,e){return t[e]??0}function hs(t,e,n,r,s,i,o,a,c,f){let l=e-i,u=n-s,d=e-s,h=n-i,m=d-h&1,y=d,p=d,b=h,R=h;o[d]=e,a[h]=n;for(let v=1;;v++){let C=!1;y>l?o[--y-1]=-1:++y,p<u?o[++p+1]=-1:--p;for(let O=p;O>=y;O-=2){let w;V(o,O-1)>=V(o,O+1)?w=V(o,O-1)+1:w=V(o,O+1);let E=w,T=w-O;for(;w<n&&T<i&&t[w]===r[T];)w++,T++;if(w-E>de&&(C=!0),o[O]=w,m&&b<=O&&O<=R&&V(a,O)<=w)return{i1:w,i2:T,minLo:!0,minHi:!0}}b>l?a[--b-1]=tt:++b,R<u?a[++R+1]=tt:--R;for(let O=R;O>=b;O-=2){let w;V(a,O-1)<V(a,O+1)?w=V(a,O-1):w=V(a,O+1)-1;let E=w,T=w-O;for(;w>e&&T>s&&t[w-1]===r[T-1];)w--,T--;if(E-w>de&&(C=!0),a[O]=w,!m&&y<=O&&O<=p&&w<=V(o,O))return{i1:w,i2:T,minLo:!0,minHi:!0}}if(!c){if(C&&v>ls){let O=0,w=null;for(let E=p;E>=y;E-=2){let T=E>d?E-d:d-E,I=V(o,E),P=I-E,S=I-e+(P-s)-T;if(S>Cn*v&&S>O&&e+de<=I&&I<n&&s+de<=P&&P<i){let $=!0;for(let D=1;D<=de;D++)if(t[I-D]!==r[P-D]){$=!1;break}$&&(O=S,w={i1:I,i2:P,minLo:!0,minHi:!1})}}if(w)return w;O=0,w=null;for(let E=R;E>=b;E-=2){let T=E>h?E-h:h-E,I=V(a,E),P=I-E,S=n-I+(i-P)-T;if(S>Cn*v&&S>O&&e<I&&I<=n-de&&s<P&&P<=i-de){let $=!0;for(let D=0;D<de;D++)if(t[I+D]!==r[P+D]){$=!1;break}$&&(O=S,w={i1:I,i2:P,minLo:!1,minHi:!0})}}if(w)return w}if(v>=f){let O=-1,w=-1;for(let I=p;I>=y;I-=2){let P=Math.min(V(o,I),n),S=P-I;i<S&&(P=i+I,S=i),O<P+S&&(O=P+S,w=P)}let E=tt,T=tt;for(let I=R;I>=b;I-=2){let P=Math.max(e,V(a,I)),S=P-I;S<s&&(P=s+I,S=s),P+S<E&&(E=P+S,T=P)}return n+i-E<O-(e+s)?{i1:w,i2:O-w,minLo:!0,minHi:!1}:{i1:T,i2:E-T,minLo:!1,minHi:!0}}}}}function St(t,e,n,r,s,i,o,a,c,f,l,u,d,h){for(;e<n&&s<i&&t[e]===r[s];)e++,s++;for(;e<n&&s<i&&t[n-1]===r[i-1];)n--,i--;if(e===n)for(let m=s;m<i;m++)a[f[m]]=1;else if(s===i)for(let m=e;m<n;m++)o[c[m]]=1;else{let m=hs(t,e,n,r,s,i,l,u,d,h);St(t,e,m.i1,r,s,m.i2,o,a,c,f,l,u,m.minLo,h),St(t,m.i1,n,r,m.i2,i,o,a,c,f,l,u,m.minHi,h)}}function ds(t,e,n,r){let s=[],i=0,o=0,a=1,c=1;for(;i<t.length||o<e.length;){if(i<t.length&&o<e.length&&!n[i]&&!r[o]){s.push({type:"keep",line:t[i]??"",oldLineNo:a++,newLineNo:c++}),i++,o++;continue}for(;i<t.length&&n[i];)s.push({type:"delete",line:t[i]??"",oldLineNo:a++,newLineNo:0}),i++;for(;o<e.length&&r[o];)s.push({type:"insert",line:e[o]??"",oldLineNo:0,newLineNo:c++}),o++}return s}var An=200,$n=20,Ln=100,ms=1,ps=21,ys=-30,gs=6,bs=-4,ws=10,xs=24,Is=17,Es=23,Os=17,Rs=60;function Pt(t){let e=0;for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(r===32)e+=1;else if(r===9)e+=8-e%8;else if(!(r===10||r===13||r===11||r===12))return e;if(e>=An)return An}return-1}function Mn(t,e,n){let r={endOfFile:!1,indent:-1,preBlank:0,preIndent:-1,postBlank:0,postIndent:-1};n>=e?(r.endOfFile=!0,r.indent=-1):(r.endOfFile=!1,r.indent=Pt(t[n]));for(let s=n-1;s>=0&&(r.preIndent=Pt(t[s]),r.preIndent===-1);s--)if(r.preBlank+=1,r.preBlank===$n){r.preIndent=0;break}for(let s=n+1;s<e&&(r.postIndent=Pt(t[s]),r.postIndent===-1);s++)if(r.postBlank+=1,r.postBlank===$n){r.postIndent=0;break}return r}function Dn(t,e){t.preIndent===-1&&t.preBlank===0&&(e.penalty+=ms),t.endOfFile&&(e.penalty+=ps);let n=t.indent===-1?1+t.postBlank:0,r=t.preBlank+n;e.penalty+=ys*r,e.penalty+=gs*n;let s=t.indent!==-1?t.indent:t.postIndent,i=r!==0;e.effectiveIndent+=s,s===-1||t.preIndent===-1||(s>t.preIndent?e.penalty+=i?ws:bs:s===t.preIndent||(t.postIndent!==-1&&t.postIndent>s?e.penalty+=i?Is:xs:e.penalty+=i?Os:Es))}function Ps(t,e){let n=(t.effectiveIndent>e.effectiveIndent?1:0)-(t.effectiveIndent<e.effectiveIndent?1:0);return Rs*n+(t.penalty-e.penalty)}function Un(t,e,n,r,s,i){let o=0,a=0;for(;t[a];)a++;let c=0,f=0;for(;s[f];)f++;let l=(u,d)=>e[u]===e[d];for(;;){if(a!==o){let u,d,h;do{for(u=a-o,d=-1;o>0&&l(o-1,a-1);){for(t[--o]=1,t[--a]=0;t[o-1];)o--;if(c===0)break;for(f=c-1,c=f;s[c-1];c--);}for(h=a,f>c&&(d=a);!(a>=r||!l(o,a));){for(t[o++]=0,t[a++]=1;t[a];)a++;if(f>=i)break;for(c=f+1,f=c;s[f];f++);f>c&&(d=a)}}while(u!==a-o);if(a!==h)if(d!==-1)for(;f===c;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(f=c-1,c=f;s[c-1];c--);}else{let m=-1,y={effectiveIndent:0,penalty:0},p=h;for(a-u-1>p&&(p=a-u-1),a-Ln>p&&(p=a-Ln);p<=a;p++){let b={effectiveIndent:0,penalty:0},R=Mn(n,r,p);Dn(R,b);let v=Mn(n,r,p-u);Dn(v,b),(m===-1||Ps(b,y)<=0)&&(y={effectiveIndent:b.effectiveIndent,penalty:b.penalty},m=p)}for(;a>m;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(f=c-1,c=f;s[c-1];c--);}}}if(a>=r)break;for(o=a+1,a=o;t[a];a++);if(f>=i)break;for(c=f+1,f=c;s[f];f++);}}function Tt(t,e){let n=t.length,r=e.length,s=new Uint8Array(n),i=new Uint8Array(r);if(n>0&&r>0){let{classes1:o,classes2:a,classInfo:c}=as(t,e),{dstart:f,dend1:l,dend2:u}=cs(o,n,a,r);if(f>l)for(let d=f;d<r-(n-1-l);d++)i[d]=1;else if(f>u)for(let d=f;d<n-(r-1-u);d++)s[d]=1;else{let{refIndex1:d,nreff1:h,refIndex2:m,nreff2:y}=fs(o,n,a,r,c,f,l,u,s,i);if(h>0&&y>0){let p=new Array(h);for(let w=0;w<h;w++)p[w]=o[d[w]];let b=new Array(y);for(let w=0;w<y;w++)b[w]=a[m[w]];let R={},v={},C=h+y+3,O=Math.max(us,kt(C));St(p,0,h,b,0,y,s,i,d,m,R,v,!1,O)}else if(h===0)for(let p=0;p<y;p++)i[m[p]]=1;else for(let p=0;p<h;p++)s[d[p]]=1;Un(s,o,t,n,i,r),Un(i,a,e,r,s,n)}}else n===0?i.fill(1):s.fill(1);return{changedOld:s,changedNew:i}}function Pe(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return e.map((o,a)=>({type:"insert",line:o,oldLineNo:0,newLineNo:a+1}));if(r===0)return t.map((o,a)=>({type:"delete",line:o,oldLineNo:a+1,newLineNo:0}));let{changedOld:s,changedNew:i}=Tt(t,e);return ds(t,e,s,i)}var ks=3;function Hn(t,e=ks){if(e=Math.max(0,e),t.length===0)return[];let n=[];for(let a=0;a<t.length;a++){let c=t[a];c&&c.type!=="keep"&&n.push(a)}if(n.length===0)return[];let r=n[0]??0,s=[],i=Math.max(0,r-e),o=Math.min(t.length-1,r+e);for(let a=1;a<n.length;a++){let c=n[a]??0,f=Math.max(0,c-e),l=Math.min(t.length-1,c+e);f<=o+1||(s.push({start:i,end:o}),i=f),o=l}return s.push({start:i,end:o}),s.map(a=>Ss(t,a.start,a.end))}function Ss(t,e,n){let r=0,s=0,i=0,o=0,a=[],c=!1,f=!1;for(let l=e;l<=n;l++){let u=t[l];if(u)switch(u.type){case"keep":c||(r=u.oldLineNo,c=!0),f||(i=u.newLineNo,f=!0),s++,o++,a.push({type:"context",content:u.line});break;case"delete":c||(r=u.oldLineNo,c=!0),s++,a.push({type:"delete",content:u.line});break;case"insert":f||(i=u.newLineNo,f=!0),o++,a.push({type:"insert",content:u.line});break}}if(c||(r=i>0?i:1),f||(i=r>0?r:1),s===0)for(let l=e;l<=n;l++){let u=t[l];if(u&&u.type==="insert"){r=u.newLineNo>1?u.newLineNo-1:0;break}}if(o===0)for(let l=e;l<=n;l++){let u=t[l];if(u&&u.type==="delete"){i=u.oldLineNo>1?u.oldLineNo-1:0;break}}return{oldStart:r,oldCount:s,newStart:i,newCount:o,lines:a}}function ke(t){let e=t.lastIndexOf("/");return e>=0?t.slice(e+1):t}function Ts(t,e){if(t.length===0)return;if(t.length===1)return t.shift();let n=ke(e),r=0;for(let s=0;s<t.length;s++){let i=t[s];if(i&&ke(i.path)===n){r=s;break}}return t.splice(r,1)[0]}var js=50;async function be(t,e,n=js){let r=new Map,s=[],i=[],o=[];for(let l of e)if(l.status==="deleted"&&l.oldHash){let u=r.get(l.oldHash)??[];u.push(l),r.set(l.oldHash,u),s.push(l)}else l.status==="added"&&l.newHash?i.push(l):o.push(l);let a=[],c=[];for(let l of i){let u=l.newHash;if(!u){c.push(l);continue}let d=r.get(u);if(d&&d.length>0){let h=Ts(d,l.path);h&&a.push({oldPath:h.path,newPath:l.path,oldHash:h.oldHash??u,newHash:u,similarity:100,oldMode:h.oldMode,newMode:l.newMode})}else c.push(l)}let f=[...r.values()].flat();if(f.length>0&&c.length>0){let l=await vs(t,f,c,n);if(l.length>0){let u=new Set(l.map(h=>h.oldPath)),d=new Set(l.map(h=>h.newPath));f=f.filter(h=>!u.has(h.path)),c=c.filter(h=>!d.has(h.path)),a.push(...l)}}if(f.length>0&&c.length>0){let l=await $s(t,f,c,n);if(l.length>0){let u=new Set(l.map(h=>h.oldPath)),d=new Set(l.map(h=>h.newPath));f=f.filter(h=>!u.has(h.path)),c=c.filter(h=>!d.has(h.path)),a.push(...l)}}return{remaining:[...o,...f,...c],renames:a}}async function vs(t,e,n,r){let s=new Map;for(let a=0;a<e.length;a++){let c=e[a];if(!c)continue;let f=ke(c.path);s.has(f)?s.set(f,-1):s.set(f,a)}let i=new Map;for(let a=0;a<n.length;a++){let c=n[a];if(!c)continue;let f=ke(c.path);i.has(f)?i.set(f,-1):i.set(f,a)}let o=[];for(let[a,c]of s){if(c===-1)continue;let f=i.get(a);if(f===void 0||f===-1)continue;let l=e[c],u=n[f];if(!l?.oldHash||!u?.newHash||l.oldHash===u.newHash)continue;let d=await ue(t,l.oldHash),h=await ue(t,u.newHash),m=As(d,h);m<r||o.push({oldPath:l.path,newPath:u.path,oldHash:l.oldHash,newHash:u.newHash,similarity:m,oldMode:l.oldMode,newMode:u.newMode})}return o}var Bn=107927;function rt(t){let e=new Map,n=0,r=0,s=0;for(let o=0;o<t.length;o++){let a=t[o],c=r;if(r=(r<<7^s>>>25)>>>0,s=(s<<7^c>>>25)>>>0,r=r+a>>>0,n++,n<64&&a!==10)continue;let f=(r+Math.imul(s,97))%Bn;e.set(f,(e.get(f)??0)+n),n=0,r=0,s=0}if(n>0){let o=(r+Math.imul(s,97))%Bn;e.set(o,(e.get(o)??0)+n)}let i=[];for(let[o,a]of e)i.push({hash:o,count:a});return i.sort((o,a)=>o.hash-a.hash),i}function Cs(t,e){let n=0,r=0,s=0,i=0;for(;s<t.length;){let o=t[s];if(!o)break;for(;i<e.length;){let f=e[i];if(!f||f.hash>=o.hash)break;r+=f.count,i++}let a=o.count,c=0;if(i<e.length){let f=e[i];f&&f.hash===o.hash&&(c=f.count,i++)}a<c?(r+=c-a,n+=a):n+=c,s++}for(;i<e.length;){let o=e[i];o&&(r+=o.count),i++}return{srcCopied:n,literalAdded:r}}function As(t,e){return t.length===0&&e.length===0?100:t.length===0||e.length===0?0:Nn(t.length,rt(t),e.length,rt(e))}function Nn(t,e,n,r){let s=Math.max(t,n),i=Math.min(t,n);if(i<s-i)return 0;let{srcCopied:o}=Cs(e,r);return Math.floor(o*100/s)}async function $s(t,e,n,r){let s=[];for(let l of e)if(l.oldHash){let u=await ue(t,l.oldHash);s.push({size:u.length,chunks:rt(u)})}else s.push(null);let i=[];for(let l of n)if(l.newHash){let u=await ue(t,l.newHash);i.push({size:u.length,chunks:rt(u)})}else i.push(null);let o=[];for(let l=0;l<e.length;l++){let u=e[l],d=s[l];if(!(!u||!d))for(let h=0;h<n.length;h++){let m=n[h],y=i[h];if(!m||!y)continue;let p=Nn(d.size,d.chunks,y.size,y.chunks);if(p>=r){let b=ke(u.path)===ke(m.path)?1:0;o.push({similarity:p,nameScore:b,delIdx:l,addIdx:h})}}}o.sort((l,u)=>u.similarity-l.similarity||u.nameScore-l.nameScore);let a=new Set,c=new Set,f=[];for(let{similarity:l,delIdx:u,addIdx:d}of o){if(a.has(u)||c.has(d))continue;a.add(u),c.add(d);let h=e[u],m=n[d];!h||!m||f.push({oldPath:h.path,newPath:m.path,oldHash:h.oldHash??"",newHash:m.newHash??"",similarity:l,oldMode:h.oldMode,newMode:m.newMode})}return f}async function me(t,e,n){return(await he(t,e)).get(n)?.hash??null}async function Fn(t,e,n,r){let s=await oe(t,e,n);if(!s.find(c=>c.status==="added"&&c.path===r))return null;let{renames:o}=await be(t,s);return o.find(c=>c.newPath===r)?.oldPath??null}async function Ls(t,e,n,r,s,i){let o=await me(t,(await A(t,e)).tree,n);if(!o){let y=new Map,p=await A(t,e);for(let b of r)y.set(b.finalIdx,pe(e,n,b.currentLine,i+b.finalIdx,s[b.finalIdx],p,!1,void 0));return y}let a=await U(t,o),c=te(a),f=new Array(s.length),l=[...r],u=e,d=n,h=c;for(;l.length>0;){let y=await A(t,u);if(y.parents.length===0){for(let I of l)f[I.finalIdx]=pe(u,d,I.currentLine,i+I.finalIdx,s[I.finalIdx],y,!0,void 0);break}let p=await me(t,y.tree,d),b=null,R=[];for(let I of y.parents){let P=await A(t,I),S=d,$=await me(t,P.tree,S);if(!$){let D=await Fn(t,P.tree,y.tree,d);D&&(S=D,$=await me(t,P.tree,S))}if($&&(R.push({hash:I,path:S,blobHash:$}),$===p)){b={hash:I,path:S};break}}if(b){u=b.hash,d=b.path;continue}if(R.length===0){for(let I of l)f[I.finalIdx]=pe(u,d,I.currentLine,i+I.finalIdx,s[I.finalIdx],y,!1,void 0);break}let v=R[0],C=await U(t,v.blobHash),O=te(C),w=Pe(O,h),E=new Map;for(let I of w)I.type==="keep"&&E.set(I.newLineNo,I.oldLineNo);let T=[];for(let I of l){let P=E.get(I.currentLine);P!==void 0?T.push({finalIdx:I.finalIdx,currentLine:P}):f[I.finalIdx]=pe(u,d,I.currentLine,i+I.finalIdx,s[I.finalIdx],y,!1,{hash:v.hash,path:v.path})}l=T,u=v.hash,d=v.path,h=O}let m=new Map;for(let y of r)f[y.finalIdx]&&m.set(y.finalIdx,f[y.finalIdx]);return m}async function Gn(t,e,n,r){let s=await A(t,e),i=await me(t,s.tree,n);if(!i)throw new Error(`no such path '${n}' in ${e.slice(0,7)}`);let o=await U(t,i),a=te(o),c=r?.startLine??1,f=r?.endLine??a.length,l=a.slice(c-1,f),u=new Array(l.length),d=l.map((p,b)=>({finalIdx:b,currentLine:c+b})),h=e,m=n,y=a;for(;d.length>0;){let p=await A(t,h);if(p.parents.length===0){for(let E of d)u[E.finalIdx]=pe(h,m,E.currentLine,c+E.finalIdx,l[E.finalIdx],p,!0,void 0);break}let b=await me(t,p.tree,m),R=[],v=null;for(let E of p.parents){let T=await A(t,E),I=m,P=await me(t,T.tree,I);if(!P){let S=await Fn(t,T.tree,p.tree,m);S&&(I=S,P=await me(t,T.tree,I))}if(P){let S={hash:E,path:I,blobHash:P};if(R.push(S),P===b){v=S;break}}}if(v){h=v.hash,m=v.path;continue}if(R.length===0){for(let E of d)u[E.finalIdx]=pe(h,m,E.currentLine,c+E.finalIdx,l[E.finalIdx],p,!1,void 0);break}if(R.length===1){let E=R[0],T=await U(t,E.blobHash),I=te(T),P=Pe(I,y),S=new Map;for(let D of P)D.type==="keep"&&S.set(D.newLineNo,D.oldLineNo);let $=[];for(let D of d){let ae=S.get(D.currentLine);ae!==void 0?$.push({finalIdx:D.finalIdx,currentLine:ae}):u[D.finalIdx]=pe(h,m,D.currentLine,c+D.finalIdx,l[D.finalIdx],p,!1,{hash:E.hash,path:E.path})}d=$,h=E.hash,m=E.path,y=I;continue}let C=[];for(let E of R){let T=await U(t,E.blobHash),I=te(T),P=Pe(I,y),S=new Map;for(let $ of P)$.type==="keep"&&S.set($.newLineNo,$.oldLineNo);C.push({info:E,newToOld:S})}let O=new Map;for(let E of d){let T=!1;for(let I=0;I<C.length;I++){let P=C[I],S=P.newToOld.get(E.currentLine);if(S!==void 0){let $=O.get(I);$||($={info:P.info,lines:[]},O.set(I,$)),$.lines.push({finalIdx:E.finalIdx,currentLine:S}),T=!0;break}}T||(u[E.finalIdx]=pe(h,m,E.currentLine,c+E.finalIdx,l[E.finalIdx],p,!1,{hash:R[0].hash,path:R[0].path}))}let w=O.get(0);for(let[E,T]of O){if(E===0)continue;let I=await Ls(t,T.info.hash,T.info.path,T.lines,l,c);for(let[P,S]of I)u[P]=S}if(w&&w.lines.length>0){d=w.lines,h=w.info.hash,m=w.info.path;let E=await U(t,w.info.blobHash);y=te(E)}else break}return u}function pe(t,e,n,r,s,i,o,a){return{hash:t,origPath:e,origLine:n,finalLine:r,content:s,author:i.author,committer:i.committer,summary:i.message.split(`
16
- `)[0],boundary:o,previous:a}}var Se=class{heap=[];nextEpoch=0;get size(){return this.heap.length}push(e){this.heap.push({entry:e,epoch:this.nextEpoch++}),this.siftUp(this.heap.length-1)}pop(){let{heap:e}=this;if(e.length===0)return;let n=e[0],r=e.pop();return e.length>0&&(e[0]=r,this.siftDown(0)),n.entry}higher(e,n){let r=e.entry.commit.committer.timestamp,s=n.entry.commit.committer.timestamp;return r>s||r===s&&e.epoch<n.epoch}siftUp(e){let{heap:n}=this;for(;e>0;){let r=e-1>>1;if(!this.higher(n[e],n[r]))break;[n[r],n[e]]=[n[e],n[r]],e=r}}siftDown(e){let{heap:n}=this,r=n.length;for(;;){let s=e,i=2*e+1,o=2*e+2;if(i<r&&this.higher(n[i],n[s])&&(s=i),o<r&&this.higher(n[o],n[s])&&(s=o),s===e)break;[n[e],n[s]]=[n[s],n[e]],e=s}}};async function*we(t,e,n){if(n?.topoOrder){yield*Ms(t,e,n);return}let r=await Wn(t,n?.exclude),s=new Set(r),i=new Se,o=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let c of a)s.has(c)||i.push(await st(t,c));for(;i.size>0;){let c=i.pop();if(s.has(c.hash)||(s.add(c.hash),yield c,o?.has(c.hash)))continue;let f=n?.firstParent?c.commit.parents.slice(0,1):c.commit.parents;for(let l of f)if(!s.has(l))try{i.push(await st(t,l))}catch{}}}async function*Ms(t,e,n){let r=await Wn(t,n?.exclude),s=new Set(r),i=new Se,o=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let h of a)s.has(h)||i.push(await st(t,h));let c=[],f=new Map;for(;i.size>0;){let h=i.pop();if(s.has(h.hash)||(s.add(h.hash),f.set(h.hash,c.length),c.push(h),o?.has(h.hash)))continue;let m=n?.firstParent?h.commit.parents.slice(0,1):h.commit.parents;for(let y of m)if(!s.has(y))try{i.push(await st(t,y))}catch{}}let l=c.length;if(l===0)return;let u=new Int32Array(l);for(let h of c){let m=n?.firstParent?h.commit.parents.slice(0,1):h.commit.parents;for(let y of m){let p=f.get(y);p!==void 0&&(u[p]=(u[p]??0)+1)}}let d=[];for(let h=l-1;h>=0;h--)u[h]===0&&d.push(h);for(;d.length>0;){let h=d.pop();yield c[h];let m=n?.firstParent?c[h].commit.parents.slice(0,1):c[h].commit.parents;for(let y of m){let p=f.get(y);if(p!==void 0){let b=(u[p]??0)-1;u[p]=b,b===0&&d.push(p)}}}}async function _n(t,e,n){if(e===n)return{ahead:0,behind:0};let r=new Set;for await(let a of we(t,e))r.add(a.hash);let s=new Set;for await(let a of we(t,n))s.add(a.hash);let i=0;for(let a of r)s.has(a)||i++;let o=0;for(let a of s)r.has(a)||o++;return{ahead:i,behind:o}}async function Wn(t,e){if(!e||e.length===0)return new Set;let n=new Set;for await(let r of we(t,e))n.add(r.hash);return n}async function st(t,e){return{hash:e,commit:await A(t,e)}}function Ds(t){let e=Math.min(t.length,8e3),n=0;for(let r=0;r<e;r++)t.charCodeAt(r)===0&&n++;return n>e*.01}function zn(t,e,n,r){if(Ds(t)){let o=e.some(a=>a.test(t));return{matches:[],binary:o}}let s=t.split(`
17
- `);if(s.length>0&&s[s.length-1]===""&&s.pop(),n&&e.length>1&&!e.every(a=>s.some(c=>a.test(c))))return{matches:[],binary:!1};let i=[];for(let o=0;o<s.length;o++){let a=s[o],c=e.some(f=>f.test(a));(r?!c:c)&&i.push({lineNo:o+1,line:a})}return{matches:i,binary:!1}}function Us(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Vn(t,e){let n=e?.fixed?Us(t):t;e?.wordRegexp&&(n=`\\b${n}\\b`);let r=e?.ignoreCase?"i":"";try{return new RegExp(n,r)}catch{return null}}async function Hs(t,e){let n=new Set,r=[e],s=0;for(;s<r.length;){let i=r[s++];if(n.has(i))continue;n.add(i);let o;try{o=await A(t,i)}catch{continue}for(let a of o.parents)n.has(a)||r.push(a)}return n}async function jt(t,e,n){if(e===n)return!0;let r=new Set,s=[n],i=0;for(;i<s.length;){let o=s[i++];if(o===e)return!0;if(r.has(o))continue;r.add(o);let a;try{a=await A(t,o)}catch{continue}for(let c of a.parents)r.has(c)||s.push(c)}return!1}async function Ne(t,e,n){if(e===n)return[e];let r=await Hs(t,e),s=[],i=new Set,o=[n],a=0;for(;a<o.length;){let f=o[a++];if(i.has(f))continue;if(i.add(f),r.has(f)){s.push(f);continue}let l;try{l=await A(t,f)}catch{continue}for(let u of l.parents)i.has(u)||o.push(u)}if(s.length<=1)return s;let c=[];for(let f of s){let l=!1;for(let u of s)if(u!==f&&await jt(t,f,u)){l=!0;break}l||c.push(f)}return c.length<=1?c:Bs(t,e,n,c)}async function Bs(t,e,n,r){let s=new Set(r),i=new Set,o=[],a=new Map,c=new Map,f=0,l=[{hash:e,mask:1,seq:f++},{hash:n,mask:2,seq:f++}];async function u(d){let h=c.get(d);if(h!==void 0)return h;let m=(await A(t,d)).committer.timestamp;return c.set(d,m),m}for(;l.length>0;){let d=0,h=await u(l[0].hash);for(let R=1;R<l.length;R++){let v=l[R],C=await u(v.hash),O=l[d];(C>h||C===h&&v.seq<O.seq)&&(d=R,h=C)}let m=l.splice(d,1)[0],y=a.get(m.hash)??0,p=y|m.mask;if(p===y)continue;if(a.set(m.hash,p),p===3&&s.has(m.hash)&&!i.has(m.hash)&&(o.push(m.hash),i.add(m.hash),i.size===s.size))break;let b=await A(t,m.hash);for(let R of b.parents)l.push({hash:R,mask:p,seq:f++})}for(let d of r)i.has(d)||o.push(d);return o}function vt(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return[{buffer1:[0,0],buffer2:[0,r]}];if(r===0)return[{buffer1:[0,n],buffer2:[0,0]}];let{changedOld:s,changedNew:i}=Tt(t,e);return Ns(s,n,i,r)}function Ns(t,e,n,r){let s=[],i=0,o=0;for(;i<e||o<r;){for(;i<e&&o<r&&!t[i]&&!n[o];)i++,o++;if(i>=e&&o>=r)break;let a=i,c=o;for(;i<e&&t[i];)i++;for(;o<r&&n[o];)o++;(i>a||o>c)&&s.push({buffer1:[a,i-a],buffer2:[c,o-c]})}return s}function Fs(t,e,n){let r=[];for(let c of vt(e,t))r.push({ab:"a",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});for(let c of vt(e,n))r.push({ab:"b",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});r.sort((c,f)=>c.oStart-f.oStart);let s=[],i=0;function o(c){c>i&&(s.push({stable:!0,buffer:"o",bufferStart:i,bufferLength:c-i,content:e.slice(i,c)}),i=c)}let a=0;for(;a<r.length;){let c=r[a++],f=c.oStart,l=c.oStart+c.oLength,u=[c];for(o(f);a<r.length;){let d=r[a];if(d.oStart>l)break;l=Math.max(l,d.oStart+d.oLength),u.push(d),a++}if(u.length===1){if(c.abLength>0){let d=c.ab==="a"?t:n;s.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:d.slice(c.abStart,c.abStart+c.abLength)})}}else{let d={a:{abMin:t.length,abMax:-1,oMin:e.length,oMax:-1},b:{abMin:n.length,abMax:-1,oMin:e.length,oMax:-1}};for(let b of u){let R=b.oStart,v=R+b.oLength,C=b.abStart,O=C+b.abLength,w=d[b.ab];w.abMin=Math.min(C,w.abMin),w.abMax=Math.max(O,w.abMax),w.oMin=Math.min(R,w.oMin),w.oMax=Math.max(v,w.oMax)}let h=d.a.abMin+(f-d.a.oMin),m=d.a.abMax+(l-d.a.oMax),y=d.b.abMin+(f-d.b.oMin),p=d.b.abMax+(l-d.b.oMax);s.push({stable:!1,a:t.slice(h,m),o:e.slice(f,l),b:n.slice(y,p)})}i=l}return o(e.length),s}function Gs(t,e,n,r){let s=r?.excludeFalseConflicts??!0,i=Fs(t,e,n),o=[],a=[];function c(){a.length&&(o.push({type:"ok",lines:a}),a=[])}for(let f of i)f.stable?a.push(...f.content):s&&Yn(f.a,f.b)?a.push(...f.a):(c(),o.push({type:"conflict",a:f.a,o:f.o,b:f.b}));return c(),r?.conflictStyle==="diff3"?Kn(o):Kn(_s(o))}function Fe(t,e,n,r){let s=r?.markerSize??7,i=r?.conflictStyle??"merge",o=`${"<".repeat(s)}${r?.a?` ${r.a}`:""}`,a=`${"|".repeat(s)}${r?.o?` ${r.o}`:""}`,c="=".repeat(s),f=`${">".repeat(s)}${r?.b?` ${r.b}`:""}`,l=Gs(t,e,n,{conflictStyle:i}),u=!1,d=[];for(let h of l)h.type==="ok"?d.push(...h.lines):(u=!0,i==="diff3"?d.push(o,...h.a,a,...h.o,c,...h.b,f):d.push(o,...h.a,c,...h.b,f));return{conflict:u,result:d}}function _s(t){let e=[];for(let n of t)n.type==="ok"?e.push(n):e.push(...Ws(n));return e}function Ws(t){let{a:e,b:n}=t;if(e.length===0||n.length===0)return[t];if(Yn(e,n))return[t];let r=vt(e,n);if(r.length===0)return[{type:"ok",lines:e}];let s=[],i=0;for(let a of r){let c=a.buffer1[0];c-i>0&&s.push({type:"ok",lines:e.slice(i,c)});let l=c+a.buffer1[1],u=a.buffer2[0]+a.buffer2[1];s.push({type:"conflict",a:e.slice(c,l),o:[],b:n.slice(a.buffer2[0],u)}),i=l}return e.length-i>0&&s.push({type:"ok",lines:e.slice(i)}),s.length===1&&s[0].type==="conflict"?[t]:s}function Kn(t){if(t.length<3)return t;let e=[t[0]];for(let r=1;r<t.length;r++){let s=e[e.length-1],i=t[r];s.type==="ok"&&i.type==="ok"?s.lines=[...s.lines,...i.lines]:e.push(i)}if(e.length<3)return e;let n=[e[0]];for(let r=1;r<e.length;r++){let s=n[n.length-1],i=e[r];if(s.type==="conflict"&&i.type==="ok"&&i.lines.length<=3&&r+1<e.length&&e[r+1].type==="conflict"){let o=e[r+1],a=s;a.a=[...s.a,...i.lines,...o.a],a.b=[...s.b,...i.lines,...o.b],a.o=[...s.o,...i.lines,...o.o],r++}else n.push(i)}return n}function xe(t,e,n,r){let s=Fe(q(t),q(e),q(n),{a:r.a,o:r.o,b:r.b,markerSize:r.markerSize,conflictStyle:r.conflictStyle}),o=(s.result[s.result.length-1]??"").endsWith("\0"),a=s.result.map(Ct);return(a[a.length-1]??"").startsWith(">>>>>>>")||!o?`${a.join(`
7
+ `),r=n===-1?e:e.slice(0,n),s=n===-1?"":e.slice(n+2),i="",o="commit",a="",c;for(let l of r.split(`
8
+ `)){let f=l.indexOf(" ");if(f===-1)continue;let u=l.slice(0,f),d=l.slice(f+1);switch(u){case"object":i=d;break;case"type":o=d;break;case"tag":a=d;break;case"tagger":c=Ce(d);break}}if(!i)throw new Error("Tag missing object field");if(!a)throw new Error("Tag missing tag name field");if(!c)throw new Error("Tag missing tagger field");return{type:"tag",object:i,objectType:o,name:a,tagger:c,message:s}}async function _(t,e,n){let r=await t.objectStore.write(e,n);return t.hooks?.onObjectWrite?.({repo:t,type:e,hash:r}),r}async function W(t,e){return t.objectStore.read(e)}async function Kt(t,e){return t.objectStore.exists(e)}async function Yt(t,e){return t.objectStore.findByPrefix(e)}function te(t){let e=Math.min(t.length,8e3);for(let n=0;n<e;n++)if(t.charCodeAt(n)===0)return!0;return!1}var gr=new TextDecoder;async function H(t,e){let n=await W(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return gr.decode(n.content)}async function ne(t,e){let n=await W(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return n.content}async function A(t,e){let n=await W(t,e);if(n.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${n.type}`);return zt(n.content)}async function ve(t,e){let n=e;for(let r=0;r<100;r++){let s=await W(t,n);if(s.type==="commit")return n;if(s.type==="tag"){n=Vt(s.content).object;continue}throw new Error(`Cannot peel ${s.type} object ${e} to commit`)}throw new Error(`Tag chain too deep for ${e}`)}var F={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"};function qt(t){return typeof t=="string"?{type:"direct",hash:t}:t}var br=10;async function wr(t,e){return t.refStore.readRef(e)}async function re(t,e){let n=e;for(let r=0;r<br;r++){let s=await wr(t,n);if(!s)return null;if(s.type==="direct")return s.hash;n=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}async function at(t,e="refs"){return t.refStore.listRefs(e)}function Xt(t){return t.length===4&&t.toLowerCase()===".git"}function Zt(t){if(t.length===0||t.includes("\0")||t.charCodeAt(0)===47||t.charCodeAt(t.length-1)===47)return!1;let e=t.split("/");for(let n of e)if(n.length===0||n==="."||n===".."||Xt(n))return!1;return!0}function Jt(t,e){return e===t?!1:t==="/"?e.startsWith("/")&&e.length>1:e.startsWith(t+"/")}function Qt(t){if(t.length===0||t.charCodeAt(0)===47)return!1;let e=t.split("/");for(let n of e)if(n===".."||Xt(n))return!1;return!0}var Ir=1145655875,Er=2;async function Be(t,e){let n=be(t.gitDir,"index"),r=await xr(e);await t.fs.writeFile(n,r)}function en(t){let e=[...t].sort(tn);return{version:Er,entries:e}}function ae(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}async function xr(t){let e=new TextEncoder,n=[...t.entries].sort(tn),r=[],s=12;for(let d of n){let h=e.encode(d.path);r.push(h);let m=62+h.byteLength+1;s+=Math.ceil(m/8)*8}s+=20;let i=new ArrayBuffer(s),o=new Uint8Array(i),a=new DataView(i),c=0;a.setUint32(c,Ir),c+=4,a.setUint32(c,t.version),c+=4,a.setUint32(c,n.length),c+=4;for(let d=0;d<n.length;d++){let h=n[d],m=r[d],y=c;a.setUint32(c,h.stat.ctimeSeconds),a.setUint32(c+4,h.stat.ctimeNanoseconds),a.setUint32(c+8,h.stat.mtimeSeconds),a.setUint32(c+12,h.stat.mtimeNanoseconds),a.setUint32(c+16,h.stat.dev),a.setUint32(c+20,h.stat.ino),a.setUint32(c+24,h.mode),a.setUint32(c+28,h.stat.uid),a.setUint32(c+32,h.stat.gid),a.setUint32(c+36,h.stat.size),c+=40;let p=ye(h.hash);o.set(p,c),c+=20;let b=Math.min(m.byteLength,4095),R=(h.stage&3)<<12|b;a.setUint16(c,R),c+=2,o.set(m,c),c+=m.byteLength,o[c]=0,c+=1;let v=62+m.byteLength+1,j=Math.ceil(v/8)*8;c=y+j}let l=o.subarray(0,c),f=await De(l),u=ye(f);return o.set(u,c),o}function tn(t,e){return t.path<e.path?-1:t.path>e.path?1:t.stage-e.stage}function Or(t){let e=[],n=t.length;for(;n>0;){let i=t.slice(0,n).match(/^(.+?)~(\d*)$/);if(i&&i[1]!==void 0&&i[2]!==void 0){let c=i[2]===""?1:parseInt(i[2],10);e.unshift({type:"tilde",n:c}),n=i[1].length;continue}let o=t.slice(0,n).match(/^(.+?)\^{([^}]*)}$/);if(o&&o[1]!==void 0&&o[2]!==void 0){e.unshift({type:"peel",target:o[2]}),n=o[1].length;continue}let a=t.slice(0,n).match(/^(.+?)\^(\d*)$/);if(a&&a[1]!==void 0&&a[2]!==void 0){let c=a[2]===""?1:parseInt(a[2],10);e.unshift({type:"caret",n:c}),n=a[1].length;continue}break}let r=t.slice(0,n),s=r.match(/^(.+?)@\{(\d+)\}$/);return s&&s[1]!==void 0&&s[2]!==void 0?{base:s[1],reflogIndex:parseInt(s[2],10),suffixes:e}:{base:r,suffixes:e}}var Rr=["HEAD","FETCH_HEAD","ORIG_HEAD","MERGE_HEAD","CHERRY_PICK_HEAD","REBASE_HEAD"];async function Pr(t,e){let n=await Yt(t,e);if(n.length===0)return null;if(n.length>1)throw new ct(e);return n[0]}var ct=class extends Error{constructor(n){super(`short object ID ${n} is ambiguous`);this.prefix=n}};async function kr(t,e){if(e==="HEAD"||e==="@")return re(t,"HEAD");if(Rr.includes(e))return re(t,e);if(/^[0-9a-f]{40}$/.test(e))return await Kt(t,e)?e:null;if(/^[0-9a-f]{4,39}$/.test(e)){let i=await Pr(t,e);if(i)return i}if(e.startsWith("refs/")){let i=await re(t,e);if(i)return i}let n=await re(t,`refs/heads/${e}`);if(n)return n;let r=await re(t,`refs/tags/${e}`);if(r)return r;let s=await re(t,`refs/remotes/${e}`);return s||null}async function Tr(t,e,n){if(n===""||n==="commit")try{return await ve(t,e)}catch{return null}if(n==="tree"){let s;try{s=await ve(t,e)}catch{return null}return(await A(t,s)).tree}return(await W(t,e)).type!==n?null:e}async function Sr(t,e,n){let r=e;n.some(i=>i.type==="tilde"||i.type==="caret")&&(r=await ve(t,r));for(let i of n)if(i.type==="peel"){if(!r)return null;r=await Tr(t,r,i.target)}else if(i.type==="tilde")for(let o=0;o<i.n;o++){if(!r)return null;let a=await A(t,r);if(a.parents.length===0||(r=a.parents[0]??null,!r))return null}else{if(i.n===0)continue;if(!r)return null;let o=await A(t,r);if(i.n>o.parents.length||(r=o.parents[i.n-1]??null,!r))return null}return r}async function Fe(t,e){let{base:n,reflogIndex:r,suffixes:s}=Or(e);if(r!==void 0)return null;let i=await kr(t,n);return i?Sr(t,i,s):null}var Gi=new TextEncoder;function se(t){return typeof t=="string"?t==="120000":t===40960}function nn(t){return{stdout:"",stderr:`fatal: ${t}
9
+ `,exitCode:128}}var Wi=nn("not a git repository (or any of the parent directories): .git"),zi=nn("this operation must be run in a work tree");function je(t,e){return t<e?-1:t>e?1:0}var Cr=new TextEncoder,rn=new TextDecoder,vr=new Set(["100644","100755","040000","120000","160000"]);function jr(t){return t.length===4&&t.toLowerCase()===".git"}function Ar(t,e){if(t.length===0)throw new Error("invalid tree entry: empty name");if(t.includes("/"))throw new Error(`invalid tree entry: name contains slash: '${t}'`);if(t.includes("\0"))throw new Error("invalid tree entry: name contains null byte");if(t==="."||t==="..")throw new Error(`invalid tree entry: '${t}'`);if(jr(t))throw new Error(`invalid tree entry: '${t}'`);if(!vr.has(e))throw new Error(`invalid tree entry mode: '${e}' for '${t}'`)}function Ae(t){let e=[],n=0;for(;n<t.byteLength;){let r=t.indexOf(32,n);if(r===-1)break;let s=rn.decode(t.subarray(n,r)),i=t.indexOf(0,r+1);if(i===-1)break;let o=rn.decode(t.subarray(r+1,i)),a=t.subarray(i+1,i+21),c=ke(a),l=s.padStart(6,"0");Ar(o,l),e.push({mode:l,name:o,hash:c}),n=i+21}return{type:"tree",entries:e}}function Ge(t){let e=[];for(let i of t.entries){let o=i.mode.replace(/^0+/,""),a=Cr.encode(`${o} ${i.name}\0`),c=ye(i.hash);e.push(a),e.push(c)}let n=e.reduce((i,o)=>i+o.byteLength,0),r=new Uint8Array(n),s=0;for(let i of e)r.set(i,s),s+=i.byteLength;return r}async function lt(t,e){return sn(t,e,"")}async function sn(t,e,n){let r=[],s=new Map;for(let o of e){let a=n?o.path.slice(n.length+1):o.path,c=a.indexOf("/");if(c===-1)r.push({mode:$r(o.mode),name:a,hash:o.hash});else{let l=a.slice(0,c),f=s.get(l);f||(f=[],s.set(l,f)),f.push(o)}}for(let[o,a]of s){let c=n?`${n}/${o}`:o,l=await sn(t,a,c);r.push({mode:F.DIRECTORY,name:o,hash:l})}r.sort((o,a)=>{let c=o.mode===F.DIRECTORY?`${o.name}/`:o.name,l=a.mode===F.DIRECTORY?`${a.name}/`:a.name;return c<l?-1:c>l?1:0});let i=Ge({type:"tree",entries:r});return _(t,"tree",i)}async function J(t,e,n=""){let r=await W(t,e);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let s=Ae(r.content),i=[];for(let o of s.entries){let a=n?`${n}/${o.name}`:o.name;if(o.mode===F.DIRECTORY){let c=await J(t,o.hash,a);i.push(...c)}else i.push({path:a,mode:o.mode,hash:o.hash})}return i}async function ce(t,e){if(!e)return new Map;let n=await J(t,e);return new Map(n.map(r=>[r.path,r]))}async function ie(t,e,n){let r=await ce(t,e),s=await ce(t,n),i=[];for(let[o,a]of r){let c=s.get(o);c?(a.hash!==c.hash||a.mode!==c.mode)&&i.push({path:o,status:"modified",oldHash:a.hash,newHash:c.hash,oldMode:a.mode,newMode:c.mode}):i.push({path:o,status:"deleted",oldHash:a.hash,oldMode:a.mode})}for(let[o,a]of s)r.has(o)||i.push({path:o,status:"added",newHash:a.hash,newMode:a.mode});return i.sort((o,a)=>je(o.path,a.path))}function $r(t){return t.toString(8).padStart(6,"0")}function Lr(t){let e=Math.min(t.length,8e3),n=0;for(let r=0;r<e;r++)t.charCodeAt(r)===0&&n++;return n>e*.01}function on(t,e,n,r){if(Lr(t)){let o=e.some(a=>a.test(t));return{matches:[],binary:o}}let s=t.split(`
10
+ `);if(s.length>0&&s[s.length-1]===""&&s.pop(),n&&e.length>1&&!e.every(a=>s.some(c=>a.test(c))))return{matches:[],binary:!1};let i=[];for(let o=0;o<s.length;o++){let a=s[o],c=e.some(l=>l.test(a));(r?!c:c)&&i.push({lineNo:o+1,line:a})}return{matches:i,binary:!1}}function Mr(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function an(t,e){let n=e?.fixed?Mr(t):t;e?.wordRegexp&&(n=`\\b${n}\\b`);let r=e?.ignoreCase?"i":"";try{return new RegExp(n,r)}catch{return null}}async function Dr(t,e){return re(t,e)}async function Hr(t){return at(t,"refs/heads")}async function Ur(t){return at(t,"refs/tags")}async function Nr(t,e){return A(t,e)}async function Br(t,e){return ne(t,e)}async function Fr(t,e){return H(t,e)}async function Gr(t,e,n){let r=await A(t,e),i=(await J(t,r.tree)).find(o=>o.path===n);return i?H(t,i.hash):null}function _r(t){let e=0;for(let n=0;n<t.length;n++)t[n]==="/"&&e++;return e}function Wr(t,e){let n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"\0").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").replace(/\0/g,".*");return new RegExp(`^${n}$`).test(e)}async function zr(t,e,n,r){let s=[];for(let m of n)if(m instanceof RegExp)s.push(m);else{let y=an(m,{fixed:r?.fixed,ignoreCase:r?.ignoreCase,wordRegexp:r?.wordRegexp});if(!y)throw new Error(`Invalid pattern: ${m}`);s.push(y)}let i=await A(t,e),a=(await J(t,i.tree)).filter(m=>!m.mode.startsWith("120")).sort((m,y)=>m.path<y.path?-1:m.path>y.path?1:0),c=r?.allMatch??!1,l=r?.invert??!1,f=r?.maxCount,u=r?.maxDepth,d=r?.paths,h=[];for(let m of a){if(u!==void 0&&_r(m.path)>u||d&&!d.some(R=>Wr(R,m.path)))continue;let y=await H(t,m.hash),p=on(y,s,c,l);if(p.binary){h.push({path:m.path,matches:[],binary:!0});continue}if(p.matches.length===0)continue;let b=f!==void 0?p.matches.slice(0,f):p.matches;h.push({path:m.path,matches:b,binary:!1})}return h}function ee(t){if(t.length===0)return[];let e=t.split(`
11
+ `);return e[e.length-1]===""&&e.pop(),e}var Vr=4,cn=1024,_e=100,Ve=0,We=1,we=2;function ut(t){let e=1;for(;e*e<t;)e++;return e}function Kr(t,e){let n=new Map,r=[],s=new Array(t.length),i=new Array(e.length);for(let o=0;o<t.length;o++){let a=t[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len1++,s[o]=c}for(let o=0;o<e.length;o++){let a=e[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len2++,i[o]=c}return{classes1:s,classes2:i,classInfo:r}}function Yr(t,e,n,r){let s=0,i=Math.min(e,r);for(;s<i&&t[s]===n[s];)s++;let o=s,a=0,c=i-o;for(;a<c&&t[e-1-a]===n[r-1-a];)a++;return{dstart:o,dend1:e-a-1,dend2:r-a-1}}function ln(t,e,n,r){e-n>_e&&(n=e-_e),r-e>_e&&(r=e+_e);let s=0,i=1;for(let c=1;e-c>=n;c++){let l=t[e-c];if(l===Ve)s++;else if(l===we)i++;else break}if(s===0)return!1;let o=0,a=1;for(let c=1;e+c<=r;c++){let l=t[e+c];if(l===Ve)o++;else if(l===we)a++;else break}return o===0?!1:(o+=s,a+=i,a*Vr<a+o)}function qr(t,e,n,r,s,i,o,a,c,l){let f=new Uint8Array(e),u=new Uint8Array(r),d=Math.min(ut(e),cn);for(let p=i;p<=o;p++){let b=s[t[p]].len2;b===0?f[p]=Ve:b>=d?f[p]=we:f[p]=We}let h=Math.min(ut(r),cn);for(let p=i;p<=a;p++){let b=s[n[p]].len1;b===0?u[p]=Ve:b>=h?u[p]=we:u[p]=We}let m=[];for(let p=i;p<=o;p++)f[p]===We||f[p]===we&&!ln(f,p,i,o)?m.push(p):c[p]=1;let y=[];for(let p=i;p<=a;p++)u[p]===We||u[p]===we&&!ln(u,p,i,a)?y.push(p):l[p]=1;return{refIndex1:m,nreff1:m.length,refIndex2:y,nreff2:y.length}}var le=20,fn=4,Xr=256,Zr=256,ze=2147483647;function z(t,e){return t[e]??0}function Jr(t,e,n,r,s,i,o,a,c,l){let f=e-i,u=n-s,d=e-s,h=n-i,m=d-h&1,y=d,p=d,b=h,R=h;o[d]=e,a[h]=n;for(let v=1;;v++){let j=!1;y>f?o[--y-1]=-1:++y,p<u?o[++p+1]=-1:--p;for(let O=p;O>=y;O-=2){let w;z(o,O-1)>=z(o,O+1)?w=z(o,O-1)+1:w=z(o,O+1);let x=w,S=w-O;for(;w<n&&S<i&&t[w]===r[S];)w++,S++;if(w-x>le&&(j=!0),o[O]=w,m&&b<=O&&O<=R&&z(a,O)<=w)return{i1:w,i2:S,minLo:!0,minHi:!0}}b>f?a[--b-1]=ze:++b,R<u?a[++R+1]=ze:--R;for(let O=R;O>=b;O-=2){let w;z(a,O-1)<z(a,O+1)?w=z(a,O-1):w=z(a,O+1)-1;let x=w,S=w-O;for(;w>e&&S>s&&t[w-1]===r[S-1];)w--,S--;if(x-w>le&&(j=!0),a[O]=w,!m&&y<=O&&O<=p&&w<=z(o,O))return{i1:w,i2:S,minLo:!0,minHi:!0}}if(!c){if(j&&v>Xr){let O=0,w=null;for(let x=p;x>=y;x-=2){let S=x>d?x-d:d-x,E=z(o,x),P=E-x,T=E-e+(P-s)-S;if(T>fn*v&&T>O&&e+le<=E&&E<n&&s+le<=P&&P<i){let $=!0;for(let D=1;D<=le;D++)if(t[E-D]!==r[P-D]){$=!1;break}$&&(O=T,w={i1:E,i2:P,minLo:!0,minHi:!1})}}if(w)return w;O=0,w=null;for(let x=R;x>=b;x-=2){let S=x>h?x-h:h-x,E=z(a,x),P=E-x,T=n-E+(i-P)-S;if(T>fn*v&&T>O&&e<E&&E<=n-le&&s<P&&P<=i-le){let $=!0;for(let D=0;D<le;D++)if(t[E+D]!==r[P+D]){$=!1;break}$&&(O=T,w={i1:E,i2:P,minLo:!1,minHi:!0})}}if(w)return w}if(v>=l){let O=-1,w=-1;for(let E=p;E>=y;E-=2){let P=Math.min(z(o,E),n),T=P-E;i<T&&(P=i+E,T=i),O<P+T&&(O=P+T,w=P)}let x=ze,S=ze;for(let E=R;E>=b;E-=2){let P=Math.max(e,z(a,E)),T=P-E;T<s&&(P=s+E,T=s),P+T<x&&(x=P+T,S=P)}return n+i-x<O-(e+s)?{i1:w,i2:O-w,minLo:!0,minHi:!1}:{i1:S,i2:x-S,minLo:!1,minHi:!0}}}}}function ht(t,e,n,r,s,i,o,a,c,l,f,u,d,h){for(;e<n&&s<i&&t[e]===r[s];)e++,s++;for(;e<n&&s<i&&t[n-1]===r[i-1];)n--,i--;if(e===n)for(let m=s;m<i;m++)a[l[m]]=1;else if(s===i)for(let m=e;m<n;m++)o[c[m]]=1;else{let m=Jr(t,e,n,r,s,i,f,u,d,h);ht(t,e,m.i1,r,s,m.i2,o,a,c,l,f,u,m.minLo,h),ht(t,m.i1,n,r,m.i2,i,o,a,c,l,f,u,m.minHi,h)}}function Qr(t,e,n,r){let s=[],i=0,o=0,a=1,c=1;for(;i<t.length||o<e.length;){if(i<t.length&&o<e.length&&!n[i]&&!r[o]){s.push({type:"keep",line:t[i]??"",oldLineNo:a++,newLineNo:c++}),i++,o++;continue}for(;i<t.length&&n[i];)s.push({type:"delete",line:t[i]??"",oldLineNo:a++,newLineNo:0}),i++;for(;o<e.length&&r[o];)s.push({type:"insert",line:e[o]??"",oldLineNo:0,newLineNo:c++}),o++}return s}var un=200,hn=20,dn=100,es=1,ts=21,ns=-30,rs=6,ss=-4,is=10,os=24,as=17,cs=23,ls=17,fs=60;function ft(t){let e=0;for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(r===32)e+=1;else if(r===9)e+=8-e%8;else if(!(r===10||r===13||r===11||r===12))return e;if(e>=un)return un}return-1}function mn(t,e,n){let r={endOfFile:!1,indent:-1,preBlank:0,preIndent:-1,postBlank:0,postIndent:-1};n>=e?(r.endOfFile=!0,r.indent=-1):(r.endOfFile=!1,r.indent=ft(t[n]));for(let s=n-1;s>=0&&(r.preIndent=ft(t[s]),r.preIndent===-1);s--)if(r.preBlank+=1,r.preBlank===hn){r.preIndent=0;break}for(let s=n+1;s<e&&(r.postIndent=ft(t[s]),r.postIndent===-1);s++)if(r.postBlank+=1,r.postBlank===hn){r.postIndent=0;break}return r}function pn(t,e){t.preIndent===-1&&t.preBlank===0&&(e.penalty+=es),t.endOfFile&&(e.penalty+=ts);let n=t.indent===-1?1+t.postBlank:0,r=t.preBlank+n;e.penalty+=ns*r,e.penalty+=rs*n;let s=t.indent!==-1?t.indent:t.postIndent,i=r!==0;e.effectiveIndent+=s,s===-1||t.preIndent===-1||(s>t.preIndent?e.penalty+=i?is:ss:s===t.preIndent||(t.postIndent!==-1&&t.postIndent>s?e.penalty+=i?as:os:e.penalty+=i?ls:cs))}function us(t,e){let n=(t.effectiveIndent>e.effectiveIndent?1:0)-(t.effectiveIndent<e.effectiveIndent?1:0);return fs*n+(t.penalty-e.penalty)}function yn(t,e,n,r,s,i){let o=0,a=0;for(;t[a];)a++;let c=0,l=0;for(;s[l];)l++;let f=(u,d)=>e[u]===e[d];for(;;){if(a!==o){let u,d,h;do{for(u=a-o,d=-1;o>0&&f(o-1,a-1);){for(t[--o]=1,t[--a]=0;t[o-1];)o--;if(c===0)break;for(l=c-1,c=l;s[c-1];c--);}for(h=a,l>c&&(d=a);!(a>=r||!f(o,a));){for(t[o++]=0,t[a++]=1;t[a];)a++;if(l>=i)break;for(c=l+1,l=c;s[l];l++);l>c&&(d=a)}}while(u!==a-o);if(a!==h)if(d!==-1)for(;l===c;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(l=c-1,c=l;s[c-1];c--);}else{let m=-1,y={effectiveIndent:0,penalty:0},p=h;for(a-u-1>p&&(p=a-u-1),a-dn>p&&(p=a-dn);p<=a;p++){let b={effectiveIndent:0,penalty:0},R=mn(n,r,p);pn(R,b);let v=mn(n,r,p-u);pn(v,b),(m===-1||us(b,y)<=0)&&(y={effectiveIndent:b.effectiveIndent,penalty:b.penalty},m=p)}for(;a>m;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(l=c-1,c=l;s[c-1];c--);}}}if(a>=r)break;for(o=a+1,a=o;t[a];a++);if(l>=i)break;for(c=l+1,l=c;s[l];l++);}}function dt(t,e){let n=t.length,r=e.length,s=new Uint8Array(n),i=new Uint8Array(r);if(n>0&&r>0){let{classes1:o,classes2:a,classInfo:c}=Kr(t,e),{dstart:l,dend1:f,dend2:u}=Yr(o,n,a,r);if(l>f)for(let d=l;d<r-(n-1-f);d++)i[d]=1;else if(l>u)for(let d=l;d<n-(r-1-u);d++)s[d]=1;else{let{refIndex1:d,nreff1:h,refIndex2:m,nreff2:y}=qr(o,n,a,r,c,l,f,u,s,i);if(h>0&&y>0){let p=new Array(h);for(let w=0;w<h;w++)p[w]=o[d[w]];let b=new Array(y);for(let w=0;w<y;w++)b[w]=a[m[w]];let R={},v={},j=h+y+3,O=Math.max(Zr,ut(j));ht(p,0,h,b,0,y,s,i,d,m,R,v,!1,O)}else if(h===0)for(let p=0;p<y;p++)i[m[p]]=1;else for(let p=0;p<h;p++)s[d[p]]=1;yn(s,o,t,n,i,r),yn(i,a,e,r,s,n)}}else n===0?i.fill(1):s.fill(1);return{changedOld:s,changedNew:i}}function Ie(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return e.map((o,a)=>({type:"insert",line:o,oldLineNo:0,newLineNo:a+1}));if(r===0)return t.map((o,a)=>({type:"delete",line:o,oldLineNo:a+1,newLineNo:0}));let{changedOld:s,changedNew:i}=dt(t,e);return Qr(t,e,s,i)}var hs=3;function gn(t,e=hs){if(e=Math.max(0,e),t.length===0)return[];let n=[];for(let a=0;a<t.length;a++){let c=t[a];c&&c.type!=="keep"&&n.push(a)}if(n.length===0)return[];let r=n[0]??0,s=[],i=Math.max(0,r-e),o=Math.min(t.length-1,r+e);for(let a=1;a<n.length;a++){let c=n[a]??0,l=Math.max(0,c-e),f=Math.min(t.length-1,c+e);l<=o+1||(s.push({start:i,end:o}),i=l),o=f}return s.push({start:i,end:o}),s.map(a=>ds(t,a.start,a.end))}function ds(t,e,n){let r=0,s=0,i=0,o=0,a=[],c=!1,l=!1;for(let f=e;f<=n;f++){let u=t[f];if(u)switch(u.type){case"keep":c||(r=u.oldLineNo,c=!0),l||(i=u.newLineNo,l=!0),s++,o++,a.push({type:"context",content:u.line});break;case"delete":c||(r=u.oldLineNo,c=!0),s++,a.push({type:"delete",content:u.line});break;case"insert":l||(i=u.newLineNo,l=!0),o++,a.push({type:"insert",content:u.line});break}}if(c||(r=i>0?i:1),l||(i=r>0?r:1),s===0)for(let f=e;f<=n;f++){let u=t[f];if(u&&u.type==="insert"){r=u.newLineNo>1?u.newLineNo-1:0;break}}if(o===0)for(let f=e;f<=n;f++){let u=t[f];if(u&&u.type==="delete"){i=u.oldLineNo>1?u.oldLineNo-1:0;break}}return{oldStart:r,oldCount:s,newStart:i,newCount:o,lines:a}}function Ee(t){let e=t.lastIndexOf("/");return e>=0?t.slice(e+1):t}function ms(t,e){if(t.length===0)return;if(t.length===1)return t.shift();let n=Ee(e),r=0;for(let s=0;s<t.length;s++){let i=t[s];if(i&&Ee(i.path)===n){r=s;break}}return t.splice(r,1)[0]}var ps=50;async function de(t,e,n=ps){let r=new Map,s=[],i=[],o=[];for(let f of e)if(f.status==="deleted"&&f.oldHash){let u=r.get(f.oldHash)??[];u.push(f),r.set(f.oldHash,u),s.push(f)}else f.status==="added"&&f.newHash?i.push(f):o.push(f);let a=[],c=[];for(let f of i){let u=f.newHash;if(!u){c.push(f);continue}let d=r.get(u);if(d&&d.length>0){let h=ms(d,f.path);h&&a.push({oldPath:h.path,newPath:f.path,oldHash:h.oldHash??u,newHash:u,similarity:100,oldMode:h.oldMode,newMode:f.newMode})}else c.push(f)}let l=[...r.values()].flat();if(l.length>0&&c.length>0){let f=await ys(t,l,c,n);if(f.length>0){let u=new Set(f.map(h=>h.oldPath)),d=new Set(f.map(h=>h.newPath));l=l.filter(h=>!u.has(h.path)),c=c.filter(h=>!d.has(h.path)),a.push(...f)}}if(l.length>0&&c.length>0){let f=await ws(t,l,c,n);if(f.length>0){let u=new Set(f.map(h=>h.oldPath)),d=new Set(f.map(h=>h.newPath));l=l.filter(h=>!u.has(h.path)),c=c.filter(h=>!d.has(h.path)),a.push(...f)}}return{remaining:[...o,...l,...c],renames:a}}async function ys(t,e,n,r){let s=new Map;for(let a=0;a<e.length;a++){let c=e[a];if(!c)continue;let l=Ee(c.path);s.has(l)?s.set(l,-1):s.set(l,a)}let i=new Map;for(let a=0;a<n.length;a++){let c=n[a];if(!c)continue;let l=Ee(c.path);i.has(l)?i.set(l,-1):i.set(l,a)}let o=[];for(let[a,c]of s){if(c===-1)continue;let l=i.get(a);if(l===void 0||l===-1)continue;let f=e[c],u=n[l];if(!f?.oldHash||!u?.newHash||f.oldHash===u.newHash)continue;let d=await ne(t,f.oldHash),h=await ne(t,u.newHash),m=bs(d,h);m<r||o.push({oldPath:f.path,newPath:u.path,oldHash:f.oldHash,newHash:u.newHash,similarity:m,oldMode:f.oldMode,newMode:u.newMode})}return o}var bn=107927;function Ke(t){let e=new Map,n=0,r=0,s=0;for(let o=0;o<t.length;o++){let a=t[o],c=r;if(r=(r<<7^s>>>25)>>>0,s=(s<<7^c>>>25)>>>0,r=r+a>>>0,n++,n<64&&a!==10)continue;let l=(r+Math.imul(s,97))%bn;e.set(l,(e.get(l)??0)+n),n=0,r=0,s=0}if(n>0){let o=(r+Math.imul(s,97))%bn;e.set(o,(e.get(o)??0)+n)}let i=[];for(let[o,a]of e)i.push({hash:o,count:a});return i.sort((o,a)=>o.hash-a.hash),i}function gs(t,e){let n=0,r=0,s=0,i=0;for(;s<t.length;){let o=t[s];if(!o)break;for(;i<e.length;){let l=e[i];if(!l||l.hash>=o.hash)break;r+=l.count,i++}let a=o.count,c=0;if(i<e.length){let l=e[i];l&&l.hash===o.hash&&(c=l.count,i++)}a<c?(r+=c-a,n+=a):n+=c,s++}for(;i<e.length;){let o=e[i];o&&(r+=o.count),i++}return{srcCopied:n,literalAdded:r}}function bs(t,e){return t.length===0&&e.length===0?100:t.length===0||e.length===0?0:wn(t.length,Ke(t),e.length,Ke(e))}function wn(t,e,n,r){let s=Math.max(t,n),i=Math.min(t,n);if(i<s-i)return 0;let{srcCopied:o}=gs(e,r);return Math.floor(o*100/s)}async function ws(t,e,n,r){let s=[];for(let f of e)if(f.oldHash){let u=await ne(t,f.oldHash);s.push({size:u.length,chunks:Ke(u)})}else s.push(null);let i=[];for(let f of n)if(f.newHash){let u=await ne(t,f.newHash);i.push({size:u.length,chunks:Ke(u)})}else i.push(null);let o=[];for(let f=0;f<e.length;f++){let u=e[f],d=s[f];if(!(!u||!d))for(let h=0;h<n.length;h++){let m=n[h],y=i[h];if(!m||!y)continue;let p=wn(d.size,d.chunks,y.size,y.chunks);if(p>=r){let b=Ee(u.path)===Ee(m.path)?1:0;o.push({similarity:p,nameScore:b,delIdx:f,addIdx:h})}}}o.sort((f,u)=>u.similarity-f.similarity||u.nameScore-f.nameScore);let a=new Set,c=new Set,l=[];for(let{similarity:f,delIdx:u,addIdx:d}of o){if(a.has(u)||c.has(d))continue;a.add(u),c.add(d);let h=e[u],m=n[d];!h||!m||l.push({oldPath:h.path,newPath:m.path,oldHash:h.oldHash??"",newHash:m.newHash??"",similarity:f,oldMode:h.oldMode,newMode:m.newMode})}return l}async function fe(t,e,n){return(await ce(t,e)).get(n)?.hash??null}async function In(t,e,n,r){let s=await ie(t,e,n);if(!s.find(c=>c.status==="added"&&c.path===r))return null;let{renames:o}=await de(t,s);return o.find(c=>c.newPath===r)?.oldPath??null}async function Is(t,e,n,r,s,i){let o=await fe(t,(await A(t,e)).tree,n);if(!o){let y=new Map,p=await A(t,e);for(let b of r)y.set(b.finalIdx,ue(e,n,b.currentLine,i+b.finalIdx,s[b.finalIdx],p,!1,void 0));return y}let a=await H(t,o),c=ee(a),l=new Array(s.length),f=[...r],u=e,d=n,h=c;for(;f.length>0;){let y=await A(t,u);if(y.parents.length===0){for(let E of f)l[E.finalIdx]=ue(u,d,E.currentLine,i+E.finalIdx,s[E.finalIdx],y,!0,void 0);break}let p=await fe(t,y.tree,d),b=null,R=[];for(let E of y.parents){let P=await A(t,E),T=d,$=await fe(t,P.tree,T);if(!$){let D=await In(t,P.tree,y.tree,d);D&&(T=D,$=await fe(t,P.tree,T))}if($&&(R.push({hash:E,path:T,blobHash:$}),$===p)){b={hash:E,path:T};break}}if(b){u=b.hash,d=b.path;continue}if(R.length===0){for(let E of f)l[E.finalIdx]=ue(u,d,E.currentLine,i+E.finalIdx,s[E.finalIdx],y,!1,void 0);break}let v=R[0],j=await H(t,v.blobHash),O=ee(j),w=Ie(O,h),x=new Map;for(let E of w)E.type==="keep"&&x.set(E.newLineNo,E.oldLineNo);let S=[];for(let E of f){let P=x.get(E.currentLine);P!==void 0?S.push({finalIdx:E.finalIdx,currentLine:P}):l[E.finalIdx]=ue(u,d,E.currentLine,i+E.finalIdx,s[E.finalIdx],y,!1,{hash:v.hash,path:v.path})}f=S,u=v.hash,d=v.path,h=O}let m=new Map;for(let y of r)l[y.finalIdx]&&m.set(y.finalIdx,l[y.finalIdx]);return m}async function En(t,e,n,r){let s=await A(t,e),i=await fe(t,s.tree,n);if(!i)throw new Error(`no such path '${n}' in ${e.slice(0,7)}`);let o=await H(t,i),a=ee(o),c=r?.startLine??1,l=r?.endLine??a.length,f=a.slice(c-1,l),u=new Array(f.length),d=f.map((p,b)=>({finalIdx:b,currentLine:c+b})),h=e,m=n,y=a;for(;d.length>0;){let p=await A(t,h);if(p.parents.length===0){for(let x of d)u[x.finalIdx]=ue(h,m,x.currentLine,c+x.finalIdx,f[x.finalIdx],p,!0,void 0);break}let b=await fe(t,p.tree,m),R=[],v=null;for(let x of p.parents){let S=await A(t,x),E=m,P=await fe(t,S.tree,E);if(!P){let T=await In(t,S.tree,p.tree,m);T&&(E=T,P=await fe(t,S.tree,E))}if(P){let T={hash:x,path:E,blobHash:P};if(R.push(T),P===b){v=T;break}}}if(v){h=v.hash,m=v.path;continue}if(R.length===0){for(let x of d)u[x.finalIdx]=ue(h,m,x.currentLine,c+x.finalIdx,f[x.finalIdx],p,!1,void 0);break}if(R.length===1){let x=R[0],S=await H(t,x.blobHash),E=ee(S),P=Ie(E,y),T=new Map;for(let D of P)D.type==="keep"&&T.set(D.newLineNo,D.oldLineNo);let $=[];for(let D of d){let oe=T.get(D.currentLine);oe!==void 0?$.push({finalIdx:D.finalIdx,currentLine:oe}):u[D.finalIdx]=ue(h,m,D.currentLine,c+D.finalIdx,f[D.finalIdx],p,!1,{hash:x.hash,path:x.path})}d=$,h=x.hash,m=x.path,y=E;continue}let j=[];for(let x of R){let S=await H(t,x.blobHash),E=ee(S),P=Ie(E,y),T=new Map;for(let $ of P)$.type==="keep"&&T.set($.newLineNo,$.oldLineNo);j.push({info:x,newToOld:T})}let O=new Map;for(let x of d){let S=!1;for(let E=0;E<j.length;E++){let P=j[E],T=P.newToOld.get(x.currentLine);if(T!==void 0){let $=O.get(E);$||($={info:P.info,lines:[]},O.set(E,$)),$.lines.push({finalIdx:x.finalIdx,currentLine:T}),S=!0;break}}S||(u[x.finalIdx]=ue(h,m,x.currentLine,c+x.finalIdx,f[x.finalIdx],p,!1,{hash:R[0].hash,path:R[0].path}))}let w=O.get(0);for(let[x,S]of O){if(x===0)continue;let E=await Is(t,S.info.hash,S.info.path,S.lines,f,c);for(let[P,T]of E)u[P]=T}if(w&&w.lines.length>0){d=w.lines,h=w.info.hash,m=w.info.path;let x=await H(t,w.info.blobHash);y=ee(x)}else break}return u}function ue(t,e,n,r,s,i,o,a){return{hash:t,origPath:e,origLine:n,finalLine:r,content:s,author:i.author,committer:i.committer,summary:i.message.split(`
12
+ `)[0],boundary:o,previous:a}}var xe=class{heap=[];nextEpoch=0;get size(){return this.heap.length}push(e){this.heap.push({entry:e,epoch:this.nextEpoch++}),this.siftUp(this.heap.length-1)}pop(){let{heap:e}=this;if(e.length===0)return;let n=e[0],r=e.pop();return e.length>0&&(e[0]=r,this.siftDown(0)),n.entry}higher(e,n){let r=e.entry.commit.committer.timestamp,s=n.entry.commit.committer.timestamp;return r>s||r===s&&e.epoch<n.epoch}siftUp(e){let{heap:n}=this;for(;e>0;){let r=e-1>>1;if(!this.higher(n[e],n[r]))break;[n[r],n[e]]=[n[e],n[r]],e=r}}siftDown(e){let{heap:n}=this,r=n.length;for(;;){let s=e,i=2*e+1,o=2*e+2;if(i<r&&this.higher(n[i],n[s])&&(s=i),o<r&&this.higher(n[o],n[s])&&(s=o),s===e)break;[n[e],n[s]]=[n[s],n[e]],e=s}}};async function*me(t,e,n){if(n?.topoOrder){yield*Es(t,e,n);return}let r=await On(t,n?.exclude),s=new Set(r),i=new xe,o=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let c of a)s.has(c)||i.push(await Ye(t,c));for(;i.size>0;){let c=i.pop();if(s.has(c.hash)||(s.add(c.hash),yield c,o?.has(c.hash)))continue;let l=n?.firstParent?c.commit.parents.slice(0,1):c.commit.parents;for(let f of l)if(!s.has(f))try{i.push(await Ye(t,f))}catch{}}}async function*Es(t,e,n){let r=await On(t,n?.exclude),s=new Set(r),i=new xe,o=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let h of a)s.has(h)||i.push(await Ye(t,h));let c=[],l=new Map;for(;i.size>0;){let h=i.pop();if(s.has(h.hash)||(s.add(h.hash),l.set(h.hash,c.length),c.push(h),o?.has(h.hash)))continue;let m=n?.firstParent?h.commit.parents.slice(0,1):h.commit.parents;for(let y of m)if(!s.has(y))try{i.push(await Ye(t,y))}catch{}}let f=c.length;if(f===0)return;let u=new Int32Array(f);for(let h of c){let m=n?.firstParent?h.commit.parents.slice(0,1):h.commit.parents;for(let y of m){let p=l.get(y);p!==void 0&&(u[p]=(u[p]??0)+1)}}let d=[];for(let h=f-1;h>=0;h--)u[h]===0&&d.push(h);for(;d.length>0;){let h=d.pop();yield c[h];let m=n?.firstParent?c[h].commit.parents.slice(0,1):c[h].commit.parents;for(let y of m){let p=l.get(y);if(p!==void 0){let b=(u[p]??0)-1;u[p]=b,b===0&&d.push(p)}}}}async function xn(t,e,n){if(e===n)return{ahead:0,behind:0};let r=new Set;for await(let a of me(t,e))r.add(a.hash);let s=new Set;for await(let a of me(t,n))s.add(a.hash);let i=0;for(let a of r)s.has(a)||i++;let o=0;for(let a of s)r.has(a)||o++;return{ahead:i,behind:o}}async function On(t,e){if(!e||e.length===0)return new Set;let n=new Set;for await(let r of me(t,e))n.add(r.hash);return n}async function Ye(t,e){return{hash:e,commit:await A(t,e)}}async function xs(t,e){let n=new Set,r=[e],s=0;for(;s<r.length;){let i=r[s++];if(n.has(i))continue;n.add(i);let o;try{o=await A(t,i)}catch{continue}for(let a of o.parents)n.has(a)||r.push(a)}return n}async function mt(t,e,n){if(e===n)return!0;let r=new Set,s=[n],i=0;for(;i<s.length;){let o=s[i++];if(o===e)return!0;if(r.has(o))continue;r.add(o);let a;try{a=await A(t,o)}catch{continue}for(let c of a.parents)r.has(c)||s.push(c)}return!1}async function $e(t,e,n){if(e===n)return[e];let r=await xs(t,e),s=[],i=new Set,o=[n],a=0;for(;a<o.length;){let l=o[a++];if(i.has(l))continue;if(i.add(l),r.has(l)){s.push(l);continue}let f;try{f=await A(t,l)}catch{continue}for(let u of f.parents)i.has(u)||o.push(u)}if(s.length<=1)return s;let c=[];for(let l of s){let f=!1;for(let u of s)if(u!==l&&await mt(t,l,u)){f=!0;break}f||c.push(l)}return c.length<=1?c:Os(t,e,n,c)}async function Os(t,e,n,r){let s=new Set(r),i=new Set,o=[],a=new Map,c=new Map,l=0,f=[{hash:e,mask:1,seq:l++},{hash:n,mask:2,seq:l++}];async function u(d){let h=c.get(d);if(h!==void 0)return h;let m=(await A(t,d)).committer.timestamp;return c.set(d,m),m}for(;f.length>0;){let d=0,h=await u(f[0].hash);for(let R=1;R<f.length;R++){let v=f[R],j=await u(v.hash),O=f[d];(j>h||j===h&&v.seq<O.seq)&&(d=R,h=j)}let m=f.splice(d,1)[0],y=a.get(m.hash)??0,p=y|m.mask;if(p===y)continue;if(a.set(m.hash,p),p===3&&s.has(m.hash)&&!i.has(m.hash)&&(o.push(m.hash),i.add(m.hash),i.size===s.size))break;let b=await A(t,m.hash);for(let R of b.parents)f.push({hash:R,mask:p,seq:l++})}for(let d of r)i.has(d)||o.push(d);return o}async function Rs(t,e){return J(t,e)}async function Ps(t,e,n){return ie(t,e,n)}async function ks(t,e,n){let r=await A(t,n),s=null;return e&&(s=(await A(t,e)).tree),ie(t,s,r.tree)}async function*Ts(t,e,n){let r=e?[e]:[];for await(let s of me(t,n,{exclude:r}))yield{hash:s.hash,message:s.commit.message,tree:s.commit.tree,parents:s.commit.parents,author:s.commit.author,committer:s.commit.committer}}async function Ss(t,e,n){return mt(t,e,n)}async function Cs(t,e,n){return $e(t,e,n)}async function vs(t,e,n){return xn(t,e,n)}async function js(t,e,n,r){return En(t,e,n,r)}function As(t){return t==="insert"?"+":t==="delete"?"-":" "}function $s(t){return{oldStart:t.oldStart,oldCount:t.oldCount,newStart:t.newStart,newCount:t.newCount,lines:t.lines.map(e=>As(e.type)+e.content)}}function Rn(t,e,n){let r=ee(t),s=ee(e),i=Ie(r,s);return gn(i,n).map($s)}async function Pn(t,e){let n=await Fe(t,e);if(n)return n;throw new Error(`ref or commit '${e}' not found`)}async function Ls(t,e,n,r){let s=await Pn(t,e),i=await Pn(t,n),o=await A(t,s),a=await A(t,i),c=await ie(t,o.tree,a.tree),l=r?.renames!==!1,f=r?.contextLines,u=r?.paths,d=[];if(l){let m=await de(t,c);c=m.remaining,d=m.renames}let h=[];for(let m of c){if(u&&!u.some(R=>m.path.startsWith(R)))continue;let y=m.oldHash?await H(t,m.oldHash):"",p=m.newHash?await H(t,m.newHash):"",b=Rn(y,p,f);h.push({path:m.path,status:m.status,hunks:b})}for(let m of d){if(u&&!u.some(R=>m.newPath.startsWith(R)||m.oldPath.startsWith(R)))continue;let y=await H(t,m.oldHash),p=await H(t,m.newHash),b=Rn(y,p,f);h.push({path:m.newPath,status:"renamed",oldPath:m.oldPath,similarity:m.similarity,hunks:b})}return h.sort((m,y)=>m.path.localeCompare(y.path)),h}async function*Ms(t,e,n){if(n?.paths&&n.paths.length>0){yield*Ds(t,e,n.paths,n);return}for await(let r of me(t,e,n))yield{hash:r.hash,message:r.commit.message,tree:r.commit.tree,parents:r.commit.parents,author:r.commit.author,committer:r.commit.committer}}function pt(t,e){return e.some(n=>t===n||t.startsWith(n.endsWith("/")?n:n+"/"))}async function*Ds(t,e,n,r){let s=new Set;if(r?.exclude)for await(let l of me(t,r.exclude))s.add(l.hash);let i=new Set(s),o=new xe,a=async l=>{if(!i.has(l))try{let f=await A(t,l);o.push({hash:l,commit:f})}catch{}},c=Array.isArray(e)?e:[e];for(let l of c)await a(l);for(;o.size>0;){let l=o.pop();if(i.has(l.hash))continue;i.add(l.hash);let{commit:f}=l,u=r?.firstParent?f.parents.slice(0,1):f.parents,d=()=>({hash:l.hash,message:f.message,tree:f.tree,parents:f.parents,author:f.author,committer:f.committer});if(u.length===0){(await ie(t,null,f.tree)).some(y=>pt(y.path,n))&&(yield d());continue}if(u.length===1){let m=u[0];try{let y=await A(t,m);(await ie(t,y.tree,f.tree)).some(b=>pt(b.path,n))&&(yield d())}catch{yield d()}await a(m);continue}let h=[];for(let m of u)try{let y=await A(t,m);(await ie(t,y.tree,f.tree)).some(b=>pt(b.path,n))||h.push(m)}catch{}if(h.length>0)await a(h[0]);else{yield d();for(let m of u)await a(m)}}}async function Hs(t,e){let n=Ne({type:"commit",tree:e.tree,parents:e.parents,author:e.author,committer:e.committer,message:e.message}),r=await _(t,"commit",n);if(e.branch){let s=`refs/heads/${e.branch}`;await t.refStore.writeRef(s,{type:"direct",hash:r}),await t.refStore.readRef("HEAD")||await t.refStore.writeRef("HEAD",{type:"symbolic",target:s})}return r}async function Us(t,e){let n=[...e].sort((i,o)=>i.name.localeCompare(o.name)),r=await Promise.all(n.map(async i=>{let o=i.mode;return o||(o=(await t.objectStore.read(i.hash)).type==="tree"?"040000":"100644"),{mode:o,name:i.name,hash:i.hash}})),s=Ge({type:"tree",entries:r});return _(t,"tree",s)}async function Ns(t,e){return _(t,"blob",new TextEncoder().encode(e))}function yt(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return[{buffer1:[0,0],buffer2:[0,r]}];if(r===0)return[{buffer1:[0,n],buffer2:[0,0]}];let{changedOld:s,changedNew:i}=dt(t,e);return Bs(s,n,i,r)}function Bs(t,e,n,r){let s=[],i=0,o=0;for(;i<e||o<r;){for(;i<e&&o<r&&!t[i]&&!n[o];)i++,o++;if(i>=e&&o>=r)break;let a=i,c=o;for(;i<e&&t[i];)i++;for(;o<r&&n[o];)o++;(i>a||o>c)&&s.push({buffer1:[a,i-a],buffer2:[c,o-c]})}return s}function Fs(t,e,n){let r=[];for(let c of yt(e,t))r.push({ab:"a",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});for(let c of yt(e,n))r.push({ab:"b",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});r.sort((c,l)=>c.oStart-l.oStart);let s=[],i=0;function o(c){c>i&&(s.push({stable:!0,buffer:"o",bufferStart:i,bufferLength:c-i,content:e.slice(i,c)}),i=c)}let a=0;for(;a<r.length;){let c=r[a++],l=c.oStart,f=c.oStart+c.oLength,u=[c];for(o(l);a<r.length;){let d=r[a];if(d.oStart>f)break;f=Math.max(f,d.oStart+d.oLength),u.push(d),a++}if(u.length===1){if(c.abLength>0){let d=c.ab==="a"?t:n;s.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:d.slice(c.abStart,c.abStart+c.abLength)})}}else{let d={a:{abMin:t.length,abMax:-1,oMin:e.length,oMax:-1},b:{abMin:n.length,abMax:-1,oMin:e.length,oMax:-1}};for(let b of u){let R=b.oStart,v=R+b.oLength,j=b.abStart,O=j+b.abLength,w=d[b.ab];w.abMin=Math.min(j,w.abMin),w.abMax=Math.max(O,w.abMax),w.oMin=Math.min(R,w.oMin),w.oMax=Math.max(v,w.oMax)}let h=d.a.abMin+(l-d.a.oMin),m=d.a.abMax+(f-d.a.oMax),y=d.b.abMin+(l-d.b.oMin),p=d.b.abMax+(f-d.b.oMax);s.push({stable:!1,a:t.slice(h,m),o:e.slice(l,f),b:n.slice(y,p)})}i=f}return o(e.length),s}function Gs(t,e,n,r){let s=r?.excludeFalseConflicts??!0,i=Fs(t,e,n),o=[],a=[];function c(){a.length&&(o.push({type:"ok",lines:a}),a=[])}for(let l of i)l.stable?a.push(...l.content):s&&Tn(l.a,l.b)?a.push(...l.a):(c(),o.push({type:"conflict",a:l.a,o:l.o,b:l.b}));return c(),r?.conflictStyle==="diff3"?kn(o):kn(_s(o))}function Le(t,e,n,r){let s=r?.markerSize??7,i=r?.conflictStyle??"merge",o=`${"<".repeat(s)}${r?.a?` ${r.a}`:""}`,a=`${"|".repeat(s)}${r?.o?` ${r.o}`:""}`,c="=".repeat(s),l=`${">".repeat(s)}${r?.b?` ${r.b}`:""}`,f=Gs(t,e,n,{conflictStyle:i}),u=!1,d=[];for(let h of f)h.type==="ok"?d.push(...h.lines):(u=!0,i==="diff3"?d.push(o,...h.a,a,...h.o,c,...h.b,l):d.push(o,...h.a,c,...h.b,l));return{conflict:u,result:d}}function _s(t){let e=[];for(let n of t)n.type==="ok"?e.push(n):e.push(...Ws(n));return e}function Ws(t){let{a:e,b:n}=t;if(e.length===0||n.length===0)return[t];if(Tn(e,n))return[t];let r=yt(e,n);if(r.length===0)return[{type:"ok",lines:e}];let s=[],i=0;for(let a of r){let c=a.buffer1[0];c-i>0&&s.push({type:"ok",lines:e.slice(i,c)});let f=c+a.buffer1[1],u=a.buffer2[0]+a.buffer2[1];s.push({type:"conflict",a:e.slice(c,f),o:[],b:n.slice(a.buffer2[0],u)}),i=f}return e.length-i>0&&s.push({type:"ok",lines:e.slice(i)}),s.length===1&&s[0].type==="conflict"?[t]:s}function kn(t){if(t.length<3)return t;let e=[t[0]];for(let r=1;r<t.length;r++){let s=e[e.length-1],i=t[r];s.type==="ok"&&i.type==="ok"?s.lines=[...s.lines,...i.lines]:e.push(i)}if(e.length<3)return e;let n=[e[0]];for(let r=1;r<e.length;r++){let s=n[n.length-1],i=e[r];if(s.type==="conflict"&&i.type==="ok"&&i.lines.length<=3&&r+1<e.length&&e[r+1].type==="conflict"){let o=e[r+1],a=s;a.a=[...s.a,...i.lines,...o.a],a.b=[...s.b,...i.lines,...o.b],a.o=[...s.o,...i.lines,...o.o],r++}else n.push(i)}return n}function pe(t,e,n,r){let s=Le(Y(t),Y(e),Y(n),{a:r.a,o:r.o,b:r.b,markerSize:r.markerSize,conflictStyle:r.conflictStyle}),o=(s.result[s.result.length-1]??"").endsWith("\0"),a=s.result.map(gt);return(a[a.length-1]??"").startsWith(">>>>>>>")||!o?`${a.join(`
18
13
  `)}
19
14
  `:a.join(`
20
- `)}function q(t){if(t==="")return[];let e=t.split(`
21
- `);if(e[e.length-1]==="")e.pop();else{let n=e[e.length-1]??"";e[e.length-1]=`${n}\0`}return e}function Ct(t){return t.endsWith("\0")?t.slice(0,-1):t}function Yn(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}var Te=new TextDecoder,ye=new TextEncoder,qn={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function je(t,e,n,r,s){let{paths:i,baseMap:o,oursMap:a,theirsMap:c}=await zs(t,e,n,r),f=await Ks(t,i,o,a,c,s);return Ys(t,i,s,f)}async function nr(t,e,n,r){let s=await Ne(t,e,n),i=await A(t,e),o=await A(t,n);if(s.length===0)return{...await je(t,null,i.tree,o.tree,r),baseTree:null};if(s.length===1){let f=await A(t,s[0]);return{...await je(t,f.tree,i.tree,o.tree,r),baseTree:f.tree}}let a=await sr(t,e,n,s,1);return{...await je(t,a,i.tree,o.tree,r),baseTree:a}}async function zs(t,e,n,r){let s=await he(t,e),i=await he(t,n),o=await he(t,r),a=new Set;for(let f of s.keys())a.add(f);for(let f of i.keys())a.add(f);for(let f of o.keys())a.add(f);let c=new Map;for(let f of a){let l=s.get(f)??null,u=i.get(f)??null,d=o.get(f)??null,h=l?{hash:l.hash,mode:l.mode}:null,m=u?{hash:u.hash,mode:u.mode}:null,y=d?{hash:d.hash,mode:d.mode}:null,p=(l?1:0)|(u?2:0)|(d?4:0),b=l?.hash??null,R=u?.hash??null,v=d?.hash??null,C=0;b!==null&&b===R&&(C|=3),b!==null&&b===v&&(C|=5),R!==null&&R===v&&(C|=6);let O={path:f,stages:[h,m,y],pathnames:[f,f,f],filemask:p,matchMask:C,merged:{result:null,clean:!1},pathConflict:!1};if(Vs(O)){c.set(f,O);continue}c.set(f,O)}return{paths:c,baseMap:s,oursMap:i,theirsMap:o}}function Vs(t){let[e,n,r]=t.stages,s=e?.hash??null,i=n?.hash??null,o=r?.hash??null;return i===s&&o===s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===o&&i!==null?(t.merged={result:{hash:i,mode:n.mode},clean:!0},!0):i===null&&o===null?(t.merged={result:null,clean:!0},!0):o===s&&i!==s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===s&&o!==s?(r?t.merged={result:{hash:o,mode:r.mode},clean:!0}:t.merged={result:null,clean:!0},!0):!1}async function Ks(t,e,n,r,s,i){let o={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[x,g]of n)r.has(x)||a.push({path:x,status:"deleted",oldHash:g.hash,oldMode:g.mode}),s.has(x)||c.push({path:x,status:"deleted",oldHash:g.hash,oldMode:g.mode});for(let[x,g]of r)n.has(x)||a.push({path:x,status:"added",newHash:g.hash,newMode:g.mode});for(let[x,g]of s)n.has(x)||c.push({path:x,status:"added",newHash:g.hash,newMode:g.mode});let f=await be(t,a),l=await be(t,c);if(f.renames.length===0&&l.renames.length===0)return o;let u=new Map,d=new Map;for(let x of f.renames)u.set(x.oldPath,x);for(let x of l.renames)d.set(x.oldPath,x);let h=new Set;for(let[x]of r)!n.has(x)&&s.has(x)&&h.add(x);let m=new Set,y=i?.a??"HEAD",p=i?.b??"theirs";function b(x,g,k=0){o.msgBuf.push({sortKey:x,subOrder:k,text:g})}for(let x of[...n.keys()].sort()){let g=u.get(x),k=d.get(x);if(!g&&!k)continue;let M=n.get(x);if(m.add(x),g&&k)if(m.add(g.newPath),m.add(k.newPath),g.newPath===k.newPath){let L=r.get(g.newPath),j=s.get(k.newPath);if(L.hash===j.hash)o.entries.push(K(g.newPath,L));else{let N=At(e,g.newPath);N.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:j.hash,mode:j.mode}],N.pathnames=[x,g.newPath,k.newPath],N.filemask=7,N.merged={result:null,clean:!1}}}else{let L=r.get(g.newPath),j=s.get(k.newPath),N=await rr(t,M,L,j,i);N.conflict&&b(x,`Auto-merging ${x}`,-1),o.conflicts.push({path:x,reason:"rename-rename",oursPath:g.newPath,theirsPath:k.newPath}),b(x,`CONFLICT (rename/rename): ${x} renamed to ${g.newPath} in ${y} and to ${k.newPath} in ${p}.`),o.entries.push(K(x,M,1)),o.entries.push(_(g.newPath,L.mode,N.hash,2)),o.entries.push(_(k.newPath,j.mode,N.hash,3)),o.worktreeBlobs.set(g.newPath,{hash:N.hash,mode:L.mode}),o.worktreeBlobs.set(k.newPath,{hash:N.hash,mode:j.mode})}else if(g){m.add(g.newPath);let L=s.get(x),j=r.get(g.newPath),N=h.has(g.newPath);if(L)if(N)await tr(t,o,g.newPath,x,M,j,L,r,s,!1,i);else if(L.hash===M.hash&&j.hash===M.hash)o.entries.push(K(g.newPath,j));else if(L.hash===M.hash)o.entries.push(K(g.newPath,j));else if(j.hash===M.hash)o.entries.push(_(g.newPath,j.mode,L.hash));else{let F=At(e,g.newPath);F.stages=[{hash:M.hash,mode:M.mode},{hash:j.hash,mode:j.mode},{hash:L.hash,mode:L.mode}],F.pathnames=[x,g.newPath,x],F.filemask=7,F.merged={result:null,clean:!1}}else{let F=s.get(g.newPath);if(o.conflicts.push({path:g.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:x}),b(g.newPath,`CONFLICT (rename/delete): ${x} renamed to ${g.newPath} in ${y}, but deleted in ${p}.`),F){o.conflicts.push({path:g.newPath,reason:"add-add"}),b(g.newPath,`Auto-merging ${g.newPath}`,0),b(g.newPath,`CONFLICT (add/add): Merge conflict in ${g.newPath}`,1),o.entries.push(K(g.newPath,j,2)),o.entries.push(K(g.newPath,F,3));let at=await it(t,j.hash,F.hash,j.mode,i);o.worktreeBlobs.set(g.newPath,{hash:at,mode:j.mode})}else o.entries.push(_(g.newPath,M.mode,M.hash,1)),o.entries.push(K(g.newPath,j,2)),o.worktreeBlobs.set(g.newPath,{hash:j.hash,mode:j.mode}),j.hash!==M.hash&&b(g.newPath,`CONFLICT (modify/delete): ${g.newPath} deleted in ${p} and modified in ${y}. Version ${y} of ${g.newPath} left in tree.`,1)}}else if(k){m.add(k.newPath);let L=r.get(x),j=s.get(k.newPath),N=h.has(k.newPath);if(L)if(N)await tr(t,o,k.newPath,x,M,L,j,r,s,!0,i);else if(L.hash===M.hash&&j.hash===M.hash)o.entries.push(K(k.newPath,j));else if(L.hash===M.hash)o.entries.push(K(k.newPath,j));else if(j.hash===M.hash)o.entries.push(_(k.newPath,j.mode,L.hash));else{let F=At(e,k.newPath);F.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:j.hash,mode:j.mode}],F.pathnames=[x,x,k.newPath],F.filemask=7,F.merged={result:null,clean:!1}}else{let F=r.get(k.newPath);if(o.conflicts.push({path:k.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:x}),b(k.newPath,`CONFLICT (rename/delete): ${x} renamed to ${k.newPath} in ${p}, but deleted in ${y}.`),F){o.conflicts.push({path:k.newPath,reason:"add-add"}),b(k.newPath,`Auto-merging ${k.newPath}`,0),b(k.newPath,`CONFLICT (add/add): Merge conflict in ${k.newPath}`,1),o.entries.push(K(k.newPath,F,2)),o.entries.push(K(k.newPath,j,3));let at=await it(t,F.hash,j.hash,F.mode,i);o.worktreeBlobs.set(k.newPath,{hash:at,mode:F.mode})}else o.entries.push(_(k.newPath,M.mode,M.hash,1)),o.entries.push(K(k.newPath,j,3)),o.worktreeBlobs.set(k.newPath,{hash:j.hash,mode:j.mode}),j.hash!==M.hash&&b(k.newPath,`CONFLICT (modify/delete): ${k.newPath} deleted in ${y} and modified in ${p}. Version ${p} of ${k.newPath} left in tree.`,1)}}}let R=new Set(f.renames.map(x=>x.newPath)),v=new Set(l.renames.map(x=>x.newPath)),C=Xn(n,r),O=Xn(n,s),w=Jn(C,s,n),E=Jn(O,r,n),T=Zn(f.renames,w),I=Zn(l.renames,E),P=Qn(T),S=Qn(I);for(let x of[...P.keys()])S.has(x)&&(P.delete(x),S.delete(x));let $=new Set(P.keys()),D=new Set(S.keys());if(S.size>0)for(let x of a){if(x.status!=="added"||R.has(x.path))continue;let g=er(x.path,S,$);if(!g)continue;if(e.has(g)||n.has(g)||r.has(g)||s.has(g)){if(r.has(g)){b(g,`CONFLICT (implicit dir rename): Existing file/dir at ${g} in the way of implicit directory rename(s) putting the following path(s) there: ${x.path}.`,1);continue}let L=r.get(x.path),j=s.get(g)??n.get(g);o.entries.push(_(g,L.mode,L.hash,2)),j&&o.entries.push(_(g,j.mode,j.hash,3)),o.worktreeBlobs.set(g,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:g,reason:"add-add"}),b(g,`CONFLICT (file location): ${x.path} added in ${y} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${g}.`,1);let N=e.get(x.path);N&&(N.merged={result:null,clean:!0}),m.add(x.path);continue}let k=r.get(x.path);o.entries.push(_(g,k.mode,k.hash,2)),o.worktreeBlobs.set(g,{hash:k.hash,mode:k.mode}),o.conflicts.push({path:g,reason:"directory-rename"}),b(g,`CONFLICT (file location): ${x.path} added in ${y} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${g}.`,1);let M=e.get(x.path);M&&(M.merged={result:null,clean:!0}),m.add(x.path)}if(P.size>0)for(let x of c){if(x.status!=="added"||v.has(x.path))continue;let g=er(x.path,P,D);if(!g)continue;if(e.has(g)||n.has(g)||r.has(g)||s.has(g)){if(s.has(g)){b(g,`CONFLICT (implicit dir rename): Existing file/dir at ${g} in the way of implicit directory rename(s) putting the following path(s) there: ${x.path}.`,1);continue}let L=s.get(x.path),j=r.get(g)??n.get(g);j&&o.entries.push(_(g,j.mode,j.hash,2)),o.entries.push(_(g,L.mode,L.hash,3)),o.worktreeBlobs.set(g,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:g,reason:"add-add"}),b(g,`CONFLICT (file location): ${x.path} added in ${p} inside a directory that was renamed in ${y}, suggesting it should perhaps be moved to ${g}.`,1);let N=e.get(x.path);N&&(N.merged={result:null,clean:!0}),m.add(x.path);continue}let k=s.get(x.path);o.entries.push(_(g,k.mode,k.hash,3)),o.worktreeBlobs.set(g,{hash:k.hash,mode:k.mode}),o.conflicts.push({path:g,reason:"directory-rename"}),b(g,`CONFLICT (file location): ${x.path} added in ${p} inside a directory that was renamed in ${y}, suggesting it should perhaps be moved to ${g}.`,1);let M=e.get(x.path);M&&(M.merged={result:null,clean:!0}),m.add(x.path)}let ae=new Set(o.entries.map(x=>x.path));for(let x of ae){let g=e.get(x);g&&(g.merged={result:null,clean:!0})}for(let x of m){if(ae.has(x))continue;let g=e.get(x);if(!g||g.merged.clean)continue;g.filemask===7&&!g.pathConflict||(g.merged={result:null,clean:!0})}return o}function Xn(t,e){let n=new Set;for(let i of t.keys()){let o=X(i);for(;o;)n.add(o),o=X(o)}let r=new Set;for(let i of e.keys()){let o=X(i);for(;o;)r.add(o),o=X(o)}let s=new Set;for(let i of n)r.has(i)||s.add(i);return s}function Jn(t,e,n){if(t.size===0)return t;let r=new Set;for(let s of e.keys()){if(n.has(s))continue;let i=X(s)??"";t.has(i)&&r.add(i)}for(let s of[...r]){let i=X(s);for(;i;)t.has(i)&&!r.has(i)&&r.add(i),i=X(i)}return r}function Zn(t,e){let n=new Map;for(let r of t){let s=X(r.oldPath),i=X(r.newPath),o=!0;for(;;){if(!o){let a=s.length+(s?1:0),c=i.length+(i?1:0),f=r.oldPath.slice(a,r.oldPath.indexOf("/",a)),l=r.newPath.slice(c,r.newPath.indexOf("/",c));if(f!==l)break}if(e.has(s)){let a=n.get(s);a||(a=new Map,n.set(s,a)),a.set(i,(a.get(i)??0)+1)}if(o=!1,!s||!i)break;s=X(s),i=X(i)}}return n}function Qn(t){let e=new Map;for(let[n,r]of t){let s=0,i=0,o=null;for(let[a,c]of r)c===s?i=s:c>s&&(s=c,o=a);s>0&&i!==s&&o!==null&&e.set(n,o)}return e}function er(t,e,n){let r=X(t);for(;r;){let i=e.get(r);if(i!==void 0){if(n.has(i))return null;let o=t.slice(r.length+1);return i?`${i}/${o}`:o}r=X(r)}let s=e.get("");return s!==void 0&&!n.has(s)?`${s}/${t}`:null}function X(t){let e=t.lastIndexOf("/");return e===-1?"":t.slice(0,e)}async function tr(t,e,n,r,s,i,o,a,c,f=!1,l){let u=f?a.get(n):c.get(n),d=f?o:i;if(u.hash===d.hash){e.entries.push(_(n,u.mode,u.hash)),e.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let m=await rr(t,s,i,o,l,f?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(u.hash===m.hash)e.entries.push(_(n,u.mode,m.hash));else if(e.conflicts.push({path:n,reason:"add-add"}),e.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),e.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),f){e.entries.push(K(n,u,2)),e.entries.push(_(n,o.mode,m.hash,3));let y=await it(t,u.hash,m.hash,u.mode,l);e.worktreeBlobs.set(n,{hash:y,mode:u.mode})}else{e.entries.push(_(n,i.mode,m.hash,2)),e.entries.push(K(n,u,3));let y=await it(t,m.hash,u.hash,i.mode,l);e.worktreeBlobs.set(n,{hash:y,mode:i.mode})}}async function rr(t,e,n,r,s,i,o){if(n.hash===e.hash)return{hash:r.hash,conflict:!1};if(r.hash===e.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(se(e.mode)||se(n.mode)||se(r.mode))return{hash:n.hash,conflict:!0};let a=await U(t,e.hash),c=await U(t,n.hash),f=await U(t,r.hash);if(ne(c)||ne(f)||ne(a))return{hash:n.hash,conflict:!0};let l=q(a),u=q(c),d=q(f),h=s?.conflictStyle,m=Fe(u,l,d,{conflictStyle:h});if(!m.conflict)return{hash:await $t(t,m.result),conflict:!1};let y=s?.a??"HEAD",p=s?.b??"theirs",b=i?.oursPath?`${y}:${i.oursPath}`:y,R=i?.theirsPath?`${p}:${i.theirsPath}`:p,v=xe(c,a,f,{a:b,b:R,markerSize:o??7,conflictStyle:h});return{hash:await W(t,"blob",ye.encode(v)),conflict:!0}}async function it(t,e,n,r,s){let i=await U(t,e),o=await U(t,n),a=xe(i,"",o,{a:s?.a??"HEAD",b:s?.b??"theirs",conflictStyle:s?.conflictStyle});return W(t,"blob",ye.encode(a))}function K(t,e,n=0){return _(t,e.mode,e.hash,n)}function _(t,e,n,r=0){return{path:t,mode:parseInt(e,8),hash:n,stage:r,stat:fe()}}async function Ys(t,e,n,r){let s=[...r.entries],i=[...r.conflicts],o=[...r.msgBuf],a=new Map(r.worktreeBlobs);function c(h,m,y=0){o.push({sortKey:h,subOrder:y,text:m})}for(let h of[...e.keys()].sort()){let m=e.get(h);if(m.merged.clean){m.merged.result?.hash&&s.push(H(h,m.merged.result.hash,m.merged.result.mode));continue}await qs(t,m,n,s,i,c,a)}o.sort((h,m)=>(h.sortKey<m.sortKey?-1:h.sortKey>m.sortKey?1:0)||h.subOrder-m.subOrder);let f=o.map(h=>h.text),l=[],u=new Set;for(let h of s)h.stage===0&&(l.push(h),u.add(h.path));for(let[h,m]of a)u.has(h)||l.push(H(h,m.hash,m.mode));l.sort((h,m)=>Be(h.path,m.path));let d=await Rt(t,l);return{entries:s,conflicts:i,messages:f,resultTree:d}}async function qs(t,e,n,r,s,i,o){let a=e.path,[c,f,l]=e.stages,u=c?.hash??null,d=f?.hash??null,h=l?.hash??null;if(d===null&&h!==null&&u!==null){s.push({path:a,reason:"delete-modify",deletedBy:"ours"});let m=n?.a??"HEAD",y=n?.b??"theirs";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${y}. Version ${y} of ${a} left in tree.`),c&&r.push(H(a,u,c.mode,1)),r.push(H(a,h,l.mode,3)),o.set(a,{hash:h,mode:l.mode});return}if(h===null&&d!==null&&u!==null){s.push({path:a,reason:"delete-modify",deletedBy:"theirs"});let m=n?.b??"theirs",y=n?.a??"HEAD";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${y}. Version ${y} of ${a} left in tree.`),c&&r.push(H(a,u,c.mode,1)),r.push(H(a,d,f.mode,2)),o.set(a,{hash:d,mode:f.mode});return}if(u===null&&d!==null&&h!==null){if(d===h){r.push(H(a,d,f.mode));return}i(a,`Auto-merging ${a}`,0);let m=await U(t,d),y=await U(t,h);if(ne(m)||ne(y)){s.push({path:a,reason:"add-add"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(H(a,d,f.mode,2)),r.push(H(a,h,l.mode,3)),o.set(a,{hash:d,mode:f.mode});return}let p=q(""),b=q(m),R=q(y),v=Fe(b,p,R,{conflictStyle:n?.conflictStyle});if(!v.conflict){let w=await $t(t,v.result);r.push(H(a,w,f.mode));return}s.push({path:a,reason:"add-add"}),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(H(a,d,f.mode,2)),r.push(H(a,h,l.mode,3));let C=xe(m,"",y,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),O=await W(t,"blob",ye.encode(C));o.set(a,{hash:O,mode:f.mode});return}if(u!==null&&d!==null&&h!==null){if(d===u){r.push(H(a,h,l.mode));return}if(h===u){r.push(H(a,d,f.mode));return}if(d===h){r.push(H(a,d,f.mode));return}if(i(a,`Auto-merging ${a}`,0),se(c.mode)||se(f.mode)||se(l.mode)){s.push({path:a,reason:"content"}),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(H(a,u,c.mode,1)),r.push(H(a,d,f.mode,2)),r.push(H(a,h,l.mode,3)),o.set(a,{hash:d,mode:f.mode});return}let m=await U(t,u),y=await U(t,d),p=await U(t,h);if(ne(y)||ne(p)||ne(m)){s.push({path:a,reason:"content"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(H(a,u,c.mode,1)),r.push(H(a,d,f.mode,2)),r.push(H(a,h,l.mode,3)),o.set(a,{hash:d,mode:f.mode});return}let b=q(m),R=q(y),v=q(p),C=Fe(R,b,v,{conflictStyle:n?.conflictStyle});if(C.conflict){let O=e.pathnames[1],w=e.pathnames[2],E=O!==a||w!==a,T={path:a,reason:"content"};E&&(O!==a&&(T.oursOrigPath=O),w!==a&&(T.theirsOrigPath=w)),s.push(T),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(H(a,u,c.mode,1)),r.push(H(a,d,f.mode,2)),r.push(H(a,h,l.mode,3));let I=E?`${n?.a??"HEAD"}:${O}`:n?.a??"HEAD",P=E?`${n?.b??"theirs"}:${w}`:n?.b??"theirs",S=xe(y,m,p,{a:I,b:P,conflictStyle:n?.conflictStyle}),$=await W(t,"blob",ye.encode(S));o.set(a,{hash:$,mode:f.mode})}else{let O=await $t(t,C.result);r.push(H(a,O,f.mode))}return}}var Xs=200;async function sr(t,e,n,r,s){let i=await Promise.all(r.map(async l=>({hash:l,timestamp:(await A(t,l)).committer.timestamp})));i.sort((l,u)=>l.timestamp-u.timestamp);let o=i.map(l=>l.hash),a=o[0],c=a,f=(await A(t,a)).tree;for(let l=1;l<o.length;l++){let u=o[l],d=(await A(t,u)).tree,h=null;if(s>=Xs)h=f;else{let p=await Ne(t,c,u);p.length===0?h=null:p.length===1?h=(await A(t,p[0])).tree:h=await sr(t,c,u,p,s+1)}let m=await je(t,h,f,d);f=await Js(t,m,s);let y=Xe({type:"commit",tree:f,parents:[c,u],author:qn,committer:qn,message:"merged common ancestors"});c=await W(t,"commit",y)}return f}async function Js(t,e,n){let r=e.entries.filter(a=>a.stage===0),s=new Map;for(let a of e.entries)a.stage>0&&s.set(`${a.path}\0${a.stage}`,a);let i=(a,c)=>s.get(`${a}\0${c}`),o={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let a of e.conflicts){if(a.reason==="delete-modify"||a.reason==="rename-delete"){let l=i(a.path,1);if(l){r.push({...l,stage:0});continue}}if(a.reason==="rename-rename"){let l=a.oursPath??a.path,u=a.theirsPath??a.path,d=i(a.path,1),h=i(l,2),m=i(u,3);if(h&&m){let y=Te.decode((await z(t,h.hash)).content),p=Te.decode((await z(t,m.hash)).content),b=d?Te.decode((await z(t,d.hash)).content):"",R=8+n*2,v=o.a??"Temporary merge branch 1",C=o.b??"Temporary merge branch 2",O=xe(y,b,p,{a:`${v}:${l}`,o:o.o,b:`${C}:${u}`,markerSize:R}),w=await W(t,"blob",ye.encode(O));r.push({path:l,mode:h.mode,hash:w,stage:0,stat:fe()}),r.push({path:u,mode:m.mode,hash:w,stage:0,stat:fe()});continue}else if(h){r.push({...h,stage:0});continue}}let c=i(a.path,2),f=i(a.path,3);if(c&&f&&(a.reason==="content"||a.reason==="add-add")){let l=Te.decode((await z(t,c.hash)).content),u=Te.decode((await z(t,f.hash)).content),d=a.reason==="content"?i(a.path,1):null,h=d?Te.decode((await z(t,d.hash)).content):"",m=a.oursOrigPath||a.theirsOrigPath,y=o.a??"Temporary merge branch 1",p=o.b??"Temporary merge branch 2",b=m?`${y}:${a.oursOrigPath??a.path}`:y,R=m?`${p}:${a.theirsOrigPath??a.path}`:p,v=xe(l,h,u,{a:b,o:o.o,b:R,markerSize:o.markerSize}),C=await W(t,"blob",ye.encode(v));r.push({path:a.path,mode:c.mode,hash:C,stage:0,stat:fe()})}else c?r.push({...c,stage:0}):f&&r.push({...f,stage:0})}return r.sort((a,c)=>Be(a.path,c.path)),Rt(t,r)}async function $t(t,e){let n=e.map(Ct);if(n.length===0)return W(t,"blob",ye.encode(""));let i=(e[e.length-1]??"").endsWith("\0")?n.join(`
15
+ `)}function Y(t){if(t==="")return[];let e=t.split(`
16
+ `);if(e[e.length-1]==="")e.pop();else{let n=e[e.length-1]??"";e[e.length-1]=`${n}\0`}return e}function gt(t){return t.endsWith("\0")?t.slice(0,-1):t}function Tn(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}var Oe=new TextDecoder,he=new TextEncoder,Sn={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function Re(t,e,n,r,s){let{paths:i,baseMap:o,oursMap:a,theirsMap:c}=await zs(t,e,n,r),l=await Ks(t,i,o,a,c,s);return Ys(t,i,s,l)}async function Mn(t,e,n,r){let s=await $e(t,e,n),i=await A(t,e),o=await A(t,n);if(s.length===0)return{...await Re(t,null,i.tree,o.tree,r),baseTree:null};if(s.length===1){let l=await A(t,s[0]);return{...await Re(t,l.tree,i.tree,o.tree,r),baseTree:l.tree}}let a=await Hn(t,e,n,s,1);return{...await Re(t,a,i.tree,o.tree,r),baseTree:a}}async function zs(t,e,n,r){let s=await ce(t,e),i=await ce(t,n),o=await ce(t,r),a=new Set;for(let l of s.keys())a.add(l);for(let l of i.keys())a.add(l);for(let l of o.keys())a.add(l);let c=new Map;for(let l of a){let f=s.get(l)??null,u=i.get(l)??null,d=o.get(l)??null,h=f?{hash:f.hash,mode:f.mode}:null,m=u?{hash:u.hash,mode:u.mode}:null,y=d?{hash:d.hash,mode:d.mode}:null,p=(f?1:0)|(u?2:0)|(d?4:0),b=f?.hash??null,R=u?.hash??null,v=d?.hash??null,j=0;b!==null&&b===R&&(j|=3),b!==null&&b===v&&(j|=5),R!==null&&R===v&&(j|=6);let O={path:l,stages:[h,m,y],pathnames:[l,l,l],filemask:p,matchMask:j,merged:{result:null,clean:!1},pathConflict:!1};if(Vs(O)){c.set(l,O);continue}c.set(l,O)}return{paths:c,baseMap:s,oursMap:i,theirsMap:o}}function Vs(t){let[e,n,r]=t.stages,s=e?.hash??null,i=n?.hash??null,o=r?.hash??null;return i===s&&o===s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===o&&i!==null?(t.merged={result:{hash:i,mode:n.mode},clean:!0},!0):i===null&&o===null?(t.merged={result:null,clean:!0},!0):o===s&&i!==s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===s&&o!==s?(r?t.merged={result:{hash:o,mode:r.mode},clean:!0}:t.merged={result:null,clean:!0},!0):!1}async function Ks(t,e,n,r,s,i){let o={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[I,g]of n)r.has(I)||a.push({path:I,status:"deleted",oldHash:g.hash,oldMode:g.mode}),s.has(I)||c.push({path:I,status:"deleted",oldHash:g.hash,oldMode:g.mode});for(let[I,g]of r)n.has(I)||a.push({path:I,status:"added",newHash:g.hash,newMode:g.mode});for(let[I,g]of s)n.has(I)||c.push({path:I,status:"added",newHash:g.hash,newMode:g.mode});let l=await de(t,a),f=await de(t,c);if(l.renames.length===0&&f.renames.length===0)return o;let u=new Map,d=new Map;for(let I of l.renames)u.set(I.oldPath,I);for(let I of f.renames)d.set(I.oldPath,I);let h=new Set;for(let[I]of r)!n.has(I)&&s.has(I)&&h.add(I);let m=new Set,y=i?.a??"HEAD",p=i?.b??"theirs";function b(I,g,k=0){o.msgBuf.push({sortKey:I,subOrder:k,text:g})}for(let I of[...n.keys()].sort()){let g=u.get(I),k=d.get(I);if(!g&&!k)continue;let M=n.get(I);if(m.add(I),g&&k)if(m.add(g.newPath),m.add(k.newPath),g.newPath===k.newPath){let L=r.get(g.newPath),C=s.get(k.newPath);if(L.hash===C.hash)o.entries.push(V(g.newPath,L));else{let N=bt(e,g.newPath);N.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:C.hash,mode:C.mode}],N.pathnames=[I,g.newPath,k.newPath],N.filemask=7,N.merged={result:null,clean:!1}}}else{let L=r.get(g.newPath),C=s.get(k.newPath),N=await Dn(t,M,L,C,i);N.conflict&&b(I,`Auto-merging ${I}`,-1),o.conflicts.push({path:I,reason:"rename-rename",oursPath:g.newPath,theirsPath:k.newPath}),b(I,`CONFLICT (rename/rename): ${I} renamed to ${g.newPath} in ${y} and to ${k.newPath} in ${p}.`),o.entries.push(V(I,M,1)),o.entries.push(G(g.newPath,L.mode,N.hash,2)),o.entries.push(G(k.newPath,C.mode,N.hash,3)),o.worktreeBlobs.set(g.newPath,{hash:N.hash,mode:L.mode}),o.worktreeBlobs.set(k.newPath,{hash:N.hash,mode:C.mode})}else if(g){m.add(g.newPath);let L=s.get(I),C=r.get(g.newPath),N=h.has(g.newPath);if(L)if(N)await Ln(t,o,g.newPath,I,M,C,L,r,s,!1,i);else if(L.hash===M.hash&&C.hash===M.hash)o.entries.push(V(g.newPath,C));else if(L.hash===M.hash)o.entries.push(V(g.newPath,C));else if(C.hash===M.hash)o.entries.push(G(g.newPath,C.mode,L.hash));else{let B=bt(e,g.newPath);B.stages=[{hash:M.hash,mode:M.mode},{hash:C.hash,mode:C.mode},{hash:L.hash,mode:L.mode}],B.pathnames=[I,g.newPath,I],B.filemask=7,B.merged={result:null,clean:!1}}else{let B=s.get(g.newPath);if(o.conflicts.push({path:g.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:I}),b(g.newPath,`CONFLICT (rename/delete): ${I} renamed to ${g.newPath} in ${y}, but deleted in ${p}.`),B){o.conflicts.push({path:g.newPath,reason:"add-add"}),b(g.newPath,`Auto-merging ${g.newPath}`,0),b(g.newPath,`CONFLICT (add/add): Merge conflict in ${g.newPath}`,1),o.entries.push(V(g.newPath,C,2)),o.entries.push(V(g.newPath,B,3));let Ze=await qe(t,C.hash,B.hash,C.mode,i);o.worktreeBlobs.set(g.newPath,{hash:Ze,mode:C.mode})}else o.entries.push(G(g.newPath,M.mode,M.hash,1)),o.entries.push(V(g.newPath,C,2)),o.worktreeBlobs.set(g.newPath,{hash:C.hash,mode:C.mode}),C.hash!==M.hash&&b(g.newPath,`CONFLICT (modify/delete): ${g.newPath} deleted in ${p} and modified in ${y}. Version ${y} of ${g.newPath} left in tree.`,1)}}else if(k){m.add(k.newPath);let L=r.get(I),C=s.get(k.newPath),N=h.has(k.newPath);if(L)if(N)await Ln(t,o,k.newPath,I,M,L,C,r,s,!0,i);else if(L.hash===M.hash&&C.hash===M.hash)o.entries.push(V(k.newPath,C));else if(L.hash===M.hash)o.entries.push(V(k.newPath,C));else if(C.hash===M.hash)o.entries.push(G(k.newPath,C.mode,L.hash));else{let B=bt(e,k.newPath);B.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:C.hash,mode:C.mode}],B.pathnames=[I,I,k.newPath],B.filemask=7,B.merged={result:null,clean:!1}}else{let B=r.get(k.newPath);if(o.conflicts.push({path:k.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:I}),b(k.newPath,`CONFLICT (rename/delete): ${I} renamed to ${k.newPath} in ${p}, but deleted in ${y}.`),B){o.conflicts.push({path:k.newPath,reason:"add-add"}),b(k.newPath,`Auto-merging ${k.newPath}`,0),b(k.newPath,`CONFLICT (add/add): Merge conflict in ${k.newPath}`,1),o.entries.push(V(k.newPath,B,2)),o.entries.push(V(k.newPath,C,3));let Ze=await qe(t,B.hash,C.hash,B.mode,i);o.worktreeBlobs.set(k.newPath,{hash:Ze,mode:B.mode})}else o.entries.push(G(k.newPath,M.mode,M.hash,1)),o.entries.push(V(k.newPath,C,3)),o.worktreeBlobs.set(k.newPath,{hash:C.hash,mode:C.mode}),C.hash!==M.hash&&b(k.newPath,`CONFLICT (modify/delete): ${k.newPath} deleted in ${y} and modified in ${p}. Version ${p} of ${k.newPath} left in tree.`,1)}}}let R=new Set(l.renames.map(I=>I.newPath)),v=new Set(f.renames.map(I=>I.newPath)),j=Cn(n,r),O=Cn(n,s),w=vn(j,s,n),x=vn(O,r,n),S=jn(l.renames,w),E=jn(f.renames,x),P=An(S),T=An(E);for(let I of[...P.keys()])T.has(I)&&(P.delete(I),T.delete(I));let $=new Set(P.keys()),D=new Set(T.keys());if(T.size>0)for(let I of a){if(I.status!=="added"||R.has(I.path))continue;let g=$n(I.path,T,$);if(!g)continue;if(e.has(g)||n.has(g)||r.has(g)||s.has(g)){if(r.has(g)){b(g,`CONFLICT (implicit dir rename): Existing file/dir at ${g} in the way of implicit directory rename(s) putting the following path(s) there: ${I.path}.`,1);continue}let L=r.get(I.path),C=s.get(g)??n.get(g);o.entries.push(G(g,L.mode,L.hash,2)),C&&o.entries.push(G(g,C.mode,C.hash,3)),o.worktreeBlobs.set(g,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:g,reason:"add-add"}),b(g,`CONFLICT (file location): ${I.path} added in ${y} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${g}.`,1);let N=e.get(I.path);N&&(N.merged={result:null,clean:!0}),m.add(I.path);continue}let k=r.get(I.path);o.entries.push(G(g,k.mode,k.hash,2)),o.worktreeBlobs.set(g,{hash:k.hash,mode:k.mode}),o.conflicts.push({path:g,reason:"directory-rename"}),b(g,`CONFLICT (file location): ${I.path} added in ${y} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${g}.`,1);let M=e.get(I.path);M&&(M.merged={result:null,clean:!0}),m.add(I.path)}if(P.size>0)for(let I of c){if(I.status!=="added"||v.has(I.path))continue;let g=$n(I.path,P,D);if(!g)continue;if(e.has(g)||n.has(g)||r.has(g)||s.has(g)){if(s.has(g)){b(g,`CONFLICT (implicit dir rename): Existing file/dir at ${g} in the way of implicit directory rename(s) putting the following path(s) there: ${I.path}.`,1);continue}let L=s.get(I.path),C=r.get(g)??n.get(g);C&&o.entries.push(G(g,C.mode,C.hash,2)),o.entries.push(G(g,L.mode,L.hash,3)),o.worktreeBlobs.set(g,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:g,reason:"add-add"}),b(g,`CONFLICT (file location): ${I.path} added in ${p} inside a directory that was renamed in ${y}, suggesting it should perhaps be moved to ${g}.`,1);let N=e.get(I.path);N&&(N.merged={result:null,clean:!0}),m.add(I.path);continue}let k=s.get(I.path);o.entries.push(G(g,k.mode,k.hash,3)),o.worktreeBlobs.set(g,{hash:k.hash,mode:k.mode}),o.conflicts.push({path:g,reason:"directory-rename"}),b(g,`CONFLICT (file location): ${I.path} added in ${p} inside a directory that was renamed in ${y}, suggesting it should perhaps be moved to ${g}.`,1);let M=e.get(I.path);M&&(M.merged={result:null,clean:!0}),m.add(I.path)}let oe=new Set(o.entries.map(I=>I.path));for(let I of oe){let g=e.get(I);g&&(g.merged={result:null,clean:!0})}for(let I of m){if(oe.has(I))continue;let g=e.get(I);if(!g||g.merged.clean)continue;g.filemask===7&&!g.pathConflict||(g.merged={result:null,clean:!0})}return o}function Cn(t,e){let n=new Set;for(let i of t.keys()){let o=q(i);for(;o;)n.add(o),o=q(o)}let r=new Set;for(let i of e.keys()){let o=q(i);for(;o;)r.add(o),o=q(o)}let s=new Set;for(let i of n)r.has(i)||s.add(i);return s}function vn(t,e,n){if(t.size===0)return t;let r=new Set;for(let s of e.keys()){if(n.has(s))continue;let i=q(s)??"";t.has(i)&&r.add(i)}for(let s of[...r]){let i=q(s);for(;i;)t.has(i)&&!r.has(i)&&r.add(i),i=q(i)}return r}function jn(t,e){let n=new Map;for(let r of t){let s=q(r.oldPath),i=q(r.newPath),o=!0;for(;;){if(!o){let a=s.length+(s?1:0),c=i.length+(i?1:0),l=r.oldPath.slice(a,r.oldPath.indexOf("/",a)),f=r.newPath.slice(c,r.newPath.indexOf("/",c));if(l!==f)break}if(e.has(s)){let a=n.get(s);a||(a=new Map,n.set(s,a)),a.set(i,(a.get(i)??0)+1)}if(o=!1,!s||!i)break;s=q(s),i=q(i)}}return n}function An(t){let e=new Map;for(let[n,r]of t){let s=0,i=0,o=null;for(let[a,c]of r)c===s?i=s:c>s&&(s=c,o=a);s>0&&i!==s&&o!==null&&e.set(n,o)}return e}function $n(t,e,n){let r=q(t);for(;r;){let i=e.get(r);if(i!==void 0){if(n.has(i))return null;let o=t.slice(r.length+1);return i?`${i}/${o}`:o}r=q(r)}let s=e.get("");return s!==void 0&&!n.has(s)?`${s}/${t}`:null}function q(t){let e=t.lastIndexOf("/");return e===-1?"":t.slice(0,e)}async function Ln(t,e,n,r,s,i,o,a,c,l=!1,f){let u=l?a.get(n):c.get(n),d=l?o:i;if(u.hash===d.hash){e.entries.push(G(n,u.mode,u.hash)),e.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let m=await Dn(t,s,i,o,f,l?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(u.hash===m.hash)e.entries.push(G(n,u.mode,m.hash));else if(e.conflicts.push({path:n,reason:"add-add"}),e.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),e.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),l){e.entries.push(V(n,u,2)),e.entries.push(G(n,o.mode,m.hash,3));let y=await qe(t,u.hash,m.hash,u.mode,f);e.worktreeBlobs.set(n,{hash:y,mode:u.mode})}else{e.entries.push(G(n,i.mode,m.hash,2)),e.entries.push(V(n,u,3));let y=await qe(t,m.hash,u.hash,i.mode,f);e.worktreeBlobs.set(n,{hash:y,mode:i.mode})}}async function Dn(t,e,n,r,s,i,o){if(n.hash===e.hash)return{hash:r.hash,conflict:!1};if(r.hash===e.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(se(e.mode)||se(n.mode)||se(r.mode))return{hash:n.hash,conflict:!0};let a=await H(t,e.hash),c=await H(t,n.hash),l=await H(t,r.hash);if(te(c)||te(l)||te(a))return{hash:n.hash,conflict:!0};let f=Y(a),u=Y(c),d=Y(l),h=s?.conflictStyle,m=Le(u,f,d,{conflictStyle:h});if(!m.conflict)return{hash:await wt(t,m.result),conflict:!1};let y=s?.a??"HEAD",p=s?.b??"theirs",b=i?.oursPath?`${y}:${i.oursPath}`:y,R=i?.theirsPath?`${p}:${i.theirsPath}`:p,v=pe(c,a,l,{a:b,b:R,markerSize:o??7,conflictStyle:h});return{hash:await _(t,"blob",he.encode(v)),conflict:!0}}async function qe(t,e,n,r,s){let i=await H(t,e),o=await H(t,n),a=pe(i,"",o,{a:s?.a??"HEAD",b:s?.b??"theirs",conflictStyle:s?.conflictStyle});return _(t,"blob",he.encode(a))}function V(t,e,n=0){return G(t,e.mode,e.hash,n)}function G(t,e,n,r=0){return{path:t,mode:parseInt(e,8),hash:n,stage:r,stat:ae()}}async function Ys(t,e,n,r){let s=[...r.entries],i=[...r.conflicts],o=[...r.msgBuf],a=new Map(r.worktreeBlobs);function c(h,m,y=0){o.push({sortKey:h,subOrder:y,text:m})}for(let h of[...e.keys()].sort()){let m=e.get(h);if(m.merged.clean){m.merged.result?.hash&&s.push(U(h,m.merged.result.hash,m.merged.result.mode));continue}await qs(t,m,n,s,i,c,a)}o.sort((h,m)=>(h.sortKey<m.sortKey?-1:h.sortKey>m.sortKey?1:0)||h.subOrder-m.subOrder);let l=o.map(h=>h.text),f=[],u=new Set;for(let h of s)h.stage===0&&(f.push(h),u.add(h.path));for(let[h,m]of a)u.has(h)||f.push(U(h,m.hash,m.mode));f.sort((h,m)=>je(h.path,m.path));let d=await lt(t,f);return{entries:s,conflicts:i,messages:l,resultTree:d}}async function qs(t,e,n,r,s,i,o){let a=e.path,[c,l,f]=e.stages,u=c?.hash??null,d=l?.hash??null,h=f?.hash??null;if(d===null&&h!==null&&u!==null){s.push({path:a,reason:"delete-modify",deletedBy:"ours"});let m=n?.a??"HEAD",y=n?.b??"theirs";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${y}. Version ${y} of ${a} left in tree.`),c&&r.push(U(a,u,c.mode,1)),r.push(U(a,h,f.mode,3)),o.set(a,{hash:h,mode:f.mode});return}if(h===null&&d!==null&&u!==null){s.push({path:a,reason:"delete-modify",deletedBy:"theirs"});let m=n?.b??"theirs",y=n?.a??"HEAD";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${y}. Version ${y} of ${a} left in tree.`),c&&r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),o.set(a,{hash:d,mode:l.mode});return}if(u===null&&d!==null&&h!==null){if(d===h){r.push(U(a,d,l.mode));return}i(a,`Auto-merging ${a}`,0);let m=await H(t,d),y=await H(t,h);if(te(m)||te(y)){s.push({path:a,reason:"add-add"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3)),o.set(a,{hash:d,mode:l.mode});return}let p=Y(""),b=Y(m),R=Y(y),v=Le(b,p,R,{conflictStyle:n?.conflictStyle});if(!v.conflict){let w=await wt(t,v.result);r.push(U(a,w,l.mode));return}s.push({path:a,reason:"add-add"}),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3));let j=pe(m,"",y,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),O=await _(t,"blob",he.encode(j));o.set(a,{hash:O,mode:l.mode});return}if(u!==null&&d!==null&&h!==null){if(d===u){r.push(U(a,h,f.mode));return}if(h===u){r.push(U(a,d,l.mode));return}if(d===h){r.push(U(a,d,l.mode));return}if(i(a,`Auto-merging ${a}`,0),se(c.mode)||se(l.mode)||se(f.mode)){s.push({path:a,reason:"content"}),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3)),o.set(a,{hash:d,mode:l.mode});return}let m=await H(t,u),y=await H(t,d),p=await H(t,h);if(te(y)||te(p)||te(m)){s.push({path:a,reason:"content"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3)),o.set(a,{hash:d,mode:l.mode});return}let b=Y(m),R=Y(y),v=Y(p),j=Le(R,b,v,{conflictStyle:n?.conflictStyle});if(j.conflict){let O=e.pathnames[1],w=e.pathnames[2],x=O!==a||w!==a,S={path:a,reason:"content"};x&&(O!==a&&(S.oursOrigPath=O),w!==a&&(S.theirsOrigPath=w)),s.push(S),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3));let E=x?`${n?.a??"HEAD"}:${O}`:n?.a??"HEAD",P=x?`${n?.b??"theirs"}:${w}`:n?.b??"theirs",T=pe(y,m,p,{a:E,b:P,conflictStyle:n?.conflictStyle}),$=await _(t,"blob",he.encode(T));o.set(a,{hash:$,mode:l.mode})}else{let O=await wt(t,j.result);r.push(U(a,O,l.mode))}return}}var Xs=200;async function Hn(t,e,n,r,s){let i=await Promise.all(r.map(async f=>({hash:f,timestamp:(await A(t,f)).committer.timestamp})));i.sort((f,u)=>f.timestamp-u.timestamp);let o=i.map(f=>f.hash),a=o[0],c=a,l=(await A(t,a)).tree;for(let f=1;f<o.length;f++){let u=o[f],d=(await A(t,u)).tree,h=null;if(s>=Xs)h=l;else{let p=await $e(t,c,u);p.length===0?h=null:p.length===1?h=(await A(t,p[0])).tree:h=await Hn(t,c,u,p,s+1)}let m=await Re(t,h,l,d);l=await Zs(t,m,s);let y=Ne({type:"commit",tree:l,parents:[c,u],author:Sn,committer:Sn,message:"merged common ancestors"});c=await _(t,"commit",y)}return l}async function Zs(t,e,n){let r=e.entries.filter(a=>a.stage===0),s=new Map;for(let a of e.entries)a.stage>0&&s.set(`${a.path}\0${a.stage}`,a);let i=(a,c)=>s.get(`${a}\0${c}`),o={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let a of e.conflicts){if(a.reason==="delete-modify"||a.reason==="rename-delete"){let f=i(a.path,1);if(f){r.push({...f,stage:0});continue}}if(a.reason==="rename-rename"){let f=a.oursPath??a.path,u=a.theirsPath??a.path,d=i(a.path,1),h=i(f,2),m=i(u,3);if(h&&m){let y=Oe.decode((await W(t,h.hash)).content),p=Oe.decode((await W(t,m.hash)).content),b=d?Oe.decode((await W(t,d.hash)).content):"",R=8+n*2,v=o.a??"Temporary merge branch 1",j=o.b??"Temporary merge branch 2",O=pe(y,b,p,{a:`${v}:${f}`,o:o.o,b:`${j}:${u}`,markerSize:R}),w=await _(t,"blob",he.encode(O));r.push({path:f,mode:h.mode,hash:w,stage:0,stat:ae()}),r.push({path:u,mode:m.mode,hash:w,stage:0,stat:ae()});continue}else if(h){r.push({...h,stage:0});continue}}let c=i(a.path,2),l=i(a.path,3);if(c&&l&&(a.reason==="content"||a.reason==="add-add")){let f=Oe.decode((await W(t,c.hash)).content),u=Oe.decode((await W(t,l.hash)).content),d=a.reason==="content"?i(a.path,1):null,h=d?Oe.decode((await W(t,d.hash)).content):"",m=a.oursOrigPath||a.theirsOrigPath,y=o.a??"Temporary merge branch 1",p=o.b??"Temporary merge branch 2",b=m?`${y}:${a.oursOrigPath??a.path}`:y,R=m?`${p}:${a.theirsOrigPath??a.path}`:p,v=pe(f,h,u,{a:b,o:o.o,b:R,markerSize:o.markerSize}),j=await _(t,"blob",he.encode(v));r.push({path:a.path,mode:c.mode,hash:j,stage:0,stat:ae()})}else c?r.push({...c,stage:0}):l&&r.push({...l,stage:0})}return r.sort((a,c)=>je(a.path,c.path)),lt(t,r)}async function wt(t,e){let n=e.map(gt);if(n.length===0)return _(t,"blob",he.encode(""));let i=(e[e.length-1]??"").endsWith("\0")?n.join(`
22
17
  `):`${n.join(`
23
18
  `)}
24
- `;return W(t,"blob",ye.encode(i))}function H(t,e,n,r=0){let s=typeof n=="string"?parseInt(n,8):n;return{path:t,mode:s,hash:e,stage:r,stat:fe()}}function At(t,e){let n=t.get(e);return n||(n={path:e,stages:[null,null,null],pathnames:[e,e,e],filemask:0,matchMask:0,merged:{result:null,clean:!1},pathConflict:!1},t.set(e,n)),n}var Zs=new TextEncoder,ir=new TextDecoder,ve=16877,cr=33188,Qs=33261,fr=40960;function Y(t){let e=[];for(let n of t.split("/"))n==="."||n===""||(n===".."?e.pop():e.push(n));return"/"+e.join("/")}function or(t){let e=t.lastIndexOf("/");return e<=0?"/":t.slice(0,e)}function ar(t){switch(t){case G.EXECUTABLE:return Qs;case G.SYMLINK:return fr;case G.DIRECTORY:return ve;default:return cr}}var ot=class{constructor(e,n,r="/"){this.objectStore=e;this.rootTreeHash=n;this.rootPath=r;let s=Y(r);this.overlay.set(s,{type:"directory",mode:ve,mtime:this.epoch})}treeCache=new Map;overlay=new Map;removals=new Set;epoch=new Date(0);toRelative(e){let n=Y(e),r=Y(this.rootPath);if(n===r)return"";let s=r==="/"?"/":`${r}/`;return n.startsWith(s)?n.slice(s.length):null}async loadTreeDir(e){let n=this.treeCache.get(e);if(n)return n;if(e===""){let o=await this.objectStore.read(this.rootTreeHash);if(o.type!=="tree")return null;let a=He(o.content);return this.treeCache.set("",a.entries),a.entries}let r=e.split("/"),s=await this.loadTreeDir("");if(!s)return null;let i="";for(let o of r){let a=s.find(u=>u.name===o);if(!a||a.mode!==G.DIRECTORY)return null;i=i?`${i}/${o}`:o;let c=this.treeCache.get(i);if(c){s=c;continue}let f=await this.objectStore.read(a.hash);if(f.type!=="tree")return null;let l=He(f.content);this.treeCache.set(i,l.entries),s=l.entries}return s}async lookupTreeEntry(e){if(e==="")return null;let n=e.lastIndexOf("/"),r=n===-1?"":e.slice(0,n),s=n===-1?e:e.slice(n+1),i=await this.loadTreeDir(r);if(!i)return null;let o=i.find(a=>a.name===s);return o?{entry:o,dirEntries:i}:null}async isTreeDirectory(e){return e===""?!0:(await this.lookupTreeEntry(e))?.entry.mode===G.DIRECTORY}ensureOverlayParents(e){let n=or(e);n===Y(this.rootPath)||n==="/"||this.overlay.has(n)||(this.ensureOverlayParents(n),this.overlay.set(n,{type:"directory",mode:ve,mtime:new Date}))}async readFile(e){return ir.decode(await this.readFileBuffer(e))}async readFileBuffer(e){let n=Y(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, open '${e}'`);let r=this.overlay.get(n);if(r){if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${e}'`);return r.content}let s=this.toRelative(n);if(s===null||s==="")throw new Error(`ENOENT: no such file or directory, open '${e}'`);let i=await this.lookupTreeEntry(s);if(!i)throw new Error(`ENOENT: no such file or directory, open '${e}'`);if(i.entry.mode===G.DIRECTORY)throw new Error(`EISDIR: illegal operation on a directory, read '${e}'`);let o=await this.objectStore.read(i.entry.hash);if(o.type!=="blob")throw new Error(`ENOENT: no such file or directory, open '${e}'`);return o.content}async writeFile(e,n){let r=Y(e);this.removals.delete(r),this.ensureOverlayParents(r),this.overlay.set(r,{type:"file",content:typeof n=="string"?Zs.encode(n):new Uint8Array(n),mode:cr,mtime:new Date})}async exists(e){let n=Y(e);if(this.removals.has(n))return!1;if(this.overlay.has(n))return!0;let r=this.toRelative(n);return r===null?!1:r===""||await this.isTreeDirectory(r)?!0:await this.lookupTreeEntry(r)!==null}async stat(e){let n=Y(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, stat '${e}'`);let r=this.overlay.get(n);if(r)return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:r.type==="file"?r.content.byteLength:0,mtime:r.mtime};let s=this.toRelative(n);if(s===null)throw new Error(`ENOENT: no such file or directory, stat '${e}'`);if(s==="")return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:ve,size:0,mtime:this.epoch};let i=await this.lookupTreeEntry(s);if(!i)throw new Error(`ENOENT: no such file or directory, stat '${e}'`);let{entry:o}=i,a=o.mode===G.DIRECTORY,c=o.mode===G.SYMLINK,f=0;return a||(f=(await this.objectStore.read(o.hash)).content.byteLength),{isFile:!a&&!c,isDirectory:a,isSymbolicLink:!1,mode:ar(o.mode),size:f,mtime:this.epoch}}async lstat(e){let n=Y(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);let r=this.overlay.get(n);if(r)return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:r.type==="symlink",mode:r.mode,size:r.type==="file"?r.content.byteLength:r.type==="symlink"?r.target.length:0,mtime:r.mtime};let s=this.toRelative(n);if(s===null)throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);if(s==="")return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:ve,size:0,mtime:this.epoch};let i=await this.lookupTreeEntry(s);if(!i)throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);let{entry:o}=i,a=o.mode===G.DIRECTORY,c=o.mode===G.SYMLINK,f=0;return a||(f=(await this.objectStore.read(o.hash)).content.byteLength),{isFile:!a&&!c,isDirectory:a,isSymbolicLink:c,mode:ar(o.mode),size:f,mtime:this.epoch}}async mkdir(e,n){let r=Y(e);if(this.overlay.has(r)){if(this.overlay.get(r).type!=="directory")throw new Error(`EEXIST: file already exists, mkdir '${e}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let s=this.toRelative(r);if(s!==null&&!this.removals.has(r)&&(s===""||await this.isTreeDirectory(s))){if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let i=or(r);if(!(this.overlay.has(i)||await this.exists(i)))if(n?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${e}'`);this.removals.delete(r),this.overlay.set(r,{type:"directory",mode:ve,mtime:new Date})}async readdir(e){let n=Y(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, scandir '${e}'`);let r=new Set,s=this.toRelative(n);if(s!==null){let o=await this.loadTreeDir(s);if(o)for(let a of o){let c=n==="/"?`/${a.name}`:`${n}/${a.name}`;this.removals.has(c)||r.add(a.name)}}let i=n==="/"?"/":`${n}/`;for(let o of this.overlay.keys())if(o!==n&&o.startsWith(i)){let c=o.slice(i.length).split("/")[0];c&&!this.removals.has(n==="/"?`/${c}`:`${n}/${c}`)&&r.add(c)}if(r.size===0){if(this.overlay.get(n)?.type==="directory")return[];if(s!==null&&(s===""||await this.isTreeDirectory(s)))return[];throw new Error(`ENOENT: no such file or directory, scandir '${e}'`)}return[...r].sort()}async rm(e,n){let r=Y(e);if(!await this.exists(r)){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${e}'`)}let i=r==="/"?"/":`${r}/`;if(n?.recursive)for(let o of[...this.overlay.keys()])o.startsWith(i)&&(this.overlay.delete(o),this.removals.add(o));if(this.overlay.delete(r),this.removals.add(r),n?.recursive){let o=this.toRelative(r);o!==null&&await this.markTreeChildrenRemoved(o,r)}}async markTreeChildrenRemoved(e,n){let r=await this.loadTreeDir(e);if(r)for(let s of r){let i=n==="/"?`/${s.name}`:`${n}/${s.name}`;if(this.removals.add(i),s.mode===G.DIRECTORY){let o=e?`${e}/${s.name}`:s.name;await this.markTreeChildrenRemoved(o,i)}}}async readlink(e){let n=Y(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, readlink '${e}'`);let r=this.overlay.get(n);if(r){if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${e}'`);return r.target}let s=this.toRelative(n);if(s===null||s==="")throw new Error(`EINVAL: invalid argument, readlink '${e}'`);let i=await this.lookupTreeEntry(s);if(!i||i.entry.mode!==G.SYMLINK)throw new Error(`EINVAL: invalid argument, readlink '${e}'`);let o=await this.objectStore.read(i.entry.hash);return ir.decode(o.content)}async symlink(e,n){let r=Y(n);if(await this.exists(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureOverlayParents(r),this.removals.delete(r),this.overlay.set(r,{type:"symlink",target:e,mode:fr,mtime:new Date})}};async function*ei(t,e,n){let r=e?[e]:[];for await(let s of we(t,n,{exclude:r}))yield{hash:s.hash,message:s.commit.message,tree:s.commit.tree,parents:s.commit.parents,author:s.commit.author,committer:s.commit.committer}}async function ti(t,e,n){let r=await A(t,n),s=null;return e&&(s=(await A(t,e)).tree),oe(t,s,r.tree)}async function ni(t,e,n){return jt(t,e,n)}async function ri(t,e){return re(t,e)}async function si(t){return Et(t,"refs/heads")}async function ii(t){return Et(t,"refs/tags")}async function oi(t,e){return A(t,e)}async function ai(t,e){return ue(t,e)}async function ci(t,e){return U(t,e)}async function fi(t,e){return ie(t,e)}async function li(t,e,n){return oe(t,e,n)}function ui(t){return t==="insert"?"+":t==="delete"?"-":" "}function hi(t){return{oldStart:t.oldStart,oldCount:t.oldCount,newStart:t.newStart,newCount:t.newCount,lines:t.lines.map(e=>ui(e.type)+e.content)}}function lr(t,e,n){let r=te(t),s=te(e),i=Pe(r,s);return Hn(i,n).map(hi)}async function di(t,e,n,r){let s=await Ge(t,e),i=await Ge(t,n),o=await A(t,s),a=await A(t,i),c=await oe(t,o.tree,a.tree),f=r?.renames!==!1,l=r?.contextLines,u=r?.paths,d=[];if(f){let m=await be(t,c);c=m.remaining,d=m.renames}let h=[];for(let m of c){if(u&&!u.some(R=>m.path.startsWith(R)))continue;let y=m.oldHash?await U(t,m.oldHash):"",p=m.newHash?await U(t,m.newHash):"",b=lr(y,p,l);h.push({path:m.path,status:m.status,hunks:b})}for(let m of d){if(u&&!u.some(R=>m.newPath.startsWith(R)||m.oldPath.startsWith(R)))continue;let y=await U(t,m.oldHash),p=await U(t,m.newHash),b=lr(y,p,l);h.push({path:m.newPath,status:"renamed",oldPath:m.oldPath,similarity:m.similarity,hunks:b})}return h.sort((m,y)=>m.path.localeCompare(y.path)),h}async function mi(t,e,n){return Ne(t,e,n)}async function pi(t,e,n,r){let s=r?{a:r.ours??"ours",b:r.theirs??"theirs"}:void 0,i=await nr(t,e,n,s);return{treeHash:i.resultTree,clean:i.conflicts.length===0,conflicts:i.conflicts,messages:i.messages}}async function yi(t,e,n,r,s){let i=s?{a:s.ours??"ours",b:s.theirs??"theirs"}:void 0,o=await je(t,e,n,r,i);return{treeHash:o.resultTree,clean:o.conflicts.length===0,conflicts:o.conflicts,messages:o.messages}}async function gi(t,e){let n=Xe({type:"commit",tree:e.tree,parents:e.parents,author:e.author,committer:e.committer,message:e.message}),r=await W(t,"commit",n);if(e.branch){let s=`refs/heads/${e.branch}`;await t.refStore.writeRef(s,{type:"direct",hash:r}),await t.refStore.readRef("HEAD")||await t.refStore.writeRef("HEAD",{type:"symbolic",target:s})}return r}async function bi(t,e){let n=[...e].sort((i,o)=>i.name.localeCompare(o.name)),r=await Promise.all(n.map(async i=>{let o=i.mode;return o||(o=(await t.objectStore.read(i.hash)).type==="tree"?"040000":"100644"),{mode:o,name:i.name,hash:i.hash}})),s=Ze({type:"tree",entries:r});return W(t,"tree",s)}async function wi(t,e){return W(t,"blob",new TextEncoder().encode(e))}async function xi(t,e,n){let r=await A(t,e),i=(await ie(t,r.tree)).find(o=>o.path===n);return i?U(t,i.hash):null}async function Ge(t,e){let n=await Pn(t,e);if(n)return n;throw new Error(`ref or commit '${e}' not found`)}async function ur(t,e,n,r){let s=new Set,i=0;for(let o of e){if(!Gt(o.path))throw new Error(`refusing to check out unsafe path '${o.path}'`);let a=B(r,o.path);if(!_t(r,a))throw new Error(`refusing to check out path outside target directory: '${o.path}'`);let c=Bt(a);if(c!==r&&!s.has(c)&&(await n.mkdir(c,{recursive:!0}),s.add(c)),se(o.mode)){let f=await U(t,o.hash);if(!Wt(f))throw new Error(`refusing to create symlink with unsafe target '${f}'`);n.symlink?await n.symlink(f,a):await n.writeFile(a,f)}else{let f=await ue(t,o.hash);await n.writeFile(a,f)}i++}return i}function hr(t){return Vt(t.map(e=>({path:e.path,mode:parseInt(e.mode,8),hash:e.hash,stage:0,stat:fe()})))}async function Ii(t,e,n,r="/"){let s=await Ge(t,e),i=await A(t,s),o=await ie(t,i.tree),a=await ur(t,o,n,r);return{commitHash:s,treeHash:i.tree,filesWritten:a}}async function Ei(t,e,n){let r=n?.workTree??"/",s=n?.gitDir??B(r,".git"),i=n?.ref??"HEAD";await e.mkdir(s,{recursive:!0});let o=await Ge(t,i),a=await A(t,o),c=await ie(t,a.tree),f={...t,fs:e,gitDir:s,workTree:r},l=await ur(t,c,e,r);return await We(f,hr(c)),{ctx:f,commitHash:o,treeHash:a.tree,filesWritten:l}}async function Oi(t,e,n){return _n(t,e,n)}async function Ri(t,e,n,r){return Gn(t,e,n,r)}async function*Pi(t,e,n){if(n?.paths&&n.paths.length>0){yield*ki(t,e,n.paths,n);return}for await(let r of we(t,e,n))yield{hash:r.hash,message:r.commit.message,tree:r.commit.tree,parents:r.commit.parents,author:r.commit.author,committer:r.commit.committer}}function Lt(t,e){return e.some(n=>t===n||t.startsWith(n.endsWith("/")?n:n+"/"))}async function*ki(t,e,n,r){let s=new Set;if(r?.exclude)for await(let f of we(t,r.exclude))s.add(f.hash);let i=new Set(s),o=new Se,a=async f=>{if(!i.has(f))try{let l=await A(t,f);o.push({hash:f,commit:l})}catch{}},c=Array.isArray(e)?e:[e];for(let f of c)await a(f);for(;o.size>0;){let f=o.pop();if(i.has(f.hash))continue;i.add(f.hash);let{commit:l}=f,u=r?.firstParent?l.parents.slice(0,1):l.parents,d=()=>({hash:f.hash,message:l.message,tree:l.tree,parents:l.parents,author:l.author,committer:l.committer});if(u.length===0){(await oe(t,null,l.tree)).some(y=>Lt(y.path,n))&&(yield d());continue}if(u.length===1){let m=u[0];try{let y=await A(t,m);(await oe(t,y.tree,l.tree)).some(b=>Lt(b.path,n))&&(yield d())}catch{yield d()}await a(m);continue}let h=[];for(let m of u)try{let y=await A(t,m);(await oe(t,y.tree,l.tree)).some(b=>Lt(b.path,n))||h.push(m)}catch{}if(h.length>0)await a(h[0]);else{yield d();for(let m of u)await a(m)}}}var Mt=class{constructor(e){this.inner=e}read(e){return this.inner.read(e)}write(e,n){throw new Error("cannot write: object store is read-only")}exists(e){return this.inner.exists(e)}ingestPack(e){throw new Error("cannot ingest pack: object store is read-only")}ingestPackStream(e){throw new Error("cannot ingest pack: object store is read-only")}findByPrefix(e){return this.inner.findByPrefix(e)}},Dt=class{constructor(e){this.inner=e}readRef(e){return this.inner.readRef(e)}writeRef(e,n){throw new Error("cannot write ref: ref store is read-only")}deleteRef(e){throw new Error("cannot delete ref: ref store is read-only")}listRefs(e){return this.inner.listRefs(e)}compareAndSwapRef(e,n,r){throw new Error("cannot update ref: ref store is read-only")}};function Si(t){let e=0;for(let n=0;n<t.length;n++)t[n]==="/"&&e++;return e}function Ti(t,e){let n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"\0").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").replace(/\0/g,".*");return new RegExp(`^${n}$`).test(e)}async function ji(t,e,n,r){let s=[];for(let m of n)if(m instanceof RegExp)s.push(m);else{let y=Vn(m,{fixed:r?.fixed,ignoreCase:r?.ignoreCase,wordRegexp:r?.wordRegexp});if(!y)throw new Error(`Invalid pattern: ${m}`);s.push(y)}let i=await A(t,e),a=(await ie(t,i.tree)).filter(m=>!m.mode.startsWith("120")).sort((m,y)=>m.path<y.path?-1:m.path>y.path?1:0),c=r?.allMatch??!1,f=r?.invert??!1,l=r?.maxCount,u=r?.maxDepth,d=r?.paths,h=[];for(let m of a){if(u!==void 0&&Si(m.path)>u||d&&!d.some(R=>Ti(R,m.path)))continue;let y=await U(t,m.hash),p=zn(y,s,c,f);if(p.binary){h.push({path:m.path,matches:[],binary:!0});continue}if(p.matches.length===0)continue;let b=l!==void 0?p.matches.slice(0,l):p.matches;h.push({path:m.path,matches:b,binary:!1})}return h}function vi(t){return{objectStore:new Mt(t.objectStore),refStore:new Dt(t.refStore),hooks:t.hooks}}var Ut=class{constructor(e){this.inner=e}overlay=new Map;async read(e){let n=this.overlay.get(e);return n?{type:n.type,content:new Uint8Array(n.content)}:this.inner.read(e)}async write(e,n){let r=await ce(wt(e,n));return this.overlay.has(r)||await this.inner.exists(r).catch(()=>!1)||this.overlay.set(r,{type:e,content:new Uint8Array(n)}),r}async exists(e){return this.overlay.has(e)?!0:this.inner.exists(e)}async ingestPack(e){if(e.byteLength<32||new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8)===0)return 0;let s=this.overlay,i=this.inner,o=await Ye(e,async a=>{let c=s.get(a);if(c)return{type:c.type,content:new Uint8Array(c.content)};try{return await i.read(a)}catch{return null}});for(let a of o)s.has(a.hash)||s.set(a.hash,{type:a.type,content:a.content});return o.length}async ingestPackStream(e){let n=this.overlay,r=0;for await(let s of e)n.has(s.hash)||n.set(s.hash,{type:s.type,content:s.content}),r++;return r}async findByPrefix(e){let n=await this.inner.findByPrefix(e),r=[];for(let i of this.overlay.keys())i.startsWith(e)&&r.push(i);return[...new Set([...n,...r])]}},Ht=class{constructor(e){this.inner=e}overlay=new Map;deleted=new Set;async readRef(e){if(this.deleted.has(e))return null;let n=this.overlay.get(e);return n||this.inner.readRef(e)}async writeRef(e,n){this.deleted.delete(e),this.overlay.set(e,Je(n))}async deleteRef(e){this.overlay.delete(e),this.deleted.add(e)}async listRefs(e){let n=await this.inner.listRefs(e),r=new Map;for(let s of n)this.deleted.has(s.name)||r.set(s.name,s);for(let[s,i]of this.overlay)if(!(e&&!s.startsWith(e))){if(i.type==="direct")r.set(s,{name:s,hash:i.hash});else if(i.type==="symbolic"){let o=await this.resolveSymbolic(i.target);o&&r.set(s,{name:s,hash:o})}}return[...r.values()]}async compareAndSwapRef(e,n,r){let s=await this.readRef(e),i=null;if(s&&(s.type==="direct"?i=s.hash:s.type==="symbolic"&&(i=await this.resolveSymbolic(s.target))),n===null){if(s!==null)return!1}else if(i!==n)return!1;return r===null?(this.overlay.delete(e),this.deleted.add(e)):(this.deleted.delete(e),this.overlay.set(e,r)),!0}async resolveSymbolic(e,n=0){if(n>10)return null;let r=await this.readRef(e);return r?r.type==="direct"?r.hash:r.type==="symbolic"?this.resolveSymbolic(r.target,n+1):null:null}};function dr(t){return{objectStore:new Ut(t.objectStore),refStore:new Ht(t.refStore),hooks:t.hooks}}async function Ci(t,e){let n=dr(t),r=e?.workTree??"/",s=e?.gitDir??B(r,".git"),i=e?.ref??"HEAD",o=await Ge(n,i),a=await A(n,o),c=new ot(n.objectStore,a.tree,r),f="refs/heads/main";await n.refStore.writeRef("HEAD",{type:"symbolic",target:f}),await n.refStore.writeRef(f,{type:"direct",hash:o});let l={...n,fs:c,gitDir:s,workTree:r},u=await ie(n,a.tree);return await We(l,hr(u)),{ctx:l,commitHash:o,treeHash:a.tree,filesWritten:0}}export{It as FileSystemRefStore,bt as PackedObjectStore,Ri as blame,Oi as countAheadBehind,gi as createCommit,Ci as createSandboxWorktree,Ei as createWorktree,di as diffCommits,li as diffTrees,Ii as extractTree,mi as findMergeBases,fi as flattenTree,ti as getChangedFiles,ei as getNewCommits,ji as grep,ni as isAncestor,si as listBranches,ii as listTags,pi as mergeTrees,yi as mergeTreesFromTreeHashes,dr as overlayRepo,ai as readBlob,ci as readBlobText,oi as readCommit,xi as readFileAtCommit,vi as readonlyRepo,ri as resolveRef,Pi as walkCommitHistory,wi as writeBlob,bi as writeTree};
19
+ `;return _(t,"blob",he.encode(i))}function U(t,e,n,r=0){let s=typeof n=="string"?parseInt(n,8):n;return{path:t,mode:s,hash:e,stage:r,stat:ae()}}function bt(t,e){let n=t.get(e);return n||(n={path:e,stages:[null,null,null],pathnames:[e,e,e],filemask:0,matchMask:0,merged:{result:null,clean:!1},pathConflict:!1},t.set(e,n)),n}async function Js(t,e,n,r){let s=r?{a:r.ours??"ours",b:r.theirs??"theirs"}:void 0,i=await Mn(t,e,n,s);return{treeHash:i.resultTree,clean:i.conflicts.length===0,conflicts:i.conflicts,messages:i.messages}}async function Qs(t,e,n,r,s){let i=s?{a:s.ours??"ours",b:s.theirs??"theirs"}:void 0,o=await Re(t,e,n,r,i);return{treeHash:o.resultTree,clean:o.conflicts.length===0,conflicts:o.conflicts,messages:o.messages}}var ei=new TextEncoder,Un=new TextDecoder,Pe=16877,Fn=33188,ti=33261,Gn=40960;function K(t){let e=[];for(let n of t.split("/"))n==="."||n===""||(n===".."?e.pop():e.push(n));return"/"+e.join("/")}function Nn(t){let e=t.lastIndexOf("/");return e<=0?"/":t.slice(0,e)}function Bn(t){switch(t){case F.EXECUTABLE:return ti;case F.SYMLINK:return Gn;case F.DIRECTORY:return Pe;default:return Fn}}var Xe=class{constructor(e,n,r="/"){this.objectStore=e;this.rootTreeHash=n;this.rootPath=r;let s=K(r);this.overlay.set(s,{type:"directory",mode:Pe,mtime:this.epoch})}treeCache=new Map;overlay=new Map;removals=new Set;epoch=new Date(0);toRelative(e){let n=K(e),r=K(this.rootPath);if(n===r)return"";let s=r==="/"?"/":`${r}/`;return n.startsWith(s)?n.slice(s.length):null}async loadTreeDir(e){let n=this.treeCache.get(e);if(n)return n;if(e===""){let o=await this.objectStore.read(this.rootTreeHash);if(o.type!=="tree")return null;let a=Ae(o.content);return this.treeCache.set("",a.entries),a.entries}let r=e.split("/"),s=await this.loadTreeDir("");if(!s)return null;let i="";for(let o of r){let a=s.find(u=>u.name===o);if(!a||a.mode!==F.DIRECTORY)return null;i=i?`${i}/${o}`:o;let c=this.treeCache.get(i);if(c){s=c;continue}let l=await this.objectStore.read(a.hash);if(l.type!=="tree")return null;let f=Ae(l.content);this.treeCache.set(i,f.entries),s=f.entries}return s}async lookupTreeEntry(e){if(e==="")return null;let n=e.lastIndexOf("/"),r=n===-1?"":e.slice(0,n),s=n===-1?e:e.slice(n+1),i=await this.loadTreeDir(r);if(!i)return null;let o=i.find(a=>a.name===s);return o?{entry:o,dirEntries:i}:null}async isTreeDirectory(e){return e===""?!0:(await this.lookupTreeEntry(e))?.entry.mode===F.DIRECTORY}ensureOverlayParents(e){let n=Nn(e);n===K(this.rootPath)||n==="/"||this.overlay.has(n)||(this.ensureOverlayParents(n),this.overlay.set(n,{type:"directory",mode:Pe,mtime:new Date}))}async readFile(e){return Un.decode(await this.readFileBuffer(e))}async readFileBuffer(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, open '${e}'`);let r=this.overlay.get(n);if(r){if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${e}'`);return r.content}let s=this.toRelative(n);if(s===null||s==="")throw new Error(`ENOENT: no such file or directory, open '${e}'`);let i=await this.lookupTreeEntry(s);if(!i)throw new Error(`ENOENT: no such file or directory, open '${e}'`);if(i.entry.mode===F.DIRECTORY)throw new Error(`EISDIR: illegal operation on a directory, read '${e}'`);let o=await this.objectStore.read(i.entry.hash);if(o.type!=="blob")throw new Error(`ENOENT: no such file or directory, open '${e}'`);return o.content}async writeFile(e,n){let r=K(e);this.removals.delete(r),this.ensureOverlayParents(r),this.overlay.set(r,{type:"file",content:typeof n=="string"?ei.encode(n):new Uint8Array(n),mode:Fn,mtime:new Date})}async exists(e){let n=K(e);if(this.removals.has(n))return!1;if(this.overlay.has(n))return!0;let r=this.toRelative(n);return r===null?!1:r===""||await this.isTreeDirectory(r)?!0:await this.lookupTreeEntry(r)!==null}async stat(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, stat '${e}'`);let r=this.overlay.get(n);if(r)return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:r.type==="file"?r.content.byteLength:0,mtime:r.mtime};let s=this.toRelative(n);if(s===null)throw new Error(`ENOENT: no such file or directory, stat '${e}'`);if(s==="")return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:Pe,size:0,mtime:this.epoch};let i=await this.lookupTreeEntry(s);if(!i)throw new Error(`ENOENT: no such file or directory, stat '${e}'`);let{entry:o}=i,a=o.mode===F.DIRECTORY,c=o.mode===F.SYMLINK,l=0;return a||(l=(await this.objectStore.read(o.hash)).content.byteLength),{isFile:!a&&!c,isDirectory:a,isSymbolicLink:!1,mode:Bn(o.mode),size:l,mtime:this.epoch}}async lstat(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);let r=this.overlay.get(n);if(r)return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:r.type==="symlink",mode:r.mode,size:r.type==="file"?r.content.byteLength:r.type==="symlink"?r.target.length:0,mtime:r.mtime};let s=this.toRelative(n);if(s===null)throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);if(s==="")return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:Pe,size:0,mtime:this.epoch};let i=await this.lookupTreeEntry(s);if(!i)throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);let{entry:o}=i,a=o.mode===F.DIRECTORY,c=o.mode===F.SYMLINK,l=0;return a||(l=(await this.objectStore.read(o.hash)).content.byteLength),{isFile:!a&&!c,isDirectory:a,isSymbolicLink:c,mode:Bn(o.mode),size:l,mtime:this.epoch}}async mkdir(e,n){let r=K(e);if(this.overlay.has(r)){if(this.overlay.get(r).type!=="directory")throw new Error(`EEXIST: file already exists, mkdir '${e}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let s=this.toRelative(r);if(s!==null&&!this.removals.has(r)&&(s===""||await this.isTreeDirectory(s))){if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let i=Nn(r);if(!(this.overlay.has(i)||await this.exists(i)))if(n?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${e}'`);this.removals.delete(r),this.overlay.set(r,{type:"directory",mode:Pe,mtime:new Date})}async readdir(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, scandir '${e}'`);let r=new Set,s=this.toRelative(n);if(s!==null){let o=await this.loadTreeDir(s);if(o)for(let a of o){let c=n==="/"?`/${a.name}`:`${n}/${a.name}`;this.removals.has(c)||r.add(a.name)}}let i=n==="/"?"/":`${n}/`;for(let o of this.overlay.keys())if(o!==n&&o.startsWith(i)){let c=o.slice(i.length).split("/")[0];c&&!this.removals.has(n==="/"?`/${c}`:`${n}/${c}`)&&r.add(c)}if(r.size===0){if(this.overlay.get(n)?.type==="directory")return[];if(s!==null&&(s===""||await this.isTreeDirectory(s)))return[];throw new Error(`ENOENT: no such file or directory, scandir '${e}'`)}return[...r].sort()}async rm(e,n){let r=K(e);if(!await this.exists(r)){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${e}'`)}let i=r==="/"?"/":`${r}/`;if(n?.recursive)for(let o of[...this.overlay.keys()])o.startsWith(i)&&(this.overlay.delete(o),this.removals.add(o));if(this.overlay.delete(r),this.removals.add(r),n?.recursive){let o=this.toRelative(r);o!==null&&await this.markTreeChildrenRemoved(o,r)}}async markTreeChildrenRemoved(e,n){let r=await this.loadTreeDir(e);if(r)for(let s of r){let i=n==="/"?`/${s.name}`:`${n}/${s.name}`;if(this.removals.add(i),s.mode===F.DIRECTORY){let o=e?`${e}/${s.name}`:s.name;await this.markTreeChildrenRemoved(o,i)}}}async readlink(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, readlink '${e}'`);let r=this.overlay.get(n);if(r){if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${e}'`);return r.target}let s=this.toRelative(n);if(s===null||s==="")throw new Error(`EINVAL: invalid argument, readlink '${e}'`);let i=await this.lookupTreeEntry(s);if(!i||i.entry.mode!==F.SYMLINK)throw new Error(`EINVAL: invalid argument, readlink '${e}'`);let o=await this.objectStore.read(i.entry.hash);return Un.decode(o.content)}async symlink(e,n){let r=K(n);if(await this.exists(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureOverlayParents(r),this.removals.delete(r),this.overlay.set(r,{type:"symlink",target:e,mode:Gn,mtime:new Date})}};var It=class{constructor(e){this.inner=e}read(e){return this.inner.read(e)}write(e,n){throw new Error("cannot write: object store is read-only")}exists(e){return this.inner.exists(e)}ingestPack(e){throw new Error("cannot ingest pack: object store is read-only")}ingestPackStream(e){throw new Error("cannot ingest pack: object store is read-only")}findByPrefix(e){return this.inner.findByPrefix(e)}},Et=class{constructor(e){this.inner=e}readRef(e){return this.inner.readRef(e)}writeRef(e,n){throw new Error("cannot write ref: ref store is read-only")}deleteRef(e){throw new Error("cannot delete ref: ref store is read-only")}listRefs(e){return this.inner.listRefs(e)}compareAndSwapRef(e,n,r){throw new Error("cannot update ref: ref store is read-only")}};function ni(t){return{objectStore:new It(t.objectStore),refStore:new Et(t.refStore),hooks:t.hooks}}var xt=class{constructor(e){this.inner=e}overlay=new Map;async read(e){let n=this.overlay.get(e);return n?{type:n.type,content:new Uint8Array(n.content)}:this.inner.read(e)}async write(e,n){let r=await De(Wt(e,n));return this.overlay.has(r)||await this.inner.exists(r).catch(()=>!1)||this.overlay.set(r,{type:e,content:new Uint8Array(n)}),r}async exists(e){return this.overlay.has(e)?!0:this.inner.exists(e)}async ingestPack(e){if(e.byteLength<32)return 0;let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==1346454347)throw new Error(`invalid pack signature: 0x${r.toString(16)} (expected 0x5041434b)`);let s=n.getUint32(4);if(s!==2)throw new Error(`unsupported pack version: ${s}`);if(n.getUint32(8)===0)return 0;let o=this.overlay,a=this.inner,c=await Gt(e,async l=>{let f=o.get(l);if(f)return{type:f.type,content:new Uint8Array(f.content)};try{return await a.read(l)}catch{return null}});for(let l of c)o.has(l.hash)||o.set(l.hash,{type:l.type,content:l.content});return c.length}async ingestPackStream(e){let n=this.overlay,r=0;for await(let s of e)n.has(s.hash)||n.set(s.hash,{type:s.type,content:s.content}),r++;return r}async findByPrefix(e){let n=await this.inner.findByPrefix(e),r=[];for(let i of this.overlay.keys())i.startsWith(e)&&r.push(i);return[...new Set([...n,...r])]}},Ot=class{constructor(e){this.inner=e}overlay=new Map;deleted=new Set;async readRef(e){if(this.deleted.has(e))return null;let n=this.overlay.get(e);return n||this.inner.readRef(e)}async writeRef(e,n){this.deleted.delete(e),this.overlay.set(e,qt(n))}async deleteRef(e){this.overlay.delete(e),this.deleted.add(e)}async listRefs(e){let n=await this.inner.listRefs(e),r=new Map;for(let s of n)this.deleted.has(s.name)||r.set(s.name,s);for(let[s,i]of this.overlay)if(!(e&&!s.startsWith(e))){if(i.type==="direct")r.set(s,{name:s,hash:i.hash});else if(i.type==="symbolic"){let o=await this.resolveSymbolic(i.target);o&&r.set(s,{name:s,hash:o})}}return[...r.values()]}async compareAndSwapRef(e,n,r){let s=await this.readRef(e),i=null;if(s&&(s.type==="direct"?i=s.hash:s.type==="symbolic"&&(i=await this.resolveSymbolic(s.target))),n===null){if(s!==null)return!1}else if(i!==n)return!1;return r===null?(this.overlay.delete(e),this.deleted.add(e)):(this.deleted.delete(e),this.overlay.set(e,r)),!0}async resolveSymbolic(e,n=0){if(n>10)return null;let r=await this.readRef(e);return r?r.type==="direct"?r.hash:r.type==="symbolic"?this.resolveSymbolic(r.target,n+1):null:null}};function Rt(t){return{objectStore:new xt(t.objectStore),refStore:new Ot(t.refStore),hooks:t.hooks}}async function Pt(t,e){let n=await Fe(t,e);if(n)return n;throw new Error(`ref or commit '${e}' not found`)}async function _n(t,e,n,r){let s=new Set,i=0;for(let o of e){if(!Zt(o.path))throw new Error(`refusing to check out unsafe path '${o.path}'`);let a=be(r,o.path);if(!Jt(r,a))throw new Error(`refusing to check out path outside target directory: '${o.path}'`);let c=_t(a);if(c!==r&&!s.has(c)&&(await n.mkdir(c,{recursive:!0}),s.add(c)),se(o.mode)){let l=await H(t,o.hash);if(!Qt(l))throw new Error(`refusing to create symlink with unsafe target '${l}'`);n.symlink?await n.symlink(l,a):await n.writeFile(a,l)}else{let l=await ne(t,o.hash);await n.writeFile(a,l)}i++}return i}function Wn(t){return en(t.map(e=>({path:e.path,mode:parseInt(e.mode,8),hash:e.hash,stage:0,stat:ae()})))}async function ri(t,e,n,r="/"){let s=await Pt(t,e),i=await A(t,s),o=await J(t,i.tree),a=await _n(t,o,n,r);return{commitHash:s,treeHash:i.tree,filesWritten:a}}async function si(t,e,n){let r=n?.workTree??"/",s=n?.gitDir??be(r,".git"),i=n?.ref??"HEAD";await e.mkdir(s,{recursive:!0});let o=await Pt(t,i),a=await A(t,o),c=await J(t,a.tree),l={...t,fs:e,gitDir:s,workTree:r},f=await _n(t,c,e,r);return await Be(l,Wn(c)),{ctx:l,commitHash:o,treeHash:a.tree,filesWritten:f}}async function ii(t,e){let n=Rt(t),r=e?.workTree??"/",s=e?.gitDir??be(r,".git"),i=e?.ref??"HEAD",o=await Pt(n,i),a=await A(n,o),c=new Xe(n.objectStore,a.tree,r),l="refs/heads/main";await n.refStore.writeRef("HEAD",{type:"symbolic",target:l}),await n.refStore.writeRef(l,{type:"direct",hash:o});let f={...n,fs:c,gitDir:s,workTree:r},u=await J(n,a.tree);return await Be(f,Wn(u)),{ctx:f,commitHash:o,treeHash:a.tree,filesWritten:0}}export{js as blame,vs as countAheadBehind,Hs as createCommit,ii as createSandboxWorktree,si as createWorktree,Ls as diffCommits,Ps as diffTrees,ri as extractTree,Cs as findMergeBases,Rs as flattenTree,ks as getChangedFiles,Ts as getNewCommits,zr as grep,Ss as isAncestor,Hr as listBranches,Ur as listTags,Js as mergeTrees,Qs as mergeTreesFromTreeHashes,Rt as overlayRepo,Br as readBlob,Fr as readBlobText,Nr as readCommit,Gr as readFileAtCommit,ni as readonlyRepo,Dr as resolveRef,Ms as walkCommitHistory,Ns as writeBlob,Us as writeTree};