@zip.js/zip.js 2.10.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deno.json +1 -1
- package/dist/zip-core-external.js +13 -35
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +12 -35
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +13 -35
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +12 -35
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +13 -35
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +15 -38
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +16 -39
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +14 -37
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-module.wasm +0 -0
- package/dist/zip-native.js +15 -38
- package/dist/zip-native.min.js +1 -1
- package/dist/zip-web-worker-native.js +1 -1
- package/dist/zip-web-worker.js +1 -1
- package/dist/zip.js +16 -39
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +15 -38
- package/index-native.min.js +1 -1
- package/index.cjs +16 -39
- package/index.d.cts +5 -37
- package/index.d.ts +5 -37
- package/index.min.js +1 -1
- package/lib/core/codec-pool.js +0 -2
- package/lib/core/codec-registry.js +2 -0
- package/lib/core/streams/codec-stream.js +0 -2
- package/lib/core/streams/common-crypto.js +1 -3
- package/lib/core/streams/zip-entry-stream.js +2 -5
- package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
- package/lib/core/streams/zlib-wasm/zlib-streams.js +1 -1
- package/lib/core/streams/zlib-wasm/zlib-streams.wasm +0 -0
- package/lib/core/version.js +1 -1
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-entry.js +0 -6
- package/lib/core/zip-reader.js +1 -6
- package/lib/core/zip-writer.js +4 -19
- package/lib/core/zlib-streams-inline.js +1 -1
- package/lib/zip-core-reader.js +0 -1
- package/package.json +1 -1
package/dist/zip.js
CHANGED
|
@@ -414,7 +414,7 @@
|
|
|
414
414
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
415
415
|
}
|
|
416
416
|
|
|
417
|
-
const t$1=new Uint8Array(288);t$1.fill(8,0,144),t$1.fill(9,144,256),t$1.fill(7,256,280),t$1.fill(8,280,288),new Uint8Array(30).fill(5);const e$1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n$1=t=>t({workerURI:t=>{const n="text/javascript";let s='!function(t){"function"==typeof define&&define.amd?define(t):t()}(function(){"use strict";const{Array:t,Object:n,Number:e,Math:s,Error:r,Uint8Array:o,Uint16Array:c,Uint32Array:i,Int32Array:a,Map:f,DataView:u,Promise:l,TextEncoder:w,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:S,DecompressionStream:g}=self,v=void 0,b="undefined",k="function",z=new o,C=[[],[],[],[],[],[],[],[]];for(let t=0;t<256;t++){let n=t;for(let t=0;t<8;t++)n=1&n?n>>>1^3988292384:n>>>1;C[0][t]=n}for(let t=0;t<256;t++)for(let n=1;n<8;n++){const e=C[n-1][t];C[n][t]=e>>>8^C[0][255&e]}const[I,A,x,M,P,B,D,F]=C;class R{constructor(t){this.o=t||-1}append(t){let n=0|this.o;const e=0|t.length;let s=0;if(e>=8&&t.buffer){const r=new u(t.buffer,t.byteOffset,e),o=e-8;for(;s<=o;s+=8){const t=n^r.getInt32(s,!0),e=r.getInt32(s+4,!0);n=F[255&t]^D[t>>>8&255]^B[t>>>16&255]^P[t>>>24&255]^M[255&e]^x[e>>>8&255]^A[e>>>16&255]^I[e>>>24&255]}}for(;s<e;s++)n=n>>>8^I[255&(n^t[s])];this.o=n}get(){return~this.o}}class U extends d{constructor(){let t;const n=new R;super({transform(t,e){n.append(t),e.enqueue(t)},flush(){const e=new o(4);new u(e.buffer).setUint32(0,n.get()),t.value=e}}),t=this}}function W(t,n){const e=new o(t.length+n.length);return e.set(t),e.set(n,t.length),e}function _(t){return new u(t.buffer,t.byteOffset,t.byteLength)}const T={concat(t,n){if(0===t.length||0===n.length)return t.concat(n);const e=t[t.length-1],s=T.l(e);return 32===s?t.concat(n):T.h(n,s,0|e,t.slice(0,t.length-1))},bitLength(t){const n=t.length;if(0===n)return 0;const e=t[n-1];return 32*(n-1)+T.l(e)},m(t,n){if(32*t.length<n)return t;const e=(t=t.slice(0,s.ceil(n/32))).length;return n&=31,e>0&&n&&(t[e-1]=T.S(n,t[e-1]&2147483648>>n-1,1)),t},S:(t,n,e)=>32===t?n:(e?0|n:n<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,n,e,s){for(void 0===s&&(s=[]);n>=32;n-=32)s.push(e),e=0;if(0===n)return s.concat(t);for(let r=0;r<t.length;r++)s.push(e|t[r]>>>n),e=t[r]<<32-n;const r=t.length?t[t.length-1]:0,o=T.l(r);return s.push(T.S(n+o&31,n+o>32?e:s.pop(),1)),s}},V={bytes:{v(t){const n=T.bitLength(t)/8,e=new o(n);let s;for(let r=0;r<n;r++)3&r||(s=t[r/4]),e[r]=s>>>24,s<<=8;return e},C(t){const n=[];let e,s=0;for(e=0;e<t.length;e++)s=s<<8|t[e],3&~e||(n.push(s),s=0);return 3&e&&n.push(T.S(8*(3&e),s)),n}}},K=class{constructor(t){const n=this;n.blockSize=512,n.I=[1732584193,4023233417,2562383102,271733878,3285377520],n.A=[1518500249,1859775393,2400959708,3395469782],t?(n.M=t.M.slice(0),n.P=t.P.slice(0),n.B=t.B):n.reset()}reset(){const t=this;return t.M=t.I.slice(0),t.P=[],t.B=0,t}update(t){const n=this;"string"==typeof t&&(t=V.D.C(t));const e=n.P=T.concat(n.P,t),s=n.B,o=n.B=s+T.bitLength(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const c=new i(e);let a=0;for(let t=n.blockSize+s-(n.blockSize+s&n.blockSize-1);t<=o;t+=n.blockSize)n.F(c.subarray(16*a,16*(a+1))),a+=1;return e.splice(0,16*a),n}R(){const t=this;let n=t.P;const e=t.M;n=T.concat(n,[T.S(1,1)]);for(let t=n.length+2;15&t;t++)n.push(0);for(n.push(s.floor(t.B/4294967296)),n.push(0|t.B);n.length;)t.F(n.splice(0,16));return t.reset(),e}U(t,n,e,s){return t<=19?n&e|~n&s:t<=39?n^e^s:t<=59?n&e|n&s|e&s:t<=79?n^e^s:void 0}W(t,n){return n<<t|n>>>32-t}F(n){const e=this,r=e.M,o=t(80);for(let t=0;t<16;t++)o[t]=n[t];let c=r[0],i=r[1],a=r[2],f=r[3],u=r[4];for(let t=0;t<=79;t++){t>=16&&(o[t]=e.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const n=e.W(5,c)+e.U(t,i,a,f)+u+o[t]+e.A[s.floor(t/20)]|0;u=f,f=a,a=e.W(30,i),i=c,c=n}r[0]=r[0]+c|0,r[1]=r[1]+i|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+u|0}},E={importKey:t=>new E._(V.bytes.C(t)),T(t,n,e,s){if(e=e||1e4,s<0||e<0)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let c,i,a,f,l;const w=new ArrayBuffer(o),h=new u(w);let p=0;const d=T;for(n=V.bytes.C(n),l=1;p<(o||1);l++){for(c=i=t.encrypt(d.concat(n,[l])),a=1;a<e;a++)for(i=t.encrypt(i),f=0;f<i.length;f++)c[f]^=i[f];for(a=0;p<(o||1)&&a<c.length;a++)h.setInt32(p,c[a]),p+=4}return w.slice(0,s/8)},_:class{constructor(t){const n=this,e=n.V=K,s=[[],[]];n.K=[new e,new e];const r=n.K[0].blockSize/32;t.length>r&&(t=(new e).update(t).R());for(let n=0;n<r;n++)s[0][n]=909522486^t[n],s[1][n]=1549556828^t[n];n.K[0].update(s[0]),n.K[1].update(s[1]),n.L=new e(n.K[0])}reset(){const t=this;t.L=new t.V(t.K[0]),t.O=!1}update(t){this.O=!0,this.L.update(t)}digest(){const t=this,n=t.L.R(),e=new t.V(t.K[1]).update(n).R();return t.reset(),e}encrypt(t){if(this.O)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},L=typeof h!=b&&typeof h.getRandomValues==k,O="Invalid password",j="Invalid signature",H=j,N="zipjs-abort-check-password";function q(t){if(L)return h.getRandomValues(t);throw new r("Crypto API not supported")}const G=16,J={name:"PBKDF2"},Q=n.assign({hash:{name:"HMAC"}},J),X=n.assign({iterations:1e3,hash:{name:"SHA-1"}},J),Y=["deriveBits"],Z=[8,12,16],$=[16,24,32],tt=10,nt=[0,0,0,0],et=typeof h!=b,st=et&&h.subtle,rt=et&&typeof st!=b,ot=V.bytes,ct=class{constructor(t){const n=this;n.j=[[[],[],[],[],[]],[[],[],[],[],[]]],n.j[0][0][0]||n.H();const e=n.j[0][4],s=n.j[1],o=t.length;let c,i,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(n.A=[i=t.slice(0),a=[]],c=o;c<4*o+28;c++){let t=i[c-1];(c%o===0||8===o&&c%o===4)&&(t=e[t>>>24]<<24^e[t>>16&255]<<16^e[t>>8&255]<<8^e[255&t],c%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),i[c]=i[c-o]^t}for(let t=0;c;t++,c--){const n=i[3&t?c:c-4];a[t]=c<=4||t<4?n:s[0][e[n>>>24]]^s[1][e[n>>16&255]]^s[2][e[n>>8&255]]^s[3][e[255&n]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}H(){const t=this.j[0],n=this.j[1],e=t[4],s=n[4],r=[],o=[];let c,i,a,f;for(let t=0;t<256;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let u=c=0;!e[u];u^=i||1,c=o[c]||1){let o=c^c<<1^c<<2^c<<3^c<<4;o=o>>8^255&o^99,e[u]=o,s[o]=u,f=r[a=r[i=r[u]]];let l=16843009*f^65537*a^257*i^16843008*u,w=257*r[o]^16843008*o;for(let e=0;e<4;e++)t[e][u]=w=w<<24^w>>>8,n[e][o]=l=l<<24^l>>>8}for(let e=0;e<5;e++)t[e]=t[e].slice(0),n[e]=n[e].slice(0)}N(t,n){if(4!==t.length)throw new r("invalid aes block size");const e=this.A[n],s=e.length/4-2,o=[0,0,0,0],c=this.j[n],i=c[0],a=c[1],f=c[2],u=c[3],l=c[4];let w,h,p,d=t[0]^e[0],y=t[n?3:1]^e[1],m=t[2]^e[2],S=t[n?1:3]^e[3],g=4;for(let t=0;t<s;t++)w=i[d>>>24]^a[y>>16&255]^f[m>>8&255]^u[255&S]^e[g],h=i[y>>>24]^a[m>>16&255]^f[S>>8&255]^u[255&d]^e[g+1],p=i[m>>>24]^a[S>>16&255]^f[d>>8&255]^u[255&y]^e[g+2],S=i[S>>>24]^a[d>>16&255]^f[y>>8&255]^u[255&m]^e[g+3],g+=4,d=w,y=h,m=p;for(let t=0;t<4;t++)o[n?3&-t:t]=l[d>>>24]<<24^l[y>>16&255]<<16^l[m>>8&255]<<8^l[255&S]^e[g++],w=d,d=y,y=m,m=S,S=w;return o}},it=class{constructor(t,n){this.G=t,this.J=n,this.X=n}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}Z(t){if(255&~(t>>24))t+=1<<24;else{let n=t>>16&255,e=t>>8&255,s=255&t;255===n?(n=0,255===e?(e=0,255===s?s=0:++s):++e):++n,t=0,t+=n<<16,t+=e<<8,t+=s}return t}$(t){0===(t[0]=this.Z(t[0]))&&(t[1]=this.Z(t[1]))}Y(t,n,e){let s;if(!(s=n.length))return[];const r=T.bitLength(n);for(let r=0;r<s;r+=4){this.$(e);const s=t.encrypt(e);n[r]^=s[0],n[r+1]^=s[1],n[r+2]^=s[2],n[r+3]^=s[3]}return T.m(n,r)}},at=E._;let ft=et&&rt&&typeof st.importKey==k,ut=et&&rt&&typeof st.deriveBits==k;class lt extends d{constructor({password:t,rawPassword:n,encryptionStrength:e,checkPasswordOnly:s,checkAuthenticationCode:c=!0}){super({start(){ht(this,t,n,e)},async transform(t,n){const e=this,{password:c,strength:i,nt:a,ready:f}=e;c?(await async function(t,n,e,s){const o=await dt(t,n,e,mt(s,0,Z[n])),c=mt(s,Z[n]);if(o[0]!=c[0]||o[1]!=c[1])throw new r(O)}(e,i,c,mt(t,0,Z[i]+2)),t=mt(t,Z[i]+2),s?n.error(new r(N)):a()):await f;const u=new o(t.length-tt-(t.length-tt)%G);n.enqueue(pt(e,t,u,0,tt,!0))},async flush(t){const{et:n,st:e,ot:s,ready:o}=this;if(e&&n){await o;const i=mt(s,0,s.length-tt),a=mt(s,s.length-tt);let f=z;if(i.length){const t=gt(ot,i);e.update(t);const s=n.update(t);f=St(ot,s)}const u=mt(St(ot,e.digest()),0,tt);let l=s.length<tt?1:0;for(let t=0;t<tt;t++)l|=u[t]^a[t];if(l&&c)throw new r(H);t.enqueue(f)}}})}}class wt extends d{constructor({password:t,rawPassword:n,encryptionStrength:e}){super({start(){ht(this,t,n,e)},async transform(t,n){const e=this,{password:s,strength:r,nt:c,ready:i}=e;let a=z;s?(a=await async function(t,n,e){const s=q(new o(Z[n]));return W(s,await dt(t,n,e,s))}(e,r,s),c()):await i;const f=new o(a.length+t.length-t.length%G);f.set(a,0),n.enqueue(pt(e,t,f,a.length,0))},async flush(t){const{et:n,st:e,ot:s,ready:r}=this;if(e&&n){await r;let o=z;if(s.length){const t=n.update(gt(ot,s));e.update(t),o=St(ot,t)}const c=St(ot,e.digest()).slice(0,tt);t.enqueue(W(o,c))}}})}}function ht(t,e,s,r){n.assign(t,{ready:new l(n=>t.nt=n),password:yt(e,s),strength:r-1,ot:z})}function pt(t,n,e,s,r,c){const{et:i,st:a,ot:f}=t;f.length&&(n=W(f,n));const u=n.length-r;let l;for(e=function(t,n){if(n&&n>t.length){const e=t;(t=new o(n)).set(e,0)}return t}(e,s+(u-u%G)),l=0;l<=u-G;l+=G){const t=gt(ot,mt(n,l,l+G));c&&a.update(t);const r=i.update(t);c||a.update(r),e.set(St(ot,r),l+s)}return t.ot=mt(n,l),e}async function dt(e,s,r,c){e.password=null;const i=await async function(t,n,e,s,r){if(!ft)return E.importKey(n);try{return await st.importKey("raw",n,e,!1,r)}catch{return ft=!1,E.importKey(n)}}(0,r,Q,0,Y),a=await async function(t,n,e){if(!ut)return E.T(n,t.salt,X.iterations,e);try{return await st.deriveBits(t,n,e)}catch{return ut=!1,E.T(n,t.salt,X.iterations,e)}}(n.assign({salt:c},X),i,8*(2*$[s]+2)),f=new o(a),u=gt(ot,mt(f,0,$[s])),l=gt(ot,mt(f,$[s],2*$[s])),w=mt(f,2*$[s]);return n.assign(e,{keys:{key:u,ct:l,passwordVerification:w},et:new it(new ct(u),t.from(nt)),st:new at(l)}),w}function yt(t,n){return n===v?function(t){if(typeof w==b){t=unescape(encodeURIComponent(t));const n=new o(t.length);for(let e=0;e<n.length;e++)n[e]=t.charCodeAt(e);return n}return(new w).encode(t)}(t):n}function mt(t,n,e){return t.subarray(n,e)}function St(t,n){return t.v(n)}function gt(t,n){return t.C(n)}class vt extends d{constructor({password:t,rawPassword:n,passwordVerification:e,checkPasswordOnly:s}){super({start(){kt(this,t,n,e)},transform(t,n){const e=this;if(e.password||e.rawPassword){const n=zt(e,t.subarray(0,12));if(e.password=e.rawPassword=null,0!=(n[11]^e.passwordVerification))throw new r(O);t=t.subarray(12)}s?n.error(new r(N)):n.enqueue(zt(e,t))}})}}class bt extends d{constructor({password:t,rawPassword:n,passwordVerification:e}){super({start(){kt(this,t,n,e)},transform(t,n){const e=this;let s,r;if(e.password||e.rawPassword){e.password=e.rawPassword=null;const n=q(new o(12));n[11]=e.passwordVerification,s=new o(t.length+n.length),s.set(Ct(e,n),0),r=12}else s=new o(t.length),r=0;s.set(Ct(e,t),r),n.enqueue(s)}})}}function kt(t,e,s,r){n.assign(t,{password:e,rawPassword:s,passwordVerification:r}),function(t,e,s){const r=[305419896,591751049,878082192];if(n.assign(t,{keys:r,it:new R(r[0]),ft:new R(r[2])}),s)for(let n=0;n<s.length;n++)It(t,s[n]);else for(let n=0;n<e.length;n++)It(t,e.charCodeAt(n))}(t,e,s)}function zt(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=At(t)^n[s],It(t,e[s]);return e}function Ct(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=At(t)^n[s],It(t,n[s]);return e}function It(t,n){let[,e]=t.keys;t.it.append([n]);const r=~t.it.get();e=Mt(s.imul(Mt(e+xt(r)),134775813)+1),t.ft.append([e>>>24]);const o=~t.ft.get();t.keys=[r,e,o]}function At(t){const n=2|t.keys[2];return xt(s.imul(n,1^n)>>>8)}function xt(t){return 255&t}function Mt(t){return 4294967295&t}function Pt(t){if(t instanceof y)return t;const n=t.getReader();return new y({async pull(t){const{value:e,done:s}=await n.read();s?t.close():t.enqueue(e)},cancel:t=>n.cancel(t)})}const Bt=new f;function Dt(t){return Bt.get(t)}const Ft="Invalid uncompressed size",Rt=j,Ut="deflate-raw",Wt="gzip",_t=[31,139,8];class Tt extends d{constructor(t,{chunkSize:n,CompressionStreamFallback:e,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:c,zipCrypto:i,computeCrc32:a,level:f,deflate64:l,format:w,compressionMethod:h,inputSize:p}=t,d=this;let y,m,S,g=super.readable;const v=w&&Dt(w),b=a&&r&&!l&&!v&&(!o||i)&&Boolean(c&&s);if(o&&!i||!a||b||(y=new U,g=Ht(g,y)),r)if(v)g=Nt(g,Ot(v.CompressionStream,w,{level:f,chunkSize:n,compressionMethod:h,uncompressedSize:p}));else if(b)S=new Vt,g=Nt(g,new s(Wt)),g=Ht(g,S);else try{g=jt(g,c,{level:f,chunkSize:n},s,e)}catch(t){let n;try{n=new s(Wt)}catch{throw t}g=Nt(g,n),g=Ht(g,new Vt)}o&&(i?g=Ht(g,new bt(t)):(m=new wt(t),g=Ht(g,m))),Lt(d,g,()=>{o&&!i||!a||(d.crc32=b?S.crc32:new u(y.value.buffer).getUint32(0))})}}class Vt extends d{constructor(){let t,n=10,e=new o(0);super({transform(t,r){if(n){const e=s.min(n,t.length);if(n-=e,!(t=t.subarray(e)).length)return}const o=e.length+t.length;if(o<=8)return void(e=W(e,t));const c=o-8,i=s.min(c,e.length);r.enqueue(W(e.subarray(0,i),t.subarray(0,c-i))),e=W(e.subarray(i),t.subarray(c-i))},flush(){const n=_(e);t.crc32=n.getUint32(0,!0),t.uncompressedSize=n.getUint32(4,!0)}}),t=this}}class Kt extends d{constructor(t,{chunkSize:n,DecompressionStreamFallback:e,DecompressionStream:s}){super({});const{zipCrypto:c,encrypted:i,checkCrc32:a,crc32:f,compressed:w,useCompressionStream:h,deflate64:p,format:m,compressionMethod:S,rawBitFlag:g,outputSize:b}=t;let k,z,C=super.readable;if(i&&(c?C=Ht(C,new vt(t)):(z=new lt(t),C=Ht(C,z))),w){const t=m&&Dt(m);if(t)C=Nt(C,Ot(t.DecompressionStream,m,{chunkSize:n,compressionMethod:S,rawBitFlag:g,uncompressedSize:b}));else try{C=jt(C,h,{chunkSize:n,deflate64:p},s,e)}catch(t){if(p||b===v)throw t;let n;try{n=new s(Wt)}catch{throw t}C=function(t,n,e){const s=new R;let c,i,a,f=0,u=!1;const w=new l((t,n)=>{i=t,a=n});w.catch(()=>{}),e||i();const h=new d({start(t){const n=new o(10);n.set(_t),t.enqueue(n)},transform(t,n){n.enqueue(t)},async flush(t){u=!0,y();try{await w}finally{m()}const n=new o(8),r=_(n);r.setUint32(0,s.get(),!0),r.setUint32(4,e,!0),t.enqueue(n)},cancel(t){a(t)}}),p=new d({transform(t,n){s.append(t),f+=t.length,f>=e?i():u&&y(),n.enqueue(t)},cancel(t){a(t)}});return t=Ht(t,h),Ht(t=Nt(t,n),p);function y(){m(),c=setTimeout(()=>a(new r(Ft)),5e3)}function m(){clearTimeout(c)}}(C,n,b)}C=function(t){const n=t.getReader();return new y({async pull(t){let e;try{e=await n.read()}catch(t){if(t&&t.message)throw t;const n=new r("Invalid compressed data");throw n.cause=t,n}const{value:s,done:o}=e;o?t.close():t.enqueue(s)},cancel:t=>n.cancel(t)})}(C)}a&&(k=new U,C=Ht(C,k)),Lt(this,C,()=>{if(a){const t=new u(k.value.buffer);if(f!=t.getUint32(0,!1))throw new r(Rt)}})}}const Et=new f;function Lt(t,e,s){e=Ht(e,new d({flush:s})),n.defineProperty(t,"readable",{get:()=>e})}function Ot(t,n,e){if(!t)throw new r("Compression method not supported");return new t(n,e)}function jt(t,n,e,s,r){const o=n&&s?s:r||s,c=e.deflate64?"deflate64-raw":Ut;let i;try{i=new o(c,e)}catch(t){if(!n||!r||o==r)throw t;i=new r(c,e)}return Nt(t,i)}function Ht(t,n){return Pt(t).pipeThrough(n)}function Nt(t,n){const e=n.writable.getWriter(),s=t.getReader();return async function(){try{for(;;){await e.ready;const t=await s.read();if(t.done){await e.close();break}await e.write(t.value)}}catch(t){await async function(t,n){try{await t.abort(n)}catch{}}(e,t),await async function(t,n){try{await t.cancel(n)}catch{}}(s,t)}}(),n.readable}const qt="data",Gt="close",Jt="deflate";class Qt extends d{constructor(t,e){super({});const s=this,{codecType:o}=t;let c;o.startsWith(Jt)?c=Tt:o.startsWith("inflate")&&(c=Kt),s.outputSize=0;let i=0;const a=new c(t,e),f=super.readable,u=new d({transform(t,n){t&&t.length&&(i+=t.length,n.enqueue(t))},flush(){n.assign(s,{inputSize:i})}}),l=new d({transform(n,e){if(n&&n.length&&(e.enqueue(n),s.outputSize+=n.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r(Ft)},flush(){const{crc32:t}=a;n.assign(s,{crc32:t,inputSize:i})}});n.defineProperty(s,"readable",{get:()=>f.pipeThrough(u).pipeThrough(a).pipeThrough(l)})}}class Xt extends d{constructor(t){const n=[];let s=0;function r(){const e=new o(t);let r=0;for(;r<t;){const s=n[0],o=t-r;s.length<=o?(e.set(s,r),r+=s.length,n.shift()):(e.set(s.subarray(0,o),r),n[0]=s.subarray(o),r+=o)}return s-=t,e}(!e.isFinite(t)||t<1)&&(t=65536),super({transform(e,o){for(n.push(e),s+=e.length;s>t;)o.enqueue(r())},flush(t){s&&t.enqueue(function(t,n){const e=new o(n);let s=0;for(const n of t)e.set(n,s),s+=n.length;return e}(n,s))}})}}let Yt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Yt=navigator.hardwareConcurrency)}catch{}const Zt=new f,$t=new f;let tn,nn=0;async function en(t){let n,o;try{const{options:c,config:i}=t;if(c.format)try{await async function(t,n){!Bt.has(t)&&n&&function(t,n){const{CompressionStream:e,DecompressionStream:s}=n;if(typeof e!=k&&typeof s!=k)throw new r("Invalid codec module");Bt.set(t,{CompressionStream:e,DecompressionStream:s})}(t,await(import(n)))}(c.format,c.codecURI)}catch(t){throw t.codecImportFailed=!0,t}if(i.CompressionStream=self.CompressionStream,i.DecompressionStream=self.DecompressionStream,c.compressed&&!c.format)if(c.useCompressionStream){if(!function(t,n){if(!t)return!1;let e=Et.get(t);e||(e=new f,Et.set(t,e));let s=e.get(n);if(s===v){try{new t(n),s=!0}catch{s=!1}e.set(n,s)}return s}(c.codecType.startsWith(Jt)?i.CompressionStream:i.DecompressionStream,Ut))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{c.useCompressionStream=!0}!i.CompressionStreamFallback&&i.CompressionStreamZlib&&(i.CompressionStreamFallback=i.CompressionStreamZlib),!i.DecompressionStreamFallback&&i.DecompressionStreamZlib&&(i.DecompressionStreamFallback=i.DecompressionStreamZlib);const a={highWaterMark:1},u=t.readable?Pt(t.readable):new y({async pull(t){const n=new l(t=>Zt.set(nn,t));sn({type:"pull",messageId:nn}),nn=(nn+1)%e.MAX_SAFE_INTEGER;const{value:s,done:r}=await n;t.enqueue(s),r&&t.close()}},a);o=t.writable?function(t){if(t instanceof m)return t;const n=t.getWriter();return new m({write:t=>n.write(t),close:()=>n.close(),abort:t=>n.abort(t)})}(t.writable):new m({async write(t){let n;const s=new l(t=>n=t);$t.set(nn,n),sn({type:qt,value:t,messageId:nn}),nn=(nn+1)%e.MAX_SAFE_INTEGER,await s}},a),n=new Qt(c,i),tn=new AbortController;const{signal:w}=tn;await u.pipeThrough(n).pipeThrough(new Xt(function(t){return r="string"==typeof(n=r=t.chunkSize)&&n.trim()?e(n):n,e.isInteger(r)&&r>=1?s.max(r,64):65536;var n,r}(i))).pipeTo(o,{signal:w,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{crc32:h,inputSize:p,outputSize:d}=n;sn({type:Gt,result:{crc32:h,inputSize:p,outputSize:d}})}catch(t){if(t.outputSize=n?n.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}rn(t)}}function sn(t){const{value:n}=t;if(n)if(n.length)try{t.value=(e=n,e.byteOffset||e.byteLength!=e.buffer.byteLength?new o(e):e).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var e}function rn(t=new r("Unknown error")){const{message:n,stack:e,code:s,name:o,outputSize:c,cause:i,codecImportFailed:a}=t,f={message:n,stack:e,code:s,name:o,outputSize:c};i&&(f.cause={name:i.name,message:i.message}),a&&(f.codecImportFailed=!0),p({error:f})}addEventListener("message",({data:t})=>{const{type:n,messageId:e,value:s,done:r}=t;try{if("start"==n&&en(t),n==qt){const t=Zt.get(e);Zt.delete(e),t({value:s||new o,done:r})}if("ack"==n){const t=$t.get(e);$t.delete(e),t()}n==Gt&&tn.abort()}catch(t){rn(t)}}),p({type:"ready"});const on="deflate",cn="deflate-raw",an="deflate64-raw",fn="gzip";let un,ln,wn,hn,pn;function dn(t,n,e={}){if(!un){const t=new r("WASM module not loaded");throw t.cause=pn,t}const c="number"==typeof e.level?e.level:-1,i="number"==typeof e.outBuffer?e.outBuffer:65536,a="number"==typeof e.inBufferSize?e.inBufferSize:65536;return new d({start(){try{let e;if(this.ut=ln(i),this.in=ln(a),this.inBufferSize=a,!this.ut||!this.in)throw new r("allocation failed");if(this.lt=new o(i),t?(this.wt=un.deflate_process,this.ht=un.deflate_last_consumed,this.yt=un.deflate_end,this.St=un.deflate_new(),e=n===fn?un.deflate_init_gzip(this.St,c):n===cn?un.deflate_init_raw(this.St,c):un.deflate_init(this.St,c)):n===an?(this.wt=un.inflate9_process,this.ht=un.inflate9_last_consumed,this.yt=un.inflate9_end,this.St=un.inflate9_new(),e=un.inflate9_init_raw(this.St)):(this.wt=un.inflate_process,this.ht=un.inflate_last_consumed,this.yt=un.inflate_end,this.St=un.inflate_new(),e=n===cn?un.inflate_init_raw(this.St):n===fn?un.inflate_init_gzip(this.St):un.inflate_init(this.St)),0!==e)throw new r("init failed:"+e)}catch(t){throw f(this),t}},transform(n,e){try{const c=n,a=new o(hn.buffer),f=this.wt,u=this.ht,l=this.ut,w=this.lt;let h=0;for(;h<c.length;){const n=s.min(c.length-h,32768);if((!this.in||this.inBufferSize<n)&&(this.in&&wn&&(wn(this.in),this.in=0),this.in=ln(n),this.inBufferSize=n,!this.in))throw new r("allocation failed");a.set(c.subarray(h,h+n),this.in);const o=f(this.St,this.in,n,l,i,0),p=16777215&o;if(p&&(w.set(a.subarray(l,l+p),0),e.enqueue(w.slice(0,p))),!t){const t=o>>24&255,n=128&t?t-256:t;if(n<0)throw new r("process error:"+n)}const d=u(this.St);if(0===d)break;h+=d}}catch(t){f(this),e.error(t)}},flush(n){try{const e=new o(hn.buffer),s=this.wt,c=this.ut,a=this.lt;for(;;){const o=s(this.St,0,0,c,i,4),f=16777215&o,u=o>>24&255;if(!t){const t=128&u?u-256:u;if(t<0)throw new r("process error:"+t)}if(f&&(a.set(e.subarray(c,c+f),0),n.enqueue(a.slice(0,f))),1===u||0===f)break}}catch(t){n.error(t)}finally{const t=f(this);0!==t&&n.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let n=0;return t.St&&t.yt&&(n=t.yt(t.St)),t.St=0,t.in&&wn&&wn(t.in),t.in=0,t.ut&&wn&&wn(t.ut),t.ut=0,n}}class yn{constructor(t=on,n){return dn(!0,t,n)}}class mn{constructor(t=on,n){return dn(!1,t,n)}}yn.gt=!0,mn.gt=!0,yn.vt=[on,cn,fn],mn.vt=[on,cn,fn,an];let Sn=!1;!function(t={}){const{init:n}=t,e=t.CompressionStreamFallback||t.CompressionStreamZlib,s=t.DecompressionStreamFallback||t.DecompressionStreamZlib;self.initModule=async t=>{n&&await n(t),e&&(t.CompressionStreamFallback=e),s&&(t.DecompressionStreamFallback=s)}}({CompressionStreamFallback:yn,DecompressionStreamFallback:mn,init:t=>async function(t,{baseURI:n}){if(!Sn)try{await async function(t,n){let e,s;try{try{s=new URL(t,n)}catch{}const r=await fetch(s);e=await r.arrayBuffer()}catch(n){if(!t.startsWith("data:application/wasm;base64,"))throw n;e=function(t){const n=t.split(",")[1],e=atob(n),s=e.length,r=new o(s);for(let t=0;t<s;++t)r[t]=e.charCodeAt(t);return r.buffer}(t)}!function(t){if(un=t,({malloc:ln,free:wn,memory:hn}=un),"function"!=typeof ln||"function"!=typeof wn||!hn)throw un=ln=wn=hn=null,new r("Invalid WASM module")}((await WebAssembly.instantiate(e)).instance.exports)}(t,n),Sn=!0}catch(t){throw function(t){pn=t}(t),t}}(t.wasmURI,t)})});\n';if("string"==typeof s&&(s=(new TextEncoder).encode(s)),t){const t=new Blob([s],{type:n});return URL.createObjectURL(t)}return "data:"+n+";base64,"+function(t){let n="";const s=t.length;let r=0;for(;r+2<s;r+=3){const s=t[r]<<16|t[r+1]<<8|t[r+2];n+=e$1[s>>18&63]+e$1[s>>12&63]+e$1[s>>6&63]+e$1[63&s];}const o=s-r;if(1===o){const s=t[r]<<16;n+=e$1[s>>18&63]+e$1[s>>12&63]+"==";}else if(2===o){const s=t[r]<<16|t[r+1]<<8;n+=e$1[s>>18&63]+e$1[s>>12&63]+e$1[s>>6&63]+"=";}return n}(s)}});
|
|
417
|
+
const t$1=new Uint8Array(288);t$1.fill(8,0,144),t$1.fill(9,144,256),t$1.fill(7,256,280),t$1.fill(8,280,288),new Uint8Array(30).fill(5);const e$1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n$1=t=>t({workerURI:t=>{const n="text/javascript";let s='!function(t){"function"==typeof define&&define.amd?define(t):t()}(function(){"use strict";const{Array:t,Object:n,Number:e,Math:s,Error:r,Uint8Array:o,Uint16Array:c,Uint32Array:i,Int32Array:a,Map:f,DataView:u,Promise:l,TextEncoder:w,crypto:h,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:S,DecompressionStream:g}=self,v=void 0,b="undefined",k="function",z=new o,C=[[],[],[],[],[],[],[],[]];for(let t=0;t<256;t++){let n=t;for(let t=0;t<8;t++)n=1&n?n>>>1^3988292384:n>>>1;C[0][t]=n}for(let t=0;t<256;t++)for(let n=1;n<8;n++){const e=C[n-1][t];C[n][t]=e>>>8^C[0][255&e]}const[I,A,x,M,P,B,D,F]=C;class R{constructor(t){this.o=t||-1}append(t){let n=0|this.o;const e=0|t.length;let s=0;if(e>=8&&t.buffer){const r=new u(t.buffer,t.byteOffset,e),o=e-8;for(;s<=o;s+=8){const t=n^r.getInt32(s,!0),e=r.getInt32(s+4,!0);n=F[255&t]^D[t>>>8&255]^B[t>>>16&255]^P[t>>>24&255]^M[255&e]^x[e>>>8&255]^A[e>>>16&255]^I[e>>>24&255]}}for(;s<e;s++)n=n>>>8^I[255&(n^t[s])];this.o=n}get(){return~this.o}}class U extends d{constructor(){let t;const n=new R;super({transform(t,e){n.append(t),e.enqueue(t)},flush(){const e=new o(4);new u(e.buffer).setUint32(0,n.get()),t.value=e}}),t=this}}function W(t,n){const e=new o(t.length+n.length);return e.set(t),e.set(n,t.length),e}function _(t){return new u(t.buffer,t.byteOffset,t.byteLength)}const T={concat(t,n){if(0===t.length||0===n.length)return t.concat(n);const e=t[t.length-1],s=T.l(e);return 32===s?t.concat(n):T.h(n,s,0|e,t.slice(0,t.length-1))},bitLength(t){const n=t.length;if(0===n)return 0;const e=t[n-1];return 32*(n-1)+T.l(e)},m(t,n){if(32*t.length<n)return t;const e=(t=t.slice(0,s.ceil(n/32))).length;return n&=31,e>0&&n&&(t[e-1]=T.S(n,t[e-1]&2147483648>>n-1,1)),t},S:(t,n,e)=>32===t?n:(e?0|n:n<<32-t)+1099511627776*t,l:t=>s.round(t/1099511627776)||32,h(t,n,e,s){for(void 0===s&&(s=[]);n>=32;n-=32)s.push(e),e=0;if(0===n)return s.concat(t);for(let r=0;r<t.length;r++)s.push(e|t[r]>>>n),e=t[r]<<32-n;const r=t.length?t[t.length-1]:0,o=T.l(r);return s.push(T.S(n+o&31,n+o>32?e:s.pop(),1)),s}},V={bytes:{v(t){const n=T.bitLength(t)/8,e=new o(n);let s;for(let r=0;r<n;r++)3&r||(s=t[r/4]),e[r]=s>>>24,s<<=8;return e},C(t){const n=[];let e,s=0;for(e=0;e<t.length;e++)s=s<<8|t[e],3&~e||(n.push(s),s=0);return 3&e&&n.push(T.S(8*(3&e),s)),n}}},K=class{constructor(t){const n=this;n.blockSize=512,n.I=[1732584193,4023233417,2562383102,271733878,3285377520],n.A=[1518500249,1859775393,2400959708,3395469782],t?(n.M=t.M.slice(0),n.P=t.P.slice(0),n.B=t.B):n.reset()}reset(){const t=this;return t.M=t.I.slice(0),t.P=[],t.B=0,t}update(t){const n=this;"string"==typeof t&&(t=V.D.C(t));const e=n.P=T.concat(n.P,t),s=n.B,o=n.B=s+T.bitLength(t);if(o>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const c=new i(e);let a=0;for(let t=n.blockSize+s-(n.blockSize+s&n.blockSize-1);t<=o;t+=n.blockSize)n.F(c.subarray(16*a,16*(a+1))),a+=1;return e.splice(0,16*a),n}R(){const t=this;let n=t.P;const e=t.M;n=T.concat(n,[T.S(1,1)]);for(let t=n.length+2;15&t;t++)n.push(0);for(n.push(s.floor(t.B/4294967296)),n.push(0|t.B);n.length;)t.F(n.splice(0,16));return t.reset(),e}U(t,n,e,s){return t<=19?n&e|~n&s:t<=39?n^e^s:t<=59?n&e|n&s|e&s:t<=79?n^e^s:void 0}W(t,n){return n<<t|n>>>32-t}F(n){const e=this,r=e.M,o=t(80);for(let t=0;t<16;t++)o[t]=n[t];let c=r[0],i=r[1],a=r[2],f=r[3],u=r[4];for(let t=0;t<=79;t++){t>=16&&(o[t]=e.W(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const n=e.W(5,c)+e.U(t,i,a,f)+u+o[t]+e.A[s.floor(t/20)]|0;u=f,f=a,a=e.W(30,i),i=c,c=n}r[0]=r[0]+c|0,r[1]=r[1]+i|0,r[2]=r[2]+a|0,r[3]=r[3]+f|0,r[4]=r[4]+u|0}},E={importKey:t=>new E._(V.bytes.C(t)),T(t,n,e,s){if(e=e||1e4,s<0||e<0)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let c,i,a,f,l;const w=new ArrayBuffer(o),h=new u(w);let p=0;const d=T;for(n=V.bytes.C(n),l=1;p<(o||1);l++){for(c=i=t.encrypt(d.concat(n,[l])),a=1;a<e;a++)for(i=t.encrypt(i),f=0;f<i.length;f++)c[f]^=i[f];for(a=0;p<(o||1)&&a<c.length;a++)h.setInt32(p,c[a]),p+=4}return w.slice(0,s/8)},_:class{constructor(t){const n=this,e=n.V=K,s=[[],[]];n.K=[new e,new e];const r=n.K[0].blockSize/32;t.length>r&&(t=(new e).update(t).R());for(let n=0;n<r;n++)s[0][n]=909522486^t[n],s[1][n]=1549556828^t[n];n.K[0].update(s[0]),n.K[1].update(s[1]),n.L=new e(n.K[0])}reset(){const t=this;t.L=new t.V(t.K[0]),t.O=!1}update(t){this.O=!0,this.L.update(t)}digest(){const t=this,n=t.L.R(),e=new t.V(t.K[1]).update(n).R();return t.reset(),e}encrypt(t){if(this.O)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},L=typeof h!=b&&typeof h.getRandomValues==k,O="Invalid password",j="zipjs-abort-check-password";function H(t){if(L)return h.getRandomValues(t);throw new r("Crypto API not supported")}const N=16,q={name:"PBKDF2"},G=n.assign({hash:{name:"HMAC"}},q),J=n.assign({iterations:1e3,hash:{name:"SHA-1"}},q),Q=["deriveBits"],X=[8,12,16],Y=[16,24,32],Z=10,$=[0,0,0,0],tt=typeof h!=b,nt=tt&&h.subtle,et=tt&&typeof nt!=b,st=V.bytes,rt=class{constructor(t){const n=this;n.j=[[[],[],[],[],[]],[[],[],[],[],[]]],n.j[0][0][0]||n.H();const e=n.j[0][4],s=n.j[1],o=t.length;let c,i,a,f=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(n.A=[i=t.slice(0),a=[]],c=o;c<4*o+28;c++){let t=i[c-1];(c%o===0||8===o&&c%o===4)&&(t=e[t>>>24]<<24^e[t>>16&255]<<16^e[t>>8&255]<<8^e[255&t],c%o===0&&(t=t<<8^t>>>24^f<<24,f=f<<1^283*(f>>7))),i[c]=i[c-o]^t}for(let t=0;c;t++,c--){const n=i[3&t?c:c-4];a[t]=c<=4||t<4?n:s[0][e[n>>>24]]^s[1][e[n>>16&255]]^s[2][e[n>>8&255]]^s[3][e[255&n]]}}encrypt(t){return this.N(t,0)}decrypt(t){return this.N(t,1)}H(){const t=this.j[0],n=this.j[1],e=t[4],s=n[4],r=[],o=[];let c,i,a,f;for(let t=0;t<256;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let u=c=0;!e[u];u^=i||1,c=o[c]||1){let o=c^c<<1^c<<2^c<<3^c<<4;o=o>>8^255&o^99,e[u]=o,s[o]=u,f=r[a=r[i=r[u]]];let l=16843009*f^65537*a^257*i^16843008*u,w=257*r[o]^16843008*o;for(let e=0;e<4;e++)t[e][u]=w=w<<24^w>>>8,n[e][o]=l=l<<24^l>>>8}for(let e=0;e<5;e++)t[e]=t[e].slice(0),n[e]=n[e].slice(0)}N(t,n){if(4!==t.length)throw new r("invalid aes block size");const e=this.A[n],s=e.length/4-2,o=[0,0,0,0],c=this.j[n],i=c[0],a=c[1],f=c[2],u=c[3],l=c[4];let w,h,p,d=t[0]^e[0],y=t[n?3:1]^e[1],m=t[2]^e[2],S=t[n?1:3]^e[3],g=4;for(let t=0;t<s;t++)w=i[d>>>24]^a[y>>16&255]^f[m>>8&255]^u[255&S]^e[g],h=i[y>>>24]^a[m>>16&255]^f[S>>8&255]^u[255&d]^e[g+1],p=i[m>>>24]^a[S>>16&255]^f[d>>8&255]^u[255&y]^e[g+2],S=i[S>>>24]^a[d>>16&255]^f[y>>8&255]^u[255&m]^e[g+3],g+=4,d=w,y=h,m=p;for(let t=0;t<4;t++)o[n?3&-t:t]=l[d>>>24]<<24^l[y>>16&255]<<16^l[m>>8&255]<<8^l[255&S]^e[g++],w=d,d=y,y=m,m=S,S=w;return o}},ot=class{constructor(t,n){this.G=t,this.J=n,this.X=n}reset(){this.X=this.J}update(t){return this.Y(this.G,t,this.X)}Z(t){if(255&~(t>>24))t+=1<<24;else{let n=t>>16&255,e=t>>8&255,s=255&t;255===n?(n=0,255===e?(e=0,255===s?s=0:++s):++e):++n,t=0,t+=n<<16,t+=e<<8,t+=s}return t}$(t){0===(t[0]=this.Z(t[0]))&&(t[1]=this.Z(t[1]))}Y(t,n,e){let s;if(!(s=n.length))return[];const r=T.bitLength(n);for(let r=0;r<s;r+=4){this.$(e);const s=t.encrypt(e);n[r]^=s[0],n[r+1]^=s[1],n[r+2]^=s[2],n[r+3]^=s[3]}return T.m(n,r)}},ct=E._;let it=tt&&et&&typeof nt.importKey==k,at=tt&&et&&typeof nt.deriveBits==k;class ft extends d{constructor({password:t,rawPassword:n,encryptionStrength:e,checkPasswordOnly:s,checkAuthenticationCode:c=!0}){super({start(){lt(this,t,n,e)},async transform(t,n){const e=this,{password:c,strength:i,nt:a,ready:f}=e;c?(await async function(t,n,e,s){const o=await ht(t,n,e,dt(s,0,X[n])),c=dt(s,X[n]);if(o[0]!=c[0]||o[1]!=c[1])throw new r(O)}(e,i,c,dt(t,0,X[i]+2)),t=dt(t,X[i]+2),s?n.error(new r(j)):a()):await f;const u=new o(t.length-Z-(t.length-Z)%N);n.enqueue(wt(e,t,u,0,Z,!0))},async flush(t){const{et:n,st:e,ot:s,ready:o}=this;if(e&&n){await o;const i=dt(s,0,s.length-Z),a=dt(s,s.length-Z);let f=z;if(i.length){const t=mt(st,i);e.update(t);const s=n.update(t);f=yt(st,s)}const u=dt(yt(st,e.digest()),0,Z);let l=s.length<Z?1:0;for(let t=0;t<Z;t++)l|=u[t]^a[t];if(l&&c)throw new r("Invalid authentication code");t.enqueue(f)}}})}}class ut extends d{constructor({password:t,rawPassword:n,encryptionStrength:e}){super({start(){lt(this,t,n,e)},async transform(t,n){const e=this,{password:s,strength:r,nt:c,ready:i}=e;let a=z;s?(a=await async function(t,n,e){const s=H(new o(X[n]));return W(s,await ht(t,n,e,s))}(e,r,s),c()):await i;const f=new o(a.length+t.length-t.length%N);f.set(a,0),n.enqueue(wt(e,t,f,a.length,0))},async flush(t){const{et:n,st:e,ot:s,ready:r}=this;if(e&&n){await r;let o=z;if(s.length){const t=n.update(mt(st,s));e.update(t),o=yt(st,t)}const c=yt(st,e.digest()).slice(0,Z);t.enqueue(W(o,c))}}})}}function lt(t,e,s,r){n.assign(t,{ready:new l(n=>t.nt=n),password:pt(e,s),strength:r-1,ot:z})}function wt(t,n,e,s,r,c){const{et:i,st:a,ot:f}=t;f.length&&(n=W(f,n));const u=n.length-r;let l;for(e=function(t,n){if(n&&n>t.length){const e=t;(t=new o(n)).set(e,0)}return t}(e,s+(u-u%N)),l=0;l<=u-N;l+=N){const t=mt(st,dt(n,l,l+N));c&&a.update(t);const r=i.update(t);c||a.update(r),e.set(yt(st,r),l+s)}return t.ot=dt(n,l),e}async function ht(e,s,r,c){e.password=null;const i=await async function(t,n,e,s,r){if(!it)return E.importKey(n);try{return await nt.importKey("raw",n,e,!1,r)}catch{return it=!1,E.importKey(n)}}(0,r,G,0,Q),a=await async function(t,n,e){if(!at)return E.T(n,t.salt,J.iterations,e);try{return await nt.deriveBits(t,n,e)}catch{return at=!1,E.T(n,t.salt,J.iterations,e)}}(n.assign({salt:c},J),i,8*(2*Y[s]+2)),f=new o(a),u=mt(st,dt(f,0,Y[s])),l=mt(st,dt(f,Y[s],2*Y[s])),w=dt(f,2*Y[s]);return n.assign(e,{keys:{key:u,ct:l,passwordVerification:w},et:new ot(new rt(u),t.from($)),st:new ct(l)}),w}function pt(t,n){return n===v?function(t){if(typeof w==b){t=unescape(encodeURIComponent(t));const n=new o(t.length);for(let e=0;e<n.length;e++)n[e]=t.charCodeAt(e);return n}return(new w).encode(t)}(t):n}function dt(t,n,e){return t.subarray(n,e)}function yt(t,n){return t.v(n)}function mt(t,n){return t.C(n)}class St extends d{constructor({password:t,rawPassword:n,passwordVerification:e,checkPasswordOnly:s}){super({start(){vt(this,t,n,e)},transform(t,n){const e=this;if(e.password||e.rawPassword){const n=bt(e,t.subarray(0,12));if(e.password=e.rawPassword=null,0!=(n[11]^e.passwordVerification))throw new r(O);t=t.subarray(12)}s?n.error(new r(j)):n.enqueue(bt(e,t))}})}}class gt extends d{constructor({password:t,rawPassword:n,passwordVerification:e}){super({start(){vt(this,t,n,e)},transform(t,n){const e=this;let s,r;if(e.password||e.rawPassword){e.password=e.rawPassword=null;const n=H(new o(12));n[11]=e.passwordVerification,s=new o(t.length+n.length),s.set(kt(e,n),0),r=12}else s=new o(t.length),r=0;s.set(kt(e,t),r),n.enqueue(s)}})}}function vt(t,e,s,r){n.assign(t,{password:e,rawPassword:s,passwordVerification:r}),function(t,e,s){const r=[305419896,591751049,878082192];if(n.assign(t,{keys:r,it:new R(r[0]),ft:new R(r[2])}),s)for(let n=0;n<s.length;n++)zt(t,s[n]);else for(let n=0;n<e.length;n++)zt(t,e.charCodeAt(n))}(t,e,s)}function bt(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=Ct(t)^n[s],zt(t,e[s]);return e}function kt(t,n){const e=new o(n.length);for(let s=0;s<n.length;s++)e[s]=Ct(t)^n[s],zt(t,n[s]);return e}function zt(t,n){let[,e]=t.keys;t.it.append([n]);const r=~t.it.get();e=At(s.imul(At(e+It(r)),134775813)+1),t.ft.append([e>>>24]);const o=~t.ft.get();t.keys=[r,e,o]}function Ct(t){const n=2|t.keys[2];return It(s.imul(n,1^n)>>>8)}function It(t){return 255&t}function At(t){return 4294967295&t}function xt(t){if(t instanceof y)return t;const n=t.getReader();return new y({async pull(t){const{value:e,done:s}=await n.read();s?t.close():t.enqueue(e)},cancel:t=>n.cancel(t)})}const Mt=new f;function Pt(t){return Mt.get(t)}const Bt="Invalid uncompressed size",Dt="deflate-raw",Ft="gzip",Rt=[31,139,8];class Ut extends d{constructor(t,{chunkSize:n,CompressionStreamFallback:e,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:c,zipCrypto:i,computeCrc32:a,level:f,deflate64:l,format:w,compressionMethod:h,inputSize:p}=t,d=this;let y,m,S,g=super.readable;const v=w&&Pt(w),b=a&&r&&!l&&!v&&(!o||i)&&Boolean(c&&s);if(o&&!i||!a||b||(y=new U,g=Lt(g,y)),r)if(v)g=Ot(g,Kt(v.CompressionStream,w,{level:f,chunkSize:n,compressionMethod:h,uncompressedSize:p}));else if(b)S=new Wt,g=Ot(g,new s(Ft)),g=Lt(g,S);else try{g=Et(g,c,{level:f,chunkSize:n},s,e)}catch(t){let n;try{n=new s(Ft)}catch{throw t}g=Ot(g,n),g=Lt(g,new Wt)}o&&(i?g=Lt(g,new gt(t)):(m=new ut(t),g=Lt(g,m))),Vt(d,g,()=>{o&&!i||!a||(d.crc32=b?S.crc32:new u(y.value.buffer).getUint32(0))})}}class Wt extends d{constructor(){let t,n=10,e=new o(0);super({transform(t,r){if(n){const e=s.min(n,t.length);if(n-=e,!(t=t.subarray(e)).length)return}const o=e.length+t.length;if(o<=8)return void(e=W(e,t));const c=o-8,i=s.min(c,e.length);r.enqueue(W(e.subarray(0,i),t.subarray(0,c-i))),e=W(e.subarray(i),t.subarray(c-i))},flush(){const n=_(e);t.crc32=n.getUint32(0,!0),t.uncompressedSize=n.getUint32(4,!0)}}),t=this}}class _t extends d{constructor(t,{chunkSize:n,DecompressionStreamFallback:e,DecompressionStream:s}){super({});const{zipCrypto:c,encrypted:i,checkCrc32:a,crc32:f,compressed:w,useCompressionStream:h,deflate64:p,format:m,compressionMethod:S,rawBitFlag:g,outputSize:b}=t;let k,z,C=super.readable;if(i&&(c?C=Lt(C,new St(t)):(z=new ft(t),C=Lt(C,z))),w){const t=m&&Pt(m);if(t)C=Ot(C,Kt(t.DecompressionStream,m,{chunkSize:n,compressionMethod:S,rawBitFlag:g,uncompressedSize:b}));else try{C=Et(C,h,{chunkSize:n,deflate64:p},s,e)}catch(t){if(p||b===v)throw t;let n;try{n=new s(Ft)}catch{throw t}C=function(t,n,e){const s=new R;let c,i,a,f=0,u=!1;const w=new l((t,n)=>{i=t,a=n});w.catch(()=>{}),e||i();const h=new d({start(t){const n=new o(10);n.set(Rt),t.enqueue(n)},transform(t,n){n.enqueue(t)},async flush(t){u=!0,y();try{await w}finally{m()}const n=new o(8),r=_(n);r.setUint32(0,s.get(),!0),r.setUint32(4,e,!0),t.enqueue(n)},cancel(t){a(t)}}),p=new d({transform(t,n){s.append(t),f+=t.length,f>=e?i():u&&y(),n.enqueue(t)},cancel(t){a(t)}});return t=Lt(t,h),Lt(t=Ot(t,n),p);function y(){m(),c=setTimeout(()=>a(new r(Bt)),5e3)}function m(){clearTimeout(c)}}(C,n,b)}C=function(t){const n=t.getReader();return new y({async pull(t){let e;try{e=await n.read()}catch(t){if(t&&t.message)throw t;const n=new r("Invalid compressed data");throw n.cause=t,n}const{value:s,done:o}=e;o?t.close():t.enqueue(s)},cancel:t=>n.cancel(t)})}(C)}a&&(k=new U,C=Lt(C,k)),Vt(this,C,()=>{if(a){const t=new u(k.value.buffer);if(f!=t.getUint32(0,!1))throw new r("Invalid CRC32")}})}}const Tt=new f;function Vt(t,e,s){e=Lt(e,new d({flush:s})),n.defineProperty(t,"readable",{get:()=>e})}function Kt(t,n,e){if(!t)throw new r("Compression method not supported");return new t(n,e)}function Et(t,n,e,s,r){const o=n&&s?s:r||s,c=e.deflate64?"deflate64-raw":Dt;let i;try{i=new o(c,e)}catch(t){if(!n||!r||o==r)throw t;i=new r(c,e)}return Ot(t,i)}function Lt(t,n){return xt(t).pipeThrough(n)}function Ot(t,n){const e=n.writable.getWriter(),s=t.getReader();return async function(){try{for(;;){await e.ready;const t=await s.read();if(t.done){await e.close();break}await e.write(t.value)}}catch(t){await async function(t,n){try{await t.abort(n)}catch{}}(e,t),await async function(t,n){try{await t.cancel(n)}catch{}}(s,t)}}(),n.readable}const jt="data",Ht="close",Nt="deflate";class qt extends d{constructor(t,e){super({});const s=this,{codecType:o}=t;let c;o.startsWith(Nt)?c=Ut:o.startsWith("inflate")&&(c=_t),s.outputSize=0;let i=0;const a=new c(t,e),f=super.readable,u=new d({transform(t,n){t&&t.length&&(i+=t.length,n.enqueue(t))},flush(){n.assign(s,{inputSize:i})}}),l=new d({transform(n,e){if(n&&n.length&&(e.enqueue(n),s.outputSize+=n.length,t.outputSize!==v&&s.outputSize>t.outputSize))throw new r(Bt)},flush(){const{crc32:t}=a;n.assign(s,{crc32:t,inputSize:i})}});n.defineProperty(s,"readable",{get:()=>f.pipeThrough(u).pipeThrough(a).pipeThrough(l)})}}class Gt extends d{constructor(t){const n=[];let s=0;function r(){const e=new o(t);let r=0;for(;r<t;){const s=n[0],o=t-r;s.length<=o?(e.set(s,r),r+=s.length,n.shift()):(e.set(s.subarray(0,o),r),n[0]=s.subarray(o),r+=o)}return s-=t,e}(!e.isFinite(t)||t<1)&&(t=65536),super({transform(e,o){for(n.push(e),s+=e.length;s>t;)o.enqueue(r())},flush(t){s&&t.enqueue(function(t,n){const e=new o(n);let s=0;for(const n of t)e.set(n,s),s+=n.length;return e}(n,s))}})}}let Jt=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(Jt=navigator.hardwareConcurrency)}catch{}const Qt=new f,Xt=new f;let Yt,Zt=0;async function $t(t){let n,o;try{const{options:c,config:i}=t;if(c.format)try{await async function(t,n){!Mt.has(t)&&n&&function(t,n){const{CompressionStream:e,DecompressionStream:s}=n;if(typeof e!=k&&typeof s!=k)throw new r("Invalid codec module");Mt.set(t,{CompressionStream:e,DecompressionStream:s})}(t,await(import(n)))}(c.format,c.codecURI)}catch(t){throw t.codecImportFailed=!0,t}if(i.CompressionStream=self.CompressionStream,i.DecompressionStream=self.DecompressionStream,c.compressed&&!c.format)if(c.useCompressionStream){if(!function(t,n){if(!t)return!1;let e=Tt.get(t);e||(e=new f,Tt.set(t,e));let s=e.get(n);if(s===v){try{new t(n),s=!0}catch{s=!1}e.set(n,s)}return s}(c.codecType.startsWith(Nt)?i.CompressionStream:i.DecompressionStream,Dt))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{c.useCompressionStream=!0}!i.CompressionStreamFallback&&i.CompressionStreamZlib&&(i.CompressionStreamFallback=i.CompressionStreamZlib),!i.DecompressionStreamFallback&&i.DecompressionStreamZlib&&(i.DecompressionStreamFallback=i.DecompressionStreamZlib);const a={highWaterMark:1},u=t.readable?xt(t.readable):new y({async pull(t){const n=new l(t=>Qt.set(Zt,t));tn({type:"pull",messageId:Zt}),Zt=(Zt+1)%e.MAX_SAFE_INTEGER;const{value:s,done:r}=await n;t.enqueue(s),r&&t.close()}},a);o=t.writable?function(t){if(t instanceof m)return t;const n=t.getWriter();return new m({write:t=>n.write(t),close:()=>n.close(),abort:t=>n.abort(t)})}(t.writable):new m({async write(t){let n;const s=new l(t=>n=t);Xt.set(Zt,n),tn({type:jt,value:t,messageId:Zt}),Zt=(Zt+1)%e.MAX_SAFE_INTEGER,await s}},a),n=new qt(c,i),Yt=new AbortController;const{signal:w}=Yt;await u.pipeThrough(n).pipeThrough(new Gt(function(t){return r="string"==typeof(n=r=t.chunkSize)&&n.trim()?e(n):n,e.isInteger(r)&&r>=1?s.max(r,64):65536;var n,r}(i))).pipeTo(o,{signal:w,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{crc32:h,inputSize:p,outputSize:d}=n;tn({type:Ht,result:{crc32:h,inputSize:p,outputSize:d}})}catch(t){if(t.outputSize=n?n.outputSize:0,o&&!o.locked)try{await o.getWriter().close()}catch{}nn(t)}}function tn(t){const{value:n}=t;if(n)if(n.length)try{t.value=(e=n,e.byteOffset||e.byteLength!=e.buffer.byteLength?new o(e):e).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var e}function nn(t=new r("Unknown error")){const{message:n,stack:e,code:s,name:o,outputSize:c,cause:i,codecImportFailed:a}=t,f={message:n,stack:e,code:s,name:o,outputSize:c};i&&(f.cause={name:i.name,message:i.message}),a&&(f.codecImportFailed=!0),p({error:f})}addEventListener("message",({data:t})=>{const{type:n,messageId:e,value:s,done:r}=t;try{if("start"==n&&$t(t),n==jt){const t=Qt.get(e);Qt.delete(e),t({value:s||new o,done:r})}if("ack"==n){const t=Xt.get(e);Xt.delete(e),t()}n==Ht&&Yt.abort()}catch(t){nn(t)}}),p({type:"ready"});const en="deflate",sn="deflate-raw",rn="deflate64-raw",on="gzip";let cn,an,fn,un,ln;function wn(t,n,e={}){if(!cn){const t=new r("WASM module not loaded");throw t.cause=ln,t}const c="number"==typeof e.level?e.level:-1,i="number"==typeof e.outBuffer?e.outBuffer:65536,a="number"==typeof e.inBufferSize?e.inBufferSize:65536;return new d({start(){try{let e;if(this.ut=an(i),this.in=an(a),this.inBufferSize=a,!this.ut||!this.in)throw new r("allocation failed");if(this.lt=new o(i),t?(this.wt=cn.deflate_process,this.ht=cn.deflate_last_consumed,this.yt=cn.deflate_end,this.St=cn.deflate_new(),e=n===on?cn.deflate_init_gzip(this.St,c):n===sn?cn.deflate_init_raw(this.St,c):cn.deflate_init(this.St,c)):n===rn?(this.wt=cn.inflate9_process,this.ht=cn.inflate9_last_consumed,this.yt=cn.inflate9_end,this.St=cn.inflate9_new(),e=cn.inflate9_init_raw(this.St)):(this.wt=cn.inflate_process,this.ht=cn.inflate_last_consumed,this.yt=cn.inflate_end,this.St=cn.inflate_new(),e=n===sn?cn.inflate_init_raw(this.St):n===on?cn.inflate_init_gzip(this.St):cn.inflate_init(this.St)),0!==e)throw new r("init failed:"+e)}catch(t){throw f(this),t}},transform(n,e){try{const c=n,a=new o(un.buffer),f=this.wt,u=this.ht,l=this.ut,w=this.lt;let h=0;for(;h<c.length;){const n=s.min(c.length-h,32768);if((!this.in||this.inBufferSize<n)&&(this.in&&fn&&(fn(this.in),this.in=0),this.in=an(n),this.inBufferSize=n,!this.in))throw new r("allocation failed");a.set(c.subarray(h,h+n),this.in);const o=f(this.St,this.in,n,l,i,0),p=16777215&o;if(p&&(w.set(a.subarray(l,l+p),0),e.enqueue(w.slice(0,p))),!t){const t=o>>24&255,n=128&t?t-256:t;if(n<0)throw new r("process error:"+n)}const d=u(this.St);if(0===d&&0===p)break;h+=d}}catch(t){f(this),e.error(t)}},flush(n){try{const e=new o(un.buffer),s=this.wt,c=this.ut,a=this.lt;for(;;){const o=s(this.St,0,0,c,i,4),f=16777215&o,u=o>>24&255;if(!t){const t=128&u?u-256:u;if(t<0)throw new r("process error:"+t)}if(f&&(a.set(e.subarray(c,c+f),0),n.enqueue(a.slice(0,f))),1===u||0===f)break}}catch(t){n.error(t)}finally{const t=f(this);0!==t&&n.error(new r("end error:"+t))}},cancel(){f(this)}});function f(t){let n=0;return t.St&&t.yt&&(n=t.yt(t.St)),t.St=0,t.in&&fn&&fn(t.in),t.in=0,t.ut&&fn&&fn(t.ut),t.ut=0,n}}class hn{constructor(t=en,n){return wn(!0,t,n)}}class pn{constructor(t=en,n){return wn(!1,t,n)}}hn.gt=!0,pn.gt=!0,hn.vt=[en,sn,on],pn.vt=[en,sn,on,rn];let dn=!1;!function(t={}){const{init:n}=t,e=t.CompressionStreamFallback||t.CompressionStreamZlib,s=t.DecompressionStreamFallback||t.DecompressionStreamZlib;self.initModule=async t=>{n&&await n(t),e&&(t.CompressionStreamFallback=e),s&&(t.DecompressionStreamFallback=s)}}({CompressionStreamFallback:hn,DecompressionStreamFallback:pn,init:t=>async function(t,{baseURI:n}){if(!dn)try{await async function(t,n){let e,s;try{try{s=new URL(t,n)}catch{}const r=await fetch(s);e=await r.arrayBuffer()}catch(n){if(!t.startsWith("data:application/wasm;base64,"))throw n;e=function(t){const n=t.split(",")[1],e=atob(n),s=e.length,r=new o(s);for(let t=0;t<s;++t)r[t]=e.charCodeAt(t);return r.buffer}(t)}!function(t){if(cn=t,({malloc:an,free:fn,memory:un}=cn),"function"!=typeof an||"function"!=typeof fn||!un)throw cn=an=fn=un=null,new r("Invalid WASM module")}((await WebAssembly.instantiate(e)).instance.exports)}(t,n),dn=!0}catch(t){throw function(t){ln=t}(t),t}}(t.wasmURI,t)})});\n';if("string"==typeof s&&(s=(new TextEncoder).encode(s)),t){const t=new Blob([s],{type:n});return URL.createObjectURL(t)}return "data:"+n+";base64,"+function(t){let n="";const s=t.length;let r=0;for(;r+2<s;r+=3){const s=t[r]<<16|t[r+1]<<8|t[r+2];n+=e$1[s>>18&63]+e$1[s>>12&63]+e$1[s>>6&63]+e$1[63&s];}const o=s-r;if(1===o){const s=t[r]<<16;n+=e$1[s>>18&63]+e$1[s>>12&63]+"==";}else if(2===o){const s=t[r]<<16|t[r+1]<<8;n+=e$1[s>>18&63]+e$1[s>>12&63]+e$1[s>>6&63]+"=";}return n}(s)}});
|
|
418
418
|
|
|
419
419
|
/*
|
|
420
420
|
Copyright (c) 2026 Gildas Lormeau. All rights reserved.
|
|
@@ -1463,8 +1463,7 @@
|
|
|
1463
1463
|
const GET_RANDOM_VALUES_SUPPORTED = typeof crypto != UNDEFINED_TYPE && typeof crypto.getRandomValues == FUNCTION_TYPE;
|
|
1464
1464
|
|
|
1465
1465
|
const ERR_INVALID_PASSWORD = "Invalid password";
|
|
1466
|
-
const
|
|
1467
|
-
const ERR_INVALID_AUTHENTICATION_CODE = ERR_INVALID_SIGNATURE;
|
|
1466
|
+
const ERR_INVALID_AUTHENTICATION_CODE = "Invalid authentication code";
|
|
1468
1467
|
const ERR_ABORT_CHECK_PASSWORD = "zipjs-abort-check-password";
|
|
1469
1468
|
const ERR_UNSUPPORTED_CRYPTO_API = "Crypto API not supported";
|
|
1470
1469
|
|
|
@@ -2038,6 +2037,7 @@
|
|
|
2038
2037
|
const ERR_INVALID_CODEC_DEFINITION = "Invalid codec definition";
|
|
2039
2038
|
const ERR_RESERVED_COMPRESSION_METHOD = "Reserved compression method";
|
|
2040
2039
|
const ERR_INVALID_CODEC_MODULE = "Invalid codec module";
|
|
2040
|
+
const ERR_UNSUPPORTED_COMPRESSION = "Compression method not supported";
|
|
2041
2041
|
|
|
2042
2042
|
const RESERVED_COMPRESSION_METHODS = [
|
|
2043
2043
|
COMPRESSION_METHOD_STORE,
|
|
@@ -2137,8 +2137,7 @@
|
|
|
2137
2137
|
|
|
2138
2138
|
const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
|
|
2139
2139
|
const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
|
|
2140
|
-
const ERR_INVALID_CRC32 =
|
|
2141
|
-
const ERR_UNSUPPORTED_COMPRESSION$2 = "Compression method not supported";
|
|
2140
|
+
const ERR_INVALID_CRC32 = "Invalid CRC32";
|
|
2142
2141
|
const FORMAT_DEFLATE_RAW$1 = "deflate-raw";
|
|
2143
2142
|
const FORMAT_DEFLATE64_RAW$1 = "deflate64-raw";
|
|
2144
2143
|
const FORMAT_GZIP$1 = "gzip";
|
|
@@ -2406,7 +2405,7 @@
|
|
|
2406
2405
|
|
|
2407
2406
|
function createCodecStream(CodecStreamClass, format, options) {
|
|
2408
2407
|
if (!CodecStreamClass) {
|
|
2409
|
-
throw new Error(ERR_UNSUPPORTED_COMPRESSION
|
|
2408
|
+
throw new Error(ERR_UNSUPPORTED_COMPRESSION);
|
|
2410
2409
|
}
|
|
2411
2410
|
return new CodecStreamClass(format, options);
|
|
2412
2411
|
}
|
|
@@ -4554,8 +4553,6 @@
|
|
|
4554
4553
|
const PROPERTY_NAME_RAW_CREATION_DATE = "rawCreationDate";
|
|
4555
4554
|
const PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES = "internalFileAttributes";
|
|
4556
4555
|
const PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES = "externalFileAttributes";
|
|
4557
|
-
const PROPERTY_NAME_DEPRECATED_INTERNAL_FILE_ATTRIBUTES = "internalFileAttribute";
|
|
4558
|
-
const PROPERTY_NAME_DEPRECATED_EXTERNAL_FILE_ATTRIBUTES = "externalFileAttribute";
|
|
4559
4556
|
const PROPERTY_NAME_MSDOS_ATTRIBUTES_RAW = "msdosAttributesRaw";
|
|
4560
4557
|
const PROPERTY_NAME_MSDOS_ATTRIBUTES = "msdosAttributes";
|
|
4561
4558
|
const PROPERTY_NAME_MS_DOS_COMPATIBLE = "msDosCompatible";
|
|
@@ -4614,8 +4611,6 @@
|
|
|
4614
4611
|
PROPERTY_NAME_DISK_NUMBER_START,
|
|
4615
4612
|
PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES,
|
|
4616
4613
|
PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES,
|
|
4617
|
-
PROPERTY_NAME_DEPRECATED_INTERNAL_FILE_ATTRIBUTES,
|
|
4618
|
-
PROPERTY_NAME_DEPRECATED_EXTERNAL_FILE_ATTRIBUTES,
|
|
4619
4614
|
PROPERTY_NAME_MSDOS_ATTRIBUTES_RAW,
|
|
4620
4615
|
PROPERTY_NAME_MSDOS_ATTRIBUTES,
|
|
4621
4616
|
PROPERTY_NAME_MS_DOS_COMPATIBLE,
|
|
@@ -4703,7 +4698,6 @@
|
|
|
4703
4698
|
const ERR_EXTRAFIELD_ZIP64_NOT_FOUND = "Zip64 extra field not found";
|
|
4704
4699
|
const ERR_ENCRYPTED = "File contains encrypted entry";
|
|
4705
4700
|
const ERR_UNSUPPORTED_ENCRYPTION = "Encryption method not supported";
|
|
4706
|
-
const ERR_UNSUPPORTED_COMPRESSION$1 = "Compression method not supported";
|
|
4707
4701
|
const ERR_SPLIT_ZIP_FILE = "Split zip file";
|
|
4708
4702
|
const ERR_OVERLAPPING_ENTRY = "Overlapping entry found";
|
|
4709
4703
|
const ERR_ENTRY_DATA_OUT_OF_BOUNDS = "Entry data out of bounds";
|
|
@@ -5084,8 +5078,6 @@
|
|
|
5084
5078
|
sticky,
|
|
5085
5079
|
symlink,
|
|
5086
5080
|
unixExternalUpper,
|
|
5087
|
-
internalFileAttribute: fileEntry.internalFileAttributes,
|
|
5088
|
-
externalFileAttribute: fileEntry.externalFileAttributes,
|
|
5089
5081
|
executable,
|
|
5090
5082
|
directory: modeIsDir || upperIsDir || (msDosCompatible && msdosAttributes.directory) || fileEntry.filename.endsWith(DIRECTORY_SIGNATURE),
|
|
5091
5083
|
zipCrypto: fileEntry.encrypted && !fileEntry.extraFieldAES
|
|
@@ -5284,7 +5276,7 @@
|
|
|
5284
5276
|
rawPassword = rawPassword && rawPassword.length && rawPassword;
|
|
5285
5277
|
if (extraFieldAES) {
|
|
5286
5278
|
if (extraFieldAES.originalCompressionMethod != COMPRESSION_METHOD_AES) {
|
|
5287
|
-
throw new Error(ERR_UNSUPPORTED_COMPRESSION
|
|
5279
|
+
throw new Error(ERR_UNSUPPORTED_COMPRESSION);
|
|
5288
5280
|
}
|
|
5289
5281
|
}
|
|
5290
5282
|
if (dataArray.length < HEADER_SIZE || getUint32$1(dataView, 0) != LOCAL_FILE_HEADER_SIGNATURE) {
|
|
@@ -5340,7 +5332,7 @@
|
|
|
5340
5332
|
}
|
|
5341
5333
|
const registeredCodec = passThrough ? UNDEFINED_VALUE : getRegisteredCodec(compressionMethod);
|
|
5342
5334
|
if (compressionMethod != COMPRESSION_METHOD_STORE && compressionMethod != COMPRESSION_METHOD_DEFLATE && compressionMethod != COMPRESSION_METHOD_DEFLATE_64 && !registeredCodec && !passThrough) {
|
|
5343
|
-
throw new Error(ERR_UNSUPPORTED_COMPRESSION
|
|
5335
|
+
throw new Error(ERR_UNSUPPORTED_COMPRESSION);
|
|
5344
5336
|
}
|
|
5345
5337
|
if (encrypted) {
|
|
5346
5338
|
if (!zipCrypto && (extraFieldAES.strength < 1 || extraFieldAES.strength > 3)) {
|
|
@@ -6192,14 +6184,13 @@
|
|
|
6192
6184
|
ERR_INVALID_FILENAME_VALIDATION: ERR_INVALID_FILENAME_VALIDATION,
|
|
6193
6185
|
ERR_INVALID_MAX_APPENDED_DATA_SIZE: ERR_INVALID_MAX_APPENDED_DATA_SIZE,
|
|
6194
6186
|
ERR_INVALID_PASSWORD: ERR_INVALID_PASSWORD,
|
|
6195
|
-
ERR_INVALID_SIGNATURE: ERR_INVALID_SIGNATURE,
|
|
6196
6187
|
ERR_INVALID_STRICTNESS: ERR_INVALID_STRICTNESS,
|
|
6197
6188
|
ERR_INVALID_UNCOMPRESSED_SIZE: ERR_INVALID_UNCOMPRESSED_SIZE,
|
|
6198
6189
|
ERR_LOCAL_FILE_HEADER_NOT_FOUND: ERR_LOCAL_FILE_HEADER_NOT_FOUND,
|
|
6199
6190
|
ERR_OVERLAPPING_ENTRY: ERR_OVERLAPPING_ENTRY,
|
|
6200
6191
|
ERR_SPLIT_ZIP_FILE: ERR_SPLIT_ZIP_FILE,
|
|
6201
6192
|
ERR_UNSAFE_FILENAME: ERR_UNSAFE_FILENAME,
|
|
6202
|
-
ERR_UNSUPPORTED_COMPRESSION: ERR_UNSUPPORTED_COMPRESSION
|
|
6193
|
+
ERR_UNSUPPORTED_COMPRESSION: ERR_UNSUPPORTED_COMPRESSION,
|
|
6203
6194
|
ERR_UNSUPPORTED_ENCRYPTION: ERR_UNSUPPORTED_ENCRYPTION,
|
|
6204
6195
|
ERR_UNSUPPORTED_UINT64: ERR_UNSUPPORTED_UINT64,
|
|
6205
6196
|
ERR_WORKER_STARTUP_TIMEOUT: ERR_WORKER_STARTUP_TIMEOUT,
|
|
@@ -6267,7 +6258,6 @@
|
|
|
6267
6258
|
const ERR_INVALID_EXTRAFIELD_TYPE = "Invalid extra field type (must be integer 0..65535)";
|
|
6268
6259
|
const ERR_INVALID_EXTRAFIELD_DATA_TYPE = "Invalid extra field data (must be a Uint8Array)";
|
|
6269
6260
|
const ERR_INVALID_EXTRAFIELD_DATA = "Extra field data exceeds 64KB";
|
|
6270
|
-
const ERR_UNSUPPORTED_COMPRESSION = "Compression method not supported";
|
|
6271
6261
|
const MIN_UNIX_TIME = -2147483648;
|
|
6272
6262
|
const MAX_UNIX_TIME = 2147483647;
|
|
6273
6263
|
const MIN_NTFS_TIME = BigInt(0);
|
|
@@ -6707,9 +6697,7 @@
|
|
|
6707
6697
|
Object.assign(fileEntry, {
|
|
6708
6698
|
name,
|
|
6709
6699
|
comment,
|
|
6710
|
-
extraField
|
|
6711
|
-
[PROPERTY_NAME_DEPRECATED_INTERNAL_FILE_ATTRIBUTES]: fileEntry.internalFileAttributes,
|
|
6712
|
-
[PROPERTY_NAME_DEPRECATED_EXTERNAL_FILE_ATTRIBUTES]: fileEntry.externalFileAttributes
|
|
6700
|
+
extraField
|
|
6713
6701
|
});
|
|
6714
6702
|
return new Entry(fileEntry);
|
|
6715
6703
|
}
|
|
@@ -6756,7 +6744,7 @@
|
|
|
6756
6744
|
if (versionMadeBy > MAX_16_BITS) {
|
|
6757
6745
|
throw new Error(ERR_INVALID_VERSION);
|
|
6758
6746
|
}
|
|
6759
|
-
let externalFileAttributes =
|
|
6747
|
+
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES);
|
|
6760
6748
|
const externalFileAttributesProvided = externalFileAttributes !== UNDEFINED_VALUE;
|
|
6761
6749
|
if (!externalFileAttributesProvided) {
|
|
6762
6750
|
externalFileAttributes = 0;
|
|
@@ -6866,7 +6854,7 @@
|
|
|
6866
6854
|
const rawLastModDate = getOptionValue(zipWriter, options, PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE);
|
|
6867
6855
|
const lastAccessDate = getDateOptionValue(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE);
|
|
6868
6856
|
const creationDate = getDateOptionValue(zipWriter, options, PROPERTY_NAME_CREATION_DATE);
|
|
6869
|
-
const internalFileAttributes =
|
|
6857
|
+
const internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, 0);
|
|
6870
6858
|
const passThrough = getOptionValue(zipWriter, options, OPTION_PASS_THROUGH);
|
|
6871
6859
|
const password = getOptionValue(zipWriter, options, OPTION_PASSWORD);
|
|
6872
6860
|
const rawPassword = getOptionValue(zipWriter, options, OPTION_RAW_PASSWORD);
|
|
@@ -8260,16 +8248,6 @@
|
|
|
8260
8248
|
return checkFunctionOption(getOptionValue(zipWriter, options, name));
|
|
8261
8249
|
}
|
|
8262
8250
|
|
|
8263
|
-
function getAliasedOptionValue(zipWriter, options, name, deprecatedName, defaultValue) {
|
|
8264
|
-
const value = getAliasedValue(options, name, deprecatedName);
|
|
8265
|
-
const result = value === UNDEFINED_VALUE ? getAliasedValue(zipWriter.options, name, deprecatedName) : value;
|
|
8266
|
-
return result === UNDEFINED_VALUE ? defaultValue : result;
|
|
8267
|
-
}
|
|
8268
|
-
|
|
8269
|
-
function getAliasedValue(options, name, deprecatedName) {
|
|
8270
|
-
return options[name] === UNDEFINED_VALUE ? options[deprecatedName] : options[name];
|
|
8271
|
-
}
|
|
8272
|
-
|
|
8273
8251
|
function getNumberOptionValue(zipWriter, options, name, defaultValue) {
|
|
8274
8252
|
return toNumber(getOptionValue(zipWriter, options, name, defaultValue));
|
|
8275
8253
|
}
|
|
@@ -8528,7 +8506,7 @@
|
|
|
8528
8506
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8529
8507
|
*/
|
|
8530
8508
|
|
|
8531
|
-
const VERSION = "2.
|
|
8509
|
+
const VERSION = "2.11.0";
|
|
8532
8510
|
|
|
8533
8511
|
/*
|
|
8534
8512
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -8977,7 +8955,7 @@
|
|
|
8977
8955
|
// ignored
|
|
8978
8956
|
}
|
|
8979
8957
|
|
|
8980
|
-
const n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],c=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],f=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],s=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],t=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Uint8Array(288);u.fill(8,0,144),u.fill(9,144,256),u.fill(7,256,280),u.fill(8,280,288);const z=new Uint8Array(30).fill(5);function r(n){const c=new Uint16Array(16);for(const f of n)c[f]++;c[0]=0;const f=new Uint16Array(17);for(let n=1;n<=15;n++)f[n+1]=f[n]+c[n];const s=new Uint16Array(n.length);for(let c=0;c<n.length;c++)n[c]&&(s[f[n[c]]++]=c);return {l:c,symbols:s}}const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function l(l){let U;l({wasmURI:()=>(U||(U="data:application/wasm;base64,"+function(n){let c="";const f=n.length;let s=0;for(;s+2<f;s+=3){const f=n[s]<<16|n[s+1]<<8|n[s+2];c+=e[f>>18&63]+e[f>>12&63]+e[f>>6&63]+e[63&f];}const t=f-s;if(1===t){const f=n[s]<<16;c+=e[f>>18&63]+e[f>>12&63]+"==";}else if(2===t){const f=n[s]<<16|n[s+1]<<8;c+=e[f>>18&63]+e[f>>12&63]+e[f>>6&63]+"=";}return c}(function(e){let l=0,U=0,o=0,i=new Uint8Array(1024),a=0,y=0;for(;!y;){y=w(1);const n=w(2);if(0==n)V();else if(1==n)j(r(u),r(z));else {if(2!=n)throw new Error("invalid deflate block type");j(...m());}}return i.subarray(0,a);function b(){if(l>=e.length)throw new Error("unexpected end of deflate data");return e[l++]}function w(n){for(;o<n;)U|=b()<<o,o+=8;const c=U&(1<<n)-1;return U>>>=n,o-=n,c}function V(){U=0,o=0;const n=b()|b()<<8;l+=2,L(a+n);for(let c=0;c<n;c++)i[a++]=b();}function j(t,u){let z=q(t);for(;256!=z;){if(z<256)L(a+1),i[a++]=z;else {const t=z-257,r=n[t]+w(c[t]),e=q(u),l=f[e]+w(s[e]);L(a+r);const U=a-l;for(let n=0;n<r;n++)i[a++]=i[U+n];}z=q(t);}}function m(){const n=w(5)+257,c=w(5)+1,f=w(4)+4,s=new Uint8Array(19);for(let n=0;n<f;n++)s[t[n]]=w(3);const u=r(s),z=new Uint8Array(n+c);let e=0;for(;e<z.length;){const n=q(u);if(n<16)z[e++]=n;else if(16==n){const n=z[e-1];let c=w(2)+3;for(;c--;)z[e++]=n;}else e+=17==n?w(3)+3:w(7)+11;}return [r(z.subarray(0,n)),r(z.subarray(n))]}function q(n){const{l:c,symbols:f}=n;let s=0,t=0,u=0;for(let n=1;n<=15;n++){s|=w(1);const z=c[n];if(s-t<z)return f[u+(s-t)];u+=z,t=t+z<<1,s<<=1;}throw new Error("invalid huffman code")}function L(n){if(i.length<n){let c=2*i.length;for(;c<n;)c*=2;const f=new Uint8Array(c);f.set(i.subarray(0,a)),i=f;}}}(function(n){const c=(n=String(n).replace(/[^A-Za-z0-9+/=]/g,"")).length,f=[];for(let s=0;s<c;s+=4){const c=e.indexOf(n[s])<<18|e.indexOf(n[s+1])<<12|(63&e.indexOf(n[s+2]))<<6|63&e.indexOf(n[s+3]);f.push(c>>16&255),"="!==n[s+2]&&f.push(c>>8&255),"="!==n[s+3]&&f.push(255&c);}return new Uint8Array(f)}("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")))),U)});}
|
|
8958
|
+
const t=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],f=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],n=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],r=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],c=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],l=new Uint8Array(288);l.fill(8,0,144),l.fill(9,144,256),l.fill(7,256,280),l.fill(8,280,288);const Z=new Uint8Array(30).fill(5);function s(t){const f=new Uint16Array(16);for(const n of t)f[n]++;f[0]=0;const n=new Uint16Array(17);for(let t=1;t<=15;t++)n[t+1]=n[t]+f[t];const r=new Uint16Array(t.length);for(let f=0;f<t.length;f++)t[f]&&(r[n[t[f]]++]=f);return {l:f,symbols:r}}const X="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function e(e){let y;e({wasmURI:()=>(y||(y="data:application/wasm;base64,"+function(t){let f="";const n=t.length;let r=0;for(;r+2<n;r+=3){const n=t[r]<<16|t[r+1]<<8|t[r+2];f+=X[n>>18&63]+X[n>>12&63]+X[n>>6&63]+X[63&n];}const c=n-r;if(1===c){const n=t[r]<<16;f+=X[n>>18&63]+X[n>>12&63]+"==";}else if(2===c){const n=t[r]<<16|t[r+1]<<8;f+=X[n>>18&63]+X[n>>12&63]+X[n>>6&63]+"=";}return f}(function(X){let e=0,y=0,u=0,o=new Uint8Array(1024),v=0,q=0;for(;!q;){q=m(1);const t=m(2);if(0==t)T();else if(1==t)V(s(l),s(Z));else {if(2!=t)throw new Error("invalid deflate block type");V(...U());}}return o.subarray(0,v);function a(){if(e>=X.length)throw new Error("unexpected end of deflate data");return X[e++]}function m(t){for(;u<t;)y|=a()<<u,u+=8;const f=y&(1<<t)-1;return y>>>=t,u-=t,f}function T(){y=0,u=0;const t=a()|a()<<8;e+=2,M(v+t);for(let f=0;f<t;f++)o[v++]=a();}function V(c,l){let Z=S(c);for(;256!=Z;){if(Z<256)M(v+1),o[v++]=Z;else {const c=Z-257,s=t[c]+m(f[c]),X=S(l),e=n[X]+m(r[X]);M(v+s);const y=v-e;for(let t=0;t<s;t++)o[v++]=o[y+t];}Z=S(c);}}function U(){const t=m(5)+257,f=m(5)+1,n=m(4)+4,r=new Uint8Array(19);for(let t=0;t<n;t++)r[c[t]]=m(3);const l=s(r),Z=new Uint8Array(t+f);let X=0;for(;X<Z.length;){const t=S(l);if(t<16)Z[X++]=t;else if(16==t){const t=Z[X-1];let f=m(2)+3;for(;f--;)Z[X++]=t;}else X+=17==t?m(3)+3:m(7)+11;}return [s(Z.subarray(0,t)),s(Z.subarray(t))]}function S(t){const{l:f,symbols:n}=t;let r=0,c=0,l=0;for(let t=1;t<=15;t++){r|=m(1);const Z=f[t];if(r-c<Z)return n[l+(r-c)];l+=Z,c=c+Z<<1,r<<=1;}throw new Error("invalid huffman code")}function M(t){if(o.length<t){let f=2*o.length;for(;f<t;)f*=2;const n=new Uint8Array(f);n.set(o.subarray(0,v)),o=n;}}}(function(t){const f=(t=String(t).replace(/[^A-Za-z0-9+/=]/g,"")).length,n=[];for(let r=0;r<f;r+=4){const f=X.indexOf(t[r])<<18|X.indexOf(t[r+1])<<12|(63&X.indexOf(t[r+2]))<<6|63&X.indexOf(t[r+3]);n.push(f>>16&255),"="!==t[r+2]&&n.push(f>>8&255),"="!==t[r+3]&&n.push(255&f);}return new Uint8Array(n)}("zb19jB3XdSd4v+rjvXrVr0g2yRYfJZ0qMnbLVpNS4jRly5v0ZdxstWha3qz/yB8BJJpq2XyPItXNNi1nFL3Wl8MksofICoE2K2w4mWAdBBJWwGpmnV1lzJkoE8+sM6PZ9QAaxFgEs8aOF8hilIUwEBZacfU751a997qbFCU7yapBvaq6Vfeee+655557vq46ef5hrZTSv5g/YIZDPXzADvnHDIfqAY0rPVT8UD2g1ANKDx+Ih/yfHj6QDJtLN+RXXLjVj+uh/YWjsXXGuiSxyqaqZfGfUipV1hpttW5FmdbaGNWJlGs71zZRFEVWOa2cUsq4WLtIP6Lb7SjW+knzpIlTPdT+8m9HWfIbbn/88MrD59a+ZlTn9NmHzpxcX/nk/WdXvqqSHc3t6bOn1+9fO/lVleYTz1S7aO4fWTt3auX8eZWNalk5+6Ca2tPcnjl5fv3+U+fOnv/KwysPqm4WCqSx+iuptyjGb7npHTsmHn3pV04/onZ262dN602t3Pju+m5z2w+ujLdd33Hbu4rxW257esfEI257d7d+Vre9p6kVbc+4h9ZWVpTZXT/cBEL88MkzZ86dUjrjSk+fPHP6V1aUuun++0+fffD02sqp9fsf+srZU+unz529f/3kF8+saHXT/SsPnz+1dvqR9ZWz959fP3lqcP/ayvn1c2srKtq/pehLK+v3n/rK2trK2XUVV/fff+rRk/efPntqbeXhlbPr9688emrlEa58beWhU+e+cnZd/Xyrq5XXWUvt63X2Lsx/8j9r//M/N0eNyr7zUZ0NDyhfDKr2QWUWtv6R8m/pE27BP7171qjK+oKUz/r+bbuKi+VeFXt7oVIXKu3tqsMX2g/Pe71Kql8Zb9cr7V/c3a8U6Vnzyu5Kz5q0io5xjWT942S+ujpvVEdnFJGaNx1SFM2bNCPt036pSBPXYrxdmzcOt/1KozLnNZ50soxi/yyDl57INWlA4Q0pfKTIDNZIk1pf/TJAXK8Ug2NIMThqMzj6q6uVbQAyAMgEgBTFAQhFcb9yxPVpigdVJLCQIt3H24pSt0Cpf3QVrZXaPw/4SmOGZL2m1NsL61WyuhjapWQN32g0CgRlpUVH501KtoZBy48VUBg3/vnd5OaN8s/u5kY7WeYvMiKyxVxT9mVv1mfNK3srA2w9ukrxoHRkSm15nGZNUalFx1fTlVrMdQashDcrTcC2W650r0TPDOleaUiVADMjM2tmyhYZXHQqteQWcJVWuh5FPW/STptfnK60G5Lx0/0It0WlF3NLxhf9rIzsAkVlQrpSfrpfRgBhutK5IuWLcF/gPqPEK/SylflhGZPy3xke59eyfqX9o6tlHHqfLObK31qmXkmPlX/r6tXkhFug2H8EdHXhS5UaXGAi9Xp94H+uX6ZZIPi0RprG6KgSlIAfiv1NlHp9YeAVpf7Wpd56aWpE1jiz5O7LFekyIlu5XHlVOtKl6liQD+PZEo+tv/mCd6t97tuxHimyvVKR8Xq9NITe4oNoTWCIvKEUpKtIDdYoWcVoWVL1AJcqIx4/uzA+gobccqnJYCBlDCNc1Ch1Q9KC7qxS3GK0mCtyMpkoHqArEYY5pQgXYZijrcOcZngqwxzxMEfNMEc8zMYukAFZyzCbTcNsxobZyjAno3kdgQPJFFJmgSImT1/c5xZkKhrSzQSM+gBJjWYrJpWiqJm60ST/8Ko0XpU6wyzCl5hVhmvgSdZpAY5LDIdZdgv+0m4yDADefWG3f4GLBA58Ng5MwzDqqgIlHe5Xzgz9D2ZmjXIL/of4BZ39aObo8IhR/i9njm5c3tjY2HC4+8EMtX2n7x9Z9W/84b/9w+g8Wn5zhtHkr4TfDcoq3a+sV6QHVbIKxnQiT/2rM4xBt+Bf4auUdL9qUXqCImotr+WtzCz4KzNzSnkHhlRz/tAvfPjaTKmEsvA5BoMiSpnS+su5Za6RCgl5VbjK+OGx3JIurf9LblN5PagiMqtgNmQGYKl9JubVfmkzsgDVBlBVA2pEtl8lFJ0gRcnyWu4ysoWrFJmlXHcifGcGmA14yhSkBKhjuSbDkwKQaIr9HX2ygFuVpuMyQTjmB9lBnxeJ1coUTt42ZPul5VdtRsYPl3KTAc9X8JV34NUZ6dBR7jHaWQOPPLGWR/gFK4j9bP9EHmX+lRnpELrDY/VtvlOgpm/PYCKprEG4GyFcuoSpNmtcFfWP5WaEanTjOSE9YJLMiR6YxXNCvExo/rszWC+Uf22GH/rf3+2H+P2D3UJ6uH5d6AfjK8uZrNfRvHllN2msK9/eDTbZr5SnpVxlmADWzw4q5R8lM/AgtQHex2wI6zOvZjRaFU3fz2KuXd7t/yo03HEZONMJrDHH16RnHZ+u4oosRX28/8Jucv5RctyKkor9pd0yHYFOQ2rAOMUaH5oz5LZpzjJKOrH81Mgjc3wMaTL0EePfLGBhCiMAthcwrzsGvHlOAdjF3GZhtMxCPVoOhIa1k2mxipbDwpryWnIN/CXb4C+5Hv7IUeQ/ShEq6PvDgwpE4HzRX+5V2vdYVvLfm7nNqCOmIO1fk8vUf2+GRSu0t5k+Ai2Q9jN9mfI+qdkXKe8gj0XL4NGa3DEsdMJIH1/FWywuDCoToGYBRhms+1chQpKpxSFlhkGe1J7FuwvrlamFIU2GhSGWwBQLQxo9gzCk8dPxndL4FOzyVl4yr4bF3fiPkNl2cVcZOUyz/eSOMjqUN+v+lb39UjOrE7Eh8pATK8uQXIRYFolYxkIWwDH+JlTKIoASEYBXdSVSTFVLAoZnqr/5AtZaLOkyG9xqv7JY5iJe5lBtAcj0vJnxaWnIVbpUvlOLgRV3uyMApNKFlCf2TGl8JyMX1jpQvLCRsFApMFTMFKxBH2qpcpnf2O3vwIeqll9kVWSyJtvnqVaTcL9Kmxq0f5S0PLQUU9qv3KBMagZHFtL2C0FybeZyIqwRnQxyvc5kyZcPRqJuEE+2fAAiESwAfxYsU3m76vUxTF7Ihy087ZSGtzVCk1ZkGSM7AKFK/zhY4QXZl5hMCDmI4Gmoe6aMDRi0XaorUfVbSt4y/Hy6Ug4yP0QiKwJ3rsmySKTtAkuKqoJkXGoRiVSuWDKG4MYfgFYiH/oFaSWjeDFXUv/+CqQMwntlLyOKNOhahsrk2l/cLdSNTtU9wqcUz5oC78d4t0C3+Go6I8M7AUPxvJkJQLsF6VghVDCThb5BXuSC6aYgoVa/TMhSi4ndlUzqquERNVNzlPQJXI+SMBbJ9vwh+aD8QSZKRyZW4BMGrQQ+kfiPULItnzCYjWaMT5iaT6gxPsFMa72Kaj6hA59QDZ9I/E0Q5ZlPmLBV4NVBxryqZfQEfAJbAQy2iP5gvuATUSMORw2fUBgQV/fRBWpUQsJOxHHhFD68OoaHjFKZ2Tz+qVBQBArSoCDDFISdMBmmIJ5ciimIkrAxThr6iSgN9JMyXQAQvpoOOxFSlAIG6QcL6hr0w/uGmXq7APrhgum6wCyQ810RMR0YlRoX3IX5NAwCO4FQHOFdS6EMzLXPw0EuUJfbnrrcDVGXFeqyQKcVrNox6uJWAnU5/xFy11qFrKxCdrtVCDODlRY1XZlaLcCLtDQ4A7jcNZchIa96u++aZUjXy5AJ5JWMNtWovRA9A+Z13UkbyMsIc7Mj9YNs0GZq1QT3CRtAIS/mfC0hL9OQV8TkBTZL0RbyyoS8GuIy1ArE1WqIq7WJuFqAwFyDuMz7EpfZTFxmK3GZhrgM3o0a4nLYZLotWh4VtqjaDEc6HrKbtTxjpGXD/lnGtkNhU61Fy4M1LwrqHSfiKaM4o7Yv+gcVqex/y3Q6xHLGffUpth3Ku4FQ96OQmcuIdXJ6FeKaN6u8/oB9K4idVsTg5Vyz7qoMSsB65Q2rWwc6iVqKk+XOLeVmfMXUzYoZ1QvkxPI4uYi6sIDoycWR9QWyODq7QI7VQrw4ujCm9eLowtiPqYUsMxXHikhvl3ILvDGZRaTD8mMbYYGVjaobGD4AY35qtllhmYDdaIV111xh9YdeYTVjNhDx2AqrZYUNRFxP0ShoZtBZvcqgBu0Vj7CrRa0oiFp2QtRSQXIaIcPKeC/lULiIOuF5+e0GIQz7/iCG2QkxbGtl2JfVyAUNkuJtwyQVsQ7JbZG7JqhocmRcJrookFU0poYaJyt7TTWUCWqoD05WJtuWfppeysZyRDLRJpKJbpxkohslmegaJBNdm2S2wE2W0qVc1ZOkmzUysWrU1s1K6bA0MUNTNTtT5DYrrcNSlZKqFxE9WiC6IoapZqFU/iNgWRe+VGlZKPWYGGZFDLObxDBnhmbBDCcFsWQkiAmHdUKjM2GbSGo7ccyBVTM5NNs21YhjrtHEkhutl260XqJy0qXz3G1bNVionPRdMOFnSoWdnVdZmbB2QdaNgBkejCRoZn6fKUJDLzAk1QPDz57NdDIUzhyZoGKA2om5uQncXIkuSwc5Am9BARWWo6C66JS22YhbkRk3s3AzPvmUzLWwBvD7ph5VE+Yj71ecG5LiucYaXMeK6TGVb0KusqLyZY7mcsUsXu5rpE6ycDPOwrWwcBOmoGr2rBEXMQsPgI1YuG3mo8J8NKP5qEbzUcSqyfloxuajGpuPtpmPluej5floZT5yzw1jFvNW5KSZgCCD+cgF03VBw65Db7fj2WqCZ+ugFBr1Xn0Qnq0mePY2lcFuFbAJNQ0Tk/DsEdkEnm038WwzybPHh2LEs+0Yz56ko5pnu0me7UY8+4PTEfPsrQTT9FJ4tp3k2WZbnv1+NBLdKI1E16CR6Bo0sh3c2FQFnq3rBVbGRtc82zQ8G4ZGzTxbj3Y3lhmkqQX7jM1DSnY3waBjRnYd5tkWjQSerRv7mRGebWqezQoiC56thGfbmmebsa0z1hE7xrFd4Ngm7Ad4uWJW6m+CpZRZthWWbQGxEmrAODHL1mDZFiwbPxpvgXc3LNsIyw6qCxcQG3oqyxJWgsaeJTo2UrLDUfWumjfQ2TIWxB9NB528T/qQsA0LzWRYCa9ZCU/q55Uv1k/keqREG3Yz/6Np6abOYkXqoMqcOqAyr/XQLPjXVKGrIMe7AcwxdlXulH9NvZPBmsGs1sybg1iM5w2RirzKsh2KYMf1j/Mi/kjRyv5rq+Oh/xUsGv65FJXdCbp5HNqmUGngW1RZfjBrDobfWa/9D46Q3aFVZVDtY92g/NuPXs6bu+rhMl7Lw1feVfPGgWMW+0UYJe3VPSKg+EeOVfG8eeOIWKa0L3yX4t7xMhGVqkIZtqUXfNQvYY8DxXVXIcgwJaTYnejSUiIikJ03syIVdqRBqeQTZEB5t48/I+lpKkQ5TY73is7r1XlzRyYffFpePfjeHSxuj7DAcfSVd9UR7PyOPiHPvncEpm7/Spvl3Ufe+2Zjw/mNDUNxj7eiQMkX5OfznsWpWQYTmN1hAsr3ZxTx4BdptpMJBv1hVb4r8uyP7jHl0Dx+QHkaVFMHMWAzNVZ5Ea9aYZBUFS/KuuyCdWE/b/sr67/zrhItzhUeFfxgdmofDcpbyfgfqH5JZPxbUb/cTca/ofplj4x/U/XLfdLFcg/KVb/cgTm3ANFl1nxaDMeu2l+msuLl5c5xXxHYQPyvlm47P5K/iT+yILzB1K1RnKStQ4fvuLOddfKpbrHDmundulIHe/vcJz9196eZ1322zDpVc9XjqzNlp1PIVdXFzwNsnu8u98qsM8UFndJ15uSqsotjeO0cgrU9EXVCupj/NJwDBmVK8ZxSlKxTBOeF2Ot+GUPd2Gd6h3XbrC5S5H/3t83S2qJ4TcxKxd15M4uFCWsXpr0qbq6YpU7h7bs19h9T3vW9KW7mdfkfMSQyJfZ7VSadQwzqQVgRycHYdwcrZtb9xrt2FVcX+v7WRxbBK1dXmYL8P2gz/fp/U3eLIt9d9SnLff4/ZltL3YXKYoK20StHbZ+c4F5UmRtSFsncnCWXkbtvNd9FiYcBgJT/7YnKyJZRZ24Si3feIBbZJ2eaIn9VXwvUOYC6cQVeSaT8G+nmQsaT5QUZeGGeoHhJ9xuOWa+BkU8up3z6KeVoil/9lIrE72V/Mxw8tY3/xzLl4LGhykS6dmvo2h032rUxuOaNY4XYnNrNwv4kTFw+AYlrIPkftoGkRvLhDwGJTy+I0MYox3J4PbhAq9tj6NuTcMn+2/qNFMMU8YasBpR1axNwOpDbJJwG9aTkyqhzZ6aYMty8+YzA3nYL1Mb9tEwrKyN7YATtAZoitz20nQM1BvAa6zyLzoHJMZ27cXL1M+ugrHftqk/X14TkwqScubC2JhOdRag7yPh/shVNBU9XykWUaYlgkgbjnQhRyTxrT6N582lvypnOnVnDSW7Z1MB3uIGMbvVmOf+YSIN5CpjXyjbFpaU0DIZhrfZiDr2zhjuVHe+rRV8ttcc6yuTh/+m7qkzHmHXk9QU2xw2mrNLGZqIffuNI1YbgHfu/mu5X2axhj7TYvzPTh7QHq+JbchmL+Su2C/6S5oJLbJffAXyv9316t1YB9QDFLvgNU8aU+g0jr6X8WguvpXgtDa89b7i25814bcnm2ij1lycqSicroilq+40dZ/ylm/qQd/YT+gXgZXSmfAto0bTDXzY05ff3wVT6tJvaxa37QMTcBo03EW1qgmt8Z6ZPU1jvU6kWzonevFctbamVMt4PBb3R58kc/fWNjY3X1RHzS2RAO18g4/9MmLH28VJuYW0Dr468hfHaljG5Mu3MZf41jKdoU/4QjBactEwzqcdl1/jwpzI265XYrSc+Wb3AlnIXJtCmGe4m54/j5WU0w5POx3mGR/7qVbtagRUNz/vignD/P21NrC14/adA/v9sbI38TD2hpLeqM4s3/iRMBTNrPhPYHTTy6XKvspSTpRxXi/lHqYWtXUHCLD5DdgBOA0tn2cKLgxJvx4A9xV3KLCRMtU4lrCMPrOMjH4B13Lr63m7uCdOfNw/yfXQBj5zX/XnzZX7SvoA12/WrbN48QImfkrGYusDqf+tvPuHCdCPnb1leY6HR/4MJnLF45P+05jxdkYvPZOzbklEX+/5dlFHmd53oieqMMlaZUQb/IDtvztAOXK8f1pc6TMEKFGzLrKMy3p5fk7ukN8Zdumgoloa6Yw1R5JNVtDVJhnHZbUhRKtgjUvoekeGTeZ4Je1hmLzte0Q6/i/ZRj3YLtopbq71MXt+ZlB9KoOqfB9JiNHlV7mUaerAq8PPlftm1C9ShLty8hnj0S+t+eL7chcvPl9MUl21Ksa1hVExTRLtWvVnvVzfNKV1l5I6DFoEaC9RYao9PkjZQ064nic7AT286rE2V1hauzhiuBEnMshxljCHKBENwNzFDVqyK/2sxmDJKGwy06YPfwla2LLDQjcEy0YijjkiavzY5RdvQC4W1+6MgDoNPnDeAy7EKsF+mDDrt6HszOKxZRZjh+SRYt34AsAKBUHaBfdd50iVoC8wt88nmum/5IHUnY3UnUvdVteqzfgZ35KyMqUspdfrL10GICBkprwMybjHGDcNZdgLXCNTcwfxsvuNnh/VbTtD9zuTsJpBsa0TwYRZgRaJiW5r/h+nWCuJ588vC/x6ZN1/AusM0z2CC6mkf0ZaK/nqbiv6s5jN7AzOGr3TnIyj67oghv3Gk2kWp7y6vUe6fNstreXzjMhC1KO9XhX/KDMqbcEM7B/2yZJ8kcMiboWjHStoZzc3OrPkEbwI7s+b26hb83FFVdMtyDx7a/PiXyy5+vlC28fP5MsfPAsj8Z82nywO4u4tXc+fvWgMJsJPBwCxQTvFtoKGXvk4Hnq4OfKue8MmcUiL+iqk7mVPmUwpa7wSsgJ3YczpA8UsXt37VAl20xj/U1MLMbUG9du3vy0SInWd9xwxJmSETPn8T4ZsDFL10sTyAJ6qKFtkgX8MWmoWK1xcQ3pPD2pSyeawS9oBMuI5v+SElwO4qZf0yo/eqQ6UZdcuE2iIPUDT+HvcuAhRSg3xAEaBIuDEzxC5htZoOzpZlQrF4Rty1husRlssDNf590sf8m6LosDbS3DQ3x86u+ymhaWltmltrUTmA8/EyB7VElOCuOpErjO/3jiDE4IftTiym3uQ+9oSxlAz6ZSTOMLfAVDSo+AkllN3HW6MMFWVQSbVQKRVFCb+0MqG0jKCqzJYZzaEsfIH3G+GuqMoWJMC0TFgQLCMqqDXwhz+LYAGKBozTZDFvcz2t/pxSoxGDm8mgTGRB5naKA2ULHvy4yQQgON/zLZfFmf934M9X1Gpu91GbMcgkFEk1EYpAHjlTAYoEwVEznrKCQxaiyNNqrvf5P85qOTILHhcx3Qwstegm+MxmoykehrCKRUt8E7r7lOlXgRHcTPHAT/Ur5gQdcvCpteADHQHDMhjgCJPqLHaU+c67aim/GX7e8+b1I52bwYH+lTDkRmYVITbp7M+YeZRx55b6ihK4enAHb85YtmR5YBoaQkPtdeF822/C/vhdFTCycUWt9sKOr3NT2Bt1KifxH0DOxL7zlhsUHhXtpJydQmbNdF+sC2bWELtvEts2q/YiGOOxNZnedlAy491fdgWIabdAXYLn/c2igu9U+KxsY8Ck4BboFw2N9Q0daLNaAJvq6H13v9xQ7xhrpv/1hD6K8nJnZ1/WCO55uRMD9K9lJdmbUb6Yt6jFAjmIvF49KAeC8ppN7Q2a5tePjItihYhi3U2iWJciKoQLdSZFMXeDskAHvLAAAYJndbwesKJqCtVkZderMhP0FTw3pv2QMur0GagOM0SIg51Vyi4wGAXA6FLWX/5gcLAY5mpZr5hTquxQwcBhxArWlEC27wM15Kgr8ksXr3cAs+iZjf9zQfgUgmFolR99pxZ/ZeJw0RUl6rY/ntTFQZfq/0X9/q2+S7t6FK+CEX62Fl8yymDzGxsKdsF3whHtIht6bqTTTOKvH6FMOhU2axFwHPh9F/2elINrGcptM69ntnm2d5tne2QPWbIR9V/W+87uvPn+kUzI7pdlhHH5hW3JrrM6Gu8PvAOQke2YBR7pqpAIKUaGGFu61GF628X0Vgi9FYzkXUzzNb11NtFb+qHorR6GMuF5UBYyLzrULXmYknqIJoeiaKjo32Xbysc7gN//ucZvAUGACYnl4XtG9DSGXsrcJDHFPwYx3TNOTGhxEn7sadplDCC/FyTZPGfdVd7ZEVj7PZULrPk4yxcIRKrY++iOE8I2WcQgCBkTM6mbGaYkCKluWYb3Lvzv9lDHoB+Mu3fBsDToZ2IShW6jTY7ay70KwqCDVqNsU+67n4WW1LMCtkX2NqWOsLCQQliw+LHQPLlQPqvUPJc7KXeh3ITyw0rdzeVGyk0oh5+awQsT0ghM9S2y1C4OigwrSpha7cIABrnG8WiJ3iFUtUW2ER2CCCXOd4+jw/fxytYGD+6usj5hTCuJD6ZSpZ1xzlkHYFpeD+5U6ugTTz598dLlKxv68erAEQV57QAQ08YS6YLWR2CJpax5xfkCr7TgndASYCC3VXhkBoeVKn6Kpm6zKUuZU7fZYuzboE2y1D6Ww9N09EVoGO+XB+T7g3Zh1PRBGbZC8FAM2CMC/Kxp2w1mlSo+ckNtWxr/4sO1bQWd6eA2pSZwON6QqSsPL5YHxis+sG3FTDQOkkq7tBYCuDvB481DnXEt1MJFOtEqk5CTxh28BWSOt7g2sjUNhnumycABQJNtVvfl1BY9X3sp7zTiRqezzXowtc2zfJtnndEWPs1Y2dlmnVWCgG5R//s/Gu2Jp6t2sJcwYI4QGsTaSmYlbLPIwDwyGGk74WoG/HwWNvBB5cBjHHX6BH0Eui4O893jPWg3Z8102WYRbhtLWDCUQBEabDq1MrRiw4toPoMeNCOXA4X+fxxTlX2mMR2hExwinS7mqShdMKExQ4MBBy22sUXvBmnyM1WGB3Qfg5KxCvQzLMGQ/ZSS6GGMLSg+Xe7l6tp2qqYntdXM1bpbxz1YzDWCf2sbkBIbEFux/qdtu1OMdSe5XncObu7O7N9Sd9It3TmI7rw6TlwOg86r5chimNzYfkNgqwGKoIzaL0L9k5PyoM0mTFvBygh3kjtAib4l5tjbs82W8E32K97zL+Ysakwv5tHEJim6wU2SY3g1cS2ECGDlvz2x6jKQrrS8hQ2Ai59hmtFe2CgA6OvyrtclfCNvVEkVFiKs4LninVjOkV+uilHjcfi+eLeUwxr153wf3D3srLlLpHMb3HbgCDe77ou+Z6dQggdPDH+deDE37FB+e5XyB/B7uYNTUfAn2DjfjtFjkaRN6X3sz9aidEBpQUIpn5CwgdvnzR3ByQ1SSNKnFrUHlEKvEVObYmovV2mvigtiHSbAxCuIQ4wHhMfsEbepOr75BOIskLYhFWDbSz1+ETq4lNr3sZMc2Cf7NcAHpczZJ6Xk9BzwUqX9lA764oTMvYm37H1j3vvWhDra/MLBBgkjrOx/22RE1JpmK7KluLgZkMrlLZkY+XhI72AHqVkE0iMYG7bUXt9vaLlGHCKccvAISgGO2vlneEAKatBjvf48xDf/98j1JIyXgeqBrdP+Yz0QwLFeOSNk9r8EMnusnMHaTogEmcmea+nOcMwNDDrIKfx8mpC1wAxpijdyhRavq4X73uNVTYQnmwA8HK2zPgewIrVLyaLDoGqhC10oQHKzQF3PES2U+Q0Dx6zMuz6xUauF7TmU4Bxd7/X6CcTNK1mt8z5vTDJ5Fa9VqS9QQQvszuvVNW/Y27FFGaL+0xB704G+rY68SSgtMAuDr2znGOdjwGXer3LKTrBcuE19qTQZgg8RGFsHXKchsPL5UY3P1jWmlC3nCBdN5WPeT21bf97ENaYIfEwlsjFFlFwIjxbBAh9SWn/K7yaUjCejSLBP4NifPMT+JCGqEHioUm9Wc81BR4BwByCEBj8blDvxRqdssxFH3EI7cG1MqL3JZTcdD29NqA0W1UY7aWhnhpUXbeosjVUy8Zbh59NV4obUYbfdDqSNBIy0w267uV2gvEwpqdpw283RzekqwQoIeS7HulfgHpGJo/DWdkaFeOV22MgN54CEvXIxNpSwV24b2G1PeuWmY165HSqCV26Bd9krl6+mM+ileBYX4PACNE/wBPyauzmThb7xco2C6aZgp6yJYSR3jIhgx+RIynBvS4k7A2Vv+YZS2llAaMaymGQMF9YpRgymLrv/7fOP+UfhqMJRXom3qz1WT6Iu2GKT4z3+skVTlLzThhAxVRhqZdXUhDfnp0nR1Ly5KyN4JU/BFVHeZq/Xog7i4HedcNe7RP0aUbxDKQ6MZP9GN5jnLSwY8oB9hRHMMbO+lj2oYVdwQ/843i72Bza7HyEXd7E39GYvSXBeHZwn9SbnSU7TwnAUhlRhSEf+8SwrgvtrcLpc2OQP2y1am56sbnlya9HK2uIQ3y18fbk6ury18JsdNqMiz/7Pn9K5RKQ8Tqr4WThZHl/L1b46VqMT3DX3S/yvQzoVdt8Mrq3umCwQzv9OtBSM8v8RZruaiReLIg3MYlWCG/Jss3UNK5MqjvCLsh1wtTAynDezdeySO7bGwTX+q57Di4/3+uwszffWu3t7/XvXcvjvX8fZ0vmPLbFT4e9ESxJ0Ap+gzk7JBCVKwr9mmUxyPm1o31n3G2/qActLLrj7aK/vFdH3+7qy3tyTK38FMrP18XKusGheQYB8fKxXSoYQitYq62mNeF1+Vfcq6299hOyav/V88XPyTOLTD+ufxgNc3FH8XMau06x2F5GRoWN8AXVBykIjzn8SDDIImsHRPAiatYOaZgmCi9K+v5VVzduX/aa+TmH6KdUExoo76fbvqevU8TdV5o3Ev/HAtJbeWzKcdyLC8LD1oM25JwzLdrWQu04LVrTzk4PA1C202mUB9WDJoaD7SxYvofCHIFiyPFjwHODKW1I5Q9wKjSdeLXkIV2lvjeG2vTXPOcB6a76AYay3xjDMmv0szdeVRQHSKFRkb+wtdgSVFw/r+Aaqm1PJ+7/14yKfwe7cADSciQTht9jt3wgupm8MFxHZbNbczr6KahZTCFI5PsO29A52MRptnolTLMk8ZCbzp2owFZlWq2VZhfcXilVR/j+opZyV80ItzOtHvVgge1hPs3Q/QIAogBXrgfht81b4PpnxKRQd0iM2/1CfFUNV49fVqdi1WF65fREMSFSI4/1xfeQnGNRdGjeqNbQtMUGDMg4WvIYtd7JrABLXMExzNoMJMKDj2g4MOwYGY5RNLc2udf+s2S9Lw3SZCEL2BxSJvpmlqjj0NNnaRNJnS35oouGeUagpSKwwm0D7IJgIBEIUif4DbDyQTAM26MUGfUboo6wLSJGXnMjVZijsCIpRR/9C1S7SXMfBuo6/+b4e/BB9/TA9/Q/jQ3m7DGWn1tQYcSSqAXUCHSq7NiBN6XWncr121mBs5tu2JuakIeu4uYqaK4GGY1TMrHkNgdYcjc2W99+JjuW6ljmGNfeTVVEX8526LDBBU/ulGf9DBMTappDrNcWnxtuIhUqePiTqEy0dfhHsVX3OcWsXNdk+IqhEiCA78Lo4LC++qufNi8wwVHHEW88PIWf1pHdq3rysQyX8ejP6Zta8ORecM9+cE9vLj+bGl98PUSxDF3FUHfKc2MNI6dqHX5iRXns9mDev6Rp6VhnOo1dcI/7/1tz7oQEWJK+2RUHdfU68l0mlrHi7Eaxev8rF3ApO39gFBzcZXfY6FadE6V8V+6cM2zNHuH9Vi8cUhl4vjr23vJonFG99mWJvjudh3FiHN04lx2p57CdBJUmDpNZPBklJUEYDcBpzDOFMShXsWzD6pmzQhLqQr3RzZZZ45/2k6Ze5N+NGMIndgkVDvK4olbw+EX9k5ArR2HLllnInV9ESdKy4ipfyWK6SJSiLoSSD1SnqVy0GBwbk/0cvU1RaVkPDZ4jtfzGuYCoECUTw7Aw+ZTAvcnAwogLZThj5ODi6RXBcY9NMi/IB+sSZxizFsILUA/7mHDJIeruc630SmCBzimcUElDq8SnXFEfbzsgtxah5UAlrh6PEnLp8CWkfKOv7p9NNc7TjL/+WRhjm1tk7a17WHMwVCFWomH3LX5PNprAXmc1MsQBIzLoJcx3MQjvZO7sJ/KbYbtu7LcUUoZjH5gPym2yS4agfm+GIvQ+pGKzvnPFv70I0yA6lssr6x1e9kWDH3+FYKbL+V1fZ1s574jzeNy4wWq+XmgUHO+LBVKSQYl2z3+zFQzJ/nz1U2fU1TvBm/dTnmCnEd+uLh64lecfX3vZAzfzrh4JsjIp9PiidN74gO7jAsSUgpH7Y686bZw/533tWH9aylsT+Mt8g+dD6WhWgYFWtHZC7Z7SBrJd6tw1Mm8tGMMF3M0AWDS5w7Ui96YuB6ORdPwNIZIpDIViXhYLbEVi+JELMC6xZ4ISn7zX2nK6i2uufcz0pshy7zPT9wqHRah3YLv9i0PEL6qn1GfwOyxCiKYGHMNPGDCjps3BEZEkGZGGahW3rAOhG5rn2K7XMc1j/dPk+Fc2pnynft630x3tlBE77/cHJrv8Km6m6PH98cWFSPSKTbAYJZO91IYR90CTQWsxYNfbvWR3197L9Wo/bF4qbxhRx2T/R2g6hAYOqL2pUfNg+c1KU62j6NBPN9V+49H4vXNQfXJn4q6z8+mt1rJchJFsXJmuxfu9MobNFTuKFhCohYH7W0KY4+f2StYF1RSpMBue//64a+AeWGa7shZZJhsnjpIN6EtH4TyFRG3JzPsULwqWnNK9DXsN4LKWSTXQRnA9+n2xSjhAkifgz9ivniFfkR6ha/vLX//3/9fh5uMN4vQoXdUz3sOEE+4Yi69Ldst5GbMHkxNKl9Zef0nINQ4MWzxpPx7iN7Gj6i27h6BuGsqP2679atvnNR0vrJWtO+/PsVXNUP8UXzt+6ysnILz+lyRYfhc+PwIF3LrK3aEbZt3x7veJklpd+4T3ec+lPkJ+saVoC9RD7AQdiB59RW3xUkvg1XcqO6sfYezIDtmAyVvIFTIjFR7H8A4bRF5wF+rwY4f3h5ZwzKy+S9snqogRgw0psCMNB9jw7aqInl+7mzdB5TkeAfChj1l/wptmzVQuABy8iDrnWt1mi+KVnqvxbo3p+oYxRMEPqpWeqqYkChYKCkpeeqboTBQkK3hOoXnqmKiYKIhQosi89U2UTBfaoLtsYmKPpfw6nGqCaEcy2r/ZR+/Wqc7H+os8J3s+zd8AUbXquzpeQGbubnyfn4aVOxebn0fkSYmC2+bkF6toYrrY4QTHk6Fc5xf0uu4yXsmC8lWDzs8g70/K/dIYMZ3Z56Zli9iX47L/0DF91gSu+KoBOvsqA8WeK2dJytlaugxu0yD2cLjuENYA9vO8IB1IIcfrD89E1P6mQuQqlmtR46ajAXKvAXqvAXasgulZBfK2CZFMB9zCVHqahh9kfR8y0OZqy5KRNIfHVMfYpQNeRIfGvr9oBNBT+zav2OOzTDsctFDhdY2Pj031eWbiI1Boy0vBJDzCSBayH6VVXaCWKezSlyKGJR3yxDnaMxpADkGtc64L9/YXhjAgvfxy7P815qS1WvlCZ3CD+MFya0aUdXbrRZTS6jEeXyegyHV22Rpft0WU2uuyMLvPR5dTosotLPoWi4ER4nAs/V3W/2fTBFxijlz8ug/Tyx2s6NG7IdFyM6PgGMdrUHI1Gk1MkM932KxUuzejSji7d6DIaXcajy2R0mY4uW6PL9ugyG112Rpf56HJqdFnjS4ckyHCmZFRAswwnwPW1yOss+xctvQeH1yywZ0HYxCYeVl9R/RKvkh1PfdISUM2bmHU2uo72M2Px1ZwTLvFd2NDBSuvP2+Fj8FXgXlazGE7EkkkTudHlyIgrZh6y77aPvS6nsLlNYFSGJ26ZeM1OpC020VNbNrrcZqtuU9eusmBpkRQmo+DaBIXiyJQgPItax3vllNdct8SUF0sSaL1eZqG3XAFJS2gEzg3qc7nuOFSDeFXk61hEb5fWcvF0og4aNKhZfMM2IXqEYzY/dwTIgGt4XjC2I3nMoajZGO79dLmDompXOV3nsJsyRiGBUtdv5BT3yml/Zcpf6eByl3/ClDtgFt8o/MZUKO36K7mUqnIH3LCQckQf8/9r7L8fU9yrZrymqfWqu7yaYzqaY/7fOP+6Q9FNJE+7GN59YnvaSVOs8zV+CHWU1xSvl3ssrL2KdlBEu+v+5l73j+dqH+W0Y5kVM7n/S/bZ2IVHA6/XqxhvljnFNI1Ne1YmfkgtKgbV3vWyRzvhyc7O9+V+2sMDt59S6vXZA6JfxZTfrQ3FtBfxfTElEP9THMfA9DFYl1GpYq8vcKrBeBU8ZkRKDdEPqjq3wYDMKsV9NpGVBt1BRqCEFwSJBmJHYD3W1fAjypd9q/CQOQZPgxNrOYeTIeSsfbxHBU1R0asKmGN20h7u106Aig4n63AOYQeThIp+lR1nlyCGNQstDKrMq3tzTUkZj40lxoC6/apLM8dXeQypSzcdX13LE5lyGQm+EpoCohLZCCe0E45J5gJwmJasUUBLZV7PH0wuTK9EpglTb78SWh3NE47SOawVSDlwZzjNccQbtlGoXskQwawtHpwMGHXxDidjcHC7UOL8mHQzP8w+rlCRXRAGqET/rvn0q5FcwrnMsuy/1DhTwZIaiOe+Ec99CFbiuR8WehVyBRvx3EeCaPHc11Ct6XCcQ8ZZJKU8eO5rqONQbric03zBP3LfJujYj0STKQ5m2cPGDvXjcsSRquDObSVBU/e4JLabNQreew6u2YjgdcE1W1F8pFZUhK+jgSS91uJExqdxcfZvOT6DVPZtZ2yTJsvi4DL4bRwHMGKp4/Sa+0NOa0ZecP0fy00l+p9x13/u1mbX/3gCSjfgFO1AIO8i8pg08Ss6vMKrVVi7ROoVRSjwGRz5LSRgTq0Z3O9D9VIvWoHrPxw36i9Cw3gfhnF8j9neNJ3IuDfrJZMKJ1mu264d+W+kbStOI+GLD9e2FXSK6398jYZMXbkOrv/xeMXxthUbzjOIUFjrZ/pFxf6S8BgYcNbp4iCLQMSuOgMQZ8kaNvaS1NnXDI5e5KkiybcbMrQyetjHeXchZH5loqlkugBuVW8krvF9gDZIemObCZVVWrP4BjmOE7T2Sd/NTWKjw/L4dq/M8yuufuU+bYdhIy5nj6n6UCXebKFFUqvBuUhfqFytHWDxcLUnrORCvcXJ7pQmdUihVW/ffhb7HHU0vfhMw4KkG9/KXtTaDWXmuYMM/oB38EYgP8a5LjSn/+uxxsGHlI2SAFQFXhkjU4WWc3J4dRIVM6uweHXCHC4+xkKCQT0mCLYYyIgkP28VQ8RG5n+wZOYVrKBu3s8+oe1QDlKCG15lQ1Jfr49zAn3p3aAMx45dZde17A81e62xGcowdv4bI2eIwEDFh4Xx01vk4fd2jz/ctRSyHppaQBvHn9d36x+2RAO1cUiyEr49J/dvzkXX+vCaBdl/ZxhW6PRYd6tYlwtdccTaXKwVTpTYKuTrbZTBipWErOi/RpmqFcWcajVUbmtFsc8HEnNvg5ZYFXN1TSNVpNRkxlrZUlbrO69VfPWqPS+WlmvA2fifhFTF4vLNixMFx/BpQvqc6exbmtNthr5o3xpDjQ7V6lH3Lx4aa3abckaPaKjVZ3P1fjWxT5oMDNpnXqEEd0yJSESCLy8dyv7bGlAzbIBlj9YfE9gaAh/ATu/h3P/vWyc+H0Hu0wGPeZa929YJVKXJ6MhQ2PFFpcyZKtuz5nao6G2YUy1/dePq7w5Z6RdLwivH6k/kVwKVY9fDbnn6QpPvjfcIGkvXYX3R5KzFfjb8Pm9y46lRImJhYYVgUEC2UOFibUfiJKMSgBLDDTjmMBOg5Ud7+sUdfPVWc/VD3Ucn/mpPcSffv7GL79+u7zf28pv+X+0Gq9uJFcygVxbbACP2nQgBKK/vqnsmorf0SBD/9hy+ONOvIr+jP88MYda8M+fbfZytCl/THl9FJ0Tz/AZs1ZwwJUHOELi/wPoNR3x3PDi1sOmwuJ3XQvAGOV7o2UOlw/6OX7DerAXDkrkGs9hMEOaGCIytSoFmA7PQW5mFv/y09pe/oYufZkKEI2oAh09oagAJsP04AIXpk3Nssi9ID2QJZHAkWscJUBjqqoXUBOHo0bf3YOvBiOkEeGgCZz8GXJLIbBxXvDhlAzl9JOCCnI/6GTJ2PytDpEeQJKR/IpAk14eEm+EnI0hi//9eFSQxSPkIOT8ZkLZDT5UGYuoMRMirm6ufu35WuQAeR3LXM1Nky5jaIoSkmyYljoJsqnn/aZDeWAfMtrCPTYRxWBt+AJ5TGWoVP1NznEpTwndwi/ppGN8+ztZVVcxl2b9s6R1DOf0nDcY2zpYoyWvtezIG5MXX/0wdMZdv43BC69W9fBys/4PbeAD9i3vBlYdluxHWnFiB1Ky5fBvOG/hskN00nxx3+TZ43bKVps0SsodribmnSnpysFzKpVWnD4FHheM+G6S9PcfOA2/DvalNCaK848V6FXpnjmLeZJvBvHlnjsUfjsARwRE6jHpgLt+GxtsBnjbDE861q9szkqck4a35hCipEdDhgjjMwqv6rAs95gciwHPlata8vJe3TaHbfATjy3uJtYfFJwSc37+Ntw/z5vfrL+CfIsasuDk6b/ytujTgjJ27mp466BtSWRG52ywYwzzPIi+cffgsFL7CVipehsSNXjuy0EQk8sOu7GPAhqR6zdjem6tsHDYTYJMB5p6IEvPZvYicZLtuRyguaSiukPPq0jK48xaSrT1HOm8o7EUJyVkXmrSADEewqjnWXgoMguBa3jX+VScF6KV/1X22V+7gZdZIRwztQJBpwiZQ+baC4bPa2a8Q1pLQVEhKhE0HPsLq+NnK9Kou8GNEf25LcJMOdE4x5xac9HvhvOQRZZ/joKKI1UnclqS+l2V8Snw1LHX7Z2Qlz8cJG3kNdgKKPkUoF/I2nEQAex7eCkHXSLKhislUbC8wDE6O2qcgyVBOU14PZKcUcaGBCwuUNnezmioTXR8n/PPmXvxvUCJ4HpUvch91rcwzsq1lPTSyYlQjNAIfnEFfHIGQ+AkHny/VU/DtOSSD4jMyB6HHEel6rtXbX9lkiToEvmFxcVvEXNgUnxh7L/vHRreGpJEkhM8PZRK4etXerWPvvCUHjXnif0PjKg17L2FcQ07PHjadWeBjjs3VkRzlyicHZcf4+CsdWFlNFO4YlgQ8io5Db2qGUFRLJi4b9K8x+hnJJGTvGFY08YJSvxQxMoReMtmVPbuHb5/dwx+xbNg6Idg7rC9J4aU9QWVxWD8nT57bkyFbYNvHHkcpumOV7dXd9tY7sr2ADsbb91PdCpuaN+dY/mORLwoin+3UJ4P/aA4haG5OGc4LyivdYRWSyeva20vw32wqQXVxvfmrd5a+4LwB94wWyc37tug6e7qxRTIe31iGXSssWvBBMuKDJPJhxB52VQszO2Uov55Ogvl0WrVDXcn6GpQBspoLrMkYrEmAJ6k3kDcGa7uBNRlcCPXDCS/4S+GyXtNbfv/An7nPhaMSL38TcVABmHTWbOyo0uDAxTydxQ83LjRtBsPdyD59k8jkBhfYTTAdeXSJUCkPa1gVcVfkxDs9qFJKfXLBb5j+e/dPmOXenLr8WwHziTAB0SEyuSOtzLi+wRcUN137cVQO7fF+hPoRyNFgO+5n0A4zth3CYFMEU17++8gB4wtcb+xEzHmgUqiN7IgupP2R//sHogS3BdFbARy1WFN1A7AkMa0ymbE4UTkD23syZfVyhOsNnEliR1Qh8dnXn3LuxhCrG7hV2J7xCdNFkPbDDi377zPdHgq7BUuukl7pmA0nPXYXCMx3kvEOOUG3whaOj+2JqC1MV4uo2K5ZbkrJMdHj9SsjTJcPFxSmm7DFyAZG5gIjg1+UranPCWfqULQJSfGAojEkbR7hcSRtLhtDUqdBUjS4EOqPRoMb8WBG4h1ZW2dgrBrtuG2940a2Sk7NElPC3qqSIjL0knWhpZx6HguvdTWVmgUZ9OvNphuiWFPz2L7kJoqDA6qVIXfju2A+Lg4rl0ACzyng4rD+5p5qBMvELPoJwGS2gcmEUOVnD1FUbzeN736u4Zpm81YzDo3F22w1TR0N875bTROmhUGWWENJsDpIg6GE/ZMSTpxAkazpVtb0zWj7rb9TtL1bo23qbxFt+WA7lEmKZStyzmYs/fbfKZb+U42l9t8illphmZjEEtLUGskVHeDLWAxMKD1WGRYDU3BiiIEGYmDa43zqIgpe1TobytYeQhu29lXUbFqrFpQinB94PcTYiCWl3g66e+XcU3Kfy/nQemwI1ipXf5/UCpM0FIbnnfp5Lplw8yXeYnB8Au/n55SkrnHYLmXsETJZg2tqXubNHAehSHI+2e3iOC0KXQmnKIbtRf2wBfP6U1pcd811XXf5kExdu+5CgSp5Wv5C4YSqPSc8nM31un/i8oZZ7clBghKbqo0xLN37jx0jhRi2Nc5w9MmlvD6e3WTvtHgUZk3HR4OKaeIxOMiTXe6VvM3lrDVsZ10SbyNRbrP5nA8uC3r2j7HmN+FEKaAjPH5Vi+Twoq46kNZwzDoSRBnk4OH9LFJAiFLvvl5ljkM93KZkcRVlS2trq5zjSEk2gGOs7lmt4uL2MeOJd4NA36NHdjCy1YyeGjwd1gaa0XM9GAUTSkRHJvlEpPcd/F7U0g/WesCR6HiPA3EZDw7+WB2OquXzzhEni7CYQm6muWRaJuCLmu9eZLX3gAehNj+w/0WHTHHXvskH/XDQNcffDuQQbDuyFPHhgJkc227ZWiAHArvKyAGBPBJMgpwg2iCBIw80h6nxQW0bh0Iv2QUEmELnwlsc/8BT/FUtlWDIdRhhxHccZ4uSRdWWY/m4MsxnaIECojYOgfmcaBR0aDWrK8Hv04fuk3rQYFYD1A/jgMSK5GqwXtVw7zTSmHDcx6SOyg6gnacImdD7oSoA/yIz1PfG/LlDxwWIefPcId7qOonf01ORVkrpgE3Eg8IXzspnL+IMv1HvTUhXjNfuy8PgVpHgzN3DPYHbQAMk4rB55Gvk8PHc5n2Q8xjZoAR7Vctkq9FkpG82ECFn7QCLlgR7ghMEfWIAQFIBbXaENjuONjeoPycX0LYNtmpUVPGgiup53hnnAUCLDTPa1QzFYqqLx5nFJA/TOV5aW1zLTYNtORJVQL2oKebgdeDpeK8y7M4mATb7JG5KRmgfR75nlQZfCHPM9GtMYz5Dj+RN5C2fZO5TtluSzX5TokE4RKI4FFKVVFoOjYPyxS73wvHsIZa5IF1TYId0X450lud9yUXDJlw9mvAw4sgxmly54luU6Sbm7D14iiz7hubAFT4bj3kMnJhNWOQx7RmZ+5HzyIoSH6HExN5L5tgoQBzG5JtDsrLwgee2xspvCanApJJ+o/NN+QbJ97L/KuUTfdmVIAkG0VjOzquNp69p/wwfi6IQ1ipPKuO/Ls5NEs0jAdgIbQyKo1d1cbcEpIA0/NfNINClGSwLkGSKT4NEX9ahCy/r0mQSYOvtfXVPJ6MBlUQDSlVq1lzRgzFL/GSksqrjIsfM+du+YRA5aSQfyHjkZCyRk0GTKY4gCWsk5cQfbDSDXgJ51JZ7iKrs12GVE58pQZt0szID7NTk9q05mfZvzrEx0C7L1Htd15ZT0fq/rO1CPbeD1YPnNnsjrBZ3h4n/sg4ac4RuNnr08U8suaU8YoeoEOJZcwzT1Dprnj9Uq4mZtVR81kE6b54PT3+f9V/QcKhZ8wd6Hdnsnw+Vc8afZjENkejm2qM5Zon5EMUiFcTBSLEd0uvI0K3Y48BQJYGhNkQYLk1wpxc1jEmIE5UOuRAkTU7iREOd41xINYHphl1sTMPUjTf39caDu+sm9HgTum5CS2D31iY4sDs00+sGpU1guu9b5fWhhqsWlkKwzT+JdXsonD3BBBZB8TUxBYTFMfTN9aFN5PLH+nIGhqx+nACsD339oGaoVzQfIHFlRHjJIKQGqNl6IguokyVLvM9cIy08x0C/oMUKIbPnMXZ3shL3GTTE0BzCl5jS+3rBDyuoRRRC+IJ1wwbbxg1/ixCvF6B7SfplFOQExYedLgZhoJnqTDB9ioq75BkTnhRBgEFMkZYKnj/Epxmz1jCs3wPpErJTKD7yeGyaP32IzSKBltglN7BlRFpDTsnEm8Yu1yvCxSC0cNWVZq07p+McTekqJTfH3tw8qat4/fwqRuZ5LTHxkcCj2VuD7XzYC62fp7R+TRALADXpVXZWlgFzbBNqH9ZsaWuTlvlpt3SDO2COswbS+GfM8XwkAohtiilPZLLnDlWGfVDEJ+m1muFUmsxxt+Cf5KAU3oP4Jw22HotY7Zv0mjw1kNSIQ4LB6ARrCODXZE6wmtAMoPgUOTCICm5IuqnBoAYtByIDpIgQ9QWd5XOHsux+Xu0Dy6yb5Gis2YAw5p4gjOvhTwxuil0DBHViyM7+wpju0DyO174XeMwF3Hw3oOgHGmEdYZqK1DrwXwer92yXPhH2f38ZpE4krBDbbdkOZJNRxKYpSYahB1VOtn9YKTl292kteT0vaZzQhsdFSISCLXnWF5LU8BxmSeiwUlTwFZMUm1ptOOmn04d77g6WmHG18xf50Kmdz/zKt7y9ACOM6WNxcf5tvRyy4iPk4EmTVeZzTOmaOYsh1psYCcEzlAd4Tck5wLukaWq1jpbQkLMTDkTgU16a1A3Zv22PhKN0JBwF8Wi4VThaHJOOlleRjmQxZ0RL1ocx2SgrXb1iY+y/q2vmOG9e0ciHIRu2lzXOiGZNNAsF920VqFwjULni0yHbhPXR8cY3S0twrl3Ktbf1HiMIT/4Jgsw23mAm5MN7VhFH7PIoM9H4EixTblIoq5jWXtF+eL4/KZmNZay4hmS29Y0PIpmlP4Zk9l3O/TcYH4nXJLNKnxl2AmWDqP3fmpPp9ObcpEBmm82WO4GFVzZHwrLRANhCkM2+W8tmYYRZEPv2hIAi62GyBOqpZadRzgq1bc6K68gihuW9WfPtEdsSTilZWv5upLOR9DUuC5nxLhrpYr1zuEY3x6XckRwxJvg1WHCRrN8TyN7mk47hkz3//4YxoZNxoRJ78A8gVNoPI1Sa96/yhoRKMJQu/Ah+vlkTt+qp9aTz9ZZiOC2nipRbUFlmlcqezXU0SgQxcvYvrUQFxHxsPdJ9qrDHBxZnWA1bqaB2hSLWc/SkHx7rlRbZv7y6x0EVYQZRiIHwGusVMlhIBHAxgGac85Ckx6pklaO7yfrW8bW1XPnH4DTCidD95UOkkP1cFMAeCS7984feySBIKU7b7ZGVSdzVNliLxDD6j0muWy0OT5rMOt54jNTRq1ef4JNzIVYc3dh4cuNNfcS8oJsN49Nawp9mAdWaN7hGBvZ5JmUp4ZVkrOSSbp6/oEcFoAAg7bmgHoQA7jc29Lz5q7lQFW69qz8AjKkM4V/NebM+bzq1MgFiaNAKXKpVLs/xhZF0s5w4570h3OAzGnVx075GF/kYLAPGF305Tj7kc3G16CXFHGximiYa6Y578IYWveP3OR7tU+pgDWQVCGweLim8Xp/x0O2+NQfiIV38bM6RaEiMrlFTShrBEtPo8v7KyhFrrK9NWXOLPCZMQgvs4yhrywyiOj7pP4bJfaxSPe4pZyRusr1ybmXJEpvx6QP+cU4XVBr//DcR7hYSbbFv+X7xVTfrFY/L5W9qybS/sWMd0X/o87097DKU+A9yLIi/fEnX2TnHI1nYN13Jrf/d39J+f8jBGnJMGLvgCw4Yh9s/R+rfcgwzhGPJ1qHo9Mn6PPwdGFxNERwefDLgFBsYq3t7vIcIsTfOX34O7uwjSMbzakjAIS7rWB5x2DMjh70R+Myl4sO6kJAof0lzJnYtT3cyuiAIcL5Fcv5NOC/uxIHc/MJUeOH55oWZ/t16CidxS9uXA+rMOo7Z/r2n9TjqYNZ6Hhy6YBfy3zXwJ6s9V/0t9ZeVwvnZv/cNmaIRgokuf2O8Igww514R+xGO/J5sKTxvXeN5uvV5NKKNv1/Txs7r0sZv6eAPM9ZBSdVS00YmxzU8e0hE9xA/Yv2PinlzcS9Z//1i3ryzh6y/UsybN/cwV/3ebqi69/L1G7v68+Ytef5DsPcf7SFbfFxmkqpn8nwwPTT5nLSwisrUUUchRZAeTe8XDskv7BjsZkxHeP0HvN/Wo2cvBpmr3vp+X/vOmUr7t3ZhQzBv/pI5pH8z3P5Abv/vcPu63P6ncPs9zWfQIaDPZdn/kSXKb6TZP3Knz57/ykMPnT51euXsOj288vC5ta+pOw/9zKE7D9059/C59TMrX1Onz144eeb0g3Tm9PrK2skzh8+snP3S+pfP0/mV9abs1LkHV2i84CtnB2fPffUsfXnl5IMra/TQmZNfmvziwdPn10+ePbUy+fSLp9dDNbS28sjKyXW1fu4cPXzy7Nfqx+fWmk/p/Nce/uK5M+ebr8+vn1tbeZC+eObcqUENjfriVx56aGWNVtbWzq2p8+trKycfDjcTwM/N0cOnz58/ffZLtHL2wblzD81xNer02VPn1tZWTq3XXTn15ZWJxwGuzY8fPLl+snk42WVCnx46uUZfPHlqoOpq104BgIdPrp/6cvPFV0+fffDcV+n86V9ZGaGIe7f+tUdWrjEy3J+tjfLTelhOnXv4kbWV8+dPnztLD6+sf/ncg0r+K9QOtVMplapEtVSs2ipSmXKqo6zKlVFTSquu8lc62R85q5yKVKwSlaqWaqtM5aqrdqhdaq/qqVvVAfVx9TPqbvUL6r9Qp9R59ZT6h+pP1P+ujK7bmvzbEf52hr9d4W86/O0Of4VaVt9l05hRAgNgzdUOdZMq1Z3Kq5PqCfVPldZPIE2d1U7HOtUdXegZTfoOvaAfGG+/brNuC23sUXvUXrVXzagZdZO6Se1T+1RP9dR+tV/drG5WC2pBfdj+24DrjU1/T4S/J8PfU+Hv6fD3TPi79BPov97QV8bbrdur2/m6+rr6NfVr6qK6qH5d/br6DfUb6jfVb6pn1bPqG+ob6pvqm4qOKrWRKqW1UrdopbpKqcvHlFIt6d8tSp5xX8OzXUqpRPnLO7ITYt0c/TOb/tlN/9ymf9HEP39pZ7ayuarNn9avx+FfEv6l4V8r/GuHf1n41wn/cv7nr+zKDtTVJ/XE2bFTpUkrbkeZ69jcTOmu8m/vyh5OuG2nUv6neLwKlYbrmDcRaXgH1NhiWAp+Xl9jlOSa3rtWGte4Mlo5uTbaaFW0lP/RdNai41qw+v8B")))),y)});}
|
|
8981
8959
|
|
|
8982
8960
|
/*
|
|
8983
8961
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9132,7 +9110,7 @@
|
|
|
9132
9110
|
}
|
|
9133
9111
|
}
|
|
9134
9112
|
const consumed = last_consumed(this.streamHandle);
|
|
9135
|
-
if (consumed === 0) {
|
|
9113
|
+
if (consumed === 0 && prod === 0) {
|
|
9136
9114
|
break;
|
|
9137
9115
|
}
|
|
9138
9116
|
offset += consumed;
|
|
@@ -9388,7 +9366,7 @@
|
|
|
9388
9366
|
*/
|
|
9389
9367
|
|
|
9390
9368
|
|
|
9391
|
-
|
|
9369
|
+
e(setDefaultConfiguration);
|
|
9392
9370
|
|
|
9393
9371
|
/*
|
|
9394
9372
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9464,7 +9442,6 @@
|
|
|
9464
9442
|
exports.ERR_INVALID_PASSWORD = ERR_INVALID_PASSWORD;
|
|
9465
9443
|
exports.ERR_INVALID_PASSWORD_TYPE = ERR_INVALID_PASSWORD_TYPE;
|
|
9466
9444
|
exports.ERR_INVALID_SIGNAL = ERR_INVALID_SIGNAL;
|
|
9467
|
-
exports.ERR_INVALID_SIGNATURE = ERR_INVALID_SIGNATURE;
|
|
9468
9445
|
exports.ERR_INVALID_SIGNATURE_DATA = ERR_INVALID_SIGNATURE_DATA;
|
|
9469
9446
|
exports.ERR_INVALID_STRICTNESS = ERR_INVALID_STRICTNESS;
|
|
9470
9447
|
exports.ERR_INVALID_UID = ERR_INVALID_UID;
|
|
@@ -9483,7 +9460,7 @@
|
|
|
9483
9460
|
exports.ERR_UNDEFINED_UNCOMPRESSED_SIZE = ERR_UNDEFINED_UNCOMPRESSED_SIZE;
|
|
9484
9461
|
exports.ERR_UNDETERMINED_SIZE = ERR_UNDETERMINED_SIZE;
|
|
9485
9462
|
exports.ERR_UNSAFE_FILENAME = ERR_UNSAFE_FILENAME;
|
|
9486
|
-
exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION
|
|
9463
|
+
exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION;
|
|
9487
9464
|
exports.ERR_UNSUPPORTED_CONTEXT = ERR_UNSUPPORTED_CONTEXT;
|
|
9488
9465
|
exports.ERR_UNSUPPORTED_CRYPTO_API = ERR_UNSUPPORTED_CRYPTO_API;
|
|
9489
9466
|
exports.ERR_UNSUPPORTED_ENCRYPTION = ERR_UNSUPPORTED_ENCRYPTION;
|