@zip.js/zip.js 2.5.3 → 2.5.7
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/dist/z-worker-fflate.js +1 -1
- package/dist/z-worker-pako.js +1 -1
- package/dist/z-worker.js +1 -1
- package/dist/zip-fs-full.js +470 -499
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +470 -499
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +470 -499
- package/dist/zip-full.min.js +1 -1
- package/dist/zip-no-worker-deflate.min.js +1 -1
- package/dist/zip-no-worker-inflate.min.js +1 -1
- package/dist/zip-no-worker.min.js +1 -1
- package/dist/zip.js +470 -499
- package/dist/zip.min.js +1 -1
- package/index-fflate.js +1 -1
- package/index.d.ts +1 -1
- package/index.js +3 -3
- package/lib/core/{engine.js → codec-interface.js} +52 -50
- package/lib/core/{codecs/codec-pool-worker.js → codec-pool-worker.js} +55 -29
- package/lib/core/{codecs/codec-pool.js → codec-pool.js} +28 -9
- package/lib/core/configuration.js +10 -1
- package/lib/core/io.js +102 -100
- package/lib/core/{codecs → streams}/aes-crypto-stream.js +68 -54
- package/lib/core/{codecs → streams}/codec-stream.js +6 -6
- package/lib/core/{codecs → streams/codecs}/crc32.js +0 -0
- package/lib/core/{codecs → streams/codecs}/deflate.js +0 -0
- package/lib/core/{codecs → streams/codecs}/inflate.js +0 -0
- package/lib/core/{codecs → streams/codecs}/sjcl.js +0 -0
- package/lib/core/{codecs → streams}/crc32-stream.js +3 -4
- package/lib/core/{codecs → streams}/zip-crypto-stream.js +28 -32
- package/lib/core/streams/zip-entry-stream.js +185 -0
- package/lib/core/z-worker-core.js +30 -15
- package/lib/core/zip-fs-core.js +1 -1
- package/lib/core/zip-reader.js +21 -12
- package/lib/core/zip-writer.js +33 -25
- package/lib/z-worker-fflate.js +4 -1
- package/lib/z-worker-inline.js +1 -1
- package/lib/z-worker.js +2 -2
- package/lib/zip-fflate-shim.js +4 -1
- package/lib/zip-fs.js +6 -2
- package/lib/zip-full-fflate.js +6 -3
- package/lib/zip-full.js +8 -5
- package/lib/zip-no-worker-deflate.js +7 -3
- package/lib/zip-no-worker-fflate-deflate.js +6 -2
- package/lib/zip-no-worker-fflate-inflate.js +6 -3
- package/lib/zip-no-worker-fflate.js +6 -3
- package/lib/zip-no-worker-inflate.js +7 -4
- package/lib/zip-no-worker.js +8 -5
- package/lib/zip.js +6 -3
- package/package.json +2 -8
- package/lib/core/codecs/codec.js +0 -246
package/dist/zip-fs-full.js
CHANGED
|
@@ -4270,6 +4270,7 @@
|
|
|
4270
4270
|
|
|
4271
4271
|
/* global navigator */
|
|
4272
4272
|
|
|
4273
|
+
const MINIMUM_CHUNK_SIZE = 64;
|
|
4273
4274
|
const DEFAULT_CONFIGURATION = {
|
|
4274
4275
|
chunkSize: 512 * 1024,
|
|
4275
4276
|
maxWorkers: (typeof navigator != "undefined" && navigator.hardwareConcurrency) || 2,
|
|
@@ -4284,6 +4285,10 @@
|
|
|
4284
4285
|
return config;
|
|
4285
4286
|
}
|
|
4286
4287
|
|
|
4288
|
+
function getChunkSize(config) {
|
|
4289
|
+
return Math.max(config.chunkSize, MINIMUM_CHUNK_SIZE);
|
|
4290
|
+
}
|
|
4291
|
+
|
|
4287
4292
|
function configure(configuration) {
|
|
4288
4293
|
if (configuration.baseURL !== undefined) {
|
|
4289
4294
|
config.baseURL = configuration.baseURL;
|
|
@@ -4297,6 +4302,9 @@
|
|
|
4297
4302
|
if (configuration.terminateWorkerTimeout !== undefined) {
|
|
4298
4303
|
config.terminateWorkerTimeout = configuration.terminateWorkerTimeout;
|
|
4299
4304
|
}
|
|
4305
|
+
if (configuration.useCompressionStream !== undefined) {
|
|
4306
|
+
config.useCompressionStream = configuration.useCompressionStream;
|
|
4307
|
+
}
|
|
4300
4308
|
if (configuration.useWebWorkers !== undefined) {
|
|
4301
4309
|
config.useWebWorkers = configuration.useWebWorkers;
|
|
4302
4310
|
}
|
|
@@ -5450,15 +5458,14 @@
|
|
|
5450
5458
|
*/
|
|
5451
5459
|
|
|
5452
5460
|
class Crc32Stream extends TransformStream {
|
|
5461
|
+
|
|
5453
5462
|
constructor() {
|
|
5454
5463
|
super({
|
|
5455
5464
|
start() {
|
|
5456
5465
|
this.crc32 = new Crc32();
|
|
5457
5466
|
},
|
|
5458
5467
|
transform(chunk) {
|
|
5459
|
-
|
|
5460
|
-
this.crc32.append(chunk);
|
|
5461
|
-
}
|
|
5468
|
+
this.crc32.append(chunk);
|
|
5462
5469
|
},
|
|
5463
5470
|
flush(controller) {
|
|
5464
5471
|
const value = new Uint8Array(4);
|
|
@@ -6374,14 +6381,19 @@
|
|
|
6374
6381
|
const KEY_LENGTH = [16, 24, 32];
|
|
6375
6382
|
const SIGNATURE_LENGTH = 10;
|
|
6376
6383
|
const COUNTER_DEFAULT_VALUE = [0, 0, 0, 0];
|
|
6377
|
-
const
|
|
6378
|
-
const
|
|
6384
|
+
const UNDEFINED_TYPE$1 = "undefined";
|
|
6385
|
+
const FUNCTION_TYPE = "function";
|
|
6386
|
+
const CRYPTO_API_SUPPORTED = typeof crypto != UNDEFINED_TYPE$1;
|
|
6387
|
+
const SUBTLE_API_SUPPORTED = CRYPTO_API_SUPPORTED && typeof crypto.subtle != UNDEFINED_TYPE$1;
|
|
6388
|
+
const GET_RANDOM_VALUES_SUPPORTED = CRYPTO_API_SUPPORTED && typeof crypto.getRandomValues == FUNCTION_TYPE;
|
|
6389
|
+
const IMPORT_KEY_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof crypto.subtle.importKey == FUNCTION_TYPE;
|
|
6390
|
+
const DERIVE_BITS_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof crypto.subtle.deriveBits == FUNCTION_TYPE;
|
|
6379
6391
|
const codecBytes = codec.bytes;
|
|
6380
6392
|
const Aes = cipher.aes;
|
|
6381
6393
|
const CtrGladman = mode.ctrGladman;
|
|
6382
6394
|
const HmacSha1 = misc.hmacSha1;
|
|
6383
6395
|
|
|
6384
|
-
class
|
|
6396
|
+
class AESDecryptionStream extends TransformStream {
|
|
6385
6397
|
|
|
6386
6398
|
constructor(password, signed, strength) {
|
|
6387
6399
|
let stream;
|
|
@@ -6396,23 +6408,21 @@
|
|
|
6396
6408
|
});
|
|
6397
6409
|
},
|
|
6398
6410
|
async transform(chunk, controller) {
|
|
6399
|
-
|
|
6400
|
-
|
|
6401
|
-
|
|
6402
|
-
|
|
6403
|
-
|
|
6404
|
-
|
|
6405
|
-
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
|
|
6409
|
-
|
|
6410
|
-
|
|
6411
|
-
await aesCrypto.ready;
|
|
6412
|
-
}
|
|
6413
|
-
const output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - ((chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH));
|
|
6414
|
-
controller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true));
|
|
6411
|
+
const aesCrypto = this;
|
|
6412
|
+
if (aesCrypto.password) {
|
|
6413
|
+
const password = aesCrypto.password;
|
|
6414
|
+
aesCrypto.password = null;
|
|
6415
|
+
const preamble = subarray(chunk, 0, SALT_LENGTH[aesCrypto.strength] + 2);
|
|
6416
|
+
await createDecryptionKeys(aesCrypto, preamble, password);
|
|
6417
|
+
aesCrypto.ctr = new CtrGladman(new Aes(aesCrypto.keys.key), Array.from(COUNTER_DEFAULT_VALUE));
|
|
6418
|
+
aesCrypto.hmac = new HmacSha1(aesCrypto.keys.authentication);
|
|
6419
|
+
chunk = subarray(chunk, SALT_LENGTH[aesCrypto.strength] + 2);
|
|
6420
|
+
aesCrypto.resolveReady();
|
|
6421
|
+
} else {
|
|
6422
|
+
await aesCrypto.ready;
|
|
6415
6423
|
}
|
|
6424
|
+
const output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - ((chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH));
|
|
6425
|
+
controller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true));
|
|
6416
6426
|
},
|
|
6417
6427
|
async flush(controller) {
|
|
6418
6428
|
const aesCrypto = this;
|
|
@@ -6422,14 +6432,14 @@
|
|
|
6422
6432
|
const originalSignature = subarray(pending, pending.length - SIGNATURE_LENGTH);
|
|
6423
6433
|
let decryptedChunkArray = new Uint8Array(0);
|
|
6424
6434
|
if (chunkToDecrypt.length) {
|
|
6425
|
-
const encryptedChunk =
|
|
6435
|
+
const encryptedChunk = toBits(codecBytes, chunkToDecrypt);
|
|
6426
6436
|
aesCrypto.hmac.update(encryptedChunk);
|
|
6427
|
-
const decryptedChunk = aesCrypto.
|
|
6428
|
-
decryptedChunkArray =
|
|
6437
|
+
const decryptedChunk = aesCrypto.ctr.update(encryptedChunk);
|
|
6438
|
+
decryptedChunkArray = fromBits(codecBytes, decryptedChunk);
|
|
6429
6439
|
}
|
|
6430
6440
|
stream.valid = true;
|
|
6431
6441
|
if (aesCrypto.signed) {
|
|
6432
|
-
const signature = subarray(
|
|
6442
|
+
const signature = subarray(fromBits(codecBytes, aesCrypto.hmac.digest()), 0, SIGNATURE_LENGTH);
|
|
6433
6443
|
for (let indexSignature = 0; indexSignature < SIGNATURE_LENGTH; indexSignature++) {
|
|
6434
6444
|
if (signature[indexSignature] != originalSignature[indexSignature]) {
|
|
6435
6445
|
stream.valid = false;
|
|
@@ -6443,7 +6453,7 @@
|
|
|
6443
6453
|
}
|
|
6444
6454
|
}
|
|
6445
6455
|
|
|
6446
|
-
class
|
|
6456
|
+
class AESEncryptionStream extends TransformStream {
|
|
6447
6457
|
|
|
6448
6458
|
constructor(password, strength) {
|
|
6449
6459
|
let stream;
|
|
@@ -6457,34 +6467,32 @@
|
|
|
6457
6467
|
});
|
|
6458
6468
|
},
|
|
6459
6469
|
async transform(chunk, controller) {
|
|
6460
|
-
|
|
6461
|
-
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
|
|
6465
|
-
|
|
6466
|
-
|
|
6467
|
-
|
|
6468
|
-
|
|
6469
|
-
|
|
6470
|
-
|
|
6471
|
-
await aesCrypto.ready;
|
|
6472
|
-
}
|
|
6473
|
-
const output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));
|
|
6474
|
-
output.set(preamble, 0);
|
|
6475
|
-
controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0));
|
|
6470
|
+
const aesCrypto = this;
|
|
6471
|
+
let preamble = new Uint8Array(0);
|
|
6472
|
+
if (aesCrypto.password) {
|
|
6473
|
+
const password = aesCrypto.password;
|
|
6474
|
+
aesCrypto.password = null;
|
|
6475
|
+
preamble = await createEncryptionKeys(aesCrypto, password);
|
|
6476
|
+
aesCrypto.ctr = new CtrGladman(new Aes(aesCrypto.keys.key), Array.from(COUNTER_DEFAULT_VALUE));
|
|
6477
|
+
aesCrypto.hmac = new HmacSha1(aesCrypto.keys.authentication);
|
|
6478
|
+
aesCrypto.resolveReady();
|
|
6479
|
+
} else {
|
|
6480
|
+
await aesCrypto.ready;
|
|
6476
6481
|
}
|
|
6482
|
+
const output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));
|
|
6483
|
+
output.set(preamble, 0);
|
|
6484
|
+
controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0));
|
|
6477
6485
|
},
|
|
6478
6486
|
async flush(controller) {
|
|
6479
6487
|
const aesCrypto = this;
|
|
6480
6488
|
await aesCrypto.ready;
|
|
6481
6489
|
let encryptedChunkArray = new Uint8Array(0);
|
|
6482
6490
|
if (aesCrypto.pending.length) {
|
|
6483
|
-
const encryptedChunk = aesCrypto.
|
|
6491
|
+
const encryptedChunk = aesCrypto.ctr.update(toBits(codecBytes, aesCrypto.pending));
|
|
6484
6492
|
aesCrypto.hmac.update(encryptedChunk);
|
|
6485
|
-
encryptedChunkArray =
|
|
6493
|
+
encryptedChunkArray = fromBits(codecBytes, encryptedChunk);
|
|
6486
6494
|
}
|
|
6487
|
-
stream.signature =
|
|
6495
|
+
stream.signature = fromBits(codecBytes, aesCrypto.hmac.digest()).slice(0, SIGNATURE_LENGTH);
|
|
6488
6496
|
controller.enqueue(concat(encryptedChunkArray, stream.signature));
|
|
6489
6497
|
}
|
|
6490
6498
|
});
|
|
@@ -6500,15 +6508,15 @@
|
|
|
6500
6508
|
}
|
|
6501
6509
|
let offset;
|
|
6502
6510
|
for (offset = 0; offset <= inputLength - BLOCK_LENGTH; offset += BLOCK_LENGTH) {
|
|
6503
|
-
const inputChunk =
|
|
6511
|
+
const inputChunk = toBits(codecBytes, subarray(input, offset, offset + BLOCK_LENGTH));
|
|
6504
6512
|
if (verifySignature) {
|
|
6505
6513
|
aesCrypto.hmac.update(inputChunk);
|
|
6506
6514
|
}
|
|
6507
|
-
const outputChunk = aesCrypto.
|
|
6515
|
+
const outputChunk = aesCrypto.ctr.update(inputChunk);
|
|
6508
6516
|
if (!verifySignature) {
|
|
6509
6517
|
aesCrypto.hmac.update(outputChunk);
|
|
6510
6518
|
}
|
|
6511
|
-
output.set(
|
|
6519
|
+
output.set(fromBits(codecBytes, outputChunk), offset + paddingStart);
|
|
6512
6520
|
}
|
|
6513
6521
|
aesCrypto.pending = subarray(input, offset);
|
|
6514
6522
|
return output;
|
|
@@ -6535,14 +6543,14 @@
|
|
|
6535
6543
|
const derivedBits = await deriveBits(Object.assign({ salt }, DERIVED_BITS_ALGORITHM), basekey, 8 * ((KEY_LENGTH[target.strength] * 2) + 2));
|
|
6536
6544
|
const compositeKey = new Uint8Array(derivedBits);
|
|
6537
6545
|
target.keys = {
|
|
6538
|
-
key:
|
|
6539
|
-
authentication:
|
|
6546
|
+
key: toBits(codecBytes, subarray(compositeKey, 0, KEY_LENGTH[target.strength])),
|
|
6547
|
+
authentication: toBits(codecBytes, subarray(compositeKey, KEY_LENGTH[target.strength], KEY_LENGTH[target.strength] * 2)),
|
|
6540
6548
|
passwordVerification: subarray(compositeKey, KEY_LENGTH[target.strength] * 2)
|
|
6541
6549
|
};
|
|
6542
6550
|
}
|
|
6543
6551
|
|
|
6544
6552
|
function getRandomValues(array) {
|
|
6545
|
-
if (
|
|
6553
|
+
if (GET_RANDOM_VALUES_SUPPORTED) {
|
|
6546
6554
|
return crypto.getRandomValues(array);
|
|
6547
6555
|
} else {
|
|
6548
6556
|
return random.getRandomValues(array);
|
|
@@ -6550,7 +6558,7 @@
|
|
|
6550
6558
|
}
|
|
6551
6559
|
|
|
6552
6560
|
function importKey(format, password, algorithm, extractable, keyUsages) {
|
|
6553
|
-
if (
|
|
6561
|
+
if (IMPORT_KEY_SUPPORTED) {
|
|
6554
6562
|
return crypto.subtle.importKey(format, password, algorithm, extractable, keyUsages);
|
|
6555
6563
|
} else {
|
|
6556
6564
|
return misc.importKey(password);
|
|
@@ -6558,7 +6566,7 @@
|
|
|
6558
6566
|
}
|
|
6559
6567
|
|
|
6560
6568
|
async function deriveBits(algorithm, baseKey, length) {
|
|
6561
|
-
if (
|
|
6569
|
+
if (DERIVE_BITS_SUPPORTED) {
|
|
6562
6570
|
return await crypto.subtle.deriveBits(algorithm, baseKey, length);
|
|
6563
6571
|
} else {
|
|
6564
6572
|
return misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length);
|
|
@@ -6588,6 +6596,13 @@
|
|
|
6588
6596
|
return array.subarray(begin, end);
|
|
6589
6597
|
}
|
|
6590
6598
|
|
|
6599
|
+
function fromBits(codecBytes, chunk) {
|
|
6600
|
+
return codecBytes.fromBits(chunk);
|
|
6601
|
+
}
|
|
6602
|
+
function toBits(codecBytes, chunk) {
|
|
6603
|
+
return codecBytes.toBits(chunk);
|
|
6604
|
+
}
|
|
6605
|
+
|
|
6591
6606
|
/*
|
|
6592
6607
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
6593
6608
|
|
|
@@ -6618,7 +6633,7 @@
|
|
|
6618
6633
|
|
|
6619
6634
|
const HEADER_LENGTH = 12;
|
|
6620
6635
|
|
|
6621
|
-
class
|
|
6636
|
+
class ZipCryptoDecryptionStream extends TransformStream {
|
|
6622
6637
|
|
|
6623
6638
|
constructor(password, passwordVerification) {
|
|
6624
6639
|
let stream;
|
|
@@ -6631,18 +6646,16 @@
|
|
|
6631
6646
|
createKeys(this, password);
|
|
6632
6647
|
},
|
|
6633
6648
|
transform(chunk, controller) {
|
|
6634
|
-
|
|
6635
|
-
|
|
6636
|
-
|
|
6637
|
-
|
|
6638
|
-
|
|
6639
|
-
|
|
6640
|
-
throw new Error(ERR_INVALID_PASSWORD);
|
|
6641
|
-
}
|
|
6642
|
-
chunk = chunk.subarray(HEADER_LENGTH);
|
|
6649
|
+
const zipCrypto = this;
|
|
6650
|
+
if (zipCrypto.password) {
|
|
6651
|
+
const decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH));
|
|
6652
|
+
zipCrypto.password = null;
|
|
6653
|
+
if (decryptedHeader[HEADER_LENGTH - 1] != zipCrypto.passwordVerification) {
|
|
6654
|
+
throw new Error(ERR_INVALID_PASSWORD);
|
|
6643
6655
|
}
|
|
6644
|
-
|
|
6656
|
+
chunk = chunk.subarray(HEADER_LENGTH);
|
|
6645
6657
|
}
|
|
6658
|
+
controller.enqueue(decrypt(zipCrypto, chunk));
|
|
6646
6659
|
},
|
|
6647
6660
|
flush() {
|
|
6648
6661
|
stream.valid = true;
|
|
@@ -6652,7 +6665,7 @@
|
|
|
6652
6665
|
}
|
|
6653
6666
|
}
|
|
6654
6667
|
|
|
6655
|
-
class
|
|
6668
|
+
class ZipCryptoEncryptionStream extends TransformStream {
|
|
6656
6669
|
|
|
6657
6670
|
constructor(password, passwordVerification) {
|
|
6658
6671
|
super({
|
|
@@ -6664,24 +6677,22 @@
|
|
|
6664
6677
|
createKeys(this, password);
|
|
6665
6678
|
},
|
|
6666
6679
|
transform(chunk, controller) {
|
|
6667
|
-
|
|
6668
|
-
|
|
6669
|
-
|
|
6670
|
-
|
|
6671
|
-
|
|
6672
|
-
|
|
6673
|
-
|
|
6674
|
-
|
|
6675
|
-
|
|
6676
|
-
|
|
6677
|
-
|
|
6678
|
-
|
|
6679
|
-
|
|
6680
|
-
offset = 0;
|
|
6681
|
-
}
|
|
6682
|
-
output.set(encrypt(zipCrypto, chunk), offset);
|
|
6683
|
-
controller.enqueue(output);
|
|
6680
|
+
const zipCrypto = this;
|
|
6681
|
+
let output;
|
|
6682
|
+
let offset;
|
|
6683
|
+
if (zipCrypto.password) {
|
|
6684
|
+
zipCrypto.password = null;
|
|
6685
|
+
const header = crypto.getRandomValues(new Uint8Array(HEADER_LENGTH));
|
|
6686
|
+
header[HEADER_LENGTH - 1] = zipCrypto.passwordVerification;
|
|
6687
|
+
output = new Uint8Array(chunk.length + header.length);
|
|
6688
|
+
output.set(encrypt(zipCrypto, header), 0);
|
|
6689
|
+
offset = HEADER_LENGTH;
|
|
6690
|
+
} else {
|
|
6691
|
+
output = new Uint8Array(chunk.length);
|
|
6692
|
+
offset = 0;
|
|
6684
6693
|
}
|
|
6694
|
+
output.set(encrypt(zipCrypto, chunk), offset);
|
|
6695
|
+
controller.enqueue(output);
|
|
6685
6696
|
},
|
|
6686
6697
|
flush() {
|
|
6687
6698
|
}
|
|
@@ -6776,19 +6787,19 @@
|
|
|
6776
6787
|
/* global TransformStream */
|
|
6777
6788
|
|
|
6778
6789
|
class CodecStream extends TransformStream {
|
|
6790
|
+
|
|
6779
6791
|
constructor(Codec, options) {
|
|
6792
|
+
let codec;
|
|
6780
6793
|
super({
|
|
6781
6794
|
start() {
|
|
6782
|
-
|
|
6795
|
+
codec = new Codec(options);
|
|
6783
6796
|
},
|
|
6784
6797
|
transform(chunk, controller) {
|
|
6785
|
-
chunk =
|
|
6786
|
-
|
|
6787
|
-
controller.enqueue(chunk);
|
|
6788
|
-
}
|
|
6798
|
+
chunk = codec.append(chunk);
|
|
6799
|
+
controller.enqueue(chunk);
|
|
6789
6800
|
},
|
|
6790
6801
|
flush(controller) {
|
|
6791
|
-
const chunk =
|
|
6802
|
+
const chunk = codec.flush();
|
|
6792
6803
|
if (chunk) {
|
|
6793
6804
|
controller.enqueue(chunk);
|
|
6794
6805
|
}
|
|
@@ -6825,199 +6836,205 @@
|
|
|
6825
6836
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
6826
6837
|
*/
|
|
6827
6838
|
|
|
6828
|
-
const CODEC_DEFLATE = "deflate";
|
|
6829
|
-
const CODEC_INFLATE = "inflate";
|
|
6830
6839
|
const ERR_INVALID_SIGNATURE = "Invalid signature";
|
|
6831
|
-
const
|
|
6832
|
-
const
|
|
6833
|
-
const
|
|
6834
|
-
const
|
|
6835
|
-
|
|
6836
|
-
|
|
6837
|
-
|
|
6838
|
-
|
|
6839
|
-
|
|
6840
|
-
|
|
6841
|
-
|
|
6842
|
-
signed
|
|
6843
|
-
|
|
6844
|
-
|
|
6845
|
-
|
|
6846
|
-
|
|
6847
|
-
|
|
6848
|
-
|
|
6849
|
-
|
|
6850
|
-
|
|
6851
|
-
|
|
6852
|
-
|
|
6853
|
-
|
|
6854
|
-
|
|
6855
|
-
|
|
6856
|
-
|
|
6857
|
-
|
|
6858
|
-
|
|
6859
|
-
|
|
6860
|
-
|
|
6861
|
-
controller.enqueue(value);
|
|
6862
|
-
if (done || codec.aborted) {
|
|
6863
|
-
controller.close();
|
|
6864
|
-
}
|
|
6865
|
-
}
|
|
6866
|
-
})
|
|
6867
|
-
});
|
|
6868
|
-
if (encrypted) {
|
|
6869
|
-
if (zipCrypto) {
|
|
6870
|
-
codec.stream = codec.stream.pipeThrough(new ZipCryptoDecryptStream(password, passwordVerification));
|
|
6871
|
-
} else {
|
|
6872
|
-
codec.decryptStream = new AESDecryptStream(password, signed, encryptionStrength);
|
|
6873
|
-
codec.stream = codec.stream.pipeThrough(codec.decryptStream);
|
|
6840
|
+
const COMPRESSION_FORMAT = "deflate-raw";
|
|
6841
|
+
const UNDEFINED_TYPE = "undefined";
|
|
6842
|
+
const COMPRESSION_STREAM_API_SUPPORTED = typeof CompressionStream == UNDEFINED_TYPE;
|
|
6843
|
+
const DECOMPRESSION_STREAM_API_SUPPORTED = typeof DecompressionStream == UNDEFINED_TYPE;
|
|
6844
|
+
let INFLATE_RAW_SUPPORTED = true;
|
|
6845
|
+
let DEFLATE_RAW_SUPPORTED = true;
|
|
6846
|
+
|
|
6847
|
+
class DeflateStream extends TransformStream {
|
|
6848
|
+
|
|
6849
|
+
constructor(codecConstructor, options, { chunkSize }, ...strategies) {
|
|
6850
|
+
super({}, ...strategies);
|
|
6851
|
+
const { compressed, useCompressionStream, password, passwordVerification, encryptionStrength, zipCrypto, signed } = options;
|
|
6852
|
+
const stream = this;
|
|
6853
|
+
let crc32Stream, encryptionStream;
|
|
6854
|
+
let readable = filterEmptyChunks(super.readable);
|
|
6855
|
+
const encrypted = Boolean(password);
|
|
6856
|
+
if ((!encrypted || zipCrypto) && signed) {
|
|
6857
|
+
[readable, crc32Stream] = readable.tee();
|
|
6858
|
+
crc32Stream = crc32Stream.pipeThrough(new Crc32Stream());
|
|
6859
|
+
}
|
|
6860
|
+
if (compressed) {
|
|
6861
|
+
if ((useCompressionStream !== undefined && !useCompressionStream) || (COMPRESSION_STREAM_API_SUPPORTED && !DEFLATE_RAW_SUPPORTED)) {
|
|
6862
|
+
readable = pipeCodecStream(codecConstructor, readable, chunkSize);
|
|
6863
|
+
} else {
|
|
6864
|
+
try {
|
|
6865
|
+
const compressionStream = new CompressionStream(COMPRESSION_FORMAT);
|
|
6866
|
+
readable = readable.pipeThrough(compressionStream);
|
|
6867
|
+
} catch (_error) {
|
|
6868
|
+
DEFLATE_RAW_SUPPORTED = false;
|
|
6869
|
+
readable = pipeCodecStream(codecConstructor, readable, chunkSize);
|
|
6874
6870
|
}
|
|
6875
6871
|
}
|
|
6876
|
-
|
|
6877
|
-
|
|
6878
|
-
|
|
6879
|
-
|
|
6880
|
-
|
|
6881
|
-
|
|
6882
|
-
|
|
6883
|
-
|
|
6884
|
-
|
|
6885
|
-
|
|
6872
|
+
}
|
|
6873
|
+
if (encrypted) {
|
|
6874
|
+
if (zipCrypto) {
|
|
6875
|
+
readable = readable.pipeThrough(new ZipCryptoEncryptionStream(password, passwordVerification));
|
|
6876
|
+
} else {
|
|
6877
|
+
encryptionStream = new AESEncryptionStream(password, encryptionStrength);
|
|
6878
|
+
readable = readable.pipeThrough(encryptionStream);
|
|
6879
|
+
}
|
|
6880
|
+
}
|
|
6881
|
+
setReadable(stream, readable, async () => {
|
|
6882
|
+
let signature;
|
|
6883
|
+
if (encrypted && !zipCrypto) {
|
|
6884
|
+
signature = encryptionStream.signature;
|
|
6886
6885
|
}
|
|
6887
6886
|
if ((!encrypted || zipCrypto) && signed) {
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
codec.crc32Stream = tee[1].pipeThrough(new Crc32Stream());
|
|
6887
|
+
signature = await crc32Stream.getReader().read();
|
|
6888
|
+
signature = new DataView(signature.value.buffer).getUint32(0);
|
|
6891
6889
|
}
|
|
6892
|
-
|
|
6893
|
-
|
|
6894
|
-
};
|
|
6895
|
-
codec.abort = () => codec.aborted = true;
|
|
6896
|
-
|
|
6897
|
-
function pipeCodecStream() {
|
|
6898
|
-
codec.stream = codec.stream.pipeThrough(new CodecStream(codecConstructor, { chunkSize }));
|
|
6899
|
-
}
|
|
6890
|
+
stream.signature = signature;
|
|
6891
|
+
});
|
|
6900
6892
|
}
|
|
6893
|
+
}
|
|
6894
|
+
|
|
6895
|
+
class InflateStream extends TransformStream {
|
|
6901
6896
|
|
|
6902
|
-
|
|
6903
|
-
|
|
6904
|
-
const {
|
|
6905
|
-
|
|
6906
|
-
|
|
6897
|
+
constructor(codecConstructor, options, { chunkSize }, ...strategies) {
|
|
6898
|
+
super({}, ...strategies);
|
|
6899
|
+
const { zipCrypto, password, passwordVerification, signed, encryptionStrength, compressed, useCompressionStream } = options;
|
|
6900
|
+
const stream = this;
|
|
6901
|
+
let crc32Stream, decryptionStream;
|
|
6902
|
+
let readable = filterEmptyChunks(super.readable);
|
|
6903
|
+
const encrypted = Boolean(password);
|
|
6904
|
+
if (encrypted) {
|
|
6905
|
+
if (zipCrypto) {
|
|
6906
|
+
readable = readable.pipeThrough(new ZipCryptoDecryptionStream(password, passwordVerification));
|
|
6907
|
+
} else {
|
|
6908
|
+
decryptionStream = new AESDecryptionStream(password, signed, encryptionStrength);
|
|
6909
|
+
readable = readable.pipeThrough(decryptionStream);
|
|
6910
|
+
}
|
|
6907
6911
|
}
|
|
6908
|
-
if (
|
|
6909
|
-
|
|
6910
|
-
|
|
6911
|
-
|
|
6912
|
+
if (compressed) {
|
|
6913
|
+
if ((useCompressionStream !== undefined && !useCompressionStream) || (DECOMPRESSION_STREAM_API_SUPPORTED && !INFLATE_RAW_SUPPORTED)) {
|
|
6914
|
+
readable = pipeCodecStream(codecConstructor, readable, chunkSize);
|
|
6915
|
+
} else {
|
|
6916
|
+
try {
|
|
6917
|
+
readable = readable.pipeThrough(new DecompressionStream(COMPRESSION_FORMAT));
|
|
6918
|
+
} catch (_error) {
|
|
6919
|
+
INFLATE_RAW_SUPPORTED = false;
|
|
6920
|
+
readable = pipeCodecStream(codecConstructor, readable, chunkSize);
|
|
6921
|
+
}
|
|
6922
|
+
}
|
|
6923
|
+
}
|
|
6924
|
+
if ((!encrypted || zipCrypto) && signed) {
|
|
6925
|
+
[readable, crc32Stream] = readable.tee();
|
|
6926
|
+
crc32Stream = crc32Stream.pipeThrough(new Crc32Stream());
|
|
6927
|
+
}
|
|
6928
|
+
setReadable(stream, readable, async () => {
|
|
6929
|
+
if (encrypted && !zipCrypto) {
|
|
6930
|
+
if (!decryptionStream.valid) {
|
|
6912
6931
|
throw new Error(ERR_INVALID_SIGNATURE);
|
|
6913
6932
|
}
|
|
6914
6933
|
}
|
|
6915
|
-
if ((!
|
|
6916
|
-
signature = await
|
|
6934
|
+
if ((!encrypted || zipCrypto) && signed) {
|
|
6935
|
+
const signature = await crc32Stream.getReader().read();
|
|
6917
6936
|
const dataViewSignature = new DataView(signature.value.buffer);
|
|
6918
|
-
if (
|
|
6937
|
+
if (signature != dataViewSignature.getUint32(0, false)) {
|
|
6919
6938
|
throw new Error(ERR_INVALID_SIGNATURE);
|
|
6920
6939
|
}
|
|
6921
6940
|
}
|
|
6922
|
-
|
|
6923
|
-
} else {
|
|
6924
|
-
await codec.read();
|
|
6925
|
-
}
|
|
6941
|
+
});
|
|
6926
6942
|
}
|
|
6927
6943
|
}
|
|
6928
6944
|
|
|
6929
|
-
|
|
6945
|
+
function pipeCodecStream(codecConstructor, stream, chunkSize) {
|
|
6946
|
+
return stream.pipeThrough(new CodecStream(codecConstructor, { chunkSize }));
|
|
6947
|
+
}
|
|
6930
6948
|
|
|
6931
|
-
|
|
6932
|
-
|
|
6933
|
-
|
|
6934
|
-
|
|
6935
|
-
|
|
6936
|
-
zipCrypto,
|
|
6937
|
-
password,
|
|
6938
|
-
passwordVerification,
|
|
6939
|
-
encryptionStrength,
|
|
6940
|
-
useCompressionStream
|
|
6941
|
-
}, { chunkSize }) {
|
|
6942
|
-
const codec = this;
|
|
6943
|
-
codec.start = async () => {
|
|
6944
|
-
Object.assign(this, {
|
|
6945
|
-
encrypted,
|
|
6946
|
-
signed,
|
|
6947
|
-
compressed,
|
|
6948
|
-
zipCrypto,
|
|
6949
|
-
stream: new ReadableStream({
|
|
6950
|
-
async pull(controller) {
|
|
6951
|
-
const { value, done } = await codec.pull();
|
|
6952
|
-
controller.enqueue(value);
|
|
6953
|
-
if (done || codec.aborted) {
|
|
6954
|
-
controller.close();
|
|
6955
|
-
}
|
|
6956
|
-
}
|
|
6957
|
-
})
|
|
6958
|
-
});
|
|
6959
|
-
if ((!encrypted || zipCrypto) && signed) {
|
|
6960
|
-
const tee = codec.stream.tee();
|
|
6961
|
-
codec.stream = tee[0];
|
|
6962
|
-
codec.crc32Stream = tee[1].pipeThrough(new Crc32Stream({ chunkSize }));
|
|
6963
|
-
}
|
|
6964
|
-
if (compressed) {
|
|
6965
|
-
if ((useCompressionStream !== undefined && !useCompressionStream) || typeof CompressionStream == "undefined") {
|
|
6966
|
-
pipeCodecStream();
|
|
6967
|
-
} else {
|
|
6968
|
-
try {
|
|
6969
|
-
codec.stream = codec.stream.pipeThrough(new CompressionStream("deflate-raw"));
|
|
6970
|
-
} catch (_error) {
|
|
6971
|
-
pipeCodecStream();
|
|
6972
|
-
}
|
|
6973
|
-
}
|
|
6949
|
+
function filterEmptyChunks(readable) {
|
|
6950
|
+
return readable.pipeThrough(new TransformStream({
|
|
6951
|
+
transform(chunk, controller) {
|
|
6952
|
+
if (chunk && chunk.length) {
|
|
6953
|
+
controller.enqueue(chunk);
|
|
6974
6954
|
}
|
|
6975
|
-
if (encrypted) {
|
|
6976
|
-
if (zipCrypto) {
|
|
6977
|
-
codec.stream = codec.stream.pipeThrough(new ZipCryptoEncryptStream(password, passwordVerification));
|
|
6978
|
-
} else {
|
|
6979
|
-
codec.encryptStream = new AESEncryptStream(password, encryptionStrength);
|
|
6980
|
-
codec.stream = codec.stream.pipeThrough(codec.encryptStream);
|
|
6981
|
-
}
|
|
6982
|
-
}
|
|
6983
|
-
codec.reader = codec.stream.getReader();
|
|
6984
|
-
await codec.read();
|
|
6985
|
-
};
|
|
6986
|
-
codec.abort = () => codec.aborted = true;
|
|
6987
|
-
|
|
6988
|
-
function pipeCodecStream() {
|
|
6989
|
-
codec.stream = codec.stream.pipeThrough(new CodecStream(codecConstructor, { chunkSize, level }));
|
|
6990
6955
|
}
|
|
6991
|
-
}
|
|
6956
|
+
}));
|
|
6957
|
+
}
|
|
6992
6958
|
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
6996
|
-
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
let signature;
|
|
7001
|
-
if (codec.encrypted && !codec.zipCrypto) {
|
|
7002
|
-
signature = codec.encryptStream.signature;
|
|
7003
|
-
}
|
|
7004
|
-
if ((!codec.encrypted || codec.zipCrypto) && codec.signed) {
|
|
7005
|
-
signature = await codec.crc32Stream.getReader().read();
|
|
7006
|
-
signature = new DataView(signature.value.buffer).getUint32(0);
|
|
6959
|
+
function setReadable(stream, readable, flush) {
|
|
6960
|
+
stream.length = 0;
|
|
6961
|
+
readable = readable.pipeThrough(new TransformStream({
|
|
6962
|
+
transform(chunk, controller) {
|
|
6963
|
+
if (chunk && chunk.length) {
|
|
6964
|
+
stream.length += chunk.length;
|
|
6965
|
+
controller.enqueue(chunk);
|
|
7007
6966
|
}
|
|
7008
|
-
|
|
7009
|
-
|
|
7010
|
-
|
|
6967
|
+
}, flush
|
|
6968
|
+
}));
|
|
6969
|
+
Object.defineProperty(stream, "readable", {
|
|
6970
|
+
get() {
|
|
6971
|
+
return readable;
|
|
7011
6972
|
}
|
|
7012
|
-
}
|
|
7013
|
-
|
|
6973
|
+
});
|
|
7014
6974
|
}
|
|
7015
6975
|
|
|
7016
|
-
|
|
6976
|
+
/*
|
|
6977
|
+
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
6978
|
+
|
|
6979
|
+
Redistribution and use in source and binary forms, with or without
|
|
6980
|
+
modification, are permitted provided that the following conditions are met:
|
|
6981
|
+
|
|
6982
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
6983
|
+
this list of conditions and the following disclaimer.
|
|
6984
|
+
|
|
6985
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
6986
|
+
notice, this list of conditions and the following disclaimer in
|
|
6987
|
+
the documentation and/or other materials provided with the distribution.
|
|
6988
|
+
|
|
6989
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
6990
|
+
derived from this software without specific prior written permission.
|
|
6991
|
+
|
|
6992
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
6993
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
6994
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
6995
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
6996
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
6997
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
6998
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
6999
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
7000
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
7001
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
7002
|
+
*/
|
|
7003
|
+
|
|
7004
|
+
const CODEC_DEFLATE = "deflate";
|
|
7005
|
+
const CODEC_INFLATE = "inflate";
|
|
7006
|
+
const MESSAGE_EVENT_TYPE = "message";
|
|
7007
|
+
const MESSAGE_START = "start";
|
|
7008
|
+
const MESSAGE_PULL = "pull";
|
|
7009
|
+
const MESSAGE_DATA = "data";
|
|
7010
|
+
const MESSAGE_ABORT = "abort";
|
|
7011
|
+
const MESSAGE_CLOSE = "close";
|
|
7012
|
+
const ERR_ABORT = "AbortError";
|
|
7013
|
+
|
|
7014
|
+
function createCodec(codecConstructor, readable, writable, options, config) {
|
|
7015
|
+
const controller = new AbortController();
|
|
7016
|
+
const { signal } = controller;
|
|
7017
7017
|
if (options.codecType.startsWith(CODEC_DEFLATE)) {
|
|
7018
|
-
return
|
|
7018
|
+
return {
|
|
7019
|
+
run: () => run(DeflateStream),
|
|
7020
|
+
abort
|
|
7021
|
+
};
|
|
7019
7022
|
} else if (options.codecType.startsWith(CODEC_INFLATE)) {
|
|
7020
|
-
return
|
|
7023
|
+
return {
|
|
7024
|
+
run: () => run(InflateStream),
|
|
7025
|
+
abort
|
|
7026
|
+
};
|
|
7027
|
+
}
|
|
7028
|
+
|
|
7029
|
+
async function run(StreamConstructor) {
|
|
7030
|
+
const stream = new StreamConstructor(codecConstructor, options, config);
|
|
7031
|
+
await readable.pipeThrough(stream, { signal }).pipeTo(writable);
|
|
7032
|
+
const { length, signature } = stream;
|
|
7033
|
+
return { length, signature };
|
|
7034
|
+
}
|
|
7035
|
+
|
|
7036
|
+
function abort() {
|
|
7037
|
+
controller.abort();
|
|
7021
7038
|
}
|
|
7022
7039
|
}
|
|
7023
7040
|
|
|
@@ -7051,10 +7068,12 @@
|
|
|
7051
7068
|
|
|
7052
7069
|
let classicWorkersSupported = true;
|
|
7053
7070
|
|
|
7054
|
-
function getWorker(workerData, codecConstructor, options, config, onTaskFinished, webWorker, scripts) {
|
|
7071
|
+
function getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts) {
|
|
7055
7072
|
Object.assign(workerData, {
|
|
7056
7073
|
busy: true,
|
|
7057
7074
|
codecConstructor,
|
|
7075
|
+
readable,
|
|
7076
|
+
writable,
|
|
7058
7077
|
options: Object.assign({}, options),
|
|
7059
7078
|
scripts,
|
|
7060
7079
|
terminate() {
|
|
@@ -7068,27 +7087,50 @@
|
|
|
7068
7087
|
onTaskFinished(workerData);
|
|
7069
7088
|
}
|
|
7070
7089
|
});
|
|
7090
|
+
const { signal, onprogress, size } = streamOptions;
|
|
7091
|
+
if (signal || onprogress) {
|
|
7092
|
+
let chunkOffset = 0;
|
|
7093
|
+
const transformer = {};
|
|
7094
|
+
if (onprogress) {
|
|
7095
|
+
transformer.transform = (chunk, controller) => {
|
|
7096
|
+
chunkOffset += chunk.length;
|
|
7097
|
+
try {
|
|
7098
|
+
onprogress(chunkOffset, size());
|
|
7099
|
+
} catch (_error) {
|
|
7100
|
+
// ignored
|
|
7101
|
+
}
|
|
7102
|
+
controller.enqueue(chunk);
|
|
7103
|
+
};
|
|
7104
|
+
}
|
|
7105
|
+
workerData.readable = readable.pipeThrough(new TransformStream(transformer), { signal });
|
|
7106
|
+
}
|
|
7071
7107
|
return webWorker ? createWebWorkerInterface(workerData, config) : createWorkerInterface(workerData, config);
|
|
7072
7108
|
}
|
|
7073
7109
|
|
|
7074
7110
|
function createWorkerInterface(workerData, config) {
|
|
7075
|
-
const interfaceCodec = createCodec
|
|
7111
|
+
const interfaceCodec = createCodec(workerData.codecConstructor, workerData.readable, workerData.writable, workerData.options, config);
|
|
7076
7112
|
const codec = {
|
|
7077
7113
|
abort() {
|
|
7078
7114
|
interfaceCodec.abort();
|
|
7079
7115
|
workerData.onTaskFinished();
|
|
7080
7116
|
},
|
|
7081
|
-
|
|
7082
|
-
|
|
7117
|
+
run() {
|
|
7118
|
+
const result = interfaceCodec.run();
|
|
7119
|
+
workerData.onTaskFinished();
|
|
7120
|
+
return result;
|
|
7083
7121
|
}
|
|
7084
7122
|
};
|
|
7085
|
-
interfaceCodec.pull = () => codec.pull();
|
|
7086
|
-
interfaceCodec.ondata = data => ondata(workerData, codec, data);
|
|
7087
7123
|
return codec;
|
|
7088
7124
|
}
|
|
7089
7125
|
|
|
7090
7126
|
function createWebWorkerInterface(workerData, { baseURL, chunkSize }) {
|
|
7091
7127
|
const workerOptions = { type: "module" };
|
|
7128
|
+
workerData.reader = workerData.readable.getReader();
|
|
7129
|
+
workerData.writer = workerData.writable.getWriter();
|
|
7130
|
+
workerData.result = new Promise((resolve, reject) => {
|
|
7131
|
+
workerData.resolveResult = resolve;
|
|
7132
|
+
workerData.rejectResult = reject;
|
|
7133
|
+
});
|
|
7092
7134
|
if (!workerData.interface) {
|
|
7093
7135
|
if (!classicWorkersSupported) {
|
|
7094
7136
|
workerData.worker = getWorker(workerOptions);
|
|
@@ -7106,10 +7148,11 @@
|
|
|
7106
7148
|
sendMessage({ type: MESSAGE_ABORT });
|
|
7107
7149
|
workerData.onTaskFinished();
|
|
7108
7150
|
},
|
|
7109
|
-
|
|
7151
|
+
run() {
|
|
7110
7152
|
const options = workerData.options;
|
|
7111
7153
|
const scripts = workerData.scripts.slice(1);
|
|
7112
7154
|
sendMessage({ type: MESSAGE_START, scripts, options, config: { chunkSize } });
|
|
7155
|
+
return workerData.result;
|
|
7113
7156
|
}
|
|
7114
7157
|
};
|
|
7115
7158
|
}
|
|
@@ -7151,43 +7194,35 @@
|
|
|
7151
7194
|
async function onMessage(event) {
|
|
7152
7195
|
const message = event.data;
|
|
7153
7196
|
const reponseError = message.error;
|
|
7154
|
-
const codec = workerData.interface;
|
|
7155
7197
|
try {
|
|
7156
7198
|
if (reponseError) {
|
|
7157
7199
|
const error = new Error(reponseError.message);
|
|
7158
7200
|
error.stack = reponseError.stack;
|
|
7159
|
-
|
|
7201
|
+
workerData.rejectResult(error);
|
|
7160
7202
|
workerData.onTaskFinished();
|
|
7161
7203
|
} else {
|
|
7162
7204
|
if (message.type == MESSAGE_PULL) {
|
|
7163
|
-
const { value, done } = await
|
|
7205
|
+
const { value, done } = await workerData.reader.read();
|
|
7164
7206
|
sendMessage({ type: MESSAGE_DATA, data: value, done, messageId: message.messageId });
|
|
7165
7207
|
}
|
|
7166
7208
|
if (message.type == MESSAGE_DATA) {
|
|
7167
|
-
|
|
7168
|
-
|
|
7169
|
-
|
|
7170
|
-
|
|
7171
|
-
|
|
7209
|
+
let { data } = message;
|
|
7210
|
+
data = new Uint8Array(data);
|
|
7211
|
+
await workerData.writer.ready;
|
|
7212
|
+
workerData.writer.write(data);
|
|
7213
|
+
}
|
|
7214
|
+
if (message.type == MESSAGE_CLOSE) {
|
|
7215
|
+
workerData.resolveResult(message.result);
|
|
7216
|
+
workerData.onTaskFinished();
|
|
7172
7217
|
}
|
|
7173
7218
|
}
|
|
7174
7219
|
} catch (error) {
|
|
7175
|
-
|
|
7220
|
+
workerData.rejectResult(error);
|
|
7176
7221
|
workerData.onTaskFinished();
|
|
7177
7222
|
}
|
|
7178
7223
|
}
|
|
7179
7224
|
}
|
|
7180
7225
|
|
|
7181
|
-
async function ondata(workerData, codec, data) {
|
|
7182
|
-
let { value, done } = data;
|
|
7183
|
-
if (done) {
|
|
7184
|
-
await codec.ondata({ value: { data: value.data, signature: value.signature }, done });
|
|
7185
|
-
workerData.onTaskFinished();
|
|
7186
|
-
} else if (value.data) {
|
|
7187
|
-
await codec.ondata({ value: { data: value.data } });
|
|
7188
|
-
}
|
|
7189
|
-
}
|
|
7190
|
-
|
|
7191
7226
|
/*
|
|
7192
7227
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
7193
7228
|
|
|
@@ -7221,30 +7256,42 @@
|
|
|
7221
7256
|
|
|
7222
7257
|
let indexWorker = 0;
|
|
7223
7258
|
|
|
7224
|
-
function
|
|
7259
|
+
async function runCodec(codecConstructor, readable, writable, options, config, streamOptions) {
|
|
7225
7260
|
const streamCopy = !options.compressed && !options.signed && !options.encrypted;
|
|
7226
7261
|
const webWorker = !streamCopy && (options.useWebWorkers || (options.useWebWorkers === undefined && config.useWebWorkers));
|
|
7227
7262
|
const scripts = webWorker && config.workerScripts ? config.workerScripts[options.codecType] : [];
|
|
7228
7263
|
options.useCompressionStream = options.useCompressionStream === undefined ? config.useCompressionStream : options.useCompressionStream;
|
|
7264
|
+
let codec;
|
|
7229
7265
|
if (pool.length < config.maxWorkers) {
|
|
7230
7266
|
const workerData = { indexWorker };
|
|
7231
7267
|
indexWorker++;
|
|
7232
7268
|
pool.push(workerData);
|
|
7233
|
-
|
|
7269
|
+
codec = getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts);
|
|
7234
7270
|
} else {
|
|
7235
7271
|
const workerData = pool.find(workerData => !workerData.busy);
|
|
7236
7272
|
if (workerData) {
|
|
7237
7273
|
clearTerminateTimeout(workerData);
|
|
7238
|
-
|
|
7274
|
+
codec = getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts);
|
|
7275
|
+
} else {
|
|
7276
|
+
codec = await new Promise(resolve => pendingRequests.push({ resolve, codecConstructor, readable, writable, options, webWorker, scripts }));
|
|
7277
|
+
}
|
|
7278
|
+
}
|
|
7279
|
+
const { signal } = streamOptions;
|
|
7280
|
+
try {
|
|
7281
|
+
return await codec.run(signal);
|
|
7282
|
+
} catch (error) {
|
|
7283
|
+
if (signal && signal.aborted && (signal.reason == error || error.name == ERR_ABORT)) {
|
|
7284
|
+
codec.abort();
|
|
7285
|
+
throw new Error(ERR_ABORT);
|
|
7239
7286
|
} else {
|
|
7240
|
-
|
|
7287
|
+
throw error;
|
|
7241
7288
|
}
|
|
7242
7289
|
}
|
|
7243
7290
|
|
|
7244
7291
|
function onTaskFinished(workerData) {
|
|
7245
7292
|
if (pendingRequests.length) {
|
|
7246
|
-
const [{ resolve, codecConstructor, options, webWorker, scripts }] = pendingRequests.splice(0, 1);
|
|
7247
|
-
resolve(getWorker(workerData, codecConstructor, options, config, onTaskFinished, webWorker, scripts));
|
|
7293
|
+
const [{ resolve, codecConstructor, readable, writable, options, webWorker, scripts }] = pendingRequests.splice(0, 1);
|
|
7294
|
+
resolve(getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts));
|
|
7248
7295
|
} else if (workerData.worker) {
|
|
7249
7296
|
clearTerminateTimeout(workerData);
|
|
7250
7297
|
if (Number.isFinite(config.terminateWorkerTimeout) && config.terminateWorkerTimeout >= 0) {
|
|
@@ -7273,7 +7320,7 @@
|
|
|
7273
7320
|
});
|
|
7274
7321
|
}
|
|
7275
7322
|
|
|
7276
|
-
var e=e=>{if("function"==typeof URL.createObjectURL){const t=()=>URL.createObjectURL(new Blob(['const{Array:t,Object:e,Math:n,Error:r,Uint8Array:i,Uint16Array:s,Uint32Array:o,Int32Array:f,DataView:c,TextEncoder:a,crypto:l,postMessage:u,TransformStream:w,ReadableStream:h,WritableStream:d,CompressionStream:p,DecompressionStream:y}=globalThis,b=[];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)1&e?e=e>>>1^3988292384:e>>>=1;b[t]=e}class m{constructor(t){this.t=t||-1}append(t){let e=0|this.t;for(let n=0,r=0|t.length;r>n;n++)e=e>>>8^b[255&(e^t[n])];this.t=e}get(){return~this.t}}class k extends w{constructor(){super({start(){this.i=new m},transform(t){t&&this.i.append(t)},flush(t){const e=new i(4);new c(e.buffer).setUint32(0,this.i.get()),t.enqueue(e)}})}}const v={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],r=v.o(n);return 32===r?t.concat(e):v.l(e,r,0|n,t.slice(0,t.length-1))},u(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+v.o(n)},h(t,e){if(32*t.length<e)return t;const r=(t=t.slice(0,n.ceil(e/32))).length;return e&=31,r>0&&e&&(t[r-1]=v.p(e,t[r-1]&2147483648>>e-1,1)),t},p:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,o:t=>n.round(t/1099511627776)||32,l(t,e,n,r){for(void 0===r&&(r=[]);e>=32;e-=32)r.push(n),n=0;if(0===e)return r.concat(t);for(let i=0;i<t.length;i++)r.push(n|t[i]>>>e),n=t[i]<<32-e;const i=t.length?t[t.length-1]:0,s=v.o(i);return r.push(v.p(e+s&31,e+s>32?n:r.pop(),1)),r}},g={m:{k(t){const e=v.u(t)/8,n=new i(e);let r;for(let i=0;e>i;i++)0==(3&i)&&(r=t[i/4]),n[i]=r>>>24,r<<=8;return n},v(t){const e=[];let n,r=0;for(n=0;n<t.length;n++)r=r<<8|t[n],3==(3&n)&&(e.push(r),r=0);return 3&n&&e.push(v.p(8*(3&n),r)),e}}},S={g:function(t){t?(this.S=t.S.slice(0),this._=t._.slice(0),this.C=t.C):this.reset()}};S.g.prototype={blockSize:512,reset:function(){const t=this;return t.S=this.I.slice(0),t._=[],t.C=0,t},update:function(t){const e=this;"string"==typeof t&&(t=g.A.v(t));const n=e._=v.concat(e._,t),i=e.C,s=e.C=i+v.u(t);if(s>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const f=new o(n);let c=0;for(let t=e.blockSize+i-(e.blockSize+i&e.blockSize-1);s>=t;t+=e.blockSize)e.V(f.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),e},P:function(){const t=this;let e=t._;const r=t.S;e=v.concat(e,[v.p(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(n.floor(t.C/4294967296)),e.push(0|t.C);e.length;)t.V(e.splice(0,16));return t.reset(),r},I:[1732584193,4023233417,2562383102,271733878,3285377520],B:[1518500249,1859775393,2400959708,3395469782],D:(t,e,n,r)=>t>19?t>39?t>59?t>79?void 0:e^n^r:e&n|e&r|n&r:e^n^r:e&n|~e&r,M:(t,e)=>e<<t|e>>>32-t,V:function(e){const r=this,i=r.S,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let o=i[0],f=i[1],c=i[2],a=i[3],l=i[4];for(let t=0;79>=t;t++){16>t||(s[t]=r.M(1,s[t-3]^s[t-8]^s[t-14]^s[t-16]));const e=r.M(5,o)+r.D(t,f,c,a)+l+s[t]+r.B[n.floor(t/20)]|0;l=a,a=c,c=r.M(30,f),f=o,o=e}i[0]=i[0]+o|0,i[1]=i[1]+f|0,i[2]=i[2]+c|0,i[3]=i[3]+a|0,i[4]=i[4]+l|0}};const z={getRandomValues(t){const e=new o(t.buffer),r=t=>{let e=987654321;const r=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&r,(((e<<16)+(t=18e3*(65535&t)+(t>>16)&r)&r)/4294967296+.5)*(n.random()>.5?1:-1))};for(let i,s=0;s<t.length;s+=4){const t=r(4294967296*(i||n.random()));i=987654071*t(),e[s/4]=4294967296*t()|0}return t}},_={importKey:t=>new _.R(g.m.v(t)),U(t,e,n,i){if(n=n||1e4,0>i||0>n)throw new r("invalid params to pbkdf2");const s=1+(i>>5)<<2;let o,f,a,l,u;const w=new ArrayBuffer(s),h=new c(w);let d=0;const p=v;for(e=g.m.v(e),u=1;(s||1)>d;u++){for(o=f=t.encrypt(p.concat(e,[u])),a=1;n>a;a++)for(f=t.encrypt(f),l=0;l<f.length;l++)o[l]^=f[l];for(a=0;(s||1)>d&&a<o.length;a++)h.setInt32(d,o[a]),d+=4}return w.slice(0,i/8)},R:class{constructor(t){const e=this,n=e.T=S.g,r=[[],[]],i=n.prototype.blockSize/32;e.j=[new n,new n],t.length>i&&(t=n.hash(t));for(let e=0;i>e;e++)r[0][e]=909522486^t[e],r[1][e]=1549556828^t[e];e.j[0].update(r[0]),e.j[1].update(r[1]),e.H=new n(e.j[0])}reset(){const t=this;t.H=new t.T(t.j[0]),t.K=!1}update(t){this.K=!0,this.H.update(t)}digest(){const t=this,e=t.H.P(),n=new t.T(t.j[1]).update(e).P();return t.reset(),n}encrypt(t){if(this.K)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},C={name:"PBKDF2"},I=e.assign({hash:{name:"HMAC"}},C),A=e.assign({iterations:1e3,hash:{name:"SHA-1"}},C),x=["deriveBits"],V=[8,12,16],P=[16,24,32],B=[0,0,0,0],D=void 0!==l,E=D&&void 0!==l.subtle,M=g.m,R=class{constructor(t){const e=this;e.L=[[[],[],[],[],[]],[[],[],[],[],[]]],e.L[0][0][0]||e.W();const n=e.L[0][4],i=e.L[1],s=t.length;let o,f,c,a=1;if(4!==s&&6!==s&&8!==s)throw new r("invalid aes key size");for(e.B=[f=t.slice(0),c=[]],o=s;4*s+28>o;o++){let t=f[o-1];(o%s==0||8===s&&o%s==4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],o%s==0&&(t=t<<8^t>>>24^a<<24,a=a<<1^283*(a>>7))),f[o]=f[o-s]^t}for(let t=0;o;t++,o--){const e=f[3&t?o:o-4];c[t]=4>=o||4>t?e:i[0][n[e>>>24]]^i[1][n[e>>16&255]]^i[2][n[e>>8&255]]^i[3][n[255&e]]}}encrypt(t){return this.F(t,0)}decrypt(t){return this.F(t,1)}W(){const t=this.L[0],e=this.L[1],n=t[4],r=e[4],i=[],s=[];let o,f,c,a;for(let t=0;256>t;t++)s[(i[t]=t<<1^283*(t>>7))^t]=t;for(let l=o=0;!n[l];l^=f||1,o=s[o]||1){let s=o^o<<1^o<<2^o<<3^o<<4;s=s>>8^255&s^99,n[l]=s,r[s]=l,a=i[c=i[f=i[l]]];let u=16843009*a^65537*c^257*f^16843008*l,w=257*i[s]^16843008*s;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][s]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}F(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.B[e],i=n.length/4-2,s=[0,0,0,0],o=this.L[e],f=o[0],c=o[1],a=o[2],l=o[3],u=o[4];let w,h,d,p=t[0]^n[0],y=t[e?3:1]^n[1],b=t[2]^n[2],m=t[e?1:3]^n[3],k=4;for(let t=0;i>t;t++)w=f[p>>>24]^c[y>>16&255]^a[b>>8&255]^l[255&m]^n[k],h=f[y>>>24]^c[b>>16&255]^a[m>>8&255]^l[255&p]^n[k+1],d=f[b>>>24]^c[m>>16&255]^a[p>>8&255]^l[255&y]^n[k+2],m=f[m>>>24]^c[p>>16&255]^a[y>>8&255]^l[255&b]^n[k+3],k+=4,p=w,y=h,b=d;for(let t=0;4>t;t++)s[e?3&-t:t]=u[p>>>24]<<24^u[y>>16&255]<<16^u[b>>8&255]<<8^u[255&m]^n[k++],w=p,p=y,y=b,b=m,m=w;return s}},U=class{constructor(t,e){this.O=t,this.q=e,this.G=e}reset(){this.G=this.q}update(t){return this.J(this.O,t,this.G)}N(t){if(255==(t>>24&255)){let e=t>>16&255,n=t>>8&255,r=255&t;255===e?(e=0,255===n?(n=0,255===r?r=0:++r):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=r}else t+=1<<24;return t}X(t){0===(t[0]=this.N(t[0]))&&(t[1]=this.N(t[1]))}J(t,e,n){let r;if(!(r=e.length))return[];const i=v.u(e);for(let i=0;r>i;i+=4){this.X(n);const r=t.encrypt(n);e[i]^=r[0],e[i+1]^=r[1],e[i+2]^=r[2],e[i+3]^=r[3]}return v.h(e,i)}},T=_.R;class j extends w{constructor(n,s,o){let f;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,signed:s,Z:o-1,pending:new i(0)})},async transform(e,n){if(e&&e.length){const s=this;if(s.password){const n=s.password;s.password=null;const i=F(e,0,V[s.Z]+2);await(async(t,e,n)=>{await L(t,n,F(e,0,V[t.Z]));const i=F(e,V[t.Z]),s=t.keys.passwordVerification;if(s[0]!=i[0]||s[1]!=i[1])throw new r("Invalid pasword")})(s,i,n),s.$=new U(new R(s.keys.key),t.from(B)),s.tt=new T(s.keys.et),e=F(e,V[s.Z]+2),s.Y()}else await s.ready;const o=new i(e.length-10-(e.length-10)%16);n.enqueue(K(s,e,o,0,10,!0))}},async flush(t){const e=this;await e.ready;const n=e.pending,r=F(n,0,n.length-10),s=F(n,n.length-10);let o=new i(0);if(r.length){const t=M.v(r);e.tt.update(t);const n=e.$.update(t);o=M.k(n)}if(f.valid=!0,e.signed){const t=F(M.k(e.tt.digest()),0,10);for(let e=0;10>e;e++)t[e]!=s[e]&&(f.valid=!1)}t.enqueue(o)}}),f=this}}class H extends w{constructor(n,r){let s;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,Z:r-1,pending:new i(0)})},async transform(e,n){if(e&&e.length){const r=this;let s=new i(0);if(r.password){const e=r.password;r.password=null,s=await(async(t,e)=>{const n=(r=new i(V[t.Z]),D&&"function"==typeof l.getRandomValues?l.getRandomValues(r):z.getRandomValues(r));var r;return await L(t,e,n),W(n,t.keys.passwordVerification)})(r,e),r.$=new U(new R(r.keys.key),t.from(B)),r.tt=new T(r.keys.et),r.Y()}else await r.ready;const o=new i(s.length+e.length-e.length%16);o.set(s,0),n.enqueue(K(r,e,o,s.length,0))}},async flush(t){const e=this;await e.ready;let n=new i(0);if(e.pending.length){const t=e.$.update(M.v(e.pending));e.tt.update(t),n=M.k(t)}s.signature=M.k(e.tt.digest()).slice(0,10),t.enqueue(W(n,s.signature))}}),s=this}}function K(t,e,n,r,s,o){const f=e.length-s;let c;for(t.pending.length&&(e=W(t.pending,e),n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new i(e)).set(n,0)}return t})(n,f-f%16)),c=0;f-16>=c;c+=16){const i=M.v(F(e,c,c+16));o&&t.tt.update(i);const s=t.$.update(i);o||t.tt.update(s),n.set(M.k(s),c+r)}return t.pending=F(e,c),n}async function L(t,n,r){const s=(t=>{if(void 0===a){const e=new i((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new a).encode(t)})(n),o=await((t,e,n,r,i)=>D&&E&&"function"==typeof l.subtle.importKey?l.subtle.importKey("raw",e,n,!1,i):_.importKey(e))(0,s,I,0,x),f=await(async(t,e,n)=>D&&E&&"function"==typeof l.subtle.deriveBits?await l.subtle.deriveBits(t,e,n):_.U(e,t.salt,A.iterations,n))(e.assign({salt:r},A),o,8*(2*P[t.Z]+2)),c=new i(f);t.keys={key:M.v(F(c,0,P[t.Z])),et:M.v(F(c,P[t.Z],2*P[t.Z])),passwordVerification:F(c,2*P[t.Z])}}function W(t,e){let n=t;return t.length+e.length&&(n=new i(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function F(t,e,n){return t.subarray(e,n)}class O extends w{constructor(t,n){let i;super({start(){e.assign(this,{password:t,passwordVerification:n}),N(this,t)},transform(t,e){if(t&&t.length){const n=this;if(n.password){const e=G(n,t.subarray(0,12));if(n.password=null,e[11]!=n.passwordVerification)throw new r("Invalid pasword");t=t.subarray(12)}e.enqueue(G(n,t))}},flush(){i.valid=!0}}),i=this}}class q extends w{constructor(t,n){super({start(){e.assign(this,{password:t,passwordVerification:n}),N(this,t)},transform(t,e){if(t&&t.length){const n=this;let r,s;if(n.password){n.password=null;const e=l.getRandomValues(new i(12));e[11]=n.passwordVerification,r=new i(t.length+e.length),r.set(J(n,e),0),s=12}else r=new i(t.length),s=0;r.set(J(n,t),s),e.enqueue(r)}},flush(){}})}}function G(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=X(t)^e[r],Q(t,n[r]);return n}function J(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=X(t)^e[r],Q(t,e[r]);return n}function N(t,e){t.keys=[305419896,591751049,878082192],t.nt=new m(t.keys[0]),t.rt=new m(t.keys[2]);for(let n=0;n<e.length;n++)Q(t,e.charCodeAt(n))}function Q(t,e){t.nt.append([e]),t.keys[0]=~t.nt.get(),t.keys[1]=Z(t.keys[1]+Y(t.keys[0])),t.keys[1]=Z(n.imul(t.keys[1],134775813)+1),t.rt.append([t.keys[1]>>>24]),t.keys[2]=~t.rt.get()}function X(t){const e=2|t.keys[2];return Y(n.imul(e,1^e)>>>8)}function Y(t){return 255&t}function Z(t){return 4294967295&t}class $ extends w{constructor(t,e){super({start(){this.it=new t(e)},transform(t,e){(t=this.it.append(t))&&e.enqueue(t)},flush(t){const e=this.it.flush();e&&t.enqueue(e)}})}}class tt{constructor(t,{signature:n,password:r,signed:i,compressed:s,zipCrypto:o,passwordVerification:f,encryptionStrength:c,st:a},{ot:l}){const u=this;function w(){u.stream=u.stream.pipeThrough(new $(t,{ot:l}))}u.start=async()=>{const t=!!r;if(e.assign(u,{signature:n,encrypted:t,signed:i,compressed:s,zipCrypto:o,stream:new h({async pull(t){const{value:e,done:n}=await u.pull();t.enqueue(e),(n||u.aborted)&&t.close()}})}),t&&(o?u.stream=u.stream.pipeThrough(new O(r,f)):(u.ft=new j(r,i,c),u.stream=u.stream.pipeThrough(u.ft))),s)if(void 0!==a&&!a||void 0===y)w();else try{u.stream=u.stream.pipeThrough(new y("deflate-raw"))}catch(t){w()}if((!t||o)&&i){const t=u.stream.tee();u.stream=t[0],u.ct=t[1].pipeThrough(new k)}u.lt=u.stream.getReader(),await u.read()},u.abort=()=>u.aborted=!0}async read(){const t=this,{value:e,done:n}=await t.lt.read();if(e&&e.length&&t.ut({value:{data:new i(e)}}),n){let e;if(t.encrypted&&!t.zipCrypto&&!t.ft.valid)throw new r("Invalid signature");if((!t.encrypted||t.zipCrypto)&&t.signed){e=await t.ct.getReader().read();const n=new c(e.value.buffer);if(t.signature!=n.getUint32(0,!1))throw new r("Invalid signature")}t.ut({value:{signature:e},done:n})}else await t.read()}}class et{constructor(t,{encrypted:n,signed:r,compressed:i,level:s,zipCrypto:o,password:f,passwordVerification:c,encryptionStrength:a,st:l},{ot:u}){const w=this;function d(){w.stream=w.stream.pipeThrough(new $(t,{ot:u,level:s}))}w.start=async()=>{if(e.assign(this,{encrypted:n,signed:r,compressed:i,zipCrypto:o,stream:new h({async pull(t){const{value:e,done:n}=await w.pull();t.enqueue(e),(n||w.aborted)&&t.close()}})}),(!n||o)&&r){const t=w.stream.tee();w.stream=t[0],w.ct=t[1].pipeThrough(new k({ot:u}))}if(i)if(void 0!==l&&!l||void 0===p)d();else try{w.stream=w.stream.pipeThrough(new p("deflate-raw"))}catch(t){d()}n&&(o?w.stream=w.stream.pipeThrough(new q(f,c)):(w.wt=new H(f,a),w.stream=w.stream.pipeThrough(w.wt))),w.lt=w.stream.getReader(),await w.read()},w.abort=()=>w.aborted=!0}async read(){const t=this,{value:e,done:n}=await t.lt.read();if(e&&e.length&&t.ut({value:{data:e}}),n){let e;t.encrypted&&!t.zipCrypto&&(e=t.wt.signature),t.encrypted&&!t.zipCrypto||!t.signed||(e=await t.ct.getReader().read(),e=new c(e.value.buffer).getUint32(0)),t.ut({value:{signature:e},done:n})}else await t.read()}}const nt=new Map;let rt,it=0;function st(t){if(t.data){const e=t.data.value.data;if(e&&e.length)try{t.data.value.data=e.buffer,u(t,[t.data.value.data])}catch(e){u(t)}else u(t)}else u(t)}addEventListener("message",(async t=>{const e=t.data,n=e.type;try{if("start"==n&&(async t=>{try{t.scripts&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;let n;self.initCodec&&self.initCodec(),e.codecType.startsWith("deflate")?n=self.Deflate:e.codecType.startsWith("inflate")&&(n=self.Inflate),rt=((t,e,n)=>e.codecType.startsWith("deflate")?new et(t,e,n):e.codecType.startsWith("inflate")?new tt(t,e,n):void 0)(n,e,t.config),rt.ut=t=>st({type:"data",data:t}),rt.onerror=t=>u({error:{message:t.message,stack:t.stack}}),rt.pull=()=>{const t=new Promise(((t,e)=>nt.set(it,{resolve:t,reject:e})));return st({type:"pull",messageId:it}),it++,t},await rt.start()}catch(t){u({error:{message:t.message,stack:t.stack}})}})(e),"data"==n){const{resolve:t}=nt.get(e.messageId);nt.delete(e.messageId),t({value:new i(e.data),done:e.done})}"abort"==n&&rt.abort()}catch(t){u({error:{message:t.message,stack:t.stack}})}}));const ot=(()=>{const e=-2;function o(e){return f(e.map((([e,n])=>new t(e).fill(n,0,e))))}function f(e){return e.reduce(((e,n)=>e.concat(t.isArray(n)?f(n):n)),[])}const c=[0,1,2,3].concat(...o([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function a(){const t=this;function e(t,e){let n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1}t.ht=r=>{const i=t.dt,s=t.bt.yt,o=t.bt.kt;let f,c,a,l=-1;for(r.vt=0,r.gt=573,f=0;o>f;f++)0!==i[2*f]?(r.St[++r.vt]=l=f,r.zt[f]=0):i[2*f+1]=0;for(;2>r.vt;)a=r.St[++r.vt]=2>l?++l:0,i[2*a]=1,r.zt[a]=0,r._t--,s&&(r.Ct-=s[2*a+1]);for(t.It=l,f=n.floor(r.vt/2);f>=1;f--)r.At(i,f);a=o;do{f=r.St[1],r.St[1]=r.St[r.vt--],r.At(i,1),c=r.St[1],r.St[--r.gt]=f,r.St[--r.gt]=c,i[2*a]=i[2*f]+i[2*c],r.zt[a]=n.max(r.zt[f],r.zt[c])+1,i[2*f+1]=i[2*c+1]=a,r.St[1]=a++,r.At(i,1)}while(r.vt>=2);r.St[--r.gt]=r.St[1],(e=>{const n=t.dt,r=t.bt.yt,i=t.bt.xt,s=t.bt.Vt,o=t.bt.Pt;let f,c,a,l,u,w,h=0;for(l=0;15>=l;l++)e.Bt[l]=0;for(n[2*e.St[e.gt]+1]=0,f=e.gt+1;573>f;f++)c=e.St[f],l=n[2*n[2*c+1]+1]+1,l>o&&(l=o,h++),n[2*c+1]=l,c>t.It||(e.Bt[l]++,u=0,s>c||(u=i[c-s]),w=n[2*c],e._t+=w*(l+u),r&&(e.Ct+=w*(r[2*c+1]+u)));if(0!==h){do{for(l=o-1;0===e.Bt[l];)l--;e.Bt[l]--,e.Bt[l+1]+=2,e.Bt[o]--,h-=2}while(h>0);for(l=o;0!==l;l--)for(c=e.Bt[l];0!==c;)a=e.St[--f],a>t.It||(n[2*a+1]!=l&&(e._t+=(l-n[2*a+1])*n[2*a],n[2*a+1]=l),c--)}})(r),((t,n,r)=>{const i=[];let s,o,f,c=0;for(s=1;15>=s;s++)i[s]=c=c+r[s-1]<<1;for(o=0;n>=o;o++)f=t[2*o+1],0!==f&&(t[2*o]=e(i[f]++,f))})(i,t.It,r.Bt)}}function l(t,e,n,r,i){const s=this;s.yt=t,s.xt=e,s.Vt=n,s.kt=r,s.Pt=i}a.Dt=[0,1,2,3,4,5,6,7].concat(...o([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),a.Et=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],a.Mt=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],a.Rt=t=>256>t?c[t]:c[256+(t>>>7)],a.Ut=[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],a.Tt=[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],a.jt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],a.Ht=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const u=o([[144,8],[112,9],[24,7],[8,8]]);l.Kt=f([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((t,e)=>[t,u[e]])));const w=o([[30,5]]);function h(t,e,n,r,i){const s=this;s.Lt=t,s.Wt=e,s.Ft=n,s.Ot=r,s.qt=i}l.Gt=f([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((t,e)=>[t,w[e]]))),l.Jt=new l(l.Kt,a.Ut,257,286,15),l.Nt=new l(l.Gt,a.Tt,0,30,15),l.Qt=new l(null,a.jt,0,19,7);const d=[new h(0,0,0,0,0),new h(4,4,8,4,1),new h(4,5,16,8,1),new h(4,6,32,32,1),new h(4,4,16,16,2),new h(8,16,32,32,2),new h(8,16,128,128,2),new h(8,32,128,256,2),new h(32,128,258,1024,2),new h(32,258,258,4096,2)],p=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],y=113,b=666,m=262;function k(t,e,n,r){const i=t[2*e],s=t[2*n];return s>i||i==s&&r[e]<=r[n]}function v(){const t=this;let r,o,f,c,u,w,h,v,g,S,z,_,C,I,A,x,V,P,B,D,E,M,R,U,T,j,H,K,L,W,F,O,q;const G=new a,J=new a,N=new a;let Q,X,Y,Z,$,tt;function et(){let e;for(e=0;286>e;e++)F[2*e]=0;for(e=0;30>e;e++)O[2*e]=0;for(e=0;19>e;e++)q[2*e]=0;F[512]=1,t._t=t.Ct=0,X=Y=0}function nt(t,e){let n,r=-1,i=t[1],s=0,o=7,f=4;0===i&&(o=138,f=3),t[2*(e+1)+1]=65535;for(let c=0;e>=c;c++)n=i,i=t[2*(c+1)+1],++s<o&&n==i||(f>s?q[2*n]+=s:0!==n?(n!=r&&q[2*n]++,q[32]++):s>10?q[36]++:q[34]++,s=0,r=n,0===i?(o=138,f=3):n==i?(o=6,f=3):(o=7,f=4))}function rt(e){t.Xt[t.pending++]=e}function it(t){rt(255&t),rt(t>>>8&255)}function st(t,e){let n;const r=e;tt>16-r?(n=t,$|=n<<tt&65535,it($),$=n>>>16-tt,tt+=r-16):($|=t<<tt&65535,tt+=r)}function ot(t,e){const n=2*t;st(65535&e[n],65535&e[n+1])}function ft(t,e){let n,r,i=-1,s=t[1],o=0,f=7,c=4;for(0===s&&(f=138,c=3),n=0;e>=n;n++)if(r=s,s=t[2*(n+1)+1],++o>=f||r!=s){if(c>o)do{ot(r,q)}while(0!=--o);else 0!==r?(r!=i&&(ot(r,q),o--),ot(16,q),st(o-3,2)):o>10?(ot(18,q),st(o-11,7)):(ot(17,q),st(o-3,3));o=0,i=r,0===s?(f=138,c=3):r==s?(f=6,c=3):(f=7,c=4)}}function ct(){16==tt?(it($),$=0,tt=0):8>tt||(rt(255&$),$>>>=8,tt-=8)}function at(e,r){let i,s,o;if(t.Yt[X]=e,t.Zt[X]=255&r,X++,0===e?F[2*r]++:(Y++,e--,F[2*(a.Dt[r]+256+1)]++,O[2*a.Rt(e)]++),0==(8191&X)&&H>2){for(i=8*X,s=E-V,o=0;30>o;o++)i+=O[2*o]*(5+a.Tt[o]);if(i>>>=3,Y<n.floor(X/2)&&i<n.floor(s/2))return!0}return X==Q-1}function lt(e,n){let r,i,s,o,f=0;if(0!==X)do{r=t.Yt[f],i=t.Zt[f],f++,0===r?ot(i,e):(s=a.Dt[i],ot(s+256+1,e),o=a.Ut[s],0!==o&&(i-=a.Et[s],st(i,o)),r--,s=a.Rt(r),ot(s,n),o=a.Tt[s],0!==o&&(r-=a.Mt[s],st(r,o)))}while(X>f);ot(256,e),Z=e[513]}function ut(){tt>8?it($):tt>0&&rt(255&$),$=0,tt=0}function wt(e,n,r){st(0+(r?1:0),3),((e,n)=>{ut(),Z=8,it(n),it(~n),t.Xt.set(v.subarray(e,e+n),t.pending),t.pending+=n})(e,n)}function ht(e){((e,n,r)=>{let i,s,o=0;H>0?(G.ht(t),J.ht(t),o=(()=>{let e;for(nt(F,G.It),nt(O,J.It),N.ht(t),e=18;e>=3&&0===q[2*a.Ht[e]+1];e--);return t._t+=14+3*(e+1),e})(),i=t._t+3+7>>>3,s=t.Ct+3+7>>>3,s>i||(i=s)):i=s=n+5,n+4>i||-1==e?s==i?(st(2+(r?1:0),3),lt(l.Kt,l.Gt)):(st(4+(r?1:0),3),((t,e,n)=>{let r;for(st(t-257,5),st(e-1,5),st(n-4,4),r=0;n>r;r++)st(q[2*a.Ht[r]+1],3);ft(F,t-1),ft(O,e-1)})(G.It+1,J.It+1,o+1),lt(F,O)):wt(e,n,r),et(),r&&ut()})(0>V?-1:V,E-V,e),V=E,r.$t()}function dt(){let t,e,n,i;do{if(i=g-R-E,0===i&&0===E&&0===R)i=u;else if(-1==i)i--;else if(E>=u+u-m){v.set(v.subarray(u,u+u),0),M-=u,E-=u,V-=u,t=C,n=t;do{e=65535&z[--n],z[n]=u>e?0:e-u}while(0!=--t);t=u,n=t;do{e=65535&S[--n],S[n]=u>e?0:e-u}while(0!=--t);i+=u}if(0===r.te)return;t=r.ee(v,E+R,i),R+=t,3>R||(_=255&v[E],_=(_<<x^255&v[E+1])&A)}while(m>R&&0!==r.te)}function pt(t){let e,n,r=T,i=E,s=U;const o=E>u-m?E-(u-m):0;let f=W;const c=h,a=E+258;let l=v[i+s-1],w=v[i+s];L>U||(r>>=2),f>R&&(f=R);do{if(e=t,v[e+s]==w&&v[e+s-1]==l&&v[e]==v[i]&&v[++e]==v[i+1]){i+=2,e++;do{}while(v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&a>i);if(n=258-(a-i),i=a-258,n>s){if(M=t,s=n,n>=f)break;l=v[i+s-1],w=v[i+s]}}}while((t=65535&S[t&c])>o&&0!=--r);return s>R?R:s}t.zt=[],t.Bt=[],t.St=[],F=[],O=[],q=[],t.At=(e,n)=>{const r=t.St,i=r[n];let s=n<<1;for(;s<=t.vt&&(s<t.vt&&k(e,r[s+1],r[s],t.zt)&&s++,!k(e,i,r[s],t.zt));)r[n]=r[s],n=s,s<<=1;r[n]=i},t.ne=(r,a,p,b,m,k)=>(b||(b=8),m||(m=8),k||(k=0),r.re=null,-1==a&&(a=6),1>m||m>9||8!=b||9>p||p>15||0>a||a>9||0>k||k>2?e:(r.ie=t,w=p,u=1<<w,h=u-1,I=m+7,C=1<<I,A=C-1,x=n.floor((I+3-1)/3),v=new i(2*u),S=[],z=[],Q=1<<m+6,t.Xt=new i(4*Q),f=4*Q,t.Yt=new s(Q),t.Zt=new i(Q),H=a,K=k,(e=>(e.se=e.oe=0,e.re=null,t.pending=0,t.fe=0,o=y,c=0,G.dt=F,G.bt=l.Jt,J.dt=O,J.bt=l.Nt,N.dt=q,N.bt=l.Qt,$=0,tt=0,Z=8,et(),(()=>{g=2*u,z[C-1]=0;for(let t=0;C-1>t;t++)z[t]=0;j=d[H].Wt,L=d[H].Lt,W=d[H].Ft,T=d[H].Ot,E=0,V=0,R=0,P=U=2,D=0,_=0})(),0))(r))),t.ce=()=>42!=o&&o!=y&&o!=b?e:(t.Zt=null,t.Yt=null,t.Xt=null,z=null,S=null,v=null,t.ie=null,o==y?-3:0),t.ae=(t,n,r)=>{let i=0;return-1==n&&(n=6),0>n||n>9||0>r||r>2?e:(d[H].qt!=d[n].qt&&0!==t.se&&(i=t.le(1)),H!=n&&(H=n,j=d[H].Wt,L=d[H].Lt,W=d[H].Ft,T=d[H].Ot),K=r,i)},t.ue=(t,n,r)=>{let i,s=r,f=0;if(!n||42!=o)return e;if(3>s)return 0;for(s>u-m&&(s=u-m,f=r-s),v.set(n.subarray(f,f+s),0),E=s,V=s,_=255&v[0],_=(_<<x^255&v[1])&A,i=0;s-3>=i;i++)_=(_<<x^255&v[i+2])&A,S[i&h]=z[_],z[_]=i;return 0},t.le=(n,i)=>{let s,a,k,g,I;if(i>4||0>i)return e;if(!n.we||!n.he&&0!==n.te||o==b&&4!=i)return n.re=p[4],e;if(0===n.de)return n.re=p[7],-5;var T;if(r=n,g=c,c=i,42==o&&(a=8+(w-8<<4)<<8,k=(H-1&255)>>1,k>3&&(k=3),a|=k<<6,0!==E&&(a|=32),a+=31-a%31,o=y,rt((T=a)>>8&255),rt(255&T)),0!==t.pending){if(r.$t(),0===r.de)return c=-1,0}else if(0===r.te&&g>=i&&4!=i)return r.re=p[7],-5;if(o==b&&0!==r.te)return n.re=p[7],-5;if(0!==r.te||0!==R||0!=i&&o!=b){switch(I=-1,d[H].qt){case 0:I=(t=>{let e,n=65535;for(n>f-5&&(n=f-5);;){if(1>=R){if(dt(),0===R&&0==t)return 0;if(0===R)break}if(E+=R,R=0,e=V+n,(0===E||E>=e)&&(R=E-e,E=e,ht(!1),0===r.de))return 0;if(E-V>=u-m&&(ht(!1),0===r.de))return 0}return ht(4==t),0===r.de?4==t?2:0:4==t?3:1})(i);break;case 1:I=(t=>{let e,n=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(_=(_<<x^255&v[E+2])&A,n=65535&z[_],S[E&h]=z[_],z[_]=E),0===n||(E-n&65535)>u-m||2!=K&&(P=pt(n)),3>P)e=at(0,255&v[E]),R--,E++;else if(e=at(E-M,P-3),R-=P,P>j||3>R)E+=P,P=0,_=255&v[E],_=(_<<x^255&v[E+1])&A;else{P--;do{E++,_=(_<<x^255&v[E+2])&A,n=65535&z[_],S[E&h]=z[_],z[_]=E}while(0!=--P);E++}if(e&&(ht(!1),0===r.de))return 0}return ht(4==t),0===r.de?4==t?2:0:4==t?3:1})(i);break;case 2:I=(t=>{let e,n,i=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(_=(_<<x^255&v[E+2])&A,i=65535&z[_],S[E&h]=z[_],z[_]=E),U=P,B=M,P=2,0!==i&&j>U&&u-m>=(E-i&65535)&&(2!=K&&(P=pt(i)),5>=P&&(1==K||3==P&&E-M>4096)&&(P=2)),3>U||P>U)if(0!==D){if(e=at(0,255&v[E-1]),e&&ht(!1),E++,R--,0===r.de)return 0}else D=1,E++,R--;else{n=E+R-3,e=at(E-1-B,U-3),R-=U-1,U-=2;do{++E>n||(_=(_<<x^255&v[E+2])&A,i=65535&z[_],S[E&h]=z[_],z[_]=E)}while(0!=--U);if(D=0,P=2,E++,e&&(ht(!1),0===r.de))return 0}}return 0!==D&&(e=at(0,255&v[E-1]),D=0),ht(4==t),0===r.de?4==t?2:0:4==t?3:1})(i)}if(2!=I&&3!=I||(o=b),0==I||2==I)return 0===r.de&&(c=-1),0;if(1==I){if(1==i)st(2,3),ot(256,l.Kt),ct(),9>1+Z+10-tt&&(st(2,3),ot(256,l.Kt),ct()),Z=7;else if(wt(0,0,!1),3==i)for(s=0;C>s;s++)z[s]=0;if(r.$t(),0===r.de)return c=-1,0}}return 4!=i?0:1}}function g(){const t=this;t.pe=0,t.ye=0,t.te=0,t.se=0,t.de=0,t.oe=0}return g.prototype={ne:function(t,e){const n=this;return n.ie=new v,e||(e=15),n.ie.ne(n,t,e)},le:function(t){const n=this;return n.ie?n.ie.le(n,t):e},ce:function(){const t=this;if(!t.ie)return e;const n=t.ie.ce();return t.ie=null,n},ae:function(t,n){const r=this;return r.ie?r.ie.ae(r,t,n):e},ue:function(t,n){const r=this;return r.ie?r.ie.ue(r,t,n):e},ee:function(t,e,n){const r=this;let i=r.te;return i>n&&(i=n),0===i?0:(r.te-=i,t.set(r.he.subarray(r.pe,r.pe+i),e),r.pe+=i,r.se+=i,i)},$t:function(){const t=this;let e=t.ie.pending;e>t.de&&(e=t.de),0!==e&&(t.we.set(t.ie.Xt.subarray(t.ie.fe,t.ie.fe+e),t.ye),t.ye+=e,t.ie.fe+=e,t.oe+=e,t.de-=e,t.ie.pending-=e,0===t.ie.pending&&(t.ie.fe=0))}},function(t){const e=new g,s=(o=t&&t.ot?t.ot:65536)+5*(n.floor(o/16383)+1);var o;const f=new i(s);let c=t?t.level:-1;void 0===c&&(c=-1),e.ne(c),e.we=f,this.append=(t,n)=>{let o,c,a=0,l=0,u=0;const w=[];if(t.length){e.pe=0,e.he=t,e.te=t.length;do{if(e.ye=0,e.de=s,o=e.le(0),0!=o)throw new r("deflating: "+e.re);e.ye&&(e.ye==s?w.push(new i(f)):w.push(f.slice(0,e.ye))),u+=e.ye,n&&e.pe>0&&e.pe!=a&&(n(e.pe),a=e.pe)}while(e.te>0||0===e.de);return w.length>1?(c=new i(u),w.forEach((t=>{c.set(t,l),l+=t.length}))):c=w[0]||new i(0),c}},this.flush=()=>{let t,n,o=0,c=0;const a=[];do{if(e.ye=0,e.de=s,t=e.le(4),1!=t&&0!=t)throw new r("deflating: "+e.re);s-e.de>0&&a.push(f.slice(0,e.ye)),c+=e.ye}while(e.te>0||0===e.de);return e.ce(),n=new i(c),a.forEach((t=>{n.set(t,o),o+=t.length})),n}}})(),ft=(()=>{const t=-2,e=-3,s=-5,o=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],c=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],a=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],l=[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,0,0],u=[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,112,112],w=[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],h=[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];function d(){let t,n,r,i,o,c;function a(t,n,f,a,l,u,w,h,d,p,y){let b,m,k,v,g,S,z,_,C,I,A,x,V,P,B;I=0,g=f;do{r[t[n+I]]++,I++,g--}while(0!==g);if(r[0]==f)return w[0]=-1,h[0]=0,0;for(_=h[0],S=1;15>=S&&0===r[S];S++);for(z=S,S>_&&(_=S),g=15;0!==g&&0===r[g];g--);for(k=g,_>g&&(_=g),h[0]=_,P=1<<S;g>S;S++,P<<=1)if(0>(P-=r[S]))return e;if(0>(P-=r[g]))return e;for(r[g]+=P,c[1]=S=0,I=1,V=2;0!=--g;)c[V]=S+=r[I],V++,I++;g=0,I=0;do{0!==(S=t[n+I])&&(y[c[S]++]=g),I++}while(++g<f);for(f=c[k],c[0]=g=0,I=0,v=-1,x=-_,o[0]=0,A=0,B=0;k>=z;z++)for(b=r[z];0!=b--;){for(;z>x+_;){if(v++,x+=_,B=k-x,B=B>_?_:B,(m=1<<(S=z-x))>b+1&&(m-=b+1,V=z,B>S))for(;++S<B&&(m<<=1)>r[++V];)m-=r[V];if(B=1<<S,p[0]+B>1440)return e;o[v]=A=p[0],p[0]+=B,0!==v?(c[v]=g,i[0]=S,i[1]=_,S=g>>>x-_,i[2]=A-o[v-1]-S,d.set(i,3*(o[v-1]+S))):w[0]=A}for(i[1]=z-x,f>I?y[I]<a?(i[0]=256>y[I]?0:96,i[2]=y[I++]):(i[0]=u[y[I]-a]+16+64,i[2]=l[y[I++]-a]):i[0]=192,m=1<<z-x,S=g>>>x;B>S;S+=m)d.set(i,3*(A+S));for(S=1<<z-1;0!=(g&S);S>>>=1)g^=S;for(g^=S,C=(1<<x)-1;(g&C)!=c[v];)v--,x-=_,C=(1<<x)-1}return 0!==P&&1!=k?s:0}function d(e){let s;for(t||(t=[],n=[],r=new f(16),i=[],o=new f(15),c=new f(16)),n.length<e&&(n=[]),s=0;e>s;s++)n[s]=0;for(s=0;16>s;s++)r[s]=0;for(s=0;3>s;s++)i[s]=0;o.set(r.subarray(0,15),0),c.set(r.subarray(0,16),0)}this.be=(r,i,o,f,c)=>{let l;return d(19),t[0]=0,l=a(r,0,19,19,null,null,o,i,f,t,n),l==e?c.re="oversubscribed dynamic bit lengths tree":l!=s&&0!==i[0]||(c.re="incomplete dynamic bit lengths tree",l=e),l},this.me=(r,i,o,f,c,p,y,b,m)=>{let k;return d(288),t[0]=0,k=a(o,0,r,257,l,u,p,f,b,t,n),0!=k||0===f[0]?(k==e?m.re="oversubscribed literal/length tree":-4!=k&&(m.re="incomplete literal/length tree",k=e),k):(d(288),k=a(o,r,i,0,w,h,y,c,b,t,n),0!=k||0===c[0]&&r>257?(k==e?m.re="oversubscribed distance tree":k==s?(m.re="incomplete distance tree",k=e):-4!=k&&(m.re="empty distance tree with lengths",k=e),k):0)}}function p(){const n=this;let r,i,s,f,c=0,a=0,l=0,u=0,w=0,h=0,d=0,p=0,y=0,b=0;function m(t,n,r,i,s,f,c,a){let l,u,w,h,d,p,y,b,m,k,v,g,S,z,_,C;y=a.pe,b=a.te,d=c.ke,p=c.ve,m=c.write,k=m<c.read?c.read-m-1:c.end-m,v=o[t],g=o[n];do{for(;20>p;)b--,d|=(255&a.ge(y++))<<p,p+=8;if(l=d&v,u=r,w=i,C=3*(w+l),0!==(h=u[C]))for(;;){if(d>>=u[C+1],p-=u[C+1],0!=(16&h)){for(h&=15,S=u[C+2]+(d&o[h]),d>>=h,p-=h;15>p;)b--,d|=(255&a.ge(y++))<<p,p+=8;for(l=d&g,u=s,w=f,C=3*(w+l),h=u[C];;){if(d>>=u[C+1],p-=u[C+1],0!=(16&h)){for(h&=15;h>p;)b--,d|=(255&a.ge(y++))<<p,p+=8;if(z=u[C+2]+(d&o[h]),d>>=h,p-=h,k-=S,z>m){_=m-z;do{_+=c.end}while(0>_);if(h=c.end-_,S>h){if(S-=h,m-_>0&&h>m-_)do{c.Se[m++]=c.Se[_++]}while(0!=--h);else c.Se.set(c.Se.subarray(_,_+h),m),m+=h,_+=h,h=0;_=0}}else _=m-z,m-_>0&&2>m-_?(c.Se[m++]=c.Se[_++],c.Se[m++]=c.Se[_++],S-=2):(c.Se.set(c.Se.subarray(_,_+2),m),m+=2,_+=2,S-=2);if(m-_>0&&S>m-_)do{c.Se[m++]=c.Se[_++]}while(0!=--S);else c.Se.set(c.Se.subarray(_,_+S),m),m+=S,_+=S,S=0;break}if(0!=(64&h))return a.re="invalid distance code",S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ve=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,e;l+=u[C+2],l+=d&o[h],C=3*(w+l),h=u[C]}break}if(0!=(64&h))return 0!=(32&h)?(S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ve=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,1):(a.re="invalid literal/length code",S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ve=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,e);if(l+=u[C+2],l+=d&o[h],C=3*(w+l),0===(h=u[C])){d>>=u[C+1],p-=u[C+1],c.Se[m++]=u[C+2],k--;break}}else d>>=u[C+1],p-=u[C+1],c.Se[m++]=u[C+2],k--}while(k>=258&&b>=10);return S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ve=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,0}n.init=(t,e,n,o,c,a)=>{r=0,d=t,p=e,s=n,y=o,f=c,b=a,i=null},n.ze=(n,k,v)=>{let g,S,z,_,C,I,A,x=0,V=0,P=0;for(P=k.pe,_=k.te,x=n.ke,V=n.ve,C=n.write,I=C<n.read?n.read-C-1:n.end-C;;)switch(r){case 0:if(I>=258&&_>=10&&(n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,v=m(d,p,s,y,f,b,n,k),P=k.pe,_=k.te,x=n.ke,V=n.ve,C=n.write,I=C<n.read?n.read-C-1:n.end-C,0!=v)){r=1==v?7:9;break}l=d,i=s,a=y,r=1;case 1:for(g=l;g>V;){if(0===_)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,_--,x|=(255&k.ge(P++))<<V,V+=8}if(S=3*(a+(x&o[g])),x>>>=i[S+1],V-=i[S+1],z=i[S],0===z){u=i[S+2],r=6;break}if(0!=(16&z)){w=15&z,c=i[S+2],r=2;break}if(0==(64&z)){l=z,a=S/3+i[S+2];break}if(0!=(32&z)){r=7;break}return r=9,k.re="invalid literal/length code",v=e,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);case 2:for(g=w;g>V;){if(0===_)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,_--,x|=(255&k.ge(P++))<<V,V+=8}c+=x&o[g],x>>=g,V-=g,l=p,i=f,a=b,r=3;case 3:for(g=l;g>V;){if(0===_)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,_--,x|=(255&k.ge(P++))<<V,V+=8}if(S=3*(a+(x&o[g])),x>>=i[S+1],V-=i[S+1],z=i[S],0!=(16&z)){w=15&z,h=i[S+2],r=4;break}if(0==(64&z)){l=z,a=S/3+i[S+2];break}return r=9,k.re="invalid distance code",v=e,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);case 4:for(g=w;g>V;){if(0===_)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,_--,x|=(255&k.ge(P++))<<V,V+=8}h+=x&o[g],x>>=g,V-=g,r=5;case 5:for(A=C-h;0>A;)A+=n.end;for(;0!==c;){if(0===I&&(C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I&&(n.write=C,v=n._e(k,v),C=n.write,I=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I)))return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);n.Se[C++]=n.Se[A++],I--,A==n.end&&(A=0),c--}r=0;break;case 6:if(0===I&&(C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I&&(n.write=C,v=n._e(k,v),C=n.write,I=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I)))return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,n.Se[C++]=u,I--,r=0;break;case 7:if(V>7&&(V-=8,_++,P--),n.write=C,v=n._e(k,v),C=n.write,I=C<n.read?n.read-C-1:n.end-C,n.read!=n.write)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);r=8;case 8:return v=1,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);case 9:return v=e,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);default:return v=t,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v)}},n.Ce=()=>{}}d.Ie=(t,e,n,r)=>(t[0]=9,e[0]=5,n[0]=c,r[0]=a,0);const y=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function b(n,r){const c=this;let a,l=0,u=0,w=0,h=0;const b=[0],m=[0],k=new p;let v=0,g=new f(4320);const S=new d;c.ve=0,c.ke=0,c.Se=new i(r),c.end=r,c.read=0,c.write=0,c.reset=(t,e)=>{e&&(e[0]=0),6==l&&k.Ce(t),l=0,c.ve=0,c.ke=0,c.read=c.write=0},c.reset(n,null),c._e=(t,e)=>{let n,r,i;return r=t.ye,i=c.read,n=(i>c.write?c.end:c.write)-i,n>t.de&&(n=t.de),0!==n&&e==s&&(e=0),t.de-=n,t.oe+=n,t.we.set(c.Se.subarray(i,i+n),r),r+=n,i+=n,i==c.end&&(i=0,c.write==c.end&&(c.write=0),n=c.write-i,n>t.de&&(n=t.de),0!==n&&e==s&&(e=0),t.de-=n,t.oe+=n,t.we.set(c.Se.subarray(i,i+n),r),r+=n,i+=n),t.ye=r,c.read=i,e},c.ze=(n,r)=>{let i,s,f,p,z,_,C,I;for(p=n.pe,z=n.te,s=c.ke,f=c.ve,_=c.write,C=_<c.read?c.read-_-1:c.end-_;;){let A,x,V,P,B,D,E,M;switch(l){case 0:for(;3>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}switch(i=7&s,v=1&i,i>>>1){case 0:s>>>=3,f-=3,i=7&f,s>>>=i,f-=i,l=1;break;case 1:A=[],x=[],V=[[]],P=[[]],d.Ie(A,x,V,P),k.init(A[0],x[0],V[0],0,P[0],0),s>>>=3,f-=3,l=6;break;case 2:s>>>=3,f-=3,l=3;break;case 3:return s>>>=3,f-=3,l=9,n.re="invalid block type",r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r)}break;case 1:for(;32>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}if((~s>>>16&65535)!=(65535&s))return l=9,n.re="invalid stored block lengths",r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);u=65535&s,s=f=0,l=0!==u?2:0!==v?7:0;break;case 2:if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);if(0===C&&(_==c.end&&0!==c.read&&(_=0,C=_<c.read?c.read-_-1:c.end-_),0===C&&(c.write=_,r=c._e(n,r),_=c.write,C=_<c.read?c.read-_-1:c.end-_,_==c.end&&0!==c.read&&(_=0,C=_<c.read?c.read-_-1:c.end-_),0===C)))return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);if(r=0,i=u,i>z&&(i=z),i>C&&(i=C),c.Se.set(n.ee(p,i),_),p+=i,z-=i,_+=i,C-=i,0!=(u-=i))break;l=0!==v?7:0;break;case 3:for(;14>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}if(w=i=16383&s,(31&i)>29||(i>>5&31)>29)return l=9,n.re="too many length or distance symbols",r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);if(i=258+(31&i)+(i>>5&31),!a||a.length<i)a=[];else for(I=0;i>I;I++)a[I]=0;s>>>=14,f-=14,h=0,l=4;case 4:for(;4+(w>>>10)>h;){for(;3>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}a[y[h++]]=7&s,s>>>=3,f-=3}for(;19>h;)a[y[h++]]=0;if(b[0]=7,i=S.be(a,b,m,g,n),0!=i)return(r=i)==e&&(a=null,l=9),c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);h=0,l=5;case 5:for(;i=w,258+(31&i)+(i>>5&31)>h;){let t,u;for(i=b[0];i>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}if(i=g[3*(m[0]+(s&o[i]))+1],u=g[3*(m[0]+(s&o[i]))+2],16>u)s>>>=i,f-=i,a[h++]=u;else{for(I=18==u?7:u-14,t=18==u?11:3;i+I>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}if(s>>>=i,f-=i,t+=s&o[I],s>>>=I,f-=I,I=h,i=w,I+t>258+(31&i)+(i>>5&31)||16==u&&1>I)return a=null,l=9,n.re="invalid bit length repeat",r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);u=16==u?a[I-1]:0;do{a[I++]=u}while(0!=--t);h=I}}if(m[0]=-1,B=[],D=[],E=[],M=[],B[0]=9,D[0]=6,i=w,i=S.me(257+(31&i),1+(i>>5&31),a,B,D,E,M,g,n),0!=i)return i==e&&(a=null,l=9),r=i,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);k.init(B[0],D[0],g,E[0],g,M[0]),l=6;case 6:if(c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,1!=(r=k.ze(c,n,r)))return c._e(n,r);if(r=0,k.Ce(n),p=n.pe,z=n.te,s=c.ke,f=c.ve,_=c.write,C=_<c.read?c.read-_-1:c.end-_,0===v){l=0;break}l=7;case 7:if(c.write=_,r=c._e(n,r),_=c.write,C=_<c.read?c.read-_-1:c.end-_,c.read!=c.write)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);l=8;case 8:return r=1,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);case 9:return r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);default:return r=t,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r)}}},c.Ce=t=>{c.reset(t,null),c.Se=null,g=null},c.Ae=(t,e,n)=>{c.Se.set(t.subarray(e,e+n),0),c.read=c.write=n},c.xe=()=>1==l?1:0}const m=13,k=[0,0,255,255];function v(){const n=this;function r(e){return e&&e.Ve?(e.se=e.oe=0,e.re=null,e.Ve.mode=7,e.Ve.Pe.reset(e,null),0):t}n.mode=0,n.method=0,n.Be=[0],n.De=0,n.marker=0,n.Ee=0,n.Me=t=>(n.Pe&&n.Pe.Ce(t),n.Pe=null,0),n.Re=(e,i)=>(e.re=null,n.Pe=null,8>i||i>15?(n.Me(e),t):(n.Ee=i,e.Ve.Pe=new b(e,1<<i),r(e),0)),n.Ue=(n,r)=>{let i,o;if(!n||!n.Ve||!n.he)return t;const f=n.Ve;for(r=4==r?s:0,i=s;;)switch(f.mode){case 0:if(0===n.te)return i;if(i=r,n.te--,n.se++,8!=(15&(f.method=n.ge(n.pe++)))){f.mode=m,n.re="unknown compression method",f.marker=5;break}if(8+(f.method>>4)>f.Ee){f.mode=m,n.re="invalid win size",f.marker=5;break}f.mode=1;case 1:if(0===n.te)return i;if(i=r,n.te--,n.se++,o=255&n.ge(n.pe++),((f.method<<8)+o)%31!=0){f.mode=m,n.re="incorrect header check",f.marker=5;break}if(0==(32&o)){f.mode=7;break}f.mode=2;case 2:if(0===n.te)return i;i=r,n.te--,n.se++,f.De=(255&n.ge(n.pe++))<<24&4278190080,f.mode=3;case 3:if(0===n.te)return i;i=r,n.te--,n.se++,f.De+=(255&n.ge(n.pe++))<<16&16711680,f.mode=4;case 4:if(0===n.te)return i;i=r,n.te--,n.se++,f.De+=(255&n.ge(n.pe++))<<8&65280,f.mode=5;case 5:return 0===n.te?i:(i=r,n.te--,n.se++,f.De+=255&n.ge(n.pe++),f.mode=6,2);case 6:return f.mode=m,n.re="need dictionary",f.marker=0,t;case 7:if(i=f.Pe.ze(n,i),i==e){f.mode=m,f.marker=0;break}if(0==i&&(i=r),1!=i)return i;i=r,f.Pe.reset(n,f.Be),f.mode=12;case 12:return n.te=0,1;case m:return e;default:return t}},n.Te=(e,n,r)=>{let i=0,s=r;if(!e||!e.Ve||6!=e.Ve.mode)return t;const o=e.Ve;return s<1<<o.Ee||(s=(1<<o.Ee)-1,i=r-s),o.Pe.Ae(n,i,s),o.mode=7,0},n.je=n=>{let i,o,f,c,a;if(!n||!n.Ve)return t;const l=n.Ve;if(l.mode!=m&&(l.mode=m,l.marker=0),0===(i=n.te))return s;for(o=n.pe,f=l.marker;0!==i&&4>f;)n.ge(o)==k[f]?f++:f=0!==n.ge(o)?0:4-f,o++,i--;return n.se+=o-n.pe,n.pe=o,n.te=i,l.marker=f,4!=f?e:(c=n.se,a=n.oe,r(n),n.se=c,n.oe=a,l.mode=7,0)},n.He=e=>e&&e.Ve&&e.Ve.Pe?e.Ve.Pe.xe():t}function g(){}return g.prototype={Re:function(t){const e=this;return e.Ve=new v,t||(t=15),e.Ve.Re(e,t)},Ue:function(e){const n=this;return n.Ve?n.Ve.Ue(n,e):t},Me:function(){const e=this;if(!e.Ve)return t;const n=e.Ve.Me(e);return e.Ve=null,n},je:function(){const e=this;return e.Ve?e.Ve.je(e):t},Te:function(e,n){const r=this;return r.Ve?r.Ve.Te(r,e,n):t},ge:function(t){return this.he[t]},ee:function(t,e){return this.he.subarray(t,t+e)}},function(t){const e=new g,o=t&&t.ot?n.floor(2*t.ot):131072,f=new i(o);let c=!1;e.Re(),e.we=f,this.append=(t,n)=>{const a=[];let l,u,w=0,h=0,d=0;if(0!==t.length){e.pe=0,e.he=t,e.te=t.length;do{if(e.ye=0,e.de=o,0!==e.te||c||(e.pe=0,c=!0),l=e.Ue(0),c&&l===s){if(0!==e.te)throw new r("inflating: bad input")}else if(0!==l&&1!==l)throw new r("inflating: "+e.re);if((c||1===l)&&e.te===t.length)throw new r("inflating: bad input");e.ye&&(e.ye===o?a.push(new i(f)):a.push(f.slice(0,e.ye))),d+=e.ye,n&&e.pe>0&&e.pe!=w&&(n(e.pe),w=e.pe)}while(e.te>0||0===e.de);return a.length>1?(u=new i(d),a.forEach((t=>{u.set(t,h),h+=t.length}))):u=a[0]||new i(0),u}},this.flush=()=>{e.Me()}}})();self.initCodec=()=>{self.Deflate=ot,self.Inflate=ft};\n'],{type:"text/javascript"}));e({workerScripts:{inflate:[t],deflate:[t]}});}};
|
|
7323
|
+
var e=e=>{if("function"==typeof URL.createObjectURL){const t=()=>URL.createObjectURL(new Blob(['const{Array:t,Object:e,Math:n,Error:r,Uint8Array:i,Uint16Array:s,Uint32Array:o,Int32Array:f,DataView:c,TextEncoder:l,crypto:u,postMessage:a,TransformStream:w,ReadableStream:h,WritableStream:d,CompressionStream:p,DecompressionStream:b}=globalThis,y=[];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)1&e?e=e>>>1^3988292384:e>>>=1;y[t]=e}class m{constructor(t){this.t=t||-1}append(t){let e=0|this.t;for(let n=0,r=0|t.length;r>n;n++)e=e>>>8^y[255&(e^t[n])];this.t=e}get(){return~this.t}}class k extends w{constructor(){super({start(){this.i=new m},transform(t){this.i.append(t)},flush(t){const e=new i(4);new c(e.buffer).setUint32(0,this.i.get()),t.enqueue(e)}})}}const g={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],r=g.o(n);return 32===r?t.concat(e):g.l(e,r,0|n,t.slice(0,t.length-1))},u(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+g.o(n)},h(t,e){if(32*t.length<e)return t;const r=(t=t.slice(0,n.ceil(e/32))).length;return e&=31,r>0&&e&&(t[r-1]=g.p(e,t[r-1]&2147483648>>e-1,1)),t},p:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,o:t=>n.round(t/1099511627776)||32,l(t,e,n,r){for(void 0===r&&(r=[]);e>=32;e-=32)r.push(n),n=0;if(0===e)return r.concat(t);for(let i=0;i<t.length;i++)r.push(n|t[i]>>>e),n=t[i]<<32-e;const i=t.length?t[t.length-1]:0,s=g.o(i);return r.push(g.p(e+s&31,e+s>32?n:r.pop(),1)),r}},v={m:{k(t){const e=g.u(t)/8,n=new i(e);let r;for(let i=0;e>i;i++)0==(3&i)&&(r=t[i/4]),n[i]=r>>>24,r<<=8;return n},g(t){const e=[];let n,r=0;for(n=0;n<t.length;n++)r=r<<8|t[n],3==(3&n)&&(e.push(r),r=0);return 3&n&&e.push(g.p(8*(3&n),r)),e}}},S={v:function(t){t?(this.S=t.S.slice(0),this._=t._.slice(0),this.C=t.C):this.reset()}};S.v.prototype={blockSize:512,reset:function(){const t=this;return t.S=this.A.slice(0),t._=[],t.C=0,t},update:function(t){const e=this;"string"==typeof t&&(t=v.I.g(t));const n=e._=g.concat(e._,t),i=e.C,s=e.C=i+g.u(t);if(s>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const f=new o(n);let c=0;for(let t=e.blockSize+i-(e.blockSize+i&e.blockSize-1);s>=t;t+=e.blockSize)e.V(f.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),e},P:function(){const t=this;let e=t._;const r=t.S;e=g.concat(e,[g.p(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(n.floor(t.C/4294967296)),e.push(0|t.C);e.length;)t.V(e.splice(0,16));return t.reset(),r},A:[1732584193,4023233417,2562383102,271733878,3285377520],B:[1518500249,1859775393,2400959708,3395469782],D:(t,e,n,r)=>t>19?t>39?t>59?t>79?void 0:e^n^r:e&n|e&r|n&r:e^n^r:e&n|~e&r,M:(t,e)=>e<<t|e>>>32-t,V:function(e){const r=this,i=r.S,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let o=i[0],f=i[1],c=i[2],l=i[3],u=i[4];for(let t=0;79>=t;t++){16>t||(s[t]=r.M(1,s[t-3]^s[t-8]^s[t-14]^s[t-16]));const e=r.M(5,o)+r.D(t,f,c,l)+u+s[t]+r.B[n.floor(t/20)]|0;u=l,l=c,c=r.M(30,f),f=o,o=e}i[0]=i[0]+o|0,i[1]=i[1]+f|0,i[2]=i[2]+c|0,i[3]=i[3]+l|0,i[4]=i[4]+u|0}};const _={getRandomValues(t){const e=new o(t.buffer),r=t=>{let e=987654321;const r=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&r,(((e<<16)+(t=18e3*(65535&t)+(t>>16)&r)&r)/4294967296+.5)*(n.random()>.5?1:-1))};for(let i,s=0;s<t.length;s+=4){const t=r(4294967296*(i||n.random()));i=987654071*t(),e[s/4]=4294967296*t()|0}return t}},z={importKey:t=>new z.R(v.m.g(t)),U(t,e,n,i){if(n=n||1e4,0>i||0>n)throw new r("invalid params to pbkdf2");const s=1+(i>>5)<<2;let o,f,l,u,a;const w=new ArrayBuffer(s),h=new c(w);let d=0;const p=g;for(e=v.m.g(e),a=1;(s||1)>d;a++){for(o=f=t.encrypt(p.concat(e,[a])),l=1;n>l;l++)for(f=t.encrypt(f),u=0;u<f.length;u++)o[u]^=f[u];for(l=0;(s||1)>d&&l<o.length;l++)h.setInt32(d,o[l]),d+=4}return w.slice(0,i/8)},R:class{constructor(t){const e=this,n=e.T=S.v,r=[[],[]],i=n.prototype.blockSize/32;e.W=[new n,new n],t.length>i&&(t=n.hash(t));for(let e=0;i>e;e++)r[0][e]=909522486^t[e],r[1][e]=1549556828^t[e];e.W[0].update(r[0]),e.W[1].update(r[1]),e.j=new n(e.W[0])}reset(){const t=this;t.j=new t.T(t.W[0]),t.H=!1}update(t){this.H=!0,this.j.update(t)}digest(){const t=this,e=t.j.P(),n=new t.T(t.W[1]).update(e).P();return t.reset(),n}encrypt(t){if(this.H)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},C={name:"PBKDF2"},x=e.assign({hash:{name:"HMAC"}},C),A=e.assign({iterations:1e3,hash:{name:"SHA-1"}},C),I=["deriveBits"],V=[8,12,16],P=[16,24,32],B=[0,0,0,0],D=void 0!==u,E=D&&void 0!==u.subtle,M=D&&"function"==typeof u.getRandomValues,R=D&&E&&"function"==typeof u.subtle.importKey,U=D&&E&&"function"==typeof u.subtle.deriveBits,T=v.m,W=class{constructor(t){const e=this;e.K=[[[],[],[],[],[]],[[],[],[],[],[]]],e.K[0][0][0]||e.L();const n=e.K[0][4],i=e.K[1],s=t.length;let o,f,c,l=1;if(4!==s&&6!==s&&8!==s)throw new r("invalid aes key size");for(e.B=[f=t.slice(0),c=[]],o=s;4*s+28>o;o++){let t=f[o-1];(o%s==0||8===s&&o%s==4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],o%s==0&&(t=t<<8^t>>>24^l<<24,l=l<<1^283*(l>>7))),f[o]=f[o-s]^t}for(let t=0;o;t++,o--){const e=f[3&t?o:o-4];c[t]=4>=o||4>t?e:i[0][n[e>>>24]]^i[1][n[e>>16&255]]^i[2][n[e>>8&255]]^i[3][n[255&e]]}}encrypt(t){return this.F(t,0)}decrypt(t){return this.F(t,1)}L(){const t=this.K[0],e=this.K[1],n=t[4],r=e[4],i=[],s=[];let o,f,c,l;for(let t=0;256>t;t++)s[(i[t]=t<<1^283*(t>>7))^t]=t;for(let u=o=0;!n[u];u^=f||1,o=s[o]||1){let s=o^o<<1^o<<2^o<<3^o<<4;s=s>>8^255&s^99,n[u]=s,r[s]=u,l=i[c=i[f=i[u]]];let a=16843009*l^65537*c^257*f^16843008*u,w=257*i[s]^16843008*s;for(let n=0;4>n;n++)t[n][u]=w=w<<24^w>>>8,e[n][s]=a=a<<24^a>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}F(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.B[e],i=n.length/4-2,s=[0,0,0,0],o=this.K[e],f=o[0],c=o[1],l=o[2],u=o[3],a=o[4];let w,h,d,p=t[0]^n[0],b=t[e?3:1]^n[1],y=t[2]^n[2],m=t[e?1:3]^n[3],k=4;for(let t=0;i>t;t++)w=f[p>>>24]^c[b>>16&255]^l[y>>8&255]^u[255&m]^n[k],h=f[b>>>24]^c[y>>16&255]^l[m>>8&255]^u[255&p]^n[k+1],d=f[y>>>24]^c[m>>16&255]^l[p>>8&255]^u[255&b]^n[k+2],m=f[m>>>24]^c[p>>16&255]^l[b>>8&255]^u[255&y]^n[k+3],k+=4,p=w,b=h,y=d;for(let t=0;4>t;t++)s[e?3&-t:t]=a[p>>>24]<<24^a[b>>16&255]<<16^a[y>>8&255]<<8^a[255&m]^n[k++],w=p,p=b,b=y,y=m,m=w;return s}},j=class{constructor(t,e){this.O=t,this.q=e,this.G=e}reset(){this.G=this.q}update(t){return this.J(this.O,t,this.G)}N(t){if(255==(t>>24&255)){let e=t>>16&255,n=t>>8&255,r=255&t;255===e?(e=0,255===n?(n=0,255===r?r=0:++r):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=r}else t+=1<<24;return t}X(t){0===(t[0]=this.N(t[0]))&&(t[1]=this.N(t[1]))}J(t,e,n){let r;if(!(r=e.length))return[];const i=g.u(e);for(let i=0;r>i;i+=4){this.X(n);const r=t.encrypt(n);e[i]^=r[0],e[i+1]^=r[1],e[i+2]^=r[2],e[i+3]^=r[3]}return g.h(e,i)}},H=z.R;class K extends w{constructor(n,s,o){let f;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,signed:s,Z:o-1,pending:new i(0)})},async transform(e,n){const s=this;if(s.password){const n=s.password;s.password=null;const i=G(e,0,V[s.Z]+2);await(async(t,e,n)=>{await O(t,n,G(e,0,V[t.Z]));const i=G(e,V[t.Z]),s=t.keys.passwordVerification;if(s[0]!=i[0]||s[1]!=i[1])throw new r("Invalid pasword")})(s,i,n),s.$=new j(new W(s.keys.key),t.from(B)),s.tt=new H(s.keys.et),e=G(e,V[s.Z]+2),s.Y()}else await s.ready;const o=new i(e.length-10-(e.length-10)%16);n.enqueue(F(s,e,o,0,10,!0))},async flush(t){const e=this;await e.ready;const n=e.pending,r=G(n,0,n.length-10),s=G(n,n.length-10);let o=new i(0);if(r.length){const t=N(T,r);e.tt.update(t);const n=e.$.update(t);o=J(T,n)}if(f.valid=!0,e.signed){const t=G(J(T,e.tt.digest()),0,10);for(let e=0;10>e;e++)t[e]!=s[e]&&(f.valid=!1)}t.enqueue(o)}}),f=this}}class L extends w{constructor(n,r){let s;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,Z:r-1,pending:new i(0)})},async transform(e,n){const r=this;let s=new i(0);if(r.password){const e=r.password;r.password=null,s=await(async(t,e)=>{const n=(r=new i(V[t.Z]),M?u.getRandomValues(r):_.getRandomValues(r));var r;return await O(t,e,n),q(n,t.keys.passwordVerification)})(r,e),r.$=new j(new W(r.keys.key),t.from(B)),r.tt=new H(r.keys.et),r.Y()}else await r.ready;const o=new i(s.length+e.length-e.length%16);o.set(s,0),n.enqueue(F(r,e,o,s.length,0))},async flush(t){const e=this;await e.ready;let n=new i(0);if(e.pending.length){const t=e.$.update(N(T,e.pending));e.tt.update(t),n=J(T,t)}s.signature=J(T,e.tt.digest()).slice(0,10),t.enqueue(q(n,s.signature))}}),s=this}}function F(t,e,n,r,s,o){const f=e.length-s;let c;for(t.pending.length&&(e=q(t.pending,e),n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new i(e)).set(n,0)}return t})(n,f-f%16)),c=0;f-16>=c;c+=16){const i=N(T,G(e,c,c+16));o&&t.tt.update(i);const s=t.$.update(i);o||t.tt.update(s),n.set(J(T,s),c+r)}return t.pending=G(e,c),n}async function O(t,n,r){const s=(t=>{if(void 0===l){const e=new i((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new l).encode(t)})(n),o=await((t,e,n,r,i)=>R?u.subtle.importKey("raw",e,n,!1,i):z.importKey(e))(0,s,x,0,I),f=await(async(t,e,n)=>U?await u.subtle.deriveBits(t,e,n):z.U(e,t.salt,A.iterations,n))(e.assign({salt:r},A),o,8*(2*P[t.Z]+2)),c=new i(f);t.keys={key:N(T,G(c,0,P[t.Z])),et:N(T,G(c,P[t.Z],2*P[t.Z])),passwordVerification:G(c,2*P[t.Z])}}function q(t,e){let n=t;return t.length+e.length&&(n=new i(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function G(t,e,n){return t.subarray(e,n)}function J(t,e){return t.k(e)}function N(t,e){return t.g(e)}class Q extends w{constructor(t,n){let i;super({start(){e.assign(this,{password:t,passwordVerification:n}),$(this,t)},transform(t,e){const n=this;if(n.password){const e=Y(n,t.subarray(0,12));if(n.password=null,e[11]!=n.passwordVerification)throw new r("Invalid pasword");t=t.subarray(12)}e.enqueue(Y(n,t))},flush(){i.valid=!0}}),i=this}}class X extends w{constructor(t,n){super({start(){e.assign(this,{password:t,passwordVerification:n}),$(this,t)},transform(t,e){const n=this;let r,s;if(n.password){n.password=null;const e=u.getRandomValues(new i(12));e[11]=n.passwordVerification,r=new i(t.length+e.length),r.set(Z(n,e),0),s=12}else r=new i(t.length),s=0;r.set(Z(n,t),s),e.enqueue(r)},flush(){}})}}function Y(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=et(t)^e[r],tt(t,n[r]);return n}function Z(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=et(t)^e[r],tt(t,e[r]);return n}function $(t,e){t.keys=[305419896,591751049,878082192],t.nt=new m(t.keys[0]),t.rt=new m(t.keys[2]);for(let n=0;n<e.length;n++)tt(t,e.charCodeAt(n))}function tt(t,e){t.nt.append([e]),t.keys[0]=~t.nt.get(),t.keys[1]=rt(t.keys[1]+nt(t.keys[0])),t.keys[1]=rt(n.imul(t.keys[1],134775813)+1),t.rt.append([t.keys[1]>>>24]),t.keys[2]=~t.rt.get()}function et(t){const e=2|t.keys[2];return nt(n.imul(e,1^e)>>>8)}function nt(t){return 255&t}function rt(t){return 4294967295&t}class it extends w{constructor(t,e){let n;super({start(){n=new t(e)},transform(t,e){t=n.append(t),e.enqueue(t)},flush(t){const e=n.flush();e&&t.enqueue(e)}})}}const st=void 0===p,ot=void 0===b;let ft=!0,ct=!0;class lt extends w{constructor(t,e,{it:n},...r){super({},...r);const{compressed:i,st:s,password:o,passwordVerification:f,encryptionStrength:l,zipCrypto:u,signed:a}=e,w=this;let h,d,b=wt(super.readable);const y=!!o;if(y&&!u||!a||([b,h]=b.tee(),h=h.pipeThrough(new k)),i)if(void 0!==s&&!s||st&&!ct)b=at(t,b,n);else try{const t=new p("deflate-raw");b=b.pipeThrough(t)}catch(e){ct=!1,b=at(t,b,n)}y&&(u?b=b.pipeThrough(new X(o,f)):(d=new L(o,l),b=b.pipeThrough(d))),ht(w,b,(async()=>{let t;y&&!u&&(t=d.signature),y&&!u||!a||(t=await h.getReader().read(),t=new c(t.value.buffer).getUint32(0)),w.signature=t}))}}class ut extends w{constructor(t,e,{it:n},...i){super({},...i);const{zipCrypto:s,password:o,passwordVerification:f,signed:l,encryptionStrength:u,compressed:a,st:w}=e;let h,d,p=wt(super.readable);const y=!!o;if(y&&(s?p=p.pipeThrough(new Q(o,f)):(d=new K(o,l,u),p=p.pipeThrough(d))),a)if(void 0!==w&&!w||ot&&!ft)p=at(t,p,n);else try{p=p.pipeThrough(new b("deflate-raw"))}catch(e){ft=!1,p=at(t,p,n)}y&&!s||!l||([p,h]=p.tee(),h=h.pipeThrough(new k)),ht(this,p,(async()=>{if(y&&!s&&!d.valid)throw new r("Invalid signature");if((!y||s)&&l){const t=await h.getReader().read();if(t!=new c(t.value.buffer).getUint32(0,!1))throw new r("Invalid signature")}}))}}function at(t,e,n){return e.pipeThrough(new it(t,{it:n}))}function wt(t){return t.pipeThrough(new w({transform(t,e){t&&t.length&&e.enqueue(t)}}))}function ht(t,n,r){t.length=0,n=n.pipeThrough(new w({transform(e,n){e&&e.length&&(t.length+=e.length,n.enqueue(e))},flush:r})),e.defineProperty(t,"readable",{get:()=>n})}const dt=new Map;let pt,bt=0;function yt(t){if(t.data){const e=t.data;if(e&&e.length)try{t.data=e.buffer,a(t,[t.data])}catch(e){a(t)}else a(t)}else a(t)}addEventListener("message",(async t=>{const e=t.data,n=e.type;try{if("start"==n&&(async t=>{try{t.scripts&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;let n;self.initCodec&&self.initCodec(),e.codecType.startsWith("deflate")?n=self.Deflate:e.codecType.startsWith("inflate")&&(n=self.Inflate);const r=new h({async pull(t){let e=new Promise(((t,e)=>dt.set(bt,{resolve:t,reject:e})));yt({type:"pull",messageId:bt}),bt++;const{value:n,done:r}=await e;t.enqueue(n),r&&t.close()}},{highWaterMark:1}),i=new d({write(t){yt({type:"data",data:t})}});pt=((t,e,n,r,i)=>{const s=new AbortController,{signal:o}=s;if(r.codecType.startsWith("deflate"))return{ot:()=>f(lt),abort:c};if(r.codecType.startsWith("inflate"))return{ot:()=>f(ut),abort:c};async function f(s){const f=new s(t,r,i);await e.pipeThrough(f,{signal:o}).pipeTo(n);const{length:c,signature:l}=f;return{length:c,signature:l}}function c(){s.abort()}})(n,r,i,e,t.config),yt({type:"close",result:await pt.ot()})}catch(t){a({error:{message:t.message,stack:t.stack}})}})(e),"data"==n){const{resolve:t}=dt.get(e.messageId);dt.delete(e.messageId),t({value:new i(e.data),done:e.done})}"abort"==n&&pt.abort()}catch(t){a({error:{message:t.message,stack:t.stack}})}}));const mt=(()=>{const e=-2;function o(e){return f(e.map((([e,n])=>new t(e).fill(n,0,e))))}function f(e){return e.reduce(((e,n)=>e.concat(t.isArray(n)?f(n):n)),[])}const c=[0,1,2,3].concat(...o([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function l(){const t=this;function e(t,e){let n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1}t.ft=r=>{const i=t.ct,s=t.ut.lt,o=t.ut.wt;let f,c,l,u=-1;for(r.ht=0,r.dt=573,f=0;o>f;f++)0!==i[2*f]?(r.bt[++r.ht]=u=f,r.yt[f]=0):i[2*f+1]=0;for(;2>r.ht;)l=r.bt[++r.ht]=2>u?++u:0,i[2*l]=1,r.yt[l]=0,r.kt--,s&&(r.gt-=s[2*l+1]);for(t.vt=u,f=n.floor(r.ht/2);f>=1;f--)r.St(i,f);l=o;do{f=r.bt[1],r.bt[1]=r.bt[r.ht--],r.St(i,1),c=r.bt[1],r.bt[--r.dt]=f,r.bt[--r.dt]=c,i[2*l]=i[2*f]+i[2*c],r.yt[l]=n.max(r.yt[f],r.yt[c])+1,i[2*f+1]=i[2*c+1]=l,r.bt[1]=l++,r.St(i,1)}while(r.ht>=2);r.bt[--r.dt]=r.bt[1],(e=>{const n=t.ct,r=t.ut.lt,i=t.ut._t,s=t.ut.zt,o=t.ut.Ct;let f,c,l,u,a,w,h=0;for(u=0;15>=u;u++)e.xt[u]=0;for(n[2*e.bt[e.dt]+1]=0,f=e.dt+1;573>f;f++)c=e.bt[f],u=n[2*n[2*c+1]+1]+1,u>o&&(u=o,h++),n[2*c+1]=u,c>t.vt||(e.xt[u]++,a=0,s>c||(a=i[c-s]),w=n[2*c],e.kt+=w*(u+a),r&&(e.gt+=w*(r[2*c+1]+a)));if(0!==h){do{for(u=o-1;0===e.xt[u];)u--;e.xt[u]--,e.xt[u+1]+=2,e.xt[o]--,h-=2}while(h>0);for(u=o;0!==u;u--)for(c=e.xt[u];0!==c;)l=e.bt[--f],l>t.vt||(n[2*l+1]!=u&&(e.kt+=(u-n[2*l+1])*n[2*l],n[2*l+1]=u),c--)}})(r),((t,n,r)=>{const i=[];let s,o,f,c=0;for(s=1;15>=s;s++)i[s]=c=c+r[s-1]<<1;for(o=0;n>=o;o++)f=t[2*o+1],0!==f&&(t[2*o]=e(i[f]++,f))})(i,t.vt,r.xt)}}function u(t,e,n,r,i){const s=this;s.lt=t,s._t=e,s.zt=n,s.wt=r,s.Ct=i}l.At=[0,1,2,3,4,5,6,7].concat(...o([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),l.It=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],l.Vt=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],l.Pt=t=>256>t?c[t]:c[256+(t>>>7)],l.Bt=[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],l.Dt=[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],l.Et=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],l.Mt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const a=o([[144,8],[112,9],[24,7],[8,8]]);u.Rt=f([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((t,e)=>[t,a[e]])));const w=o([[30,5]]);function h(t,e,n,r,i){const s=this;s.Ut=t,s.Tt=e,s.Wt=n,s.jt=r,s.Ht=i}u.Kt=f([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((t,e)=>[t,w[e]]))),u.Lt=new u(u.Rt,l.Bt,257,286,15),u.Ft=new u(u.Kt,l.Dt,0,30,15),u.Ot=new u(null,l.Et,0,19,7);const d=[new h(0,0,0,0,0),new h(4,4,8,4,1),new h(4,5,16,8,1),new h(4,6,32,32,1),new h(4,4,16,16,2),new h(8,16,32,32,2),new h(8,16,128,128,2),new h(8,32,128,256,2),new h(32,128,258,1024,2),new h(32,258,258,4096,2)],p=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],b=113,y=666,m=262;function k(t,e,n,r){const i=t[2*e],s=t[2*n];return s>i||i==s&&r[e]<=r[n]}function g(){const t=this;let r,o,f,c,a,w,h,g,v,S,_,z,C,x,A,I,V,P,B,D,E,M,R,U,T,W,j,H,K,L,F,O,q;const G=new l,J=new l,N=new l;let Q,X,Y,Z,$,tt;function et(){let e;for(e=0;286>e;e++)F[2*e]=0;for(e=0;30>e;e++)O[2*e]=0;for(e=0;19>e;e++)q[2*e]=0;F[512]=1,t.kt=t.gt=0,X=Y=0}function nt(t,e){let n,r=-1,i=t[1],s=0,o=7,f=4;0===i&&(o=138,f=3),t[2*(e+1)+1]=65535;for(let c=0;e>=c;c++)n=i,i=t[2*(c+1)+1],++s<o&&n==i||(f>s?q[2*n]+=s:0!==n?(n!=r&&q[2*n]++,q[32]++):s>10?q[36]++:q[34]++,s=0,r=n,0===i?(o=138,f=3):n==i?(o=6,f=3):(o=7,f=4))}function rt(e){t.qt[t.pending++]=e}function it(t){rt(255&t),rt(t>>>8&255)}function st(t,e){let n;const r=e;tt>16-r?(n=t,$|=n<<tt&65535,it($),$=n>>>16-tt,tt+=r-16):($|=t<<tt&65535,tt+=r)}function ot(t,e){const n=2*t;st(65535&e[n],65535&e[n+1])}function ft(t,e){let n,r,i=-1,s=t[1],o=0,f=7,c=4;for(0===s&&(f=138,c=3),n=0;e>=n;n++)if(r=s,s=t[2*(n+1)+1],++o>=f||r!=s){if(c>o)do{ot(r,q)}while(0!=--o);else 0!==r?(r!=i&&(ot(r,q),o--),ot(16,q),st(o-3,2)):o>10?(ot(18,q),st(o-11,7)):(ot(17,q),st(o-3,3));o=0,i=r,0===s?(f=138,c=3):r==s?(f=6,c=3):(f=7,c=4)}}function ct(){16==tt?(it($),$=0,tt=0):8>tt||(rt(255&$),$>>>=8,tt-=8)}function lt(e,r){let i,s,o;if(t.Gt[X]=e,t.Jt[X]=255&r,X++,0===e?F[2*r]++:(Y++,e--,F[2*(l.At[r]+256+1)]++,O[2*l.Pt(e)]++),0==(8191&X)&&j>2){for(i=8*X,s=E-V,o=0;30>o;o++)i+=O[2*o]*(5+l.Dt[o]);if(i>>>=3,Y<n.floor(X/2)&&i<n.floor(s/2))return!0}return X==Q-1}function ut(e,n){let r,i,s,o,f=0;if(0!==X)do{r=t.Gt[f],i=t.Jt[f],f++,0===r?ot(i,e):(s=l.At[i],ot(s+256+1,e),o=l.Bt[s],0!==o&&(i-=l.It[s],st(i,o)),r--,s=l.Pt(r),ot(s,n),o=l.Dt[s],0!==o&&(r-=l.Vt[s],st(r,o)))}while(X>f);ot(256,e),Z=e[513]}function at(){tt>8?it($):tt>0&&rt(255&$),$=0,tt=0}function wt(e,n,r){st(0+(r?1:0),3),((e,n)=>{at(),Z=8,it(n),it(~n),t.qt.set(g.subarray(e,e+n),t.pending),t.pending+=n})(e,n)}function ht(e){((e,n,r)=>{let i,s,o=0;j>0?(G.ft(t),J.ft(t),o=(()=>{let e;for(nt(F,G.vt),nt(O,J.vt),N.ft(t),e=18;e>=3&&0===q[2*l.Mt[e]+1];e--);return t.kt+=14+3*(e+1),e})(),i=t.kt+3+7>>>3,s=t.gt+3+7>>>3,s>i||(i=s)):i=s=n+5,n+4>i||-1==e?s==i?(st(2+(r?1:0),3),ut(u.Rt,u.Kt)):(st(4+(r?1:0),3),((t,e,n)=>{let r;for(st(t-257,5),st(e-1,5),st(n-4,4),r=0;n>r;r++)st(q[2*l.Mt[r]+1],3);ft(F,t-1),ft(O,e-1)})(G.vt+1,J.vt+1,o+1),ut(F,O)):wt(e,n,r),et(),r&&at()})(0>V?-1:V,E-V,e),V=E,r.Nt()}function dt(){let t,e,n,i;do{if(i=v-R-E,0===i&&0===E&&0===R)i=a;else if(-1==i)i--;else if(E>=a+a-m){g.set(g.subarray(a,a+a),0),M-=a,E-=a,V-=a,t=C,n=t;do{e=65535&_[--n],_[n]=a>e?0:e-a}while(0!=--t);t=a,n=t;do{e=65535&S[--n],S[n]=a>e?0:e-a}while(0!=--t);i+=a}if(0===r.Qt)return;t=r.Xt(g,E+R,i),R+=t,3>R||(z=255&g[E],z=(z<<I^255&g[E+1])&A)}while(m>R&&0!==r.Qt)}function pt(t){let e,n,r=T,i=E,s=U;const o=E>a-m?E-(a-m):0;let f=L;const c=h,l=E+258;let u=g[i+s-1],w=g[i+s];K>U||(r>>=2),f>R&&(f=R);do{if(e=t,g[e+s]==w&&g[e+s-1]==u&&g[e]==g[i]&&g[++e]==g[i+1]){i+=2,e++;do{}while(g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&l>i);if(n=258-(l-i),i=l-258,n>s){if(M=t,s=n,n>=f)break;u=g[i+s-1],w=g[i+s]}}}while((t=65535&S[t&c])>o&&0!=--r);return s>R?R:s}t.yt=[],t.xt=[],t.bt=[],F=[],O=[],q=[],t.St=(e,n)=>{const r=t.bt,i=r[n];let s=n<<1;for(;s<=t.ht&&(s<t.ht&&k(e,r[s+1],r[s],t.yt)&&s++,!k(e,i,r[s],t.yt));)r[n]=r[s],n=s,s<<=1;r[n]=i},t.Yt=(r,l,p,y,m,k)=>(y||(y=8),m||(m=8),k||(k=0),r.Zt=null,-1==l&&(l=6),1>m||m>9||8!=y||9>p||p>15||0>l||l>9||0>k||k>2?e:(r.$t=t,w=p,a=1<<w,h=a-1,x=m+7,C=1<<x,A=C-1,I=n.floor((x+3-1)/3),g=new i(2*a),S=[],_=[],Q=1<<m+6,t.qt=new i(4*Q),f=4*Q,t.Gt=new s(Q),t.Jt=new i(Q),j=l,H=k,(e=>(e.te=e.ee=0,e.Zt=null,t.pending=0,t.ne=0,o=b,c=0,G.ct=F,G.ut=u.Lt,J.ct=O,J.ut=u.Ft,N.ct=q,N.ut=u.Ot,$=0,tt=0,Z=8,et(),(()=>{v=2*a,_[C-1]=0;for(let t=0;C-1>t;t++)_[t]=0;W=d[j].Tt,K=d[j].Ut,L=d[j].Wt,T=d[j].jt,E=0,V=0,R=0,P=U=2,D=0,z=0})(),0))(r))),t.re=()=>42!=o&&o!=b&&o!=y?e:(t.Jt=null,t.Gt=null,t.qt=null,_=null,S=null,g=null,t.$t=null,o==b?-3:0),t.ie=(t,n,r)=>{let i=0;return-1==n&&(n=6),0>n||n>9||0>r||r>2?e:(d[j].Ht!=d[n].Ht&&0!==t.te&&(i=t.se(1)),j!=n&&(j=n,W=d[j].Tt,K=d[j].Ut,L=d[j].Wt,T=d[j].jt),H=r,i)},t.oe=(t,n,r)=>{let i,s=r,f=0;if(!n||42!=o)return e;if(3>s)return 0;for(s>a-m&&(s=a-m,f=r-s),g.set(n.subarray(f,f+s),0),E=s,V=s,z=255&g[0],z=(z<<I^255&g[1])&A,i=0;s-3>=i;i++)z=(z<<I^255&g[i+2])&A,S[i&h]=_[z],_[z]=i;return 0},t.se=(n,i)=>{let s,l,k,v,x;if(i>4||0>i)return e;if(!n.fe||!n.ce&&0!==n.Qt||o==y&&4!=i)return n.Zt=p[4],e;if(0===n.le)return n.Zt=p[7],-5;var T;if(r=n,v=c,c=i,42==o&&(l=8+(w-8<<4)<<8,k=(j-1&255)>>1,k>3&&(k=3),l|=k<<6,0!==E&&(l|=32),l+=31-l%31,o=b,rt((T=l)>>8&255),rt(255&T)),0!==t.pending){if(r.Nt(),0===r.le)return c=-1,0}else if(0===r.Qt&&v>=i&&4!=i)return r.Zt=p[7],-5;if(o==y&&0!==r.Qt)return n.Zt=p[7],-5;if(0!==r.Qt||0!==R||0!=i&&o!=y){switch(x=-1,d[j].Ht){case 0:x=(t=>{let e,n=65535;for(n>f-5&&(n=f-5);;){if(1>=R){if(dt(),0===R&&0==t)return 0;if(0===R)break}if(E+=R,R=0,e=V+n,(0===E||E>=e)&&(R=E-e,E=e,ht(!1),0===r.le))return 0;if(E-V>=a-m&&(ht(!1),0===r.le))return 0}return ht(4==t),0===r.le?4==t?2:0:4==t?3:1})(i);break;case 1:x=(t=>{let e,n=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(z=(z<<I^255&g[E+2])&A,n=65535&_[z],S[E&h]=_[z],_[z]=E),0===n||(E-n&65535)>a-m||2!=H&&(P=pt(n)),3>P)e=lt(0,255&g[E]),R--,E++;else if(e=lt(E-M,P-3),R-=P,P>W||3>R)E+=P,P=0,z=255&g[E],z=(z<<I^255&g[E+1])&A;else{P--;do{E++,z=(z<<I^255&g[E+2])&A,n=65535&_[z],S[E&h]=_[z],_[z]=E}while(0!=--P);E++}if(e&&(ht(!1),0===r.le))return 0}return ht(4==t),0===r.le?4==t?2:0:4==t?3:1})(i);break;case 2:x=(t=>{let e,n,i=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(z=(z<<I^255&g[E+2])&A,i=65535&_[z],S[E&h]=_[z],_[z]=E),U=P,B=M,P=2,0!==i&&W>U&&a-m>=(E-i&65535)&&(2!=H&&(P=pt(i)),5>=P&&(1==H||3==P&&E-M>4096)&&(P=2)),3>U||P>U)if(0!==D){if(e=lt(0,255&g[E-1]),e&&ht(!1),E++,R--,0===r.le)return 0}else D=1,E++,R--;else{n=E+R-3,e=lt(E-1-B,U-3),R-=U-1,U-=2;do{++E>n||(z=(z<<I^255&g[E+2])&A,i=65535&_[z],S[E&h]=_[z],_[z]=E)}while(0!=--U);if(D=0,P=2,E++,e&&(ht(!1),0===r.le))return 0}}return 0!==D&&(e=lt(0,255&g[E-1]),D=0),ht(4==t),0===r.le?4==t?2:0:4==t?3:1})(i)}if(2!=x&&3!=x||(o=y),0==x||2==x)return 0===r.le&&(c=-1),0;if(1==x){if(1==i)st(2,3),ot(256,u.Rt),ct(),9>1+Z+10-tt&&(st(2,3),ot(256,u.Rt),ct()),Z=7;else if(wt(0,0,!1),3==i)for(s=0;C>s;s++)_[s]=0;if(r.Nt(),0===r.le)return c=-1,0}}return 4!=i?0:1}}function v(){const t=this;t.ue=0,t.ae=0,t.Qt=0,t.te=0,t.le=0,t.ee=0}return v.prototype={Yt:function(t,e){const n=this;return n.$t=new g,e||(e=15),n.$t.Yt(n,t,e)},se:function(t){const n=this;return n.$t?n.$t.se(n,t):e},re:function(){const t=this;if(!t.$t)return e;const n=t.$t.re();return t.$t=null,n},ie:function(t,n){const r=this;return r.$t?r.$t.ie(r,t,n):e},oe:function(t,n){const r=this;return r.$t?r.$t.oe(r,t,n):e},Xt:function(t,e,n){const r=this;let i=r.Qt;return i>n&&(i=n),0===i?0:(r.Qt-=i,t.set(r.ce.subarray(r.ue,r.ue+i),e),r.ue+=i,r.te+=i,i)},Nt:function(){const t=this;let e=t.$t.pending;e>t.le&&(e=t.le),0!==e&&(t.fe.set(t.$t.qt.subarray(t.$t.ne,t.$t.ne+e),t.ae),t.ae+=e,t.$t.ne+=e,t.ee+=e,t.le-=e,t.$t.pending-=e,0===t.$t.pending&&(t.$t.ne=0))}},function(t){const e=new v,s=(o=t&&t.it?t.it:65536)+5*(n.floor(o/16383)+1);var o;const f=new i(s);let c=t?t.level:-1;void 0===c&&(c=-1),e.Yt(c),e.fe=f,this.append=(t,n)=>{let o,c,l=0,u=0,a=0;const w=[];if(t.length){e.ue=0,e.ce=t,e.Qt=t.length;do{if(e.ae=0,e.le=s,o=e.se(0),0!=o)throw new r("deflating: "+e.Zt);e.ae&&(e.ae==s?w.push(new i(f)):w.push(f.slice(0,e.ae))),a+=e.ae,n&&e.ue>0&&e.ue!=l&&(n(e.ue),l=e.ue)}while(e.Qt>0||0===e.le);return w.length>1?(c=new i(a),w.forEach((t=>{c.set(t,u),u+=t.length}))):c=w[0]||new i(0),c}},this.flush=()=>{let t,n,o=0,c=0;const l=[];do{if(e.ae=0,e.le=s,t=e.se(4),1!=t&&0!=t)throw new r("deflating: "+e.Zt);s-e.le>0&&l.push(f.slice(0,e.ae)),c+=e.ae}while(e.Qt>0||0===e.le);return e.re(),n=new i(c),l.forEach((t=>{n.set(t,o),o+=t.length})),n}}})(),kt=(()=>{const t=-2,e=-3,s=-5,o=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],c=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],l=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],u=[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,0,0],a=[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,112,112],w=[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],h=[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];function d(){let t,n,r,i,o,c;function l(t,n,f,l,u,a,w,h,d,p,b){let y,m,k,g,v,S,_,z,C,x,A,I,V,P,B;x=0,v=f;do{r[t[n+x]]++,x++,v--}while(0!==v);if(r[0]==f)return w[0]=-1,h[0]=0,0;for(z=h[0],S=1;15>=S&&0===r[S];S++);for(_=S,S>z&&(z=S),v=15;0!==v&&0===r[v];v--);for(k=v,z>v&&(z=v),h[0]=z,P=1<<S;v>S;S++,P<<=1)if(0>(P-=r[S]))return e;if(0>(P-=r[v]))return e;for(r[v]+=P,c[1]=S=0,x=1,V=2;0!=--v;)c[V]=S+=r[x],V++,x++;v=0,x=0;do{0!==(S=t[n+x])&&(b[c[S]++]=v),x++}while(++v<f);for(f=c[k],c[0]=v=0,x=0,g=-1,I=-z,o[0]=0,A=0,B=0;k>=_;_++)for(y=r[_];0!=y--;){for(;_>I+z;){if(g++,I+=z,B=k-I,B=B>z?z:B,(m=1<<(S=_-I))>y+1&&(m-=y+1,V=_,B>S))for(;++S<B&&(m<<=1)>r[++V];)m-=r[V];if(B=1<<S,p[0]+B>1440)return e;o[g]=A=p[0],p[0]+=B,0!==g?(c[g]=v,i[0]=S,i[1]=z,S=v>>>I-z,i[2]=A-o[g-1]-S,d.set(i,3*(o[g-1]+S))):w[0]=A}for(i[1]=_-I,f>x?b[x]<l?(i[0]=256>b[x]?0:96,i[2]=b[x++]):(i[0]=a[b[x]-l]+16+64,i[2]=u[b[x++]-l]):i[0]=192,m=1<<_-I,S=v>>>I;B>S;S+=m)d.set(i,3*(A+S));for(S=1<<_-1;0!=(v&S);S>>>=1)v^=S;for(v^=S,C=(1<<I)-1;(v&C)!=c[g];)g--,I-=z,C=(1<<I)-1}return 0!==P&&1!=k?s:0}function d(e){let s;for(t||(t=[],n=[],r=new f(16),i=[],o=new f(15),c=new f(16)),n.length<e&&(n=[]),s=0;e>s;s++)n[s]=0;for(s=0;16>s;s++)r[s]=0;for(s=0;3>s;s++)i[s]=0;o.set(r.subarray(0,15),0),c.set(r.subarray(0,16),0)}this.we=(r,i,o,f,c)=>{let u;return d(19),t[0]=0,u=l(r,0,19,19,null,null,o,i,f,t,n),u==e?c.Zt="oversubscribed dynamic bit lengths tree":u!=s&&0!==i[0]||(c.Zt="incomplete dynamic bit lengths tree",u=e),u},this.he=(r,i,o,f,c,p,b,y,m)=>{let k;return d(288),t[0]=0,k=l(o,0,r,257,u,a,p,f,y,t,n),0!=k||0===f[0]?(k==e?m.Zt="oversubscribed literal/length tree":-4!=k&&(m.Zt="incomplete literal/length tree",k=e),k):(d(288),k=l(o,r,i,0,w,h,b,c,y,t,n),0!=k||0===c[0]&&r>257?(k==e?m.Zt="oversubscribed distance tree":k==s?(m.Zt="incomplete distance tree",k=e):-4!=k&&(m.Zt="empty distance tree with lengths",k=e),k):0)}}function p(){const n=this;let r,i,s,f,c=0,l=0,u=0,a=0,w=0,h=0,d=0,p=0,b=0,y=0;function m(t,n,r,i,s,f,c,l){let u,a,w,h,d,p,b,y,m,k,g,v,S,_,z,C;b=l.ue,y=l.Qt,d=c.de,p=c.pe,m=c.write,k=m<c.read?c.read-m-1:c.end-m,g=o[t],v=o[n];do{for(;20>p;)y--,d|=(255&l.be(b++))<<p,p+=8;if(u=d&g,a=r,w=i,C=3*(w+u),0!==(h=a[C]))for(;;){if(d>>=a[C+1],p-=a[C+1],0!=(16&h)){for(h&=15,S=a[C+2]+(d&o[h]),d>>=h,p-=h;15>p;)y--,d|=(255&l.be(b++))<<p,p+=8;for(u=d&v,a=s,w=f,C=3*(w+u),h=a[C];;){if(d>>=a[C+1],p-=a[C+1],0!=(16&h)){for(h&=15;h>p;)y--,d|=(255&l.be(b++))<<p,p+=8;if(_=a[C+2]+(d&o[h]),d>>=h,p-=h,k-=S,_>m){z=m-_;do{z+=c.end}while(0>z);if(h=c.end-z,S>h){if(S-=h,m-z>0&&h>m-z)do{c.ye[m++]=c.ye[z++]}while(0!=--h);else c.ye.set(c.ye.subarray(z,z+h),m),m+=h,z+=h,h=0;z=0}}else z=m-_,m-z>0&&2>m-z?(c.ye[m++]=c.ye[z++],c.ye[m++]=c.ye[z++],S-=2):(c.ye.set(c.ye.subarray(z,z+2),m),m+=2,z+=2,S-=2);if(m-z>0&&S>m-z)do{c.ye[m++]=c.ye[z++]}while(0!=--S);else c.ye.set(c.ye.subarray(z,z+S),m),m+=S,z+=S,S=0;break}if(0!=(64&h))return l.Zt="invalid distance code",S=l.Qt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.de=d,c.pe=p,l.Qt=y,l.te+=b-l.ue,l.ue=b,c.write=m,e;u+=a[C+2],u+=d&o[h],C=3*(w+u),h=a[C]}break}if(0!=(64&h))return 0!=(32&h)?(S=l.Qt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.de=d,c.pe=p,l.Qt=y,l.te+=b-l.ue,l.ue=b,c.write=m,1):(l.Zt="invalid literal/length code",S=l.Qt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.de=d,c.pe=p,l.Qt=y,l.te+=b-l.ue,l.ue=b,c.write=m,e);if(u+=a[C+2],u+=d&o[h],C=3*(w+u),0===(h=a[C])){d>>=a[C+1],p-=a[C+1],c.ye[m++]=a[C+2],k--;break}}else d>>=a[C+1],p-=a[C+1],c.ye[m++]=a[C+2],k--}while(k>=258&&y>=10);return S=l.Qt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.de=d,c.pe=p,l.Qt=y,l.te+=b-l.ue,l.ue=b,c.write=m,0}n.init=(t,e,n,o,c,l)=>{r=0,d=t,p=e,s=n,b=o,f=c,y=l,i=null},n.me=(n,k,g)=>{let v,S,_,z,C,x,A,I=0,V=0,P=0;for(P=k.ue,z=k.Qt,I=n.de,V=n.pe,C=n.write,x=C<n.read?n.read-C-1:n.end-C;;)switch(r){case 0:if(x>=258&&z>=10&&(n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,g=m(d,p,s,b,f,y,n,k),P=k.ue,z=k.Qt,I=n.de,V=n.pe,C=n.write,x=C<n.read?n.read-C-1:n.end-C,0!=g)){r=1==g?7:9;break}u=d,i=s,l=b,r=1;case 1:for(v=u;v>V;){if(0===z)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,z--,I|=(255&k.be(P++))<<V,V+=8}if(S=3*(l+(I&o[v])),I>>>=i[S+1],V-=i[S+1],_=i[S],0===_){a=i[S+2],r=6;break}if(0!=(16&_)){w=15&_,c=i[S+2],r=2;break}if(0==(64&_)){u=_,l=S/3+i[S+2];break}if(0!=(32&_)){r=7;break}return r=9,k.Zt="invalid literal/length code",g=e,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);case 2:for(v=w;v>V;){if(0===z)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,z--,I|=(255&k.be(P++))<<V,V+=8}c+=I&o[v],I>>=v,V-=v,u=p,i=f,l=y,r=3;case 3:for(v=u;v>V;){if(0===z)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,z--,I|=(255&k.be(P++))<<V,V+=8}if(S=3*(l+(I&o[v])),I>>=i[S+1],V-=i[S+1],_=i[S],0!=(16&_)){w=15&_,h=i[S+2],r=4;break}if(0==(64&_)){u=_,l=S/3+i[S+2];break}return r=9,k.Zt="invalid distance code",g=e,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);case 4:for(v=w;v>V;){if(0===z)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,z--,I|=(255&k.be(P++))<<V,V+=8}h+=I&o[v],I>>=v,V-=v,r=5;case 5:for(A=C-h;0>A;)A+=n.end;for(;0!==c;){if(0===x&&(C==n.end&&0!==n.read&&(C=0,x=C<n.read?n.read-C-1:n.end-C),0===x&&(n.write=C,g=n.ke(k,g),C=n.write,x=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,x=C<n.read?n.read-C-1:n.end-C),0===x)))return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);n.ye[C++]=n.ye[A++],x--,A==n.end&&(A=0),c--}r=0;break;case 6:if(0===x&&(C==n.end&&0!==n.read&&(C=0,x=C<n.read?n.read-C-1:n.end-C),0===x&&(n.write=C,g=n.ke(k,g),C=n.write,x=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,x=C<n.read?n.read-C-1:n.end-C),0===x)))return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,n.ye[C++]=a,x--,r=0;break;case 7:if(V>7&&(V-=8,z++,P--),n.write=C,g=n.ke(k,g),C=n.write,x=C<n.read?n.read-C-1:n.end-C,n.read!=n.write)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);r=8;case 8:return g=1,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);case 9:return g=e,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);default:return g=t,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g)}},n.ge=()=>{}}d.ve=(t,e,n,r)=>(t[0]=9,e[0]=5,n[0]=c,r[0]=l,0);const b=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function y(n,r){const c=this;let l,u=0,a=0,w=0,h=0;const y=[0],m=[0],k=new p;let g=0,v=new f(4320);const S=new d;c.pe=0,c.de=0,c.ye=new i(r),c.end=r,c.read=0,c.write=0,c.reset=(t,e)=>{e&&(e[0]=0),6==u&&k.ge(t),u=0,c.pe=0,c.de=0,c.read=c.write=0},c.reset(n,null),c.ke=(t,e)=>{let n,r,i;return r=t.ae,i=c.read,n=(i>c.write?c.end:c.write)-i,n>t.le&&(n=t.le),0!==n&&e==s&&(e=0),t.le-=n,t.ee+=n,t.fe.set(c.ye.subarray(i,i+n),r),r+=n,i+=n,i==c.end&&(i=0,c.write==c.end&&(c.write=0),n=c.write-i,n>t.le&&(n=t.le),0!==n&&e==s&&(e=0),t.le-=n,t.ee+=n,t.fe.set(c.ye.subarray(i,i+n),r),r+=n,i+=n),t.ae=r,c.read=i,e},c.me=(n,r)=>{let i,s,f,p,_,z,C,x;for(p=n.ue,_=n.Qt,s=c.de,f=c.pe,z=c.write,C=z<c.read?c.read-z-1:c.end-z;;){let A,I,V,P,B,D,E,M;switch(u){case 0:for(;3>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}switch(i=7&s,g=1&i,i>>>1){case 0:s>>>=3,f-=3,i=7&f,s>>>=i,f-=i,u=1;break;case 1:A=[],I=[],V=[[]],P=[[]],d.ve(A,I,V,P),k.init(A[0],I[0],V[0],0,P[0],0),s>>>=3,f-=3,u=6;break;case 2:s>>>=3,f-=3,u=3;break;case 3:return s>>>=3,f-=3,u=9,n.Zt="invalid block type",r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r)}break;case 1:for(;32>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}if((~s>>>16&65535)!=(65535&s))return u=9,n.Zt="invalid stored block lengths",r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);a=65535&s,s=f=0,u=0!==a?2:0!==g?7:0;break;case 2:if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);if(0===C&&(z==c.end&&0!==c.read&&(z=0,C=z<c.read?c.read-z-1:c.end-z),0===C&&(c.write=z,r=c.ke(n,r),z=c.write,C=z<c.read?c.read-z-1:c.end-z,z==c.end&&0!==c.read&&(z=0,C=z<c.read?c.read-z-1:c.end-z),0===C)))return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);if(r=0,i=a,i>_&&(i=_),i>C&&(i=C),c.ye.set(n.Xt(p,i),z),p+=i,_-=i,z+=i,C-=i,0!=(a-=i))break;u=0!==g?7:0;break;case 3:for(;14>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}if(w=i=16383&s,(31&i)>29||(i>>5&31)>29)return u=9,n.Zt="too many length or distance symbols",r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);if(i=258+(31&i)+(i>>5&31),!l||l.length<i)l=[];else for(x=0;i>x;x++)l[x]=0;s>>>=14,f-=14,h=0,u=4;case 4:for(;4+(w>>>10)>h;){for(;3>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}l[b[h++]]=7&s,s>>>=3,f-=3}for(;19>h;)l[b[h++]]=0;if(y[0]=7,i=S.we(l,y,m,v,n),0!=i)return(r=i)==e&&(l=null,u=9),c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);h=0,u=5;case 5:for(;i=w,258+(31&i)+(i>>5&31)>h;){let t,a;for(i=y[0];i>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}if(i=v[3*(m[0]+(s&o[i]))+1],a=v[3*(m[0]+(s&o[i]))+2],16>a)s>>>=i,f-=i,l[h++]=a;else{for(x=18==a?7:a-14,t=18==a?11:3;i+x>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}if(s>>>=i,f-=i,t+=s&o[x],s>>>=x,f-=x,x=h,i=w,x+t>258+(31&i)+(i>>5&31)||16==a&&1>x)return l=null,u=9,n.Zt="invalid bit length repeat",r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);a=16==a?l[x-1]:0;do{l[x++]=a}while(0!=--t);h=x}}if(m[0]=-1,B=[],D=[],E=[],M=[],B[0]=9,D[0]=6,i=w,i=S.he(257+(31&i),1+(i>>5&31),l,B,D,E,M,v,n),0!=i)return i==e&&(l=null,u=9),r=i,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);k.init(B[0],D[0],v,E[0],v,M[0]),u=6;case 6:if(c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,1!=(r=k.me(c,n,r)))return c.ke(n,r);if(r=0,k.ge(n),p=n.ue,_=n.Qt,s=c.de,f=c.pe,z=c.write,C=z<c.read?c.read-z-1:c.end-z,0===g){u=0;break}u=7;case 7:if(c.write=z,r=c.ke(n,r),z=c.write,C=z<c.read?c.read-z-1:c.end-z,c.read!=c.write)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);u=8;case 8:return r=1,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);case 9:return r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);default:return r=t,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r)}}},c.ge=t=>{c.reset(t,null),c.ye=null,v=null},c.Se=(t,e,n)=>{c.ye.set(t.subarray(e,e+n),0),c.read=c.write=n},c._e=()=>1==u?1:0}const m=13,k=[0,0,255,255];function g(){const n=this;function r(e){return e&&e.ze?(e.te=e.ee=0,e.Zt=null,e.ze.mode=7,e.ze.Ce.reset(e,null),0):t}n.mode=0,n.method=0,n.xe=[0],n.Ae=0,n.marker=0,n.Ie=0,n.Ve=t=>(n.Ce&&n.Ce.ge(t),n.Ce=null,0),n.Pe=(e,i)=>(e.Zt=null,n.Ce=null,8>i||i>15?(n.Ve(e),t):(n.Ie=i,e.ze.Ce=new y(e,1<<i),r(e),0)),n.Be=(n,r)=>{let i,o;if(!n||!n.ze||!n.ce)return t;const f=n.ze;for(r=4==r?s:0,i=s;;)switch(f.mode){case 0:if(0===n.Qt)return i;if(i=r,n.Qt--,n.te++,8!=(15&(f.method=n.be(n.ue++)))){f.mode=m,n.Zt="unknown compression method",f.marker=5;break}if(8+(f.method>>4)>f.Ie){f.mode=m,n.Zt="invalid win size",f.marker=5;break}f.mode=1;case 1:if(0===n.Qt)return i;if(i=r,n.Qt--,n.te++,o=255&n.be(n.ue++),((f.method<<8)+o)%31!=0){f.mode=m,n.Zt="incorrect header check",f.marker=5;break}if(0==(32&o)){f.mode=7;break}f.mode=2;case 2:if(0===n.Qt)return i;i=r,n.Qt--,n.te++,f.Ae=(255&n.be(n.ue++))<<24&4278190080,f.mode=3;case 3:if(0===n.Qt)return i;i=r,n.Qt--,n.te++,f.Ae+=(255&n.be(n.ue++))<<16&16711680,f.mode=4;case 4:if(0===n.Qt)return i;i=r,n.Qt--,n.te++,f.Ae+=(255&n.be(n.ue++))<<8&65280,f.mode=5;case 5:return 0===n.Qt?i:(i=r,n.Qt--,n.te++,f.Ae+=255&n.be(n.ue++),f.mode=6,2);case 6:return f.mode=m,n.Zt="need dictionary",f.marker=0,t;case 7:if(i=f.Ce.me(n,i),i==e){f.mode=m,f.marker=0;break}if(0==i&&(i=r),1!=i)return i;i=r,f.Ce.reset(n,f.xe),f.mode=12;case 12:return n.Qt=0,1;case m:return e;default:return t}},n.De=(e,n,r)=>{let i=0,s=r;if(!e||!e.ze||6!=e.ze.mode)return t;const o=e.ze;return s<1<<o.Ie||(s=(1<<o.Ie)-1,i=r-s),o.Ce.Se(n,i,s),o.mode=7,0},n.Ee=n=>{let i,o,f,c,l;if(!n||!n.ze)return t;const u=n.ze;if(u.mode!=m&&(u.mode=m,u.marker=0),0===(i=n.Qt))return s;for(o=n.ue,f=u.marker;0!==i&&4>f;)n.be(o)==k[f]?f++:f=0!==n.be(o)?0:4-f,o++,i--;return n.te+=o-n.ue,n.ue=o,n.Qt=i,u.marker=f,4!=f?e:(c=n.te,l=n.ee,r(n),n.te=c,n.ee=l,u.mode=7,0)},n.Me=e=>e&&e.ze&&e.ze.Ce?e.ze.Ce._e():t}function v(){}return v.prototype={Pe:function(t){const e=this;return e.ze=new g,t||(t=15),e.ze.Pe(e,t)},Be:function(e){const n=this;return n.ze?n.ze.Be(n,e):t},Ve:function(){const e=this;if(!e.ze)return t;const n=e.ze.Ve(e);return e.ze=null,n},Ee:function(){const e=this;return e.ze?e.ze.Ee(e):t},De:function(e,n){const r=this;return r.ze?r.ze.De(r,e,n):t},be:function(t){return this.ce[t]},Xt:function(t,e){return this.ce.subarray(t,t+e)}},function(t){const e=new v,o=t&&t.it?n.floor(2*t.it):131072,f=new i(o);let c=!1;e.Pe(),e.fe=f,this.append=(t,n)=>{const l=[];let u,a,w=0,h=0,d=0;if(0!==t.length){e.ue=0,e.ce=t,e.Qt=t.length;do{if(e.ae=0,e.le=o,0!==e.Qt||c||(e.ue=0,c=!0),u=e.Be(0),c&&u===s){if(0!==e.Qt)throw new r("inflating: bad input")}else if(0!==u&&1!==u)throw new r("inflating: "+e.Zt);if((c||1===u)&&e.Qt===t.length)throw new r("inflating: bad input");e.ae&&(e.ae===o?l.push(new i(f)):l.push(f.slice(0,e.ae))),d+=e.ae,n&&e.ue>0&&e.ue!=w&&(n(e.ue),w=e.ue)}while(e.Qt>0||0===e.le);return l.length>1?(a=new i(d),l.forEach((t=>{a.set(t,h),h+=t.length}))):a=l[0]||new i(0),a}},this.flush=()=>{e.Ve()}}})();self.initCodec=()=>{self.Deflate=mt,self.Inflate=kt};\n'],{type:"text/javascript"}));e({workerScripts:{inflate:[t],deflate:[t]}});}};
|
|
7277
7324
|
|
|
7278
7325
|
/*
|
|
7279
7326
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
@@ -7381,7 +7428,7 @@
|
|
|
7381
7428
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
7382
7429
|
*/
|
|
7383
7430
|
|
|
7384
|
-
/* global Blob, FileReader, atob, btoa, XMLHttpRequest, document, fetch */
|
|
7431
|
+
/* global Blob, FileReader, atob, btoa, XMLHttpRequest, document, fetch, ReadableStream, WritableStream */
|
|
7385
7432
|
|
|
7386
7433
|
const ERR_HTTP_STATUS = "HTTP error ";
|
|
7387
7434
|
const ERR_HTTP_RANGE = "HTTP Range not supported";
|
|
@@ -7395,6 +7442,7 @@
|
|
|
7395
7442
|
const HTTP_METHOD_HEAD = "HEAD";
|
|
7396
7443
|
const HTTP_METHOD_GET = "GET";
|
|
7397
7444
|
const HTTP_RANGE_UNIT = "bytes";
|
|
7445
|
+
const DEFAULT_CHUNK_SIZE = 64 * 1024;
|
|
7398
7446
|
|
|
7399
7447
|
class Stream {
|
|
7400
7448
|
|
|
@@ -7408,9 +7456,39 @@
|
|
|
7408
7456
|
}
|
|
7409
7457
|
|
|
7410
7458
|
class Reader extends Stream {
|
|
7459
|
+
|
|
7460
|
+
getStream({ offset, size, chunkSize } = { offset: 0, chunkSize: DEFAULT_CHUNK_SIZE }) {
|
|
7461
|
+
const reader = this;
|
|
7462
|
+
return new ReadableStream({
|
|
7463
|
+
start() {
|
|
7464
|
+
this.chunkOffset = 0;
|
|
7465
|
+
},
|
|
7466
|
+
async pull(controller) {
|
|
7467
|
+
const { chunkOffset } = this;
|
|
7468
|
+
controller.enqueue(await reader.readUint8Array(offset + chunkOffset, Math.min(chunkSize, size() - chunkOffset)));
|
|
7469
|
+
if (chunkOffset + chunkSize > size()) {
|
|
7470
|
+
controller.close();
|
|
7471
|
+
} else {
|
|
7472
|
+
this.chunkOffset += chunkSize;
|
|
7473
|
+
}
|
|
7474
|
+
}
|
|
7475
|
+
});
|
|
7476
|
+
}
|
|
7477
|
+
}
|
|
7478
|
+
|
|
7479
|
+
class WriterStream extends Stream {
|
|
7480
|
+
|
|
7481
|
+
getStream() {
|
|
7482
|
+
const writer = this;
|
|
7483
|
+
return new WritableStream({
|
|
7484
|
+
write(chunk) {
|
|
7485
|
+
return writer.writeUint8Array(chunk);
|
|
7486
|
+
}
|
|
7487
|
+
});
|
|
7488
|
+
}
|
|
7411
7489
|
}
|
|
7412
7490
|
|
|
7413
|
-
class Writer extends
|
|
7491
|
+
class Writer extends WriterStream {
|
|
7414
7492
|
|
|
7415
7493
|
writeUint8Array(array) {
|
|
7416
7494
|
this.size += array.length;
|
|
@@ -7425,9 +7503,10 @@
|
|
|
7425
7503
|
}
|
|
7426
7504
|
|
|
7427
7505
|
init() {
|
|
7506
|
+
const reader = this;
|
|
7428
7507
|
super.init();
|
|
7429
|
-
|
|
7430
|
-
|
|
7508
|
+
reader.blobReader.init();
|
|
7509
|
+
reader.size = reader.blobReader.size;
|
|
7431
7510
|
}
|
|
7432
7511
|
|
|
7433
7512
|
readUint8Array(offset, length) {
|
|
@@ -7449,14 +7528,15 @@
|
|
|
7449
7528
|
}
|
|
7450
7529
|
|
|
7451
7530
|
getData() {
|
|
7452
|
-
|
|
7453
|
-
|
|
7531
|
+
const writer = this;
|
|
7532
|
+
if (writer.blob.text) {
|
|
7533
|
+
return writer.blob.text();
|
|
7454
7534
|
} else {
|
|
7455
7535
|
const reader = new FileReader();
|
|
7456
7536
|
return new Promise((resolve, reject) => {
|
|
7457
7537
|
reader.onload = event => resolve(event.target.result);
|
|
7458
7538
|
reader.onerror = () => reject(reader.error);
|
|
7459
|
-
reader.readAsText(
|
|
7539
|
+
reader.readAsText(writer.blob, writer.encoding);
|
|
7460
7540
|
});
|
|
7461
7541
|
}
|
|
7462
7542
|
}
|
|
@@ -7466,19 +7546,21 @@
|
|
|
7466
7546
|
|
|
7467
7547
|
constructor(dataURI) {
|
|
7468
7548
|
super();
|
|
7469
|
-
|
|
7549
|
+
const reader = this;
|
|
7550
|
+
reader.dataURI = dataURI;
|
|
7470
7551
|
let dataEnd = dataURI.length;
|
|
7471
7552
|
while (dataURI.charAt(dataEnd - 1) == "=") {
|
|
7472
7553
|
dataEnd--;
|
|
7473
7554
|
}
|
|
7474
|
-
|
|
7475
|
-
|
|
7555
|
+
reader.dataStart = dataURI.indexOf(",") + 1;
|
|
7556
|
+
reader.size = Math.floor((dataEnd - reader.dataStart) * 0.75);
|
|
7476
7557
|
}
|
|
7477
7558
|
|
|
7478
7559
|
readUint8Array(offset, length) {
|
|
7479
7560
|
const dataArray = new Uint8Array(length);
|
|
7480
7561
|
const start = Math.floor(offset / 3) * 4;
|
|
7481
|
-
const
|
|
7562
|
+
const dataStart = this.dataStart;
|
|
7563
|
+
const bytes = atob(this.dataURI.substring(start + dataStart, Math.ceil((offset + length) / 3) * 4 + dataStart));
|
|
7482
7564
|
const delta = offset - Math.floor(start / 4) * 3;
|
|
7483
7565
|
for (let indexByte = delta; indexByte < delta + length; indexByte++) {
|
|
7484
7566
|
dataArray[indexByte - delta] = bytes.charCodeAt(indexByte);
|
|
@@ -7497,20 +7579,21 @@
|
|
|
7497
7579
|
|
|
7498
7580
|
writeUint8Array(array) {
|
|
7499
7581
|
super.writeUint8Array(array);
|
|
7582
|
+
const writer = this;
|
|
7500
7583
|
let indexArray = 0;
|
|
7501
|
-
let dataString =
|
|
7502
|
-
const delta =
|
|
7503
|
-
|
|
7584
|
+
let dataString = writer.pending;
|
|
7585
|
+
const delta = writer.pending.length;
|
|
7586
|
+
writer.pending = "";
|
|
7504
7587
|
for (indexArray = 0; indexArray < (Math.floor((delta + array.length) / 3) * 3) - delta; indexArray++) {
|
|
7505
7588
|
dataString += String.fromCharCode(array[indexArray]);
|
|
7506
7589
|
}
|
|
7507
7590
|
for (; indexArray < array.length; indexArray++) {
|
|
7508
|
-
|
|
7591
|
+
writer.pending += String.fromCharCode(array[indexArray]);
|
|
7509
7592
|
}
|
|
7510
7593
|
if (dataString.length > 2) {
|
|
7511
|
-
|
|
7594
|
+
writer.data += btoa(dataString);
|
|
7512
7595
|
} else {
|
|
7513
|
-
|
|
7596
|
+
writer.pending = dataString;
|
|
7514
7597
|
}
|
|
7515
7598
|
}
|
|
7516
7599
|
|
|
@@ -7528,14 +7611,15 @@
|
|
|
7528
7611
|
}
|
|
7529
7612
|
|
|
7530
7613
|
async readUint8Array(offset, length) {
|
|
7531
|
-
|
|
7532
|
-
|
|
7614
|
+
const reader = this;
|
|
7615
|
+
if (reader.blob.arrayBuffer) {
|
|
7616
|
+
return new Uint8Array(await reader.blob.slice(offset, offset + length).arrayBuffer());
|
|
7533
7617
|
} else {
|
|
7534
7618
|
const reader = new FileReader();
|
|
7535
7619
|
return new Promise((resolve, reject) => {
|
|
7536
7620
|
reader.onload = event => resolve(new Uint8Array(event.target.result));
|
|
7537
7621
|
reader.onerror = () => reject(reader.error);
|
|
7538
|
-
reader.readAsArrayBuffer(
|
|
7622
|
+
reader.readAsArrayBuffer(reader.blob.slice(offset, offset + length));
|
|
7539
7623
|
});
|
|
7540
7624
|
}
|
|
7541
7625
|
}
|
|
@@ -7552,21 +7636,23 @@
|
|
|
7552
7636
|
|
|
7553
7637
|
writeUint8Array(array) {
|
|
7554
7638
|
super.writeUint8Array(array);
|
|
7555
|
-
|
|
7556
|
-
|
|
7639
|
+
const writer = this;
|
|
7640
|
+
if (writer.arrayBuffers.length == writer.arrayBuffersMaxlength) {
|
|
7641
|
+
flushArrayBuffers(writer);
|
|
7557
7642
|
}
|
|
7558
|
-
|
|
7643
|
+
writer.arrayBuffers.push(array.buffer);
|
|
7559
7644
|
}
|
|
7560
7645
|
|
|
7561
7646
|
getData() {
|
|
7562
|
-
|
|
7563
|
-
|
|
7564
|
-
|
|
7647
|
+
const writer = this;
|
|
7648
|
+
if (!writer.blob) {
|
|
7649
|
+
if (writer.arrayBuffers.length) {
|
|
7650
|
+
flushArrayBuffers(writer);
|
|
7565
7651
|
}
|
|
7566
|
-
|
|
7567
|
-
initArrayBuffers(
|
|
7652
|
+
writer.blob = writer.pendingBlob;
|
|
7653
|
+
initArrayBuffers(writer);
|
|
7568
7654
|
}
|
|
7569
|
-
return
|
|
7655
|
+
return writer.blob;
|
|
7570
7656
|
}
|
|
7571
7657
|
}
|
|
7572
7658
|
|
|
@@ -7584,78 +7670,38 @@
|
|
|
7584
7670
|
|
|
7585
7671
|
constructor(readableStream) {
|
|
7586
7672
|
this.readableStream = readableStream;
|
|
7587
|
-
this.reader = readableStream.getReader();
|
|
7588
7673
|
this.size = Infinity;
|
|
7589
|
-
this.index = 0;
|
|
7590
|
-
this.currentSize = 0;
|
|
7591
|
-
this.pendingValue = new Uint8Array();
|
|
7592
7674
|
}
|
|
7593
7675
|
|
|
7594
|
-
init() {
|
|
7676
|
+
init(size) {
|
|
7677
|
+
this.size = size;
|
|
7595
7678
|
this.initialized = true;
|
|
7596
7679
|
}
|
|
7597
7680
|
|
|
7598
|
-
|
|
7599
|
-
|
|
7600
|
-
throw new Error(ERR_NOT_SEEKABLE_READER);
|
|
7601
|
-
}
|
|
7602
|
-
let data = new Uint8Array(length);
|
|
7603
|
-
let size = 0, done;
|
|
7604
|
-
do {
|
|
7605
|
-
const result = await this.reader.read();
|
|
7606
|
-
let { value } = result;
|
|
7607
|
-
done = result.done;
|
|
7608
|
-
if (value) {
|
|
7609
|
-
this.currentSize += value.length;
|
|
7610
|
-
} else {
|
|
7611
|
-
value = this.pendingValue;
|
|
7612
|
-
this.pendingValue = new Uint8Array();
|
|
7613
|
-
}
|
|
7614
|
-
if (this.pendingValue.length) {
|
|
7615
|
-
const newValue = new Uint8Array(this.pendingValue.length + value.length);
|
|
7616
|
-
newValue.set(this.pendingValue);
|
|
7617
|
-
newValue.set(value, this.pendingValue.length);
|
|
7618
|
-
this.pendingValue = new Uint8Array();
|
|
7619
|
-
value = newValue;
|
|
7620
|
-
}
|
|
7621
|
-
if (size + value.length > length) {
|
|
7622
|
-
data.set(value.subarray(0, length), size);
|
|
7623
|
-
this.pendingValue = value.subarray(length);
|
|
7624
|
-
size += length;
|
|
7625
|
-
} else {
|
|
7626
|
-
data.set(value, size);
|
|
7627
|
-
size += value.length;
|
|
7628
|
-
}
|
|
7629
|
-
} while (size < length && !done);
|
|
7630
|
-
if (done && this.size == Infinity) {
|
|
7631
|
-
this.size = this.currentSize;
|
|
7632
|
-
}
|
|
7633
|
-
if (this.size < length) {
|
|
7634
|
-
data = data.slice(0, this.size);
|
|
7635
|
-
length = this.size;
|
|
7636
|
-
}
|
|
7637
|
-
this.index += length;
|
|
7638
|
-
return data;
|
|
7681
|
+
getStream() {
|
|
7682
|
+
return this.readableStream;
|
|
7639
7683
|
}
|
|
7640
7684
|
}
|
|
7641
7685
|
|
|
7642
7686
|
class WritableStreamWriter extends Writer {
|
|
7643
7687
|
|
|
7644
|
-
constructor(
|
|
7688
|
+
constructor(writable) {
|
|
7645
7689
|
super();
|
|
7646
|
-
|
|
7647
|
-
|
|
7690
|
+
const writer = this;
|
|
7691
|
+
writer.writable = writable;
|
|
7648
7692
|
}
|
|
7649
7693
|
|
|
7650
7694
|
async writeUint8Array(array) {
|
|
7651
7695
|
await this.writer.ready;
|
|
7652
|
-
return this.
|
|
7696
|
+
return this.writable.getWriter().write(array);
|
|
7697
|
+
}
|
|
7698
|
+
|
|
7699
|
+
getStream() {
|
|
7700
|
+
return this.writable;
|
|
7653
7701
|
}
|
|
7654
7702
|
|
|
7655
7703
|
async getData() {
|
|
7656
|
-
|
|
7657
|
-
await this.writer.close();
|
|
7658
|
-
return this.writableStream;
|
|
7704
|
+
return this.writable;
|
|
7659
7705
|
}
|
|
7660
7706
|
}
|
|
7661
7707
|
|
|
@@ -7663,15 +7709,16 @@
|
|
|
7663
7709
|
|
|
7664
7710
|
constructor(url, options) {
|
|
7665
7711
|
super();
|
|
7666
|
-
|
|
7667
|
-
|
|
7668
|
-
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
delete
|
|
7673
|
-
delete
|
|
7674
|
-
delete
|
|
7712
|
+
const reader = this;
|
|
7713
|
+
reader.url = url;
|
|
7714
|
+
reader.preventHeadRequest = options.preventHeadRequest;
|
|
7715
|
+
reader.useRangeHeader = options.useRangeHeader;
|
|
7716
|
+
reader.forceRangeRequests = options.forceRangeRequests;
|
|
7717
|
+
reader.options = Object.assign({}, options);
|
|
7718
|
+
delete reader.options.preventHeadRequest;
|
|
7719
|
+
delete reader.options.useRangeHeader;
|
|
7720
|
+
delete reader.options.forceRangeRequests;
|
|
7721
|
+
delete reader.options.useXHR;
|
|
7675
7722
|
}
|
|
7676
7723
|
|
|
7677
7724
|
async init() {
|
|
@@ -7688,11 +7735,12 @@
|
|
|
7688
7735
|
|
|
7689
7736
|
constructor(url, options) {
|
|
7690
7737
|
super();
|
|
7691
|
-
|
|
7692
|
-
|
|
7693
|
-
|
|
7694
|
-
|
|
7695
|
-
|
|
7738
|
+
const reader = this;
|
|
7739
|
+
reader.url = url;
|
|
7740
|
+
reader.preventHeadRequest = options.preventHeadRequest;
|
|
7741
|
+
reader.useRangeHeader = options.useRangeHeader;
|
|
7742
|
+
reader.forceRangeRequests = options.forceRangeRequests;
|
|
7743
|
+
reader.options = options;
|
|
7696
7744
|
}
|
|
7697
7745
|
|
|
7698
7746
|
async init() {
|
|
@@ -7895,10 +7943,11 @@
|
|
|
7895
7943
|
|
|
7896
7944
|
writeUint8Array(array) {
|
|
7897
7945
|
super.writeUint8Array(array);
|
|
7898
|
-
const
|
|
7899
|
-
|
|
7900
|
-
|
|
7901
|
-
|
|
7946
|
+
const writer = this;
|
|
7947
|
+
const previousArray = writer.array;
|
|
7948
|
+
writer.array = new Uint8Array(previousArray.length + array.length);
|
|
7949
|
+
writer.array.set(previousArray);
|
|
7950
|
+
writer.array.set(array, previousArray.length);
|
|
7902
7951
|
}
|
|
7903
7952
|
|
|
7904
7953
|
getData() {
|
|
@@ -8067,89 +8116,6 @@
|
|
|
8067
8116
|
}
|
|
8068
8117
|
}
|
|
8069
8118
|
|
|
8070
|
-
/*
|
|
8071
|
-
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
8072
|
-
|
|
8073
|
-
Redistribution and use in source and binary forms, with or without
|
|
8074
|
-
modification, are permitted provided that the following conditions are met:
|
|
8075
|
-
|
|
8076
|
-
1. Redistributions of source code must retain the above copyright notice,
|
|
8077
|
-
this list of conditions and the following disclaimer.
|
|
8078
|
-
|
|
8079
|
-
2. Redistributions in binary form must reproduce the above copyright
|
|
8080
|
-
notice, this list of conditions and the following disclaimer in
|
|
8081
|
-
the documentation and/or other materials provided with the distribution.
|
|
8082
|
-
|
|
8083
|
-
3. The names of the authors may not be used to endorse or promote products
|
|
8084
|
-
derived from this software without specific prior written permission.
|
|
8085
|
-
|
|
8086
|
-
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
8087
|
-
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
8088
|
-
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
8089
|
-
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
8090
|
-
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
8091
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
8092
|
-
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
8093
|
-
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
8094
|
-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
8095
|
-
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8096
|
-
*/
|
|
8097
|
-
|
|
8098
|
-
const MINIMUM_CHUNK_SIZE = 64;
|
|
8099
|
-
const ERR_ABORT = "Abort error";
|
|
8100
|
-
|
|
8101
|
-
async function processData(codec, reader, writer, offset, inputLengthGetter, config, options) {
|
|
8102
|
-
const chunkSize = Math.max(config.chunkSize, MINIMUM_CHUNK_SIZE);
|
|
8103
|
-
const signal = options.signal;
|
|
8104
|
-
let length = 0;
|
|
8105
|
-
let chunkOffset = 0;
|
|
8106
|
-
|
|
8107
|
-
const result = new Promise((resolve, reject) => {
|
|
8108
|
-
codec.pull = async () => {
|
|
8109
|
-
testAborted(signal, codec);
|
|
8110
|
-
const inputLength = inputLengthGetter();
|
|
8111
|
-
let currentChunkOffset = chunkOffset;
|
|
8112
|
-
chunkOffset += chunkSize;
|
|
8113
|
-
const value = await reader.readUint8Array(currentChunkOffset + offset, Math.min(chunkSize, inputLength - currentChunkOffset));
|
|
8114
|
-
const done = chunkOffset > inputLength;
|
|
8115
|
-
return { value, done };
|
|
8116
|
-
};
|
|
8117
|
-
codec.ondata = async ({ value, done }) => {
|
|
8118
|
-
try {
|
|
8119
|
-
testAborted(signal, codec);
|
|
8120
|
-
const inputLength = inputLengthGetter();
|
|
8121
|
-
const { data, signature } = value;
|
|
8122
|
-
if (data && data.length) {
|
|
8123
|
-
length += data.length;
|
|
8124
|
-
await writer.writeUint8Array(data);
|
|
8125
|
-
}
|
|
8126
|
-
if (options.onprogress) {
|
|
8127
|
-
try {
|
|
8128
|
-
options.onprogress(chunkOffset, inputLength);
|
|
8129
|
-
} catch (error) {
|
|
8130
|
-
// ignored
|
|
8131
|
-
}
|
|
8132
|
-
}
|
|
8133
|
-
if (done) {
|
|
8134
|
-
resolve({ signature, length });
|
|
8135
|
-
}
|
|
8136
|
-
} catch (error) {
|
|
8137
|
-
reject(error);
|
|
8138
|
-
}
|
|
8139
|
-
};
|
|
8140
|
-
codec.onerror = reject;
|
|
8141
|
-
});
|
|
8142
|
-
await codec.start();
|
|
8143
|
-
return result;
|
|
8144
|
-
}
|
|
8145
|
-
|
|
8146
|
-
function testAborted(signal, codec) {
|
|
8147
|
-
if (signal && signal.aborted) {
|
|
8148
|
-
codec.abort();
|
|
8149
|
-
throw new Error(ERR_ABORT);
|
|
8150
|
-
}
|
|
8151
|
-
}
|
|
8152
|
-
|
|
8153
8119
|
/*
|
|
8154
8120
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
8155
8121
|
|
|
@@ -8435,7 +8401,15 @@
|
|
|
8435
8401
|
throw new Error(ERR_ENCRYPTED);
|
|
8436
8402
|
}
|
|
8437
8403
|
}
|
|
8438
|
-
const
|
|
8404
|
+
const dataOffset = offset + 30 + localDirectory.filenameLength + localDirectory.extraFieldLength;
|
|
8405
|
+
const size = () => compressedSize;
|
|
8406
|
+
const readable = reader.getStream({ offset: dataOffset, size, chunkSize: getChunkSize(config) });
|
|
8407
|
+
const writable = writer.getStream();
|
|
8408
|
+
const signal = getOptionValue$1(zipEntry, options, "signal");
|
|
8409
|
+
if (!writer.initialized) {
|
|
8410
|
+
await writer.init();
|
|
8411
|
+
}
|
|
8412
|
+
await runCodec(config.Inflate, readable, writable, {
|
|
8439
8413
|
codecType: CODEC_INFLATE,
|
|
8440
8414
|
password,
|
|
8441
8415
|
zipCrypto,
|
|
@@ -8447,13 +8421,7 @@
|
|
|
8447
8421
|
encrypted,
|
|
8448
8422
|
useWebWorkers: getOptionValue$1(zipEntry, options, "useWebWorkers"),
|
|
8449
8423
|
useCompressionStream: getOptionValue$1(zipEntry, options, "useCompressionStream")
|
|
8450
|
-
}, config);
|
|
8451
|
-
if (!writer.initialized) {
|
|
8452
|
-
await writer.init();
|
|
8453
|
-
}
|
|
8454
|
-
const signal = getOptionValue$1(zipEntry, options, "signal");
|
|
8455
|
-
const dataOffset = offset + 30 + localDirectory.filenameLength + localDirectory.extraFieldLength;
|
|
8456
|
-
await processData(codec, reader, writer, dataOffset, () => compressedSize, config, { onprogress: options.onprogress, signal });
|
|
8424
|
+
}, config, { signal, onprogress: options.onprogress, size });
|
|
8457
8425
|
return writer.getData();
|
|
8458
8426
|
}
|
|
8459
8427
|
}
|
|
@@ -8869,9 +8837,6 @@
|
|
|
8869
8837
|
}
|
|
8870
8838
|
let maximumCompressedSize = 0;
|
|
8871
8839
|
let keepOrder = getOptionValue(zipWriter, options, "keepOrder");
|
|
8872
|
-
if (keepOrder === undefined) {
|
|
8873
|
-
keepOrder = true;
|
|
8874
|
-
}
|
|
8875
8840
|
let uncompressedSize = 0;
|
|
8876
8841
|
let msDosCompatible = getOptionValue(zipWriter, options, "msDosCompatible");
|
|
8877
8842
|
if (msDosCompatible === undefined) {
|
|
@@ -8945,8 +8910,8 @@
|
|
|
8945
8910
|
}
|
|
8946
8911
|
|
|
8947
8912
|
async function getFileEntry(zipWriter, name, reader, options) {
|
|
8948
|
-
const files = zipWriter
|
|
8949
|
-
const
|
|
8913
|
+
const { files, writer } = zipWriter;
|
|
8914
|
+
const streamWriter = writer.getStream().getWriter();
|
|
8950
8915
|
const previousFileEntry = Array.from(files.values()).pop();
|
|
8951
8916
|
let fileEntry = {};
|
|
8952
8917
|
let bufferedWrite;
|
|
@@ -8972,7 +8937,7 @@
|
|
|
8972
8937
|
}
|
|
8973
8938
|
fileWriter = writer;
|
|
8974
8939
|
}
|
|
8975
|
-
fileEntry = await createFileEntry(reader, fileWriter, zipWriter.config, options);
|
|
8940
|
+
fileEntry = await createFileEntry(reader, fileWriter.getStream(), fileWriter.getStream().getWriter(), zipWriter.config, options);
|
|
8976
8941
|
fileEntry.lock = lockCurrentFileEntry;
|
|
8977
8942
|
files.set(name, fileEntry);
|
|
8978
8943
|
fileEntry.filename = name;
|
|
@@ -9002,10 +8967,10 @@
|
|
|
9002
8967
|
setUint32(arrayBufferView, 18, fileEntry.compressedSize);
|
|
9003
8968
|
setUint32(arrayBufferView, 22, fileEntry.uncompressedSize);
|
|
9004
8969
|
}
|
|
9005
|
-
await
|
|
8970
|
+
await writeUint8Array(streamWriter, new Uint8Array(arrayBuffer));
|
|
9006
8971
|
indexWrittenData = headerLength;
|
|
9007
8972
|
}
|
|
9008
|
-
await writeBlob(
|
|
8973
|
+
await writeBlob(streamWriter, blob, indexWrittenData);
|
|
9009
8974
|
delete fileEntry.writingBufferedData;
|
|
9010
8975
|
}
|
|
9011
8976
|
fileEntry.offset = zipWriter.offset;
|
|
@@ -9034,7 +8999,7 @@
|
|
|
9034
8999
|
}
|
|
9035
9000
|
}
|
|
9036
9001
|
|
|
9037
|
-
async function createFileEntry(reader,
|
|
9002
|
+
async function createFileEntry(reader, writable, streamWriter, config, options) {
|
|
9038
9003
|
const {
|
|
9039
9004
|
rawFilename,
|
|
9040
9005
|
lastAccessDate,
|
|
@@ -9181,7 +9146,11 @@
|
|
|
9181
9146
|
let result;
|
|
9182
9147
|
let compressedSize = 0;
|
|
9183
9148
|
if (reader) {
|
|
9184
|
-
|
|
9149
|
+
await writeUint8Array(streamWriter, localHeaderArray);
|
|
9150
|
+
fileEntry.dataWritten = true;
|
|
9151
|
+
const size = () => reader.size;
|
|
9152
|
+
const readable = reader.getStream({ offset: 0, size, chunkSize: getChunkSize(config) });
|
|
9153
|
+
result = await runCodec(config.Deflate, readable, writable, {
|
|
9185
9154
|
codecType: CODEC_DEFLATE,
|
|
9186
9155
|
level,
|
|
9187
9156
|
password,
|
|
@@ -9193,14 +9162,11 @@
|
|
|
9193
9162
|
encrypted,
|
|
9194
9163
|
useWebWorkers,
|
|
9195
9164
|
useCompressionStream
|
|
9196
|
-
}, config);
|
|
9197
|
-
await writer.writeUint8Array(localHeaderArray);
|
|
9198
|
-
fileEntry.dataWritten = true;
|
|
9199
|
-
result = await processData(codec, reader, writer, 0, () => reader.size, config, { onprogress, signal });
|
|
9165
|
+
}, config, { signal, onprogress, size });
|
|
9200
9166
|
uncompressedSize = fileEntry.uncompressedSize = reader.size;
|
|
9201
9167
|
compressedSize = result.length;
|
|
9202
9168
|
} else {
|
|
9203
|
-
await
|
|
9169
|
+
await writeUint8Array(streamWriter, localHeaderArray);
|
|
9204
9170
|
fileEntry.dataWritten = true;
|
|
9205
9171
|
}
|
|
9206
9172
|
let dataDescriptorArray = new Uint8Array(0);
|
|
@@ -9244,7 +9210,7 @@
|
|
|
9244
9210
|
}
|
|
9245
9211
|
}
|
|
9246
9212
|
if (dataDescriptor) {
|
|
9247
|
-
await
|
|
9213
|
+
await writeUint8Array(streamWriter, dataDescriptorArray);
|
|
9248
9214
|
}
|
|
9249
9215
|
const length = localHeaderArray.length + compressedSize + dataDescriptorArray.length;
|
|
9250
9216
|
Object.assign(fileEntry, { compressedSize, lastModDate, rawLastModDate, creationDate, lastAccessDate, encrypted, length });
|
|
@@ -9252,8 +9218,8 @@
|
|
|
9252
9218
|
}
|
|
9253
9219
|
|
|
9254
9220
|
async function closeFile(zipWriter, comment, options) {
|
|
9255
|
-
const
|
|
9256
|
-
const
|
|
9221
|
+
const { files } = zipWriter;
|
|
9222
|
+
const streamWriter = zipWriter.writer.getStream().getWriter();
|
|
9257
9223
|
let offset = 0;
|
|
9258
9224
|
let directoryDataLength = 0;
|
|
9259
9225
|
let directoryOffset = zipWriter.offset;
|
|
@@ -9368,9 +9334,9 @@
|
|
|
9368
9334
|
setUint16(directoryView, offset + 10, filesLength);
|
|
9369
9335
|
setUint32(directoryView, offset + 12, directoryDataLength);
|
|
9370
9336
|
setUint32(directoryView, offset + 16, directoryOffset);
|
|
9371
|
-
await
|
|
9337
|
+
await writeUint8Array(streamWriter, directoryArray);
|
|
9372
9338
|
if (comment && comment.length) {
|
|
9373
|
-
await
|
|
9339
|
+
await writeUint8Array(streamWriter, comment);
|
|
9374
9340
|
}
|
|
9375
9341
|
}
|
|
9376
9342
|
|
|
@@ -9391,20 +9357,25 @@
|
|
|
9391
9357
|
}
|
|
9392
9358
|
}
|
|
9393
9359
|
|
|
9394
|
-
async function writeBlob(
|
|
9360
|
+
async function writeBlob(streamWriter, blob, start = 0) {
|
|
9395
9361
|
const blockSize = 512 * 1024 * 1024;
|
|
9396
9362
|
await writeSlice();
|
|
9397
9363
|
|
|
9398
9364
|
async function writeSlice() {
|
|
9399
9365
|
if (start < blob.size) {
|
|
9400
9366
|
const arrayBuffer = await sliceAsArrayBuffer(blob, start, start + blockSize);
|
|
9401
|
-
await
|
|
9367
|
+
await writeUint8Array(streamWriter, new Uint8Array(arrayBuffer));
|
|
9402
9368
|
start += blockSize;
|
|
9403
9369
|
await writeSlice();
|
|
9404
9370
|
}
|
|
9405
9371
|
}
|
|
9406
9372
|
}
|
|
9407
9373
|
|
|
9374
|
+
async function writeUint8Array(streamWriter, array) {
|
|
9375
|
+
await streamWriter.ready;
|
|
9376
|
+
await streamWriter.write(array);
|
|
9377
|
+
}
|
|
9378
|
+
|
|
9408
9379
|
function getTimeNTFS(date) {
|
|
9409
9380
|
if (date) {
|
|
9410
9381
|
return ((BigInt(date.getTime()) + BigInt(11644473600000)) * BigInt(10000));
|