@zip.js/zip.js 2.8.46 → 2.8.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/deno.json +1 -1
  2. package/dist/zip-core-external.js +85 -9
  3. package/dist/zip-core-external.min.js +1 -1
  4. package/dist/zip-core.js +95 -8
  5. package/dist/zip-core.min.js +1 -1
  6. package/dist/zip-fs-core-external.js +85 -9
  7. package/dist/zip-fs-core-external.min.js +1 -1
  8. package/dist/zip-fs-core.js +86 -8
  9. package/dist/zip-fs-core.min.js +1 -1
  10. package/dist/zip-fs-external.js +85 -9
  11. package/dist/zip-fs-external.min.js +1 -1
  12. package/dist/zip-fs-native.js +99 -10
  13. package/dist/zip-fs-native.min.js +1 -1
  14. package/dist/zip-fs.js +98 -9
  15. package/dist/zip-fs.min.js +1 -1
  16. package/dist/zip-legacy.js +97 -10
  17. package/dist/zip-legacy.min.js +1 -1
  18. package/dist/zip-native.js +97 -10
  19. package/dist/zip-native.min.js +1 -1
  20. package/dist/zip-web-worker-native.js +1 -1
  21. package/dist/zip-web-worker.js +1 -1
  22. package/dist/zip.js +96 -9
  23. package/dist/zip.min.js +1 -1
  24. package/index-native.cjs +99 -10
  25. package/index-native.min.js +1 -1
  26. package/index.cjs +98 -9
  27. package/index.d.cts +141 -0
  28. package/index.d.ts +141 -0
  29. package/index.min.js +1 -1
  30. package/lib/core/codec-pool.js +6 -3
  31. package/lib/core/codec-worker.js +2 -1
  32. package/lib/core/constants.js +2 -0
  33. package/lib/core/options.js +4 -0
  34. package/lib/core/streams/codec-stream.js +2 -0
  35. package/lib/core/streams/common-crypto.js +2 -1
  36. package/lib/core/streams/zip-entry-stream.js +4 -2
  37. package/lib/core/util/sync-access-handle-temp-stream.js +2 -1
  38. package/lib/core/web-worker-inline-native.js +1 -1
  39. package/lib/core/web-worker-inline-wasm.js +1 -1
  40. package/lib/core/zip-fs.js +1 -1
  41. package/lib/core/zip-reader.js +58 -5
  42. package/lib/core/zip-writer.js +43 -8
  43. package/lib/zip-core-base.js +2 -1
  44. package/lib/zip-core-reader.js +2 -1
  45. package/lib/zip-core-writer.js +10 -1
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- ((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:n,Number:s,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:w,Error:u,Uint8Array:f,Uint16Array:p,Uint32Array:h,DataView:m,Blob:y,Promise:S,TextEncoder:g,TextDecoder:b,document:x,crypto:z,btoa:F,TransformStream:E,ReadableStream:R,WritableStream:D,CompressionStream:k,DecompressionStream:A,navigator:v,Worker:C}="undefined"!=typeof globalThis?globalThis:this||self;var T=void 0!==x?x.currentScript:null;const U=4294967295,I=65535,O=255,M=67324752,N=134695760,_=N,L=33639248,W=101010256,P=101075792,V=117853008,Z=22,B=20,H=21589,j=2048,q=16384,K=2048,Y=1024,G="/",X=30,J=new o(2107,11,31,23,59,58),Q=new o(1980,0,1),$=void 0,ee=1/0,te="undefined",re="function",ne=new f;let se=2;try{typeof v!=te&&v.hardwareConcurrency&&(se=v.hardwareConcurrency)}catch{}const ae={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:se,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,workerStartupTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,transferStreams:!0,CompressionStream:typeof k!=te&&k,DecompressionStream:typeof A!=te&&A},ie=["baseURI","wasmURI","workerURI","createWorker","chunkSize","maxWorkers","terminateWorkerTimeout","workerStarvationTimeout","workerStartupTimeout","useCompressionStream","useWebWorkers","transferStreams","CompressionStream","DecompressionStream","CompressionStreamFallback","DecompressionStreamFallback"],oe={...ae};function ce(){return oe}function le(e){return i.max(e.chunkSize,64)}function de(e){e=we(e);for(const t of ie){const r=e[t];r!==$&&(oe[t]=r)}}function we(e){const{CompressionStreamZlib:t,DecompressionStreamZlib:n}=e;if(t===$&&n===$)return e;const s=r.assign({},e);return s.CompressionStreamFallback===$&&(s.CompressionStreamFallback=t),s.DecompressionStreamFallback===$&&(s.DecompressionStreamFallback=n),s}const ue="Invalid codec definition",fe="Reserved compression method",pe="Invalid codec module",he="string",me=[0,8,9,99],ye=new c,Se=new c;function ge(e){return ye.get(e)}function be(e){return Se.get(e)}function xe(e,t){const{CompressionStream:r,DecompressionStream:n}=t;if(typeof r!=re&&typeof n!=re)throw new u(pe);Se.set(e,{CompressionStream:r,DecompressionStream:n})}const ze=[[],[],[],[],[],[],[],[]];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)t=1&t?t>>>1^3988292384:t>>>1;ze[0][e]=t}for(let e=0;256>e;e++)for(let t=1;8>t;t++){const r=ze[t-1][e];ze[t][e]=r>>>8^ze[0][255&r]}const[Fe,Ee,Re,De,ke,Ae,ve,Ce]=ze;class Te{constructor(e){this.o=e||-1}append(e){let t=0|this.o;const r=0|e.length;let n=0;if(r>=8&&e.buffer){const s=new m(e.buffer,e.byteOffset,r),a=r-8;for(;a>=n;n+=8){const e=t^s.getInt32(n,!0),r=s.getInt32(n+4,!0);t=Ce[255&e]^ve[e>>>8&255]^Ae[e>>>16&255]^ke[e>>>24&255]^De[255&r]^Re[r>>>8&255]^Ee[r>>>16&255]^Fe[r>>>24&255]}}for(;r>n;n++)t=t>>>8^Fe[255&(t^e[n])];this.o=t}get(){return~this.o}}class Ue extends E{constructor(){let e;const t=new Te;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function Ie(e){if(typeof g==te){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new g).encode(e)}function Oe(e,t){const r=new f(e.length+t.length);return r.set(e),r.set(t,e.length),r}function Me(e){return e.byteOffset||e.byteLength!=e.buffer.byteLength?new f(e):e}function Ne(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const _e={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],n=_e.l(r);return 32===n?e.concat(t):_e.h(t,n,0|r,e.slice(0,e.length-1))},m(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+_e.l(r)},S(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=_e.F(t,e[r-1]&2147483648>>t-1,1)),e},F:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,l:e=>i.round(e/1099511627776)||32,h(e,t,r,n){for(void 0===n&&(n=[]);t>=32;t-=32)n.push(r),r=0;if(0===t)return n.concat(e);for(let s=0;s<e.length;s++)n.push(r|e[s]>>>t),r=e[s]<<32-t;const s=e.length?e[e.length-1]:0,a=_e.l(s);return n.push(_e.F(t+a&31,t+a>32?r:n.pop(),1)),n}},Le={bytes:{R(e){const t=_e.m(e)/8,r=new f(t);let n;for(let s=0;t>s;s++)3&s||(n=e[s/4]),r[s]=n>>>24,n<<=8;return r},D(e){const t=[];let r,n=0;for(r=0;r<e.length;r++)n=n<<8|e[r],3&~r||(t.push(n),n=0);return 3&r&&t.push(_e.F(8*(3&r),n)),t}}},We=class{constructor(e){const t=this;t.blockSize=512,t.A=[1732584193,4023233417,2562383102,271733878,3285377520],t.v=[1518500249,1859775393,2400959708,3395469782],e?(t.C=e.C.slice(0),t.T=e.T.slice(0),t.U=e.U):t.reset()}reset(){const e=this;return e.C=e.A.slice(0),e.T=[],e.U=0,e}update(e){const t=this;"string"==typeof e&&(e=Le.I.D(e));const r=t.T=_e.concat(t.T,e),n=t.U,s=t.U=n+_e.m(e);if(s>9007199254740991)throw new u("Cannot hash more than 2^53 - 1 bits");const a=new h(r);let i=0;for(let e=t.blockSize+n-(t.blockSize+n&t.blockSize-1);s>=e;e+=t.blockSize)t.O(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}M(){const e=this;let t=e.T;const r=e.C;t=_e.concat(t,[_e.F(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e.U/4294967296)),t.push(0|e.U);t.length;)e.O(t.splice(0,16));return e.reset(),r}N(e,t,r,n){return e>19?e>39?e>59?e>79?void 0:t^r^n:t&r|t&n|r&n:t^r^n:t&r|~t&n}_(e,t){return t<<e|t>>>32-e}O(e){const r=this,n=r.C,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let a=n[0],o=n[1],c=n[2],l=n[3],d=n[4];for(let e=0;79>=e;e++){16>e||(s[e]=r._(1,s[e-3]^s[e-8]^s[e-14]^s[e-16]));const t=r._(5,a)+r.N(e,o,c,l)+d+s[e]+r.v[i.floor(e/20)]|0;d=l,l=c,c=r._(30,o),o=a,a=t}n[0]=n[0]+a|0,n[1]=n[1]+o|0,n[2]=n[2]+c|0,n[3]=n[3]+l|0,n[4]=n[4]+d|0}},Pe={importKey:e=>new Pe.L(Le.bytes.D(e)),W(e,t,r,n){if(r=r||1e4,0>n||0>r)throw new u("invalid params to pbkdf2");const s=1+(n>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(s),w=new m(d);let f=0;const p=_e;for(t=Le.bytes.D(t),l=1;(s||1)>f;l++){for(a=i=e.encrypt(p.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(s||1)>f&&o<a.length;o++)w.setInt32(f,a[o]),f+=4}return d.slice(0,n/8)},L:class{constructor(e){const t=this,r=t.P=We,n=[[],[]];t.V=[new r,new r];const s=t.V[0].blockSize/32;e.length>s&&(e=(new r).update(e).M());for(let t=0;s>t;t++)n[0][t]=909522486^e[t],n[1][t]=1549556828^e[t];t.V[0].update(n[0]),t.V[1].update(n[1]),t.Z=new r(t.V[0])}reset(){const e=this;e.Z=new e.P(e.V[0]),e.B=!1}update(e){this.B=!0,this.Z.update(e)}digest(){const e=this,t=e.Z.M(),r=new e.P(e.V[1]).update(t).M();return e.reset(),r}encrypt(e){if(this.B)throw new u("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},Ve=typeof z!=te&&typeof z.getRandomValues==re,Ze="Invalid password",Be="Invalid signature",He=Be,je="zipjs-abort-check-password";function qe(e){if(Ve)return z.getRandomValues(e);throw new u("Crypto API not supported")}const Ke=16,Ye={name:"PBKDF2"},Ge=r.assign({hash:{name:"HMAC"}},Ye),Xe=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Ye),Je=["deriveBits"],Qe=[8,12,16],$e=[16,24,32],et=10,tt=[0,0,0,0],rt=typeof z!=te,nt=rt&&z.subtle,st=rt&&typeof nt!=te,at=Le.bytes,it=class{constructor(e){const t=this;t.H=[[[],[],[],[],[]],[[],[],[],[],[]]],t.H[0][0][0]||t.j();const r=t.H[0][4],n=t.H[1],s=e.length;let a,i,o,c=1;if(4!==s&&6!==s&&8!==s)throw new u("invalid aes key size");for(t.v=[i=e.slice(0),o=[]],a=s;4*s+28>a;a++){let e=i[a-1];(a%s===0||8===s&&a%s===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%s===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-s]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:n[0][r[t>>>24]]^n[1][r[t>>16&255]]^n[2][r[t>>8&255]]^n[3][r[255&t]]}}encrypt(e){return this.K(e,0)}decrypt(e){return this.K(e,1)}j(){const e=this.H[0],t=this.H[1],r=e[4],n=t[4],s=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(s[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,n[a]=d,l=s[c=s[o=s[d]]];let w=16843009*l^65537*c^257*o^16843008*d,u=257*s[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=u=u<<24^u>>>8,t[r][a]=w=w<<24^w>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}K(e,t){if(4!==e.length)throw new u("invalid aes block size");const r=this.v[t],n=r.length/4-2,s=[0,0,0,0],a=this.H[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let w,f,p,h=e[0]^r[0],m=e[t?3:1]^r[1],y=e[2]^r[2],S=e[t?1:3]^r[3],g=4;for(let e=0;n>e;e++)w=i[h>>>24]^o[m>>16&255]^c[y>>8&255]^l[255&S]^r[g],f=i[m>>>24]^o[y>>16&255]^c[S>>8&255]^l[255&h]^r[g+1],p=i[y>>>24]^o[S>>16&255]^c[h>>8&255]^l[255&m]^r[g+2],S=i[S>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&y]^r[g+3],g+=4,h=w,m=f,y=p;for(let e=0;4>e;e++)s[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[y>>8&255]<<8^d[255&S]^r[g++],w=h,h=m,m=y,y=S,S=w;return s}},ot=class{constructor(e,t){this.Y=e,this.G=t,this.X=t}reset(){this.X=this.G}update(e){return this.J(this.Y,e,this.X)}$(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}return e}ee(e){0===(e[0]=this.$(e[0]))&&(e[1]=this.$(e[1]))}J(e,t,r){let n;if(!(n=t.length))return[];const s=_e.m(t);for(let s=0;n>s;s+=4){this.ee(r);const n=e.encrypt(r);t[s]^=n[0],t[s+1]^=n[1],t[s+2]^=n[2],t[s+3]^=n[3]}return _e.S(t,s)}},ct=Pe.L;let lt=rt&&st&&typeof nt.importKey==re,dt=rt&&st&&typeof nt.deriveBits==re;class wt extends E{constructor({password:e,rawPassword:t,encryptionStrength:r,checkPasswordOnly:n,checkAuthenticationCode:s=!0}){super({start(){ft(this,e,t,r)},async transform(e,t){const r=this,{password:s,strength:a,te:i,ready:o}=r;s?(await(async(e,t,r,n)=>{const s=await ht(e,t,r,yt(n,0,Qe[t])),a=yt(n,Qe[t]);if(s[0]!=a[0]||s[1]!=a[1])throw new u(Ze)})(r,a,s,yt(e,0,Qe[a]+2)),e=yt(e,Qe[a]+2),n?t.error(new u(je)):i()):await o;const c=new f(e.length-et-(e.length-et)%Ke);t.enqueue(pt(r,e,c,0,et,!0))},async flush(e){const{re:t,ne:r,pending:n,ready:a}=this;if(r&&t){await a;const i=yt(n,0,n.length-et),o=yt(n,n.length-et);let c=ne;if(i.length){const e=gt(at,i);r.update(e);const n=t.update(e);c=St(at,n)}const l=yt(St(at,r.digest()),0,et);let d=n.length<et?1:0;for(let e=0;et>e;e++)d|=l[e]^o[e];if(d&&s)throw new u(He);e.enqueue(c)}}})}}class ut extends E{constructor({password:e,rawPassword:t,encryptionStrength:r}){super({start(){ft(this,e,t,r)},async transform(e,t){const r=this,{password:n,strength:s,te:a,ready:i}=r;let o=ne;n?(o=await(async(e,t,r)=>{const n=qe(new f(Qe[t]));return Oe(n,await ht(e,t,r,n))})(r,s,n),a()):await i;const c=new f(o.length+e.length-e.length%Ke);c.set(o,0),t.enqueue(pt(r,e,c,o.length,0))},async flush(e){const{re:t,ne:r,pending:n,ready:s}=this;if(r&&t){await s;let a=ne;if(n.length){const e=t.update(gt(at,n));r.update(e),a=St(at,e)}const i=St(at,r.digest()).slice(0,et);e.enqueue(Oe(a,i))}}})}}function ft(e,t,n,s){r.assign(e,{ready:new S(t=>e.te=t),password:mt(t,n),strength:s-1,pending:ne})}function pt(e,t,r,n,s,a){const{re:i,ne:o,pending:c}=e;c.length&&(t=Oe(c,t));const l=t.length-s;let d;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,n+(l-l%Ke)),d=0;l-Ke>=d;d+=Ke){const e=gt(at,yt(t,d,d+Ke));a&&o.update(e);const s=i.update(e);a||o.update(s),r.set(St(at,s),d+n)}return e.pending=yt(t,d),r}async function ht(e,n,s,a){e.password=null;const i=await(async(e,t,r,n,s)=>{if(!lt)return Pe.importKey(t);try{return await nt.importKey("raw",t,r,!1,s)}catch{return lt=!1,Pe.importKey(t)}})(0,s,Ge,0,Je),o=await(async(e,t,r)=>{if(!dt)return Pe.W(t,e.salt,Xe.iterations,r);try{return await nt.deriveBits(e,t,r)}catch{return dt=!1,Pe.W(t,e.salt,Xe.iterations,r)}})(r.assign({salt:a},Xe),i,8*(2*$e[n]+2)),c=new f(o),l=gt(at,yt(c,0,$e[n])),d=gt(at,yt(c,$e[n],2*$e[n])),w=yt(c,2*$e[n]);return r.assign(e,{keys:{key:l,se:d,passwordVerification:w},re:new ot(new it(l),t.from(tt)),ne:new ct(d)}),w}function mt(e,t){return t===$?Ie(e):t}function yt(e,t,r){return e.subarray(t,r)}function St(e,t){return e.R(t)}function gt(e,t){return e.D(t)}class bt extends E{constructor({password:e,rawPassword:t,passwordVerification:r,checkPasswordOnly:n}){super({start(){zt(this,e,t,r)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=Ft(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t[11]^r.passwordVerification))throw new u(Ze);e=e.subarray(12)}n?t.error(new u(je)):t.enqueue(Ft(r,e))}})}}class xt extends E{constructor({password:e,rawPassword:t,passwordVerification:r}){super({start(){zt(this,e,t,r)},transform(e,t){const r=this;let n,s;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=qe(new f(12));t[11]=r.passwordVerification,n=new f(e.length+t.length),n.set(Et(r,t),0),s=12}else n=new f(e.length),s=0;n.set(Et(r,e),s),t.enqueue(n)}})}}function zt(e,t,n,s){r.assign(e,{password:t,rawPassword:n,passwordVerification:s}),((e,t,n)=>{const s=[305419896,591751049,878082192];if(r.assign(e,{keys:s,ae:new Te(s[0]),ie:new Te(s[2])}),n)for(let t=0;t<n.length;t++)Rt(e,n[t]);else for(let r=0;r<t.length;r++)Rt(e,t.charCodeAt(r))})(e,t,n)}function Ft(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=Dt(e)^t[n],Rt(e,r[n]);return r}function Et(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=Dt(e)^t[n],Rt(e,t[n]);return r}function Rt(e,t){let[,r]=e.keys;e.ae.append([t]);const n=~e.ae.get();r=At(i.imul(At(r+kt(n)),134775813)+1),e.ie.append([r>>>24]);const s=~e.ie.get();e.keys=[n,r,s]}function Dt(e){const t=2|e.keys[2];return kt(i.imul(t,1^t)>>>8)}function kt(e){return 255&e}function At(e){return 4294967295&e}function vt(e){if(e instanceof R)return e;const t=e.getReader();return new R({async pull(e){const{value:r,done:n}=await t.read();n?e.close():e.enqueue(r)},cancel:e=>t.cancel(e)})}function Ct(e){if(e instanceof D)return e;const t=e.getWriter();return new D({write:e=>t.write(e),close:()=>t.close(),abort:e=>t.abort(e)})}const Tt="Invalid uncompressed size",Ut="Invalid compressed data",It=Be,Ot="deflate-raw",Mt="gzip",Nt=[31,139,8];class _t extends E{constructor(e,{chunkSize:t,CompressionStreamFallback:r,CompressionStream:n}){super({});const{compressed:s,encrypted:a,useCompressionStream:i,zipCrypto:o,computeCrc32:c,level:l,deflate64:d,format:w,compressionMethod:u}=e,f=this;let p,h,y,S=super.readable;const g=w&&be(w),b=c&&s&&!d&&!g&&(!a||o)&&!(!i||!n);if(a&&!o||!c||b||(p=new Ue,S=qt(S,p)),s)if(g)S=Kt(S,Ht(g.CompressionStream,w,{level:l,chunkSize:t,compressionMethod:u}));else if(b)y=new Lt,S=Kt(S,new n(Mt)),S=qt(S,y);else try{S=jt(S,i,{level:l,chunkSize:t},n,r)}catch(e){let t;try{t=new n(Mt)}catch{throw e}S=Kt(S,t),S=qt(S,new Lt)}a&&(o?S=qt(S,new xt(e)):(h=new ut(e),S=qt(S,h))),Bt(f,S,()=>{a&&!o||!c||(f.crc32=b?y.crc32:new m(p.value.buffer).getUint32(0))})}}class Lt extends E{constructor(){let e,t=10,r=new f(0);super({transform(e,n){if(t){const r=i.min(t,e.length);if(t-=r,!(e=e.subarray(r)).length)return}const s=r.length+e.length;if(8>=s)return void(r=Oe(r,e));const a=s-8,o=i.min(a,r.length);n.enqueue(Oe(r.subarray(0,o),e.subarray(0,a-o))),r=Oe(r.subarray(o),e.subarray(a-o))},flush(){const t=Ne(r);e.crc32=t.getUint32(0,!0),e.uncompressedSize=t.getUint32(4,!0)}}),e=this}}class Wt extends E{constructor(e,{chunkSize:t,DecompressionStreamFallback:r,DecompressionStream:n}){super({});const{zipCrypto:s,encrypted:a,checkCrc32:i,crc32:o,compressed:c,useCompressionStream:l,deflate64:d,format:w,compressionMethod:p,rawBitFlag:h,outputSize:y}=e;let g,b,x=super.readable;if(a&&(s?x=qt(x,new bt(e)):(b=new wt(e),x=qt(x,b))),c){const e=w&&be(w);if(e)x=Kt(x,Ht(e.DecompressionStream,w,{chunkSize:t,compressionMethod:p,rawBitFlag:h,uncompressedSize:y}));else try{x=jt(x,l,{chunkSize:t,deflate64:d},n,r)}catch(e){if(d||y===$)throw e;let t;try{t=new n(Mt)}catch{throw e}x=((e,t,r)=>{const n=new Te;let s,a,i,o=0,c=!1;const l=new S((e,t)=>{a=e,i=t});l.catch(()=>{}),r||a();const d=new E({start(e){const t=new f(10);t.set(Nt),e.enqueue(t)},transform(e,t){t.enqueue(e)},async flush(e){c=!0,p();try{await l}finally{h()}const t=new f(8),s=Ne(t);s.setUint32(0,n.get(),!0),s.setUint32(4,r,!0),e.enqueue(t)},cancel(e){i(e)}}),w=new E({transform(e,t){n.append(e),o+=e.length,r>o?c&&p():a(),t.enqueue(e)},cancel(e){i(e)}});return e=qt(e,d),qt(e=Kt(e,t),w);function p(){h(),s=setTimeout(()=>i(new u(Tt)),5e3)}function h(){clearTimeout(s)}})(x,t,y)}x=(e=>{const t=e.getReader();return new R({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new u(Ut);throw t.cause=e,t}const{value:n,done:s}=r;s?e.close():e.enqueue(n)},cancel:e=>t.cancel(e)})})(x)}i&&(g=new Ue,x=qt(x,g)),Bt(this,x,()=>{if(i){const e=new m(g.value.buffer);if(o!=e.getUint32(0,!1))throw new u(It)}})}}const Pt=new c;function Vt(e,t){if(!e)return!1;let r=Pt.get(e);r||(r=new c,Pt.set(e,r));let n=r.get(t);if(n===$){try{new e(t),n=!0}catch{n=!1}r.set(t,n)}return n}function Zt(e){return Vt(e,Ot)}function Bt(e,t,n){t=qt(t,new E({flush:n})),r.defineProperty(e,"readable",{get:()=>t})}function Ht(e,t,r){if(!e)throw new u("Compression method not supported");return new e(t,r)}function jt(e,t,r,n,s){const a=t&&n?n:s||n,i=r.deflate64?"deflate64-raw":Ot;let o;try{o=new a(i,r)}catch(e){if(!t||!s||a==s)throw e;o=new s(i,r)}return Kt(e,o)}function qt(e,t){return vt(e).pipeThrough(t)}function Kt(e,t){const r=t.writable.getWriter(),n=e.getReader();return(async()=>{try{for(;;){await r.ready;const e=await n.read();if(e.done){await r.close();break}await r.write(e.value)}}catch(e){await(async(e,t)=>{try{await e.abort(t)}catch{}})(r,e),await(async(e,t)=>{try{await e.cancel(t)}catch{}})(n,e)}})(),t.readable}const Yt="data",Gt="deflate",Xt="inflate";class Jt extends E{constructor(e,t){super({});const n=this,{codecType:s}=e;let a;s.startsWith(Gt)?a=_t:s.startsWith(Xt)&&(a=Wt),n.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new E({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(n,{inputSize:i})}}),d=new E({transform(t,r){if(t&&t.length&&(r.enqueue(t),n.outputSize+=t.length,e.outputSize!==$&&n.outputSize>e.outputSize))throw new u(Tt)},flush(){const{crc32:e}=o;r.assign(n,{crc32:e,inputSize:i})}});r.defineProperty(n,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class Qt extends E{constructor(e){const t=[];let r=0;function n(){const n=new f(e);let s=0;for(;e>s;){const r=t[0],a=e-s;r.length>a?(n.set(r.subarray(0,a),s),t[0]=r.subarray(a),s+=a):(n.set(r,s),s+=r.length,t.shift())}return r-=e,n}s.isFinite(e)&&e>=1||(e=65536),super({transform(s,a){for(t.push(s),r+=s.length;r>e;)a.enqueue(n())},flush(e){r&&e.enqueue(((e,t)=>{const r=new f(t);let n=0;for(const t of e)r.set(t,n),n+=t.length;return r})(t,r))}})}}const $t={type:"module"},er="error";let tr,rr,nr,sr,ar,ir=!0;try{ir=typeof structuredClone==re&&structuredClone(new DOMException("","AbortError")).code!==$}catch{}class or{constructor(e,{readable:t,writable:n},{options:s,config:a,oe:i,useWebWorkers:o,transferStreams:c,workerURI:l,createWorker:d},w){const{signal:u}=i;return ar&&(d=$),r.assign(e,{ce:!0,le:(e.le||0)+1,readable:t.pipeThrough(new Qt(le(a))).pipeThrough(new cr(i),{signal:u}),writable:n,options:r.assign({},s),workerURI:l,createWorker:d,transferStreams:c,terminate:()=>new S(t=>{const{de:r,ce:n}=e;r?(n?e.we=t:(r.terminate(),t()),e.ue=null):t()}),fe(){if(e.ce){const{we:t}=e;t&&(e.we=null,e.pe=!0,e.de.terminate(),t()),e.ce=!1,w(e)}}}),tr===$&&(tr=typeof C!=te),(o&&(tr&&l||d)?wr:dr)(e,a)}}class cr extends E{constructor({onstart:e,onprogress:t,size:r,onend:n}){let s=0;super({async start(){e&&await lr(e,r)},async transform(e,n){s+=e.length,t&&await lr(t,s,r),n.enqueue(e)},async flush(){n&&await lr(n,s)}})}}async function lr(e,...t){try{await e(...t)}catch{}}function dr(e,t){return{run:()=>ur(e,t)}}function wr(e,t){const{baseURI:n,chunkSize:a,workerStartupTimeout:i}=t;let{wasmURI:o}=t;if(!e.ue){let c;typeof o==re&&(o=o());try{c=pr(e.workerURI,n,e)}catch{return e.createWorker?ar=!0:tr=!1,dr(e,t)}r.assign(e,{de:c,he:!1,pe:!1,ue:{run:async()=>{try{return await(async(e,t)=>{let n,a;const i=new S((e,t)=>{n=e,a=t});r.assign(e,{reader:null,writer:null,me:n,ye:a,result:i});const{readable:o,options:c}=e,{writable:l,closed:d,Se:w}=(e=>{const t=new AbortController,{writable:r,readable:n}=new E,s=n.pipeTo(e,{preventClose:!0,preventAbort:!0,signal:t.signal});return s.catch(()=>{}),{writable:r,closed:s,Se:()=>t.abort()}})(e.writable);let f;try{f=yr({type:"start",options:c,config:t,readable:o,writable:l},e)}catch(t){w();try{await d}catch{}throw e.fe(),t}f||r.assign(e,{reader:o.getReader(),writer:l.getWriter()});const{workerStartupTimeout:p}=t;e.he||!s.isFinite(p)||0>p||(e.ge=setTimeout(()=>(e=>{if(e.ge=null,e.he)return;const{ye:t,writer:r}=e;if(fr(e),e.de=null,t){const e=new u("Worker startup timeout");e.be=!0,t(e),r&&r.releaseLock()}})(e),p));try{const e=await i;return await h(),await d,e}catch(e){await h(),w();try{await d}catch{}throw e}async function h(){if(!f&&!l.locked)try{await l.getWriter().close()}catch{}}})(e,{chunkSize:a,wasmURI:o,baseURI:n,workerStartupTimeout:i})}catch(r){if(r&&r.be){e.createWorker?ar=!0:tr=!1;const{reader:r}=e;return r&&r.releaseLock(),e.reader=null,e.writer=null,ur(e,t)}throw r}}}})}return e.ue}async function ur({options:e,readable:t,writable:r,fe:n},s){let a;try{if(e.compressed&&!e.format){const t=e.codecType.startsWith(Gt),r=t?s.CompressionStreamFallback:s.DecompressionStreamFallback,n=t?s.CompressionStream:s.DecompressionStream;if(e.useCompressionStream){if(r&&r.xe&&!Zt(n))try{await void 0}catch{}}else try{await void 0}catch{r&&!r.xe||(e.useCompressionStream=!0)}}a=new Jt(e,s),await t.pipeThrough(a).pipeThrough(new Qt(le(s))).pipeTo(r,{preventClose:!0,preventAbort:!0});const{crc32:n,inputSize:i,outputSize:o}=a;return{crc32:n,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{n()}}function fr(e){const{de:t}=e;if(t)try{t.terminate()}catch{}e.ue=null}function pr(e,t,n,s,a=!0){const{createWorker:i}=n;let o,c,l;if(i)o=i();else if(nr===$||rr!==e){const r=typeof e==re;c=r?e(a):e;const i=c.startsWith("data:"),d=c.startsWith("blob:");if(i||d){s===$&&(s=!1),s&&(l=$t);try{o=new C(c,l)}catch(a){if(d)try{w.revokeObjectURL(c)}catch{}if(r&&d)return pr(e,t,n,s,!1);if(s)throw a;return pr(e,t,n,!0,!1)}}else{s===$&&(s=!0),s&&(l=$t);try{c=new w(c,t)}catch{}try{o=new C(c,l)}catch(r){if(s)throw r;return pr(e,t,n,!1,a)}}rr=e,nr=c,sr=l}else o=new C(nr,sr);return o.addEventListener("message",e=>{n.he=!0,hr(n),(async({data:e},t)=>{const{type:n,value:s,messageId:a,result:i,error:o}=e,{reader:c,writer:l,me:d,ye:w,fe:p,le:h}=t,m=()=>t.le!=h;try{if(o){const{message:e,stack:t,code:n,name:s,outputSize:a,cause:i}=o,c=new u(e);r.assign(c,{stack:t,code:n,name:s,outputSize:a}),i&&(c.cause=r.assign(new u(i.message),{name:i.name})),y(c)}else{if("pull"==n){const{value:e,done:r}=await c.read();m()||yr({type:Yt,value:e,done:r,messageId:a},t)}n==Yt&&(await l.ready,await l.write(new f(s)),m()||yr({type:"ack",messageId:a},t)),"close"==n&&y(null,i)}}catch(o){m()||(fr(t),y(o))}function y(e,t){m()||(e?w(e):d(t),l&&l.releaseLock(),p())}})(e,n)}),o.addEventListener(er,e=>mr(e,n)),o.addEventListener("messageerror",e=>mr(e,n)),o}function hr(e){const{ge:t}=e;t&&(clearTimeout(t),e.ge=null)}function mr(e,t){e.preventDefault&&e.preventDefault(),hr(t);const{he:n,ye:s,writer:a,fe:i}=t;if(fr(t),n||(t.de=null),s){let t=e.error||new u(e.message||er);n||(t=r.assign(new u(t.message||er),{be:!0})),s(t),a&&a.releaseLock(),n&&i()}}function yr(e,{de:t,writer:r,transferStreams:n,he:s}){try{const{value:r,readable:a,writable:i}=e,o=[];if(r&&(e.value=Me(r),o.push(e.value.buffer)),n&&ir&&s?(a&&o.push(a),i&&o.push(i)):e.readable=e.writable=null,o.length)try{return t.postMessage(e,o),!0}catch{ir=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let Sr=[];const gr=[];let br,xr,zr=0;async function Fr(e,t){const{options:r,config:n}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,checkCrc32:l,computeCrc32:d,encrypted:u,format:f,codecURI:p}=r,{workerURI:h,createWorker:m,maxWorkers:y}=n;f&&(p&&(r.codecURI=((e,t)=>{try{return new w(e,t).toString()}catch{return e}})(p,n.baseURI)),await(async(e,t)=>{!Se.has(e)&&t&&xe(e,await(import(/* webpackIgnore: true */ /* @vite-ignore */t)))})(f,r.codecURI)),t.transferStreams=a||a===$&&n.transferStreams;const g=!(c||l||d||u),b=f===$||!!r.codecURI;return t.useWebWorkers=!g&&b&&(i||i===$&&n.useWebWorkers),t.workerURI=t.useWebWorkers&&h?h:$,t.createWorker=t.useWebWorkers&&m?m:$,r.useCompressionStream=o||o===$&&n.useCompressionStream,(await(async()=>{const r=Sr.find(e=>!e.ce);if(r)return Ar(r),new or(r,e,t,x);if(Sr.length<y){const r={ze:zr};return zr++,Sr.push(r),new or(r,e,t,x)}return new S(r=>{gr.push({resolve:r,stream:e,Fe:t}),xr=n.workerStarvationTimeout,Er()})})()).run();function x(e){if(Rr(),gr.length){const[{resolve:t,stream:r,Fe:n}]=gr.splice(0,1);t(new or(e,r,n,x)),Er()}else e.de?(Ar(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:n}=r;s.isFinite(n)&&n>=0&&(e.pe?e.pe=!1:e.Ee=setTimeout(async()=>{Sr=Sr.filter(t=>t!=e);try{await e.terminate()}catch{}},n))})(e,t)):Sr=Sr.filter(t=>t!=e)}}function Er(){!br&&gr.length&&s.isFinite(xr)&&xr>=0&&(br=setTimeout(Dr,xr))}function Rr(){br&&(clearTimeout(br),br=null)}function Dr(){if(br=null,gr.length){const[{resolve:e,stream:t,Fe:n}]=gr.splice(0,1),s=r.assign({},n,{useWebWorkers:!1,workerURI:$,createWorker:$});e(new or({},t,s,kr)),Er()}}function kr(){Rr(),Er()}function Ar(e){const{Ee:t}=e;t&&(clearTimeout(t),e.Ee=null)}const vr="HTTP error ",Cr="HTTP Range not supported",Tr="HTTP resource changed",Ur="Writer iterator completed too soon",Ir="Writer not initialized",Or="Content-Range",Mr="Range",Nr="GET",_r="bytes",Lr=16777216,Wr="writable",Pr=Symbol();class Vr{constructor(){this.size=0}init(){this.initialized=!0}}class Zr extends Vr{get readable(){return this.createReadable()}createReadable({offset:e=0,size:t,chunkSize:r=le(ce())}={}){const n=this;let s=0;return new R({async pull(a){const o=t===$?r:i.min(r,t-s),c=await Sn(n,e+s,o);a.enqueue(c),s+r>t||t===$&&!c.length&&o?a.close():s+=r}})}}class Br extends Vr{constructor(){super();const e=this,t=new D({write(t){if(!e.initialized)throw new u(Ir);return e.writeUint8Array(Me(t))}});r.defineProperty(e,Wr,{get:()=>t})}writeUint8Array(){}}let Hr,jr;class qr extends Zr{constructor(e){super(),r.assign(this,{blob:e,size:e.size}),jr||(jr=(async()=>{try{const e=new y([new f(3)]).slice(1,2).stream().getReader();let t=0,r=await e.read();for(;!r.done;)t+=r.value.length,r=await e.read();Hr=1==t}catch{Hr=!1}})())}createReadable(e){const{blob:t,size:r}=this,{offset:n=0,size:s=r-n}=e||{};return n||r>s?Hr?vt(t.slice(n,n+s).stream()):super.createReadable(e):vt(t.stream())}async readUint8Array(e,t){const r=this,n=e+t,s=e||n<r.size?r.blob.slice(e,n):r.blob;let a=await s.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,n)),new f(a)}}class Kr extends Vr{constructor(e){super();const t=this,n=new E;if(r.defineProperty(t,Wr,{get:()=>n.writable}),typeof y.prototype.stream!=re||new y([]).stream()instanceof R){const r=[];e&&r.push(["Content-Type",e]),t.blob=new d(n.readable,{headers:r}).blob()}else{const r=[];t.blob=n.readable.pipeTo(new D({write(e){r.push(e)}})).then(()=>new y(r,{type:e}))}t.blob.catch(()=>{})}getData(){return this.blob}}class Yr extends Zr{constructor(e,t){super(),Xr(this,e,t)}async init(){await Jr(this,dn,an),super.init()}createReadable(e){const t=this,{useRangeHeader:r,forceRangeRequests:n,size:a}=t;if((r||n)&&a!==$){const{offset:r=0,size:n=a-r}=e||{};if(n>0&&a>r)return((e,t,r)=>{let n,a=t,o=0,c=r;return new R({start:()=>l(),async pull(e){n||await l();const{value:t,done:r}=await n.read();if(r)throw new u(Cr);const s=t.length>o?t.subarray(0,o):t;o-=s.length,c-=s.length,s.length&&e.enqueue(s),o||(await(async()=>{const e=n;n=$,await e.cancel()})(),c||e.close())},cancel:e=>n&&n.cancel(e)});async function l(){const t=i.min(e.maximumRangeSize,c),r=await dn(Nr,e,nn(e,a,t));if(206!=r.status)throw new u(Cr);const l=r.headers.get(Or);if(l){const e=s(l.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=a)throw new u(Cr)}rn(e,r),tn(e,r),a+=t,o=t,n=r.body.getReader()}})(t,r,i.min(n,a-r))}return super.createReadable(e)}readUint8Array(e,t){return Qr(this,e,t,dn,an)}}class Gr extends Zr{constructor(e,t){super(),Xr(this,e,t)}async init(){await Jr(this,wn,on),super.init()}readUint8Array(e,t){return Qr(this,e,t,wn,on)}}function Xr(e,t,n){const{preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,checkResourceChanges:c=!0,maximumRangeSize:l=Lr,fetch:d}=n;delete(n=r.assign({},n)).preventHeadRequest,delete n.useRangeHeader,delete n.forceRangeRequests,delete n.combineSizeEocd,delete n.checkResourceChanges,delete n.maximumRangeSize,delete n.useXHR,delete n.fetch,r.assign(e,{url:t,options:n,preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,checkResourceChanges:c,maximumRangeSize:l,fetch:d})}async function Jr(e,t,r){const{url:n,preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=e;if((e=>{const{baseURI:t}=ce(),{protocol:r}=new w(e,t);return"http:"==r||"https:"==r})(n)&&(a||i)&&(void 0===s||s)){const n=await t(Nr,e,nn(e,o?-22:void 0)),s=n.headers.get("Accept-Ranges");if(!(i||s&&s.toLowerCase()==_r))throw new u(Cr);{if(o){const t=new f(await n.arrayBuffer());206==n.status&&t.length==Z&&(e.Re=t)}tn(e,n);const s=$r(n);s===$?await ln(e,t,r):e.size=s}}else await ln(e,t,r)}async function Qr(e,t,r,n,a){const{useRangeHeader:i,forceRangeRequests:o,Re:c,size:l,options:d}=e;if(i||o){if(c&&t==l-Z&&r==Z)return c;if(l>t&&0!==r){t+r>l&&(r=l-t);const a=await n(Nr,e,nn(e,t,r));if(206!=a.status)throw new u(Cr);const i=a.headers.get(Or);if(i){const e=s(i.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=t)throw new u(Cr)}rn(e,a),tn(e,a);const o=new f(await a.arrayBuffer());if(o.length!=r)throw new u(Cr);return o}return ne}{const{data:n}=e;return n||await a(e,d),e.data.subarray(t,t+r)}}function $r(e){const t=e.headers.get(Or);if(t){const e=t.trim().split(/\s*\/\s*/)[1];if(e&&"*"!=e){const t=s(e);if(!s.isNaN(t))return t}}}function en({headers:e}){return{De:e.get("Etag")||$,lastModified:e.get("Last-Modified")||$}}function tn(e,t){const{checkResourceChanges:r,ke:n}=e;r&&!n&&206==t.status&&(e.ke=en(t))}function rn(e,t){const{checkResourceChanges:n,ke:s,size:a}=e;if(n){const e=$r(t);if(e!==$&&a!==$&&e!=a)throw new u(Tr);if(s){const e=en(t);if(r.entries(s).some(([t,r])=>r!==$&&e[t]!==$&&r!=e[t]))throw new u(Tr)}}}function nn(e,t=0,n=1){return r.assign({},sn(e),{[Mr]:_r+"="+(0>t?t:t+"-"+(t+n-1))})}function sn({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function an(e){await cn(e,dn)}async function on(e){await cn(e,wn)}async function cn(e,t){const r=await t(Nr,e,sn(e));e.data=new f(await r.arrayBuffer()),e.size=e.data.length}async function ln(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const n=await t("HEAD",e,sn(e)),a=n.headers.get("Content-Length");a&&!n.headers.get("Content-Encoding")?e.size=s(a):await r(e,e.options)}}async function dn(e,{fetch:t=fetch,options:n,url:s},a){const i=await t(s,r.assign({},n,{method:e,headers:a}));if(400>i.status)return i;throw 416==i.status?new u(Cr):new u(vr+(i.statusText||i.status))}function wn(e,{url:t},n){return new S((s,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),s({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new u(Cr):new u(vr+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new u("Network error")),!1),i.open(e,t),n)for(const e of r.entries(n))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class un extends Zr{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new Gr(e,t):new Yr(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}createReadable(e){return this.reader.createReadable(e)}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class fn extends Zr{constructor(e){super(),this.Ae=e}async init(){const e=this,{Ae:t}=e;e.ve=0,await S.all(t.map(e=>yn(e))),e.Ce=t.map(t=>{const r=e.size;return e.size+=t.size,r}),super.init()}Te(e){const{Ce:t,size:r}=this,n=t[e];return n===$?r:n}async readUint8Array(e,t){const r=this,{Ae:n}=this;let s,a=0,o=e;for(;n[a]&&o>=n[a].size;)o-=n[a].size,a++;const c=n[a];if(c){const n=c.size;if(o+t>n){const a=n-o;s=Oe(await Sn(c,o,a),await r.readUint8Array(e+a,t-a))}else s=await Sn(c,o,t)}else s=ne;return r.ve=i.max(a,r.ve),s}}class pn extends Vr{constructor(e,t=4294967295){super();const n=this;let s,a,i;r.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new D({async write(t){if(t===Pr)return void(i&&await l());const{availableSize:r}=n;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),t.length>r&&await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new u(Ur);s=r,s.size=0,s.maxSize&&(n.maxSize=s.maxSize),n.availableSize=n.maxSize,await yn(s),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){i&&(await i.ready,await d())},async abort(e){i&&await i.abort(e)}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),s.size+=t,n.availableSize-=t)}async function l(){await d(),n.diskOffset+=s.size,n.diskNumber++,i=null,n.availableSize=n.maxSize}async function d(){await i.close()}r.defineProperty(n,Wr,{get:()=>o})}async closeDisk(){const e=this.writable.getWriter();try{await e.ready,await e.write(Pr)}finally{e.releaseLock()}}}class hn{constructor(e){return t.isArray(e)&&(e=new fn(e)),(e instanceof R||typeof e.getReader==re)&&(e={readable:vt(e)}),e}}class mn{constructor(e){return e.writable===$&&typeof e.next==re&&(e=new pn(e)),(e instanceof D||typeof e.getWriter==re)&&(e={writable:Ct(e)}),e.size===$&&(e.size=0),e}}async function yn(e,t){if(!e.init||e.initialized)return S.resolve();await e.init(t)}function Sn(e,t,r){return e.readUint8Array(t,r)}const gn="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function bn(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=gn[e[r]];return t}})(e):new b(t,{ignoreBOM:!0}).decode(e)}const xn="filename",zn="rawFilename",Fn="comment",En="rawComment",Rn="uncompressedSize",Dn="compressedSize",kn="offset",An="diskNumberStart",vn="lastModDate",Cn="rawLastModDate",Tn="lastAccessDate",Un="rawLastAccessDate",In="creationDate",On="rawCreationDate",Mn="internalFileAttributes",Nn="externalFileAttributes",_n="msdosAttributesRaw",Ln="msdosAttributes",Wn="msDosCompatible",Pn="zip64",Vn="encrypted",Zn="version",Bn="versionMadeBy",Hn="zipCrypto",jn="directory",qn="executable",Kn="compressionMethod",Yn="signature",Gn="extraField",Xn="unixMode",Jn="setuid",Qn="setgid",$n="sticky",es=[xn,zn,Rn,Dn,vn,Cn,Fn,En,Tn,Un,In,On,kn,An,Mn,Nn,_n,Ln,Wn,Pn,Vn,Zn,Bn,Hn,jn,qn,Kn,Yn,"crc32",Gn,"extraFieldUnix","extraFieldInfoZip","extraFieldUnixType1","extraFieldPkwareUnix","uid","gid",Xn,Jn,Qn,$n,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp","extraFieldUSDZ"];class ts{constructor(e){es.forEach(t=>this[t]=e[t])}}const rs="password",ns="rawPassword",ss="passThrough",as="signal",is="checkAmbiguity",os="useWebWorkers",cs="useCompressionStream",ls="transferStreams",ds="preventClose",ws="offset",us="usdz",fs="strictness",ps="strict",hs="tolerant",ms="File format is not recognized",ys="End of central directory not found",Ss="End of Zip64 central directory locator not found",gs="Central directory header not found",bs="Local file header not found",xs="Zip64 extra field not found",zs="File contains encrypted entry",Fs="Encryption method not supported",Es="Compression method not supported",Rs="Split zip file",Ds="Overlapping entry found",ks="Ambiguous archive",As="Encrypted central directory is not supported",vs="utf-8",Cs="cp437",Ts=[[Rn,U],[Dn,U],[kn,U],[An,I]],Us={[I]:{Ue:aa,bytes:4},[U]:{Ue:ia,bytes:8}};class Is{constructor(e,t={}){r.assign(this,{reader:new hn(e),options:t,config:ce(),Ie:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:s}=t;if(await yn(n),n.size!==$&&n.readUint8Array||(n=new qr(await new d(n.readable).blob()),await yn(n)),n.size<Z)throw new u(ms);const a=Hs(ea(t,e,fs),ea(t,e,is)),o=a==ps,c=a!=hs,w=((e,t)=>e!==$?e:t==ps?0:t==hs?1/0:I)(ea(t,e,"maxAppendedDataSize"),a),{Oe:f,Me:p}=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,65557),a={count:js};let o,c,l=0;for await(const[r,i,d,w,u]of Gs(e,s)){const s=sa(r,w+20);if(u+Z+s==n){const s=await Js(e,r,i,w,u,n,a);if(s==Ys){if(o||(o=Xs(d,w,u)),l++,!t||l>1)break}else s!=Ks||c||(c=Xs(d,w,u))}}return o||(o=c),o||(o=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,t==1/0?n:65557+t);let a,o;for await(const[t,i,c,l,d]of Gs(e,s)){const s=Xs(c,l,d);a||(a=s);const w=await Js(e,t,i,l,d,n,r);if(w==Ys)return s;w!=Ks||o||(o=s)}return o||a})(e,r,a)),{Oe:o,Me:l}})(n,c,w);if(!f)throw aa(Ne(await Sn(n,0,4)))==N?new u(Rs):new u(ys);c&&p>1&&$s("multiple end of central directory records");const h=Ne(f);let m=aa(h,12),y=aa(h,16);const g=f.offset,b=sa(h,20),x=g+Z+b;n.size-x>w&&$s("appended data");let z=sa(h,4);const F=n.ve||0;let R,D,k,A=sa(h,6),v=sa(h,10),C=0;const T=y==U||m==U||v==I||A==I;if(y!=U&&A!=I&&(y+=Bs(n,A)),T){const e=f.offset<B?ne:await Sn(n,f.offset-B,B),t=Ne(e);if(e.length==B&&aa(t,0)==V){y=Bs(n,aa(t,4))+ia(t,8);let e=await Sn(n,y,56),r=Ne(e);const s=f.offset-B-56;if((56>e.length||aa(r,0)!=P)&&y!=s&&s>=0){const t=y;y=s,y>t&&(C=y-t),e=await Sn(n,y,56),r=Ne(e)}if(56>e.length||aa(r,0)!=P)throw new u(Ss);D=!0,k=ia(r,4)>44,z==I?z=aa(r,16):o&&z!=aa(r,16)&&$s("mismatched zip64 end of central directory record"),A==I?A=aa(r,20):o&&A!=aa(r,20)&&$s("mismatched zip64 end of central directory record"),v==I?v=ia(r,32):o&&v!=ia(r,32)&&$s("mismatched zip64 end of central directory record"),m==U?m=ia(r,40):o&&m!=ia(r,40)&&$s("mismatched zip64 end of central directory record"),y=Bs(n,A)+ia(r,48)+C}}const M=m,_=f.offset-(D?76:0);if(y<n.size||(C=n.size-y-m-Z,y=n.size-m-Z),F!=z)throw new u(Rs);if(0>y)throw new u(ms);let W=0,H=await Sn(n,y,m),j=Ne(H);if(m){if(4>H.length)throw new u(ms);const e=_-m;if(y!=e&&A==z){let t=!(aa(j,W)==L);if(t||0>e||e+4>n.size||(t=aa(Ne(await Sn(n,e,4)),0)==L),t){const t=y;y=e,y>t&&(C+=y-t),H=await Sn(n,y,m),j=Ne(H)}}}const X=_-y;if(m==X||0>X||A!=z||(m=X,H=await Sn(n,y,m),j=Ne(H)),0>y||y>=n.size)throw new u(ms);R=y;const J=ea(t,e,"filenameEncoding"),Q=ea(t,e,"commentEncoding"),ee=o?new l:$;let te;for(let a=0;v>a;a++){const c=new Ms(n,s,t.options);if(W+46>H.length||aa(j,W)!=L){if(0==a&&(k||Ns(j)))throw new u(As);throw new u(gs)}_s(c,j,W+6);const l=!!c.bitFlag.languageEncodingFlag,w=W+46,f=w+c.filenameLength,p=f+c.extraFieldLength,h=sa(j,W+4),m=!(h>>8),y=h>>8==3,g=H.subarray(w,f),b=sa(j,W+32),x=p+b,z=H.subarray(p,x),F=l,D=l,A=aa(j,W+38),T=A&O,U={readOnly:!!(1&T),hidden:!!(2&T),system:!!(4&T),directory:!!(16&T),archive:!!(32&T)},M=aa(j,W+42),N=ea(t,e,"decodeText")||bn,_=F?vs:J||Cs,P=D?vs:Q||Cs;let V=N(g,_);V===$&&(V=bn(g,_));let Z=N(z,P);Z===$&&(Z=bn(z,P)),r.assign(c,{index:a,versionMadeBy:h,msDosCompatible:m,compressedSize:0,uncompressedSize:0,Ne:b,offset:M,diskNumberStart:sa(j,W+34),internalFileAttributes:sa(j,W+36),externalFileAttributes:A,msdosAttributesRaw:T,msdosAttributes:U,rawFilename:g,filenameUTF8:F,commentUTF8:D,rawExtraField:H.subarray(f,p),rawComment:z,filename:V,comment:Z}),Ls(c,c,j,W+6),c.offset+=C,R=i.min(Bs(n,c.diskNumberStart)+c.offset,R),o&&(ee.has(c.filename)&&(te=!0),ee.add(c.filename));const B=c.externalFileAttributes>>16&I;c.unixMode===$&&16877&B&&(c.unixMode=B);const X=!!(c.unixMode&K),re=!!(c.unixMode&Y),ne=!!(512&c.unixMode),se=c.unixMode!==$?!!(73&c.unixMode):y&&!!(73&B),ae=c.unixMode!==$&&(61440&c.unixMode)==q,ie=(61440&B)==q;r.assign(c,{setuid:X,setgid:re,sticky:ne,unixExternalUpper:B,internalFileAttribute:c.internalFileAttributes,externalFileAttribute:c.externalFileAttributes,executable:se,directory:ae||ie||m&&U.directory||c.filename.endsWith(G)&&!c.uncompressedSize,zipCrypto:c.encrypted&&!c.extraFieldAES});const oe=new ts(c);oe.getData=(e,r)=>c.getData(e,oe,t.Ie,r),oe.arrayBuffer=async e=>{const r=new E,[n]=await S.all([new d(r.readable).arrayBuffer(),c.getData(r,oe,t.Ie,e)]);return n},W=x;const{onprogress:ce}=e;if(ce)try{await ce(a+1,v,new ts(c))}catch{}yield oe}o&&W!=M&&$s("trailing central directory data"),te&&$s("duplicate filename"),o&&(C||v&&R>0)&&$s("prepended data");const re=ea(t,e,"extractPrependedData"),se=ea(t,e,"extractAppendedData");return re&&(t.prependedData=R>0?await Sn(n,0,R):ne),t.comment=b?await Sn(n,g+Z,b):ne,se&&(t.appendedData=x<n.size?await Sn(n,x,n.size-x):ne),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class Os{constructor(e={}){const{readable:t,writable:r}=new E,n=new Is(t,e).getEntriesGenerator();this.readable=new R({async pull(e){const{done:t,value:r}=await n.next();if(t)return e.close();const s={...r,readable:(()=>{const{readable:e,writable:t}=new E;if(r.getData)return(async()=>{try{await r.getData(t)}catch(e){try{await t.abort(e)}catch{}}})(),e})()};delete s.getData,e.enqueue(s)}}),this.writable=r}}class Ms{constructor(e,t,n){r.assign(this,{reader:e,config:t,options:n})}async getData(e,t,r,n={}){const s=this,{reader:a,index:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:w,config:f,bitFlag:p,rawBitFlag:h,crc32:m,rawLastModDate:y,uncompressedSize:S,compressedSize:g}=s,{dataDescriptor:b}=p,x=t.localDirectory={},z=Bs(a,c)+o,F=await Sn(a,z,X),E=Ne(F);let R=ea(s,n,rs),k=ea(s,n,ns);const A=ea(s,n,ss);if(R=R&&R.length&&R,k=k&&k.length&&k,l&&99!=l.originalCompressionMethod)throw new u(Es);if(F.length<X||aa(E,0)!=M)throw new u(bs);_s(x,E,4);const{extraFieldLength:v,filenameLength:C}=x,T=Hs(ea(s,n,fs),ea(s,n,is))==ps;let U=ne;if(T&&(C||v)){const e=await Sn(a,z+X,C+v);U=e.subarray(0,C),x.rawExtraField=e.subarray(C)}else x.rawExtraField=v?await Sn(a,z+X+C,v):ne;Ls(s,x,E,4,!0),T&&((e,t,r)=>{const{rawFilename:n}=e;(r.length!=n.length||r.some((e,t)=>e!=n[t]))&&$s("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&$s("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&$s("mismatched local file header (compression method)"),t.bitFlag.dataDescriptor||!(t.crc32||t.compressedSize||t.uncompressedSize)||t.crc32==e.crc32&&t.compressedSize==e.compressedSize&&t.uncompressedSize==e.uncompressedSize||$s("mismatched local file header (crc32 or sizes)")})(s,x,U);const{lastAccessDate:I,creationDate:N}=x;I&&(t.lastAccessDate=I),N&&(t.creationDate=N);const L=s.encrypted&&x.encrypted&&!A,W=L&&!l;if(A||(t.zipCrypto=W),L&&!(64&~x.rawBitFlag))throw new u(Fs);const P=A?$:ge(w);if(0!=w&&8!=w&&9!=w&&!P&&!A)throw new u(Es);if(L){if(!W&&(1>l.strength||l.strength>3))throw new u(Fs);if(!R&&!k)throw new u(zs)}const V=z+X+C+v,Z=g,B=vt(a.createReadable({offset:V,size:Z})),H=ea(s,n,as),j=ea(s,n,"checkPasswordOnly");let q=ea(s,n,"checkOverlappingEntry");const K=ea(s,n,"checkOverlappingEntryOnly");K&&(q=!0);const{onstart:Y,onprogress:G,onend:J}=n,Q=9==w;let ee=ea(s,n,cs);Q&&(ee=!1);const te=ea(s,n,"checkCrc32"),re=(te===$?ea(s,n,"checkSignature"):te)&&!A&&(!L||W||l&&1==l.vendorVersion),se={options:{codecType:Xt,password:R,rawPassword:k,zipCrypto:W,encryptionStrength:l&&l.strength,checkCrc32:re,checkAuthenticationCode:ea(s,n,"checkAuthenticationCode"),passwordVerification:W&&(b?y>>>8&O:m>>>24&O),outputSize:A?g:S,crc32:m,compressed:0!=w&&!A,encrypted:L,useWebWorkers:ea(s,n,os),useCompressionStream:ee,transferStreams:ea(s,n,ls),deflate64:Q,format:P?P.format:$,codecURI:P?P.codecURI:$,compressionMethod:w,rawBitFlag:h,checkPasswordOnly:j},config:f,oe:{signal:H,size:Z,onstart:Y,onprogress:G,onend:J}};let ae;q&&await(async({reader:e,_e:t,index:r,offset:n,crc32:s,compressedSize:a,uncompressedSize:i,Le:o,dataDescriptor:c,extraFieldZip64:l,Ie:d})=>{let w=0;if(c&&(w=l?20:12),w){const r=await Sn(e,o+a,w+4);if(r.length==w+4&&aa(Ne(r),0)==_){const e=aa(Ne(r),4);let n,o;l?(n=ia(Ne(r),8),o=ia(Ne(r),16)):(n=aa(Ne(r),8),o=aa(Ne(r),12)),(t.encrypted&&!t.zipCrypto||e==s)&&n==a&&o==i&&(w+=4)}}const f={start:n,end:o+a+w,_e:t};for(const[e,t]of d)if(e!=r&&f.start<t.end&&t.start<f.end){const e=new u(Ds);throw e.We=t._e,e}d.set(r,f)})({reader:a,_e:t,index:i,offset:z,crc32:m,compressedSize:g,uncompressedSize:S,Le:V,dataDescriptor:b||x.bitFlag.dataDescriptor,extraFieldZip64:d||x.extraFieldZip64,Ie:r});try{if(!K){j&&(e=new D),e=new mn(e),await yn(e,A?g:S),({writable:ae}=e);const{outputSize:t}=await Fr({readable:B,writable:ae},se);if(e.size+=t,t!=(A?g:S))throw new u(Tt)}}catch(t){if(t.outputSize!==$&&(e.size+=t.outputSize),!j||t.message!=je)throw t}finally{ea(s,n,ds)||!ae||ae.locked||await ae.getWriter().close()}return j||K?$:e.getData?e.getData():ae}}function Ns(e){const t=i.min(e.byteLength,1024)-3;for(let r=0;t>r;r++)if(134630224==aa(e,r))return!0;return!1}function _s(e,t,n){const s=e.rawBitFlag=sa(t,n+2),a=!(1&~s),i=aa(t,n+6);r.assign(e,{encrypted:a,version:sa(t,n),bitFlag:{level:(6&s)>>1,dataDescriptor:!(8&~s),languageEncodingFlag:(s&j)==j},rawLastModDate:i,lastModDate:ta(i),filenameLength:sa(t,n+22),extraFieldLength:sa(t,n+24)})}function Ls(e,t,n,s,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Ne(i);let w=0;try{for(;w<i.length;){const e=sa(d,w),t=sa(d,w+2);l.set(e,{type:e,data:i.slice(w+4,w+4+t)}),w+=4+t}}catch{}const f=sa(n,s+4);r.assign(t,{signature:aa(n,s+10),crc32:aa(n,s+10),compressedSize:aa(n,s+14),uncompressedSize:aa(n,s+18)});const p=l.get(1);p&&(((e,t)=>{t.zip64=!0;const r=Ne(e.data),n=Ts.filter(([e,r])=>t[e]==r),s=n.reduce((e,[,t])=>e+Us[t].bytes,0);if(e.data.length<s)throw new u(xs);for(let s=0,a=0;s<n.length;s++){const[i,o]=n[s],c=Us[o];t[i]=e[i]=c.Ue(r,a),a+=c.bytes}})(p,t),t.extraFieldZip64=p);const h=l.get(28789);h&&(Ws(h,xn,zn,t,e),t.extraFieldUnicodePath=h);const m=l.get(25461);m&&(Ws(m,Fn,En,t,e),t.extraFieldUnicodeComment=m);const y=l.get(39169);y&&y.data.length>=7?(((e,t,n)=>{const s=Ne(e.data),a=na(s,4);r.assign(e,{vendorVersion:na(s,0),vendorId:na(s,2),strength:a,originalCompressionMethod:n,compressionMethod:sa(s,5)}),t.compressionMethod=e.compressionMethod,1!=e.vendorVersion&&(t.crc32=$)})(y,t,f),t.extraFieldAES=y):t.compressionMethod=f;const S=l.get(13);S&&(Ps(S,t),t.extraFieldPkwareUnix=S);const g=l.get(22613);g&&(Ps(g,t),t.extraFieldUnixType1=g);const b=l.get(10);b&&(((e,t)=>{const n=Ne(e.data);let s,a=4;try{for(;a<e.data.length&&!s;){const t=sa(n,a),r=sa(n,a+2);1==t&&(s=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}if(s&&24==s.length){const n=Ne(s),a=n.getBigUint64(0,!0),i=n.getBigUint64(8,!0),o=n.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:ra(a),lastAccessDate:ra(i),creationDate:ra(o)};r.assign(e,c),r.assign(t,c)}})(b,t),t.extraFieldNTFS=b);const x=l.get(30805);if(x)Vs(x,t,!1),t.extraFieldUnix=x;else{const e=l.get(30837);e&&(Vs(e,t,!0),t.extraFieldInfoZip=e)}const z=l.get(H);z&&(((e,t,r)=>{if(!e.data.length)return;const n=Ne(e.data),s=na(n,0),a=[],i=[];r?(1&~s||(a.push(vn),i.push(Cn)),2&~s||(a.push(Tn),i.push(Un)),4&~s||(a.push(In),i.push(On))):5>e.data.length||(a.push(vn),i.push(Cn));let c=1;a.forEach((r,s)=>{if(e.data.length>=c+4){const a=aa(n,c);t[r]=e[r]=new o(1e3*(0|a));const l=i[s];e[l]=a}c+=4})})(z,t,a),t.extraFieldExtendedTimestamp=z);const F=l.get(6534);F&&(t.extraFieldUSDZ=F)}function Ws(e,t,n,s,a){if(5>e.data.length)return void(e.valid=!1);const i=Ne(e.data),o=new Te;o.append(a[n]);const c=Ne(new f(4));c.setUint32(0,o.get(),!0);const l=aa(i,1);r.assign(e,{version:na(i,0),[t]:bn(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==aa(c,0)}),e.valid&&(s[t]=e[t],s[t+"UTF8"]=!0)}function Ps(e,t){if(8>e.data.length)return;const n=Ne(e.data),s={lastAccessDate:new o(1e3*aa(n,0)),lastModDate:new o(1e3*aa(n,4))};12>e.data.length||(s.uid=sa(n,8),s.gid=sa(n,10)),r.assign(e,s),r.assign(t,s)}function Vs(e,t,n){try{const s=Ne(e.data);let a,i;if(n){let t=0;const n=na(s,t++),o=na(s,t++);a=Zs(e.data.subarray(t,t+o)),t+=o;const c=na(s,t++);i=Zs(e.data.subarray(t,t+c)),r.assign(e,{version:n,uid:a,gid:i})}else 4>e.data.length||(a=sa(s,0),i=sa(s,2),r.assign(e,{uid:a,gid:i}));a!==$&&(t.uid=a),i!==$&&(t.gid=i)}catch{}}function Zs(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Bs(e,t){return e.Te?e.Te(t):0}function Hs(e,t){return e===$?t?ps:"balanced":e}const js=64,qs=0,Ks=1,Ys=2;async function*Gs(e,t){const r=e.size-t,n=await Sn(e,r,t),s=Ne(n);for(let e=n.length-Z;e>=0;e--)aa(s,e)==W&&(yield[s,r,n,e,r+e])}function Xs(e,t,r){return{offset:r,buffer:e.slice(t,t+Z).buffer}}async function Js(e,t,r,n,s,a,i){const o=sa(t,n+10),c=aa(t,n+12),l=aa(t,n+16);if(o==I||c==U||l==U)return await Qs(e,t,r,s-B,a,i)==V?Ys:qs;if(!o&&!c)return Ks;const d=sa(t,n+6);for(const n of[s-c,Bs(e,d)+l])if(await Qs(e,t,r,n,a,i)==L)return Ys;return qs}async function Qs(e,t,r,n,s,a){return 0>n||n+4>s?$:r>n?a.count>0?(a.count--,aa(Ne(await Sn(e,n,4)),0)):$:aa(t,n-r)}function $s(e){const t=new u(ks);throw t.reason=e,t}function ea(e,t,r){return t[r]===$?e.options[r]:t[r]}function ta(e){const t=(4294901760&e)>>16,r=e&I;return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}function ra(e){return new o(s(e/a(1e4)-a(116444736e5)))}function na(e,t){return e.getUint8(t)}function sa(e,t){return e.getUint16(t,!0)}function aa(e,t){return e.getUint32(t,!0)}function ia(e,t){return s(e.getBigUint64(t,!0))}var oa=r.freeze({__proto__:null,ERR_AMBIGUOUS_ARCHIVE:ks,ERR_BAD_FORMAT:ms,ERR_CENTRAL_DIRECTORY_NOT_FOUND:gs,ERR_ENCRYPTED:zs,ERR_ENCRYPTED_CENTRAL_DIRECTORY:As,ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND:Ss,ERR_EOCDR_NOT_FOUND:ys,ERR_EXTRAFIELD_ZIP64_NOT_FOUND:xs,ERR_INVALID_AUTHENTICATION_CODE:He,ERR_INVALID_COMPRESSED_DATA:Ut,ERR_INVALID_CRC32:It,ERR_INVALID_PASSWORD:Ze,ERR_INVALID_SIGNATURE:Be,ERR_INVALID_UNCOMPRESSED_SIZE:Tt,ERR_LOCAL_FILE_HEADER_NOT_FOUND:bs,ERR_OVERLAPPING_ENTRY:Ds,ERR_SPLIT_ZIP_FILE:Rs,ERR_UNSUPPORTED_COMPRESSION:Es,ERR_UNSUPPORTED_ENCRYPTION:Fs,ZipReader:Is,ZipReaderStream:Os});const ca="File already exists",la="Zip file comment exceeds 64KB",da="File entry comment exceeds 64KB",wa="File entry name exceeds 64KB",ua="Version exceeds 65535",fa="The strength must equal 1, 2, or 3",pa="Encryption is not supported in USDZ files",ha="Extra field type exceeds 65535",ma="Extra field data exceeds 64KB",ya=-2147483648,Sa=2147483647,ga=a(0),ba=a("0x7fffffffffffffff"),xa="Zip64 is not supported (set the 'zip64' option to 'true')",za="Undefined uncompressed size",Fa="Undefined reader",Ea="Zip file not empty",Ra=new f([7,0,2,0,65,69,3,0,0]),Da="infozip",ka="unix";let Aa=0;const va=[];class Ca{constructor(e,t={}){e=new mn(e);const{availableSize:n=ee,maxSize:s=ee}=e,a=n>0&&n!==ee&&s>0&&s!==ee;r.assign(this,{writer:e,Pe:a,options:t,config:ce(),files:new c,Ve:new l,offset:t[ws]===$?e.size||e.writable.size||0:t[ws],Ze:t[ws]===$?0:t[ws]-(e.size||e.writable.size||0),Be:new l,He:0,je:$})}async prependZip(e){if(this.Ve.size)throw new u(Ea);e=new hn(e),await yn(e);const{ZipReader:t}=await S.resolve().then(()=>oa),n=new t(e.readable),s=await n.getEntries();await n.close(),await yn(this.writer),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.Ve=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,rawLastModDate:n,lastAccessDate:s,creationDate:a,rawFilename:i,bitFlag:o,encrypted:c,uncompressedSize:l,compressedSize:d,zip64:w}=e;let{compressionMethod:u,qe:f,Ke:p,Ye:h,Ge:m,Xe:y,rawExtraField:S}=e;const{level:g,languageEncodingFlag:b,dataDescriptor:x}=o;f=f||ne,p=p||ne,h=h||ne,m=m||ne,y=y||ne,S=S||ne,e.extraFieldAES&&(u=99);const z=Ja(f,p,h,m,y,S),F=w&&l>=U,E=w&&d>=U,R=-7&$a(g,b,x,c,u)|g<<1,{Je:D,Qe:k}=Qa({version:t,bitFlag:R,compressionMethod:u,uncompressedSize:l,compressedSize:d,rawLastModDate:n,rawFilename:i,$e:E,et:F,extraFieldLength:z}),{crc32:A}=e;return A!==$&&Ya(k,10,A),r.assign(e,{et:F,$e:E,nt:w&&e.offset>=U,diskNumberStart:0,st:!1,qe:f,Ke:p,Ye:h,Ge:m,Xe:y,rawExtraField:S,extendedTimestamp:h.length>0||m.length>0,it:1+(s?2:0)+(a?4:0),Je:D,Qe:k}),[e.filename,e]}))}async add(e="",t,n={}){const s=this;n=r.assign({},n);const{Be:c,config:l}=s;let d,w;Aa<l.maxWorkers?Aa++:await new S(e=>va.push(e));try{if(e=e.trim(),ja(s,n,jn)&&!e.endsWith(G)&&(e+=G),s.Ve.has(e))throw new u(ca);return s.Ve.add(e),w=!0,d=(async(e,t,n,s)=>{const c=((e,t,r)=>{t=t.trim();let n=ja(e,r,Wn),s=ja(e,r,Bn,n?20:768);const a=ja(e,r,qn),i=ja(e,r,"uid"),o=ja(e,r,"gid");let c=ja(e,r,Xn),l=ja(e,r,"unixExtraFieldType"),d=ja(e,r,Jn),w=ja(e,r,Qn),f=ja(e,r,$n);if(i!==$&&(0>i||i>U))throw new u("Invalid uid (must be integer 0..2^32-1)");if(o!==$&&(0>o||o>U))throw new u("Invalid gid (must be integer 0..2^32-1)");if(c!==$&&(0>c||c>I))throw new u("Invalid UNIX mode (must be integer 0..65535)");if(l!==$&&l!==Da&&l!==ka)throw new u("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(l===ka&&(i!==$&&i>I||o!==$&&o>I))throw new u("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");l!==$||i===$&&o===$||(l=Da);let p=ja(e,r,_n),h=ja(e,r,Ln);const m=p!==$||h!==$;if(i!==$||o!==$||c!==$||l?(n=!1,s=s&I|768):m&&(n=!0,s&=O),p!==$&&(0>p||p>O))throw new u("Invalid msdosAttributesRaw (must be integer 0..255)");if(h&&"object"!=typeof h)throw new u("Invalid msdosAttributes (must be an object with boolean flags)");if(s>I)throw new u(ua);let y=ja(e,r,Nn);const S=y!==$;S||(y=0),!r[jn]&&t.endsWith(G)&&(r[jn]=!0);const g=ja(e,r,jn);let b;if(g?(t.endsWith(G)||(t+=G),S||(y=16,n||(y|=16877<<16))):n||S||(y=a?493<<16:27525120),!n){const e=c!==$||!!(d||w||f);b=y>>16&I,c=c===$?b:c&I,d?c|=K:d=!!(c&K),w?c|=Y:w=!!(c&Y),f?c|=512:f=!!(512&c),S&&!e||(g&&(c|=q),y=(c&I)<<16|y&I)}return({msdosAttributesRaw:p,msdosAttributes:h}=((e,t)=>{if(e!==$)e&=O;else if(t!==$){const{readOnly:r,hidden:n,system:s,directory:a,archive:i}=t;let o=0;r&&(o|=1),n&&(o|=2),s&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&O}return t===$&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(p,h)),m&&(y=y&U|p&O),{name:t,ot:{versionMadeBy:s,msDosCompatible:n,externalFileAttributes:y,unixExternalUpper:b,uid:i,gid:o,unixMode:c,unixExtraFieldType:l,setuid:d,setgid:w,sticky:f,msdosAttributesRaw:p,msdosAttributes:h}}})(e,t,s);({name:t}=c);const l=((e,t,r)=>{const n=ja(e,r,"encodeText",Ie);let s=n(t);if(s===$&&(s=Ie(t)),Ja(s)>I)throw new u(wa);const a=r[Fn]||"";let i=n(a);if(i===$&&(i=Ie(a)),Ja(i)>I)throw new u(da);const c=ja(e,r,Zn,20);if(c>I)throw new u(ua);const l=ja(e,r,vn,new o),d=ja(e,r,Tn),w=ja(e,r,In),f=ja(e,r,Mn,0),p=ja(e,r,ss);let h,m;p||(h=ja(e,r,rs),m=ja(e,r,ns));const y=ja(e,r,"encryptionStrength",3),S=ja(e,r,Hn),g=ja(e,r,"extendedTimestamp",!0),b=ja(e,r,"ntfsTimestamp"),x=ja(e,r,"keepOrder",!0),z=ja(e,r,os),F=ja(e,r,ls),E=ja(e,r,"bufferedWrite"),R=ja(e,r,"createTempStream"),D=ja(e,r,"dataDescriptorSignature",!0),k=ja(e,r,as),A=ja(e,r,"useUnicodeFileNames",!0),v=ja(e,r,Kn),C=p||v===$?$:ge(v);if(!p&&v!==$&&0!==v&&8!==v&&!C)throw new u("Compression method not supported");let T=ja(e,r,"level");if(e.options[us]){if(h!==$||m!==$)throw new u(pa);T===$&&v===$&&(T=0)}let U=ja(e,r,cs),O=ja(e,r,"dataDescriptor");E&&O===$&&(O=!1),(O===$||S)&&(O=!0),T!==$&&6!=T&&(U=!1);const M=ja(e,r,Pn);if(!S&&(h!==$||m!==$)&&(1>y||y>3))throw new u(fa);const N=Ua(r[Gn]),_=Ua(r.localExtraField);return{comment:a,ot:{rawFilename:s,rawComment:i,version:c,lastModDate:l,lastAccessDate:d,creationDate:w,internalFileAttributes:f,passThrough:p,password:h,rawPassword:m,encryptionStrength:y,zipCrypto:S,extendedTimestamp:g,ntfsTimestamp:b,keepOrder:x,useWebWorkers:z,transferStreams:F,bufferedWrite:E,createTempStream:R,dataDescriptorSignature:D,signal:k,useUnicodeFileNames:A,compressionMethod:v,format:C?C.format:$,codecURI:C?C.codecURI:$,ct:C?C.versionNeeded:$,level:T,useCompressionStream:U,dataDescriptor:O,zip64:M,rawExtraField:N,lt:_}}})(e,t,s),{comment:d}=l,w=s[Gn];let p;e.files.set(t,$);try{const{ot:d}=l;0==d.level||d.compressionMethod!==$||d.passThrough||await(async e=>{const{CompressionStream:t,CompressionStreamFallback:r}=e;if(r&&!r.xe)return!0;if(Zt(t)||Vt(t,Mt))return!0;if(r)try{return await void 0,!0}catch{return!1}return!1})(e.config)||(d.level=0);const w=await(async(e,t,{ot:r},n)=>{const{passThrough:s,zipCrypto:a,password:i,rawPassword:o,encryptionStrength:c}=r;let{dataDescriptor:l,zip64:d,level:w,compressionMethod:f}=r,p=0,h=0;if(s){if(!t)throw new u(Fa);if(h=n[Rn],h===$)throw new u(za)}const m=!0===d,y=ja(e,n,Vn),S=!!t&&(!!(i&&Ja(i)||o&&Ja(o))||s&&y);t||(w=0,f=0);const g=S?a?12:16+4*c:0;t&&(t=new hn(t),await yn(t),s?(n.uncompressedSize=h,p=qa(h)+g):t.size===$?(l=!0,(d||d===$)&&(d=!0,h=p=4294967296)):(n.uncompressedSize=h=t.size,p=qa(h)+g));const b=m||h>=U,x=m||p>=U;if(b||x){if(!1===d)throw new u(xa);d=!0}return d=d||!1,{reader:t,ot:{dataDescriptor:l,zip64:d,et:b,$e:x,uncompressedSize:h,level:w,compressionMethod:f,encrypted:S}}})(e,n,l,s);({reader:n}=w);const h=_a(e.writer),m=Na(e.writer),y=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:n,creationDate:s,level:a,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:w,directory:f,rawExtraField:p,lt:h,encryptionStrength:m,extendedTimestamp:y,ntfsTimestamp:S,passThrough:g,encrypted:b,et:x,$e:z,uncompressedSize:F,crc32:E}=e;let{version:R,compressionMethod:D}=e;const k=!f&&(D===$?a===$||a>0:0!==D);let A;const v=g||!k,C=c&&(e.bufferedWrite||!w||!x&&!z||v),T=C||c&&w&&(x||z);if(c&&(x||z)){const e=20,t=Ma(e);if(t.uint16(1),t.uint16(e-4),A=t.array,C&&(t.wt(F),v)){const e=b?l?12:16+4*m:0;t.wt(g?0:F+e)}}else A=ne;let U,O,N,_,L;if(b&&!l){const e=Ma(Ja(Ra)+2);e.uint16(39169),e.bytes(Ra),U=e.array,U[8]=m}else U=ne;if(y){const e=Za(r),t=Ba(e);if(t){const t=9+(n?4:0)+(s?4:0),r=Ma(t);_=1+(n?2:0)+(s?4:0),r.uint16(H),r.uint16(t-4),r.uint8(_),r.uint32(e),n&&r.uint32(Ha(Za(n))),s&&r.uint32(Ha(Za(s))),N=r.array}else N=ne;if(S===$?!t||n||s:S)try{const e=Va(r),t=Ma(36);t.uint16(10),t.uint16(32),t.ut(4),t.uint16(1),t.uint16(24),t.wt(e),t.wt(n?Va(n):e),t.wt(s?Va(s):e),O=t.array}catch{O=ne}else O=ne}else O=N=ne;try{const{uid:t,gid:r,unixExtraFieldType:n}=e;if(n!=Da||t===$&&r===$)if(n!=ka||t===$&&r===$)L=ne;else{const e=Ma(8);e.uint16(30805),e.uint16(4),e.uint16((t===$?0:t)&I),e.uint16((r===$?0:r)&I),L=e.array}else{const e=Oa(t),n=Oa(r),s=3+e.length+n.length,a=Ma(4+s);a.uint16(30837),a.uint16(s),a.uint8(1),a.uint8(e.length),a.bytes(e),a.uint8(n.length),a.bytes(n),L=a.array}}catch{L=ne}D===$&&(D=k?8:0);const{ct:W}=e;k&&W!==$&&(R=R>W?R:W),c&&(R=R>45?R:45),b&&!l&&(R=R>51?R:51,g&&E!==$&&(U[4]=1),U[9]=D,D=99);const P=T?Ja(A):0,V=P+Ja(U,N,O,L,p,h);if(V>I)throw new u(ma);const Z=new o(2e3*i.ceil(i.floor(r.getTime()/1e3)/2)),{Je:B,Qe:j,rawLastModDate:q}=Qa({version:R,bitFlag:$a(a,d,w,b,D),compressionMethod:D,uncompressedSize:F,lastModDate:Q>Z?Q:Z>J?J:Z,rawFilename:t,$e:z,et:x,extraFieldLength:V}),K=Ma(X+Ja(t)+V),Y=K.array,G=Ne(Y);return K.uint32(M),K.bytes(B),K.bytes(t),T&&K.bytes(A),K.bytes(U),K.bytes(N),K.bytes(O),K.bytes(L),K.bytes(p),K.bytes(h),w&&(z||Ya(G,18,0),x||Ya(G,22,0)),{ft:Y,ht:G,Je:B,Qe:j,lastModDate:r,rawLastModDate:q,encrypted:b,compressed:k,version:R,compressionMethod:D,it:_,qe:ne,yt:P,Ye:N,Ge:O,Xe:L,Ke:U,extraFieldLength:V}})(s=r.assign({},s,c.ot,l.ot,w.ot,{internalFileAttribute:l.ot.internalFileAttributes,externalFileAttribute:c.ot.externalFileAttributes,signature:s[Yn],crc32:s.crc32===$?s[Yn]:s.crc32,offset:e.offset-h,diskNumberStart:m})),g=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let n,s=ne,a=0,i=e?20:12;return r&&(i+=4),t&&(s=new f(i),n=Ne(s),r&&(a=4,Ya(n,0,_))),{St:s,gt:n,bt:a}})(s),b=Ja(y.ft,g.St);p=await(async(e,t,n,s,i)=>{const{files:o,writer:c}=e,{keepOrder:l,dataDescriptor:d,signal:w}=i,{xt:p}=s,h=e.options[us],m=e.je;let y,g,b,x,z,F,R,k={},A=0;o.set(t,k),e.je=k;try{let g;l&&(g=m&&m.lock,k.lock=new S(e=>b=e)),i.bufferedWrite||!l||e.zt||e.He||!d?(y=!0,e.He++,R=i.createTempStream?await i.createTempStream():new E($,$,{highWaterMark:ee}),R.size=0,await yn(c)):(R=c,await v()),await yn(R);const T=_a(c);if(e.Pe){delete e.Pe;const t=new f(4);Ya(Ne(t),0,N),await Pa(c,t),e.offset+=4}h&&!y&&Ia(s,e.offset-T);const{ft:I}=p;y||(await g,await C());const M=Na(c),_=Wa(e,c);if(k.diskNumberStart=M,y||(z=!0,F=c.size,await Pa(R,I)),k=await(async(e,t,{diskNumberStart:n,lock:s},i,o,c)=>{const{xt:l,Ft:d,Et:w}=i,{Je:f,Qe:p,lastModDate:h,rawLastModDate:m,encrypted:y,compressed:S,version:g,compressionMethod:b,qe:x,yt:z,Ye:F,it:E,Ge:R,Xe:D,Ke:k}=l,{St:A}=d,{rawFilename:v,lastAccessDate:C,creationDate:T,password:I,rawPassword:M,level:N,zip64:_,et:L,$e:W,zipCrypto:P,dataDescriptor:V,directory:Z,executable:B,versionMadeBy:H,rawComment:j,rawExtraField:q,useWebWorkers:K,transferStreams:Y,onstart:G,onprogress:X,onend:J,signal:Q,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:we,msdosAttributesRaw:ue,msdosAttributes:fe,useCompressionStream:pe,passThrough:he,format:me,codecURI:ye}=c,Se={lock:s,versionMadeBy:H,zip64:_,directory:!!Z,executable:!!B,filenameUTF8:!0,rawFilename:v,commentUTF8:!0,rawComment:j,qe:x,yt:z,Ye:F,Ge:R,Xe:D,Ke:k,rawExtraField:q,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,diskNumberStart:n,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:we,msdosAttributesRaw:ue,msdosAttributes:fe};let{crc32:ge,uncompressedSize:be}=c,xe=0;he||(be=0);const{writable:ze}=t;if(e){const r=vt(e.createReadable?e.createReadable():e.readable),n=e.size,s={options:{codecType:Gt,level:N,rawPassword:M,password:I,encryptionStrength:ee,zipCrypto:y&&P,passwordVerification:y&&P&&m>>8&O,computeCrc32:!he,compressed:S&&!he,encrypted:y&&!he,useWebWorkers:K,useCompressionStream:pe,transferStreams:Y,format:me,codecURI:ye,compressionMethod:b},config:o,oe:{signal:Q,size:n,onstart:G,onprogress:X,onend:J}};try{const e=await Fr({readable:r,writable:ze},s);if(xe=e.outputSize,t.size+=xe,he||(be=e.inputSize,y&&!P||(ge=e.crc32)),!W&&xe>=U||!L&&be>=U)throw new u(xa)}catch(e){throw e.outputSize!==$&&(t.size+=e.outputSize),e}}return(({crc32:e,compressedSize:t,uncompressedSize:r,xt:n,Ft:s},{zip64:i,zipCrypto:o,passThrough:c,dataDescriptor:l})=>{const{Qe:d,encrypted:w}=n,{gt:u,bt:f}=s;w&&!o&&!c||e===$||(Ya(d,10,e),l&&Ya(u,f,e)),i?l&&(Ga(u,f+4,a(t)),Ga(u,f+12,a(r))):(Ya(d,14,t),Ya(d,18,r),l&&(Ya(u,f+4,t),Ya(u,f+8,r)))})({crc32:ge,compressedSize:xe,uncompressedSize:be,xt:l,Ft:d},c),V&&await Pa(t,A),r.assign(Se,{uncompressedSize:be,compressedSize:xe,lastModDate:h,rawLastModDate:m,creationDate:T,lastAccessDate:C,encrypted:y,zipCrypto:P,size:w+xe,compressionMethod:b,version:g,Je:f,Qe:p,signature:ge,crc32:!y||P||he?ge:$,it:E,et:L,$e:W}),Se})(n,R,k,s,e.config,i),y||(z=!1),o.set(t,k),k.filename=t,y){if(await S.all([R.writable.getWriter().close(),g]),await v(),x=!0,F=c.size,await C(),k.diskNumberStart=Na(c),k.offset=Wa(e,c),h){const t=s.Et;Ia(s,e.offset-_a(c)),k.size+=s.Et-t}(({rawFilename:e,encrypted:t,zip64:r,yt:n,crc32:s,compressedSize:i,uncompressedSize:o,et:c,$e:l},d,{dataDescriptor:w,passThrough:u})=>{if(w||((!t||u&&s!==$)&&Ya(d,14,s),l||Ya(d,18,i),c||Ya(d,22,o)),r&&n){const t=X+Ja(e)+4;Ga(d,t,a(o)),Ga(d,t+8,a(i))}})(k,p.ht,i),await Pa(c,p.ft),await(async(e,t,r)=>{const n=t.writable.getWriter();try{await e.pipeTo(new D({async write(e){var t;await n.ready,await n.write(e),t=Ja(e),A+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{n.releaseLock()}})(R.readable,c,w),c.size+=R.size,x=!1}else k.diskNumberStart=M,k.offset=_;return e.offset+=k.size,k}catch(r){if(x||z){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-F,y&&(e.offset+=A)}throw o.delete(t),r}finally{if(y&&e.He--,b&&b(),g&&g(),y&&R&&R.dispose)try{await R.dispose()}catch{}}async function v(){e.zt=!0;const{Rt:t}=e;e.Rt=new S(t=>g=()=>{e.zt=!1,t()}),await t}async function C(){La(c,Ja(p.ft))&&await c.closeDisk()}})(e,t,n,{xt:y,Ft:g,Et:b},s)}catch(r){throw e.files.delete(t),r}return r.assign(p,{name:t,comment:d,extraField:w}),new ts(p)})(s,e,t,n),c.add(d),await d}catch(t){throw w&&s.Ve.delete(e),t}finally{c.delete(d);const e=va.shift();e?e():Aa--}}remove(e){const{Ve:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==$){const{filename:n}=e;if(t.has(n)&&r.has(n))return t.delete(n),r.delete(n),!0}return!1}async close(e=ne,r={}){const{Be:n,writer:s}=this,{writable:i}=s;if(Ja(e)>I)throw new u(la);for(;n.size;)await S.allSettled(t.from(n));return await(async(e,r,n)=>{const s=(e=>{let t=0;for(const[,r]of e){const{rawFilename:e,Ke:n,rawComment:s,Ge:a,Xe:i,rawExtraField:o,extendedTimestamp:c,it:l,lastModDate:d,et:w,$e:f,uncompressedSize:p,compressedSize:h}=r,m=r.offset>=U,y=r.diskNumberStart>=I;let S,g;if(m||y||w||f){const e=4+(w?8:0)+(f?8:0)+(m?8:0)+(y?4:0),t=Ma(e);t.uint16(1),t.uint16(e-4),w&&t.wt(p),f&&t.wt(h),m&&t.wt(r.offset),y&&t.uint32(r.diskNumberStart),S=t.array}else S=ne;r.qe=S,r.nt=m,r.st=y;const b=Za(d);if(c&&Ba(b)){const e=Ma(9);e.uint16(H),e.uint16(5),e.uint8(l),e.uint32(b),g=e.array}else g=ne;r.Ye=g;const x=Ja(S,n,a,i,g,o);if(x>I)throw new u(ma);t+=46+Ja(e,s)+x}return t})(e.files),i=await(async(e,r,n)=>{const{files:s,writer:a}=e,i=new f(r);await yn(a);let o=0,c=0,l=Na(a),d=_a(a);for(const[e,r]of t.from(s.values()).entries()){const{offset:t,rawFilename:w,qe:u,Ke:f,Ye:p,Ge:h,Xe:m,rawExtraField:y,rawComment:S,versionMadeBy:g,Je:b,Qe:x,et:z,$e:F,st:E,nt:R,internalFileAttributes:D,externalFileAttributes:k,diskNumberStart:A,uncompressedSize:v,compressedSize:C}=r,T=Ja(u,f,p,h,m,y),O=46+Ja(w,S)+T;La(a,o+O-c)&&(await Pa(a,i.slice(c,o)),c=o,await a.closeDisk()),0==e&&(l=Na(a),d=_a(a)),z||Ya(x,18,v),F||Ya(x,14,C),(R||E)&&45>r.version&&Ka(x,0,45);const M=Ma(O);if(M.uint32(L),M.uint16(g),M.bytes(b.subarray(0,24)),M.uint16(T),M.uint16(Ja(S)),M.uint16(E?I:A),M.uint16(D),M.uint32(k),M.uint32(R?U:t),M.bytes(w),M.bytes(u),M.bytes(f),M.bytes(p),M.bytes(h),M.bytes(m),M.bytes(y),M.bytes(S),Xa(i,M.array,o),o+=O,n.onprogress)try{await n.onprogress(e+1,s.size,new ts(r))}catch{}}return await Pa(a,c?i.slice(c):i),{diskNumber:l,diskOffset:d}})(e,s,n);await(async(e,t,r,n)=>{const{writer:s}=e,{Dt:i}=n;let{kt:o}=n,c=e.files.size,l=i.diskNumber,d=Wa(e,i),w=Na(s);La(s,Z)&&w++;let f=ja(e,r,Pn);if(!(U>d&&U>o&&I>c&&I>w)){if(!1===f)throw new u(xa);f=!0}const p=Ja(t);if(p>I)throw new u(la);const h=Ma(f?98:Z);La(s,Ja(h.array)+p)&&await s.closeDisk(),w=Na(s),f&&(h.uint32(P),h.wt(44),h.uint16(45),h.uint16(45),h.uint32(w),h.uint32(l),h.wt(c),h.wt(c),h.wt(o),h.wt(d),h.uint32(V),h.uint32(w),h.wt(a(Wa(e,s))+a(o)),h.uint32(w+1),ja(e,r,"supportZip64SplitFile",!0)&&(w=I,l=I),c=I,d=U,o=U),h.uint32(W),h.uint16(w),h.uint16(l),h.uint16(c),h.uint16(c),h.uint32(o),h.uint32(d),h.uint16(p),await Pa(s,h.array),p&&await Pa(s,t)})(e,r,n,{Dt:i,kt:s})})(this,e,r),ja(this,r,ds)||await i.getWriter().close(),s.getData?s.getData():i}}function Ta(e,t,r){e.Be.add(t),t.catch(e=>{try{r(e)}catch{}})}function Ua(e){if(!e)return ne;let t=0,r=0;e.forEach(e=>t+=4+Ja(e));const n=new f(t),s=Ne(n);return e.forEach((e,t)=>{if(t>I)throw new u(ha);if(Ja(e)>I)throw new u(ma);Ka(s,r,t),Ka(s,r+2,Ja(e)),Xa(n,e,r+4),r+=4+Ja(e)}),n}function Ia(e,t){const{xt:r}=e;let{ft:n,extraFieldLength:s}=r,a=64-(t+Ja(n))%64;4>a&&(a+=64);const i=new f(a),o=Ne(i);Ka(o,0,6534),Ka(o,2,a-4);const c=n;r.ft=n=new f(Ja(c)+a),Xa(n,c),Xa(n,i,Ja(c));const l=Ne(n);Ka(l,28,s+a),r.ht=l,e.Et+=a}function Oa(e){if(e===$)return ne;{const t=new f(4);Ne(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Ma(e){const t=new f(e),r=Ne(t);let n=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,n,e),n+=1},uint16:e=>{Ka(r,n,e),n+=2},uint32:e=>{Ya(r,n,e),n+=4},wt:e=>{Ga(r,n,a(e)),n+=8},bytes:e=>{Xa(t,e,n),n+=Ja(e)},ut:e=>n+=e}}function Na(e){const{diskNumber:t=0}=e;return t}function _a(e){const{diskOffset:t=0}=e;return t}function La(e,t){const{availableSize:r=ee}=e;return t>r}function Wa(e,{diskNumber:t=0,diskOffset:r=0}){return e.offset-r-(t?e.Ze:0)}async function Pa(e,t){const{writable:r}=e,n=r.getWriter();try{await n.ready,e.size+=Ja(t),await n.write(t)}finally{n.releaseLock()}}function Va(e){if(e){const t=(a(e.getTime())+a(116444736e5))*a(1e4);return ga>t?ga:t>ba?ba:t}}function Za(e){return i.floor(e.getTime()/1e3)}function Ba(e){return e>=ya&&Sa>=e}function Ha(e){return i.min(Sa,i.max(ya,e))}function ja(e,t,r,n){const s=t[r]===$?e.options[r]:t[r];return s===$?n:s}function qa(e){return e+5*(i.floor(e/16383)+1)}function Ka(e,t,r){e.setUint16(t,r,!0)}function Ya(e,t,r){e.setUint32(t,r,!0)}function Ga(e,t,r){e.setBigUint64(t,r,!0)}function Xa(e,t,r){e.set(t,r)}function Ja(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function Qa({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:n,compressedSize:s,lastModDate:a,rawLastModDate:i,rawFilename:o,$e:c,et:l,extraFieldLength:d}){const w=Ma(26),u=w.array,f=Ne(u);if(w.uint16(e),w.uint16(t),w.uint16(r),i===$){const e=new h(1),t=Ne(e);Ka(t,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),Ka(t,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate()),i=e[0]}return w.uint32(i),w.ut(4),c||s!==$?w.uint32(c?U:s):w.ut(4),l||n!==$?w.uint32(l?U:n):w.ut(4),w.uint16(Ja(o)),w.uint16(d),{Je:u,Qe:f,rawLastModDate:i}}function $a(e,t,r,n,s){let a=0;return t&&(a|=j),r&&(a|=8),8!=s&&9!=s||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),n&&(a|=1),a}const ei=1048576,ti=".zip.js-temp",ri=1048576,ni=1048576,si=".zip.js-temp";try{(e=>{e=we(e);for(const t of ie){const r=e[t];r!==$&&(ae[t]=r)}de(e)})({baseURI:void 0===x&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===x?location.href:T&&"SCRIPT"===T.tagName.toUpperCase()&&T.src||new w("zip-core.min.js",x.baseURI).href})}catch{}e.BlobReader=qr,e.BlobWriter=Kr,e.Data64URIReader=class extends Zr{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const n=e.indexOf(",")+1;r.assign(this,{dataURI:e,At:n,size:i.floor(.75*(t-n))})}readUint8Array(e,t){const{At:r,dataURI:n}=this,s=new f(t),a=4*i.floor(e/3),o=atob(n.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)s[e-c]=o.charCodeAt(e),l++;return l<s.length?s.subarray(0,l):s}},e.Data64URIWriter=class extends Br{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r,s=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)s+=n.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=n.fromCharCode(e[r]);s.length>2?t.data+=F(s):t.pending=s+t.pending}getData(){return this.data+F(this.pending)}},e.ERR_AMBIGUOUS_ARCHIVE=ks,e.ERR_BAD_FORMAT=ms,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=gs,e.ERR_DUPLICATED_NAME=ca,e.ERR_ENCRYPTED=zs,e.ERR_ENCRYPTED_CENTRAL_DIRECTORY=As,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=Ss,e.ERR_EOCDR_NOT_FOUND=ys,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=xs,e.ERR_HTTP_RANGE=Cr,e.ERR_HTTP_RESOURCE_CHANGED=Tr,e.ERR_INVALID_AUTHENTICATION_CODE=He,e.ERR_INVALID_CODEC_DEFINITION=ue,e.ERR_INVALID_CODEC_MODULE=pe,e.ERR_INVALID_COMMENT=la,e.ERR_INVALID_COMPRESSED_DATA=Ut,e.ERR_INVALID_CRC32=It,e.ERR_INVALID_ENCRYPTION_STRENGTH=fa,e.ERR_INVALID_ENTRY_COMMENT=da,e.ERR_INVALID_ENTRY_NAME=wa,e.ERR_INVALID_EXTRAFIELD_DATA=ma,e.ERR_INVALID_EXTRAFIELD_TYPE=ha,e.ERR_INVALID_PASSWORD=Ze,e.ERR_INVALID_SIGNATURE=Be,e.ERR_INVALID_UNCOMPRESSED_SIZE=Tt,e.ERR_INVALID_VERSION=ua,e.ERR_ITERATOR_COMPLETED_TOO_SOON=Ur,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=bs,e.ERR_OVERLAPPING_ENTRY=Ds,e.ERR_RESERVED_COMPRESSION_METHOD=fe,e.ERR_SPLIT_ZIP_FILE=Rs,e.ERR_UNDEFINED_READER=Fa,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=za,e.ERR_UNSUPPORTED_COMPRESSION=Es,e.ERR_UNSUPPORTED_ENCRYPTION=Fs,e.ERR_UNSUPPORTED_ENCRYPTION_USDZ=pa,e.ERR_UNSUPPORTED_FORMAT=xa,e.ERR_WRITER_NOT_INITIALIZED=Ir,e.ERR_ZIP_NOT_EMPTY=Ea,e.HttpRangeReader=class extends un{constructor(e,t={}){super(e,r.assign({},t,{useRangeHeader:!0}))}},e.HttpReader=un,e.Reader=Zr,e.SplitDataReader=fn,e.SplitDataWriter=pn,e.TextReader=class extends qr{constructor(e){super(new y([e],{type:"text/plain"}))}},e.TextWriter=class extends Kr{constructor(e){super(e),r.assign(this,{encoding:e,vt:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,vt:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new S((s,a)=>{r.assign(t,{onload:({target:e})=>s(e.result),onerror:()=>a(t.error)}),t.readAsText(n,e)})}}},e.Uint8ArrayReader=class extends Zr{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=class extends Br{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const n=t.array;t.array=new f(e),t.array.set(n)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},e.Writer=Br,e.ZipReader=Is,e.ZipReaderStream=Os,e.ZipWriter=Ca,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new E;this.readable=t,this.zipWriter=new Ca(r,e),this.Be=new l}transform(e){const t=this.zipWriter;let r;const{readable:n,writable:s}=new E({start(e){r=e},flush:()=>{(async()=>{try{await t.close()}catch(e){try{await t.writer.writable.abort(e)}catch{}}})()}});return Ta(this,this.zipWriter.add(e,n),e=>r.error(e)),{readable:this.readable,writable:s}}writable(e){let t;const{readable:r,writable:n}=new E({start(e){t=e}});return Ta(this,this.zipWriter.add(e,r),e=>t.error(e)),n}async close(e,r={}){return await S.all(t.from(this.Be)),this.zipWriter.close(e,r)}},e.configure=de,e.createBlobTempStream=(e={})=>{const{thresholdBytes:t=ri}=e;return()=>{const e=[];let r,n,s,a=0,i=!1;const o=new D({async write(s){i?await r.write(s):(e.push(s),a+=s.length,a>t&&await(async()=>{const t=new E;n=new d(t.readable).blob(),r=t.writable.getWriter(),i=!0;for(const t of e)await r.write(t);e.length=0})())},async close(){r&&(await r.close(),r=null)}});let c=0;return{writable:o,readable:new R({async pull(t){if(i){if(!s){const e=await n;s=e.stream().getReader()}const{value:e,done:r}=await s.read();r?t.close():t.enqueue(e)}else c<e.length?t.enqueue(e[c++]):t.close()},async cancel(e){s&&await s.cancel(e)}},{highWaterMark:0}),dispose:async()=>{if(r){try{await r.abort()}catch{}r=null}n&&(n.catch(()=>{}),n=null),e.length=0}}}},e.createOPFSTempStream=(e={})=>{const{thresholdBytes:t=ei,directoryName:r=ti,getDirectory:n=()=>v.storage.getDirectory()}=e;let s;function a(){return s||(s=S.resolve(n()).then(e=>e.getDirectoryHandle(r,{create:!0}))),s}return()=>{const e=[];let r,n,s,i,o=0,c=!1;const l=new D({async write(i){c?await s.write(i):(e.push(i),o+=i.length,o>t&&await(async()=>{const t=await a();r=z.randomUUID(),n=await t.getFileHandle(r,{create:!0}),s=(await n.createWritable()).getWriter(),c=!0;for(const t of e)await s.write(t);e.length=0})())},async close(){s&&(await s.close(),s=null)}});let d=0;return{writable:l,readable:new R({async pull(t){if(c){if(!i){const e=await n.getFile();i=e.stream().getReader()}const{value:e,done:r}=await i.read();r?t.close():t.enqueue(e)}else d<e.length?t.enqueue(e[d++]):t.close()},async cancel(e){i&&await i.cancel(e)}},{highWaterMark:0}),dispose:async()=>{if(s){try{await s.close()}catch{}s=null}if(r){try{const e=await a();await e.removeEntry(r)}catch{}n=r=null}e.length=0}}}},e.createSyncAccessHandleTempStream=(e={})=>{const{thresholdBytes:t=ni,directoryName:r=si,getDirectory:n}=e;if(!(n||"undefined"!=typeof FileSystemFileHandle&&FileSystemFileHandle.prototype.createSyncAccessHandle))throw new u("createSyncAccessHandle is only available in dedicated workers");const s=n||(()=>v.storage.getDirectory());let a;function o(){return a||(a=S.resolve(s()).then(e=>e.getDirectoryHandle(r,{create:!0}))),a}return()=>{const e=[];let r,n,s=0,a=!1,c=0,l=0;const d=new D({async write(i){a?(n.write(i,{at:c}),c+=i.length):(e.push(i),s+=i.length,s>t&&await(async()=>{const t=await o();r=z.randomUUID();const s=await t.getFileHandle(r,{create:!0});n=await s.createSyncAccessHandle(),a=!0;for(const t of e)n.write(t,{at:c}),c+=t.length;e.length=0})())},close(){n&&n.flush()}});let w=0;return{writable:d,readable:new R({pull(t){if(a){const e=c-l;if(0>=e)return void t.close();const r=new f(i.min(524288,e)),s=n.read(r,{at:l});s?(l+=s,t.enqueue(r.subarray(0,s))):t.close()}else w<e.length?t.enqueue(e[w++]):t.close()}},{highWaterMark:0}),dispose:async()=>{if(n){try{n.close()}catch{}n=null}if(r){try{const e=await o();await e.removeEntry(r)}catch{}r=null}e.length=0}}}},e.getMimeType=()=>"application/octet-stream",e.registerCodec=(e={})=>{const{compressionMethod:t,format:r,codecURI:n,CompressionStream:a,DecompressionStream:i,versionNeeded:o}=e;if(!s.isInteger(t)||0>t||t>I||typeof r!=he||!r.length)throw new u(ue);if(me.includes(t))throw new u(fe);const c=typeof a==re||typeof i==re;if(!(c||typeof n==he&&n.length))throw new u(ue);ye.set(t,{compressionMethod:t,format:r,codecURI:n,versionNeeded:o}),c&&xe(r,{CompressionStream:a,DecompressionStream:i})},e.resetConfiguration=()=>{for(const e of ie)delete oe[e];r.assign(oe,ae)},e.terminateWorkers=async()=>{await S.allSettled(Sr.map(e=>(Ar(e),e.terminate()))),tr=$,ar=!1},e.unregisterCodec=e=>{const t=ye.get(e);if(t){let r;ye.delete(e),ye.forEach(e=>r=r||e.format==t.format),r||Se.delete(t.format)}}});
1
+ ((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:n,Number:s,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:w,Error:u,Uint8Array:f,Uint16Array:p,Uint32Array:h,DataView:m,Blob:y,Promise:g,TextEncoder:S,TextDecoder:b,document:x,crypto:z,btoa:F,TransformStream:E,ReadableStream:R,WritableStream:D,CompressionStream:k,DecompressionStream:A,navigator:T,Worker:v}="undefined"!=typeof globalThis?globalThis:this||self;var C=void 0!==x?x.currentScript:null;const U=4294967295,I=65535,O=255,M=67324752,_=134695760,N=_,L=84233040,W=33639248,P=101010256,V=101075792,Z=117853008,B=22,H=20,j=56,q=21589,K=2048,Y=16384,G=2048,X=1024,J="/",Q=30,$=new o(2107,11,31,23,59,58),ee=new o(1980,0,1),te=void 0,re=1/0,ne="undefined",se="function",ae=new f;let ie=2;try{typeof T!=ne&&T.hardwareConcurrency&&(ie=T.hardwareConcurrency)}catch{}const oe={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:ie,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,workerStartupTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,transferStreams:!0,CompressionStream:typeof k!=ne&&k,DecompressionStream:typeof A!=ne&&A},ce=["baseURI","wasmURI","workerURI","createWorker","chunkSize","maxWorkers","terminateWorkerTimeout","workerStarvationTimeout","workerStartupTimeout","useCompressionStream","useWebWorkers","transferStreams","CompressionStream","DecompressionStream","CompressionStreamFallback","DecompressionStreamFallback"],le={...oe};function de(){return le}function we(e){return i.max(e.chunkSize,64)}function ue(e){e=fe(e);for(const t of ce){const r=e[t];r!==te&&(le[t]=r)}}function fe(e){const{CompressionStreamZlib:t,DecompressionStreamZlib:n}=e;if(t===te&&n===te)return e;const s=r.assign({},e);return s.CompressionStreamFallback===te&&(s.CompressionStreamFallback=t),s.DecompressionStreamFallback===te&&(s.DecompressionStreamFallback=n),s}const pe="Invalid codec definition",he="Reserved compression method",me="Invalid codec module",ye="string",ge=[0,8,9,99],Se=new c,be=new c;function xe(e){return Se.get(e)}function ze(e){return be.get(e)}function Fe(e,t){const{CompressionStream:r,DecompressionStream:n}=t;if(typeof r!=se&&typeof n!=se)throw new u(me);be.set(e,{CompressionStream:r,DecompressionStream:n})}const Ee=[[],[],[],[],[],[],[],[]];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)t=1&t?t>>>1^3988292384:t>>>1;Ee[0][e]=t}for(let e=0;256>e;e++)for(let t=1;8>t;t++){const r=Ee[t-1][e];Ee[t][e]=r>>>8^Ee[0][255&r]}const[Re,De,ke,Ae,Te,ve,Ce,Ue]=Ee;class Ie{constructor(e){this.o=e||-1}append(e){let t=0|this.o;const r=0|e.length;let n=0;if(r>=8&&e.buffer){const s=new m(e.buffer,e.byteOffset,r),a=r-8;for(;a>=n;n+=8){const e=t^s.getInt32(n,!0),r=s.getInt32(n+4,!0);t=Ue[255&e]^Ce[e>>>8&255]^ve[e>>>16&255]^Te[e>>>24&255]^Ae[255&r]^ke[r>>>8&255]^De[r>>>16&255]^Re[r>>>24&255]}}for(;r>n;n++)t=t>>>8^Re[255&(t^e[n])];this.o=t}get(){return~this.o}}class Oe extends E{constructor(){let e;const t=new Ie;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function Me(e){if(typeof S==ne){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new S).encode(e)}function _e(e,t){const r=new f(e.length+t.length);return r.set(e),r.set(t,e.length),r}function Ne(e){return e.byteOffset||e.byteLength!=e.buffer.byteLength?new f(e):e}function Le(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const We={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],n=We.l(r);return 32===n?e.concat(t):We.h(t,n,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+We.l(r)},m(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=We.S(t,e[r-1]&2147483648>>t-1,1)),e},S:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,l:e=>i.round(e/1099511627776)||32,h(e,t,r,n){for(void 0===n&&(n=[]);t>=32;t-=32)n.push(r),r=0;if(0===t)return n.concat(e);for(let s=0;s<e.length;s++)n.push(r|e[s]>>>t),r=e[s]<<32-t;const s=e.length?e[e.length-1]:0,a=We.l(s);return n.push(We.S(t+a&31,t+a>32?r:n.pop(),1)),n}},Pe={bytes:{F(e){const t=We.bitLength(e)/8,r=new f(t);let n;for(let s=0;t>s;s++)3&s||(n=e[s/4]),r[s]=n>>>24,n<<=8;return r},R(e){const t=[];let r,n=0;for(r=0;r<e.length;r++)n=n<<8|e[r],3&~r||(t.push(n),n=0);return 3&r&&t.push(We.S(8*(3&r),n)),t}}},Ve=class{constructor(e){const t=this;t.blockSize=512,t.D=[1732584193,4023233417,2562383102,271733878,3285377520],t.A=[1518500249,1859775393,2400959708,3395469782],e?(t.T=e.T.slice(0),t.v=e.v.slice(0),t.C=e.C):t.reset()}reset(){const e=this;return e.T=e.D.slice(0),e.v=[],e.C=0,e}update(e){const t=this;"string"==typeof e&&(e=Pe.U.R(e));const r=t.v=We.concat(t.v,e),n=t.C,s=t.C=n+We.bitLength(e);if(s>9007199254740991)throw new u("Cannot hash more than 2^53 - 1 bits");const a=new h(r);let i=0;for(let e=t.blockSize+n-(t.blockSize+n&t.blockSize-1);s>=e;e+=t.blockSize)t.I(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}O(){const e=this;let t=e.v;const r=e.T;t=We.concat(t,[We.S(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e.C/4294967296)),t.push(0|e.C);t.length;)e.I(t.splice(0,16));return e.reset(),r}M(e,t,r,n){return e>19?e>39?e>59?e>79?void 0:t^r^n:t&r|t&n|r&n:t^r^n:t&r|~t&n}_(e,t){return t<<e|t>>>32-e}I(e){const r=this,n=r.T,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let a=n[0],o=n[1],c=n[2],l=n[3],d=n[4];for(let e=0;79>=e;e++){16>e||(s[e]=r._(1,s[e-3]^s[e-8]^s[e-14]^s[e-16]));const t=r._(5,a)+r.M(e,o,c,l)+d+s[e]+r.A[i.floor(e/20)]|0;d=l,l=c,c=r._(30,o),o=a,a=t}n[0]=n[0]+a|0,n[1]=n[1]+o|0,n[2]=n[2]+c|0,n[3]=n[3]+l|0,n[4]=n[4]+d|0}},Ze={importKey:e=>new Ze.N(Pe.bytes.R(e)),L(e,t,r,n){if(r=r||1e4,0>n||0>r)throw new u("invalid params to pbkdf2");const s=1+(n>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(s),w=new m(d);let f=0;const p=We;for(t=Pe.bytes.R(t),l=1;(s||1)>f;l++){for(a=i=e.encrypt(p.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(s||1)>f&&o<a.length;o++)w.setInt32(f,a[o]),f+=4}return d.slice(0,n/8)},N:class{constructor(e){const t=this,r=t.W=Ve,n=[[],[]];t.P=[new r,new r];const s=t.P[0].blockSize/32;e.length>s&&(e=(new r).update(e).O());for(let t=0;s>t;t++)n[0][t]=909522486^e[t],n[1][t]=1549556828^e[t];t.P[0].update(n[0]),t.P[1].update(n[1]),t.V=new r(t.P[0])}reset(){const e=this;e.V=new e.W(e.P[0]),e.Z=!1}update(e){this.Z=!0,this.V.update(e)}digest(){const e=this,t=e.V.O(),r=new e.W(e.P[1]).update(t).O();return e.reset(),r}encrypt(e){if(this.Z)throw new u("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},Be=typeof z!=ne&&typeof z.getRandomValues==se,He="Invalid password",je="Invalid signature",qe=je,Ke="zipjs-abort-check-password",Ye="Crypto API not supported";function Ge(e){if(Be)return z.getRandomValues(e);throw new u(Ye)}const Xe=16,Je={name:"PBKDF2"},Qe=r.assign({hash:{name:"HMAC"}},Je),$e=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Je),et=["deriveBits"],tt=[8,12,16],rt=[16,24,32],nt=10,st=[0,0,0,0],at=typeof z!=ne,it=at&&z.subtle,ot=at&&typeof it!=ne,ct=Pe.bytes,lt=class{constructor(e){const t=this;t.B=[[[],[],[],[],[]],[[],[],[],[],[]]],t.B[0][0][0]||t.H();const r=t.B[0][4],n=t.B[1],s=e.length;let a,i,o,c=1;if(4!==s&&6!==s&&8!==s)throw new u("invalid aes key size");for(t.A=[i=e.slice(0),o=[]],a=s;4*s+28>a;a++){let e=i[a-1];(a%s===0||8===s&&a%s===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%s===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-s]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:n[0][r[t>>>24]]^n[1][r[t>>16&255]]^n[2][r[t>>8&255]]^n[3][r[255&t]]}}encrypt(e){return this.j(e,0)}decrypt(e){return this.j(e,1)}H(){const e=this.B[0],t=this.B[1],r=e[4],n=t[4],s=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(s[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,n[a]=d,l=s[c=s[o=s[d]]];let w=16843009*l^65537*c^257*o^16843008*d,u=257*s[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=u=u<<24^u>>>8,t[r][a]=w=w<<24^w>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}j(e,t){if(4!==e.length)throw new u("invalid aes block size");const r=this.A[t],n=r.length/4-2,s=[0,0,0,0],a=this.B[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let w,f,p,h=e[0]^r[0],m=e[t?3:1]^r[1],y=e[2]^r[2],g=e[t?1:3]^r[3],S=4;for(let e=0;n>e;e++)w=i[h>>>24]^o[m>>16&255]^c[y>>8&255]^l[255&g]^r[S],f=i[m>>>24]^o[y>>16&255]^c[g>>8&255]^l[255&h]^r[S+1],p=i[y>>>24]^o[g>>16&255]^c[h>>8&255]^l[255&m]^r[S+2],g=i[g>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&y]^r[S+3],S+=4,h=w,m=f,y=p;for(let e=0;4>e;e++)s[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[y>>8&255]<<8^d[255&g]^r[S++],w=h,h=m,m=y,y=g,g=w;return s}},dt=class{constructor(e,t){this.K=e,this.Y=t,this.G=t}reset(){this.G=this.Y}update(e){return this.X(this.K,e,this.G)}J(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}return e}$(e){0===(e[0]=this.J(e[0]))&&(e[1]=this.J(e[1]))}X(e,t,r){let n;if(!(n=t.length))return[];const s=We.bitLength(t);for(let s=0;n>s;s+=4){this.$(r);const n=e.encrypt(r);t[s]^=n[0],t[s+1]^=n[1],t[s+2]^=n[2],t[s+3]^=n[3]}return We.m(t,s)}},wt=Ze.N;let ut=at&&ot&&typeof it.importKey==se,ft=at&&ot&&typeof it.deriveBits==se;class pt extends E{constructor({password:e,rawPassword:t,encryptionStrength:r,checkPasswordOnly:n,checkAuthenticationCode:s=!0}){super({start(){mt(this,e,t,r)},async transform(e,t){const r=this,{password:s,strength:a,ee:i,ready:o}=r;s?(await(async(e,t,r,n)=>{const s=await gt(e,t,r,bt(n,0,tt[t])),a=bt(n,tt[t]);if(s[0]!=a[0]||s[1]!=a[1])throw new u(He)})(r,a,s,bt(e,0,tt[a]+2)),e=bt(e,tt[a]+2),n?t.error(new u(Ke)):i()):await o;const c=new f(e.length-nt-(e.length-nt)%Xe);t.enqueue(yt(r,e,c,0,nt,!0))},async flush(e){const{te:t,re:r,pending:n,ready:a}=this;if(r&&t){await a;const i=bt(n,0,n.length-nt),o=bt(n,n.length-nt);let c=ae;if(i.length){const e=zt(ct,i);r.update(e);const n=t.update(e);c=xt(ct,n)}const l=bt(xt(ct,r.digest()),0,nt);let d=n.length<nt?1:0;for(let e=0;nt>e;e++)d|=l[e]^o[e];if(d&&s)throw new u(qe);e.enqueue(c)}}})}}class ht extends E{constructor({password:e,rawPassword:t,encryptionStrength:r}){super({start(){mt(this,e,t,r)},async transform(e,t){const r=this,{password:n,strength:s,ee:a,ready:i}=r;let o=ae;n?(o=await(async(e,t,r)=>{const n=Ge(new f(tt[t]));return _e(n,await gt(e,t,r,n))})(r,s,n),a()):await i;const c=new f(o.length+e.length-e.length%Xe);c.set(o,0),t.enqueue(yt(r,e,c,o.length,0))},async flush(e){const{te:t,re:r,pending:n,ready:s}=this;if(r&&t){await s;let a=ae;if(n.length){const e=t.update(zt(ct,n));r.update(e),a=xt(ct,e)}const i=xt(ct,r.digest()).slice(0,nt);e.enqueue(_e(a,i))}}})}}function mt(e,t,n,s){r.assign(e,{ready:new g(t=>e.ee=t),password:St(t,n),strength:s-1,pending:ae})}function yt(e,t,r,n,s,a){const{te:i,re:o,pending:c}=e;c.length&&(t=_e(c,t));const l=t.length-s;let d;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,n+(l-l%Xe)),d=0;l-Xe>=d;d+=Xe){const e=zt(ct,bt(t,d,d+Xe));a&&o.update(e);const s=i.update(e);a||o.update(s),r.set(xt(ct,s),d+n)}return e.pending=bt(t,d),r}async function gt(e,n,s,a){e.password=null;const i=await(async(e,t,r,n,s)=>{if(!ut)return Ze.importKey(t);try{return await it.importKey("raw",t,r,!1,s)}catch{return ut=!1,Ze.importKey(t)}})(0,s,Qe,0,et),o=await(async(e,t,r)=>{if(!ft)return Ze.L(t,e.salt,$e.iterations,r);try{return await it.deriveBits(e,t,r)}catch{return ft=!1,Ze.L(t,e.salt,$e.iterations,r)}})(r.assign({salt:a},$e),i,8*(2*rt[n]+2)),c=new f(o),l=zt(ct,bt(c,0,rt[n])),d=zt(ct,bt(c,rt[n],2*rt[n])),w=bt(c,2*rt[n]);return r.assign(e,{keys:{key:l,ne:d,passwordVerification:w},te:new dt(new lt(l),t.from(st)),re:new wt(d)}),w}function St(e,t){return t===te?Me(e):t}function bt(e,t,r){return e.subarray(t,r)}function xt(e,t){return e.F(t)}function zt(e,t){return e.R(t)}class Ft extends E{constructor({password:e,rawPassword:t,passwordVerification:r,checkPasswordOnly:n}){super({start(){Rt(this,e,t,r)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=Dt(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t[11]^r.passwordVerification))throw new u(He);e=e.subarray(12)}n?t.error(new u(Ke)):t.enqueue(Dt(r,e))}})}}class Et extends E{constructor({password:e,rawPassword:t,passwordVerification:r}){super({start(){Rt(this,e,t,r)},transform(e,t){const r=this;let n,s;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=Ge(new f(12));t[11]=r.passwordVerification,n=new f(e.length+t.length),n.set(kt(r,t),0),s=12}else n=new f(e.length),s=0;n.set(kt(r,e),s),t.enqueue(n)}})}}function Rt(e,t,n,s){r.assign(e,{password:t,rawPassword:n,passwordVerification:s}),((e,t,n)=>{const s=[305419896,591751049,878082192];if(r.assign(e,{keys:s,se:new Ie(s[0]),ae:new Ie(s[2])}),n)for(let t=0;t<n.length;t++)At(e,n[t]);else for(let r=0;r<t.length;r++)At(e,t.charCodeAt(r))})(e,t,n)}function Dt(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=Tt(e)^t[n],At(e,r[n]);return r}function kt(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=Tt(e)^t[n],At(e,t[n]);return r}function At(e,t){let[,r]=e.keys;e.se.append([t]);const n=~e.se.get();r=Ct(i.imul(Ct(r+vt(n)),134775813)+1),e.ae.append([r>>>24]);const s=~e.ae.get();e.keys=[n,r,s]}function Tt(e){const t=2|e.keys[2];return vt(i.imul(t,1^t)>>>8)}function vt(e){return 255&e}function Ct(e){return 4294967295&e}function Ut(e){if(e instanceof R)return e;const t=e.getReader();return new R({async pull(e){const{value:r,done:n}=await t.read();n?e.close():e.enqueue(r)},cancel:e=>t.cancel(e)})}function It(e){if(e instanceof D)return e;const t=e.getWriter();return new D({write:e=>t.write(e),close:()=>t.close(),abort:e=>t.abort(e)})}const Ot="Invalid uncompressed size",Mt="Invalid compressed data",_t=je,Nt="deflate-raw",Lt="gzip",Wt=[31,139,8];class Pt extends E{constructor(e,{chunkSize:t,CompressionStreamFallback:r,CompressionStream:n}){super({});const{compressed:s,encrypted:a,useCompressionStream:i,zipCrypto:o,computeCrc32:c,level:l,deflate64:d,format:w,compressionMethod:u}=e,f=this;let p,h,y,g=super.readable;const S=w&&ze(w),b=c&&s&&!d&&!S&&(!a||o)&&!(!i||!n);if(a&&!o||!c||b||(p=new Oe,g=Gt(g,p)),s)if(S)g=Xt(g,Kt(S.CompressionStream,w,{level:l,chunkSize:t,compressionMethod:u}));else if(b)y=new Vt,g=Xt(g,new n(Lt)),g=Gt(g,y);else try{g=Yt(g,i,{level:l,chunkSize:t},n,r)}catch(e){let t;try{t=new n(Lt)}catch{throw e}g=Xt(g,t),g=Gt(g,new Vt)}a&&(o?g=Gt(g,new Et(e)):(h=new ht(e),g=Gt(g,h))),qt(f,g,()=>{a&&!o||!c||(f.crc32=b?y.crc32:new m(p.value.buffer).getUint32(0))})}}class Vt extends E{constructor(){let e,t=10,r=new f(0);super({transform(e,n){if(t){const r=i.min(t,e.length);if(t-=r,!(e=e.subarray(r)).length)return}const s=r.length+e.length;if(8>=s)return void(r=_e(r,e));const a=s-8,o=i.min(a,r.length);n.enqueue(_e(r.subarray(0,o),e.subarray(0,a-o))),r=_e(r.subarray(o),e.subarray(a-o))},flush(){const t=Le(r);e.crc32=t.getUint32(0,!0),e.uncompressedSize=t.getUint32(4,!0)}}),e=this}}class Zt extends E{constructor(e,{chunkSize:t,DecompressionStreamFallback:r,DecompressionStream:n}){super({});const{zipCrypto:s,encrypted:a,checkCrc32:i,crc32:o,compressed:c,useCompressionStream:l,deflate64:d,format:w,compressionMethod:p,rawBitFlag:h,outputSize:y}=e;let S,b,x=super.readable;if(a&&(s?x=Gt(x,new Ft(e)):(b=new pt(e),x=Gt(x,b))),c){const e=w&&ze(w);if(e)x=Xt(x,Kt(e.DecompressionStream,w,{chunkSize:t,compressionMethod:p,rawBitFlag:h,uncompressedSize:y}));else try{x=Yt(x,l,{chunkSize:t,deflate64:d},n,r)}catch(e){if(d||y===te)throw e;let t;try{t=new n(Lt)}catch{throw e}x=((e,t,r)=>{const n=new Ie;let s,a,i,o=0,c=!1;const l=new g((e,t)=>{a=e,i=t});l.catch(()=>{}),r||a();const d=new E({start(e){const t=new f(10);t.set(Wt),e.enqueue(t)},transform(e,t){t.enqueue(e)},async flush(e){c=!0,p();try{await l}finally{h()}const t=new f(8),s=Le(t);s.setUint32(0,n.get(),!0),s.setUint32(4,r,!0),e.enqueue(t)},cancel(e){i(e)}}),w=new E({transform(e,t){n.append(e),o+=e.length,r>o?c&&p():a(),t.enqueue(e)},cancel(e){i(e)}});return e=Gt(e,d),Gt(e=Xt(e,t),w);function p(){h(),s=setTimeout(()=>i(new u(Ot)),5e3)}function h(){clearTimeout(s)}})(x,t,y)}x=(e=>{const t=e.getReader();return new R({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new u(Mt);throw t.cause=e,t}const{value:n,done:s}=r;s?e.close():e.enqueue(n)},cancel:e=>t.cancel(e)})})(x)}i&&(S=new Oe,x=Gt(x,S)),qt(this,x,()=>{if(i){const e=new m(S.value.buffer);if(o!=e.getUint32(0,!1))throw new u(_t)}})}}const Bt=new c;function Ht(e,t){if(!e)return!1;let r=Bt.get(e);r||(r=new c,Bt.set(e,r));let n=r.get(t);if(n===te){try{new e(t),n=!0}catch{n=!1}r.set(t,n)}return n}function jt(e){return Ht(e,Nt)}function qt(e,t,n){t=Gt(t,new E({flush:n})),r.defineProperty(e,"readable",{get:()=>t})}function Kt(e,t,r){if(!e)throw new u("Compression method not supported");return new e(t,r)}function Yt(e,t,r,n,s){const a=t&&n?n:s||n,i=r.deflate64?"deflate64-raw":Nt;let o;try{o=new a(i,r)}catch(e){if(!t||!s||a==s)throw e;o=new s(i,r)}return Xt(e,o)}function Gt(e,t){return Ut(e).pipeThrough(t)}function Xt(e,t){const r=t.writable.getWriter(),n=e.getReader();return(async()=>{try{for(;;){await r.ready;const e=await n.read();if(e.done){await r.close();break}await r.write(e.value)}}catch(e){await(async(e,t)=>{try{await e.abort(t)}catch{}})(r,e),await(async(e,t)=>{try{await e.cancel(t)}catch{}})(n,e)}})(),t.readable}const Jt="data",Qt="deflate",$t="inflate";class er extends E{constructor(e,t){super({});const n=this,{codecType:s}=e;let a;s.startsWith(Qt)?a=Pt:s.startsWith($t)&&(a=Zt),n.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new E({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(n,{inputSize:i})}}),d=new E({transform(t,r){if(t&&t.length&&(r.enqueue(t),n.outputSize+=t.length,e.outputSize!==te&&n.outputSize>e.outputSize))throw new u(Ot)},flush(){const{crc32:e}=o;r.assign(n,{crc32:e,inputSize:i})}});r.defineProperty(n,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class tr extends E{constructor(e){const t=[];let r=0;function n(){const n=new f(e);let s=0;for(;e>s;){const r=t[0],a=e-s;r.length>a?(n.set(r.subarray(0,a),s),t[0]=r.subarray(a),s+=a):(n.set(r,s),s+=r.length,t.shift())}return r-=e,n}s.isFinite(e)&&e>=1||(e=65536),super({transform(s,a){for(t.push(s),r+=s.length;r>e;)a.enqueue(n())},flush(e){r&&e.enqueue(((e,t)=>{const r=new f(t);let n=0;for(const t of e)r.set(t,n),n+=t.length;return r})(t,r))}})}}const rr={type:"module"},nr="error",sr="Worker startup timeout";let ar,ir,or,cr,lr,dr=!0;try{dr=typeof structuredClone==se&&structuredClone(new DOMException("","AbortError")).code!==te}catch{}class wr{constructor(e,{readable:t,writable:n},{options:s,config:a,ie:i,useWebWorkers:o,transferStreams:c,workerURI:l,createWorker:d},w){const{signal:u}=i;return lr&&(d=te),r.assign(e,{oe:!0,ce:(e.ce||0)+1,readable:t.pipeThrough(new tr(we(a))).pipeThrough(new ur(i),{signal:u}),writable:n,options:r.assign({},s),workerURI:l,createWorker:d,transferStreams:c,terminate:()=>new g(t=>{const{le:r,oe:n}=e;r?(n?e.de=t:(r.terminate(),t()),e.we=null):t()}),ue(){if(e.oe){const{de:t}=e;t&&(e.de=null,e.fe=!0,e.le.terminate(),t()),e.oe=!1,w(e)}}}),ar===te&&(ar=typeof v!=ne),(o&&(ar&&l||d)?hr:pr)(e,a)}}class ur extends E{constructor({onstart:e,onprogress:t,size:r,onend:n}){let s=0;super({async start(){e&&await fr(e,r)},async transform(e,n){s+=e.length,t&&await fr(t,s,r),n.enqueue(e)},async flush(){n&&await fr(n,s)}})}}async function fr(e,...t){try{await e(...t)}catch{}}function pr(e,t){return{run:()=>mr(e,t)}}function hr(e,t){const{baseURI:n,chunkSize:a,workerStartupTimeout:i}=t;let{wasmURI:o}=t;if(!e.we){let c;typeof o==se&&(o=o());try{c=gr(e.workerURI,n,e)}catch{return e.createWorker?lr=!0:ar=!1,pr(e,t)}r.assign(e,{le:c,pe:!1,fe:!1,we:{run:async()=>{try{return await(async(e,t)=>{let n,a;const i=new g((e,t)=>{n=e,a=t});r.assign(e,{reader:null,writer:null,he:n,me:a,result:i});const{readable:o,options:c}=e,{writable:l,closed:d,ye:w}=(e=>{const t=new AbortController,{writable:r,readable:n}=new E,s=n.pipeTo(e,{preventClose:!0,preventAbort:!0,signal:t.signal});return s.catch(()=>{}),{writable:r,closed:s,ye:()=>t.abort()}})(e.writable);let f;try{f=xr({type:"start",options:c,config:t,readable:o,writable:l},e)}catch(t){w();try{await d}catch{}throw e.ue(),t}f||r.assign(e,{reader:o.getReader(),writer:l.getWriter()});const{workerStartupTimeout:p}=t;e.pe||!s.isFinite(p)||0>p||(e.ge=setTimeout(()=>(e=>{if(e.ge=null,e.pe)return;const{me:t,writer:r}=e;if(yr(e),e.le=null,t){const e=new u(sr);e.Se=!0,t(e),r&&r.releaseLock()}})(e),p));try{const e=await i;return await h(),await d,e}catch(e){await h(),w();try{await d}catch{}throw e}async function h(){if(!f&&!l.locked)try{await l.getWriter().close()}catch{}}})(e,{chunkSize:a,wasmURI:o,baseURI:n,workerStartupTimeout:i})}catch(r){if(r&&r.Se){e.createWorker?lr=!0:ar=!1;const{reader:r}=e;return r&&r.releaseLock(),e.reader=null,e.writer=null,mr(e,t)}throw r}}}})}return e.we}async function mr({options:e,readable:t,writable:r,ue:n},s){let a;try{if(e.compressed&&!e.format){const t=e.codecType.startsWith(Qt),r=t?s.CompressionStreamFallback:s.DecompressionStreamFallback,n=t?s.CompressionStream:s.DecompressionStream;if(e.useCompressionStream){if(r&&r.be&&!jt(n))try{await void 0}catch{}}else try{await void 0}catch{r&&!r.be||(e.useCompressionStream=!0)}}a=new er(e,s),await t.pipeThrough(a).pipeThrough(new tr(we(s))).pipeTo(r,{preventClose:!0,preventAbort:!0});const{crc32:n,inputSize:i,outputSize:o}=a;return{crc32:n,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{n()}}function yr(e){const{le:t}=e;if(t)try{t.terminate()}catch{}e.we=null}function gr(e,t,n,s,a=!0){const{createWorker:i}=n;let o,c,l;if(i)o=i();else if(or===te||ir!==e){const r=typeof e==se;c=r?e(a):e;const i=c.startsWith("data:"),d=c.startsWith("blob:");if(i||d){s===te&&(s=!1),s&&(l=rr);try{o=new v(c,l)}catch(a){if(d)try{w.revokeObjectURL(c)}catch{}if(r&&d)return gr(e,t,n,s,!1);if(s)throw a;return gr(e,t,n,!0,!1)}}else{s===te&&(s=!0),s&&(l=rr);try{c=new w(c,t)}catch{}try{o=new v(c,l)}catch(r){if(s)throw r;return gr(e,t,n,!1,a)}}ir=e,or=c,cr=l}else o=new v(or,cr);return o.addEventListener("message",e=>{n.pe=!0,Sr(n),(async({data:e},t)=>{const{type:n,value:s,messageId:a,result:i,error:o}=e,{reader:c,writer:l,he:d,me:w,ue:p,ce:h}=t,m=()=>t.ce!=h;try{if(o){const{message:e,stack:t,code:n,name:s,outputSize:a,cause:i}=o,c=new u(e);r.assign(c,{stack:t,code:n,name:s,outputSize:a}),i&&(c.cause=r.assign(new u(i.message),{name:i.name})),y(c)}else{if("pull"==n){const{value:e,done:r}=await c.read();m()||xr({type:Jt,value:e,done:r,messageId:a},t)}n==Jt&&(await l.ready,await l.write(new f(s)),m()||xr({type:"ack",messageId:a},t)),"close"==n&&y(null,i)}}catch(o){m()||(yr(t),y(o))}function y(e,t){m()||(e?w(e):d(t),l&&l.releaseLock(),p())}})(e,n)}),o.addEventListener(nr,e=>br(e,n)),o.addEventListener("messageerror",e=>br(e,n)),o}function Sr(e){const{ge:t}=e;t&&(clearTimeout(t),e.ge=null)}function br(e,t){e.preventDefault&&e.preventDefault(),Sr(t);const{pe:n,me:s,writer:a,ue:i}=t;if(yr(t),n||(t.le=null),s){let t=e.error||new u(e.message||nr);n||(t=r.assign(new u(t.message||nr),{Se:!0})),s(t),a&&a.releaseLock(),n&&i()}}function xr(e,{le:t,writer:r,transferStreams:n,pe:s}){try{const{value:r,readable:a,writable:i}=e,o=[];if(r&&(e.value=Ne(r),o.push(e.value.buffer)),n&&dr&&s?(a&&o.push(a),i&&o.push(i)):e.readable=e.writable=null,o.length)try{return t.postMessage(e,o),!0}catch{dr=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let zr=[];const Fr=[];let Er,Rr,Dr=0;async function kr(e,t){const{options:r,config:n}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,checkCrc32:l,computeCrc32:d,encrypted:u,format:f,codecURI:p}=r,{workerURI:h,createWorker:m,maxWorkers:y}=n;f&&(p&&(r.codecURI=((e,t)=>{try{return new w(e,t).toString()}catch{return e}})(p,n.baseURI)),await(async(e,t)=>{!be.has(e)&&t&&Fe(e,await(import(/* webpackIgnore: true */ /* @vite-ignore */t)))})(f,r.codecURI)),t.transferStreams=a||a===te&&n.transferStreams;const S=!(c||l||d||u),b=f===te||!!r.codecURI;return t.useWebWorkers=!S&&b&&(i||i===te&&n.useWebWorkers),t.workerURI=t.useWebWorkers&&h?h:te,t.createWorker=t.useWebWorkers&&m?m:te,r.useCompressionStream=o||o===te&&n.useCompressionStream,(await(async()=>{const r=zr.find(e=>!e.oe);if(r)return Ur(r),new wr(r,e,t,x);if(zr.length<y){const r={xe:Dr};return Dr++,zr.push(r),new wr(r,e,t,x)}return new g(r=>{Fr.push({resolve:r,stream:e,ze:t}),Rr=n.workerStarvationTimeout,Ar()})})()).run();function x(e){if(Tr(),Fr.length){const[{resolve:t,stream:r,ze:n}]=Fr.splice(0,1);t(new wr(e,r,n,x)),Ar()}else e.le?(Ur(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:n}=r;s.isFinite(n)&&n>=0&&(e.fe?e.fe=!1:e.Fe=setTimeout(async()=>{zr=zr.filter(t=>t!=e);try{await e.terminate()}catch{}},n))})(e,t)):zr=zr.filter(t=>t!=e)}}function Ar(){!Er&&Fr.length&&s.isFinite(Rr)&&Rr>=0&&(Er=setTimeout(vr,Rr))}function Tr(){Er&&(clearTimeout(Er),Er=null)}function vr(){if(Er=null,Fr.length){const[{resolve:e,stream:t,ze:n}]=Fr.splice(0,1),s=r.assign({},n,{useWebWorkers:!1,workerURI:te,createWorker:te});e(new wr({},t,s,Cr)),Ar()}}function Cr(){Tr(),Ar()}function Ur(e){const{Fe:t}=e;t&&(clearTimeout(t),e.Fe=null)}const Ir="HTTP error ",Or="HTTP Range not supported",Mr="HTTP resource changed",_r="Writer iterator completed too soon",Nr="Writer not initialized",Lr="Content-Range",Wr="Range",Pr="GET",Vr="bytes",Zr=16777216,Br="writable",Hr=Symbol();class jr{constructor(){this.size=0}init(){this.initialized=!0}}class qr extends jr{get readable(){return this.createReadable()}createReadable({offset:e=0,size:t,chunkSize:r=we(de())}={}){const n=this;let s=0;return new R({async pull(a){const o=t===te?r:i.min(r,t-s),c=await zn(n,e+s,o);a.enqueue(c),s+r>t||t===te&&!c.length&&o?a.close():s+=r}})}}class Kr extends jr{constructor(){super();const e=this,t=new D({write(t){if(!e.initialized)throw new u(Nr);return e.writeUint8Array(Ne(t))}});r.defineProperty(e,Br,{get:()=>t})}writeUint8Array(){}}let Yr,Gr;class Xr extends qr{constructor(e){super(),r.assign(this,{blob:e,size:e.size}),Gr||(Gr=(async()=>{try{const e=new y([new f(3)]).slice(1,2).stream().getReader();let t=0,r=await e.read();for(;!r.done;)t+=r.value.length,r=await e.read();Yr=1==t}catch{Yr=!1}})())}createReadable(e){const{blob:t,size:r}=this,{offset:n=0,size:s=r-n}=e||{};return n||r>s?Yr?Ut(t.slice(n,n+s).stream()):super.createReadable(e):Ut(t.stream())}async readUint8Array(e,t){const r=this,n=e+t,s=e||n<r.size?r.blob.slice(e,n):r.blob;let a=await s.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,n)),new f(a)}}class Jr extends jr{constructor(e){super();const t=this,n=new E;if(r.defineProperty(t,Br,{get:()=>n.writable}),typeof y.prototype.stream!=se||new y([]).stream()instanceof R){const r=[];e&&r.push(["Content-Type",e]),t.blob=new d(n.readable,{headers:r}).blob()}else{const r=[];t.blob=n.readable.pipeTo(new D({write(e){r.push(e)}})).then(()=>new y(r,{type:e}))}t.blob.catch(()=>{})}getData(){return this.blob}}class Qr extends qr{constructor(e,t){super(),en(this,e,t)}async init(){await tn(this,pn,dn),super.init()}createReadable(e){const t=this,{useRangeHeader:r,forceRangeRequests:n,size:a}=t;if((r||n)&&a!==te){const{offset:r=0,size:n=a-r}=e||{};if(n>0&&a>r)return((e,t,r)=>{let n,a=t,o=0,c=r;return new R({start:()=>l(),async pull(e){n||await l();const{value:t,done:r}=await n.read();if(r)throw new u(Or);const s=t.length>o?t.subarray(0,o):t;o-=s.length,c-=s.length,s.length&&e.enqueue(s),o||(await(async()=>{const e=n;n=te,await e.cancel()})(),c||e.close())},cancel:e=>n&&n.cancel(e)});async function l(){const t=i.min(e.maximumRangeSize,c),r=await pn(Pr,e,cn(e,a,t));if(206!=r.status)throw new u(Or);const l=r.headers.get(Lr);if(l){const e=s(l.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=a)throw new u(Or)}on(e,r),an(e,r),a+=t,o=t,n=r.body.getReader()}})(t,r,i.min(n,a-r))}return super.createReadable(e)}readUint8Array(e,t){return rn(this,e,t,pn,dn)}}class $r extends qr{constructor(e,t){super(),en(this,e,t)}async init(){await tn(this,hn,wn),super.init()}readUint8Array(e,t){return rn(this,e,t,hn,wn)}}function en(e,t,n){const{preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,checkResourceChanges:c=!0,maximumRangeSize:l=Zr,fetch:d}=n;delete(n=r.assign({},n)).preventHeadRequest,delete n.useRangeHeader,delete n.forceRangeRequests,delete n.combineSizeEocd,delete n.checkResourceChanges,delete n.maximumRangeSize,delete n.useXHR,delete n.fetch,r.assign(e,{url:t,options:n,preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,checkResourceChanges:c,maximumRangeSize:l,fetch:d})}async function tn(e,t,r){const{url:n,preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=e;if((e=>{const{baseURI:t}=de(),{protocol:r}=new w(e,t);return"http:"==r||"https:"==r})(n)&&(a||i)&&(void 0===s||s)){const n=await t(Pr,e,cn(e,o?-22:void 0)),s=n.headers.get("Accept-Ranges");if(!(i||s&&s.toLowerCase()==Vr))throw new u(Or);{if(o){const t=new f(await n.arrayBuffer());206==n.status&&t.length==B&&(e.Ee=t)}an(e,n);const s=nn(n);s===te?await fn(e,t,r):e.size=s}}else await fn(e,t,r)}async function rn(e,t,r,n,a){const{useRangeHeader:i,forceRangeRequests:o,Ee:c,size:l,options:d}=e;if(i||o){if(c&&t==l-B&&r==B)return c;if(l>t&&0!==r){t+r>l&&(r=l-t);const a=await n(Pr,e,cn(e,t,r));if(206!=a.status)throw new u(Or);const i=a.headers.get(Lr);if(i){const e=s(i.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=t)throw new u(Or)}on(e,a),an(e,a);const o=new f(await a.arrayBuffer());if(o.length!=r)throw new u(Or);return o}return ae}{const{data:n}=e;return n||await a(e,d),e.data.subarray(t,t+r)}}function nn(e){const t=e.headers.get(Lr);if(t){const e=t.trim().split(/\s*\/\s*/)[1];if(e&&"*"!=e){const t=s(e);if(!s.isNaN(t))return t}}}function sn({headers:e}){return{Re:e.get("Etag")||te,lastModified:e.get("Last-Modified")||te}}function an(e,t){const{checkResourceChanges:r,De:n}=e;r&&!n&&206==t.status&&(e.De=sn(t))}function on(e,t){const{checkResourceChanges:n,De:s,size:a}=e;if(n){const e=nn(t);if(e!==te&&a!==te&&e!=a)throw new u(Mr);if(s){const e=sn(t);if(r.entries(s).some(([t,r])=>r!==te&&e[t]!==te&&r!=e[t]))throw new u(Mr)}}}function cn(e,t=0,n=1){return r.assign({},ln(e),{[Wr]:Vr+"="+(0>t?t:t+"-"+(t+n-1))})}function ln({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function dn(e){await un(e,pn)}async function wn(e){await un(e,hn)}async function un(e,t){const r=await t(Pr,e,ln(e));e.data=new f(await r.arrayBuffer()),e.size=e.data.length}async function fn(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const n=await t("HEAD",e,ln(e)),a=n.headers.get("Content-Length");a&&!n.headers.get("Content-Encoding")?e.size=s(a):await r(e,e.options)}}async function pn(e,{fetch:t=fetch,options:n,url:s},a){const i=await t(s,r.assign({},n,{method:e,headers:a}));if(400>i.status)return i;throw 416==i.status?new u(Or):new u(Ir+(i.statusText||i.status))}function hn(e,{url:t},n){return new g((s,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),s({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new u(Or):new u(Ir+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new u("Network error")),!1),i.open(e,t),n)for(const e of r.entries(n))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class mn extends qr{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new $r(e,t):new Qr(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}createReadable(e){return this.reader.createReadable(e)}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class yn extends qr{constructor(e){super(),this.ke=e}async init(){const e=this,{ke:t}=e;e.Ae=0,await g.all(t.map(e=>xn(e))),e.Te=t.map(t=>{const r=e.size;return e.size+=t.size,r}),super.init()}ve(e){const{Te:t,size:r}=this,n=t[e];return n===te?r:n}async readUint8Array(e,t){const r=this,{ke:n}=this;let s,a=0,o=e;for(;n[a]&&o>=n[a].size;)o-=n[a].size,a++;const c=n[a];if(c){const n=c.size;if(o+t>n){const a=n-o;s=_e(await zn(c,o,a),await r.readUint8Array(e+a,t-a))}else s=await zn(c,o,t)}else s=ae;return r.Ae=i.max(a,r.Ae),s}}class gn extends jr{constructor(e,t=4294967295){super();const n=this;let s,a,i;r.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new D({async write(t){if(t===Hr)return void(i&&await l());const{availableSize:r}=n;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),t.length>r&&await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new u(_r);s=r,s.size=0,s.maxSize&&(n.maxSize=s.maxSize),n.availableSize=n.maxSize,await xn(s),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){i&&(await i.ready,await d())},async abort(e){i&&await i.abort(e)}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),s.size+=t,n.availableSize-=t)}async function l(){await d(),n.diskOffset+=s.size,n.diskNumber++,i=null,n.availableSize=n.maxSize}async function d(){await i.close()}r.defineProperty(n,Br,{get:()=>o})}async closeDisk(){const e=this.writable.getWriter();try{await e.ready,await e.write(Hr)}finally{e.releaseLock()}}}class Sn{constructor(e){return t.isArray(e)&&(e=new yn(e)),(e instanceof R||typeof e.getReader==se)&&(e={readable:Ut(e)}),e}}class bn{constructor(e){return e.writable===te&&typeof e.next==se&&(e=new gn(e)),(e instanceof D||typeof e.getWriter==se)&&(e={writable:It(e)}),e.size===te&&(e.size=0),e}}async function xn(e,t){if(!e.init||e.initialized)return g.resolve();await e.init(t)}function zn(e,t,r){return e.readUint8Array(t,r)}const Fn="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function En(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=Fn[e[r]];return t}})(e):new b(t,{ignoreBOM:!0}).decode(e)}const Rn="filename",Dn="rawFilename",kn="comment",An="rawComment",Tn="uncompressedSize",vn="compressedSize",Cn="offset",Un="diskNumberStart",In="lastModDate",On="rawLastModDate",Mn="lastAccessDate",_n="rawLastAccessDate",Nn="creationDate",Ln="rawCreationDate",Wn="internalFileAttributes",Pn="externalFileAttributes",Vn="msdosAttributesRaw",Zn="msdosAttributes",Bn="msDosCompatible",Hn="zip64",jn="encrypted",qn="version",Kn="versionMadeBy",Yn="zipCrypto",Gn="directory",Xn="executable",Jn="compressionMethod",Qn="signature",$n="extraField",es="unixMode",ts="setuid",rs="setgid",ns="sticky",ss=[Rn,Dn,Tn,vn,In,On,kn,An,Mn,_n,Nn,Ln,Cn,Un,Wn,Pn,Vn,Zn,Bn,Hn,jn,qn,Kn,Yn,Gn,Xn,Jn,Qn,"crc32",$n,"extraFieldUnix","extraFieldInfoZip","extraFieldUnixType1","extraFieldPkwareUnix","uid","gid",es,ts,rs,ns,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp","extraFieldUSDZ"];class as{constructor(e){ss.forEach(t=>this[t]=e[t])}}const is="password",os="rawPassword",cs="passThrough",ls="signal",ds="checkAmbiguity",ws="useWebWorkers",us="useCompressionStream",fs="transferStreams",ps="preventClose",hs="offset",ms="usdz",ys="strictness",gs="strict",Ss="tolerant",bs="File format is not recognized",xs="End of central directory not found",zs="End of Zip64 central directory locator not found",Fs="Central directory header not found",Es="Local file header not found",Rs="Zip64 extra field not found",Ds="File contains encrypted entry",ks="Encryption method not supported",As="Compression method not supported",Ts="Split zip file",vs="Overlapping entry found",Cs="Ambiguous archive",Us="Encrypted central directory is not supported",Is="utf-8",Os="cp437",Ms=[[Tn,U],[vn,U],[Cn,U],[Un,I]],_s={[I]:{Ce:la,bytes:4},[U]:{Ce:da,bytes:8}};class Ns{constructor(e,t={}){r.assign(this,{reader:new Sn(e),options:t,config:de(),Ue:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:a}=t;if(await xn(n),n.size!==te&&n.readUint8Array||(n=new Xr(await new d(n.readable).blob()),await xn(n)),n.size<B)throw new u(bs);const o=Ys(sa(t,e,ys),sa(t,e,ds)),c=o==gs,w=o!=Ss,f=((e,t)=>e!==te?e:t==gs?0:t==Ss?1/0:I)(sa(t,e,"maxAppendedDataSize"),o),{Ie:p,Oe:h}=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,65557),a={count:Gs};let o,c,l=0;for await(const[r,i,d,w,u]of $s(e,s)){const s=ca(r,w+20);if(u+B+s==n){const s=await ta(e,r,i,w,u,n,a);if(s==Qs){if(o||(o=ea(d,w,u)),l++,!t||l>1)break}else s!=Js||c||(c=ea(d,w,u))}}return o||(o=c),o||(o=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,t==1/0?n:65557+t);let a,o;for await(const[t,i,c,l,d]of $s(e,s)){const s=ea(c,l,d);a||(a=s);const w=await ta(e,t,i,l,d,n,r);if(w==Qs)return s;w!=Js||o||(o=s)}return o||a})(e,r,a)),{Ie:o,Oe:l}})(n,w,f);if(!p)throw la(Le(await zn(n,0,4)))==_?new u(Ts):new u(xs);w&&h>1&&na("multiple end of central directory records");const m=Le(p);let y=la(m,12),S=la(m,16);const b=p.offset,x=ca(m,20),z=b+B+x;n.size-z>f&&na("appended data");let F=ca(m,4);const R=n.Ae||0;let D,k,A,T,v=ca(m,6),C=ca(m,10),M=0;const N=S==U||y==U||C==I||v==I;if(S!=U&&v!=I&&(S+=Ks(n,v)),N){const e=p.offset<H?ae:await zn(n,p.offset-H,H),t=Le(e);if(e.length==H&&la(t,0)==Z){S=Ks(n,la(t,4))+da(t,8);let e=await zn(n,S,j),a=Le(e);const o=p.offset-H-j;if((e.length<j||la(a,0)!=V)&&S!=o&&o>=0){const t=S;S=o,S>t&&(M=S-t),e=await zn(n,S,j),a=Le(e)}if(e.length<j||la(a,0)!=V)throw new u(zs);if(k=!0,A=da(a,4)>44,A){const e=i.min(s(da(a,4))-44,n.size-S-j);e>0&&(T=(e=>{const t={rawExtensibleData:e};if(e.length>=28){const n=Le(e),a=ca(n,26);r.assign(t,{compressionMethod:ca(n,0),compressedSize:s(da(n,2)),uncompressedSize:s(da(n,10)),encryptionAlgorithm:ca(n,18),bitLength:ca(n,20),flags:ca(n,22),hashAlgorithm:ca(n,24),hashData:e.subarray(28,28+a)})}return t})(await zn(n,S+j,e)))}F==I?F=la(a,16):c&&F!=la(a,16)&&na("mismatched zip64 end of central directory record"),v==I?v=la(a,20):c&&v!=la(a,20)&&na("mismatched zip64 end of central directory record"),C==I?C=da(a,32):c&&C!=da(a,32)&&na("mismatched zip64 end of central directory record"),y==U?y=da(a,40):c&&y!=da(a,40)&&na("mismatched zip64 end of central directory record"),S=Ks(n,v)+da(a,48)+M}}let P=y;const q=p.offset-(k?76:0);if(S<n.size||(M=n.size-S-y-B,S=n.size-y-B),R!=F)throw new u(Ts);if(0>S)throw new u(bs);let K=0,Q=await zn(n,S,y),$=Le(Q);if(y){if(4>Q.length)throw new u(bs);const e=q-y;if(S!=e&&v==F){let t=!(la($,K)==W);if(t||0>e||e+4>n.size||(t=la(Le(await zn(n,e,4)),0)==W),t){const t=S;S=e,S>t&&(M+=S-t),Q=await zn(n,S,y),$=Le(Q)}}}const ee=q-S;if(y==ee||0>ee||v!=F||(y=ee,Q=await zn(n,S,y),$=Le(Q)),0>S||S>=n.size)throw new u(bs);t.directoryOffset=S,t.directoryLength=P;const re=sa(t,e,"decryptCentralDirectory");let ne;re&&C&&Q.length>=4&&la($,0)!=W&&(A||Ps($))&&(Q=await re(Q,T),$=Le(Q),P=Q.length,ne=!0),D=S;const se=sa(t,e,"filenameEncoding"),ie=sa(t,e,"commentEncoding"),oe=c?new l:te;let ce;for(let s=0;C>s;s++){const o=new Ws(n,a,t.options);if(K+46>Q.length||la($,K)!=W){if(0==s&&!ne&&(A||Ps($)))throw new u(Us);throw new u(Fs)}Vs(o,$,K+6);const l=!!o.bitFlag.languageEncodingFlag,w=K+46,f=w+o.filenameLength,p=f+o.extraFieldLength,h=ca($,K+4),m=!(h>>8),y=h>>8==3,S=Q.subarray(w,f),b=ca($,K+32),x=p+b,z=Q.subarray(p,x),F=l,R=l,k=la($,K+38),T=k&O,v={readOnly:!!(1&T),hidden:!!(2&T),system:!!(4&T),directory:!!(16&T),archive:!!(32&T)},U=la($,K+42),_=sa(t,e,"decodeText")||En,N=F?Is:se||Os,L=R?Is:ie||Os;let P=_(S,N);P===te&&(P=En(S,N));let V=_(z,L);V===te&&(V=En(z,L)),r.assign(o,{index:s,versionMadeBy:h,msDosCompatible:m,compressedSize:0,uncompressedSize:0,Me:b,offset:U,diskNumberStart:ca($,K+34),internalFileAttributes:ca($,K+36),externalFileAttributes:k,msdosAttributesRaw:T,msdosAttributes:v,rawFilename:S,filenameUTF8:F,commentUTF8:R,rawExtraField:Q.subarray(f,p),rawComment:z,filename:P,comment:V}),Zs(o,o,$,K+6),o.offset+=M,D=i.min(Ks(n,o.diskNumberStart)+o.offset,D),c&&(oe.has(o.filename)&&(ce=!0),oe.add(o.filename));const Z=o.externalFileAttributes>>16&I;o.unixMode===te&&16877&Z&&(o.unixMode=Z);const B=!!(o.unixMode&G),H=!!(o.unixMode&X),j=!!(512&o.unixMode),q=o.unixMode!==te?!!(73&o.unixMode):y&&!!(73&Z),ee=o.unixMode!==te&&(61440&o.unixMode)==Y,re=(61440&Z)==Y;r.assign(o,{setuid:B,setgid:H,sticky:j,unixExternalUpper:Z,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:q,directory:ee||re||m&&v.directory||o.filename.endsWith(J)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ae=new as(o);ae.getData=(e,r)=>o.getData(e,ae,t.Ue,r),ae.arrayBuffer=async e=>{const r=new E,[n]=await g.all([new d(r.readable).arrayBuffer(),o.getData(r,ae,t.Ue,e)]);return n},K=x;const{onprogress:le}=e;if(le)try{await le(s+1,C,new as(o))}catch{}yield ae}let le=K;if(K+6<=Q.length&&la($,K)==L){const e=ca($,K+4);K+6+e>Q.length||(t.digitalSignature=Q.subarray(K+6,K+6+e),le=K+6+e)}c&&K!=P&&le!=P&&na("trailing central directory data"),ce&&na("duplicate filename"),c&&(M||C&&D>0)&&na("prepended data");const de=sa(t,e,"extractPrependedData"),we=sa(t,e,"extractAppendedData");return de&&(t.prependedData=D>0?await zn(n,0,D):ae),t.comment=x?await zn(n,b+B,x):ae,we&&(t.appendedData=z<n.size?await zn(n,z,n.size-z):ae),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class Ls{constructor(e={}){const{readable:t,writable:r}=new E,n=new Ns(t,e).getEntriesGenerator();this.readable=new R({async pull(e){const{done:t,value:r}=await n.next();if(t)return e.close();const s={...r,readable:(()=>{const{readable:e,writable:t}=new E;if(r.getData)return(async()=>{try{await r.getData(t)}catch(e){try{await t.abort(e)}catch{}}})(),e})()};delete s.getData,e.enqueue(s)}}),this.writable=r}}class Ws{constructor(e,t,n){r.assign(this,{reader:e,config:t,options:n})}async getData(e,t,r,n={}){const s=this,{reader:a,index:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:w,config:f,bitFlag:p,rawBitFlag:h,crc32:m,rawLastModDate:y,uncompressedSize:g,compressedSize:S}=s,{dataDescriptor:b}=p,x=t.localDirectory={},z=Ks(a,c)+o,F=await zn(a,z,Q),E=Le(F);let R=sa(s,n,is),k=sa(s,n,os);const A=sa(s,n,cs);if(R=R&&R.length&&R,k=k&&k.length&&k,l&&99!=l.originalCompressionMethod)throw new u(As);if(F.length<Q||la(E,0)!=M)throw new u(Es);Vs(x,E,4);const{extraFieldLength:T,filenameLength:v}=x,C=Ys(sa(s,n,ys),sa(s,n,ds))==gs;let U=ae;if(C&&(v||T)){const e=await zn(a,z+Q,v+T);U=e.subarray(0,v),x.rawExtraField=e.subarray(v)}else x.rawExtraField=T?await zn(a,z+Q+v,T):ae;Zs(s,x,E,4,!0),C&&((e,t,r)=>{const{rawFilename:n}=e;(r.length!=n.length||r.some((e,t)=>e!=n[t]))&&na("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&na("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&na("mismatched local file header (compression method)"),t.bitFlag.dataDescriptor||!(t.crc32||t.compressedSize||t.uncompressedSize)||t.crc32==e.crc32&&t.compressedSize==e.compressedSize&&t.uncompressedSize==e.uncompressedSize||na("mismatched local file header (crc32 or sizes)")})(s,x,U);const{lastAccessDate:I,creationDate:_}=x;I&&(t.lastAccessDate=I),_&&(t.creationDate=_);const L=s.encrypted&&x.encrypted&&!A,W=L&&!l;if(A||(t.zipCrypto=W),L&&!(64&~x.rawBitFlag))throw new u(ks);const P=A?te:xe(w);if(0!=w&&8!=w&&9!=w&&!P&&!A)throw new u(As);if(L){if(!W&&(1>l.strength||l.strength>3))throw new u(ks);if(!R&&!k)throw new u(Ds)}const V=z+Q+v+T,Z=S,B=Ut(a.createReadable({offset:V,size:Z})),H=sa(s,n,ls),j=sa(s,n,"checkPasswordOnly");let q=sa(s,n,"checkOverlappingEntry");const K=sa(s,n,"checkOverlappingEntryOnly");K&&(q=!0);const{onstart:Y,onprogress:G,onend:X}=n,J=9==w;let $=sa(s,n,us);J&&($=!1);const ee=sa(s,n,"checkCrc32"),re=(ee===te?sa(s,n,"checkSignature"):ee)&&!A&&(!L||W||l&&1==l.vendorVersion),ne={options:{codecType:$t,password:R,rawPassword:k,zipCrypto:W,encryptionStrength:l&&l.strength,checkCrc32:re,checkAuthenticationCode:sa(s,n,"checkAuthenticationCode"),passwordVerification:W&&(b?y>>>8&O:m>>>24&O),outputSize:A?S:g,crc32:m,compressed:0!=w&&!A,encrypted:L,useWebWorkers:sa(s,n,ws),useCompressionStream:$,transferStreams:sa(s,n,fs),deflate64:J,format:P?P.format:te,codecURI:P?P.codecURI:te,compressionMethod:w,rawBitFlag:h,checkPasswordOnly:j},config:f,ie:{signal:H,size:Z,onstart:Y,onprogress:G,onend:X}};let se;q&&await(async({reader:e,_e:t,index:r,offset:n,crc32:s,compressedSize:a,uncompressedSize:i,Ne:o,dataDescriptor:c,extraFieldZip64:l,Ue:d})=>{let w=0;if(c&&(w=l?20:12),w){const r=await zn(e,o+a,w+4);if(r.length==w+4&&la(Le(r),0)==N){const e=la(Le(r),4);let n,o;l?(n=da(Le(r),8),o=da(Le(r),16)):(n=la(Le(r),8),o=la(Le(r),12)),(t.encrypted&&!t.zipCrypto||e==s)&&n==a&&o==i&&(w+=4)}}const f={start:n,end:o+a+w,_e:t};for(const[e,t]of d)if(e!=r&&f.start<t.end&&t.start<f.end){const e=new u(vs);throw e.Le=t._e,e}d.set(r,f)})({reader:a,_e:t,index:i,offset:z,crc32:m,compressedSize:S,uncompressedSize:g,Ne:V,dataDescriptor:b||x.bitFlag.dataDescriptor,extraFieldZip64:d||x.extraFieldZip64,Ue:r});try{if(!K){j&&(e=new D),e=new bn(e),await xn(e,A?S:g),({writable:se}=e);const{outputSize:t}=await kr({readable:B,writable:se},ne);if(e.size+=t,t!=(A?S:g))throw new u(Ot)}}catch(t){if(t.outputSize!==te&&(e.size+=t.outputSize),!j||t.message!=Ke)throw t}finally{sa(s,n,ps)||!se||se.locked||await se.getWriter().close()}return j||K?te:e.getData?e.getData():se}}function Ps(e){const t=i.min(e.byteLength,1024)-3;for(let r=0;t>r;r++)if(134630224==la(e,r))return!0;return!1}function Vs(e,t,n){const s=e.rawBitFlag=ca(t,n+2),a=!(1&~s),i=la(t,n+6);r.assign(e,{encrypted:a,version:ca(t,n),bitFlag:{level:(6&s)>>1,dataDescriptor:!(8&~s),languageEncodingFlag:(s&K)==K},rawLastModDate:i,lastModDate:aa(i),filenameLength:ca(t,n+22),extraFieldLength:ca(t,n+24)})}function Zs(e,t,n,s,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Le(i);let w=0;try{for(;w<i.length;){const e=ca(d,w),t=ca(d,w+2);l.set(e,{type:e,data:i.slice(w+4,w+4+t)}),w+=4+t}}catch{}const f=ca(n,s+4);r.assign(t,{signature:la(n,s+10),crc32:la(n,s+10),compressedSize:la(n,s+14),uncompressedSize:la(n,s+18)});const p=l.get(1);p&&(((e,t)=>{t.zip64=!0;const r=Le(e.data),n=Ms.filter(([e,r])=>t[e]==r),s=n.reduce((e,[,t])=>e+_s[t].bytes,0);if(e.data.length<s)throw new u(Rs);for(let s=0,a=0;s<n.length;s++){const[i,o]=n[s],c=_s[o];t[i]=e[i]=c.Ce(r,a),a+=c.bytes}})(p,t),t.extraFieldZip64=p);const h=l.get(28789);h&&(Bs(h,Rn,Dn,t,e),t.extraFieldUnicodePath=h);const m=l.get(25461);m&&(Bs(m,kn,An,t,e),t.extraFieldUnicodeComment=m);const y=l.get(39169);y&&y.data.length>=7?(((e,t,n)=>{const s=Le(e.data),a=oa(s,4);r.assign(e,{vendorVersion:oa(s,0),vendorId:oa(s,2),strength:a,originalCompressionMethod:n,compressionMethod:ca(s,5)}),t.compressionMethod=e.compressionMethod,1!=e.vendorVersion&&(t.crc32=te)})(y,t,f),t.extraFieldAES=y):t.compressionMethod=f;const g=l.get(13);g&&(Hs(g,t),t.extraFieldPkwareUnix=g);const S=l.get(22613);S&&(Hs(S,t),t.extraFieldUnixType1=S);const b=l.get(10);b&&(((e,t)=>{const n=Le(e.data);let s,a=4;try{for(;a<e.data.length&&!s;){const t=ca(n,a),r=ca(n,a+2);1==t&&(s=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}if(s&&24==s.length){const n=Le(s),a=n.getBigUint64(0,!0),i=n.getBigUint64(8,!0),o=n.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:ia(a),lastAccessDate:ia(i),creationDate:ia(o)};r.assign(e,c),r.assign(t,c)}})(b,t),t.extraFieldNTFS=b);const x=l.get(30805);if(x)js(x,t,!1),t.extraFieldUnix=x;else{const e=l.get(30837);e&&(js(e,t,!0),t.extraFieldInfoZip=e)}const z=l.get(q);z&&(((e,t,r)=>{if(!e.data.length)return;const n=Le(e.data),s=oa(n,0),a=[],i=[];r?(1&~s||(a.push(In),i.push(On)),2&~s||(a.push(Mn),i.push(_n)),4&~s||(a.push(Nn),i.push(Ln))):5>e.data.length||(a.push(In),i.push(On));let c=1;a.forEach((r,s)=>{if(e.data.length>=c+4){const a=la(n,c);t[r]=e[r]=new o(1e3*(0|a));const l=i[s];e[l]=a}c+=4})})(z,t,a),t.extraFieldExtendedTimestamp=z);const F=l.get(6534);F&&(t.extraFieldUSDZ=F)}function Bs(e,t,n,s,a){if(5>e.data.length)return void(e.valid=!1);const i=Le(e.data),o=new Ie;o.append(a[n]);const c=Le(new f(4));c.setUint32(0,o.get(),!0);const l=la(i,1);r.assign(e,{version:oa(i,0),[t]:En(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==la(c,0)}),e.valid&&(s[t]=e[t],s[t+"UTF8"]=!0)}function Hs(e,t){if(8>e.data.length)return;const n=Le(e.data),s={lastAccessDate:new o(1e3*la(n,0)),lastModDate:new o(1e3*la(n,4))};12>e.data.length||(s.uid=ca(n,8),s.gid=ca(n,10)),r.assign(e,s),r.assign(t,s)}function js(e,t,n){try{const s=Le(e.data);let a,i;if(n){let t=0;const n=oa(s,t++),o=oa(s,t++);a=qs(e.data.subarray(t,t+o)),t+=o;const c=oa(s,t++);i=qs(e.data.subarray(t,t+c)),r.assign(e,{version:n,uid:a,gid:i})}else 4>e.data.length||(a=ca(s,0),i=ca(s,2),r.assign(e,{uid:a,gid:i}));a!==te&&(t.uid=a),i!==te&&(t.gid=i)}catch{}}function qs(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Ks(e,t){return e.ve?e.ve(t):0}function Ys(e,t){return e===te?t?gs:"balanced":e}const Gs=64,Xs=0,Js=1,Qs=2;async function*$s(e,t){const r=e.size-t,n=await zn(e,r,t),s=Le(n);for(let e=n.length-B;e>=0;e--)la(s,e)==P&&(yield[s,r,n,e,r+e])}function ea(e,t,r){return{offset:r,buffer:e.slice(t,t+B).buffer}}async function ta(e,t,r,n,s,a,i){const o=ca(t,n+10),c=la(t,n+12),l=la(t,n+16);if(o==I||c==U||l==U)return await ra(e,t,r,s-H,a,i)==Z?Qs:Xs;if(!o&&!c)return Js;const d=ca(t,n+6);for(const n of[s-c,Ks(e,d)+l])if(await ra(e,t,r,n,a,i)==W)return Qs;return Xs}async function ra(e,t,r,n,s,a){return 0>n||n+4>s?te:r>n?a.count>0?(a.count--,la(Le(await zn(e,n,4)),0)):te:la(t,n-r)}function na(e){const t=new u(Cs);throw t.reason=e,t}function sa(e,t,r){return t[r]===te?e.options[r]:t[r]}function aa(e){const t=(4294901760&e)>>16,r=e&I;return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}function ia(e){return new o(s(e/a(1e4)-a(116444736e5)))}function oa(e,t){return e.getUint8(t)}function ca(e,t){return e.getUint16(t,!0)}function la(e,t){return e.getUint32(t,!0)}function da(e,t){return s(e.getBigUint64(t,!0))}var wa=r.freeze({__proto__:null,ERR_AMBIGUOUS_ARCHIVE:Cs,ERR_BAD_FORMAT:bs,ERR_CENTRAL_DIRECTORY_NOT_FOUND:Fs,ERR_ENCRYPTED:Ds,ERR_ENCRYPTED_CENTRAL_DIRECTORY:Us,ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND:zs,ERR_EOCDR_NOT_FOUND:xs,ERR_EXTRAFIELD_ZIP64_NOT_FOUND:Rs,ERR_INVALID_AUTHENTICATION_CODE:qe,ERR_INVALID_COMPRESSED_DATA:Mt,ERR_INVALID_CRC32:_t,ERR_INVALID_PASSWORD:He,ERR_INVALID_SIGNATURE:je,ERR_INVALID_UNCOMPRESSED_SIZE:Ot,ERR_LOCAL_FILE_HEADER_NOT_FOUND:Es,ERR_OVERLAPPING_ENTRY:vs,ERR_SPLIT_ZIP_FILE:Ts,ERR_UNSUPPORTED_COMPRESSION:As,ERR_UNSUPPORTED_ENCRYPTION:ks,ERR_WORKER_STARTUP_TIMEOUT:sr,ZipReader:Ns,ZipReaderStream:Ls});const ua="File already exists",fa="Zip file comment exceeds 64KB",pa="File entry comment exceeds 64KB",ha="File entry name exceeds 64KB",ma="Version exceeds 65535",ya="The strength must equal 1, 2, or 3",ga="Encryption is not supported in USDZ files",Sa="Extra field type exceeds 65535",ba="Extra field data exceeds 64KB",xa=-2147483648,za=2147483647,Fa=a(0),Ea=a("0x7fffffffffffffff"),Ra="Zip64 is not supported (set the 'zip64' option to 'true')",Da="Undefined uncompressed size",ka="Undefined reader",Aa="Zip file not empty",Ta="Invalid uid (must be integer 0..2^32-1)",va="Invalid gid (must be integer 0..2^32-1)",Ca="Invalid UNIX mode (must be integer 0..65535)",Ua="Invalid unixExtraFieldType (must be 'infozip' or 'unix')",Ia="uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)",Oa="Invalid msdosAttributesRaw (must be integer 0..255)",Ma="Invalid msdosAttributes (must be an object with boolean flags)",_a="Signature data exceeds 64KB",Na=new f([7,0,2,0,65,69,3,0,0]),La="infozip",Wa="unix";let Pa=0;const Va=[];class Za{constructor(e,t={}){e=new bn(e);const{availableSize:n=re,maxSize:s=re}=e,a=n>0&&n!==re&&s>0&&s!==re;r.assign(this,{writer:e,We:a,options:t,config:de(),files:new c,Pe:new l,offset:t[hs]===te?e.size||e.writable.size||0:t[hs],Ve:t[hs]===te?0:t[hs]-(e.size||e.writable.size||0),Ze:new l,Be:0,He:te})}async prependZip(e){if(this.Pe.size)throw new u(Aa);e=new Sn(e),await xn(e);const{ZipReader:t}=await g.resolve().then(()=>wa),n=new t(e.readable),s=await n.getEntries();await n.close(),await xn(this.writer),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.Pe=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,rawLastModDate:n,lastAccessDate:s,creationDate:a,rawFilename:i,bitFlag:o,encrypted:c,uncompressedSize:l,compressedSize:d,zip64:w}=e;let{compressionMethod:u,je:f,qe:p,Ke:h,Ye:m,Ge:y,rawExtraField:g}=e;const{level:S,languageEncodingFlag:b,dataDescriptor:x}=o;f=f||ae,p=p||ae,h=h||ae,m=m||ae,y=y||ae,g=g||ae,e.extraFieldAES&&(u=99);const z=li(f,p,h,m,y,g),F=w&&l>=U,E=w&&d>=U,R=-7&wi(S,b,x,c,u)|S<<1,{Xe:D,Je:k}=di({version:t,bitFlag:R,compressionMethod:u,uncompressedSize:l,compressedSize:d,rawLastModDate:n,rawFilename:i,Qe:E,$e:F,extraFieldLength:z}),{crc32:A}=e;return A!==te&&ii(k,10,A),r.assign(e,{$e:F,Qe:E,et:w&&e.offset>=U,diskNumberStart:0,nt:!1,je:f,qe:p,Ke:h,Ye:m,Ge:y,rawExtraField:g,extendedTimestamp:h.length>0||m.length>0,st:1+(s?2:0)+(a?4:0),Xe:D,Je:k}),[e.filename,e]}))}async add(e="",t,n={}){const s=this;n=r.assign({},n);const{Ze:c,config:l}=s;let d,w;Pa<l.maxWorkers?Pa++:await new g(e=>Va.push(e));try{if(e=e.trim(),ni(s,n,Gn)&&!e.endsWith(J)&&(e+=J),s.Pe.has(e))throw new u(ua);return s.Pe.add(e),w=!0,d=(async(e,t,n,s)=>{const c=((e,t,r)=>{t=t.trim();let n=ni(e,r,Bn),s=ni(e,r,Kn,n?20:768);const a=ni(e,r,Xn),i=ni(e,r,"uid"),o=ni(e,r,"gid");let c=ni(e,r,es),l=ni(e,r,"unixExtraFieldType"),d=ni(e,r,ts),w=ni(e,r,rs),f=ni(e,r,ns);if(i!==te&&(0>i||i>U))throw new u(Ta);if(o!==te&&(0>o||o>U))throw new u(va);if(c!==te&&(0>c||c>I))throw new u(Ca);if(l!==te&&l!==La&&l!==Wa)throw new u(Ua);if(l===Wa&&(i!==te&&i>I||o!==te&&o>I))throw new u(Ia);l!==te||i===te&&o===te||(l=La);let p=ni(e,r,Vn),h=ni(e,r,Zn);const m=p!==te||h!==te;if(i!==te||o!==te||c!==te||l?(n=!1,s=s&I|768):m&&(n=!0,s&=O),p!==te&&(0>p||p>O))throw new u(Oa);if(h&&"object"!=typeof h)throw new u(Ma);if(s>I)throw new u(ma);let y=ni(e,r,Pn);const g=y!==te;g||(y=0),!r[Gn]&&t.endsWith(J)&&(r[Gn]=!0);const S=ni(e,r,Gn);let b;if(S?(t.endsWith(J)||(t+=J),g||(y=16,n||(y|=16877<<16))):n||g||(y=a?493<<16:27525120),!n){const e=c!==te||!!(d||w||f);b=y>>16&I,c=c===te?b:c&I,d?c|=G:d=!!(c&G),w?c|=X:w=!!(c&X),f?c|=512:f=!!(512&c),g&&!e||(S&&(c|=Y),y=(c&I)<<16|y&I)}return({msdosAttributesRaw:p,msdosAttributes:h}=((e,t)=>{if(e!==te)e&=O;else if(t!==te){const{readOnly:r,hidden:n,system:s,directory:a,archive:i}=t;let o=0;r&&(o|=1),n&&(o|=2),s&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&O}return t===te&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(p,h)),m&&(y=y&U|p&O),{name:t,it:{versionMadeBy:s,msDosCompatible:n,externalFileAttributes:y,unixExternalUpper:b,uid:i,gid:o,unixMode:c,unixExtraFieldType:l,setuid:d,setgid:w,sticky:f,msdosAttributesRaw:p,msdosAttributes:h}}})(e,t,s);({name:t}=c);const l=((e,t,r)=>{const n=ni(e,r,"encodeText",Me);let s=n(t);if(s===te&&(s=Me(t)),li(s)>I)throw new u(ha);const a=r[kn]||"";let i=n(a);if(i===te&&(i=Me(a)),li(i)>I)throw new u(pa);const c=ni(e,r,qn,20);if(c>I)throw new u(ma);const l=ni(e,r,In,new o),d=ni(e,r,Mn),w=ni(e,r,Nn),f=ni(e,r,Wn,0),p=ni(e,r,cs);let h,m;p||(h=ni(e,r,is),m=ni(e,r,os));const y=ni(e,r,"encryptionStrength",3),g=ni(e,r,Yn),S=ni(e,r,"extendedTimestamp",!0),b=ni(e,r,"ntfsTimestamp"),x=ni(e,r,"keepOrder",!0),z=ni(e,r,ws),F=ni(e,r,fs),E=ni(e,r,"bufferedWrite"),R=ni(e,r,"createTempStream"),D=ni(e,r,"dataDescriptorSignature",!0),k=ni(e,r,ls),A=ni(e,r,"useUnicodeFileNames",!0),T=ni(e,r,Jn),v=p||T===te?te:xe(T);if(!p&&T!==te&&0!==T&&8!==T&&!v)throw new u("Compression method not supported");let C=ni(e,r,"level");if(e.options[ms]){if(h!==te||m!==te)throw new u(ga);C===te&&T===te&&(C=0)}let U=ni(e,r,us),O=ni(e,r,"dataDescriptor");E&&O===te&&(O=!1),(O===te||g)&&(O=!0),C!==te&&6!=C&&(U=!1);const M=ni(e,r,Hn);if(!g&&(h!==te||m!==te)&&(1>y||y>3))throw new u(ya);const _=Ha(r[$n]),N=Ha(r.localExtraField);return{comment:a,it:{rawFilename:s,rawComment:i,version:c,lastModDate:l,lastAccessDate:d,creationDate:w,internalFileAttributes:f,passThrough:p,password:h,rawPassword:m,encryptionStrength:y,zipCrypto:g,extendedTimestamp:S,ntfsTimestamp:b,keepOrder:x,useWebWorkers:z,transferStreams:F,bufferedWrite:E,createTempStream:R,dataDescriptorSignature:D,signal:k,useUnicodeFileNames:A,compressionMethod:T,format:v?v.format:te,codecURI:v?v.codecURI:te,ot:v?v.versionNeeded:te,level:C,useCompressionStream:U,dataDescriptor:O,zip64:M,rawExtraField:_,ct:N}}})(e,t,s),{comment:d}=l,w=s[$n];let p;e.files.set(t,te);try{const{it:d}=l;0==d.level||d.compressionMethod!==te||d.passThrough||await(async e=>{const{CompressionStream:t,CompressionStreamFallback:r}=e;if(r&&!r.be)return!0;if(jt(t)||Ht(t,Lt))return!0;if(r)try{return await void 0,!0}catch{return!1}return!1})(e.config)||(d.level=0);const w=await(async(e,t,{it:r},n)=>{const{passThrough:s,zipCrypto:a,password:i,rawPassword:o,encryptionStrength:c}=r;let{dataDescriptor:l,zip64:d,level:w,compressionMethod:f}=r,p=0,h=0;if(s){if(!t)throw new u(ka);if(h=n[Tn],h===te)throw new u(Da)}const m=!0===d,y=ni(e,n,jn),g=!!t&&(!!(i&&li(i)||o&&li(o))||s&&y);t||(w=0,f=0);const S=g?a?12:16+4*c:0;t&&(t=new Sn(t),await xn(t),s?(n.uncompressedSize=h,p=si(h)+S):t.size===te?(l=!0,(d||d===te)&&(d=!0,h=p=4294967296)):(n.uncompressedSize=h=t.size,p=si(h)+S));const b=m||h>=U,x=m||p>=U;if(b||x){if(!1===d)throw new u(Ra);d=!0}return d=d||!1,{reader:t,it:{dataDescriptor:l,zip64:d,$e:b,Qe:x,uncompressedSize:h,level:w,compressionMethod:f,encrypted:g}}})(e,n,l,s);({reader:n}=w);const h=Ga(e.writer),m=Ya(e.writer),y=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:n,creationDate:s,level:a,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:w,directory:f,rawExtraField:p,ct:h,encryptionStrength:m,extendedTimestamp:y,ntfsTimestamp:g,passThrough:S,encrypted:b,$e:x,Qe:z,uncompressedSize:F,crc32:E}=e;let{version:R,compressionMethod:D}=e;const k=!f&&(D===te?a===te||a>0:0!==D);let A;const T=S||!k,v=c&&(e.bufferedWrite||!w||!x&&!z||T),C=v||c&&w&&(x||z);if(c&&(x||z)){const e=20,t=Ka(e);if(t.uint16(1),t.uint16(e-4),A=t.array,v&&(t.lt(F),T)){const e=b?l?12:16+4*m:0;t.lt(S?0:F+e)}}else A=ae;let U,O,_,N,L;if(b&&!l){const e=Ka(li(Na)+2);e.uint16(39169),e.bytes(Na),U=e.array,U[8]=m}else U=ae;if(y){const e=ei(r),t=ti(e);if(t){const t=9+(n?4:0)+(s?4:0),r=Ka(t);N=1+(n?2:0)+(s?4:0),r.uint16(q),r.uint16(t-4),r.uint8(N),r.uint32(e),n&&r.uint32(ri(ei(n))),s&&r.uint32(ri(ei(s))),_=r.array}else _=ae;if(g===te?!t||n||s:g)try{const e=$a(r),t=Ka(36);t.uint16(10),t.uint16(32),t.wt(4),t.uint16(1),t.uint16(24),t.lt(e),t.lt(n?$a(n):e),t.lt(s?$a(s):e),O=t.array}catch{O=ae}else O=ae}else O=_=ae;try{const{uid:t,gid:r,unixExtraFieldType:n}=e;if(n!=La||t===te&&r===te)if(n!=Wa||t===te&&r===te)L=ae;else{const e=Ka(8);e.uint16(30805),e.uint16(4),e.uint16((t===te?0:t)&I),e.uint16((r===te?0:r)&I),L=e.array}else{const e=qa(t),n=qa(r),s=3+e.length+n.length,a=Ka(4+s);a.uint16(30837),a.uint16(s),a.uint8(1),a.uint8(e.length),a.bytes(e),a.uint8(n.length),a.bytes(n),L=a.array}}catch{L=ae}D===te&&(D=k?8:0);const{ot:W}=e;k&&W!==te&&(R=R>W?R:W),c&&(R=R>45?R:45),b&&!l&&(R=R>51?R:51,S&&E!==te&&(U[4]=1),U[9]=D,D=99);const P=C?li(A):0,V=P+li(U,_,O,L,p,h);if(V>I)throw new u(ba);const Z=new o(2e3*i.ceil(i.floor(r.getTime()/1e3)/2)),{Xe:B,Je:H,rawLastModDate:j}=di({version:R,bitFlag:wi(a,d,w,b,D),compressionMethod:D,uncompressedSize:F,lastModDate:ee>Z?ee:Z>$?$:Z,rawFilename:t,Qe:z,$e:x,extraFieldLength:V}),K=Ka(Q+li(t)+V),Y=K.array,G=Le(Y);return K.uint32(M),K.bytes(B),K.bytes(t),C&&K.bytes(A),K.bytes(U),K.bytes(_),K.bytes(O),K.bytes(L),K.bytes(p),K.bytes(h),w&&(z||ii(G,18,0),x||ii(G,22,0)),{ut:Y,ft:G,Xe:B,Je:H,lastModDate:r,rawLastModDate:j,encrypted:b,compressed:k,version:R,compressionMethod:D,st:N,je:ae,ht:P,Ke:_,Ye:O,Ge:L,qe:U,extraFieldLength:V}})(s=r.assign({},s,c.it,l.it,w.it,{internalFileAttribute:l.it.internalFileAttributes,externalFileAttribute:c.it.externalFileAttributes,signature:s[Qn],crc32:s.crc32===te?s[Qn]:s.crc32,offset:e.offset-h,diskNumberStart:m})),S=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let n,s=ae,a=0,i=e?20:12;return r&&(i+=4),t&&(s=new f(i),n=Le(s),r&&(a=4,ii(n,0,N))),{yt:s,gt:n,St:a}})(s),b=li(y.ut,S.yt);p=await(async(e,t,n,s,i)=>{const{files:o,writer:c}=e,{keepOrder:l,dataDescriptor:d,signal:w}=i,{bt:p}=s,h=e.options[ms],m=e.He;let y,S,b,x,z,F,R,k={},A=0;o.set(t,k),e.He=k;try{let S;l&&(S=m&&m.lock,k.lock=new g(e=>b=e)),i.bufferedWrite||!l||e.xt||e.Be||!d?(y=!0,e.Be++,R=i.createTempStream?await i.createTempStream():new E(te,te,{highWaterMark:re}),R.size=0,await xn(c)):(R=c,await T()),await xn(R);const C=Ga(c);if(e.We){delete e.We;const t=new f(4);ii(Le(t),0,_),await Qa(c,t),e.offset+=4}h&&!y&&ja(s,e.offset-C);const{ut:I}=p;y||(await S,await v());const M=Ya(c),N=Ja(e,c);if(k.diskNumberStart=M,y||(z=!0,F=c.size,await Qa(R,I)),k=await(async(e,t,{diskNumberStart:n,lock:s},i,o,c)=>{const{bt:l,zt:d,Ft:w}=i,{Xe:f,Je:p,lastModDate:h,rawLastModDate:m,encrypted:y,compressed:g,version:S,compressionMethod:b,je:x,ht:z,Ke:F,st:E,Ye:R,Ge:D,qe:k}=l,{yt:A}=d,{rawFilename:T,lastAccessDate:v,creationDate:C,password:I,rawPassword:M,level:_,zip64:N,$e:L,Qe:W,zipCrypto:P,dataDescriptor:V,directory:Z,executable:B,versionMadeBy:H,rawComment:j,rawExtraField:q,useWebWorkers:K,transferStreams:Y,onstart:G,onprogress:X,onend:J,signal:Q,encryptionStrength:$,extendedTimestamp:ee,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:we,msdosAttributesRaw:ue,msdosAttributes:fe,useCompressionStream:pe,passThrough:he,format:me,codecURI:ye}=c,ge={lock:s,versionMadeBy:H,zip64:N,directory:!!Z,executable:!!B,filenameUTF8:!0,rawFilename:T,commentUTF8:!0,rawComment:j,je:x,ht:z,Ke:F,Ye:R,Ge:D,qe:k,rawExtraField:q,extendedTimestamp:ee,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,diskNumberStart:n,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:we,msdosAttributesRaw:ue,msdosAttributes:fe};let{crc32:Se,uncompressedSize:be}=c,xe=0;he||(be=0);const{writable:ze}=t;if(e){const r=Ut(e.createReadable?e.createReadable():e.readable),n=e.size,s={options:{codecType:Qt,level:_,rawPassword:M,password:I,encryptionStrength:$,zipCrypto:y&&P,passwordVerification:y&&P&&m>>8&O,computeCrc32:!he,compressed:g&&!he,encrypted:y&&!he,useWebWorkers:K,useCompressionStream:pe,transferStreams:Y,format:me,codecURI:ye,compressionMethod:b},config:o,ie:{signal:Q,size:n,onstart:G,onprogress:X,onend:J}};try{const e=await kr({readable:r,writable:ze},s);if(xe=e.outputSize,t.size+=xe,he||(be=e.inputSize,y&&!P||(Se=e.crc32)),!W&&xe>=U||!L&&be>=U)throw new u(Ra)}catch(e){throw e.outputSize!==te&&(t.size+=e.outputSize),e}}return(({crc32:e,compressedSize:t,uncompressedSize:r,bt:n,zt:s},{zip64:i,zipCrypto:o,passThrough:c,dataDescriptor:l})=>{const{Je:d,encrypted:w}=n,{gt:u,St:f}=s;w&&!o&&!c||e===te||(ii(d,10,e),l&&ii(u,f,e)),i?l&&(oi(u,f+4,a(t)),oi(u,f+12,a(r))):(ii(d,14,t),ii(d,18,r),l&&(ii(u,f+4,t),ii(u,f+8,r)))})({crc32:Se,compressedSize:xe,uncompressedSize:be,bt:l,zt:d},c),V&&await Qa(t,A),r.assign(ge,{uncompressedSize:be,compressedSize:xe,lastModDate:h,rawLastModDate:m,creationDate:C,lastAccessDate:v,encrypted:y,zipCrypto:P,size:w+xe,compressionMethod:b,version:S,Xe:f,Je:p,signature:Se,crc32:!y||P||he?Se:te,st:E,$e:L,Qe:W}),ge})(n,R,k,s,e.config,i),y||(z=!1),o.set(t,k),k.filename=t,y){if(await g.all([R.writable.getWriter().close(),S]),await T(),x=!0,F=c.size,await v(),k.diskNumberStart=Ya(c),k.offset=Ja(e,c),h){const t=s.Ft;ja(s,e.offset-Ga(c)),k.size+=s.Ft-t}(({rawFilename:e,encrypted:t,zip64:r,ht:n,crc32:s,compressedSize:i,uncompressedSize:o,$e:c,Qe:l},d,{dataDescriptor:w,passThrough:u})=>{if(w||((!t||u&&s!==te)&&ii(d,14,s),l||ii(d,18,i),c||ii(d,22,o)),r&&n){const t=Q+li(e)+4;oi(d,t,a(o)),oi(d,t+8,a(i))}})(k,p.ft,i),await Qa(c,p.ut),await(async(e,t,r)=>{const n=t.writable.getWriter();try{await e.pipeTo(new D({async write(e){var t;await n.ready,await n.write(e),t=li(e),A+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{n.releaseLock()}})(R.readable,c,w),c.size+=R.size,x=!1}else k.diskNumberStart=M,k.offset=N;return e.offset+=k.size,k}catch(r){if(x||z){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-F,y&&(e.offset+=A)}throw o.delete(t),r}finally{if(y&&e.Be--,b&&b(),S&&S(),y&&R&&R.dispose)try{await R.dispose()}catch{}}async function T(){e.xt=!0;const{Et:t}=e;e.Et=new g(t=>S=()=>{e.xt=!1,t()}),await t}async function v(){Xa(c,li(p.ut))&&await c.closeDisk()}})(e,t,n,{bt:y,zt:S,Ft:b},s)}catch(r){throw e.files.delete(t),r}return r.assign(p,{name:t,comment:d,extraField:w}),new as(p)})(s,e,t,n),c.add(d),await d}catch(t){throw w&&s.Pe.delete(e),t}finally{c.delete(d);const e=Va.shift();e?e():Pa--}}remove(e){const{Pe:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==te){const{filename:n}=e;if(t.has(n)&&r.has(n))return t.delete(n),r.delete(n),!0}return!1}async close(e=ae,r={}){const{Ze:n,writer:s}=this,{writable:i}=s;if(li(e)>I)throw new u(fa);for(;n.size;)await g.allSettled(t.from(n));return await(async(e,r,n)=>{const s=(e=>{let t=0;for(const[,r]of e){const{rawFilename:e,qe:n,rawComment:s,Ye:a,Ge:i,rawExtraField:o,extendedTimestamp:c,st:l,lastModDate:d,$e:w,Qe:f,uncompressedSize:p,compressedSize:h}=r,m=r.offset>=U,y=r.diskNumberStart>=I;let g,S;if(m||y||w||f){const e=4+(w?8:0)+(f?8:0)+(m?8:0)+(y?4:0),t=Ka(e);t.uint16(1),t.uint16(e-4),w&&t.lt(p),f&&t.lt(h),m&&t.lt(r.offset),y&&t.uint32(r.diskNumberStart),g=t.array}else g=ae;r.je=g,r.et=m,r.nt=y;const b=ei(d);if(c&&ti(b)){const e=Ka(9);e.uint16(q),e.uint16(5),e.uint8(l),e.uint32(b),S=e.array}else S=ae;r.Ke=S;const x=li(g,n,a,i,S,o);if(x>I)throw new u(ba);t+=46+li(e,s)+x}return t})(e.files),{Rt:i,Dt:o}=await(async(e,r,n)=>{const{files:s,writer:a}=e,i=new f(r);await xn(a);let o=0,c=0,l=Ya(a),d=Ga(a);for(const[e,r]of t.from(s.values()).entries()){const{offset:t,rawFilename:w,je:u,qe:f,Ke:p,Ye:h,Ge:m,rawExtraField:y,rawComment:g,versionMadeBy:S,Xe:b,Je:x,$e:z,Qe:F,nt:E,et:R,internalFileAttributes:D,externalFileAttributes:k,diskNumberStart:A,uncompressedSize:T,compressedSize:v}=r,C=li(u,f,p,h,m,y),O=46+li(w,g)+C;Xa(a,o+O-c)&&(await Qa(a,i.slice(c,o)),c=o,await a.closeDisk()),0==e&&(l=Ya(a),d=Ga(a)),z||ii(x,18,T),F||ii(x,14,v),(R||E)&&45>r.version&&ai(x,0,45);const M=Ka(O);if(M.uint32(W),M.uint16(S),M.bytes(b.subarray(0,24)),M.uint16(C),M.uint16(li(g)),M.uint16(E?I:A),M.uint16(D),M.uint32(k),M.uint32(R?U:t),M.bytes(w),M.bytes(u),M.bytes(f),M.bytes(p),M.bytes(h),M.bytes(m),M.bytes(y),M.bytes(g),ci(i,M.array,o),o+=O,n.onprogress)try{await n.onprogress(e+1,s.size,new as(r))}catch{}}return await Qa(a,c?i.slice(c):i),{Rt:{diskNumber:l,diskOffset:d},Dt:i}})(e,s,n),c=await(async(e,t,r)=>{const n=ni(e,r,"signCentralDirectory");if(n){const r=await n(t),s=li(r);if(s>I)throw new u(_a);const a=Ka(6+s);return a.uint32(L),a.uint16(s),a.bytes(r),await Qa(e.writer,a.array),6+s}return 0})(e,o,n);await(async(e,t,r,n)=>{const{writer:s}=e,{Rt:i,kt:o}=n;let{At:c}=n,l=e.files.size,d=i.diskNumber,w=Ja(e,i),f=Ya(s);Xa(s,B)&&f++;let p=ni(e,r,Hn);if(!(U>w&&U>c&&I>l&&I>f)){if(!1===p)throw new u(Ra);p=!0}const h=li(t);if(h>I)throw new u(fa);const m=Ka(p?98:B);Xa(s,li(m.array)+h)&&await s.closeDisk(),f=Ya(s),p&&(m.uint32(V),m.lt(44),m.uint16(45),m.uint16(45),m.uint32(f),m.uint32(d),m.lt(l),m.lt(l),m.lt(c),m.lt(w),m.uint32(Z),m.uint32(f),m.lt(a(Ja(e,s))+a(c)+a(o)),m.uint32(f+1),ni(e,r,"supportZip64SplitFile",!0)&&(f=I,d=I),l=I,w=U,c=U),m.uint32(P),m.uint16(f),m.uint16(d),m.uint16(l),m.uint16(l),m.uint32(c),m.uint32(w),m.uint16(h),await Qa(s,m.array),h&&await Qa(s,t)})(e,r,n,{Rt:i,At:s,kt:c})})(this,e,r),ni(this,r,ps)||await i.getWriter().close(),s.getData?s.getData():i}}function Ba(e,t,r){e.Ze.add(t),t.catch(e=>{try{r(e)}catch{}})}function Ha(e){if(!e)return ae;let t=0,r=0;e.forEach(e=>t+=4+li(e));const n=new f(t),s=Le(n);return e.forEach((e,t)=>{if(t>I)throw new u(Sa);if(li(e)>I)throw new u(ba);ai(s,r,t),ai(s,r+2,li(e)),ci(n,e,r+4),r+=4+li(e)}),n}function ja(e,t){const{bt:r}=e;let{ut:n,extraFieldLength:s}=r,a=64-(t+li(n))%64;4>a&&(a+=64);const i=new f(a),o=Le(i);ai(o,0,6534),ai(o,2,a-4);const c=n;r.ut=n=new f(li(c)+a),ci(n,c),ci(n,i,li(c));const l=Le(n);ai(l,28,s+a),r.ft=l,e.Ft+=a}function qa(e){if(e===te)return ae;{const t=new f(4);Le(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Ka(e){const t=new f(e),r=Le(t);let n=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,n,e),n+=1},uint16:e=>{ai(r,n,e),n+=2},uint32:e=>{ii(r,n,e),n+=4},lt:e=>{oi(r,n,a(e)),n+=8},bytes:e=>{ci(t,e,n),n+=li(e)},wt:e=>n+=e}}function Ya(e){const{diskNumber:t=0}=e;return t}function Ga(e){const{diskOffset:t=0}=e;return t}function Xa(e,t){const{availableSize:r=re}=e;return t>r}function Ja(e,{diskNumber:t=0,diskOffset:r=0}){return e.offset-r-(t?e.Ve:0)}async function Qa(e,t){const{writable:r}=e,n=r.getWriter();try{await n.ready,e.size+=li(t),await n.write(t)}finally{n.releaseLock()}}function $a(e){if(e){const t=(a(e.getTime())+a(116444736e5))*a(1e4);return Fa>t?Fa:t>Ea?Ea:t}}function ei(e){return i.floor(e.getTime()/1e3)}function ti(e){return e>=xa&&za>=e}function ri(e){return i.min(za,i.max(xa,e))}function ni(e,t,r,n){const s=t[r]===te?e.options[r]:t[r];return s===te?n:s}function si(e){return e+5*(i.floor(e/16383)+1)}function ai(e,t,r){e.setUint16(t,r,!0)}function ii(e,t,r){e.setUint32(t,r,!0)}function oi(e,t,r){e.setBigUint64(t,r,!0)}function ci(e,t,r){e.set(t,r)}function li(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function di({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:n,compressedSize:s,lastModDate:a,rawLastModDate:i,rawFilename:o,Qe:c,$e:l,extraFieldLength:d}){const w=Ka(26),u=w.array,f=Le(u);if(w.uint16(e),w.uint16(t),w.uint16(r),i===te){const e=new h(1),t=Le(e);ai(t,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),ai(t,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate()),i=e[0]}return w.uint32(i),w.wt(4),c||s!==te?w.uint32(c?U:s):w.wt(4),l||n!==te?w.uint32(l?U:n):w.wt(4),w.uint16(li(o)),w.uint16(d),{Xe:u,Je:f,rawLastModDate:i}}function wi(e,t,r,n,s){let a=0;return t&&(a|=K),r&&(a|=8),8!=s&&9!=s||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),n&&(a|=1),a}const ui=1048576,fi=".zip.js-temp",pi=1048576,hi=1048576,mi=".zip.js-temp",yi="createSyncAccessHandle is only available in dedicated workers";try{(e=>{e=fe(e);for(const t of ce){const r=e[t];r!==te&&(oe[t]=r)}ue(e)})({baseURI:void 0===x&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===x?location.href:C&&"SCRIPT"===C.tagName.toUpperCase()&&C.src||new w("zip-core.min.js",x.baseURI).href})}catch{}e.BlobReader=Xr,e.BlobWriter=Jr,e.Data64URIReader=class extends qr{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const n=e.indexOf(",")+1;r.assign(this,{dataURI:e,Tt:n,size:i.floor(.75*(t-n))})}readUint8Array(e,t){const{Tt:r,dataURI:n}=this,s=new f(t),a=4*i.floor(e/3),o=atob(n.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)s[e-c]=o.charCodeAt(e),l++;return l<s.length?s.subarray(0,l):s}},e.Data64URIWriter=class extends Kr{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r,s=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)s+=n.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=n.fromCharCode(e[r]);s.length>2?t.data+=F(s):t.pending=s+t.pending}getData(){return this.data+F(this.pending)}},e.ERR_AMBIGUOUS_ARCHIVE=Cs,e.ERR_BAD_FORMAT=bs,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=Fs,e.ERR_DUPLICATED_NAME=ua,e.ERR_ENCRYPTED=Ds,e.ERR_ENCRYPTED_CENTRAL_DIRECTORY=Us,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=zs,e.ERR_EOCDR_NOT_FOUND=xs,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Rs,e.ERR_HTTP_RANGE=Or,e.ERR_HTTP_RESOURCE_CHANGED=Mr,e.ERR_INVALID_AUTHENTICATION_CODE=qe,e.ERR_INVALID_CODEC_DEFINITION=pe,e.ERR_INVALID_CODEC_MODULE=me,e.ERR_INVALID_COMMENT=fa,e.ERR_INVALID_COMPRESSED_DATA=Mt,e.ERR_INVALID_CRC32=_t,e.ERR_INVALID_ENCRYPTION_STRENGTH=ya,e.ERR_INVALID_ENTRY_COMMENT=pa,e.ERR_INVALID_ENTRY_NAME=ha,e.ERR_INVALID_EXTRAFIELD_DATA=ba,e.ERR_INVALID_EXTRAFIELD_TYPE=Sa,e.ERR_INVALID_GID=va,e.ERR_INVALID_MSDOS_ATTRIBUTES=Oa,e.ERR_INVALID_MSDOS_DATA=Ma,e.ERR_INVALID_PASSWORD=He,e.ERR_INVALID_SIGNATURE=je,e.ERR_INVALID_SIGNATURE_DATA=_a,e.ERR_INVALID_UID=Ta,e.ERR_INVALID_UNCOMPRESSED_SIZE=Ot,e.ERR_INVALID_UNIX_EXTRA_FIELD_TYPE=Ua,e.ERR_INVALID_UNIX_ID_SIZE=Ia,e.ERR_INVALID_UNIX_MODE=Ca,e.ERR_INVALID_VERSION=ma,e.ERR_ITERATOR_COMPLETED_TOO_SOON=_r,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=Es,e.ERR_OVERLAPPING_ENTRY=vs,e.ERR_RESERVED_COMPRESSION_METHOD=he,e.ERR_SPLIT_ZIP_FILE=Ts,e.ERR_UNDEFINED_READER=ka,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Da,e.ERR_UNSUPPORTED_COMPRESSION=As,e.ERR_UNSUPPORTED_CONTEXT=yi,e.ERR_UNSUPPORTED_CRYPTO_API=Ye,e.ERR_UNSUPPORTED_ENCRYPTION=ks,e.ERR_UNSUPPORTED_ENCRYPTION_USDZ=ga,e.ERR_UNSUPPORTED_FORMAT=Ra,e.ERR_WORKER_STARTUP_TIMEOUT=sr,e.ERR_WRITER_NOT_INITIALIZED=Nr,e.ERR_ZIP_NOT_EMPTY=Aa,e.HttpRangeReader=class extends mn{constructor(e,t={}){super(e,r.assign({},t,{useRangeHeader:!0}))}},e.HttpReader=mn,e.Reader=qr,e.SplitDataReader=yn,e.SplitDataWriter=gn,e.TextReader=class extends Xr{constructor(e){super(new y([e],{type:"text/plain"}))}},e.TextWriter=class extends Jr{constructor(e){super(e),r.assign(this,{encoding:e,vt:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,vt:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new g((s,a)=>{r.assign(t,{onload:({target:e})=>s(e.result),onerror:()=>a(t.error)}),t.readAsText(n,e)})}}},e.Uint8ArrayReader=class extends qr{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=class extends Kr{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const n=t.array;t.array=new f(e),t.array.set(n)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},e.Writer=Kr,e.ZipReader=Ns,e.ZipReaderStream=Ls,e.ZipWriter=Za,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new E;this.readable=t,this.zipWriter=new Za(r,e),this.Ze=new l}transform(e){const t=this.zipWriter;let r;const{readable:n,writable:s}=new E({start(e){r=e},flush:()=>{(async()=>{try{await t.close()}catch(e){try{await t.writer.writable.abort(e)}catch{}}})()}});return Ba(this,this.zipWriter.add(e,n),e=>r.error(e)),{readable:this.readable,writable:s}}writable(e){let t;const{readable:r,writable:n}=new E({start(e){t=e}});return Ba(this,this.zipWriter.add(e,r),e=>t.error(e)),n}async close(e,r={}){return await g.all(t.from(this.Ze)),this.zipWriter.close(e,r)}},e.configure=ue,e.createBlobTempStream=(e={})=>{const{thresholdBytes:t=pi}=e;return()=>{const e=[];let r,n,s,a=0,i=!1;const o=new D({async write(s){i?await r.write(s):(e.push(s),a+=s.length,a>t&&await(async()=>{const t=new E;n=new d(t.readable).blob(),r=t.writable.getWriter(),i=!0;for(const t of e)await r.write(t);e.length=0})())},async close(){r&&(await r.close(),r=null)}});let c=0;return{writable:o,readable:new R({async pull(t){if(i){if(!s){const e=await n;s=e.stream().getReader()}const{value:e,done:r}=await s.read();r?t.close():t.enqueue(e)}else c<e.length?t.enqueue(e[c++]):t.close()},async cancel(e){s&&await s.cancel(e)}},{highWaterMark:0}),dispose:async()=>{if(r){try{await r.abort()}catch{}r=null}n&&(n.catch(()=>{}),n=null),e.length=0}}}},e.createOPFSTempStream=(e={})=>{const{thresholdBytes:t=ui,directoryName:r=fi,getDirectory:n=()=>T.storage.getDirectory()}=e;let s;function a(){return s||(s=g.resolve(n()).then(e=>e.getDirectoryHandle(r,{create:!0}))),s}return()=>{const e=[];let r,n,s,i,o=0,c=!1;const l=new D({async write(i){c?await s.write(i):(e.push(i),o+=i.length,o>t&&await(async()=>{const t=await a();r=z.randomUUID(),n=await t.getFileHandle(r,{create:!0}),s=(await n.createWritable()).getWriter(),c=!0;for(const t of e)await s.write(t);e.length=0})())},async close(){s&&(await s.close(),s=null)}});let d=0;return{writable:l,readable:new R({async pull(t){if(c){if(!i){const e=await n.getFile();i=e.stream().getReader()}const{value:e,done:r}=await i.read();r?t.close():t.enqueue(e)}else d<e.length?t.enqueue(e[d++]):t.close()},async cancel(e){i&&await i.cancel(e)}},{highWaterMark:0}),dispose:async()=>{if(s){try{await s.close()}catch{}s=null}if(r){try{const e=await a();await e.removeEntry(r)}catch{}n=r=null}e.length=0}}}},e.createSyncAccessHandleTempStream=(e={})=>{const{thresholdBytes:t=hi,directoryName:r=mi,getDirectory:n}=e;if(!(n||"undefined"!=typeof FileSystemFileHandle&&FileSystemFileHandle.prototype.createSyncAccessHandle))throw new u(yi);const s=n||(()=>T.storage.getDirectory());let a;function o(){return a||(a=g.resolve(s()).then(e=>e.getDirectoryHandle(r,{create:!0}))),a}return()=>{const e=[];let r,n,s=0,a=!1,c=0,l=0;const d=new D({async write(i){a?(n.write(i,{at:c}),c+=i.length):(e.push(i),s+=i.length,s>t&&await(async()=>{const t=await o();r=z.randomUUID();const s=await t.getFileHandle(r,{create:!0});n=await s.createSyncAccessHandle(),a=!0;for(const t of e)n.write(t,{at:c}),c+=t.length;e.length=0})())},close(){n&&n.flush()}});let w=0;return{writable:d,readable:new R({pull(t){if(a){const e=c-l;if(0>=e)return void t.close();const r=new f(i.min(524288,e)),s=n.read(r,{at:l});s?(l+=s,t.enqueue(r.subarray(0,s))):t.close()}else w<e.length?t.enqueue(e[w++]):t.close()}},{highWaterMark:0}),dispose:async()=>{if(n){try{n.close()}catch{}n=null}if(r){try{const e=await o();await e.removeEntry(r)}catch{}r=null}e.length=0}}}},e.getMimeType=()=>"application/octet-stream",e.registerCodec=(e={})=>{const{compressionMethod:t,format:r,codecURI:n,CompressionStream:a,DecompressionStream:i,versionNeeded:o}=e;if(!s.isInteger(t)||0>t||t>I||typeof r!=ye||!r.length)throw new u(pe);if(ge.includes(t))throw new u(he);const c=typeof a==se||typeof i==se;if(!(c||typeof n==ye&&n.length))throw new u(pe);Se.set(t,{compressionMethod:t,format:r,codecURI:n,versionNeeded:o}),c&&Fe(r,{CompressionStream:a,DecompressionStream:i})},e.resetConfiguration=()=>{for(const e of ce)delete le[e];r.assign(le,oe)},e.terminateWorkers=async()=>{await g.allSettled(zr.map(e=>(Ur(e),e.terminate()))),ar=te,lr=!1},e.unregisterCodec=e=>{const t=Se.get(e);if(t){let r;Se.delete(e),Se.forEach(e=>r=r||e.format==t.format),r||be.delete(t.format)}}});
@@ -38,6 +38,7 @@ const LOCAL_FILE_HEADER_SIGNATURE = 0x04034b50;
38
38
  const SPLIT_ZIP_FILE_SIGNATURE = 0x08074b50;
39
39
  const DATA_DESCRIPTOR_RECORD_SIGNATURE = SPLIT_ZIP_FILE_SIGNATURE;
40
40
  const ARCHIVE_EXTRA_DATA_SIGNATURE = 0x08064b50;
41
+ const DIGITAL_SIGNATURE_RECORD_SIGNATURE = 0x05054b50;
41
42
  const CENTRAL_FILE_HEADER_SIGNATURE = 0x02014b50;
42
43
  const END_OF_CENTRAL_DIR_SIGNATURE = 0x06054b50;
43
44
  const ZIP64_END_OF_CENTRAL_DIR_SIGNATURE = 0x06064b50;
@@ -4485,6 +4486,8 @@ const OPTION_UNIX_EXTRA_FIELD_TYPE = "unixExtraFieldType";
4485
4486
  const OPTION_LOCAL_EXTRA_FIELD = "localExtraField";
4486
4487
  const OPTION_STRICTNESS = "strictness";
4487
4488
  const OPTION_MAX_APPENDED_DATA_SIZE = "maxAppendedDataSize";
4489
+ const OPTION_DECRYPT_CENTRAL_DIRECTORY = "decryptCentralDirectory";
4490
+ const OPTION_SIGN_CENTRAL_DIRECTORY = "signCentralDirectory";
4488
4491
  const STRICTNESS_STRICT = "strict";
4489
4492
  const STRICTNESS_BALANCED = "balanced";
4490
4493
  const STRICTNESS_TOLERANT = "tolerant";
@@ -4610,6 +4613,7 @@ class ZipReader {
4610
4613
  let startOffset;
4611
4614
  let zip64EndOfDirectory;
4612
4615
  let zip64EndOfDirectoryVersion2;
4616
+ let directoryEncryptionInfo;
4613
4617
  const requiresZip64 = directoryDataOffset == MAX_32_BITS || directoryDataLength == MAX_32_BITS || filesLength == MAX_16_BITS || diskNumber == MAX_16_BITS;
4614
4618
  if (directoryDataOffset != MAX_32_BITS && diskNumber != MAX_16_BITS) {
4615
4619
  directoryDataOffset += getDiskOffset$1(reader, diskNumber);
@@ -4640,6 +4644,15 @@ class ZipReader {
4640
4644
  }
4641
4645
  zip64EndOfDirectory = true;
4642
4646
  zip64EndOfDirectoryVersion2 = getBigUint64(endOfDirectoryView, 4) > ZIP64_END_OF_CENTRAL_DIR_LENGTH - 12;
4647
+ if (zip64EndOfDirectoryVersion2) {
4648
+ const extensibleDataLength = Math.min(
4649
+ Number(getBigUint64(endOfDirectoryView, 4)) - (ZIP64_END_OF_CENTRAL_DIR_LENGTH - 12),
4650
+ reader.size - directoryDataOffset - ZIP64_END_OF_CENTRAL_DIR_LENGTH);
4651
+ if (extensibleDataLength > 0) {
4652
+ const rawExtensibleData = await readUint8Array(reader, directoryDataOffset + ZIP64_END_OF_CENTRAL_DIR_LENGTH, extensibleDataLength);
4653
+ directoryEncryptionInfo = getDirectoryEncryptionInfo(rawExtensibleData);
4654
+ }
4655
+ }
4643
4656
  if (lastDiskNumber == MAX_16_BITS) {
4644
4657
  lastDiskNumber = getUint32(endOfDirectoryView, 16);
4645
4658
  } else if (checkAmbiguity && lastDiskNumber != getUint32(endOfDirectoryView, 16)) {
@@ -4663,7 +4676,7 @@ class ZipReader {
4663
4676
  directoryDataOffset = getDiskOffset$1(reader, diskNumber) + getBigUint64(endOfDirectoryView, 48) + prependedDataLength;
4664
4677
  }
4665
4678
  }
4666
- const declaredDirectoryDataLength = directoryDataLength;
4679
+ let declaredDirectoryDataLength = directoryDataLength;
4667
4680
  const centralDirectoryEndOffset = endOfDirectoryInfo.offset -
4668
4681
  (zip64EndOfDirectory ? ZIP64_END_OF_CENTRAL_DIR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH : 0);
4669
4682
  if (directoryDataOffset >= reader.size) {
@@ -4711,6 +4724,18 @@ class ZipReader {
4711
4724
  if (directoryDataOffset < 0 || directoryDataOffset >= reader.size) {
4712
4725
  throw new Error(ERR_BAD_FORMAT);
4713
4726
  }
4727
+ zipReader.directoryOffset = directoryDataOffset;
4728
+ zipReader.directoryLength = declaredDirectoryDataLength;
4729
+ const decryptCentralDirectory = getOptionValue$1(zipReader, options, OPTION_DECRYPT_CENTRAL_DIRECTORY);
4730
+ let decryptedDirectory;
4731
+ if (decryptCentralDirectory && filesLength && directoryArray.length >= 4 &&
4732
+ getUint32(directoryView, 0) != CENTRAL_FILE_HEADER_SIGNATURE &&
4733
+ (zip64EndOfDirectoryVersion2 || detectEncryptedCentralDirectory(directoryView))) {
4734
+ directoryArray = await decryptCentralDirectory(directoryArray, directoryEncryptionInfo);
4735
+ directoryView = getDataView(directoryArray);
4736
+ declaredDirectoryDataLength = directoryArray.length;
4737
+ decryptedDirectory = true;
4738
+ }
4714
4739
  startOffset = directoryDataOffset;
4715
4740
  const filenameEncoding = getOptionValue$1(zipReader, options, OPTION_FILENAME_ENCODING);
4716
4741
  const commentEncoding = getOptionValue$1(zipReader, options, OPTION_COMMENT_ENCODING);
@@ -4719,7 +4744,7 @@ class ZipReader {
4719
4744
  for (let indexFile = 0; indexFile < filesLength; indexFile++) {
4720
4745
  const fileEntry = new ZipEntry$1(reader, config, zipReader.options);
4721
4746
  if (offset + CENTRAL_FILE_HEADER_LENGTH > directoryArray.length || getUint32(directoryView, offset) != CENTRAL_FILE_HEADER_SIGNATURE) {
4722
- if (indexFile == 0 && (zip64EndOfDirectoryVersion2 || detectEncryptedCentralDirectory(directoryView))) {
4747
+ if (indexFile == 0 && !decryptedDirectory && (zip64EndOfDirectoryVersion2 || detectEncryptedCentralDirectory(directoryView))) {
4723
4748
  throw new Error(ERR_ENCRYPTED_CENTRAL_DIRECTORY);
4724
4749
  }
4725
4750
  throw new Error(ERR_CENTRAL_DIRECTORY_NOT_FOUND);
@@ -4832,7 +4857,15 @@ class ZipReader {
4832
4857
  }
4833
4858
  yield entry;
4834
4859
  }
4835
- if (checkAmbiguity && offset != declaredDirectoryDataLength) {
4860
+ let offsetAfterSignature = offset;
4861
+ if (offset + 6 <= directoryArray.length && getUint32(directoryView, offset) == DIGITAL_SIGNATURE_RECORD_SIGNATURE) {
4862
+ const signatureDataLength = getUint16(directoryView, offset + 4);
4863
+ if (offset + 6 + signatureDataLength <= directoryArray.length) {
4864
+ zipReader.digitalSignature = directoryArray.subarray(offset + 6, offset + 6 + signatureDataLength);
4865
+ offsetAfterSignature = offset + 6 + signatureDataLength;
4866
+ }
4867
+ }
4868
+ if (checkAmbiguity && offset != declaredDirectoryDataLength && offsetAfterSignature != declaredDirectoryDataLength) {
4836
4869
  throwAmbiguousArchive("trailing central directory data");
4837
4870
  }
4838
4871
  if (duplicateFilename) {
@@ -5104,6 +5137,25 @@ function detectEncryptedCentralDirectory(directoryView) {
5104
5137
  return false;
5105
5138
  }
5106
5139
 
5140
+ function getDirectoryEncryptionInfo(rawExtensibleData) {
5141
+ const directoryEncryptionInfo = { rawExtensibleData };
5142
+ if (rawExtensibleData.length >= 28) {
5143
+ const extensibleDataView = getDataView(rawExtensibleData);
5144
+ const hashDataLength = getUint16(extensibleDataView, 26);
5145
+ Object.assign(directoryEncryptionInfo, {
5146
+ compressionMethod: getUint16(extensibleDataView, 0),
5147
+ compressedSize: Number(getBigUint64(extensibleDataView, 2)),
5148
+ uncompressedSize: Number(getBigUint64(extensibleDataView, 10)),
5149
+ encryptionAlgorithm: getUint16(extensibleDataView, 18),
5150
+ bitLength: getUint16(extensibleDataView, 20),
5151
+ flags: getUint16(extensibleDataView, 22),
5152
+ hashAlgorithm: getUint16(extensibleDataView, 24),
5153
+ hashData: rawExtensibleData.subarray(28, 28 + hashDataLength)
5154
+ });
5155
+ }
5156
+ return directoryEncryptionInfo;
5157
+ }
5158
+
5107
5159
  function readCommonHeader(directory, dataView, offset) {
5108
5160
  const rawBitFlag = directory.rawBitFlag = getUint16(dataView, offset + 2);
5109
5161
  const encrypted = (rawBitFlag & BITFLAG_ENCRYPTED) == BITFLAG_ENCRYPTED;
@@ -5655,6 +5707,7 @@ var zipReader = /*#__PURE__*/Object.freeze({
5655
5707
  ERR_SPLIT_ZIP_FILE: ERR_SPLIT_ZIP_FILE,
5656
5708
  ERR_UNSUPPORTED_COMPRESSION: ERR_UNSUPPORTED_COMPRESSION$1,
5657
5709
  ERR_UNSUPPORTED_ENCRYPTION: ERR_UNSUPPORTED_ENCRYPTION,
5710
+ ERR_WORKER_STARTUP_TIMEOUT: ERR_WORKER_STARTUP_TIMEOUT,
5658
5711
  ZipReader: ZipReader,
5659
5712
  ZipReaderStream: ZipReaderStream
5660
5713
  });
@@ -5713,6 +5766,7 @@ const ERR_INVALID_UNIX_EXTRA_FIELD_TYPE = "Invalid unixExtraFieldType (must be '
5713
5766
  const ERR_INVALID_UNIX_ID_SIZE = "uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)";
5714
5767
  const ERR_INVALID_MSDOS_ATTRIBUTES = "Invalid msdosAttributesRaw (must be integer 0..255)";
5715
5768
  const ERR_INVALID_MSDOS_DATA = "Invalid msdosAttributes (must be an object with boolean flags)";
5769
+ const ERR_INVALID_SIGNATURE_DATA = "Signature data exceeds 64KB";
5716
5770
 
5717
5771
  const EXTRAFIELD_DATA_AES = new Uint8Array([0x07, 0x00, 0x02, 0x00, 0x41, 0x45, 0x03, 0x00, 0x00]);
5718
5772
  const EXTRAFIELD_OFFSET_AES_VENDOR_VERSION = 4;
@@ -7072,8 +7126,9 @@ function updateLocalHeader({
7072
7126
 
7073
7127
  async function closeFile(zipWriter, comment, options) {
7074
7128
  const directoryDataLength = createDirectoryRecords(zipWriter.files);
7075
- const directoryStart = await writeDirectoryRecords(zipWriter, directoryDataLength, options);
7076
- await writeEndOfDirectoryRecord(zipWriter, comment, options, { directoryStart, directoryDataLength });
7129
+ const { directoryStart, directoryArray } = await writeDirectoryRecords(zipWriter, directoryDataLength, options);
7130
+ const signatureLength = await writeDigitalSignatureRecord(zipWriter, directoryArray, options);
7131
+ await writeEndOfDirectoryRecord(zipWriter, comment, options, { directoryStart, directoryDataLength, signatureLength });
7077
7132
  }
7078
7133
 
7079
7134
  function createDirectoryRecords(files) {
@@ -7230,12 +7285,33 @@ async function writeDirectoryRecords(zipWriter, directoryDataLength, options) {
7230
7285
  }
7231
7286
  }
7232
7287
  await writeData(writer, directoryDiskOffset ? directoryArray.slice(directoryDiskOffset) : directoryArray);
7233
- return { diskNumber: directoryStartDiskNumber, diskOffset: directoryStartDiskOffset };
7288
+ return {
7289
+ directoryStart: { diskNumber: directoryStartDiskNumber, diskOffset: directoryStartDiskOffset },
7290
+ directoryArray
7291
+ };
7292
+ }
7293
+
7294
+ async function writeDigitalSignatureRecord(zipWriter, directoryArray, options) {
7295
+ const signCentralDirectory = getOptionValue(zipWriter, options, OPTION_SIGN_CENTRAL_DIRECTORY);
7296
+ if (signCentralDirectory) {
7297
+ const signatureData = await signCentralDirectory(directoryArray);
7298
+ const signatureDataLength = getLength(signatureData);
7299
+ if (signatureDataLength > MAX_16_BITS) {
7300
+ throw new Error(ERR_INVALID_SIGNATURE_DATA);
7301
+ }
7302
+ const signatureRecord = createRecordWriter(6 + signatureDataLength);
7303
+ signatureRecord.uint32(DIGITAL_SIGNATURE_RECORD_SIGNATURE);
7304
+ signatureRecord.uint16(signatureDataLength);
7305
+ signatureRecord.bytes(signatureData);
7306
+ await writeData(zipWriter.writer, signatureRecord.array);
7307
+ return 6 + signatureDataLength;
7308
+ }
7309
+ return 0;
7234
7310
  }
7235
7311
 
7236
7312
  async function writeEndOfDirectoryRecord(zipWriter, comment, options, cdInfo) {
7237
7313
  const { writer } = zipWriter;
7238
- const { directoryStart } = cdInfo;
7314
+ const { directoryStart, signatureLength } = cdInfo;
7239
7315
  let { directoryDataLength } = cdInfo;
7240
7316
  let filesLength = zipWriter.files.size;
7241
7317
  let diskNumber = directoryStart.diskNumber;
@@ -7274,7 +7350,7 @@ async function writeEndOfDirectoryRecord(zipWriter, comment, options, cdInfo) {
7274
7350
  endOfdirectoryRecord.uint64(directoryOffset);
7275
7351
  endOfdirectoryRecord.uint32(ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE);
7276
7352
  endOfdirectoryRecord.uint32(lastDiskNumber);
7277
- endOfdirectoryRecord.uint64(BigInt(getSegmentOffset(zipWriter, writer)) + BigInt(directoryDataLength));
7353
+ endOfdirectoryRecord.uint64(BigInt(getSegmentOffset(zipWriter, writer)) + BigInt(directoryDataLength) + BigInt(signatureLength));
7278
7354
  endOfdirectoryRecord.uint32(lastDiskNumber + 1);
7279
7355
  const supportZip64SplitFile = getOptionValue(zipWriter, options, OPTION_SUPPORT_ZIP64_SPLIT_FILE, true);
7280
7356
  if (supportZip64SplitFile) {
@@ -9388,4 +9464,4 @@ function addChild(parent, name, params, directory) {
9388
9464
  }
9389
9465
  }
9390
9466
 
9391
- export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_AMBIGUOUS_ARCHIVE, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_DUPLICATED_NAME, ERR_ENCRYPTED, ERR_ENCRYPTED_CENTRAL_DIRECTORY, ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, ERR_EOCDR_NOT_FOUND, ERR_EXTRAFIELD_ZIP64_NOT_FOUND, ERR_HTTP_RANGE, ERR_HTTP_RESOURCE_CHANGED, ERR_INVALID_AUTHENTICATION_CODE, ERR_INVALID_CODEC_DEFINITION, ERR_INVALID_CODEC_MODULE, ERR_INVALID_COMMENT, ERR_INVALID_COMPRESSED_DATA, ERR_INVALID_CRC32, ERR_INVALID_ENCRYPTION_STRENGTH, ERR_INVALID_ENTRY_COMMENT, ERR_INVALID_ENTRY_NAME, ERR_INVALID_EXTRAFIELD_DATA, ERR_INVALID_EXTRAFIELD_TYPE, ERR_INVALID_PASSWORD, ERR_INVALID_SIGNATURE, ERR_INVALID_UNCOMPRESSED_SIZE, ERR_INVALID_VERSION, ERR_ITERATOR_COMPLETED_TOO_SOON, ERR_LOCAL_FILE_HEADER_NOT_FOUND, ERR_OVERLAPPING_ENTRY, ERR_RESERVED_COMPRESSION_METHOD, ERR_SPLIT_ZIP_FILE, ERR_UNDEFINED_READER, ERR_UNDEFINED_UNCOMPRESSED_SIZE, ERR_UNSUPPORTED_COMPRESSION$1 as ERR_UNSUPPORTED_COMPRESSION, ERR_UNSUPPORTED_ENCRYPTION, ERR_UNSUPPORTED_ENCRYPTION_USDZ, ERR_UNSUPPORTED_FORMAT, ERR_WRITER_NOT_INITIALIZED, ERR_ZIP_NOT_EMPTY, HttpRangeReader, HttpReader, Reader, SplitDataReader, SplitDataWriter, TextReader, TextWriter, Uint8ArrayReader, Uint8ArrayWriter, Writer, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, fs, getMimeType, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };
9467
+ export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_AMBIGUOUS_ARCHIVE, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_DUPLICATED_NAME, ERR_ENCRYPTED, ERR_ENCRYPTED_CENTRAL_DIRECTORY, ERR_ENTRY_EXISTS, ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, ERR_EOCDR_NOT_FOUND, ERR_EXTRAFIELD_ZIP64_NOT_FOUND, ERR_HTTP_RANGE, ERR_HTTP_RESOURCE_CHANGED, ERR_INVALID_AUTHENTICATION_CODE, ERR_INVALID_CODEC_DEFINITION, ERR_INVALID_CODEC_MODULE, ERR_INVALID_COMMENT, ERR_INVALID_COMPRESSED_DATA, ERR_INVALID_CRC32, ERR_INVALID_ENCRYPTION_STRENGTH, ERR_INVALID_ENTRY_COMMENT, ERR_INVALID_ENTRY_NAME, ERR_INVALID_EXTRAFIELD_DATA, ERR_INVALID_EXTRAFIELD_TYPE, ERR_INVALID_GID, ERR_INVALID_MSDOS_ATTRIBUTES, ERR_INVALID_MSDOS_DATA, ERR_INVALID_PASSWORD, ERR_INVALID_SIGNATURE, ERR_INVALID_SIGNATURE_DATA, ERR_INVALID_UID, ERR_INVALID_UNCOMPRESSED_SIZE, ERR_INVALID_UNIX_EXTRA_FIELD_TYPE, ERR_INVALID_UNIX_ID_SIZE, ERR_INVALID_UNIX_MODE, ERR_INVALID_VERSION, ERR_ITERATOR_COMPLETED_TOO_SOON, ERR_LOCAL_FILE_HEADER_NOT_FOUND, ERR_OVERLAPPING_ENTRY, ERR_READABLE_CONSUMED, ERR_RESERVED_COMPRESSION_METHOD, ERR_SPLIT_ZIP_FILE, ERR_UNDEFINED_READER, ERR_UNDEFINED_UNCOMPRESSED_SIZE, ERR_UNSUPPORTED_COMPRESSION$1 as ERR_UNSUPPORTED_COMPRESSION, ERR_UNSUPPORTED_CONTEXT, ERR_UNSUPPORTED_CRYPTO_API, ERR_UNSUPPORTED_ENCRYPTION, ERR_UNSUPPORTED_ENCRYPTION_USDZ, ERR_UNSUPPORTED_FORMAT, ERR_WORKER_STARTUP_TIMEOUT, ERR_WRITER_NOT_INITIALIZED, ERR_ZIP_NOT_EMPTY, HttpRangeReader, HttpReader, Reader, SplitDataReader, SplitDataWriter, TextReader, TextWriter, Uint8ArrayReader, Uint8ArrayWriter, Writer, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, fs, getMimeType, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };