zstdify 1.3.1 → 1.4.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/README.md +10 -8
- package/dist/bitstream/bitReaderReverse.d.ts +15 -0
- package/dist/bitstream/bitReaderReverse.js +38 -0
- package/dist/bitstream/bitReaderReverse.js.map +1 -1
- package/dist/bitstream/reverseBitWriter.d.ts +15 -1
- package/dist/bitstream/reverseBitWriter.js +6 -7
- package/dist/bitstream/reverseBitWriter.js.map +1 -1
- package/dist/bitstream/varint.d.ts +2 -1
- package/dist/bitstream/varint.js +16 -8
- package/dist/bitstream/varint.js.map +1 -1
- package/dist/compress.js +8 -7
- package/dist/compress.js.map +1 -1
- package/dist/decode/block.d.ts +1 -0
- package/dist/decode/block.js +4 -0
- package/dist/decode/block.js.map +1 -1
- package/dist/decode/decompressFrame.js +25 -71
- package/dist/decode/decompressFrame.js.map +1 -1
- package/dist/decode/fusedSequences.d.ts +4 -5
- package/dist/decode/fusedSequences.js +403 -20
- package/dist/decode/fusedSequences.js.map +1 -1
- package/dist/decode/reconstruct.d.ts +0 -2
- package/dist/decode/reconstruct.js +87 -78
- package/dist/decode/reconstruct.js.map +1 -1
- package/dist/decode/sequences.js +19 -20
- package/dist/decode/sequences.js.map +1 -1
- package/dist/dictionary/compressorDictionary.d.ts +8 -0
- package/dist/dictionary/compressorDictionary.js +22 -14
- package/dist/dictionary/compressorDictionary.js.map +1 -1
- package/dist/encode/compressedBlock.d.ts +2 -2
- package/dist/encode/compressedBlock.js +100 -197
- package/dist/encode/compressedBlock.js.map +1 -1
- package/dist/encode/frameWriter.js +5 -1
- package/dist/encode/frameWriter.js.map +1 -1
- package/dist/encode/literalsEncoder.d.ts +2 -1
- package/dist/encode/literalsEncoder.js +289 -47
- package/dist/encode/literalsEncoder.js.map +1 -1
- package/dist/entropy/fse.d.ts +1 -1
- package/dist/entropy/fse.js +21 -1
- package/dist/entropy/fse.js.map +1 -1
- package/dist/entropy/huffman.d.ts +1 -1
- package/dist/entropy/huffman.js +2 -1
- package/dist/entropy/huffman.js.map +1 -1
- package/dist/frame/frameHeader.js +1 -1
- package/dist/frame/skippable.js +7 -2
- package/dist/frame/skippable.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { BitWriter } from '../bitstream/bitWriter.js';
|
|
2
|
-
import { encodeReverseBitstream } from '../bitstream/reverseBitWriter.js';
|
|
2
|
+
import { encodeReverseBitstream, ReverseBitWriter } from '../bitstream/reverseBitWriter.js';
|
|
3
|
+
import { buildFSEDecodeTable, normalizeCountsForTable, readNCount, writeNCount } from '../entropy/fse.js';
|
|
3
4
|
import { buildHuffmanDecodeTable, weightsToNumBits } from '../entropy/huffman.js';
|
|
5
|
+
import { readWeightsFSE } from '../entropy/weights.js';
|
|
4
6
|
let literalBitCountsScratch = null;
|
|
5
7
|
let literalBitValuesScratch = null;
|
|
8
|
+
const WEIGHT_MAX_SYMBOL = 11;
|
|
9
|
+
const WEIGHT_MAX_TABLE_LOG = 7;
|
|
6
10
|
function ensureLiteralBitScratch(minLength) {
|
|
7
11
|
const counts = literalBitCountsScratch;
|
|
8
12
|
const values = literalBitValuesScratch;
|
|
@@ -123,43 +127,77 @@ function buildFrequencyHuffmanTable(literals) {
|
|
|
123
127
|
if (literals.length < 8)
|
|
124
128
|
return null;
|
|
125
129
|
let maxSymbol = 0;
|
|
126
|
-
const freq = new Uint32Array(
|
|
130
|
+
const freq = new Uint32Array(256);
|
|
127
131
|
for (let i = 0; i < literals.length; i++) {
|
|
128
132
|
const b = literals[i] ?? 0;
|
|
129
133
|
freq[b] = (freq[b] ?? 0) + 1;
|
|
130
134
|
if (b > maxSymbol)
|
|
131
135
|
maxSymbol = b;
|
|
132
136
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
137
|
+
let weights;
|
|
138
|
+
let maxNumBits = 0;
|
|
139
|
+
const fullWeights = new Array(256).fill(0);
|
|
140
|
+
if (maxSymbol < 255) {
|
|
141
|
+
const freqWithPseudo = new Uint32Array(257);
|
|
142
|
+
freqWithPseudo.set(freq, 0);
|
|
143
|
+
const pseudoSymbol = maxSymbol + 1;
|
|
144
|
+
freqWithPseudo[pseudoSymbol] = 1;
|
|
145
|
+
const depths = buildHuffmanDepths(freqWithPseudo);
|
|
146
|
+
if (!depths)
|
|
147
|
+
return null;
|
|
148
|
+
let maxDepth = 0;
|
|
149
|
+
for (let s = 0; s <= pseudoSymbol; s++) {
|
|
150
|
+
const d = depths[s] ?? 0;
|
|
151
|
+
if (d > maxDepth)
|
|
152
|
+
maxDepth = d;
|
|
153
|
+
}
|
|
154
|
+
if (maxDepth <= 0 || maxDepth > 11)
|
|
155
|
+
return null;
|
|
156
|
+
maxNumBits = maxDepth;
|
|
157
|
+
weights = new Array(maxSymbol + 1).fill(0);
|
|
158
|
+
for (let s = 0; s <= maxSymbol; s++) {
|
|
159
|
+
const d = depths[s] ?? 0;
|
|
160
|
+
if (d > 0)
|
|
161
|
+
weights[s] = maxDepth + 1 - d;
|
|
162
|
+
}
|
|
163
|
+
for (let i = 0; i < weights.length; i++)
|
|
164
|
+
fullWeights[i] = weights[i] ?? 0;
|
|
165
|
+
const pseudoDepth = depths[pseudoSymbol] ?? 0;
|
|
166
|
+
if (pseudoDepth <= 0)
|
|
167
|
+
return null;
|
|
168
|
+
fullWeights[pseudoSymbol] = maxDepth + 1 - pseudoDepth;
|
|
145
169
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
170
|
+
else {
|
|
171
|
+
// For full 0..255 byte alphabets we omit symbol 255 from transmitted weights;
|
|
172
|
+
// the decoder infers the final symbol weight from the Kraft remainder.
|
|
173
|
+
const depths = buildHuffmanDepths(freq);
|
|
174
|
+
if (!depths)
|
|
175
|
+
return null;
|
|
176
|
+
let maxDepth = 0;
|
|
177
|
+
for (let s = 0; s < 256; s++) {
|
|
178
|
+
const d = depths[s] ?? 0;
|
|
179
|
+
if (d > maxDepth)
|
|
180
|
+
maxDepth = d;
|
|
181
|
+
}
|
|
182
|
+
if (maxDepth <= 0 || maxDepth > 11)
|
|
183
|
+
return null;
|
|
184
|
+
maxNumBits = maxDepth;
|
|
185
|
+
weights = new Array(255).fill(0);
|
|
186
|
+
for (let s = 0; s < 256; s++) {
|
|
187
|
+
const d = depths[s] ?? 0;
|
|
188
|
+
if (d > 0)
|
|
189
|
+
fullWeights[s] = maxDepth + 1 - d;
|
|
190
|
+
}
|
|
191
|
+
if ((fullWeights[255] ?? 0) <= 0)
|
|
192
|
+
return null;
|
|
193
|
+
for (let s = 0; s < 255; s++) {
|
|
194
|
+
weights[s] = fullWeights[s] ?? 0;
|
|
195
|
+
}
|
|
153
196
|
}
|
|
154
|
-
|
|
155
|
-
for (let i = 0; i < weights.length; i++)
|
|
156
|
-
fullWeights[i] = weights[i] ?? 0;
|
|
157
|
-
const pseudoDepth = depths[pseudoSymbol] ?? 0;
|
|
158
|
-
if (pseudoDepth <= 0)
|
|
197
|
+
if (maxNumBits <= 0)
|
|
159
198
|
return null;
|
|
160
|
-
|
|
161
|
-
const
|
|
162
|
-
const decodeTable = buildHuffmanDecodeTable(numBits, maxDepth);
|
|
199
|
+
const numBits = weightsToNumBits(fullWeights, maxNumBits);
|
|
200
|
+
const decodeTable = buildHuffmanDecodeTable(numBits, maxNumBits);
|
|
163
201
|
const codeBySymbol = new Int32Array(256).fill(-1);
|
|
164
202
|
const numBitsBySymbol = new Uint8Array(256);
|
|
165
203
|
for (let i = 0; i < decodeTable.length; i++) {
|
|
@@ -169,18 +207,19 @@ function buildFrequencyHuffmanTable(literals) {
|
|
|
169
207
|
const symbol = decodeTable.symbol[i] >>> 0;
|
|
170
208
|
if (symbol >= codeBySymbol.length)
|
|
171
209
|
return null;
|
|
172
|
-
if ((codeBySymbol[symbol] ?? -1) < 0)
|
|
173
|
-
codeBySymbol[symbol] = i;
|
|
174
|
-
|
|
210
|
+
if ((codeBySymbol[symbol] ?? -1) < 0) {
|
|
211
|
+
codeBySymbol[symbol] = i >>> (maxNumBits - bits);
|
|
212
|
+
numBitsBySymbol[symbol] = bits;
|
|
213
|
+
}
|
|
175
214
|
}
|
|
176
215
|
for (let i = 0; i < literals.length; i++) {
|
|
177
216
|
const sym = literals[i] ?? 0;
|
|
178
217
|
if ((codeBySymbol[sym] ?? -1) < 0 || (numBitsBySymbol[sym] ?? 0) === 0)
|
|
179
218
|
return null;
|
|
180
219
|
}
|
|
181
|
-
return { weights, table: { maxNumBits
|
|
220
|
+
return { weights, table: { maxNumBits, codeBySymbol, numBitsBySymbol } };
|
|
182
221
|
}
|
|
183
|
-
function encodeLiteralsWithTable(table, literals) {
|
|
222
|
+
function encodeLiteralsWithTable(table, literals, reverseBitWriter) {
|
|
184
223
|
const scratch = ensureLiteralBitScratch(literals.length);
|
|
185
224
|
const bitCounts = scratch.counts.subarray(0, literals.length);
|
|
186
225
|
const bitValues = scratch.values.subarray(0, literals.length);
|
|
@@ -193,7 +232,7 @@ function encodeLiteralsWithTable(table, literals) {
|
|
|
193
232
|
bitCounts[i] = bits;
|
|
194
233
|
bitValues[i] = code;
|
|
195
234
|
}
|
|
196
|
-
return encodeReverseBitstream(bitCounts, bitValues);
|
|
235
|
+
return encodeReverseBitstream(bitCounts, bitValues, reverseBitWriter);
|
|
197
236
|
}
|
|
198
237
|
function splitLiteralsInto4(literals) {
|
|
199
238
|
const total = literals.length;
|
|
@@ -207,6 +246,85 @@ function splitLiteralsInto4(literals) {
|
|
|
207
246
|
const s4 = literals.subarray(s1Len + s2Len + s3Len, s1Len + s2Len + s3Len + s4Len);
|
|
208
247
|
return [s1, s2, s3, s4];
|
|
209
248
|
}
|
|
249
|
+
function buildFSEUpdatePath(table, updateSymbols, requiredFinalSymbol) {
|
|
250
|
+
const tableSize = table.length;
|
|
251
|
+
if (tableSize <= 0)
|
|
252
|
+
return null;
|
|
253
|
+
if (updateSymbols.length === 0) {
|
|
254
|
+
if (requiredFinalSymbol === null)
|
|
255
|
+
return null;
|
|
256
|
+
for (let state = 0; state < tableSize; state++) {
|
|
257
|
+
if ((table.symbol[state] ?? -1) === requiredFinalSymbol) {
|
|
258
|
+
return { states: [], updateBits: [], startState: state };
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
const rowCount = updateSymbols.length;
|
|
264
|
+
const reachable = new Uint8Array((rowCount + 1) * tableSize);
|
|
265
|
+
const nextChoice = new Int32Array(rowCount * tableSize);
|
|
266
|
+
nextChoice.fill(-1);
|
|
267
|
+
const rowOffset = (rowIndex) => rowIndex * tableSize;
|
|
268
|
+
const finalRowOffset = rowOffset(rowCount);
|
|
269
|
+
for (let state = 0; state < tableSize; state++) {
|
|
270
|
+
if (requiredFinalSymbol === null || (table.symbol[state] ?? -1) === requiredFinalSymbol) {
|
|
271
|
+
reachable[finalRowOffset + state] = 1;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
for (let row = rowCount - 1; row >= 0; row--) {
|
|
275
|
+
const symbol = updateSymbols[row] ?? -1;
|
|
276
|
+
if (symbol < 0 || symbol > WEIGHT_MAX_SYMBOL)
|
|
277
|
+
return null;
|
|
278
|
+
const curOffset = rowOffset(row);
|
|
279
|
+
const nextOffset = rowOffset(row + 1);
|
|
280
|
+
let anyReachable = false;
|
|
281
|
+
for (let state = 0; state < tableSize; state++) {
|
|
282
|
+
if ((table.symbol[state] ?? -1) !== symbol)
|
|
283
|
+
continue;
|
|
284
|
+
const baseline = table.baseline[state] ?? 0;
|
|
285
|
+
const bits = table.numBits[state] ?? 0;
|
|
286
|
+
const width = bits > 0 ? 1 << bits : 1;
|
|
287
|
+
let minNext = baseline;
|
|
288
|
+
let maxNext = baseline + width - 1;
|
|
289
|
+
if (minNext < 0)
|
|
290
|
+
minNext = 0;
|
|
291
|
+
if (maxNext >= tableSize)
|
|
292
|
+
maxNext = tableSize - 1;
|
|
293
|
+
for (let next = minNext; next <= maxNext; next++) {
|
|
294
|
+
if (reachable[nextOffset + next] === 0)
|
|
295
|
+
continue;
|
|
296
|
+
reachable[curOffset + state] = 1;
|
|
297
|
+
nextChoice[curOffset + state] = next;
|
|
298
|
+
anyReachable = true;
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
if (!anyReachable)
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
const startOffset = rowOffset(0);
|
|
306
|
+
let startState = -1;
|
|
307
|
+
for (let state = 0; state < tableSize; state++) {
|
|
308
|
+
if (reachable[startOffset + state] !== 0) {
|
|
309
|
+
startState = state;
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (startState < 0)
|
|
314
|
+
return null;
|
|
315
|
+
const states = new Array(rowCount);
|
|
316
|
+
const updateBits = new Array(rowCount);
|
|
317
|
+
let state = startState;
|
|
318
|
+
for (let row = 0; row < rowCount; row++) {
|
|
319
|
+
states[row] = state;
|
|
320
|
+
const next = nextChoice[rowOffset(row) + state] ?? -1;
|
|
321
|
+
if (next < 0)
|
|
322
|
+
return null;
|
|
323
|
+
updateBits[row] = next - (table.baseline[state] ?? 0);
|
|
324
|
+
state = next;
|
|
325
|
+
}
|
|
326
|
+
return { states, updateBits, startState };
|
|
327
|
+
}
|
|
210
328
|
function buildCompressedLiteralsHeader(blockType, sizeFormat, regeneratedSize, compressedSize) {
|
|
211
329
|
const bits = sizeFormat <= 1 ? 10 : sizeFormat === 2 ? 14 : 18;
|
|
212
330
|
const writer = new BitWriter();
|
|
@@ -216,8 +334,8 @@ function buildCompressedLiteralsHeader(blockType, sizeFormat, regeneratedSize, c
|
|
|
216
334
|
writer.writeBits(bits, compressedSize);
|
|
217
335
|
return writer.flush();
|
|
218
336
|
}
|
|
219
|
-
function makeCompressedSection(literals, table, blockType, treeBytes) {
|
|
220
|
-
const oneStream = encodeLiteralsWithTable(table, literals);
|
|
337
|
+
function makeCompressedSection(literals, table, blockType, treeBytes, reverseBitWriter) {
|
|
338
|
+
const oneStream = encodeLiteralsWithTable(table, literals, reverseBitWriter);
|
|
221
339
|
let bestPayload = null;
|
|
222
340
|
let bestSizeFormat = null;
|
|
223
341
|
if (oneStream) {
|
|
@@ -231,10 +349,10 @@ function makeCompressedSection(literals, table, blockType, treeBytes) {
|
|
|
231
349
|
}
|
|
232
350
|
if (literals.length >= 16) {
|
|
233
351
|
const [s1, s2, s3, s4] = splitLiteralsInto4(literals);
|
|
234
|
-
const e1 = encodeLiteralsWithTable(table, s1);
|
|
235
|
-
const e2 = encodeLiteralsWithTable(table, s2);
|
|
236
|
-
const e3 = encodeLiteralsWithTable(table, s3);
|
|
237
|
-
const e4 = encodeLiteralsWithTable(table, s4);
|
|
352
|
+
const e1 = encodeLiteralsWithTable(table, s1, reverseBitWriter);
|
|
353
|
+
const e2 = encodeLiteralsWithTable(table, s2, reverseBitWriter);
|
|
354
|
+
const e3 = encodeLiteralsWithTable(table, s3, reverseBitWriter);
|
|
355
|
+
const e4 = encodeLiteralsWithTable(table, s4, reverseBitWriter);
|
|
238
356
|
if (e1 && e2 && e3 && e4 && e1.length <= 0xffff && e2.length <= 0xffff && e3.length <= 0xffff) {
|
|
239
357
|
const streamsSize = 6 + e1.length + e2.length + e3.length + e4.length;
|
|
240
358
|
const compressedSize = treeBytes.length + streamsSize;
|
|
@@ -292,6 +410,130 @@ function createDirectWeightsTreeBytes(weights) {
|
|
|
292
410
|
}
|
|
293
411
|
return tree;
|
|
294
412
|
}
|
|
413
|
+
function createFSEWeightsTreeBytes(weights) {
|
|
414
|
+
if (weights.length < 2 || weights.length > 255)
|
|
415
|
+
return null;
|
|
416
|
+
let maxWeight = 0;
|
|
417
|
+
for (let i = 0; i < weights.length; i++) {
|
|
418
|
+
const value = weights[i] ?? 0;
|
|
419
|
+
if (value < 0 || value > WEIGHT_MAX_SYMBOL)
|
|
420
|
+
return null;
|
|
421
|
+
if (value > maxWeight)
|
|
422
|
+
maxWeight = value;
|
|
423
|
+
}
|
|
424
|
+
const histogram = new Array(maxWeight + 1).fill(0);
|
|
425
|
+
for (let i = 0; i < weights.length; i++) {
|
|
426
|
+
const value = weights[i] ?? 0;
|
|
427
|
+
histogram[value] = (histogram[value] ?? 0) + 1;
|
|
428
|
+
}
|
|
429
|
+
const stream1 = [];
|
|
430
|
+
const stream2 = [];
|
|
431
|
+
for (let i = 0; i < weights.length; i++) {
|
|
432
|
+
if ((i & 1) === 0)
|
|
433
|
+
stream1.push(weights[i] ?? 0);
|
|
434
|
+
else
|
|
435
|
+
stream2.push(weights[i] ?? 0);
|
|
436
|
+
}
|
|
437
|
+
const tailOnStream1 = (weights.length & 1) === 1;
|
|
438
|
+
const stream1Updates = tailOnStream1 ? stream1.slice(0, -1) : stream1.slice();
|
|
439
|
+
const stream2Updates = tailOnStream1 ? stream2.slice() : stream2.slice(0, -1);
|
|
440
|
+
const stream1Tail = tailOnStream1 ? (stream1[stream1.length - 1] ?? null) : null;
|
|
441
|
+
const stream2Tail = tailOnStream1 ? null : (stream2[stream2.length - 1] ?? null);
|
|
442
|
+
const updateCount = weights.length - 1;
|
|
443
|
+
const usedSymbols = [];
|
|
444
|
+
for (let symbol = 0; symbol < histogram.length; symbol++) {
|
|
445
|
+
if ((histogram[symbol] ?? 0) > 0)
|
|
446
|
+
usedSymbols.push(symbol);
|
|
447
|
+
}
|
|
448
|
+
if (usedSymbols.length === 0)
|
|
449
|
+
return null;
|
|
450
|
+
for (let tableLog = WEIGHT_MAX_TABLE_LOG; tableLog >= 5; tableLog--) {
|
|
451
|
+
const normalizedCandidates = [];
|
|
452
|
+
normalizedCandidates.push(normalizeCountsForTable(histogram, tableLog));
|
|
453
|
+
const tableSize = 1 << tableLog;
|
|
454
|
+
if (usedSymbols.length <= tableSize) {
|
|
455
|
+
const uniform = new Array(maxWeight + 1).fill(0);
|
|
456
|
+
for (let i = 0; i < usedSymbols.length; i++) {
|
|
457
|
+
const symbol = usedSymbols[i] ?? -1;
|
|
458
|
+
if (symbol >= 0)
|
|
459
|
+
uniform[symbol] = 1;
|
|
460
|
+
}
|
|
461
|
+
let remaining = tableSize - usedSymbols.length;
|
|
462
|
+
let cursor = 0;
|
|
463
|
+
while (remaining > 0) {
|
|
464
|
+
const symbol = usedSymbols[cursor % usedSymbols.length] ?? -1;
|
|
465
|
+
if (symbol >= 0)
|
|
466
|
+
uniform[symbol] = (uniform[symbol] ?? 0) + 1;
|
|
467
|
+
remaining--;
|
|
468
|
+
cursor++;
|
|
469
|
+
}
|
|
470
|
+
normalizedCandidates.push({ normalizedCounter: uniform, maxSymbolValue: maxWeight });
|
|
471
|
+
}
|
|
472
|
+
for (const normalized of normalizedCandidates) {
|
|
473
|
+
const header = writeNCount(normalized.normalizedCounter, normalized.maxSymbolValue, tableLog);
|
|
474
|
+
const parsed = readNCount(header, 0, WEIGHT_MAX_SYMBOL, WEIGHT_MAX_TABLE_LOG);
|
|
475
|
+
const table = buildFSEDecodeTable(parsed.normalizedCounter, parsed.tableLog);
|
|
476
|
+
const path1 = buildFSEUpdatePath(table, stream1Updates, stream1Tail);
|
|
477
|
+
if (!path1)
|
|
478
|
+
continue;
|
|
479
|
+
const path2 = buildFSEUpdatePath(table, stream2Updates, stream2Tail);
|
|
480
|
+
if (!path2)
|
|
481
|
+
continue;
|
|
482
|
+
const readCounts = new Uint8Array(2 + updateCount);
|
|
483
|
+
const readValues = new Uint32Array(2 + updateCount);
|
|
484
|
+
let readPos = 0;
|
|
485
|
+
readCounts[readPos] = parsed.tableLog;
|
|
486
|
+
readValues[readPos++] = path1.startState;
|
|
487
|
+
readCounts[readPos] = parsed.tableLog;
|
|
488
|
+
readValues[readPos++] = path2.startState;
|
|
489
|
+
let stream1Pos = 0;
|
|
490
|
+
let stream2Pos = 0;
|
|
491
|
+
for (let i = 0; i < updateCount; i++) {
|
|
492
|
+
if ((i & 1) === 0) {
|
|
493
|
+
const state = path1.states[stream1Pos] ?? -1;
|
|
494
|
+
if (state < 0)
|
|
495
|
+
return null;
|
|
496
|
+
readCounts[readPos] = table.numBits[state] ?? 0;
|
|
497
|
+
readValues[readPos++] = path1.updateBits[stream1Pos] ?? 0;
|
|
498
|
+
stream1Pos++;
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
const state = path2.states[stream2Pos] ?? -1;
|
|
502
|
+
if (state < 0)
|
|
503
|
+
return null;
|
|
504
|
+
readCounts[readPos] = table.numBits[state] ?? 0;
|
|
505
|
+
readValues[readPos++] = path2.updateBits[stream2Pos] ?? 0;
|
|
506
|
+
stream2Pos++;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
const bitstream = encodeReverseBitstream(readCounts, readValues, new ReverseBitWriter());
|
|
510
|
+
const bodySize = header.length + bitstream.length;
|
|
511
|
+
if (bodySize <= 0 || bodySize >= 128)
|
|
512
|
+
continue;
|
|
513
|
+
const tree = new Uint8Array(1 + bodySize);
|
|
514
|
+
tree[0] = bodySize;
|
|
515
|
+
tree.set(header, 1);
|
|
516
|
+
tree.set(bitstream, 1 + header.length);
|
|
517
|
+
const roundTrip = readWeightsFSE(tree, 1, bodySize).weights;
|
|
518
|
+
if (roundTrip.length !== weights.length)
|
|
519
|
+
continue;
|
|
520
|
+
let mismatch = false;
|
|
521
|
+
for (let i = 0; i < weights.length; i++) {
|
|
522
|
+
if ((roundTrip[i] ?? -1) !== (weights[i] ?? -1)) {
|
|
523
|
+
mismatch = true;
|
|
524
|
+
break;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
if (mismatch)
|
|
528
|
+
continue;
|
|
529
|
+
return tree;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
return null;
|
|
533
|
+
}
|
|
534
|
+
function createWeightsTreeBytes(weights) {
|
|
535
|
+
return createDirectWeightsTreeBytes(weights) ?? createFSEWeightsTreeBytes(weights);
|
|
536
|
+
}
|
|
295
537
|
function canEncodeTreeless(table, literals) {
|
|
296
538
|
for (let i = 0; i < literals.length; i++) {
|
|
297
539
|
const sym = literals[i] ?? 0;
|
|
@@ -300,7 +542,7 @@ function canEncodeTreeless(table, literals) {
|
|
|
300
542
|
}
|
|
301
543
|
return true;
|
|
302
544
|
}
|
|
303
|
-
export function encodeLiteralsSection(literals, context) {
|
|
545
|
+
export function encodeLiteralsSection(literals, context, reverseBitWriter = new ReverseBitWriter()) {
|
|
304
546
|
const raw = buildRawLiteralsSection(literals);
|
|
305
547
|
if (!raw)
|
|
306
548
|
return null;
|
|
@@ -312,9 +554,9 @@ export function encodeLiteralsSection(literals, context) {
|
|
|
312
554
|
}
|
|
313
555
|
const huffman = buildFrequencyHuffmanTable(literals);
|
|
314
556
|
if (huffman) {
|
|
315
|
-
const treeBytes =
|
|
557
|
+
const treeBytes = createWeightsTreeBytes(huffman.weights);
|
|
316
558
|
if (treeBytes) {
|
|
317
|
-
const compressed = makeCompressedSection(literals, huffman.table, 2, treeBytes);
|
|
559
|
+
const compressed = makeCompressedSection(literals, huffman.table, 2, treeBytes, reverseBitWriter);
|
|
318
560
|
if (compressed && compressed.length < bestSection.length) {
|
|
319
561
|
bestSection = compressed;
|
|
320
562
|
bestTable = huffman.table;
|
|
@@ -323,7 +565,7 @@ export function encodeLiteralsSection(literals, context) {
|
|
|
323
565
|
}
|
|
324
566
|
const prev = context?.prevTable ?? null;
|
|
325
567
|
if (prev && canEncodeTreeless(prev, literals)) {
|
|
326
|
-
const treeless = makeCompressedSection(literals, prev, 3, new Uint8Array(0));
|
|
568
|
+
const treeless = makeCompressedSection(literals, prev, 3, new Uint8Array(0), reverseBitWriter);
|
|
327
569
|
if (treeless && treeless.length < bestSection.length) {
|
|
328
570
|
bestSection = treeless;
|
|
329
571
|
bestTable = prev;
|
|
@@ -335,9 +577,9 @@ export function buildGeneralCompressedLiteralsForBench(literals) {
|
|
|
335
577
|
const huffman = buildFrequencyHuffmanTable(literals);
|
|
336
578
|
if (!huffman)
|
|
337
579
|
return null;
|
|
338
|
-
const treeBytes =
|
|
580
|
+
const treeBytes = createWeightsTreeBytes(huffman.weights);
|
|
339
581
|
if (!treeBytes)
|
|
340
582
|
return null;
|
|
341
|
-
return makeCompressedSection(literals, huffman.table, 2, treeBytes);
|
|
583
|
+
return makeCompressedSection(literals, huffman.table, 2, treeBytes, new ReverseBitWriter());
|
|
342
584
|
}
|
|
343
585
|
//# sourceMappingURL=literalsEncoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literalsEncoder.js","sourceRoot":"","sources":["../../src/encode/literalsEncoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsBlF,IAAI,uBAAuB,GAAsB,IAAI,CAAC;AACtD,IAAI,uBAAuB,GAAuB,IAAI,CAAC;AAEvD,SAAS,uBAAuB,CAAC,SAAiB,EAA+C;IAC/F,MAAM,MAAM,GAAG,uBAAuB,CAAC;IACvC,MAAM,MAAM,GAAG,uBAAuB,CAAC;IACvC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QACjF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,QAAQ,GAAG,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,CAAC;QAAE,QAAQ,GAAG,EAAE,CAAC;IAClC,OAAO,QAAQ,GAAG,SAAS;QAAE,QAAQ,IAAI,CAAC,CAAC;IAC3C,uBAAuB,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,uBAAuB,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;AAAA,CAC7E;AAED,SAAS,uBAAuB,CAAC,QAAoB,EAAqB;IACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7B,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,SAAS,uBAAuB,CAAC,QAAoB,EAAqB;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;IAChD,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7B,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;QACtB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACjH,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,SAAS,kBAAkB,CAAC,IAAiB,EAAqB;IAEhE,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YAC/B,IAAI,EAAE,KAAK,EAAE;gBAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;QAAA,CAC1D,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACjE,MAAM,MAAM,GAAS;YACnB,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YAChE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;YAC3E,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,QAAQ;SAChB,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,KAAK,GAA0C,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG;YAAE,MAAM;QAChB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YACtD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACf;AAED,SAAS,0BAA0B,CAAC,QAAoB,EAA6B;IACnF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,SAAS;YAAE,SAAS,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,SAAS,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC,CAAC,8DAA8D;IAChG,MAAM,YAAY,GAAG,SAAS,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,QAAQ;YAAE,QAAQ,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,OAAO,GAAG,IAAI,KAAK,CAAS,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,WAAW,CAAC;IAEvD,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QACrC,IAAI,IAAI,KAAK,CAAC;YAAE,SAAS;QACzB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/D,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACjC,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IACtF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,CAAC;AAAA,CACpF;AAED,SAAS,uBAAuB,CAAC,KAA0B,EAAE,QAAoB,EAAqB;IACpG,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACpB,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAAA,CACrD;AAED,SAAS,kBAAkB,CAAC,QAAoB,EAAoD;IAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC5C,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;IACnE,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;IACnF,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAAA,CACzB;AAED,SAAS,6BAA6B,CACpC,SAAgB,EAChB,UAAyB,EACzB,eAAuB,EACvB,cAAsB,EACV;IACZ,MAAM,IAAI,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACxC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAAA,CACvB;AAED,SAAS,qBAAqB,CAC5B,QAAoB,EACpB,KAA0B,EAC1B,SAAgB,EAChB,SAAqB,EACF;IACnB,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,WAAW,GAAsB,IAAI,CAAC;IAC1C,IAAI,cAAc,GAAyB,IAAI,CAAC;IAEhD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3D,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;YAC1D,WAAW,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAClE,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC9B,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7C,cAAc,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC1B,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,MAAM,IAAI,EAAE,CAAC,MAAM,IAAI,MAAM,IAAI,EAAE,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YAC9F,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;YACtE,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC;YACtD,IAAI,UAAU,GAAqB,IAAI,CAAC;YACxC,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;gBAC1D,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;gBACjE,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;gBACnE,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC1B,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC3B,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;gBAClC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC1C,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;gBAClC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC1C,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;gBAClC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;oBACxD,WAAW,GAAG,OAAO,CAAC;oBACtB,cAAc,GAAG,UAAU,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,cAAc,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7G,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/D,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AAAA,CACZ;AAED,SAAS,4BAA4B,CAAC,OAAiB,EAAqB;IAC1E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,SAAS,iBAAiB,CAAC,KAA0B,EAAE,QAAoB,EAAW;IACpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACnG,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAoB,EACpB,OAA+B,EACA;IAC/B,MAAM,GAAG,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,WAAW,GAAG,GAAG,CAAC;IACtB,IAAI,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IAE3C,MAAM,GAAG,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3C,WAAW,GAAG,GAAG,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,4BAA4B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YAChF,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;gBACzD,WAAW,GAAG,UAAU,CAAC;gBACzB,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IACxC,IAAI,IAAI,IAAI,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACrD,WAAW,GAAG,QAAQ,CAAC;YACvB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAAA,CACnD;AAED,MAAM,UAAU,sCAAsC,CAAC,QAAoB,EAAqB;IAC9F,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,SAAS,GAAG,4BAA4B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AAAA,CACrE"}
|
|
1
|
+
{"version":3,"file":"literalsEncoder.js","sourceRoot":"","sources":["../../src/encode/literalsEncoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAsBvD,IAAI,uBAAuB,GAAsB,IAAI,CAAC;AACtD,IAAI,uBAAuB,GAAuB,IAAI,CAAC;AACvD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,SAAS,uBAAuB,CAAC,SAAiB,EAA+C;IAC/F,MAAM,MAAM,GAAG,uBAAuB,CAAC;IACvC,MAAM,MAAM,GAAG,uBAAuB,CAAC;IACvC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QACjF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,QAAQ,GAAG,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,CAAC;QAAE,QAAQ,GAAG,EAAE,CAAC;IAClC,OAAO,QAAQ,GAAG,SAAS;QAAE,QAAQ,IAAI,CAAC,CAAC;IAC3C,uBAAuB,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,uBAAuB,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;AAAA,CAC7E;AAED,SAAS,uBAAuB,CAAC,QAAoB,EAAqB;IACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7B,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,SAAS,uBAAuB,CAAC,QAAoB,EAAqB;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;IAChD,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7B,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;QACtB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACjH,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,SAAS,kBAAkB,CAAC,IAAiB,EAAqB;IAEhE,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YAC/B,IAAI,EAAE,KAAK,EAAE;gBAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;QAAA,CAC1D,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACjE,MAAM,MAAM,GAAS;YACnB,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YAChE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;YAC3E,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,QAAQ;SAChB,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,KAAK,GAA0C,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG;YAAE,MAAM;QAChB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YACtD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACf;AAED,SAAS,0BAA0B,CAAC,QAAoB,EAA6B;IACnF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,SAAS;YAAE,SAAS,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAiB,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,WAAW,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnD,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5C,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAG,SAAS,GAAG,CAAC,CAAC;QACnC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,QAAQ;gBAAE,QAAQ,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAChD,UAAU,GAAG,QAAQ,CAAC;QAEtB,OAAO,GAAG,IAAI,KAAK,CAAS,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,WAAW,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,WAAW,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,8EAA8E;QAC9E,uEAAuE;QACvE,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,QAAQ;gBAAE,QAAQ,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAChD,UAAU,GAAG,QAAQ,CAAC;QAEtB,OAAO,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC;gBAAE,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QACrC,IAAI,IAAI,KAAK,CAAC;YAAE,SAAS;QACzB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;YACjD,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACjC,CAAC;IACH,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IACtF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,CAAC;AAAA,CAC1E;AAED,SAAS,uBAAuB,CAC9B,KAA0B,EAC1B,QAAoB,EACpB,gBAAkC,EACf;IACnB,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACpB,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAAA,CACvE;AAED,SAAS,kBAAkB,CAAC,QAAoB,EAAoD;IAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC5C,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;IACnE,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;IACnF,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAAA,CACzB;AAQD,SAAS,kBAAkB,CACzB,KAA6C,EAC7C,aAAgC,EAChC,mBAAkC,EACZ;IACtB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/B,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,IAAI,mBAAmB,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,mBAAmB,EAAE,CAAC;gBACxD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IACxD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAC;IAE7D,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,IAAI,mBAAmB,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,mBAAmB,EAAE,CAAC;YACxF,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,KAAK,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAC1D,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;gBAAE,SAAS;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,OAAO,GAAG,QAAQ,CAAC;YACvB,IAAI,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;YACnC,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC,CAAC;YAC7B,IAAI,OAAO,IAAI,SAAS;gBAAE,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC;YAClD,KAAK,IAAI,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;gBACjD,IAAI,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;oBAAE,SAAS;gBACjD,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;gBACrC,YAAY,GAAG,IAAI,CAAC;gBACpB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;IACjC,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,IAAI,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,UAAU,GAAG,KAAK,CAAC;YACnB,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,QAAQ,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,KAAK,CAAS,QAAQ,CAAC,CAAC;IAC/C,IAAI,KAAK,GAAG,UAAU,CAAC;IACvB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1B,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAAA,CAC3C;AAED,SAAS,6BAA6B,CACpC,SAAgB,EAChB,UAAyB,EACzB,eAAuB,EACvB,cAAsB,EACV;IACZ,MAAM,IAAI,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACxC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAAA,CACvB;AAED,SAAS,qBAAqB,CAC5B,QAAoB,EACpB,KAA0B,EAC1B,SAAgB,EAChB,SAAqB,EACrB,gBAAkC,EACf;IACnB,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7E,IAAI,WAAW,GAAsB,IAAI,CAAC;IAC1C,IAAI,cAAc,GAAyB,IAAI,CAAC;IAEhD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3D,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;YAC1D,WAAW,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAClE,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC9B,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7C,cAAc,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC1B,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChE,MAAM,EAAE,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChE,MAAM,EAAE,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChE,MAAM,EAAE,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,MAAM,IAAI,EAAE,CAAC,MAAM,IAAI,MAAM,IAAI,EAAE,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YAC9F,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;YACtE,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC;YACtD,IAAI,UAAU,GAAqB,IAAI,CAAC;YACxC,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;gBAC1D,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;gBACjE,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;gBACnE,UAAU,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC1B,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC3B,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;gBAClC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC1C,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;gBAClC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC1C,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;gBAClC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;oBACxD,WAAW,GAAG,OAAO,CAAC;oBACtB,cAAc,GAAG,UAAU,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,cAAc,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7G,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/D,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AAAA,CACZ;AAED,SAAS,4BAA4B,CAAC,OAAiB,EAAqB;IAC1E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,SAAS,yBAAyB,CAAC,OAAiB,EAAqB;IACvE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,iBAAiB;YAAE,OAAO,IAAI,CAAC;QACxD,IAAI,KAAK,GAAG,SAAS;YAAE,SAAS,GAAG,KAAK,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,KAAK,CAAS,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;YAC5C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9E,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;YAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,KAAK,IAAI,QAAQ,GAAG,oBAAoB,EAAE,QAAQ,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC;QACpE,MAAM,oBAAoB,GAAmE,EAAE,CAAC;QAChG,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC;QAChC,IAAI,WAAW,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAS,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpC,IAAI,MAAM,IAAI,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;YAC/C,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,OAAO,SAAS,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9D,IAAI,MAAM,IAAI,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9D,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC;YACX,CAAC;YACD,oBAAoB,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,oBAAoB,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC9F,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;YAC9E,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;YACpD,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YACtC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;YACzC,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YACtC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;YAEzC,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC7C,IAAI,KAAK,GAAG,CAAC;wBAAE,OAAO,IAAI,CAAC;oBAC3B,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChD,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC1D,UAAU,EAAE,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC7C,IAAI,KAAK,GAAG,CAAC;wBAAE,OAAO,IAAI,CAAC;oBAC3B,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChD,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC1D,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;YACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAClD,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG;gBAAE,SAAS;YAC/C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC;YAC5D,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;gBAAE,SAAS;YAClD,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChD,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,QAAQ;gBAAE,SAAS;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AAAA,CACb;AAED,SAAS,sBAAsB,CAAC,OAAiB,EAAqB;IACpE,OAAO,4BAA4B,CAAC,OAAO,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAAA,CACpF;AAED,SAAS,iBAAiB,CAAC,KAA0B,EAAE,QAAoB,EAAW;IACpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACnG,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAoB,EACpB,OAA+B,EAC/B,gBAAgB,GAAqB,IAAI,gBAAgB,EAAE,EAC5B;IAC/B,MAAM,GAAG,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,WAAW,GAAG,GAAG,CAAC;IACtB,IAAI,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IAE3C,MAAM,GAAG,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3C,WAAW,GAAG,GAAG,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;YAClG,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;gBACzD,WAAW,GAAG,UAAU,CAAC;gBACzB,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IACxC,IAAI,IAAI,IAAI,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC/F,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACrD,WAAW,GAAG,QAAQ,CAAC;YACvB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAAA,CACnD;AAED,MAAM,UAAU,sCAAsC,CAAC,QAAoB,EAAqB;IAC9F,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;AAAA,CAC7F"}
|
package/dist/entropy/fse.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare function buildFSEDecodeTable(normalizedCounter: readonly number[]
|
|
|
19
19
|
/**
|
|
20
20
|
* Decode one FSE symbol. Updates state in place.
|
|
21
21
|
*/
|
|
22
|
-
export declare function decodeFSESymbol(table: FSEDecodeTable,
|
|
22
|
+
export declare function decodeFSESymbol(table: FSEDecodeTable, reader: BitReaderReverse, state: {
|
|
23
23
|
value: number;
|
|
24
24
|
}): number;
|
|
25
25
|
/**
|
package/dist/entropy/fse.js
CHANGED
|
@@ -14,7 +14,27 @@ export function buildFSEDecodeTable(normalizedCounter, tableLog) {
|
|
|
14
14
|
if (!normalizedCounter || normalizedCounter.length === 0) {
|
|
15
15
|
throw new ZstdError('FSE: invalid normalized counter', 'corruption_detected');
|
|
16
16
|
}
|
|
17
|
+
if (!Number.isInteger(tableLog) || tableLog < 1 || tableLog > 15) {
|
|
18
|
+
throw new ZstdError('FSE: invalid tableLog', 'corruption_detected');
|
|
19
|
+
}
|
|
20
|
+
if (normalizedCounter.length > 0xffff + 1) {
|
|
21
|
+
throw new ZstdError('FSE: symbol value out of range', 'corruption_detected');
|
|
22
|
+
}
|
|
17
23
|
const tableSize = 1 << tableLog;
|
|
24
|
+
let totalProbability = 0;
|
|
25
|
+
for (let s = 0; s < normalizedCounter.length; s++) {
|
|
26
|
+
const n = normalizedCounter[s];
|
|
27
|
+
if (!Number.isInteger(n) || n === undefined || n < -1) {
|
|
28
|
+
throw new ZstdError('FSE: invalid normalized count', 'corruption_detected');
|
|
29
|
+
}
|
|
30
|
+
totalProbability += n < 0 ? 1 : n;
|
|
31
|
+
if (totalProbability > tableSize) {
|
|
32
|
+
throw new ZstdError('FSE: invalid normalized sum', 'corruption_detected');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (totalProbability !== tableSize) {
|
|
36
|
+
throw new ZstdError('FSE: invalid normalized sum', 'corruption_detected');
|
|
37
|
+
}
|
|
18
38
|
const tableSymbol = new Array(tableSize);
|
|
19
39
|
const maxSymbolValue = normalizedCounter.length - 1;
|
|
20
40
|
const symbolNext = new Array(maxSymbolValue + 1);
|
|
@@ -73,7 +93,7 @@ export function buildFSEDecodeTable(normalizedCounter, tableLog) {
|
|
|
73
93
|
/**
|
|
74
94
|
* Decode one FSE symbol. Updates state in place.
|
|
75
95
|
*/
|
|
76
|
-
export function decodeFSESymbol(table,
|
|
96
|
+
export function decodeFSESymbol(table, reader, state) {
|
|
77
97
|
const stateValue = state.value;
|
|
78
98
|
if (stateValue < 0 || stateValue >= table.length) {
|
|
79
99
|
throw new ZstdError('FSE invalid state', 'corruption_detected');
|