neozipkit 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +410 -186
- package/contracts/ABI.txt +889 -0
- package/contracts/Bytecode.txt +1 -0
- package/contracts/COMPILATION_NOTES.md +59 -0
- package/contracts/QUICK_DEPLOY.md +286 -0
- package/contracts/README.md +235 -131
- package/contracts/VERIFICATION.md +308 -0
- package/contracts/deploy-interactive.js +448 -0
- package/contracts/deployment-arbitrum-sepolia.json +12 -0
- package/contracts/deployment-arbitrum.json +12 -0
- package/contracts/deployment-eth-sepolia.json +12 -0
- package/contracts/hardhat.config.js +114 -0
- package/contracts/package.json +20 -0
- package/contracts/scripts/compile-and-extract.js +119 -0
- package/contracts/scripts/verify-contract.js +223 -0
- package/contracts/src/{NZIP-NFT-Private.sol → NZIP-NFT-v2.0.sol} +66 -151
- package/contracts/src/NZIP-NFT.sol +9 -15
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts +67 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.js +313 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.js.map +1 -0
- package/dist/blockchain/browser/WalletManagerBrowser.d.ts +98 -0
- package/dist/blockchain/browser/WalletManagerBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/WalletManagerBrowser.js +434 -0
- package/dist/blockchain/browser/WalletManagerBrowser.js.map +1 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts +58 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.js +317 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.js.map +1 -0
- package/dist/blockchain/browser/index.d.ts +11 -0
- package/dist/blockchain/browser/index.d.ts.map +1 -0
- package/dist/blockchain/browser/index.js +16 -0
- package/dist/blockchain/browser/index.js.map +1 -0
- package/dist/blockchain/core/WalletManager.d.ts +124 -0
- package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitWallet.js → core/WalletManager.js} +157 -177
- package/dist/blockchain/core/WalletManager.js.map +1 -0
- package/dist/blockchain/{ZipKitMinter.d.ts → core/ZipkitMinter.d.ts} +46 -11
- package/dist/blockchain/core/ZipkitMinter.d.ts.map +1 -0
- package/dist/blockchain/core/ZipkitMinter.js +548 -0
- package/dist/blockchain/core/ZipkitMinter.js.map +1 -0
- package/dist/blockchain/{ZipKitOTS.d.ts → core/ZipkitOTS.d.ts} +6 -15
- package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitOTS.js → core/ZipkitOTS.js} +26 -84
- package/dist/blockchain/core/ZipkitOTS.js.map +1 -0
- package/dist/blockchain/core/ZipkitVerifier.d.ts +177 -0
- package/dist/blockchain/core/ZipkitVerifier.d.ts.map +1 -0
- package/dist/blockchain/core/ZipkitVerifier.js +632 -0
- package/dist/blockchain/core/ZipkitVerifier.js.map +1 -0
- package/dist/blockchain/core/contracts.d.ts +83 -0
- package/dist/blockchain/core/contracts.d.ts.map +1 -0
- package/dist/blockchain/core/contracts.js +341 -0
- package/dist/blockchain/core/contracts.js.map +1 -0
- package/dist/blockchain/core/index.d.ts +12 -0
- package/dist/blockchain/core/index.d.ts.map +1 -0
- package/dist/blockchain/core/index.js +59 -0
- package/dist/blockchain/core/index.js.map +1 -0
- package/dist/blockchain/index.d.ts +11 -7
- package/dist/blockchain/index.d.ts.map +1 -0
- package/dist/blockchain/index.js +18 -34
- package/dist/blockchain/index.js.map +1 -0
- package/dist/blockchain/node/WalletManagerNode.d.ts +47 -0
- package/dist/blockchain/node/WalletManagerNode.d.ts.map +1 -0
- package/dist/blockchain/node/WalletManagerNode.js +203 -0
- package/dist/blockchain/node/WalletManagerNode.js.map +1 -0
- package/dist/blockchain/node/index.d.ts +12 -0
- package/dist/blockchain/node/index.d.ts.map +1 -0
- package/dist/blockchain/node/index.js +24 -0
- package/dist/blockchain/node/index.js.map +1 -0
- package/dist/browser/ZipkitBrowser.d.ts +27 -0
- package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
- package/dist/browser/{ZipKitBrowser.js → ZipkitBrowser.js} +96 -43
- package/dist/browser/ZipkitBrowser.js.map +1 -0
- package/dist/browser/index.d.ts +12 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +42 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser-esm/index.d.ts +12 -0
- package/dist/browser-esm/index.js +59559 -0
- package/dist/browser-esm/index.js.map +7 -0
- package/dist/browser-umd/index.d.ts +12 -0
- package/dist/browser-umd/index.js +59576 -0
- package/dist/browser-umd/index.js.map +7 -0
- package/dist/browser-umd/index.min.js +63 -0
- package/dist/browser.d.ts +8 -14
- package/dist/browser.js +13 -28
- package/dist/core/ZipCompress.d.ts +99 -0
- package/dist/core/ZipCompress.d.ts.map +1 -0
- package/dist/core/ZipCompress.js +309 -0
- package/dist/core/ZipCompress.js.map +1 -0
- package/dist/core/ZipDecompress.d.ts +58 -0
- package/dist/core/ZipDecompress.d.ts.map +1 -0
- package/dist/core/ZipDecompress.js +172 -0
- package/dist/core/ZipDecompress.js.map +1 -0
- package/dist/{shared → core}/ZipEntry.d.ts +8 -1
- package/dist/core/ZipEntry.d.ts.map +1 -0
- package/dist/{shared → core}/ZipEntry.js +225 -82
- package/dist/core/ZipEntry.js.map +1 -0
- package/dist/core/Zipkit.d.ts +315 -0
- package/dist/core/Zipkit.d.ts.map +1 -0
- package/dist/core/Zipkit.js +647 -0
- package/dist/core/Zipkit.js.map +1 -0
- package/dist/core/components/HashCalculator.d.ts +138 -0
- package/dist/core/components/HashCalculator.d.ts.map +1 -0
- package/dist/core/components/HashCalculator.js +360 -0
- package/dist/core/components/HashCalculator.js.map +1 -0
- package/dist/core/components/Logger.d.ts +73 -0
- package/dist/core/components/Logger.d.ts.map +1 -0
- package/dist/core/components/Logger.js +156 -0
- package/dist/core/components/Logger.js.map +1 -0
- package/dist/core/components/ProgressTracker.d.ts +43 -0
- package/dist/core/components/ProgressTracker.d.ts.map +1 -0
- package/dist/core/components/ProgressTracker.js +112 -0
- package/dist/core/components/ProgressTracker.js.map +1 -0
- package/dist/{shared → core}/components/Support.d.ts +1 -0
- package/dist/core/components/Support.d.ts.map +1 -0
- package/dist/{shared → core}/components/Support.js +1 -0
- package/dist/core/components/Support.js.map +1 -0
- package/dist/{shared → core}/components/Util.d.ts +7 -2
- package/dist/core/components/Util.d.ts.map +1 -0
- package/dist/{shared → core}/components/Util.js +14 -34
- package/dist/core/components/Util.js.map +1 -0
- package/dist/{shared → core}/constants/Errors.d.ts +1 -2
- package/dist/core/constants/Errors.d.ts.map +1 -0
- package/dist/{shared → core}/constants/Errors.js +1 -3
- package/dist/core/constants/Errors.js.map +1 -0
- package/dist/{shared → core}/constants/Headers.d.ts +3 -0
- package/dist/core/constants/Headers.d.ts.map +1 -0
- package/dist/{shared → core}/constants/Headers.js +20 -17
- package/dist/core/constants/Headers.js.map +1 -0
- package/dist/core/encryption/Manager.d.ts +58 -0
- package/dist/core/encryption/Manager.d.ts.map +1 -0
- package/dist/core/encryption/Manager.js +121 -0
- package/dist/core/encryption/Manager.js.map +1 -0
- package/dist/core/encryption/ZipCrypto.d.ts +172 -0
- package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
- package/dist/core/encryption/ZipCrypto.js +554 -0
- package/dist/core/encryption/ZipCrypto.js.map +1 -0
- package/dist/core/encryption/index.d.ts +9 -0
- package/dist/core/encryption/index.d.ts.map +1 -0
- package/dist/core/encryption/index.js +17 -0
- package/dist/core/encryption/index.js.map +1 -0
- package/dist/core/encryption/types.d.ts +29 -0
- package/dist/core/encryption/types.d.ts.map +1 -0
- package/dist/core/encryption/types.js +12 -0
- package/dist/core/encryption/types.js.map +1 -0
- package/dist/core/index.d.ts +24 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +57 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/version.d.ts +5 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +31 -0
- package/dist/core/version.js.map +1 -0
- package/dist/index.d.ts +8 -18
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -35
- package/dist/index.js.map +1 -0
- package/dist/node/ZipCompressNode.d.ts +123 -0
- package/dist/node/ZipCompressNode.d.ts.map +1 -0
- package/dist/node/ZipCompressNode.js +576 -0
- package/dist/node/ZipCompressNode.js.map +1 -0
- package/dist/node/ZipDecompressNode.d.ts +120 -0
- package/dist/node/ZipDecompressNode.d.ts.map +1 -0
- package/dist/node/ZipDecompressNode.js +461 -0
- package/dist/node/ZipDecompressNode.js.map +1 -0
- package/dist/node/ZipkitNode.d.ts +406 -0
- package/dist/node/ZipkitNode.d.ts.map +1 -0
- package/dist/node/ZipkitNode.js +1305 -0
- package/dist/node/ZipkitNode.js.map +1 -0
- package/dist/node/index.d.ts +26 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +65 -0
- package/dist/node/index.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +36 -1
- package/dist/types/index.js.map +1 -0
- package/examples/README.md +269 -0
- package/examples/blockchain-tokenize.ts +354 -0
- package/examples/create-zip.ts +172 -0
- package/examples/extract-zip.ts +158 -0
- package/examples/list-zip.ts +161 -0
- package/examples/test-files/data.json +116 -0
- package/examples/test-files/document.md +80 -0
- package/examples/test-files/document.txt +2 -0
- package/examples/test-files/file1.txt +48 -0
- package/examples/test-files/file2.txt +80 -0
- package/examples/tsconfig.json +44 -0
- package/examples/unzip-token.ts +491 -0
- package/examples/verify-tokenized-zip.ts +305 -0
- package/examples/zip-token.ts +604 -0
- package/package.json +108 -24
- package/src/blockchain/README.md +59 -66
- package/src/{browser/TokenVerifierBrowser.ts-remove → blockchain/browser/TokenVerifierBrowser.ts} +125 -79
- package/src/blockchain/browser/WalletManagerBrowser.ts +486 -0
- package/src/blockchain/browser/ZipkitMinterBrowser.ts +400 -0
- package/src/blockchain/browser/index.ts +13 -0
- package/src/blockchain/{ZipKitWallet.ts → core/WalletManager.ts} +241 -143
- package/src/blockchain/core/ZipkitMinter.ts +716 -0
- package/src/blockchain/{ZipKitOTS.ts → core/ZipkitOTS.ts} +28 -62
- package/src/blockchain/core/ZipkitVerifier.ts +853 -0
- package/src/blockchain/core/contracts.ts +370 -0
- package/src/blockchain/core/index.ts +71 -0
- package/src/blockchain/index.ts +21 -55
- package/src/blockchain/node/WalletManagerNode.ts +171 -0
- package/src/blockchain/node/index.ts +40 -0
- package/src/browser/{ZipKitBrowser.ts → ZipkitBrowser.ts} +104 -41
- package/src/browser/index.esm.ts +37 -0
- package/src/browser/index.ts +25 -0
- package/src/core/ZipCompress.ts +398 -0
- package/src/core/ZipDecompress.ts +212 -0
- package/src/{shared → core}/ZipEntry.ts +240 -90
- package/src/core/Zipkit.ts +794 -0
- package/src/core/components/HashCalculator.ts +384 -0
- package/src/core/components/Logger.ts +180 -0
- package/src/core/components/ProgressTracker.ts +134 -0
- package/src/{shared → core}/components/Util.ts +12 -34
- package/src/{shared → core}/constants/Errors.ts +0 -4
- package/src/{shared → core}/constants/Headers.ts +19 -17
- package/src/core/encryption/Manager.ts +137 -0
- package/src/core/encryption/ZipCrypto.ts +650 -0
- package/src/core/encryption/index.ts +15 -0
- package/src/core/encryption/types.ts +33 -0
- package/src/core/index.ts +34 -0
- package/src/core/version.ts +33 -0
- package/src/index.ts +54 -25
- package/src/node/ZipCompressNode.ts +632 -0
- package/src/node/ZipDecompressNode.ts +508 -0
- package/src/node/ZipkitNode.ts +1559 -0
- package/src/node/index.ts +69 -0
- package/src/types/index.ts +131 -1
- package/src/types/modules.d.ts +1 -11
- package/src/types/opentimestamps.d.ts +1 -23
- package/contracts/INTEGRATION.md +0 -338
- package/contracts/NETWORKS.md +0 -156
- package/contracts/NZIP-NFT-bytecode.txt +0 -1
- package/contracts/constants.ts +0 -952
- package/contracts/deploy-bytecode.mjs +0 -94
- package/dist/blockchain/CertificateToken.d.ts +0 -48
- package/dist/blockchain/CertificateToken.js +0 -386
- package/dist/blockchain/ZipKitMinter.js +0 -347
- package/dist/blockchain/ZipKitNFT.d.ts +0 -3
- package/dist/blockchain/ZipKitNFT.js +0 -7
- package/dist/blockchain/ZipKitVerifier.d.ts +0 -69
- package/dist/blockchain/ZipKitVerifier.js +0 -289
- package/dist/blockchain/ZipKitWallet.d.ts +0 -69
- package/dist/blockchain/contracts.d.ts +0 -14
- package/dist/blockchain/contracts.js +0 -77
- package/dist/blockchain/types.d.ts +0 -47
- package/dist/blockchain/types.js +0 -30
- package/dist/browser/ZipKitBrowser.d.ts +0 -18
- package/dist/browser/ZipKitStampBrowser.d.ts +0 -2
- package/dist/browser/ZipKitStampBrowser.js +0 -12
- package/dist/browser-index.d.ts +0 -18
- package/dist/browser-index.js +0 -57
- package/dist/server/ZipKitServer.d.ts +0 -74
- package/dist/server/ZipKitServer.js +0 -310
- package/dist/shared/ZipKit.d.ts +0 -243
- package/dist/shared/ZipKit.js +0 -772
- package/dist/shared/components/CertificateOTS.d.ts +0 -15
- package/dist/shared/components/CertificateOTS.js +0 -116
- package/dist/shared/components/FileSys.d.ts +0 -2
- package/dist/shared/components/FileSys.js +0 -113
- package/dist/shared/components/HashAccumulator.d.ts +0 -55
- package/dist/shared/components/HashAccumulator.js +0 -100
- package/dist/shared/components/ZipCrypto.d.ts +0 -3
- package/dist/shared/components/ZipCrypto.js +0 -78
- package/dist/shared/components/merkleTree.d.ts +0 -66
- package/dist/shared/components/merkleTree.js +0 -136
- package/dist/shared/types/index.d.ts +0 -21
- package/dist/shared/types/index.js +0 -3
- package/dist/shared/types.d.ts +0 -33
- package/dist/shared/types.js +0 -8
- package/dist/shared/version.d.ts +0 -2
- package/dist/shared/version.js +0 -6
- package/src/blockchain/CertificateToken.ts +0 -444
- package/src/blockchain/ZipKitMinter.ts +0 -470
- package/src/blockchain/ZipKitNFT.ts +0 -12
- package/src/blockchain/ZipKitVerifier.ts +0 -382
- package/src/blockchain/contracts.ts +0 -88
- package/src/blockchain/types.ts +0 -91
- package/src/browser/CertificateGeneratorBrowser.ts-remove +0 -498
- package/src/browser/ZipKitStampBrowser.ts +0 -9
- package/src/browser-index.ts +0 -36
- package/src/server/README.md +0 -25
- package/src/server/ZipKitServer.ts +0 -305
- package/src/shared/ZipKit.ts +0 -881
- package/src/shared/components/CertificateOTS.ts +0 -132
- package/src/shared/components/FileSys.ts +0 -87
- package/src/shared/components/HashAccumulator.ts +0 -113
- package/src/shared/components/ZipCrypto.ts +0 -91
- package/src/shared/components/merkleTree.ts +0 -162
- package/src/shared/types/index.ts +0 -25
- package/src/shared/types/modules.d.ts +0 -22
- package/src/shared/types/opentimestamps.d.ts +0 -23
- package/src/shared/types.d.ts +0 -8
- package/src/shared/types.ts +0 -43
- package/src/shared/version.ts +0 -3
- /package/src/{shared → core}/components/Support.ts +0 -0
|
@@ -8,9 +8,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
9
|
};
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ZipEntry = void 0;
|
|
11
12
|
const Errors_1 = __importDefault(require("./constants/Errors"));
|
|
12
13
|
const Headers_1 = require("./constants/Headers");
|
|
13
|
-
const
|
|
14
|
+
const Logger_1 = require("./components/Logger");
|
|
15
|
+
const ZipCrypto_1 = require("./encryption/ZipCrypto");
|
|
14
16
|
const VER_ENCODING = 30;
|
|
15
17
|
const VER_EXTRACT = 10; // Version needed to extract (1.0)
|
|
16
18
|
/**
|
|
@@ -24,7 +26,7 @@ class ZipEntry {
|
|
|
24
26
|
* @param debug - Enable debug logging
|
|
25
27
|
*/
|
|
26
28
|
constructor(fname, comment, debug) {
|
|
27
|
-
this.debug =
|
|
29
|
+
this.debug = true;
|
|
28
30
|
this.verMadeBy = 0; // Read Version Made By
|
|
29
31
|
this.verExtract = 0; // Read Version Needed to Extract
|
|
30
32
|
this.bitFlags = 0; // General purpose bit flag
|
|
@@ -58,6 +60,13 @@ class ZipEntry {
|
|
|
58
60
|
this.uid = null; // User ID
|
|
59
61
|
this.gid = null; // Group ID
|
|
60
62
|
this.sha256 = null; // SHA-256 hash of the file
|
|
63
|
+
// Symbolic link data
|
|
64
|
+
this.isSymlink = false; // Entry is a symbolic link
|
|
65
|
+
this.linkTarget = null; // Target path for symbolic links
|
|
66
|
+
// Hard link data
|
|
67
|
+
this.isHardLink = false; // Entry is a hard link
|
|
68
|
+
this.originalEntry = null; // Original entry name for hard links
|
|
69
|
+
this.inode = null; // Inode number for hard links
|
|
61
70
|
this.isMSDOS = this.platform === null;
|
|
62
71
|
this.isUnixLike = this.platform != null && this.platform !== 'win32';
|
|
63
72
|
this.isMacOS = this.platform != null && this.platform === 'darwin';
|
|
@@ -147,13 +156,13 @@ class ZipEntry {
|
|
|
147
156
|
const nameCrc32 = _data.readUInt32LE(1);
|
|
148
157
|
// Calculate CRC32 of the current filename
|
|
149
158
|
const fnameBuf = Buffer.from(this.filename);
|
|
150
|
-
const calculatedCrc = (0,
|
|
159
|
+
const calculatedCrc = (0, ZipCrypto_1.crc32)(fnameBuf);
|
|
151
160
|
// If CRCs match, use the UTF-8 filename from the extra field
|
|
152
161
|
if (calculatedCrc === nameCrc32) {
|
|
153
162
|
const unicodeName = _data.subarray(5).toString('utf8');
|
|
154
163
|
this.filename = unicodeName;
|
|
155
164
|
if (this.debug) {
|
|
156
|
-
|
|
165
|
+
Logger_1.Logger.log(`Using Unicode Path: ${this.filename}`);
|
|
157
166
|
}
|
|
158
167
|
}
|
|
159
168
|
}
|
|
@@ -199,6 +208,29 @@ class ZipEntry {
|
|
|
199
208
|
}
|
|
200
209
|
}
|
|
201
210
|
}
|
|
211
|
+
else if (_id === Headers_1.HDR_ID.SYMLINK) {
|
|
212
|
+
// Extract symbolic link information
|
|
213
|
+
if (_len >= 3) { // Version + Target Length + Target
|
|
214
|
+
const version = _data.readUInt8(0);
|
|
215
|
+
const targetLength = _data.readUInt16LE(1);
|
|
216
|
+
if (targetLength > 0 && _len >= 3 + targetLength) {
|
|
217
|
+
this.isSymlink = true;
|
|
218
|
+
this.linkTarget = _data.subarray(3, 3 + targetLength).toString('utf8');
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else if (_id === Headers_1.HDR_ID.HARDLINK) {
|
|
223
|
+
// Extract hard link information
|
|
224
|
+
if (_len >= 11) { // Version + Inode + Original Length + Original
|
|
225
|
+
const version = _data.readUInt8(0);
|
|
226
|
+
this.inode = _data.readUInt32LE(1);
|
|
227
|
+
const originalLength = _data.readUInt16LE(5);
|
|
228
|
+
if (originalLength > 0 && _len >= 7 + originalLength) {
|
|
229
|
+
this.isHardLink = true;
|
|
230
|
+
this.originalEntry = _data.subarray(7, 7 + originalLength).toString('utf8');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
202
234
|
// Skip Unicode Path here as we already processed it
|
|
203
235
|
i += 4 + _len;
|
|
204
236
|
}
|
|
@@ -206,7 +238,7 @@ class ZipEntry {
|
|
|
206
238
|
// File Comment Length - 2 bytes
|
|
207
239
|
let comLen = data.readUInt16LE(Headers_1.CENTRAL_DIR.COMMENT_LEN);
|
|
208
240
|
if (comLen > 0)
|
|
209
|
-
this.comment = data.toString('utf8', Headers_1.CENTRAL_DIR.SIZE + fnameLen
|
|
241
|
+
this.comment = data.toString('utf8', Headers_1.CENTRAL_DIR.SIZE + fnameLen, Headers_1.CENTRAL_DIR.SIZE + fnameLen + comLen);
|
|
210
242
|
if (this.debug)
|
|
211
243
|
this.showVerboseInfo();
|
|
212
244
|
// Calculate the Buffer for the next entry
|
|
@@ -234,7 +266,7 @@ class ZipEntry {
|
|
|
234
266
|
// Create an ASCII version by replacing non-ASCII chars with '?'
|
|
235
267
|
const asciiName = this.filename.replace(/[^\x00-\x7E]/g, '?');
|
|
236
268
|
const asciiNameBuf = Buffer.from(asciiName, 'ascii');
|
|
237
|
-
const nameCrc32 = (0,
|
|
269
|
+
const nameCrc32 = (0, ZipCrypto_1.crc32)(asciiNameBuf);
|
|
238
270
|
// 1 byte version + 4 bytes CRC + filename
|
|
239
271
|
const unicodePathLen = 5 + unicodePathBuf.length;
|
|
240
272
|
// Write Unicode Path Extra Field (0x7075)
|
|
@@ -250,7 +282,6 @@ class ZipEntry {
|
|
|
250
282
|
* @returns Buffer containing the local header data
|
|
251
283
|
*/
|
|
252
284
|
createLocalHdr() {
|
|
253
|
-
const commentLen = this.comment?.length ?? 0;
|
|
254
285
|
let extraFieldLen = 0;
|
|
255
286
|
// Only create Unicode Path field if needed
|
|
256
287
|
const needsUnicode = this.needsUnicodeHandling();
|
|
@@ -259,7 +290,7 @@ class ZipEntry {
|
|
|
259
290
|
const unicodeNameLen = Buffer.from(this.filename, 'utf8').length;
|
|
260
291
|
extraFieldLen = 5 + unicodeNameLen + 4;
|
|
261
292
|
}
|
|
262
|
-
const data = Buffer.alloc(Headers_1.LOCAL_HDR.SIZE + this.filename.length +
|
|
293
|
+
const data = Buffer.alloc(Headers_1.LOCAL_HDR.SIZE + this.filename.length + extraFieldLen);
|
|
263
294
|
// "PK\003\004"
|
|
264
295
|
data.writeUInt32LE(Headers_1.LOCAL_HDR.SIGNATURE, 0);
|
|
265
296
|
// version needed to extract
|
|
@@ -290,11 +321,8 @@ class ZipEntry {
|
|
|
290
321
|
if (needsUnicode) {
|
|
291
322
|
extraOffset = this.addUnicodePathField(data, extraOffset);
|
|
292
323
|
}
|
|
293
|
-
//
|
|
294
|
-
|
|
295
|
-
const commentBuf = Buffer.from(this.comment, 'utf8');
|
|
296
|
-
commentBuf.copy(data, extraOffset);
|
|
297
|
-
}
|
|
324
|
+
// File comments are NOT stored in local headers (ZIP specification)
|
|
325
|
+
// They are only stored in the central directory
|
|
298
326
|
return data;
|
|
299
327
|
}
|
|
300
328
|
/**
|
|
@@ -303,11 +331,17 @@ class ZipEntry {
|
|
|
303
331
|
*/
|
|
304
332
|
centralDirEntry() {
|
|
305
333
|
// Calculate the length of the extra fields
|
|
306
|
-
const commentLen = this.comment
|
|
334
|
+
const commentLen = this.comment ? Buffer.from(this.comment, 'utf8').length : 0;
|
|
307
335
|
const utfLen = this.universalTime ? 9 : 0; // 4 bytes header + 5 bytes data
|
|
308
336
|
const uidgidLen = this.uid && this.gid ? 11 + 4 : 0; // 1 byte version + 1 byte size + 4 bytes data + 1 byte size + 4 bytes data
|
|
309
337
|
const sha256Buf = this.sha256 ? Buffer.from(this.sha256, 'hex') : null;
|
|
310
338
|
const sha256Len = sha256Buf ? (sha256Buf.length + 4) : 0;
|
|
339
|
+
// Calculate symbolic link extra field length
|
|
340
|
+
const symlinkLen = this.isSymlink && this.linkTarget ?
|
|
341
|
+
(4 + 1 + 2 + Buffer.byteLength(this.linkTarget, 'utf8')) : 0; // 4 bytes header + 1 byte version + 2 bytes length + target
|
|
342
|
+
// Calculate hard link extra field length
|
|
343
|
+
const hardlinkLen = this.isHardLink && this.originalEntry && this.inode !== null ?
|
|
344
|
+
(4 + 1 + 4 + 2 + Buffer.byteLength(this.originalEntry, 'utf8')) : 0; // 4 bytes header + 1 byte version + 4 bytes inode + 2 bytes length + original
|
|
311
345
|
// Only add Unicode Path field if needed
|
|
312
346
|
const needsUnicode = this.needsUnicodeHandling();
|
|
313
347
|
let unicodePathLen = 0;
|
|
@@ -316,9 +350,12 @@ class ZipEntry {
|
|
|
316
350
|
const unicodeNameLen = Buffer.from(this.filename, 'utf8').length;
|
|
317
351
|
unicodePathLen = 5 + unicodeNameLen + 4;
|
|
318
352
|
}
|
|
319
|
-
const extraLen = utfLen + sha256Len + uidgidLen + (needsUnicode ? unicodePathLen : 0);
|
|
353
|
+
const extraLen = utfLen + sha256Len + uidgidLen + symlinkLen + hardlinkLen + (needsUnicode ? unicodePathLen : 0);
|
|
354
|
+
// Calculate actual filename length (ASCII conversion may change length)
|
|
355
|
+
const asciiName = this.filename.replace(/[^\x00-\x7E]/g, '?');
|
|
356
|
+
const fnameLen = asciiName.length;
|
|
320
357
|
// Central directory header size (46 Bytes + filename + comment + extra fields)
|
|
321
|
-
const data = Buffer.alloc(Headers_1.CENTRAL_DIR.SIZE +
|
|
358
|
+
const data = Buffer.alloc(Headers_1.CENTRAL_DIR.SIZE + fnameLen + commentLen + extraLen);
|
|
322
359
|
// "PK\001\002"
|
|
323
360
|
data.writeUInt32LE(Headers_1.CENTRAL_DIR.SIGNATURE, 0);
|
|
324
361
|
// Version made by - Needs to be set for NeoZip
|
|
@@ -353,46 +390,71 @@ class ZipEntry {
|
|
|
353
390
|
data.writeUInt32LE(this.localHdrOffset, Headers_1.CENTRAL_DIR.LOCAL_HDR_OFFSET);
|
|
354
391
|
// Write filename - use ASCII filename (replacing non-ASCII with ?)
|
|
355
392
|
// This ensures compatibility with older ZIP readers
|
|
356
|
-
const asciiName = this.filename.replace(/[^\x00-\x7E]/g, '?');
|
|
357
393
|
const fnameBuf = Buffer.from(asciiName);
|
|
358
394
|
fnameBuf.copy(data, Headers_1.CENTRAL_DIR.SIZE);
|
|
395
|
+
// Add file comment immediately after filename (InfoZip format)
|
|
396
|
+
let currentOffset = Headers_1.CENTRAL_DIR.SIZE + fnameLen;
|
|
359
397
|
if (commentLen > 0 && this.comment) {
|
|
360
398
|
const commentBuf = Buffer.from(this.comment, 'utf8');
|
|
361
|
-
commentBuf.copy(data,
|
|
399
|
+
commentBuf.copy(data, currentOffset);
|
|
400
|
+
currentOffset += commentLen;
|
|
362
401
|
}
|
|
363
|
-
// Add Extra Field data
|
|
364
|
-
let extraOffset =
|
|
402
|
+
// Add Extra Field data after file comment
|
|
403
|
+
let extraOffset = currentOffset;
|
|
365
404
|
// Add Universal Time field
|
|
366
405
|
if (this.universalTime) {
|
|
367
406
|
data.writeUInt16LE(Headers_1.HDR_ID.UNV_TIME, extraOffset); // 0x5455
|
|
368
407
|
data.writeUInt16LE(5, extraOffset + 2); // Length of data (flags + time)
|
|
369
|
-
data.writeUInt8(
|
|
370
|
-
data.writeUInt32LE(
|
|
371
|
-
extraOffset += 9;
|
|
408
|
+
data.writeUInt8(1, extraOffset + 4); // Flags: modification time present
|
|
409
|
+
data.writeUInt32LE(Math.floor(Date.now() / 1000), extraOffset + 5); // Unix timestamp
|
|
410
|
+
extraOffset += 9;
|
|
411
|
+
}
|
|
412
|
+
// Add SHA-256 field
|
|
413
|
+
if (sha256Buf) {
|
|
414
|
+
data.writeUInt16LE(Headers_1.HDR_ID.SHA256, extraOffset); // 0x1f
|
|
415
|
+
data.writeUInt16LE(sha256Buf.length, extraOffset + 2); // Length of data
|
|
416
|
+
sha256Buf.copy(data, extraOffset + 4);
|
|
417
|
+
extraOffset += 4 + sha256Buf.length;
|
|
372
418
|
}
|
|
373
|
-
//
|
|
419
|
+
// Add UID/GID field
|
|
374
420
|
if (this.uid && this.gid) {
|
|
375
|
-
const uidgidLen = 11; // 1 byte version + 1 byte size + 4 bytes data + 1 byte size + 4 bytes data
|
|
376
421
|
data.writeUInt16LE(Headers_1.HDR_ID.UID_GID, extraOffset); // 0x7875
|
|
377
|
-
data.writeUInt16LE(
|
|
422
|
+
data.writeUInt16LE(11, extraOffset + 2); // Length of data
|
|
378
423
|
data.writeUInt8(1, extraOffset + 4); // Version
|
|
379
|
-
data.writeUInt8(4, extraOffset + 5); //
|
|
424
|
+
data.writeUInt8(4, extraOffset + 5); // UID size
|
|
380
425
|
data.writeUInt32LE(this.uid, extraOffset + 6); // UID
|
|
381
|
-
data.writeUInt8(4, extraOffset + 10); //
|
|
426
|
+
data.writeUInt8(4, extraOffset + 10); // GID size
|
|
382
427
|
data.writeUInt32LE(this.gid, extraOffset + 11); // GID
|
|
383
|
-
extraOffset +=
|
|
428
|
+
extraOffset += 15;
|
|
384
429
|
}
|
|
385
|
-
// Add
|
|
430
|
+
// Add symbolic link field
|
|
431
|
+
if (this.isSymlink && this.linkTarget) {
|
|
432
|
+
const targetBuf = Buffer.from(this.linkTarget, 'utf8');
|
|
433
|
+
const dataLen = 1 + 2 + targetBuf.length; // version + length + target
|
|
434
|
+
data.writeUInt16LE(Headers_1.HDR_ID.SYMLINK, extraOffset); // 0x7855
|
|
435
|
+
data.writeUInt16LE(dataLen, extraOffset + 2); // Length of data
|
|
436
|
+
data.writeUInt8(1, extraOffset + 4); // Version
|
|
437
|
+
data.writeUInt16LE(targetBuf.length, extraOffset + 5); // Target length
|
|
438
|
+
targetBuf.copy(data, extraOffset + 7); // Target path
|
|
439
|
+
extraOffset += 4 + dataLen;
|
|
440
|
+
}
|
|
441
|
+
// Add hard link field
|
|
442
|
+
if (this.isHardLink && this.originalEntry && this.inode !== null) {
|
|
443
|
+
const originalBuf = Buffer.from(this.originalEntry, 'utf8');
|
|
444
|
+
const dataLen = 1 + 4 + 2 + originalBuf.length; // version + inode + length + original
|
|
445
|
+
data.writeUInt16LE(Headers_1.HDR_ID.HARDLINK, extraOffset); // 0x7865
|
|
446
|
+
data.writeUInt16LE(dataLen, extraOffset + 2); // Length of data
|
|
447
|
+
data.writeUInt8(1, extraOffset + 4); // Version
|
|
448
|
+
data.writeUInt32LE(this.inode, extraOffset + 5); // Inode number
|
|
449
|
+
data.writeUInt16LE(originalBuf.length, extraOffset + 9); // Original entry length
|
|
450
|
+
originalBuf.copy(data, extraOffset + 11); // Original entry path
|
|
451
|
+
extraOffset += 4 + dataLen;
|
|
452
|
+
}
|
|
453
|
+
// Add Unicode Path field if needed
|
|
386
454
|
if (needsUnicode) {
|
|
387
455
|
extraOffset = this.addUnicodePathField(data, extraOffset);
|
|
388
456
|
}
|
|
389
|
-
//
|
|
390
|
-
if (sha256Buf) {
|
|
391
|
-
data.writeUInt16LE(Headers_1.HDR_ID.SHA256, extraOffset);
|
|
392
|
-
data.writeUInt16LE(sha256Buf.length, extraOffset + 2);
|
|
393
|
-
sha256Buf.copy(data, extraOffset + 4);
|
|
394
|
-
extraOffset += sha256Buf.length + 4;
|
|
395
|
-
}
|
|
457
|
+
// File comment is already written immediately after filename
|
|
396
458
|
return data;
|
|
397
459
|
}
|
|
398
460
|
// ======================================
|
|
@@ -406,13 +468,21 @@ class ZipEntry {
|
|
|
406
468
|
setDateTime(date) {
|
|
407
469
|
if (!date)
|
|
408
470
|
return 0;
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
471
|
+
// DOS date/time format:
|
|
472
|
+
// Date part (16 bits): Year (7 bits) + Month (4 bits) + Day (5 bits)
|
|
473
|
+
// Time part (16 bits): Hour (5 bits) + Minute (6 bits) + Second (5 bits, stored as seconds/2)
|
|
474
|
+
const year = date.getFullYear() - 1980; // Years since 1980
|
|
475
|
+
const month = date.getMonth() + 1; // Month (1-12)
|
|
476
|
+
const day = date.getDate(); // Day (1-31)
|
|
477
|
+
const hour = date.getHours(); // Hour (0-23)
|
|
478
|
+
const minute = date.getMinutes(); // Minute (0-59)
|
|
479
|
+
const second = date.getSeconds(); // Second (0-59)
|
|
480
|
+
// Pack date: year (7 bits) + month (4 bits) + day (5 bits)
|
|
481
|
+
const datePart = ((year & 0x7f) << 9) | ((month & 0x0f) << 5) | (day & 0x1f);
|
|
482
|
+
// Pack time: hour (5 bits) + minute (6 bits) + second/2 (5 bits)
|
|
483
|
+
const timePart = ((hour & 0x1f) << 11) | ((minute & 0x3f) << 5) | ((second >> 1) & 0x1f);
|
|
484
|
+
// Combine date and time parts
|
|
485
|
+
const time = (datePart << 16) | timePart;
|
|
416
486
|
return time;
|
|
417
487
|
}
|
|
418
488
|
/**
|
|
@@ -423,12 +493,17 @@ class ZipEntry {
|
|
|
423
493
|
parseDateTime(timeStamp) {
|
|
424
494
|
if (timeStamp == 0)
|
|
425
495
|
return null;
|
|
426
|
-
|
|
427
|
-
(
|
|
428
|
-
(
|
|
429
|
-
(
|
|
430
|
-
|
|
431
|
-
|
|
496
|
+
// Extract date part (upper 16 bits)
|
|
497
|
+
const datePart = (timeStamp >> 16) & 0xffff;
|
|
498
|
+
const year = ((datePart >> 9) & 0x7f) + 1980; // Year (7 bits) + 1980
|
|
499
|
+
const month = ((datePart >> 5) & 0x0f) - 1; // Month (4 bits) - 1 for 0-based
|
|
500
|
+
const day = datePart & 0x1f; // Day (5 bits)
|
|
501
|
+
// Extract time part (lower 16 bits)
|
|
502
|
+
const timePart = timeStamp & 0xffff;
|
|
503
|
+
const hour = (timePart >> 11) & 0x1f; // Hour (5 bits)
|
|
504
|
+
const minute = (timePart >> 5) & 0x3f; // Minute (6 bits)
|
|
505
|
+
const second = (timePart & 0x1f) << 1; // Second (5 bits) * 2
|
|
506
|
+
return new Date(year, month, day, hour, minute, second);
|
|
432
507
|
}
|
|
433
508
|
/**
|
|
434
509
|
* Formats the entry's date in local format
|
|
@@ -573,30 +648,30 @@ class ZipEntry {
|
|
|
573
648
|
* Includes compression, encryption, timestamps, and extra fields
|
|
574
649
|
*/
|
|
575
650
|
showVerboseInfo() {
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
651
|
+
Logger_1.Logger.log('=== Central Directory Entry (%s) ===', this.filename);
|
|
652
|
+
Logger_1.Logger.log('unzip from start of archive: ', this.localHdrOffset);
|
|
653
|
+
Logger_1.Logger.log('File system or operating system of origin: ', this.fileSystemToString());
|
|
654
|
+
Logger_1.Logger.log('Version of encoding software: ', this.verMadeBy);
|
|
655
|
+
Logger_1.Logger.log('Compression Method: ', this.cmpMethodToString());
|
|
656
|
+
Logger_1.Logger.log('File Security Status: ', this.bitFlags & Headers_1.GP_FLAG.ENCRYPTED ?
|
|
582
657
|
this.bitFlags & Headers_1.GP_FLAG.STRONG_ENCRYPT ? 'Strong Encrypt' : 'Encrypted' :
|
|
583
658
|
'Not Encrypted');
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
659
|
+
Logger_1.Logger.log('File Modified (DOS date/time) ', this.toFormattedDateString());
|
|
660
|
+
Logger_1.Logger.log('File Modified (UTC) ', this.toFormattedUTCDateString());
|
|
661
|
+
Logger_1.Logger.log('Compressed Size: ', this.compressedSize);
|
|
662
|
+
Logger_1.Logger.log('UnCompressed Size: ', this.uncompressedSize);
|
|
663
|
+
Logger_1.Logger.log(`32-bit CRC value (hex): ${this.crc.toString(16).padStart(8, '0')}`);
|
|
664
|
+
Logger_1.Logger.log('Length of extra field: ', this.extraField?.length ?? 0);
|
|
665
|
+
Logger_1.Logger.log('Length of file comment: ', this.comment?.length ?? 0);
|
|
666
|
+
Logger_1.Logger.log('Unix File Attributes: ');
|
|
667
|
+
Logger_1.Logger.log('MS-DOS File Attributes: ', this.dosAttributesToString());
|
|
593
668
|
if (this.extraField) {
|
|
594
|
-
|
|
669
|
+
Logger_1.Logger.log('\nThe Central-Directory Extra Field contains:');
|
|
595
670
|
try {
|
|
596
671
|
for (let i = 0; i < this.extraField.length;) {
|
|
597
672
|
// Ensure we have at least 4 bytes (header ID + length)
|
|
598
673
|
if (i + 4 > this.extraField.length) {
|
|
599
|
-
|
|
674
|
+
Logger_1.Logger.log(` Warning: Truncated extra field at offset ${i}`);
|
|
600
675
|
break;
|
|
601
676
|
}
|
|
602
677
|
let _id = this.extraField.readUInt16LE(i);
|
|
@@ -604,23 +679,23 @@ class ZipEntry {
|
|
|
604
679
|
let _len = this.extraField.readUInt16LE(i + 2);
|
|
605
680
|
// Validate the length to ensure it doesn't exceed buffer bounds
|
|
606
681
|
if (_len < 0 || i + 4 + _len > this.extraField.length) {
|
|
607
|
-
|
|
682
|
+
Logger_1.Logger.log(` Warning: Invalid extra field length (${_len}) at offset ${i} for ID ${_idStr}`);
|
|
608
683
|
break;
|
|
609
684
|
}
|
|
610
685
|
let _data = this.extraField.subarray(i + 4, i + 4 + _len);
|
|
611
686
|
try {
|
|
612
687
|
if (_id === Headers_1.HDR_ID.SHA256) {
|
|
613
|
-
|
|
688
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] NeoZip-SHA256: ${_data.toString('hex')}`);
|
|
614
689
|
}
|
|
615
690
|
else if (_id === Headers_1.HDR_ID.UNV_TIME) {
|
|
616
691
|
if (_len >= 5) {
|
|
617
692
|
const flags = _data.readUInt8(0);
|
|
618
693
|
const timestamp = _data.readUInt32LE(1);
|
|
619
694
|
const date = new Date(timestamp * 1000);
|
|
620
|
-
|
|
695
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Universal Time: flags=${flags}, time=${date.toISOString()}`);
|
|
621
696
|
}
|
|
622
697
|
else {
|
|
623
|
-
|
|
698
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Universal Time: (invalid length ${_len})`);
|
|
624
699
|
}
|
|
625
700
|
}
|
|
626
701
|
else if (_id === Headers_1.HDR_ID.UID_GID) {
|
|
@@ -628,7 +703,7 @@ class ZipEntry {
|
|
|
628
703
|
const version = _data.readUInt8(0);
|
|
629
704
|
const uidSize = _data.readUInt8(1);
|
|
630
705
|
if (2 + uidSize > _len) {
|
|
631
|
-
|
|
706
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unix UID/GID: (invalid UID size ${uidSize})`);
|
|
632
707
|
}
|
|
633
708
|
else {
|
|
634
709
|
const uid = _data.readUIntLE(2, Math.min(uidSize, 4));
|
|
@@ -639,11 +714,44 @@ class ZipEntry {
|
|
|
639
714
|
gid = _data.readUIntLE(2 + uidSize + 1, Math.min(gidSize, 4));
|
|
640
715
|
}
|
|
641
716
|
}
|
|
642
|
-
|
|
717
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unix UID/GID: version=${version}, uid=${uid}, gid=${gid}`);
|
|
643
718
|
}
|
|
644
719
|
}
|
|
645
720
|
else {
|
|
646
|
-
|
|
721
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unix UID/GID: (invalid length ${_len})`);
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
else if (_id === Headers_1.HDR_ID.SYMLINK) {
|
|
725
|
+
if (_len >= 3) {
|
|
726
|
+
const version = _data.readUInt8(0);
|
|
727
|
+
const targetLength = _data.readUInt16LE(1);
|
|
728
|
+
if (targetLength > 0 && _len >= 3 + targetLength) {
|
|
729
|
+
const target = _data.subarray(3, 3 + targetLength).toString('utf8');
|
|
730
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Symbolic Link: version=${version}, target="${target}"`);
|
|
731
|
+
}
|
|
732
|
+
else {
|
|
733
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Symbolic Link: (invalid target length ${targetLength})`);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
else {
|
|
737
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Symbolic Link: (invalid length ${_len})`);
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
else if (_id === Headers_1.HDR_ID.HARDLINK) {
|
|
741
|
+
if (_len >= 11) {
|
|
742
|
+
const version = _data.readUInt8(0);
|
|
743
|
+
const inode = _data.readUInt32LE(1);
|
|
744
|
+
const originalLength = _data.readUInt16LE(5);
|
|
745
|
+
if (originalLength > 0 && _len >= 7 + originalLength) {
|
|
746
|
+
const original = _data.subarray(7, 7 + originalLength).toString('utf8');
|
|
747
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Hard Link: version=${version}, inode=${inode}, original="${original}"`);
|
|
748
|
+
}
|
|
749
|
+
else {
|
|
750
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Hard Link: (invalid original length ${originalLength})`);
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
else {
|
|
754
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Hard Link: (invalid length ${_len})`);
|
|
647
755
|
}
|
|
648
756
|
}
|
|
649
757
|
else if (_id === Headers_1.HDR_ID.UNICODE_PATH) {
|
|
@@ -653,13 +761,46 @@ class ZipEntry {
|
|
|
653
761
|
const unicodeName = _data.subarray(5).toString('utf8');
|
|
654
762
|
// Calculate CRC32 of the original filename for verification
|
|
655
763
|
const fnameBuf = Buffer.from(this.filename);
|
|
656
|
-
const calculatedCrc = (0,
|
|
764
|
+
const calculatedCrc = (0, ZipCrypto_1.crc32)(fnameBuf);
|
|
657
765
|
const crcMatch = nameCrc32 === calculatedCrc ? 'MATCH' : 'MISMATCH';
|
|
658
|
-
|
|
659
|
-
|
|
766
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unicode Path: version=${version}, CRC32=${nameCrc32.toString(16)} (${crcMatch})`);
|
|
767
|
+
Logger_1.Logger.log(` Path: "${unicodeName}"`);
|
|
768
|
+
}
|
|
769
|
+
else {
|
|
770
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unicode Path: (invalid length ${_len})`);
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
else if (_id === Headers_1.HDR_ID.ZIP64) {
|
|
774
|
+
// ZIP64 Extended Information (0x0001)
|
|
775
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] ZIP64 Extended Information:`);
|
|
776
|
+
if (_len >= 8) {
|
|
777
|
+
let offset = 0;
|
|
778
|
+
// Read uncompressed size (8 bytes) if present
|
|
779
|
+
if (offset + 8 <= _len) {
|
|
780
|
+
const uncompressedSize = _data.readBigUInt64LE(offset);
|
|
781
|
+
Logger_1.Logger.log(` Uncompressed Size (ZIP64): ${uncompressedSize.toString()} bytes`);
|
|
782
|
+
offset += 8;
|
|
783
|
+
}
|
|
784
|
+
// Read compressed size (8 bytes) if present
|
|
785
|
+
if (offset + 8 <= _len) {
|
|
786
|
+
const compressedSize = _data.readBigUInt64LE(offset);
|
|
787
|
+
Logger_1.Logger.log(` Compressed Size (ZIP64): ${compressedSize.toString()} bytes`);
|
|
788
|
+
offset += 8;
|
|
789
|
+
}
|
|
790
|
+
// Read local header offset (8 bytes) if present
|
|
791
|
+
if (offset + 8 <= _len) {
|
|
792
|
+
const localHeaderOffset = _data.readBigUInt64LE(offset);
|
|
793
|
+
Logger_1.Logger.log(` Local Header Offset (ZIP64): ${localHeaderOffset.toString()}`);
|
|
794
|
+
offset += 8;
|
|
795
|
+
}
|
|
796
|
+
// Read disk number (4 bytes) if present
|
|
797
|
+
if (offset + 4 <= _len) {
|
|
798
|
+
const diskNumber = _data.readUInt32LE(offset);
|
|
799
|
+
Logger_1.Logger.log(` Disk Number (ZIP64): ${diskNumber}`);
|
|
800
|
+
}
|
|
660
801
|
}
|
|
661
802
|
else {
|
|
662
|
-
|
|
803
|
+
Logger_1.Logger.log(` ZIP64 Extended Information: (invalid length ${_len})`);
|
|
663
804
|
}
|
|
664
805
|
}
|
|
665
806
|
else {
|
|
@@ -667,20 +808,22 @@ class ZipEntry {
|
|
|
667
808
|
const preview = _len > 0
|
|
668
809
|
? _data.slice(0, Math.min(16, _len)).toString('hex')
|
|
669
810
|
: '';
|
|
670
|
-
|
|
811
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unknown field: length=${_len} bytes${preview ? ', data=' + preview + '...' : ''}`);
|
|
671
812
|
}
|
|
672
813
|
}
|
|
673
814
|
catch (error) {
|
|
674
|
-
|
|
815
|
+
Logger_1.Logger.log(` Error parsing extra field ID[0x${_idStr}]: ${error.message}`);
|
|
675
816
|
}
|
|
676
817
|
i += 4 + _len;
|
|
677
818
|
}
|
|
678
819
|
}
|
|
679
820
|
catch (error) {
|
|
680
|
-
|
|
821
|
+
Logger_1.Logger.log(` Error parsing extra fields: ${error.message}`);
|
|
681
822
|
}
|
|
682
823
|
}
|
|
683
|
-
|
|
824
|
+
Logger_1.Logger.log('\n');
|
|
684
825
|
}
|
|
685
826
|
}
|
|
686
827
|
exports.default = ZipEntry;
|
|
828
|
+
exports.ZipEntry = ZipEntry;
|
|
829
|
+
//# sourceMappingURL=ZipEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZipEntry.js","sourceRoot":"","sources":["../../src/core/ZipEntry.ts"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,cAAc;AACd,yDAAyD;AACzD,yCAAyC;AACzC,2BAA2B;;;;;;AAE3B,gEAAwC;AACxC,iDAQ8B;AAE9B,gDAA6C;AAC7C,sDAA+C;AAE/C,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,WAAW,GAAG,EAAE,CAAC,CAA6B,kCAAkC;AAEtF;;GAEG;AACH,MAAqB,QAAQ;IAqD3B;;;;;OAKG;IACH,YAAY,KAAoB,EAAE,OAAuB,EAAE,KAAe;QA1D1E,UAAK,GAAG,IAAI,CAAC;QAEb,cAAS,GAAW,CAAC,CAAC,CAAQ,uBAAuB;QACrD,eAAU,GAAW,CAAC,CAAC,CAAO,iCAAiC;QAC/D,aAAQ,GAAW,CAAC,CAAC,CAAS,2BAA2B;QACzD,cAAS,GAAW,CAAC,CAAC,CAAQ,qBAAqB;QACnD,gBAAW,GAAW,CAAC,CAAC,CAAM,0CAA0C;QACxE,QAAG,GAAW,CAAC,CAAC,CAAc,SAAS;QACvC,mBAAc,GAAW,CAAC,CAAC,CAAG,kBAAkB;QAChD,qBAAgB,GAAW,CAAC,CAAC,CAAC,oBAAoB;QAClD,cAAS,GAAW,CAAC,CAAC,CAAQ,oBAAoB;QAClD,gBAAW,GAAW,CAAC,CAAC,CAAM,2BAA2B;QACzD,gBAAW,GAAW,CAAC,CAAC,CAAM,2BAA2B;QACzD,mBAAc,GAAW,CAAC,CAAC,CAAG,uDAAuD;QACrF,aAAQ,GAAW,EAAE,CAAC,CAAO,YAAY;QACzC,eAAU,GAAkB,IAAI,CAAC,CAAC,cAAc;QAChD,YAAO,GAAkB,IAAI,CAAC,CAAI,gBAAgB;QAElD,YAAY;QACZ,eAAU,GAAkB,IAAI,CAAC,CAAC,mBAAmB;QAErD,sBAAsB;QACtB,YAAO,GAAkB,IAAI,CAAC,CAAI,yBAAyB;QAE3D,gBAAW,GAAY,KAAK,CAAC,CAAK,yBAAyB;QAC3D,oBAAe,GAAY,KAAK,CAAC,CAAC,gCAAgC;QAClE,eAAU,GAAkB,IAAI,CAAC,CAAQ,8BAA8B;QACvE,oBAAe,GAAW,CAAC,CAAC,CAAM,mCAAmC;QACrE,YAAO,GAAoB,IAAI,CAAC,CAAE,yBAAyB;QAE3D,cAAS,GAAY,IAAI,CAAC,CAAQ,yBAAyB;QAC3D,gBAAW,GAAY,KAAK,CAAC,CAAK,uBAAuB;QACzD,eAAU,GAAY,KAAK,CAAC,CAAM,wBAAwB;QAE1D,yBAAyB;QACzB,aAAQ,GAAkB,IAAI,CAAC,CAAG,WAAW;QAC7C,kBAAa,GAAkB,IAAI,CAAC,CAAC,iBAAiB;QACtD,QAAG,GAAkB,IAAI,CAAC,CAAQ,UAAU;QAC5C,QAAG,GAAkB,IAAI,CAAC,CAAQ,WAAW;QAC7C,WAAM,GAAkB,IAAI,CAAC,CAAK,2BAA2B;QAE7D,qBAAqB;QACrB,cAAS,GAAY,KAAK,CAAC,CAAO,2BAA2B;QAC7D,eAAU,GAAkB,IAAI,CAAC,CAAC,iCAAiC;QAEnE,iBAAiB;QACjB,eAAU,GAAY,KAAK,CAAC,CAAM,uBAAuB;QACzD,kBAAa,GAAkB,IAAI,CAAC,CAAC,qCAAqC;QAC1E,UAAK,GAAkB,IAAI,CAAC,CAAM,8BAA8B;QAmBhE,YAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;QACjC,eAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;QAChE,YAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;QAC9D,YAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;QAE7D,gBAAW,GAAG,CAAC,GAAG,EAAE;YAClB,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,KAAK,QAAQ;oBACX,OAAO,CAAC,qBAAW,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAE,eAAe;gBACrE,KAAK,OAAO;oBACV,OAAO,CAAC,qBAAW,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAI,UAAU;gBAC9D;oBACE,OAAO,CAAC,qBAAW,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAI,aAAa;YACjE,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAtBH,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC;QAE5B,sFAAsF;QACtF,IAAI,CAAC,QAAQ,IAAI,iBAAO,CAAC,GAAG,CAAC;IAC/B,CAAC;IAkBD;;;;;OAKG;IACH,YAAY,CAAC,IAAY;QACvB,6DAA6D;QAC7D,IAAI,IAAI,CAAC,MAAM,GAAG,qBAAW,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,4CAA4C;QAC5C,oDAAoD;QACpD,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,qBAAW,CAAC,SAAS,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,gBAAM,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,QAAQ,CAAC,CAAC;QACzD,qCAAqC;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,OAAO,CAAC,CAAC;QACzD,yBAAyB;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,KAAK,CAAC,CAAC;QACrD,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,cAAc,CAAC,IAAI,CAAC;gBAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,qBAAqB;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,UAAU,CAAC,CAAC;QAC3D,iDAAiD;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,YAAY,CAAC,CAAC;QAE/D,iCAAiC;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,GAAG,CAAC,CAAC;QAC9C,kBAAkB;QAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,QAAQ,CAAC,CAAC;QAC9D,oBAAoB;QACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,UAAU,CAAC,CAAC;QAClE,sBAAsB;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,QAAQ,CAAC,CAAC;QACzD,2BAA2B;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,aAAa,CAAC,CAAC;QAChE,2BAA2B;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,WAAW,GAAG,uBAAa,CAAC,SAAS;YAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAE1B,oBAAoB;QACpB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,gBAAgB,CAAC,CAAC;QAEtE,4BAA4B;QAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAW,CAAC,IAAI,EAAE,qBAAW,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;QACtF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAE1B,+BAA+B;QAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAW,CAAC,IAAI,GAAG,QAAQ,EAAE,qBAAW,CAAC,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;YAErG,+FAA+F;YAC/F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAI,CAAC;gBAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gBAE1D,IAAI,GAAG,KAAK,gBAAM,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;oBAC7C,2BAA2B;oBAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAExC,0CAA0C;oBAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5C,MAAM,aAAa,GAAG,IAAA,iBAAK,EAAC,QAAQ,CAAC,CAAC;oBAEtC,6DAA6D;oBAC7D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;wBAChC,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACvD,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;wBAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4BACf,eAAM,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACrD,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAChB,CAAC;YAED,8CAA8C;YAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAI,CAAC;gBAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gBAE1D,IAAI,GAAG,KAAK,gBAAM,CAAC,MAAM,EAAE,CAAC;oBAC1B,IAAI,IAAI,KAAK,EAAE;wBACb,uDAAuD;wBACvD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;wBAErC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACxC,CAAC;qBAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,QAAQ,EAAE,CAAC;oBACnC,sEAAsE;oBACtE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;wBACd,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACjC,gDAAgD;wBAChD,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;4BACjB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;wBAC7C,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,OAAO,EAAE,CAAC;oBAClC,6BAA6B;oBAC7B,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAE,4CAA4C;wBAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACnC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACnC,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;4BACxC,yCAAyC;4BACzC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;4BAExC,+BAA+B;4BAC/B,IAAI,IAAI,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;gCAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;gCAC7C,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;oCACtD,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;gCACxD,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,OAAO,EAAE,CAAC;oBAClC,oCAAoC;oBACpC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAE,mCAAmC;wBACnD,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACnC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;wBAC3C,IAAI,YAAY,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;4BACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;4BACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACzE,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,QAAQ,EAAE,CAAC;oBACnC,gCAAgC;oBAChC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,CAAE,+CAA+C;wBAChE,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;wBACnC,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;wBAC7C,IAAI,cAAc,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC;4BACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;4BACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAC9E,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,oDAAoD;gBACpD,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAChB,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAW,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,MAAM,GAAG,CAAC;YACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAW,CAAC,IAAI,GAAG,QAAQ,EAAE,qBAAW,CAAC,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;QAE1G,IAAI,IAAI,CAAC,KAAK;YACZ,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzB,0CAA0C;QAC1C,IAAI,OAAO,GAAG,qBAAW,CAAC,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC9D,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,oBAAoB;QAClB,yFAAyF;QACzF,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACK,mBAAmB,CAAC,MAAc,EAAE,MAAc;QACxD,wCAAwC;QACxC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE1D,uDAAuD;QACvD,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAA,iBAAK,EAAC,YAAY,CAAC,CAAC;QAEtC,0CAA0C;QAC1C,MAAM,cAAc,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;QAEjD,0CAA0C;QAC1C,MAAM,CAAC,aAAa,CAAC,gBAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB;QACpE,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,eAAe;QAClE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAkB,cAAc;QACjE,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAO,8BAA8B;QACjF,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAW,4BAA4B;QAE/E,OAAO,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,mCAAmC;IACzE,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,2CAA2C;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEjD,IAAI,YAAY,EAAE,CAAC;YACjB,2DAA2D;YAC3D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC;YACjE,aAAa,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAS,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;QAEjF,eAAe;QACf,IAAI,CAAC,aAAa,CAAC,mBAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC3C,4BAA4B;QAC5B,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,mBAAS,CAAC,WAAW,CAAC,CAAC;QACvD,2BAA2B;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,mBAAS,CAAC,KAAK,CAAC,CAAC;QACzD,qBAAqB;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAS,CAAC,WAAW,CAAC,CAAC;QAC1D,iDAAiD;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,mBAAS,CAAC,YAAY,CAAC,CAAC;QACnE,iCAAiC;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAS,CAAC,GAAG,CAAC,CAAC;QAC5C,kBAAkB;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,mBAAS,CAAC,QAAQ,CAAC,CAAC;QAC5D,oBAAoB;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,mBAAS,CAAC,UAAU,CAAC,CAAC;QAChE,kBAAkB;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAS,CAAC,SAAS,CAAC,CAAC;QAC9D,qBAAqB;QACrB,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,mBAAS,CAAC,SAAS,CAAC,CAAC;QAEvD,mEAAmE;QACnE,oDAAoD;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAS,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,WAAW,GAAG,mBAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEnD,8CAA8C;QAC9C,IAAI,YAAY,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC;QAED,oEAAoE;QACpE,gDAAgD;QAEhD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,gCAAgC;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,2EAA2E;QACjI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzD,6CAA6C;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;YACpD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4DAA4D;QAE5H,yCAAyC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;YAChF,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,8EAA8E;QAErJ,wCAAwC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjD,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,IAAI,YAAY,EAAE,CAAC;YACjB,2DAA2D;YAC3D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC;YACjE,cAAc,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjH,wEAAwE;QACxE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;QAElC,+EAA+E;QAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAW,CAAC,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC;QAE/E,eAAe;QACf,IAAI,CAAC,aAAa,CAAC,qBAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7C,gDAAgD;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAW,CAAC,QAAQ,CAAC,CAAC;QAC7F,4BAA4B;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAW,CAAC,OAAO,CAAC,CAAC;QACtF,yBAAyB;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,qBAAW,CAAC,KAAK,CAAC,CAAC;QAC1D,qBAAqB;QACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAW,CAAC,UAAU,CAAC,CAAC;QAC1D,iDAAiD;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,qBAAW,CAAC,YAAY,CAAC,CAAC;QACrE,iCAAiC;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAW,CAAC,GAAG,CAAC,CAAC;QAC9C,kBAAkB;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAW,CAAC,QAAQ,CAAC,CAAC;QAC9D,oBAAoB;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,qBAAW,CAAC,UAAU,CAAC,CAAC;QAClE,kBAAkB;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAW,CAAC,SAAS,CAAC,CAAC;QAChE,qBAAqB;QACrB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,qBAAW,CAAC,SAAS,CAAC,CAAC;QACpD,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qBAAW,CAAC,WAAW,CAAC,CAAC;QACxD,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,qBAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,2BAA2B;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,qBAAW,CAAC,aAAa,CAAC,CAAC;QACtE,2BAA2B;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,qBAAW,CAAC,aAAa,CAAC,CAAC;QACtE,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAW,CAAC,gBAAgB,CAAC,CAAC;QAEtE,mEAAmE;QACnE,oDAAoD;QACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAW,CAAC,IAAI,CAAC,CAAC;QAEtC,+DAA+D;QAC/D,IAAI,aAAa,GAAG,qBAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;QAChD,IAAI,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACrC,aAAa,IAAI,UAAU,CAAC;QAC9B,CAAC;QAED,0CAA0C;QAC1C,IAAI,WAAW,GAAG,aAAa,CAAC;QAEhC,2BAA2B;QAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,gBAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAK,SAAS;YAC/D,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAe,gCAAgC;YACtF,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAkB,mCAAmC;YACzF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB;YACrF,WAAW,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,oBAAoB;QACpB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,aAAa,CAAC,gBAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAO,OAAO;YAC7D,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB;YACxE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;YACtC,WAAW,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QACtC,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,gBAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAO,SAAS;YAChE,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAc,iBAAiB;YACvE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAkB,UAAU;YAChE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAkB,WAAW;YACjE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAQ,MAAM;YAC5D,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAiB,WAAW;YACjE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAO,MAAM;YAC5D,WAAW,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,4BAA4B;YAEtE,IAAI,CAAC,aAAa,CAAC,gBAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAO,SAAS;YAChE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAU,iBAAiB;YACxE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAmB,UAAU;YACjE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB;YACvE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAiB,cAAc;YACrE,WAAW,IAAI,CAAC,GAAG,OAAO,CAAC;QAC7B,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACjE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,sCAAsC;YAEtF,IAAI,CAAC,aAAa,CAAC,gBAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAO,SAAS;YACjE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAW,iBAAiB;YACzE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAoB,UAAU;YAClE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAQ,eAAe;YACvE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB;YACjF,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAe,sBAAsB;YAC9E,WAAW,IAAI,CAAC,GAAG,OAAO,CAAC;QAC7B,CAAC;QAED,mCAAmC;QACnC,IAAI,YAAY,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC;QAED,6DAA6D;QAE7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yCAAyC;IACzC,kDAAkD;IAClD,yCAAyC;IAEzC;;;;OAIG;IACH,WAAW,CAAC,IAAU;QACpB,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QAEpB,wBAAwB;QACxB,qEAAqE;QACrE,8FAA8F;QAE9F,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,gBAAgB;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,gBAAgB;QAElD,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QAE7E,iEAAiE;QACjE,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAEzF,8BAA8B;QAC9B,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,SAAiB;QAC7B,IAAI,SAAS,IAAI,CAAC;YAChB,OAAO,IAAI,CAAC;QAEd,oCAAoC;QACpC,MAAM,QAAQ,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;QAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAE,uBAAuB;QACtE,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAI,iCAAiC;QAChF,MAAM,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAmB,eAAe;QAE9D,oCAAoC;QACpC,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;QACpC,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAU,gBAAgB;QAC/D,MAAM,MAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAS,kBAAkB;QACjE,MAAM,MAAM,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAS,sBAAsB;QAErE,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,YAAY,CAAC;QAE5C,OAAO,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE;YAC3C,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;SACf,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;QAEvC,OAAO,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO,gBAAgB,CAAC;QAE/C,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACrD,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACrD,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QAEH,OAAO,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,wBAAwB;QACtB,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO,gBAAgB,CAAC;QAE/C,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACrD,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,SAAS;YACd,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACrD,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,OAAO,GAAG,QAAQ,IAAI,QAAQ,MAAM,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,KAAK,oBAAU,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;YACxC,KAAK,oBAAU,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;YACxC,KAAK,oBAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC;YAC7C,KAAK,oBAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC;YAC7C,KAAK,oBAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC;YAC7C,KAAK,oBAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,WAAW,CAAC;YAC7C,KAAK,oBAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,UAAU,CAAC;YAC5C,KAAK,oBAAU,CAAC,QAAQ;gBACtB,QAAQ,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;oBAC5B,KAAK,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,CAAK,iBAAiB;oBACjD,KAAK,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,CAAK,kBAAkB;oBAClD,KAAK,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,CAAK,eAAe;oBAC/C,KAAK,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,CAAK,qBAAqB;gBACvD,CAAC;YACH,KAAK,oBAAU,CAAC,gBAAgB,CAAC,CAAC,OAAO,aAAa,CAAC;YACvD,KAAK,oBAAU,CAAC,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC;YAC/C,KAAK,oBAAU,CAAC,IAAI,CAAC,CAAC,OAAO,WAAW,CAAC;YAEzC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;YAC5B,KAAK,qBAAW,CAAC,KAAK,CAAC,CAAC,OAAO,QAAQ,CAAC;YACxC,KAAK,qBAAW,CAAC,KAAK,CAAC,CAAC,OAAO,OAAO,CAAC;YACvC,KAAK,qBAAW,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;YAC3C,KAAK,qBAAW,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;YACrC,KAAK,qBAAW,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;YACzC,KAAK,qBAAW,CAAC,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC;YAC1C,KAAK,qBAAW,CAAC,GAAG,CAAC,CAAC,OAAO,WAAW,CAAC;YACzC,KAAK,qBAAW,CAAC,GAAG,CAAC,CAAC,OAAO,WAAW,CAAC;YACzC,KAAK,qBAAW,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;YACrC,KAAK,qBAAW,CAAC,IAAI,CAAC,CAAC,OAAO,cAAc,CAAC;YAC7C,KAAK,qBAAW,CAAC,GAAG,CAAC,CAAC,OAAO,qBAAqB,CAAC;YACnD,KAAK,qBAAW,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC;YACnC,KAAK,qBAAW,CAAC,KAAK,CAAC,CAAC,OAAO,YAAY,CAAC;YAC5C,KAAK,qBAAW,CAAC,MAAM,CAAC,CAAC,OAAO,eAAe,CAAC;YAChD,KAAK,qBAAW,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;YACrC,KAAK,qBAAW,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;YACzC,KAAK,qBAAW,CAAC,KAAK,CAAC,CAAC,OAAO,QAAQ,CAAC;YACxC,KAAK,qBAAW,CAAC,MAAM,CAAC,CAAC,OAAO,qBAAqB,CAAC;YACtD,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,qBAAqB;QAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QACxC,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACjC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,CAAC,OAAO,GAAG,uBAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,KAAK,IAAI,CAAC,OAAO,GAAG,uBAAa,CAAC,MAAM,CAAC,CAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,KAAK,IAAI,CAAC,OAAO,GAAG,uBAAa,CAAC,MAAM,CAAC,CAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,2DAA2D;QAC3D,KAAK,IAAI,CAAC,OAAO,GAAG,uBAAa,CAAC,SAAS,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1D,KAAK,IAAI,CAAC,OAAO,GAAG,uBAAa,CAAC,OAAO,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,eAAM,CAAC,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClE,eAAM,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACxF,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7E,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvF,eAAM,CAAC,GAAG,CAAC,gDAAgD,EACzD,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACzE,eAAe,CAAC,CAAC;QACrB,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC3F,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;QAC9F,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClF,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpF,eAAM,CAAC,GAAG,CAAC,kDAAkD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACvG,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;QAC3F,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;QACxF,eAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC7D,eAAM,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,eAAM,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC5D,IAAI,CAAC;gBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAI,CAAC;oBAC7C,uDAAuD;oBACvD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;wBACnC,eAAM,CAAC,GAAG,CAAC,+CAA+C,CAAC,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBACR,CAAC;oBAED,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC1C,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/C,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE/C,gEAAgE;oBAChE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;wBACtD,eAAM,CAAC,GAAG,CAAC,2CAA2C,IAAI,eAAe,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;wBAC/F,MAAM;oBACR,CAAC;oBAED,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;oBAE1D,IAAI,CAAC;wBACH,IAAI,GAAG,KAAK,gBAAM,CAAC,MAAM,EAAE,CAAC;4BAC1B,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,oBAAoB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBAC3E,CAAC;6BAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,QAAQ,EAAE,CAAC;4BACnC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gCACd,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gCACjC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gCACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;gCACxC,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,2BAA2B,KAAK,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;4BAC9F,CAAC;iCAAM,CAAC;gCACN,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,qCAAqC,IAAI,GAAG,CAAC,CAAC;4BAC5E,CAAC;wBACH,CAAC;6BAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,OAAO,EAAE,CAAC;4BAClC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gCACd,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gCACnC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gCACnC,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;oCACvB,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,qCAAqC,OAAO,GAAG,CAAC,CAAC;gCAC/E,CAAC;qCAAM,CAAC;oCACN,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;oCACtD,IAAI,GAAG,GAAG,CAAC,CAAC;oCACZ,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;wCAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;wCAC7C,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;4CACtC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;wCAChE,CAAC;oCACH,CAAC;oCACD,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,2BAA2B,OAAO,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;gCAC5F,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,mCAAmC,IAAI,GAAG,CAAC,CAAC;4BAC1E,CAAC;wBACH,CAAC;6BAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,OAAO,EAAE,CAAC;4BAClC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gCACd,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gCACnC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gCAC3C,IAAI,YAAY,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;oCACjD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oCACpE,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,4BAA4B,OAAO,aAAa,MAAM,GAAG,CAAC,CAAC;gCACzF,CAAC;qCAAM,CAAC;oCACN,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,2CAA2C,YAAY,GAAG,CAAC,CAAC;gCAC1F,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,oCAAoC,IAAI,GAAG,CAAC,CAAC;4BAC3E,CAAC;wBACH,CAAC;6BAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,QAAQ,EAAE,CAAC;4BACnC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;gCACf,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gCACnC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gCACpC,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gCAC7C,IAAI,cAAc,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC;oCACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oCACxE,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,wBAAwB,OAAO,WAAW,KAAK,eAAe,QAAQ,GAAG,CAAC,CAAC;gCACzG,CAAC;qCAAM,CAAC;oCACN,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,yCAAyC,cAAc,GAAG,CAAC,CAAC;gCAC1F,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,gCAAgC,IAAI,GAAG,CAAC,CAAC;4BACvE,CAAC;wBACH,CAAC;6BAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,YAAY,EAAE,CAAC;4BACvC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gCACd,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gCACnC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gCACxC,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gCAEvD,4DAA4D;gCAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gCAC5C,MAAM,aAAa,GAAG,IAAA,iBAAK,EAAC,QAAQ,CAAC,CAAC;gCAEtC,MAAM,QAAQ,GAAG,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;gCAEpE,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,2BAA2B,OAAO,WAAW,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC;gCACjH,eAAM,CAAC,GAAG,CAAC,gCAAgC,WAAW,GAAG,CAAC,CAAC;4BAC7D,CAAC;iCAAM,CAAC;gCACN,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,mCAAmC,IAAI,GAAG,CAAC,CAAC;4BAC1E,CAAC;wBACH,CAAC;6BAAM,IAAI,GAAG,KAAK,gBAAM,CAAC,KAAK,EAAE,CAAC;4BAChC,sCAAsC;4BACtC,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,+BAA+B,CAAC,CAAC;4BAC7D,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gCACd,IAAI,MAAM,GAAG,CAAC,CAAC;gCAEf,8CAA8C;gCAC9C,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;oCACvB,MAAM,gBAAgB,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oCACvD,eAAM,CAAC,GAAG,CAAC,mCAAmC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oCACnF,MAAM,IAAI,CAAC,CAAC;gCACd,CAAC;gCAED,4CAA4C;gCAC5C,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;oCACvB,MAAM,cAAc,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oCACrD,eAAM,CAAC,GAAG,CAAC,iCAAiC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oCAC/E,MAAM,IAAI,CAAC,CAAC;gCACd,CAAC;gCAED,gDAAgD;gCAChD,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;oCACvB,MAAM,iBAAiB,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oCACxD,eAAM,CAAC,GAAG,CAAC,qCAAqC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oCAChF,MAAM,IAAI,CAAC,CAAC;gCACd,CAAC;gCAED,wCAAwC;gCACxC,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;oCACvB,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oCAC9C,eAAM,CAAC,GAAG,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;gCACxD,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,eAAM,CAAC,GAAG,CAAC,oDAAoD,IAAI,GAAG,CAAC,CAAC;4BAC1E,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,gEAAgE;4BAChE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;gCACtB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;gCACpD,CAAC,CAAC,EAAE,CAAC;4BACP,eAAM,CAAC,GAAG,CAAC,WAAW,MAAM,2BAA2B,IAAI,SAAS,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACpH,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,eAAM,CAAC,GAAG,CAAC,qCAAqC,MAAM,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/E,CAAC;oBAED,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,eAAM,CAAC,GAAG,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,eAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;CACF;AAx3BD,2BAw3BC;AAEQ,4BAAQ"}
|