@poe-platform/safe-bash 0.1.781 → 0.1.783
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 +40 -0
- package/dist/office-package/zip-sync.d.ts +2 -0
- package/dist/office-package/zip-sync.js +111 -0
- package/dist/safe-bash/chunks/chunk-4FDQJUFW.js +3464 -0
- package/dist/safe-bash/chunks/csvkit-K55OYAQC.js +1564 -0
- package/dist/safe-bash/chunks/ffmpeg-BEFTQ6DZ.js +60 -0
- package/dist/safe-bash/chunks/gh-HQWOWLWE.js +41 -0
- package/dist/safe-bash/chunks/git-UFNPAOYZ.js +52 -0
- package/dist/safe-bash/chunks/imagemagick-53BMHH6D.js +134 -0
- package/dist/safe-bash/chunks/implementation-QUTAAYMT.js +105 -0
- package/dist/safe-bash/chunks/pdfimages-4OYI6FLG.js +73 -0
- package/dist/safe-bash/chunks/pdfinfo-I7U6TQPP.js +153 -0
- package/dist/safe-bash/chunks/pdftk-SUA6FMHI.js +79 -0
- package/dist/safe-bash/chunks/pdftoppm-4C5DGEWX.js +139 -0
- package/dist/safe-bash/chunks/pdftotext-Y4WI225Y.js +118 -0
- package/dist/safe-bash/chunks/qpdf-IORB4RV5.js +68 -0
- package/dist/safe-bash/chunks/sips-WHAMJFEU.js +77 -0
- package/dist/safe-bash/chunks/soffice-SYEK6WJS.js +89 -0
- package/dist/safe-bash/chunks/wkhtmltopdf-ZIICWJLF.js +85 -0
- package/dist/safe-bash/command-chunks/chunk-2LP3VMPA.js +58 -0
- package/dist/safe-bash/command-chunks/{chunk-CG4JSOK2.js → chunk-3HDIDEUJ.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-4DSJDVBM.js +2897 -0
- package/dist/safe-bash/command-chunks/{chunk-GBHSE6ZO.js → chunk-5GRLAARV.js} +1 -1
- package/dist/safe-bash/command-chunks/chunk-7OKDCM5U.js +112 -0
- package/dist/safe-bash/command-chunks/{chunk-FH3D75FC.js → chunk-ADCGH6A7.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-MTKXVRXL.js → chunk-DREUDEQG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-ADBFNLLK.js → chunk-FXYWQ6S4.js} +16 -14
- package/dist/safe-bash/command-chunks/{chunk-Y2KHC6TZ.js → chunk-IDKD76KR.js} +5 -3
- package/dist/safe-bash/command-chunks/{chunk-K6KBYLQC.js → chunk-JUDOV5MJ.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-3ZK5F23O.js → chunk-L3MLMXL4.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-E5TEVROY.js → chunk-PFBJR2PY.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-YGYOVXTO.js → chunk-UUR2S7AD.js} +9 -5
- package/dist/safe-bash/command-chunks/chunk-VIVYKW7Q.js +101 -0
- package/dist/safe-bash/command-chunks/{chunk-I5GLTNVH.js → chunk-X4P42NYK.js} +2 -27
- package/dist/safe-bash/command-chunks/{chunk-XF6TXYLD.js → chunk-Z57TV6TC.js} +4 -54
- package/dist/safe-bash/command-chunks/{chunk-QDPRSPHQ.js → chunk-Z64BW7CG.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-X3IVPNC3.js → chunk-Z7TYZG3A.js} +5 -3
- package/dist/safe-bash/command-chunks/{chunk-GZXLPWT5.js → chunk-ZF3ZVGQC.js} +259 -258
- package/dist/safe-bash/command-chunks/{pptx-ZL6L7KP2-QVZEYFUV.js → pptx-KY2OJWZW-76LBHCHD.js} +4 -3
- package/dist/safe-bash/commands/csvkit/index.d.ts +1 -8
- package/dist/safe-bash/commands/csvkit/index.js +5 -1639
- package/dist/safe-bash/commands/csvkit/sync.d.ts +9 -0
- package/dist/safe-bash/commands/csvkit/sync.js +1639 -0
- package/dist/safe-bash/commands/pandoc/implementation.d.ts +8 -0
- package/dist/safe-bash/commands/pandoc/implementation.js +92 -0
- package/dist/safe-bash/commands/pandoc/index.d.ts +2 -6
- package/dist/safe-bash/commands/pandoc/index.js +2 -90
- package/dist/safe-bash/core.browser.js +808 -6271
- package/dist/safe-bash/core.d.ts +17 -16
- package/dist/safe-bash/core.js +17 -16
- package/dist/safe-bash/lazy-gh.d.ts +10 -0
- package/dist/safe-bash/lazy-gh.js +30 -0
- package/dist/safe-bash/lazy-optional.d.ts +499 -0
- package/dist/safe-bash/lazy-optional.js +609 -0
- package/dist/safe-bash/plugins/composition.d.ts +1 -1
- package/dist/safe-bash/plugins/composition.js +1 -1
- package/dist/safe-bash/plugins/lazy-command.d.ts +9 -0
- package/dist/safe-bash/plugins/lazy-command.js +57 -0
- package/dist/safe-bash/shell/runtime.js +24 -25
- package/dist/safe-bash-command-csvkit/cli/lexical.d.ts +3 -0
- package/dist/safe-bash-command-csvkit/cli/parser.d.ts +1 -2
- package/dist/safe-bash-command-csvkit/codecs/python.js +3 -2
- package/dist/safe-bash-command-csvkit/codecs/utf8.js +2 -1
- package/dist/safe-bash-command-csvkit/index.js +453 -3270
- package/dist/safe-bash-command-csvkit/sync-support.d.ts +7 -0
- package/dist/safe-bash-command-csvkit/sync-support.js +31 -0
- package/dist/safe-bash-command-gh/index.js +25 -17
- package/dist/safe-bash-command-git/index.js +6 -10
- package/dist/safe-bash-command-imagemagick/index.js +2 -2
- package/dist/safe-bash-command-pandoc/citeproc-filters.js +4 -2
- package/dist/safe-bash-command-pandoc/command.js +8 -6
- package/dist/safe-bash-command-pandoc/index.js +8 -6
- package/dist/safe-bash-command-pandoc/lua-filters.js +3 -2
- package/dist/safe-bash-command-pandoc/options.d.ts +5 -0
- package/dist/safe-bash-command-pandoc/options.js +93 -0
- package/dist/safe-bash-command-sips/index.js +2 -2
- package/dist/safe-bash-command-soffice/index.d.ts +1 -2
- package/dist/safe-bash-command-soffice/index.js +22 -18
- package/dist/safe-bash-command-ssconvert/commands.js +2 -2
- package/dist/safe-bash-command-ssconvert/core.js +2 -2
- package/dist/safe-bash-command-ssconvert/formats/csv.js +2 -2
- package/dist/safe-bash-command-ssconvert/formats/xls.js +3 -3
- package/dist/safe-bash-command-ssconvert/formats/xlsx.js +3 -3
- package/dist/safe-bash-command-timeout/index.js +3 -3
- package/dist/safe-bash-command-yq/index.js +5 -5
- package/dist/safe-bash-compression-engine/bounded-codec.js +3 -3
- package/dist/safe-bash-compression-engine/codec-loader.js +2 -2
- package/dist/safe-bash-compression-engine/files.js +7 -7
- package/dist/safe-bash-compression-engine/index.js +6 -6
- package/dist/safe-bash-compression-engine/operand.js +7 -7
- package/dist/safe-bash-compression-engine/stream.js +6 -6
- package/dist/safe-bash-compression-engine/zstd-decode.js +5 -5
- package/dist/safe-bash-contracts/diagnostics.js +3 -3
- package/dist/safe-bash-contracts/escaping.js +9 -9
- package/dist/safe-bash-contracts/filesystem-descriptor.js +1 -1
- package/dist/safe-bash-contracts/filesystem-output.js +10 -10
- package/dist/safe-bash-contracts/index.js +40 -40
- package/dist/safe-bash-io-engine/commands/search/requirements.js +4 -4
- package/dist/safe-bash-io-engine/commands/text-programs/shared.js +4 -4
- package/dist/safe-bash-io-engine/internal.d.ts +9 -0
- package/dist/safe-bash-io-engine/internal.js +3 -3
- package/dist/safe-bash-query-engine/index.js +6 -6
- package/dist/safe-bash-query-engine/interpreter.js +5 -5
- package/dist/safe-bash-query-engine/query-core.js +6 -6
- package/dist/safe-bash-regex-engine/execution/bounded-provider.js +3 -3
- package/dist/safe-bash-regex-engine/index.js +2 -2
- package/dist/safe-bash-regex-engine/text/regex.js +2 -2
- package/dist/safe-bash-xml-engine/index.js +3 -3
- package/package.json +4 -4
- package/dist/safe-bash/command-chunks/{chunk-DC52GWRK.js → chunk-BUKYQBXO.js} +13 -13
- package/dist/safe-bash/command-chunks/{chunk-QJ3ONEBI.js → chunk-DEH3CMGL.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-Y64PA6IA.js → chunk-KHZZ4V3L.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-I7PKIGII.js → chunk-QIRUOY2W.js} +3 -3
- package/dist/safe-bash/command-chunks/{chunk-HQG2IBZL.js → chunk-TOSM3T3A.js} +6 -6
- package/dist/safe-bash/command-chunks/{chunk-F4IQCXZG.js → chunk-VBZMCL23.js} +4 -4
- package/dist/safe-bash/command-chunks/{chunk-J2NPH7DO.js → chunk-W2T7JWT3.js} +3 -3
|
@@ -0,0 +1,3464 @@
|
|
|
1
|
+
import {
|
|
2
|
+
init_platform
|
|
3
|
+
} from "./chunk-Q45QCA4J.js";
|
|
4
|
+
|
|
5
|
+
// node_modules/pako/dist/pako.mjs
|
|
6
|
+
init_platform();
|
|
7
|
+
var Z_FIXED = 4;
|
|
8
|
+
var Z_BINARY = 0;
|
|
9
|
+
var Z_TEXT = 1;
|
|
10
|
+
var Z_UNKNOWN = 2;
|
|
11
|
+
function zero$1(buf) {
|
|
12
|
+
let len = buf.length;
|
|
13
|
+
while (--len >= 0) buf[len] = 0;
|
|
14
|
+
}
|
|
15
|
+
var STORED_BLOCK = 0;
|
|
16
|
+
var STATIC_TREES = 1;
|
|
17
|
+
var DYN_TREES = 2;
|
|
18
|
+
var LENGTH_CODES = 29;
|
|
19
|
+
var LITERALS = 256;
|
|
20
|
+
var L_CODES = 286;
|
|
21
|
+
var D_CODES = 30;
|
|
22
|
+
var BL_CODES = 19;
|
|
23
|
+
var HEAP_SIZE$1 = 573;
|
|
24
|
+
var MAX_BITS = 15;
|
|
25
|
+
var Buf_size = 16;
|
|
26
|
+
var MAX_BL_BITS = 7;
|
|
27
|
+
var END_BLOCK = 256;
|
|
28
|
+
var REP_3_6 = 16;
|
|
29
|
+
var REPZ_3_10 = 17;
|
|
30
|
+
var REPZ_11_138 = 18;
|
|
31
|
+
var extra_lbits = new Uint8Array([
|
|
32
|
+
0,
|
|
33
|
+
0,
|
|
34
|
+
0,
|
|
35
|
+
0,
|
|
36
|
+
0,
|
|
37
|
+
0,
|
|
38
|
+
0,
|
|
39
|
+
0,
|
|
40
|
+
1,
|
|
41
|
+
1,
|
|
42
|
+
1,
|
|
43
|
+
1,
|
|
44
|
+
2,
|
|
45
|
+
2,
|
|
46
|
+
2,
|
|
47
|
+
2,
|
|
48
|
+
3,
|
|
49
|
+
3,
|
|
50
|
+
3,
|
|
51
|
+
3,
|
|
52
|
+
4,
|
|
53
|
+
4,
|
|
54
|
+
4,
|
|
55
|
+
4,
|
|
56
|
+
5,
|
|
57
|
+
5,
|
|
58
|
+
5,
|
|
59
|
+
5,
|
|
60
|
+
0
|
|
61
|
+
]);
|
|
62
|
+
var extra_dbits = new Uint8Array([
|
|
63
|
+
0,
|
|
64
|
+
0,
|
|
65
|
+
0,
|
|
66
|
+
0,
|
|
67
|
+
1,
|
|
68
|
+
1,
|
|
69
|
+
2,
|
|
70
|
+
2,
|
|
71
|
+
3,
|
|
72
|
+
3,
|
|
73
|
+
4,
|
|
74
|
+
4,
|
|
75
|
+
5,
|
|
76
|
+
5,
|
|
77
|
+
6,
|
|
78
|
+
6,
|
|
79
|
+
7,
|
|
80
|
+
7,
|
|
81
|
+
8,
|
|
82
|
+
8,
|
|
83
|
+
9,
|
|
84
|
+
9,
|
|
85
|
+
10,
|
|
86
|
+
10,
|
|
87
|
+
11,
|
|
88
|
+
11,
|
|
89
|
+
12,
|
|
90
|
+
12,
|
|
91
|
+
13,
|
|
92
|
+
13
|
|
93
|
+
]);
|
|
94
|
+
var extra_blbits = new Uint8Array([
|
|
95
|
+
0,
|
|
96
|
+
0,
|
|
97
|
+
0,
|
|
98
|
+
0,
|
|
99
|
+
0,
|
|
100
|
+
0,
|
|
101
|
+
0,
|
|
102
|
+
0,
|
|
103
|
+
0,
|
|
104
|
+
0,
|
|
105
|
+
0,
|
|
106
|
+
0,
|
|
107
|
+
0,
|
|
108
|
+
0,
|
|
109
|
+
0,
|
|
110
|
+
0,
|
|
111
|
+
2,
|
|
112
|
+
3,
|
|
113
|
+
7
|
|
114
|
+
]);
|
|
115
|
+
var bl_order = new Uint8Array([
|
|
116
|
+
16,
|
|
117
|
+
17,
|
|
118
|
+
18,
|
|
119
|
+
0,
|
|
120
|
+
8,
|
|
121
|
+
7,
|
|
122
|
+
9,
|
|
123
|
+
6,
|
|
124
|
+
10,
|
|
125
|
+
5,
|
|
126
|
+
11,
|
|
127
|
+
4,
|
|
128
|
+
12,
|
|
129
|
+
3,
|
|
130
|
+
13,
|
|
131
|
+
2,
|
|
132
|
+
14,
|
|
133
|
+
1,
|
|
134
|
+
15
|
|
135
|
+
]);
|
|
136
|
+
var DIST_CODE_LEN = 512;
|
|
137
|
+
var static_ltree = new Array(288 * 2);
|
|
138
|
+
zero$1(static_ltree);
|
|
139
|
+
var static_dtree = new Array(D_CODES * 2);
|
|
140
|
+
zero$1(static_dtree);
|
|
141
|
+
var _dist_code = new Array(DIST_CODE_LEN);
|
|
142
|
+
zero$1(_dist_code);
|
|
143
|
+
var _length_code = new Array(256);
|
|
144
|
+
zero$1(_length_code);
|
|
145
|
+
var base_length = new Array(LENGTH_CODES);
|
|
146
|
+
zero$1(base_length);
|
|
147
|
+
var base_dist = new Array(D_CODES);
|
|
148
|
+
zero$1(base_dist);
|
|
149
|
+
var StaticTreeDesc = class {
|
|
150
|
+
constructor(static_tree, extra_bits, extra_base, elems, max_length) {
|
|
151
|
+
this.static_tree = static_tree;
|
|
152
|
+
this.extra_bits = extra_bits;
|
|
153
|
+
this.extra_base = extra_base;
|
|
154
|
+
this.elems = elems;
|
|
155
|
+
this.max_length = max_length;
|
|
156
|
+
this.has_stree = static_tree && static_tree.length;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
var static_l_desc;
|
|
160
|
+
var static_d_desc;
|
|
161
|
+
var static_bl_desc;
|
|
162
|
+
var TreeDesc = class {
|
|
163
|
+
constructor(dyn_tree, stat_desc) {
|
|
164
|
+
this.dyn_tree = dyn_tree;
|
|
165
|
+
this.max_code = 0;
|
|
166
|
+
this.stat_desc = stat_desc;
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
var d_code = (dist) => {
|
|
170
|
+
return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
|
|
171
|
+
};
|
|
172
|
+
var put_short = (s, w) => {
|
|
173
|
+
s.pending_buf[s.pending++] = w & 255;
|
|
174
|
+
s.pending_buf[s.pending++] = w >>> 8 & 255;
|
|
175
|
+
};
|
|
176
|
+
var send_bits = (s, value, length) => {
|
|
177
|
+
if (s.bi_valid > Buf_size - length) {
|
|
178
|
+
s.bi_buf |= value << s.bi_valid & 65535;
|
|
179
|
+
put_short(s, s.bi_buf);
|
|
180
|
+
s.bi_buf = value >> Buf_size - s.bi_valid;
|
|
181
|
+
s.bi_valid += length - Buf_size;
|
|
182
|
+
} else {
|
|
183
|
+
s.bi_buf |= value << s.bi_valid & 65535;
|
|
184
|
+
s.bi_valid += length;
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
var send_code = (s, c, tree) => {
|
|
188
|
+
send_bits(s, tree[c * 2], tree[c * 2 + 1]);
|
|
189
|
+
};
|
|
190
|
+
var bi_reverse = (code, len) => {
|
|
191
|
+
let res = 0;
|
|
192
|
+
do {
|
|
193
|
+
res |= code & 1;
|
|
194
|
+
code >>>= 1;
|
|
195
|
+
res <<= 1;
|
|
196
|
+
} while (--len > 0);
|
|
197
|
+
return res >>> 1;
|
|
198
|
+
};
|
|
199
|
+
var bi_flush = (s) => {
|
|
200
|
+
if (s.bi_valid === 16) {
|
|
201
|
+
put_short(s, s.bi_buf);
|
|
202
|
+
s.bi_buf = 0;
|
|
203
|
+
s.bi_valid = 0;
|
|
204
|
+
} else if (s.bi_valid >= 8) {
|
|
205
|
+
s.pending_buf[s.pending++] = s.bi_buf & 255;
|
|
206
|
+
s.bi_buf >>= 8;
|
|
207
|
+
s.bi_valid -= 8;
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
var gen_bitlen = (s, desc) => {
|
|
211
|
+
const tree = desc.dyn_tree;
|
|
212
|
+
const max_code = desc.max_code;
|
|
213
|
+
const stree = desc.stat_desc.static_tree;
|
|
214
|
+
const has_stree = desc.stat_desc.has_stree;
|
|
215
|
+
const extra = desc.stat_desc.extra_bits;
|
|
216
|
+
const base = desc.stat_desc.extra_base;
|
|
217
|
+
const max_length = desc.stat_desc.max_length;
|
|
218
|
+
let h;
|
|
219
|
+
let n, m;
|
|
220
|
+
let bits;
|
|
221
|
+
let xbits;
|
|
222
|
+
let f;
|
|
223
|
+
let overflow = 0;
|
|
224
|
+
for (bits = 0; bits <= MAX_BITS; bits++) s.bl_count[bits] = 0;
|
|
225
|
+
tree[s.heap[s.heap_max] * 2 + 1] = 0;
|
|
226
|
+
for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {
|
|
227
|
+
n = s.heap[h];
|
|
228
|
+
bits = tree[tree[n * 2 + 1] * 2 + 1] + 1;
|
|
229
|
+
if (bits > max_length) {
|
|
230
|
+
bits = max_length;
|
|
231
|
+
overflow++;
|
|
232
|
+
}
|
|
233
|
+
tree[n * 2 + 1] = bits;
|
|
234
|
+
if (n > max_code) continue;
|
|
235
|
+
s.bl_count[bits]++;
|
|
236
|
+
xbits = 0;
|
|
237
|
+
if (n >= base) xbits = extra[n - base];
|
|
238
|
+
f = tree[n * 2];
|
|
239
|
+
s.opt_len += f * (bits + xbits);
|
|
240
|
+
if (has_stree) s.static_len += f * (stree[n * 2 + 1] + xbits);
|
|
241
|
+
}
|
|
242
|
+
if (overflow === 0) return;
|
|
243
|
+
do {
|
|
244
|
+
bits = max_length - 1;
|
|
245
|
+
while (s.bl_count[bits] === 0) bits--;
|
|
246
|
+
s.bl_count[bits]--;
|
|
247
|
+
s.bl_count[bits + 1] += 2;
|
|
248
|
+
s.bl_count[max_length]--;
|
|
249
|
+
overflow -= 2;
|
|
250
|
+
} while (overflow > 0);
|
|
251
|
+
for (bits = max_length; bits !== 0; bits--) {
|
|
252
|
+
n = s.bl_count[bits];
|
|
253
|
+
while (n !== 0) {
|
|
254
|
+
m = s.heap[--h];
|
|
255
|
+
if (m > max_code) continue;
|
|
256
|
+
if (tree[m * 2 + 1] !== bits) {
|
|
257
|
+
s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2];
|
|
258
|
+
tree[m * 2 + 1] = bits;
|
|
259
|
+
}
|
|
260
|
+
n--;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
var gen_codes = (tree, max_code, bl_count) => {
|
|
265
|
+
const next_code = new Array(16);
|
|
266
|
+
let code = 0;
|
|
267
|
+
let bits;
|
|
268
|
+
let n;
|
|
269
|
+
for (bits = 1; bits <= MAX_BITS; bits++) {
|
|
270
|
+
code = code + bl_count[bits - 1] << 1;
|
|
271
|
+
next_code[bits] = code;
|
|
272
|
+
}
|
|
273
|
+
for (n = 0; n <= max_code; n++) {
|
|
274
|
+
let len = tree[n * 2 + 1];
|
|
275
|
+
if (len === 0) continue;
|
|
276
|
+
tree[n * 2] = bi_reverse(next_code[len]++, len);
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
var tr_static_init = () => {
|
|
280
|
+
let n;
|
|
281
|
+
let bits;
|
|
282
|
+
let length;
|
|
283
|
+
let code;
|
|
284
|
+
let dist;
|
|
285
|
+
const bl_count = new Array(16);
|
|
286
|
+
length = 0;
|
|
287
|
+
for (code = 0; code < LENGTH_CODES - 1; code++) {
|
|
288
|
+
base_length[code] = length;
|
|
289
|
+
for (n = 0; n < 1 << extra_lbits[code]; n++) _length_code[length++] = code;
|
|
290
|
+
}
|
|
291
|
+
_length_code[length - 1] = code;
|
|
292
|
+
dist = 0;
|
|
293
|
+
for (code = 0; code < 16; code++) {
|
|
294
|
+
base_dist[code] = dist;
|
|
295
|
+
for (n = 0; n < 1 << extra_dbits[code]; n++) _dist_code[dist++] = code;
|
|
296
|
+
}
|
|
297
|
+
dist >>= 7;
|
|
298
|
+
for (; code < D_CODES; code++) {
|
|
299
|
+
base_dist[code] = dist << 7;
|
|
300
|
+
for (n = 0; n < 1 << extra_dbits[code] - 7; n++) _dist_code[256 + dist++] = code;
|
|
301
|
+
}
|
|
302
|
+
for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
|
|
303
|
+
n = 0;
|
|
304
|
+
while (n <= 143) {
|
|
305
|
+
static_ltree[n * 2 + 1] = 8;
|
|
306
|
+
n++;
|
|
307
|
+
bl_count[8]++;
|
|
308
|
+
}
|
|
309
|
+
while (n <= 255) {
|
|
310
|
+
static_ltree[n * 2 + 1] = 9;
|
|
311
|
+
n++;
|
|
312
|
+
bl_count[9]++;
|
|
313
|
+
}
|
|
314
|
+
while (n <= 279) {
|
|
315
|
+
static_ltree[n * 2 + 1] = 7;
|
|
316
|
+
n++;
|
|
317
|
+
bl_count[7]++;
|
|
318
|
+
}
|
|
319
|
+
while (n <= 287) {
|
|
320
|
+
static_ltree[n * 2 + 1] = 8;
|
|
321
|
+
n++;
|
|
322
|
+
bl_count[8]++;
|
|
323
|
+
}
|
|
324
|
+
gen_codes(static_ltree, 287, bl_count);
|
|
325
|
+
for (n = 0; n < D_CODES; n++) {
|
|
326
|
+
static_dtree[n * 2 + 1] = 5;
|
|
327
|
+
static_dtree[n * 2] = bi_reverse(n, 5);
|
|
328
|
+
}
|
|
329
|
+
static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, 257, L_CODES, MAX_BITS);
|
|
330
|
+
static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);
|
|
331
|
+
static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);
|
|
332
|
+
};
|
|
333
|
+
var init_block = (s) => {
|
|
334
|
+
let n;
|
|
335
|
+
for (n = 0; n < L_CODES; n++) s.dyn_ltree[n * 2] = 0;
|
|
336
|
+
for (n = 0; n < D_CODES; n++) s.dyn_dtree[n * 2] = 0;
|
|
337
|
+
for (n = 0; n < BL_CODES; n++) s.bl_tree[n * 2] = 0;
|
|
338
|
+
s.dyn_ltree[END_BLOCK * 2] = 1;
|
|
339
|
+
s.opt_len = s.static_len = 0;
|
|
340
|
+
s.sym_next = s.matches = 0;
|
|
341
|
+
};
|
|
342
|
+
var bi_windup = (s) => {
|
|
343
|
+
if (s.bi_valid > 8) put_short(s, s.bi_buf);
|
|
344
|
+
else if (s.bi_valid > 0) s.pending_buf[s.pending++] = s.bi_buf;
|
|
345
|
+
s.bi_buf = 0;
|
|
346
|
+
s.bi_valid = 0;
|
|
347
|
+
};
|
|
348
|
+
var smaller = (tree, n, m, depth) => {
|
|
349
|
+
const _n2 = n * 2;
|
|
350
|
+
const _m2 = m * 2;
|
|
351
|
+
return tree[_n2] < tree[_m2] || tree[_n2] === tree[_m2] && depth[n] <= depth[m];
|
|
352
|
+
};
|
|
353
|
+
var pqdownheap = (s, tree, k) => {
|
|
354
|
+
const v = s.heap[k];
|
|
355
|
+
let j = k << 1;
|
|
356
|
+
while (j <= s.heap_len) {
|
|
357
|
+
if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) j++;
|
|
358
|
+
if (smaller(tree, v, s.heap[j], s.depth)) break;
|
|
359
|
+
s.heap[k] = s.heap[j];
|
|
360
|
+
k = j;
|
|
361
|
+
j <<= 1;
|
|
362
|
+
}
|
|
363
|
+
s.heap[k] = v;
|
|
364
|
+
};
|
|
365
|
+
var compress_block = (s, ltree, dtree) => {
|
|
366
|
+
let dist;
|
|
367
|
+
let lc;
|
|
368
|
+
let sx = 0;
|
|
369
|
+
let code;
|
|
370
|
+
let extra;
|
|
371
|
+
if (s.sym_next !== 0) do {
|
|
372
|
+
dist = s.pending_buf[s.sym_buf + sx++] & 255;
|
|
373
|
+
dist += (s.pending_buf[s.sym_buf + sx++] & 255) << 8;
|
|
374
|
+
lc = s.pending_buf[s.sym_buf + sx++];
|
|
375
|
+
if (dist === 0) send_code(s, lc, ltree);
|
|
376
|
+
else {
|
|
377
|
+
code = _length_code[lc];
|
|
378
|
+
send_code(s, code + LITERALS + 1, ltree);
|
|
379
|
+
extra = extra_lbits[code];
|
|
380
|
+
if (extra !== 0) {
|
|
381
|
+
lc -= base_length[code];
|
|
382
|
+
send_bits(s, lc, extra);
|
|
383
|
+
}
|
|
384
|
+
dist--;
|
|
385
|
+
code = d_code(dist);
|
|
386
|
+
send_code(s, code, dtree);
|
|
387
|
+
extra = extra_dbits[code];
|
|
388
|
+
if (extra !== 0) {
|
|
389
|
+
dist -= base_dist[code];
|
|
390
|
+
send_bits(s, dist, extra);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
} while (sx < s.sym_next);
|
|
394
|
+
send_code(s, END_BLOCK, ltree);
|
|
395
|
+
};
|
|
396
|
+
var build_tree = (s, desc) => {
|
|
397
|
+
const tree = desc.dyn_tree;
|
|
398
|
+
const stree = desc.stat_desc.static_tree;
|
|
399
|
+
const has_stree = desc.stat_desc.has_stree;
|
|
400
|
+
const elems = desc.stat_desc.elems;
|
|
401
|
+
let n, m;
|
|
402
|
+
let max_code = -1;
|
|
403
|
+
let node;
|
|
404
|
+
s.heap_len = 0;
|
|
405
|
+
s.heap_max = HEAP_SIZE$1;
|
|
406
|
+
for (n = 0; n < elems; n++) if (tree[n * 2] !== 0) {
|
|
407
|
+
s.heap[++s.heap_len] = max_code = n;
|
|
408
|
+
s.depth[n] = 0;
|
|
409
|
+
} else tree[n * 2 + 1] = 0;
|
|
410
|
+
while (s.heap_len < 2) {
|
|
411
|
+
node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0;
|
|
412
|
+
tree[node * 2] = 1;
|
|
413
|
+
s.depth[node] = 0;
|
|
414
|
+
s.opt_len--;
|
|
415
|
+
if (has_stree) s.static_len -= stree[node * 2 + 1];
|
|
416
|
+
}
|
|
417
|
+
desc.max_code = max_code;
|
|
418
|
+
for (n = s.heap_len >> 1; n >= 1; n--) pqdownheap(s, tree, n);
|
|
419
|
+
node = elems;
|
|
420
|
+
do {
|
|
421
|
+
n = s.heap[1];
|
|
422
|
+
s.heap[1] = s.heap[s.heap_len--];
|
|
423
|
+
pqdownheap(s, tree, 1);
|
|
424
|
+
m = s.heap[1];
|
|
425
|
+
s.heap[--s.heap_max] = n;
|
|
426
|
+
s.heap[--s.heap_max] = m;
|
|
427
|
+
tree[node * 2] = tree[n * 2] + tree[m * 2];
|
|
428
|
+
s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
|
|
429
|
+
tree[n * 2 + 1] = tree[m * 2 + 1] = node;
|
|
430
|
+
s.heap[1] = node++;
|
|
431
|
+
pqdownheap(s, tree, 1);
|
|
432
|
+
} while (s.heap_len >= 2);
|
|
433
|
+
s.heap[--s.heap_max] = s.heap[1];
|
|
434
|
+
gen_bitlen(s, desc);
|
|
435
|
+
gen_codes(tree, max_code, s.bl_count);
|
|
436
|
+
};
|
|
437
|
+
var scan_tree = (s, tree, max_code) => {
|
|
438
|
+
let n;
|
|
439
|
+
let prevlen = -1;
|
|
440
|
+
let curlen;
|
|
441
|
+
let nextlen = tree[1];
|
|
442
|
+
let count = 0;
|
|
443
|
+
let max_count = 7;
|
|
444
|
+
let min_count = 4;
|
|
445
|
+
if (nextlen === 0) {
|
|
446
|
+
max_count = 138;
|
|
447
|
+
min_count = 3;
|
|
448
|
+
}
|
|
449
|
+
tree[(max_code + 1) * 2 + 1] = 65535;
|
|
450
|
+
for (n = 0; n <= max_code; n++) {
|
|
451
|
+
curlen = nextlen;
|
|
452
|
+
nextlen = tree[(n + 1) * 2 + 1];
|
|
453
|
+
if (++count < max_count && curlen === nextlen) continue;
|
|
454
|
+
else if (count < min_count) s.bl_tree[curlen * 2] += count;
|
|
455
|
+
else if (curlen !== 0) {
|
|
456
|
+
if (curlen !== prevlen) s.bl_tree[curlen * 2]++;
|
|
457
|
+
s.bl_tree[REP_3_6 * 2]++;
|
|
458
|
+
} else if (count <= 10) s.bl_tree[REPZ_3_10 * 2]++;
|
|
459
|
+
else s.bl_tree[REPZ_11_138 * 2]++;
|
|
460
|
+
count = 0;
|
|
461
|
+
prevlen = curlen;
|
|
462
|
+
if (nextlen === 0) {
|
|
463
|
+
max_count = 138;
|
|
464
|
+
min_count = 3;
|
|
465
|
+
} else if (curlen === nextlen) {
|
|
466
|
+
max_count = 6;
|
|
467
|
+
min_count = 3;
|
|
468
|
+
} else {
|
|
469
|
+
max_count = 7;
|
|
470
|
+
min_count = 4;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
var send_tree = (s, tree, max_code) => {
|
|
475
|
+
let n;
|
|
476
|
+
let prevlen = -1;
|
|
477
|
+
let curlen;
|
|
478
|
+
let nextlen = tree[1];
|
|
479
|
+
let count = 0;
|
|
480
|
+
let max_count = 7;
|
|
481
|
+
let min_count = 4;
|
|
482
|
+
if (nextlen === 0) {
|
|
483
|
+
max_count = 138;
|
|
484
|
+
min_count = 3;
|
|
485
|
+
}
|
|
486
|
+
for (n = 0; n <= max_code; n++) {
|
|
487
|
+
curlen = nextlen;
|
|
488
|
+
nextlen = tree[(n + 1) * 2 + 1];
|
|
489
|
+
if (++count < max_count && curlen === nextlen) continue;
|
|
490
|
+
else if (count < min_count) do
|
|
491
|
+
send_code(s, curlen, s.bl_tree);
|
|
492
|
+
while (--count !== 0);
|
|
493
|
+
else if (curlen !== 0) {
|
|
494
|
+
if (curlen !== prevlen) {
|
|
495
|
+
send_code(s, curlen, s.bl_tree);
|
|
496
|
+
count--;
|
|
497
|
+
}
|
|
498
|
+
send_code(s, REP_3_6, s.bl_tree);
|
|
499
|
+
send_bits(s, count - 3, 2);
|
|
500
|
+
} else if (count <= 10) {
|
|
501
|
+
send_code(s, REPZ_3_10, s.bl_tree);
|
|
502
|
+
send_bits(s, count - 3, 3);
|
|
503
|
+
} else {
|
|
504
|
+
send_code(s, REPZ_11_138, s.bl_tree);
|
|
505
|
+
send_bits(s, count - 11, 7);
|
|
506
|
+
}
|
|
507
|
+
count = 0;
|
|
508
|
+
prevlen = curlen;
|
|
509
|
+
if (nextlen === 0) {
|
|
510
|
+
max_count = 138;
|
|
511
|
+
min_count = 3;
|
|
512
|
+
} else if (curlen === nextlen) {
|
|
513
|
+
max_count = 6;
|
|
514
|
+
min_count = 3;
|
|
515
|
+
} else {
|
|
516
|
+
max_count = 7;
|
|
517
|
+
min_count = 4;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
var build_bl_tree = (s) => {
|
|
522
|
+
let max_blindex;
|
|
523
|
+
scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
|
|
524
|
+
scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
|
|
525
|
+
build_tree(s, s.bl_desc);
|
|
526
|
+
for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) break;
|
|
527
|
+
s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
|
|
528
|
+
return max_blindex;
|
|
529
|
+
};
|
|
530
|
+
var send_all_trees = (s, lcodes, dcodes, blcodes) => {
|
|
531
|
+
let rank2;
|
|
532
|
+
send_bits(s, lcodes - 257, 5);
|
|
533
|
+
send_bits(s, dcodes - 1, 5);
|
|
534
|
+
send_bits(s, blcodes - 4, 4);
|
|
535
|
+
for (rank2 = 0; rank2 < blcodes; rank2++) send_bits(s, s.bl_tree[bl_order[rank2] * 2 + 1], 3);
|
|
536
|
+
send_tree(s, s.dyn_ltree, lcodes - 1);
|
|
537
|
+
send_tree(s, s.dyn_dtree, dcodes - 1);
|
|
538
|
+
};
|
|
539
|
+
var detect_data_type = (s) => {
|
|
540
|
+
let block_mask = 4093624447;
|
|
541
|
+
let n;
|
|
542
|
+
for (n = 0; n <= 31; n++, block_mask >>>= 1) if (block_mask & 1 && s.dyn_ltree[n * 2] !== 0) return Z_BINARY;
|
|
543
|
+
if (s.dyn_ltree[18] !== 0 || s.dyn_ltree[20] !== 0 || s.dyn_ltree[26] !== 0) return Z_TEXT;
|
|
544
|
+
for (n = 32; n < LITERALS; n++) if (s.dyn_ltree[n * 2] !== 0) return Z_TEXT;
|
|
545
|
+
return Z_BINARY;
|
|
546
|
+
};
|
|
547
|
+
var static_init_done = false;
|
|
548
|
+
var _tr_init = (s) => {
|
|
549
|
+
if (!static_init_done) {
|
|
550
|
+
tr_static_init();
|
|
551
|
+
static_init_done = true;
|
|
552
|
+
}
|
|
553
|
+
s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);
|
|
554
|
+
s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);
|
|
555
|
+
s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
|
|
556
|
+
s.bi_buf = 0;
|
|
557
|
+
s.bi_valid = 0;
|
|
558
|
+
init_block(s);
|
|
559
|
+
};
|
|
560
|
+
var _tr_stored_block = (s, buf, stored_len, last) => {
|
|
561
|
+
send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);
|
|
562
|
+
bi_windup(s);
|
|
563
|
+
put_short(s, stored_len);
|
|
564
|
+
put_short(s, ~stored_len);
|
|
565
|
+
if (stored_len) s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);
|
|
566
|
+
s.pending += stored_len;
|
|
567
|
+
};
|
|
568
|
+
var _tr_align = (s) => {
|
|
569
|
+
send_bits(s, STATIC_TREES << 1, 3);
|
|
570
|
+
send_code(s, END_BLOCK, static_ltree);
|
|
571
|
+
bi_flush(s);
|
|
572
|
+
};
|
|
573
|
+
var _tr_flush_block = (s, buf, stored_len, last) => {
|
|
574
|
+
let opt_lenb, static_lenb;
|
|
575
|
+
let max_blindex = 0;
|
|
576
|
+
if (s.level > 0) {
|
|
577
|
+
if (s.strm.data_type === Z_UNKNOWN) s.strm.data_type = detect_data_type(s);
|
|
578
|
+
build_tree(s, s.l_desc);
|
|
579
|
+
build_tree(s, s.d_desc);
|
|
580
|
+
max_blindex = build_bl_tree(s);
|
|
581
|
+
opt_lenb = s.opt_len + 3 + 7 >>> 3;
|
|
582
|
+
static_lenb = s.static_len + 3 + 7 >>> 3;
|
|
583
|
+
if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
|
|
584
|
+
} else opt_lenb = static_lenb = stored_len + 5;
|
|
585
|
+
if (stored_len + 4 <= opt_lenb && buf !== -1) _tr_stored_block(s, buf, stored_len, last);
|
|
586
|
+
else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
|
|
587
|
+
send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
|
|
588
|
+
compress_block(s, static_ltree, static_dtree);
|
|
589
|
+
} else {
|
|
590
|
+
send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
|
|
591
|
+
send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
|
|
592
|
+
compress_block(s, s.dyn_ltree, s.dyn_dtree);
|
|
593
|
+
}
|
|
594
|
+
init_block(s);
|
|
595
|
+
if (last) bi_windup(s);
|
|
596
|
+
};
|
|
597
|
+
var _tr_tally = (s, dist, lc) => {
|
|
598
|
+
s.pending_buf[s.sym_buf + s.sym_next++] = dist;
|
|
599
|
+
s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;
|
|
600
|
+
s.pending_buf[s.sym_buf + s.sym_next++] = lc;
|
|
601
|
+
if (dist === 0) s.dyn_ltree[lc * 2]++;
|
|
602
|
+
else {
|
|
603
|
+
s.matches++;
|
|
604
|
+
dist--;
|
|
605
|
+
s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]++;
|
|
606
|
+
s.dyn_dtree[d_code(dist) * 2]++;
|
|
607
|
+
}
|
|
608
|
+
return s.sym_next === s.sym_end;
|
|
609
|
+
};
|
|
610
|
+
var adler32 = (adler, buf, len, pos) => {
|
|
611
|
+
let s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0;
|
|
612
|
+
while (len !== 0) {
|
|
613
|
+
n = len > 2e3 ? 2e3 : len;
|
|
614
|
+
len -= n;
|
|
615
|
+
do {
|
|
616
|
+
s1 = s1 + buf[pos++] | 0;
|
|
617
|
+
s2 = s2 + s1 | 0;
|
|
618
|
+
} while (--n);
|
|
619
|
+
s1 %= 65521;
|
|
620
|
+
s2 %= 65521;
|
|
621
|
+
}
|
|
622
|
+
return s1 | s2 << 16 | 0;
|
|
623
|
+
};
|
|
624
|
+
var makeTable = () => {
|
|
625
|
+
let c, table = [];
|
|
626
|
+
for (var n = 0; n < 256; n++) {
|
|
627
|
+
c = n;
|
|
628
|
+
for (var k = 0; k < 8; k++) c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;
|
|
629
|
+
table[n] = c;
|
|
630
|
+
}
|
|
631
|
+
return table;
|
|
632
|
+
};
|
|
633
|
+
var crcTable = new Uint32Array(makeTable());
|
|
634
|
+
var crc32 = (crc, buf, len, pos) => {
|
|
635
|
+
const t = crcTable;
|
|
636
|
+
const end = pos + len;
|
|
637
|
+
crc ^= -1;
|
|
638
|
+
for (let i = pos; i < end; i++) crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255];
|
|
639
|
+
return crc ^ -1;
|
|
640
|
+
};
|
|
641
|
+
var messages_default = {
|
|
642
|
+
2: "need dictionary",
|
|
643
|
+
1: "stream end",
|
|
644
|
+
0: "",
|
|
645
|
+
"-1": "file error",
|
|
646
|
+
"-2": "stream error",
|
|
647
|
+
"-3": "data error",
|
|
648
|
+
"-4": "insufficient memory",
|
|
649
|
+
"-5": "buffer error",
|
|
650
|
+
"-6": "incompatible version"
|
|
651
|
+
};
|
|
652
|
+
var MAX_MEM_LEVEL = 9;
|
|
653
|
+
var HEAP_SIZE = 573;
|
|
654
|
+
var MIN_MATCH = 3;
|
|
655
|
+
var MAX_MATCH = 258;
|
|
656
|
+
var MIN_LOOKAHEAD = 262;
|
|
657
|
+
var PRESET_DICT = 32;
|
|
658
|
+
var INIT_STATE = 42;
|
|
659
|
+
var GZIP_STATE = 57;
|
|
660
|
+
var EXTRA_STATE = 69;
|
|
661
|
+
var NAME_STATE = 73;
|
|
662
|
+
var COMMENT_STATE = 91;
|
|
663
|
+
var HCRC_STATE = 103;
|
|
664
|
+
var BUSY_STATE = 113;
|
|
665
|
+
var FINISH_STATE = 666;
|
|
666
|
+
var BS_NEED_MORE = 1;
|
|
667
|
+
var BS_BLOCK_DONE = 2;
|
|
668
|
+
var BS_FINISH_STARTED = 3;
|
|
669
|
+
var BS_FINISH_DONE = 4;
|
|
670
|
+
var OS_CODE = 3;
|
|
671
|
+
var err = (strm, errorCode) => {
|
|
672
|
+
strm.msg = messages_default[errorCode];
|
|
673
|
+
return errorCode;
|
|
674
|
+
};
|
|
675
|
+
var rank = (f) => {
|
|
676
|
+
return f * 2 - (f > 4 ? 9 : 0);
|
|
677
|
+
};
|
|
678
|
+
var zero = (buf) => {
|
|
679
|
+
let len = buf.length;
|
|
680
|
+
while (--len >= 0) buf[len] = 0;
|
|
681
|
+
};
|
|
682
|
+
var slide_hash = (s) => {
|
|
683
|
+
let n, m;
|
|
684
|
+
let p;
|
|
685
|
+
let wsize = s.w_size;
|
|
686
|
+
n = s.hash_size;
|
|
687
|
+
p = n;
|
|
688
|
+
do {
|
|
689
|
+
m = s.head[--p];
|
|
690
|
+
s.head[p] = m >= wsize ? m - wsize : 0;
|
|
691
|
+
} while (--n);
|
|
692
|
+
n = wsize;
|
|
693
|
+
p = n;
|
|
694
|
+
do {
|
|
695
|
+
m = s.prev[--p];
|
|
696
|
+
s.prev[p] = m >= wsize ? m - wsize : 0;
|
|
697
|
+
} while (--n);
|
|
698
|
+
};
|
|
699
|
+
var HASH = (s, prev, data) => (prev << s.hash_shift ^ data) & s.hash_mask;
|
|
700
|
+
var INSERT_STRING = (s, str) => {
|
|
701
|
+
let h;
|
|
702
|
+
if (s.legacy_hash) h = s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);
|
|
703
|
+
else {
|
|
704
|
+
const w = s.window;
|
|
705
|
+
const value = w[str] | w[str + 1] << 8 | w[str + 2] << 16 | w[str + 3] << 24;
|
|
706
|
+
h = s.ins_h = Math.imul(value, 66521) + 66521 >>> 16 & s.hash_mask;
|
|
707
|
+
}
|
|
708
|
+
const hash_head = s.prev[str & s.w_mask] = s.head[h];
|
|
709
|
+
s.head[h] = str;
|
|
710
|
+
return hash_head;
|
|
711
|
+
};
|
|
712
|
+
var flush_pending = (strm) => {
|
|
713
|
+
const s = strm.state;
|
|
714
|
+
let len = s.pending;
|
|
715
|
+
if (len > strm.avail_out) len = strm.avail_out;
|
|
716
|
+
if (len === 0) return;
|
|
717
|
+
strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);
|
|
718
|
+
strm.next_out += len;
|
|
719
|
+
s.pending_out += len;
|
|
720
|
+
strm.total_out += len;
|
|
721
|
+
strm.avail_out -= len;
|
|
722
|
+
s.pending -= len;
|
|
723
|
+
if (s.pending === 0) s.pending_out = 0;
|
|
724
|
+
};
|
|
725
|
+
var flush_block_only = (s, last) => {
|
|
726
|
+
_tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last);
|
|
727
|
+
s.block_start = s.strstart;
|
|
728
|
+
flush_pending(s.strm);
|
|
729
|
+
};
|
|
730
|
+
var put_byte = (s, b) => {
|
|
731
|
+
s.pending_buf[s.pending++] = b;
|
|
732
|
+
};
|
|
733
|
+
var putShortMSB = (s, b) => {
|
|
734
|
+
s.pending_buf[s.pending++] = b >>> 8 & 255;
|
|
735
|
+
s.pending_buf[s.pending++] = b & 255;
|
|
736
|
+
};
|
|
737
|
+
var read_buf = (strm, buf, start, size) => {
|
|
738
|
+
let len = strm.avail_in;
|
|
739
|
+
if (len > size) len = size;
|
|
740
|
+
if (len === 0) return 0;
|
|
741
|
+
strm.avail_in -= len;
|
|
742
|
+
buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);
|
|
743
|
+
if (strm.state.wrap === 1) strm.adler = adler32(strm.adler, buf, len, start);
|
|
744
|
+
else if (strm.state.wrap === 2) strm.adler = crc32(strm.adler, buf, len, start);
|
|
745
|
+
strm.next_in += len;
|
|
746
|
+
strm.total_in += len;
|
|
747
|
+
return len;
|
|
748
|
+
};
|
|
749
|
+
var longest_match = (s, cur_match) => {
|
|
750
|
+
let chain_length = s.max_chain_length;
|
|
751
|
+
let scan = s.strstart;
|
|
752
|
+
let match;
|
|
753
|
+
let len;
|
|
754
|
+
let best_len = s.prev_length;
|
|
755
|
+
let nice_match = s.nice_match;
|
|
756
|
+
const limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0;
|
|
757
|
+
const _win = s.window;
|
|
758
|
+
const wmask = s.w_mask;
|
|
759
|
+
const prev = s.prev;
|
|
760
|
+
const strend = s.strstart + MAX_MATCH;
|
|
761
|
+
let scan_end1 = _win[scan + best_len - 1];
|
|
762
|
+
let scan_end = _win[scan + best_len];
|
|
763
|
+
if (s.prev_length >= s.good_match) chain_length >>= 2;
|
|
764
|
+
if (nice_match > s.lookahead) nice_match = s.lookahead;
|
|
765
|
+
do {
|
|
766
|
+
match = cur_match;
|
|
767
|
+
if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) continue;
|
|
768
|
+
scan += 2;
|
|
769
|
+
match++;
|
|
770
|
+
do
|
|
771
|
+
;
|
|
772
|
+
while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend);
|
|
773
|
+
len = MAX_MATCH - (strend - scan);
|
|
774
|
+
scan = strend - MAX_MATCH;
|
|
775
|
+
if (len > best_len) {
|
|
776
|
+
s.match_start = cur_match;
|
|
777
|
+
best_len = len;
|
|
778
|
+
if (len >= nice_match) break;
|
|
779
|
+
scan_end1 = _win[scan + best_len - 1];
|
|
780
|
+
scan_end = _win[scan + best_len];
|
|
781
|
+
}
|
|
782
|
+
} while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
|
|
783
|
+
if (best_len <= s.lookahead) return best_len;
|
|
784
|
+
return s.lookahead;
|
|
785
|
+
};
|
|
786
|
+
var fill_window = (s) => {
|
|
787
|
+
const _w_size = s.w_size;
|
|
788
|
+
let n, more, str;
|
|
789
|
+
do {
|
|
790
|
+
more = s.window_size - s.lookahead - s.strstart;
|
|
791
|
+
if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
|
|
792
|
+
s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);
|
|
793
|
+
s.match_start -= _w_size;
|
|
794
|
+
s.strstart -= _w_size;
|
|
795
|
+
s.block_start -= _w_size;
|
|
796
|
+
if (s.insert > s.strstart) s.insert = s.strstart;
|
|
797
|
+
slide_hash(s);
|
|
798
|
+
more += _w_size;
|
|
799
|
+
}
|
|
800
|
+
if (s.strm.avail_in === 0) break;
|
|
801
|
+
n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
|
|
802
|
+
s.lookahead += n;
|
|
803
|
+
if (!s.legacy_hash) {
|
|
804
|
+
if (s.lookahead + s.insert > MIN_MATCH) {
|
|
805
|
+
str = s.strstart - s.insert;
|
|
806
|
+
while (s.insert) {
|
|
807
|
+
INSERT_STRING(s, str);
|
|
808
|
+
str++;
|
|
809
|
+
s.insert--;
|
|
810
|
+
if (s.lookahead + s.insert <= MIN_MATCH) break;
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
} else if (s.lookahead + s.insert >= MIN_MATCH) {
|
|
814
|
+
str = s.strstart - s.insert;
|
|
815
|
+
s.ins_h = s.window[str];
|
|
816
|
+
s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);
|
|
817
|
+
while (s.insert) {
|
|
818
|
+
INSERT_STRING(s, str);
|
|
819
|
+
str++;
|
|
820
|
+
s.insert--;
|
|
821
|
+
if (s.lookahead + s.insert < MIN_MATCH) break;
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
} while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
|
|
825
|
+
};
|
|
826
|
+
var deflate_stored = (s, flush) => {
|
|
827
|
+
let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;
|
|
828
|
+
let len, left, have, last = 0;
|
|
829
|
+
let used = s.strm.avail_in;
|
|
830
|
+
do {
|
|
831
|
+
len = 65535;
|
|
832
|
+
have = s.bi_valid + 42 >> 3;
|
|
833
|
+
if (s.strm.avail_out < have) break;
|
|
834
|
+
have = s.strm.avail_out - have;
|
|
835
|
+
left = s.strstart - s.block_start;
|
|
836
|
+
if (len > left + s.strm.avail_in) len = left + s.strm.avail_in;
|
|
837
|
+
if (len > have) len = have;
|
|
838
|
+
if (len < min_block && (len === 0 && flush !== 4 || flush === 0 || len !== left + s.strm.avail_in)) break;
|
|
839
|
+
last = flush === 4 && len === left + s.strm.avail_in ? 1 : 0;
|
|
840
|
+
_tr_stored_block(s, 0, 0, last);
|
|
841
|
+
s.pending_buf[s.pending - 4] = len;
|
|
842
|
+
s.pending_buf[s.pending - 3] = len >> 8;
|
|
843
|
+
s.pending_buf[s.pending - 2] = ~len;
|
|
844
|
+
s.pending_buf[s.pending - 1] = ~len >> 8;
|
|
845
|
+
flush_pending(s.strm);
|
|
846
|
+
if (left) {
|
|
847
|
+
if (left > len) left = len;
|
|
848
|
+
s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);
|
|
849
|
+
s.strm.next_out += left;
|
|
850
|
+
s.strm.avail_out -= left;
|
|
851
|
+
s.strm.total_out += left;
|
|
852
|
+
s.block_start += left;
|
|
853
|
+
len -= left;
|
|
854
|
+
}
|
|
855
|
+
if (len) {
|
|
856
|
+
read_buf(s.strm, s.strm.output, s.strm.next_out, len);
|
|
857
|
+
s.strm.next_out += len;
|
|
858
|
+
s.strm.avail_out -= len;
|
|
859
|
+
s.strm.total_out += len;
|
|
860
|
+
}
|
|
861
|
+
} while (last === 0);
|
|
862
|
+
used -= s.strm.avail_in;
|
|
863
|
+
if (used) {
|
|
864
|
+
if (used >= s.w_size) {
|
|
865
|
+
s.matches = 2;
|
|
866
|
+
s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);
|
|
867
|
+
s.strstart = s.w_size;
|
|
868
|
+
s.insert = s.strstart;
|
|
869
|
+
} else {
|
|
870
|
+
if (s.window_size - s.strstart <= used) {
|
|
871
|
+
s.strstart -= s.w_size;
|
|
872
|
+
s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);
|
|
873
|
+
if (s.matches < 2) s.matches++;
|
|
874
|
+
if (s.insert > s.strstart) s.insert = s.strstart;
|
|
875
|
+
}
|
|
876
|
+
s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);
|
|
877
|
+
s.strstart += used;
|
|
878
|
+
s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;
|
|
879
|
+
}
|
|
880
|
+
s.block_start = s.strstart;
|
|
881
|
+
}
|
|
882
|
+
if (s.high_water < s.strstart) s.high_water = s.strstart;
|
|
883
|
+
if (last) return BS_FINISH_DONE;
|
|
884
|
+
if (flush !== 0 && flush !== 4 && s.strm.avail_in === 0 && s.strstart === s.block_start) return BS_BLOCK_DONE;
|
|
885
|
+
have = s.window_size - s.strstart;
|
|
886
|
+
if (s.strm.avail_in > have && s.block_start >= s.w_size) {
|
|
887
|
+
s.block_start -= s.w_size;
|
|
888
|
+
s.strstart -= s.w_size;
|
|
889
|
+
s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);
|
|
890
|
+
if (s.matches < 2) s.matches++;
|
|
891
|
+
have += s.w_size;
|
|
892
|
+
if (s.insert > s.strstart) s.insert = s.strstart;
|
|
893
|
+
}
|
|
894
|
+
if (have > s.strm.avail_in) have = s.strm.avail_in;
|
|
895
|
+
if (have) {
|
|
896
|
+
read_buf(s.strm, s.window, s.strstart, have);
|
|
897
|
+
s.strstart += have;
|
|
898
|
+
s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;
|
|
899
|
+
}
|
|
900
|
+
if (s.high_water < s.strstart) s.high_water = s.strstart;
|
|
901
|
+
have = s.bi_valid + 42 >> 3;
|
|
902
|
+
have = s.pending_buf_size - have > 65535 ? 65535 : s.pending_buf_size - have;
|
|
903
|
+
min_block = have > s.w_size ? s.w_size : have;
|
|
904
|
+
left = s.strstart - s.block_start;
|
|
905
|
+
if (left >= min_block || (left || flush === 4) && flush !== 0 && s.strm.avail_in === 0 && left <= have) {
|
|
906
|
+
len = left > have ? have : left;
|
|
907
|
+
last = flush === 4 && s.strm.avail_in === 0 && len === left ? 1 : 0;
|
|
908
|
+
_tr_stored_block(s, s.block_start, len, last);
|
|
909
|
+
s.block_start += len;
|
|
910
|
+
flush_pending(s.strm);
|
|
911
|
+
}
|
|
912
|
+
return last ? BS_FINISH_STARTED : BS_NEED_MORE;
|
|
913
|
+
};
|
|
914
|
+
var deflate_fast = (s, flush) => {
|
|
915
|
+
let hash_head;
|
|
916
|
+
let bflush;
|
|
917
|
+
for (; ; ) {
|
|
918
|
+
if (s.lookahead < MIN_LOOKAHEAD) {
|
|
919
|
+
fill_window(s);
|
|
920
|
+
if (s.lookahead < MIN_LOOKAHEAD && flush === 0) return BS_NEED_MORE;
|
|
921
|
+
if (s.lookahead === 0) break;
|
|
922
|
+
}
|
|
923
|
+
hash_head = 0;
|
|
924
|
+
if (s.lookahead >= MIN_MATCH) hash_head = INSERT_STRING(s, s.strstart);
|
|
925
|
+
if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) s.match_length = longest_match(s, hash_head);
|
|
926
|
+
if (s.match_length >= MIN_MATCH) {
|
|
927
|
+
bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
|
|
928
|
+
s.lookahead -= s.match_length;
|
|
929
|
+
if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) {
|
|
930
|
+
s.match_length--;
|
|
931
|
+
do {
|
|
932
|
+
s.strstart++;
|
|
933
|
+
hash_head = INSERT_STRING(s, s.strstart);
|
|
934
|
+
} while (--s.match_length !== 0);
|
|
935
|
+
s.strstart++;
|
|
936
|
+
} else {
|
|
937
|
+
s.strstart += s.match_length;
|
|
938
|
+
s.match_length = 0;
|
|
939
|
+
if (s.legacy_hash) {
|
|
940
|
+
s.ins_h = s.window[s.strstart];
|
|
941
|
+
s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
} else {
|
|
945
|
+
bflush = _tr_tally(s, 0, s.window[s.strstart]);
|
|
946
|
+
s.lookahead--;
|
|
947
|
+
s.strstart++;
|
|
948
|
+
}
|
|
949
|
+
if (bflush) {
|
|
950
|
+
flush_block_only(s, false);
|
|
951
|
+
if (s.strm.avail_out === 0) return BS_NEED_MORE;
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
|
|
955
|
+
if (flush === 4) {
|
|
956
|
+
flush_block_only(s, true);
|
|
957
|
+
if (s.strm.avail_out === 0) return BS_FINISH_STARTED;
|
|
958
|
+
return BS_FINISH_DONE;
|
|
959
|
+
}
|
|
960
|
+
if (s.sym_next) {
|
|
961
|
+
flush_block_only(s, false);
|
|
962
|
+
if (s.strm.avail_out === 0) return BS_NEED_MORE;
|
|
963
|
+
}
|
|
964
|
+
return BS_BLOCK_DONE;
|
|
965
|
+
};
|
|
966
|
+
var deflate_slow = (s, flush) => {
|
|
967
|
+
let hash_head;
|
|
968
|
+
let bflush;
|
|
969
|
+
let max_insert;
|
|
970
|
+
for (; ; ) {
|
|
971
|
+
if (s.lookahead < MIN_LOOKAHEAD) {
|
|
972
|
+
fill_window(s);
|
|
973
|
+
if (s.lookahead < MIN_LOOKAHEAD && flush === 0) return BS_NEED_MORE;
|
|
974
|
+
if (s.lookahead === 0) break;
|
|
975
|
+
}
|
|
976
|
+
hash_head = 0;
|
|
977
|
+
if (s.lookahead >= MIN_MATCH) hash_head = INSERT_STRING(s, s.strstart);
|
|
978
|
+
s.prev_length = s.match_length;
|
|
979
|
+
s.prev_match = s.match_start;
|
|
980
|
+
s.match_length = MIN_MATCH - 1;
|
|
981
|
+
if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {
|
|
982
|
+
s.match_length = longest_match(s, hash_head);
|
|
983
|
+
if (s.match_length <= 5 && (s.strategy === 1 || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) s.match_length = MIN_MATCH - 1;
|
|
984
|
+
}
|
|
985
|
+
if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
|
|
986
|
+
max_insert = s.strstart + s.lookahead - MIN_MATCH;
|
|
987
|
+
bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
|
|
988
|
+
s.lookahead -= s.prev_length - 1;
|
|
989
|
+
s.prev_length -= 2;
|
|
990
|
+
do
|
|
991
|
+
if (++s.strstart <= max_insert) hash_head = INSERT_STRING(s, s.strstart);
|
|
992
|
+
while (--s.prev_length !== 0);
|
|
993
|
+
s.match_available = 0;
|
|
994
|
+
s.match_length = MIN_MATCH - 1;
|
|
995
|
+
s.strstart++;
|
|
996
|
+
if (bflush) {
|
|
997
|
+
flush_block_only(s, false);
|
|
998
|
+
if (s.strm.avail_out === 0) return BS_NEED_MORE;
|
|
999
|
+
}
|
|
1000
|
+
} else if (s.match_available) {
|
|
1001
|
+
bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);
|
|
1002
|
+
if (bflush)
|
|
1003
|
+
flush_block_only(s, false);
|
|
1004
|
+
s.strstart++;
|
|
1005
|
+
s.lookahead--;
|
|
1006
|
+
if (s.strm.avail_out === 0) return BS_NEED_MORE;
|
|
1007
|
+
} else {
|
|
1008
|
+
s.match_available = 1;
|
|
1009
|
+
s.strstart++;
|
|
1010
|
+
s.lookahead--;
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
if (s.match_available) {
|
|
1014
|
+
bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);
|
|
1015
|
+
s.match_available = 0;
|
|
1016
|
+
}
|
|
1017
|
+
s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
|
|
1018
|
+
if (flush === 4) {
|
|
1019
|
+
flush_block_only(s, true);
|
|
1020
|
+
if (s.strm.avail_out === 0) return BS_FINISH_STARTED;
|
|
1021
|
+
return BS_FINISH_DONE;
|
|
1022
|
+
}
|
|
1023
|
+
if (s.sym_next) {
|
|
1024
|
+
flush_block_only(s, false);
|
|
1025
|
+
if (s.strm.avail_out === 0) return BS_NEED_MORE;
|
|
1026
|
+
}
|
|
1027
|
+
return BS_BLOCK_DONE;
|
|
1028
|
+
};
|
|
1029
|
+
var deflate_rle = (s, flush) => {
|
|
1030
|
+
let bflush;
|
|
1031
|
+
let prev;
|
|
1032
|
+
let scan, strend;
|
|
1033
|
+
const _win = s.window;
|
|
1034
|
+
for (; ; ) {
|
|
1035
|
+
if (s.lookahead <= MAX_MATCH) {
|
|
1036
|
+
fill_window(s);
|
|
1037
|
+
if (s.lookahead <= MAX_MATCH && flush === 0) return BS_NEED_MORE;
|
|
1038
|
+
if (s.lookahead === 0) break;
|
|
1039
|
+
}
|
|
1040
|
+
s.match_length = 0;
|
|
1041
|
+
if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
|
|
1042
|
+
scan = s.strstart - 1;
|
|
1043
|
+
prev = _win[scan];
|
|
1044
|
+
if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
|
|
1045
|
+
strend = s.strstart + MAX_MATCH;
|
|
1046
|
+
do
|
|
1047
|
+
;
|
|
1048
|
+
while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend);
|
|
1049
|
+
s.match_length = MAX_MATCH - (strend - scan);
|
|
1050
|
+
if (s.match_length > s.lookahead) s.match_length = s.lookahead;
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
if (s.match_length >= MIN_MATCH) {
|
|
1054
|
+
bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);
|
|
1055
|
+
s.lookahead -= s.match_length;
|
|
1056
|
+
s.strstart += s.match_length;
|
|
1057
|
+
s.match_length = 0;
|
|
1058
|
+
} else {
|
|
1059
|
+
bflush = _tr_tally(s, 0, s.window[s.strstart]);
|
|
1060
|
+
s.lookahead--;
|
|
1061
|
+
s.strstart++;
|
|
1062
|
+
}
|
|
1063
|
+
if (bflush) {
|
|
1064
|
+
flush_block_only(s, false);
|
|
1065
|
+
if (s.strm.avail_out === 0) return BS_NEED_MORE;
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
s.insert = 0;
|
|
1069
|
+
if (flush === 4) {
|
|
1070
|
+
flush_block_only(s, true);
|
|
1071
|
+
if (s.strm.avail_out === 0) return BS_FINISH_STARTED;
|
|
1072
|
+
return BS_FINISH_DONE;
|
|
1073
|
+
}
|
|
1074
|
+
if (s.sym_next) {
|
|
1075
|
+
flush_block_only(s, false);
|
|
1076
|
+
if (s.strm.avail_out === 0) return BS_NEED_MORE;
|
|
1077
|
+
}
|
|
1078
|
+
return BS_BLOCK_DONE;
|
|
1079
|
+
};
|
|
1080
|
+
var deflate_huff = (s, flush) => {
|
|
1081
|
+
let bflush;
|
|
1082
|
+
for (; ; ) {
|
|
1083
|
+
if (s.lookahead === 0) {
|
|
1084
|
+
fill_window(s);
|
|
1085
|
+
if (s.lookahead === 0) {
|
|
1086
|
+
if (flush === 0) return BS_NEED_MORE;
|
|
1087
|
+
break;
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
s.match_length = 0;
|
|
1091
|
+
bflush = _tr_tally(s, 0, s.window[s.strstart]);
|
|
1092
|
+
s.lookahead--;
|
|
1093
|
+
s.strstart++;
|
|
1094
|
+
if (bflush) {
|
|
1095
|
+
flush_block_only(s, false);
|
|
1096
|
+
if (s.strm.avail_out === 0) return BS_NEED_MORE;
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
s.insert = 0;
|
|
1100
|
+
if (flush === 4) {
|
|
1101
|
+
flush_block_only(s, true);
|
|
1102
|
+
if (s.strm.avail_out === 0) return BS_FINISH_STARTED;
|
|
1103
|
+
return BS_FINISH_DONE;
|
|
1104
|
+
}
|
|
1105
|
+
if (s.sym_next) {
|
|
1106
|
+
flush_block_only(s, false);
|
|
1107
|
+
if (s.strm.avail_out === 0) return BS_NEED_MORE;
|
|
1108
|
+
}
|
|
1109
|
+
return BS_BLOCK_DONE;
|
|
1110
|
+
};
|
|
1111
|
+
var Config = class {
|
|
1112
|
+
constructor(good_length, max_lazy, nice_length, max_chain, func) {
|
|
1113
|
+
this.good_length = good_length;
|
|
1114
|
+
this.max_lazy = max_lazy;
|
|
1115
|
+
this.nice_length = nice_length;
|
|
1116
|
+
this.max_chain = max_chain;
|
|
1117
|
+
this.func = func;
|
|
1118
|
+
}
|
|
1119
|
+
};
|
|
1120
|
+
var configuration_table = [
|
|
1121
|
+
new Config(0, 0, 0, 0, deflate_stored),
|
|
1122
|
+
new Config(4, 4, 8, 4, deflate_fast),
|
|
1123
|
+
new Config(4, 5, 16, 8, deflate_fast),
|
|
1124
|
+
new Config(4, 6, 32, 32, deflate_fast),
|
|
1125
|
+
new Config(4, 4, 16, 16, deflate_slow),
|
|
1126
|
+
new Config(8, 16, 32, 32, deflate_slow),
|
|
1127
|
+
new Config(8, 16, 128, 128, deflate_slow),
|
|
1128
|
+
new Config(8, 32, 128, 256, deflate_slow),
|
|
1129
|
+
new Config(32, 128, 258, 1024, deflate_slow),
|
|
1130
|
+
new Config(32, 258, 258, 4096, deflate_slow)
|
|
1131
|
+
];
|
|
1132
|
+
var lm_init = (s) => {
|
|
1133
|
+
s.window_size = 2 * s.w_size;
|
|
1134
|
+
zero(s.head);
|
|
1135
|
+
s.max_lazy_match = configuration_table[s.level].max_lazy;
|
|
1136
|
+
s.good_match = configuration_table[s.level].good_length;
|
|
1137
|
+
s.nice_match = configuration_table[s.level].nice_length;
|
|
1138
|
+
s.max_chain_length = configuration_table[s.level].max_chain;
|
|
1139
|
+
s.strstart = 0;
|
|
1140
|
+
s.block_start = 0;
|
|
1141
|
+
s.lookahead = 0;
|
|
1142
|
+
s.insert = 0;
|
|
1143
|
+
s.match_length = s.prev_length = MIN_MATCH - 1;
|
|
1144
|
+
s.match_available = 0;
|
|
1145
|
+
s.ins_h = 0;
|
|
1146
|
+
};
|
|
1147
|
+
var DeflateState = class {
|
|
1148
|
+
constructor() {
|
|
1149
|
+
this.strm = null;
|
|
1150
|
+
this.status = 0;
|
|
1151
|
+
this.pending_buf = null;
|
|
1152
|
+
this.pending_buf_size = 0;
|
|
1153
|
+
this.pending_out = 0;
|
|
1154
|
+
this.pending = 0;
|
|
1155
|
+
this.wrap = 0;
|
|
1156
|
+
this.gzhead = null;
|
|
1157
|
+
this.gzindex = 0;
|
|
1158
|
+
this.method = 8;
|
|
1159
|
+
this.last_flush = -1;
|
|
1160
|
+
this.w_size = 0;
|
|
1161
|
+
this.w_bits = 0;
|
|
1162
|
+
this.w_mask = 0;
|
|
1163
|
+
this.window = null;
|
|
1164
|
+
this.window_size = 0;
|
|
1165
|
+
this.prev = null;
|
|
1166
|
+
this.head = null;
|
|
1167
|
+
this.ins_h = 0;
|
|
1168
|
+
this.legacy_hash = 0;
|
|
1169
|
+
this.hash_size = 0;
|
|
1170
|
+
this.hash_bits = 0;
|
|
1171
|
+
this.hash_mask = 0;
|
|
1172
|
+
this.hash_shift = 0;
|
|
1173
|
+
this.block_start = 0;
|
|
1174
|
+
this.match_length = 0;
|
|
1175
|
+
this.prev_match = 0;
|
|
1176
|
+
this.match_available = 0;
|
|
1177
|
+
this.strstart = 0;
|
|
1178
|
+
this.match_start = 0;
|
|
1179
|
+
this.lookahead = 0;
|
|
1180
|
+
this.prev_length = 0;
|
|
1181
|
+
this.max_chain_length = 0;
|
|
1182
|
+
this.max_lazy_match = 0;
|
|
1183
|
+
this.level = 0;
|
|
1184
|
+
this.strategy = 0;
|
|
1185
|
+
this.good_match = 0;
|
|
1186
|
+
this.nice_match = 0;
|
|
1187
|
+
this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);
|
|
1188
|
+
this.dyn_dtree = /* @__PURE__ */ new Uint16Array(122);
|
|
1189
|
+
this.bl_tree = /* @__PURE__ */ new Uint16Array(78);
|
|
1190
|
+
zero(this.dyn_ltree);
|
|
1191
|
+
zero(this.dyn_dtree);
|
|
1192
|
+
zero(this.bl_tree);
|
|
1193
|
+
this.l_desc = null;
|
|
1194
|
+
this.d_desc = null;
|
|
1195
|
+
this.bl_desc = null;
|
|
1196
|
+
this.bl_count = /* @__PURE__ */ new Uint16Array(16);
|
|
1197
|
+
this.heap = /* @__PURE__ */ new Uint16Array(573);
|
|
1198
|
+
zero(this.heap);
|
|
1199
|
+
this.heap_len = 0;
|
|
1200
|
+
this.heap_max = 0;
|
|
1201
|
+
this.depth = /* @__PURE__ */ new Uint16Array(573);
|
|
1202
|
+
zero(this.depth);
|
|
1203
|
+
this.sym_buf = 0;
|
|
1204
|
+
this.lit_bufsize = 0;
|
|
1205
|
+
this.sym_next = 0;
|
|
1206
|
+
this.sym_end = 0;
|
|
1207
|
+
this.opt_len = 0;
|
|
1208
|
+
this.static_len = 0;
|
|
1209
|
+
this.matches = 0;
|
|
1210
|
+
this.insert = 0;
|
|
1211
|
+
this.bi_buf = 0;
|
|
1212
|
+
this.bi_valid = 0;
|
|
1213
|
+
}
|
|
1214
|
+
};
|
|
1215
|
+
var deflateStateCheck = (strm) => {
|
|
1216
|
+
if (!strm) return 1;
|
|
1217
|
+
const s = strm.state;
|
|
1218
|
+
if (!s || s.strm !== strm || s.status !== INIT_STATE && s.status !== GZIP_STATE && s.status !== EXTRA_STATE && s.status !== NAME_STATE && s.status !== COMMENT_STATE && s.status !== HCRC_STATE && s.status !== BUSY_STATE && s.status !== FINISH_STATE) return 1;
|
|
1219
|
+
return 0;
|
|
1220
|
+
};
|
|
1221
|
+
var deflateResetKeep = (strm) => {
|
|
1222
|
+
if (deflateStateCheck(strm)) return err(strm, -2);
|
|
1223
|
+
strm.total_in = strm.total_out = 0;
|
|
1224
|
+
strm.data_type = 2;
|
|
1225
|
+
const s = strm.state;
|
|
1226
|
+
s.pending = 0;
|
|
1227
|
+
s.pending_out = 0;
|
|
1228
|
+
if (s.wrap < 0) s.wrap = -s.wrap;
|
|
1229
|
+
s.status = s.wrap === 2 ? GZIP_STATE : s.wrap ? INIT_STATE : BUSY_STATE;
|
|
1230
|
+
strm.adler = s.wrap === 2 ? 0 : 1;
|
|
1231
|
+
s.last_flush = -2;
|
|
1232
|
+
_tr_init(s);
|
|
1233
|
+
return 0;
|
|
1234
|
+
};
|
|
1235
|
+
var deflateReset = (strm) => {
|
|
1236
|
+
const ret = deflateResetKeep(strm);
|
|
1237
|
+
if (ret === 0) lm_init(strm.state);
|
|
1238
|
+
return ret;
|
|
1239
|
+
};
|
|
1240
|
+
var deflateInit2 = (strm, level, method, windowBits, memLevel, strategy, legacyHash) => {
|
|
1241
|
+
if (!strm) return -2;
|
|
1242
|
+
let wrap = 1;
|
|
1243
|
+
if (level === -1) level = 6;
|
|
1244
|
+
if (windowBits < 0) {
|
|
1245
|
+
wrap = 0;
|
|
1246
|
+
windowBits = -windowBits;
|
|
1247
|
+
} else if (windowBits > 15) {
|
|
1248
|
+
wrap = 2;
|
|
1249
|
+
windowBits -= 16;
|
|
1250
|
+
}
|
|
1251
|
+
if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== 8 || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > 4 || windowBits === 8 && wrap !== 1) return err(strm, -2);
|
|
1252
|
+
if (windowBits === 8) windowBits = 9;
|
|
1253
|
+
const s = new DeflateState();
|
|
1254
|
+
strm.state = s;
|
|
1255
|
+
s.strm = strm;
|
|
1256
|
+
s.status = INIT_STATE;
|
|
1257
|
+
s.wrap = wrap;
|
|
1258
|
+
s.gzhead = null;
|
|
1259
|
+
s.w_bits = windowBits;
|
|
1260
|
+
s.w_size = 1 << s.w_bits;
|
|
1261
|
+
s.w_mask = s.w_size - 1;
|
|
1262
|
+
s.legacy_hash = legacyHash ? 1 : 0;
|
|
1263
|
+
s.hash_bits = memLevel + 7;
|
|
1264
|
+
if (!s.legacy_hash && s.hash_bits < 15) s.hash_bits = 15;
|
|
1265
|
+
s.hash_size = 1 << s.hash_bits;
|
|
1266
|
+
s.hash_mask = s.hash_size - 1;
|
|
1267
|
+
s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
|
|
1268
|
+
s.window = new Uint8Array(s.w_size * 2);
|
|
1269
|
+
s.head = new Uint16Array(s.hash_size);
|
|
1270
|
+
s.prev = new Uint16Array(s.w_size);
|
|
1271
|
+
s.lit_bufsize = 1 << memLevel + 6;
|
|
1272
|
+
s.pending_buf_size = s.lit_bufsize * 4;
|
|
1273
|
+
s.pending_buf = new Uint8Array(s.pending_buf_size);
|
|
1274
|
+
s.sym_buf = s.lit_bufsize;
|
|
1275
|
+
s.sym_end = (s.lit_bufsize - 1) * 3;
|
|
1276
|
+
s.level = level;
|
|
1277
|
+
s.strategy = strategy;
|
|
1278
|
+
s.method = method;
|
|
1279
|
+
return deflateReset(strm);
|
|
1280
|
+
};
|
|
1281
|
+
var deflate$1 = (strm, flush) => {
|
|
1282
|
+
if (deflateStateCheck(strm) || flush > 5 || flush < 0) return strm ? err(strm, -2) : -2;
|
|
1283
|
+
const s = strm.state;
|
|
1284
|
+
if (!strm.output || strm.avail_in !== 0 && !strm.input || s.status === FINISH_STATE && flush !== 4) return err(strm, strm.avail_out === 0 ? -5 : -2);
|
|
1285
|
+
const old_flush = s.last_flush;
|
|
1286
|
+
s.last_flush = flush;
|
|
1287
|
+
if (s.pending !== 0) {
|
|
1288
|
+
flush_pending(strm);
|
|
1289
|
+
if (strm.avail_out === 0) {
|
|
1290
|
+
s.last_flush = -1;
|
|
1291
|
+
return 0;
|
|
1292
|
+
}
|
|
1293
|
+
} else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== 4) return err(strm, -5);
|
|
1294
|
+
if (s.status === FINISH_STATE && strm.avail_in !== 0) return err(strm, -5);
|
|
1295
|
+
if (s.status === INIT_STATE && s.wrap === 0) s.status = BUSY_STATE;
|
|
1296
|
+
if (s.status === INIT_STATE) {
|
|
1297
|
+
let header = 8 + (s.w_bits - 8 << 4) << 8;
|
|
1298
|
+
let level_flags = -1;
|
|
1299
|
+
if (s.strategy >= 2 || s.level < 2) level_flags = 0;
|
|
1300
|
+
else if (s.level < 6) level_flags = 1;
|
|
1301
|
+
else if (s.level === 6) level_flags = 2;
|
|
1302
|
+
else level_flags = 3;
|
|
1303
|
+
header |= level_flags << 6;
|
|
1304
|
+
if (s.strstart !== 0) header |= PRESET_DICT;
|
|
1305
|
+
header += 31 - header % 31;
|
|
1306
|
+
putShortMSB(s, header);
|
|
1307
|
+
if (s.strstart !== 0) {
|
|
1308
|
+
putShortMSB(s, strm.adler >>> 16);
|
|
1309
|
+
putShortMSB(s, strm.adler & 65535);
|
|
1310
|
+
}
|
|
1311
|
+
strm.adler = 1;
|
|
1312
|
+
s.status = BUSY_STATE;
|
|
1313
|
+
flush_pending(strm);
|
|
1314
|
+
if (s.pending !== 0) {
|
|
1315
|
+
s.last_flush = -1;
|
|
1316
|
+
return 0;
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
if (s.status === GZIP_STATE) {
|
|
1320
|
+
strm.adler = 0;
|
|
1321
|
+
put_byte(s, 31);
|
|
1322
|
+
put_byte(s, 139);
|
|
1323
|
+
put_byte(s, 8);
|
|
1324
|
+
if (!s.gzhead) {
|
|
1325
|
+
put_byte(s, 0);
|
|
1326
|
+
put_byte(s, 0);
|
|
1327
|
+
put_byte(s, 0);
|
|
1328
|
+
put_byte(s, 0);
|
|
1329
|
+
put_byte(s, 0);
|
|
1330
|
+
put_byte(s, s.level === 9 ? 2 : s.strategy >= 2 || s.level < 2 ? 4 : 0);
|
|
1331
|
+
put_byte(s, OS_CODE);
|
|
1332
|
+
s.status = BUSY_STATE;
|
|
1333
|
+
flush_pending(strm);
|
|
1334
|
+
if (s.pending !== 0) {
|
|
1335
|
+
s.last_flush = -1;
|
|
1336
|
+
return 0;
|
|
1337
|
+
}
|
|
1338
|
+
} else {
|
|
1339
|
+
put_byte(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16));
|
|
1340
|
+
put_byte(s, s.gzhead.time & 255);
|
|
1341
|
+
put_byte(s, s.gzhead.time >> 8 & 255);
|
|
1342
|
+
put_byte(s, s.gzhead.time >> 16 & 255);
|
|
1343
|
+
put_byte(s, s.gzhead.time >> 24 & 255);
|
|
1344
|
+
put_byte(s, s.level === 9 ? 2 : s.strategy >= 2 || s.level < 2 ? 4 : 0);
|
|
1345
|
+
put_byte(s, s.gzhead.os & 255);
|
|
1346
|
+
if (s.gzhead.extra && s.gzhead.extra.length) {
|
|
1347
|
+
put_byte(s, s.gzhead.extra.length & 255);
|
|
1348
|
+
put_byte(s, s.gzhead.extra.length >> 8 & 255);
|
|
1349
|
+
}
|
|
1350
|
+
if (s.gzhead.hcrc) strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
|
|
1351
|
+
s.gzindex = 0;
|
|
1352
|
+
s.status = EXTRA_STATE;
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
if (s.status === EXTRA_STATE) {
|
|
1356
|
+
if (s.gzhead.extra) {
|
|
1357
|
+
let beg = s.pending;
|
|
1358
|
+
let left = (s.gzhead.extra.length & 65535) - s.gzindex;
|
|
1359
|
+
while (s.pending + left > s.pending_buf_size) {
|
|
1360
|
+
let copy = s.pending_buf_size - s.pending;
|
|
1361
|
+
s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);
|
|
1362
|
+
s.pending = s.pending_buf_size;
|
|
1363
|
+
if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
|
|
1364
|
+
s.gzindex += copy;
|
|
1365
|
+
flush_pending(strm);
|
|
1366
|
+
if (s.pending !== 0) {
|
|
1367
|
+
s.last_flush = -1;
|
|
1368
|
+
return 0;
|
|
1369
|
+
}
|
|
1370
|
+
beg = 0;
|
|
1371
|
+
left -= copy;
|
|
1372
|
+
}
|
|
1373
|
+
let gzhead_extra = new Uint8Array(s.gzhead.extra);
|
|
1374
|
+
s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);
|
|
1375
|
+
s.pending += left;
|
|
1376
|
+
if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
|
|
1377
|
+
s.gzindex = 0;
|
|
1378
|
+
}
|
|
1379
|
+
s.status = NAME_STATE;
|
|
1380
|
+
}
|
|
1381
|
+
if (s.status === NAME_STATE) {
|
|
1382
|
+
if (s.gzhead.name) {
|
|
1383
|
+
let beg = s.pending;
|
|
1384
|
+
let val;
|
|
1385
|
+
do {
|
|
1386
|
+
if (s.pending === s.pending_buf_size) {
|
|
1387
|
+
if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
|
|
1388
|
+
flush_pending(strm);
|
|
1389
|
+
if (s.pending !== 0) {
|
|
1390
|
+
s.last_flush = -1;
|
|
1391
|
+
return 0;
|
|
1392
|
+
}
|
|
1393
|
+
beg = 0;
|
|
1394
|
+
}
|
|
1395
|
+
if (s.gzindex < s.gzhead.name.length) val = s.gzhead.name.charCodeAt(s.gzindex++) & 255;
|
|
1396
|
+
else val = 0;
|
|
1397
|
+
put_byte(s, val);
|
|
1398
|
+
} while (val !== 0);
|
|
1399
|
+
if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
|
|
1400
|
+
s.gzindex = 0;
|
|
1401
|
+
}
|
|
1402
|
+
s.status = COMMENT_STATE;
|
|
1403
|
+
}
|
|
1404
|
+
if (s.status === COMMENT_STATE) {
|
|
1405
|
+
if (s.gzhead.comment) {
|
|
1406
|
+
let beg = s.pending;
|
|
1407
|
+
let val;
|
|
1408
|
+
do {
|
|
1409
|
+
if (s.pending === s.pending_buf_size) {
|
|
1410
|
+
if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
|
|
1411
|
+
flush_pending(strm);
|
|
1412
|
+
if (s.pending !== 0) {
|
|
1413
|
+
s.last_flush = -1;
|
|
1414
|
+
return 0;
|
|
1415
|
+
}
|
|
1416
|
+
beg = 0;
|
|
1417
|
+
}
|
|
1418
|
+
if (s.gzindex < s.gzhead.comment.length) val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255;
|
|
1419
|
+
else val = 0;
|
|
1420
|
+
put_byte(s, val);
|
|
1421
|
+
} while (val !== 0);
|
|
1422
|
+
if (s.gzhead.hcrc && s.pending > beg) strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
|
|
1423
|
+
}
|
|
1424
|
+
s.status = HCRC_STATE;
|
|
1425
|
+
}
|
|
1426
|
+
if (s.status === HCRC_STATE) {
|
|
1427
|
+
if (s.gzhead.hcrc) {
|
|
1428
|
+
if (s.pending + 2 > s.pending_buf_size) {
|
|
1429
|
+
flush_pending(strm);
|
|
1430
|
+
if (s.pending !== 0) {
|
|
1431
|
+
s.last_flush = -1;
|
|
1432
|
+
return 0;
|
|
1433
|
+
}
|
|
1434
|
+
}
|
|
1435
|
+
put_byte(s, strm.adler & 255);
|
|
1436
|
+
put_byte(s, strm.adler >> 8 & 255);
|
|
1437
|
+
strm.adler = 0;
|
|
1438
|
+
}
|
|
1439
|
+
s.status = BUSY_STATE;
|
|
1440
|
+
flush_pending(strm);
|
|
1441
|
+
if (s.pending !== 0) {
|
|
1442
|
+
s.last_flush = -1;
|
|
1443
|
+
return 0;
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== 0 && s.status !== FINISH_STATE) {
|
|
1447
|
+
let bstate = s.level === 0 ? deflate_stored(s, flush) : s.strategy === 2 ? deflate_huff(s, flush) : s.strategy === 3 ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush);
|
|
1448
|
+
if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) s.status = FINISH_STATE;
|
|
1449
|
+
if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
|
|
1450
|
+
if (strm.avail_out === 0) s.last_flush = -1;
|
|
1451
|
+
return 0;
|
|
1452
|
+
}
|
|
1453
|
+
if (bstate === BS_BLOCK_DONE) {
|
|
1454
|
+
if (flush === 1) _tr_align(s);
|
|
1455
|
+
else if (flush !== 5) {
|
|
1456
|
+
_tr_stored_block(s, 0, 0, false);
|
|
1457
|
+
if (flush === 3) {
|
|
1458
|
+
zero(s.head);
|
|
1459
|
+
if (s.lookahead === 0) {
|
|
1460
|
+
s.strstart = 0;
|
|
1461
|
+
s.block_start = 0;
|
|
1462
|
+
s.insert = 0;
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
}
|
|
1466
|
+
flush_pending(strm);
|
|
1467
|
+
if (strm.avail_out === 0) {
|
|
1468
|
+
s.last_flush = -1;
|
|
1469
|
+
return 0;
|
|
1470
|
+
}
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
if (flush !== 4) return 0;
|
|
1474
|
+
if (s.wrap <= 0) return 1;
|
|
1475
|
+
if (s.wrap === 2) {
|
|
1476
|
+
put_byte(s, strm.adler & 255);
|
|
1477
|
+
put_byte(s, strm.adler >> 8 & 255);
|
|
1478
|
+
put_byte(s, strm.adler >> 16 & 255);
|
|
1479
|
+
put_byte(s, strm.adler >> 24 & 255);
|
|
1480
|
+
put_byte(s, strm.total_in & 255);
|
|
1481
|
+
put_byte(s, strm.total_in >> 8 & 255);
|
|
1482
|
+
put_byte(s, strm.total_in >> 16 & 255);
|
|
1483
|
+
put_byte(s, strm.total_in >> 24 & 255);
|
|
1484
|
+
} else {
|
|
1485
|
+
putShortMSB(s, strm.adler >>> 16);
|
|
1486
|
+
putShortMSB(s, strm.adler & 65535);
|
|
1487
|
+
}
|
|
1488
|
+
flush_pending(strm);
|
|
1489
|
+
if (s.wrap > 0) s.wrap = -s.wrap;
|
|
1490
|
+
return s.pending !== 0 ? 0 : 1;
|
|
1491
|
+
};
|
|
1492
|
+
var deflateEnd = (strm) => {
|
|
1493
|
+
if (deflateStateCheck(strm)) return -2;
|
|
1494
|
+
const status = strm.state.status;
|
|
1495
|
+
strm.state = null;
|
|
1496
|
+
return status === BUSY_STATE ? err(strm, -3) : 0;
|
|
1497
|
+
};
|
|
1498
|
+
var deflateSetDictionary = (strm, dictionary) => {
|
|
1499
|
+
let dictLength = dictionary.length;
|
|
1500
|
+
if (deflateStateCheck(strm)) return -2;
|
|
1501
|
+
const s = strm.state;
|
|
1502
|
+
const wrap = s.wrap;
|
|
1503
|
+
if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) return -2;
|
|
1504
|
+
if (wrap === 1) strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
|
|
1505
|
+
s.wrap = 0;
|
|
1506
|
+
if (dictLength >= s.w_size) {
|
|
1507
|
+
if (wrap === 0) {
|
|
1508
|
+
zero(s.head);
|
|
1509
|
+
s.strstart = 0;
|
|
1510
|
+
s.block_start = 0;
|
|
1511
|
+
s.insert = 0;
|
|
1512
|
+
}
|
|
1513
|
+
let tmpDict = new Uint8Array(s.w_size);
|
|
1514
|
+
tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);
|
|
1515
|
+
dictionary = tmpDict;
|
|
1516
|
+
dictLength = s.w_size;
|
|
1517
|
+
}
|
|
1518
|
+
const avail = strm.avail_in;
|
|
1519
|
+
const next = strm.next_in;
|
|
1520
|
+
const input = strm.input;
|
|
1521
|
+
strm.avail_in = dictLength;
|
|
1522
|
+
strm.next_in = 0;
|
|
1523
|
+
strm.input = dictionary;
|
|
1524
|
+
fill_window(s);
|
|
1525
|
+
while (s.lookahead >= MIN_MATCH) {
|
|
1526
|
+
let str = s.strstart;
|
|
1527
|
+
let n = s.lookahead - (MIN_MATCH - 1);
|
|
1528
|
+
do {
|
|
1529
|
+
INSERT_STRING(s, str);
|
|
1530
|
+
str++;
|
|
1531
|
+
} while (--n);
|
|
1532
|
+
s.strstart = str;
|
|
1533
|
+
s.lookahead = MIN_MATCH - 1;
|
|
1534
|
+
fill_window(s);
|
|
1535
|
+
}
|
|
1536
|
+
s.strstart += s.lookahead;
|
|
1537
|
+
s.block_start = s.strstart;
|
|
1538
|
+
s.insert = s.lookahead;
|
|
1539
|
+
s.lookahead = 0;
|
|
1540
|
+
s.match_length = s.prev_length = MIN_MATCH - 1;
|
|
1541
|
+
s.match_available = 0;
|
|
1542
|
+
strm.next_in = next;
|
|
1543
|
+
strm.input = input;
|
|
1544
|
+
strm.avail_in = avail;
|
|
1545
|
+
s.wrap = wrap;
|
|
1546
|
+
return 0;
|
|
1547
|
+
};
|
|
1548
|
+
var BAD$1 = 16209;
|
|
1549
|
+
var TYPE$1 = 16191;
|
|
1550
|
+
function inflate_fast(strm, start) {
|
|
1551
|
+
let _in;
|
|
1552
|
+
let last;
|
|
1553
|
+
let _out;
|
|
1554
|
+
let beg;
|
|
1555
|
+
let end;
|
|
1556
|
+
let dmax;
|
|
1557
|
+
let wsize;
|
|
1558
|
+
let whave;
|
|
1559
|
+
let wnext;
|
|
1560
|
+
let s_window;
|
|
1561
|
+
let hold;
|
|
1562
|
+
let bits;
|
|
1563
|
+
let lcode;
|
|
1564
|
+
let dcode;
|
|
1565
|
+
let lmask;
|
|
1566
|
+
let dmask;
|
|
1567
|
+
let here;
|
|
1568
|
+
let op;
|
|
1569
|
+
let len;
|
|
1570
|
+
let dist;
|
|
1571
|
+
let from;
|
|
1572
|
+
let from_source;
|
|
1573
|
+
let input, output;
|
|
1574
|
+
const state = strm.state;
|
|
1575
|
+
_in = strm.next_in;
|
|
1576
|
+
input = strm.input;
|
|
1577
|
+
last = _in + (strm.avail_in - 5);
|
|
1578
|
+
_out = strm.next_out;
|
|
1579
|
+
output = strm.output;
|
|
1580
|
+
beg = _out - (start - strm.avail_out);
|
|
1581
|
+
end = _out + (strm.avail_out - 257);
|
|
1582
|
+
dmax = state.dmax;
|
|
1583
|
+
wsize = state.wsize;
|
|
1584
|
+
whave = state.whave;
|
|
1585
|
+
wnext = state.wnext;
|
|
1586
|
+
s_window = state.window;
|
|
1587
|
+
hold = state.hold;
|
|
1588
|
+
bits = state.bits;
|
|
1589
|
+
lcode = state.lencode;
|
|
1590
|
+
dcode = state.distcode;
|
|
1591
|
+
lmask = (1 << state.lenbits) - 1;
|
|
1592
|
+
dmask = (1 << state.distbits) - 1;
|
|
1593
|
+
top: do {
|
|
1594
|
+
if (bits < 15) {
|
|
1595
|
+
hold += input[_in++] << bits;
|
|
1596
|
+
bits += 8;
|
|
1597
|
+
hold += input[_in++] << bits;
|
|
1598
|
+
bits += 8;
|
|
1599
|
+
}
|
|
1600
|
+
here = lcode[hold & lmask];
|
|
1601
|
+
dolen: for (; ; ) {
|
|
1602
|
+
op = here >>> 24;
|
|
1603
|
+
hold >>>= op;
|
|
1604
|
+
bits -= op;
|
|
1605
|
+
op = here >>> 16 & 255;
|
|
1606
|
+
if (op === 0) output[_out++] = here & 65535;
|
|
1607
|
+
else if (op & 16) {
|
|
1608
|
+
len = here & 65535;
|
|
1609
|
+
op &= 15;
|
|
1610
|
+
if (op) {
|
|
1611
|
+
if (bits < op) {
|
|
1612
|
+
hold += input[_in++] << bits;
|
|
1613
|
+
bits += 8;
|
|
1614
|
+
}
|
|
1615
|
+
len += hold & (1 << op) - 1;
|
|
1616
|
+
hold >>>= op;
|
|
1617
|
+
bits -= op;
|
|
1618
|
+
}
|
|
1619
|
+
if (bits < 15) {
|
|
1620
|
+
hold += input[_in++] << bits;
|
|
1621
|
+
bits += 8;
|
|
1622
|
+
hold += input[_in++] << bits;
|
|
1623
|
+
bits += 8;
|
|
1624
|
+
}
|
|
1625
|
+
here = dcode[hold & dmask];
|
|
1626
|
+
dodist: for (; ; ) {
|
|
1627
|
+
op = here >>> 24;
|
|
1628
|
+
hold >>>= op;
|
|
1629
|
+
bits -= op;
|
|
1630
|
+
op = here >>> 16 & 255;
|
|
1631
|
+
if (op & 16) {
|
|
1632
|
+
dist = here & 65535;
|
|
1633
|
+
op &= 15;
|
|
1634
|
+
if (bits < op) {
|
|
1635
|
+
hold += input[_in++] << bits;
|
|
1636
|
+
bits += 8;
|
|
1637
|
+
if (bits < op) {
|
|
1638
|
+
hold += input[_in++] << bits;
|
|
1639
|
+
bits += 8;
|
|
1640
|
+
}
|
|
1641
|
+
}
|
|
1642
|
+
dist += hold & (1 << op) - 1;
|
|
1643
|
+
if (dist > dmax) {
|
|
1644
|
+
strm.msg = "invalid distance too far back";
|
|
1645
|
+
state.mode = BAD$1;
|
|
1646
|
+
break top;
|
|
1647
|
+
}
|
|
1648
|
+
hold >>>= op;
|
|
1649
|
+
bits -= op;
|
|
1650
|
+
op = _out - beg;
|
|
1651
|
+
if (dist > op) {
|
|
1652
|
+
op = dist - op;
|
|
1653
|
+
if (op > whave) {
|
|
1654
|
+
if (state.sane) {
|
|
1655
|
+
strm.msg = "invalid distance too far back";
|
|
1656
|
+
state.mode = BAD$1;
|
|
1657
|
+
break top;
|
|
1658
|
+
}
|
|
1659
|
+
}
|
|
1660
|
+
from = 0;
|
|
1661
|
+
from_source = s_window;
|
|
1662
|
+
if (wnext === 0) {
|
|
1663
|
+
from += wsize - op;
|
|
1664
|
+
if (op < len) {
|
|
1665
|
+
len -= op;
|
|
1666
|
+
do
|
|
1667
|
+
output[_out++] = s_window[from++];
|
|
1668
|
+
while (--op);
|
|
1669
|
+
from = _out - dist;
|
|
1670
|
+
from_source = output;
|
|
1671
|
+
}
|
|
1672
|
+
} else if (wnext < op) {
|
|
1673
|
+
from += wsize + wnext - op;
|
|
1674
|
+
op -= wnext;
|
|
1675
|
+
if (op < len) {
|
|
1676
|
+
len -= op;
|
|
1677
|
+
do
|
|
1678
|
+
output[_out++] = s_window[from++];
|
|
1679
|
+
while (--op);
|
|
1680
|
+
from = 0;
|
|
1681
|
+
if (wnext < len) {
|
|
1682
|
+
op = wnext;
|
|
1683
|
+
len -= op;
|
|
1684
|
+
do
|
|
1685
|
+
output[_out++] = s_window[from++];
|
|
1686
|
+
while (--op);
|
|
1687
|
+
from = _out - dist;
|
|
1688
|
+
from_source = output;
|
|
1689
|
+
}
|
|
1690
|
+
}
|
|
1691
|
+
} else {
|
|
1692
|
+
from += wnext - op;
|
|
1693
|
+
if (op < len) {
|
|
1694
|
+
len -= op;
|
|
1695
|
+
do
|
|
1696
|
+
output[_out++] = s_window[from++];
|
|
1697
|
+
while (--op);
|
|
1698
|
+
from = _out - dist;
|
|
1699
|
+
from_source = output;
|
|
1700
|
+
}
|
|
1701
|
+
}
|
|
1702
|
+
while (len > 2) {
|
|
1703
|
+
output[_out++] = from_source[from++];
|
|
1704
|
+
output[_out++] = from_source[from++];
|
|
1705
|
+
output[_out++] = from_source[from++];
|
|
1706
|
+
len -= 3;
|
|
1707
|
+
}
|
|
1708
|
+
if (len) {
|
|
1709
|
+
output[_out++] = from_source[from++];
|
|
1710
|
+
if (len > 1) output[_out++] = from_source[from++];
|
|
1711
|
+
}
|
|
1712
|
+
} else {
|
|
1713
|
+
from = _out - dist;
|
|
1714
|
+
do {
|
|
1715
|
+
output[_out++] = output[from++];
|
|
1716
|
+
output[_out++] = output[from++];
|
|
1717
|
+
output[_out++] = output[from++];
|
|
1718
|
+
len -= 3;
|
|
1719
|
+
} while (len > 2);
|
|
1720
|
+
if (len) {
|
|
1721
|
+
output[_out++] = output[from++];
|
|
1722
|
+
if (len > 1) output[_out++] = output[from++];
|
|
1723
|
+
}
|
|
1724
|
+
}
|
|
1725
|
+
} else if ((op & 64) === 0) {
|
|
1726
|
+
here = dcode[(here & 65535) + (hold & (1 << op) - 1)];
|
|
1727
|
+
continue dodist;
|
|
1728
|
+
} else {
|
|
1729
|
+
strm.msg = "invalid distance code";
|
|
1730
|
+
state.mode = BAD$1;
|
|
1731
|
+
break top;
|
|
1732
|
+
}
|
|
1733
|
+
break;
|
|
1734
|
+
}
|
|
1735
|
+
} else if ((op & 64) === 0) {
|
|
1736
|
+
here = lcode[(here & 65535) + (hold & (1 << op) - 1)];
|
|
1737
|
+
continue dolen;
|
|
1738
|
+
} else if (op & 32) {
|
|
1739
|
+
state.mode = TYPE$1;
|
|
1740
|
+
break top;
|
|
1741
|
+
} else {
|
|
1742
|
+
strm.msg = "invalid literal/length code";
|
|
1743
|
+
state.mode = BAD$1;
|
|
1744
|
+
break top;
|
|
1745
|
+
}
|
|
1746
|
+
break;
|
|
1747
|
+
}
|
|
1748
|
+
} while (_in < last && _out < end);
|
|
1749
|
+
len = bits >> 3;
|
|
1750
|
+
_in -= len;
|
|
1751
|
+
bits -= len << 3;
|
|
1752
|
+
hold &= (1 << bits) - 1;
|
|
1753
|
+
strm.next_in = _in;
|
|
1754
|
+
strm.next_out = _out;
|
|
1755
|
+
strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last);
|
|
1756
|
+
strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);
|
|
1757
|
+
state.hold = hold;
|
|
1758
|
+
state.bits = bits;
|
|
1759
|
+
}
|
|
1760
|
+
var MAXBITS = 15;
|
|
1761
|
+
var ENOUGH_LENS$1 = 852;
|
|
1762
|
+
var ENOUGH_DISTS$1 = 592;
|
|
1763
|
+
var CODES$1 = 0;
|
|
1764
|
+
var LENS$1 = 1;
|
|
1765
|
+
var DISTS$1 = 2;
|
|
1766
|
+
var lbase = new Uint16Array([
|
|
1767
|
+
3,
|
|
1768
|
+
4,
|
|
1769
|
+
5,
|
|
1770
|
+
6,
|
|
1771
|
+
7,
|
|
1772
|
+
8,
|
|
1773
|
+
9,
|
|
1774
|
+
10,
|
|
1775
|
+
11,
|
|
1776
|
+
13,
|
|
1777
|
+
15,
|
|
1778
|
+
17,
|
|
1779
|
+
19,
|
|
1780
|
+
23,
|
|
1781
|
+
27,
|
|
1782
|
+
31,
|
|
1783
|
+
35,
|
|
1784
|
+
43,
|
|
1785
|
+
51,
|
|
1786
|
+
59,
|
|
1787
|
+
67,
|
|
1788
|
+
83,
|
|
1789
|
+
99,
|
|
1790
|
+
115,
|
|
1791
|
+
131,
|
|
1792
|
+
163,
|
|
1793
|
+
195,
|
|
1794
|
+
227,
|
|
1795
|
+
258,
|
|
1796
|
+
0,
|
|
1797
|
+
0
|
|
1798
|
+
]);
|
|
1799
|
+
var lext = new Uint8Array([
|
|
1800
|
+
16,
|
|
1801
|
+
16,
|
|
1802
|
+
16,
|
|
1803
|
+
16,
|
|
1804
|
+
16,
|
|
1805
|
+
16,
|
|
1806
|
+
16,
|
|
1807
|
+
16,
|
|
1808
|
+
17,
|
|
1809
|
+
17,
|
|
1810
|
+
17,
|
|
1811
|
+
17,
|
|
1812
|
+
18,
|
|
1813
|
+
18,
|
|
1814
|
+
18,
|
|
1815
|
+
18,
|
|
1816
|
+
19,
|
|
1817
|
+
19,
|
|
1818
|
+
19,
|
|
1819
|
+
19,
|
|
1820
|
+
20,
|
|
1821
|
+
20,
|
|
1822
|
+
20,
|
|
1823
|
+
20,
|
|
1824
|
+
21,
|
|
1825
|
+
21,
|
|
1826
|
+
21,
|
|
1827
|
+
21,
|
|
1828
|
+
16,
|
|
1829
|
+
199,
|
|
1830
|
+
75
|
|
1831
|
+
]);
|
|
1832
|
+
var dbase = new Uint16Array([
|
|
1833
|
+
1,
|
|
1834
|
+
2,
|
|
1835
|
+
3,
|
|
1836
|
+
4,
|
|
1837
|
+
5,
|
|
1838
|
+
7,
|
|
1839
|
+
9,
|
|
1840
|
+
13,
|
|
1841
|
+
17,
|
|
1842
|
+
25,
|
|
1843
|
+
33,
|
|
1844
|
+
49,
|
|
1845
|
+
65,
|
|
1846
|
+
97,
|
|
1847
|
+
129,
|
|
1848
|
+
193,
|
|
1849
|
+
257,
|
|
1850
|
+
385,
|
|
1851
|
+
513,
|
|
1852
|
+
769,
|
|
1853
|
+
1025,
|
|
1854
|
+
1537,
|
|
1855
|
+
2049,
|
|
1856
|
+
3073,
|
|
1857
|
+
4097,
|
|
1858
|
+
6145,
|
|
1859
|
+
8193,
|
|
1860
|
+
12289,
|
|
1861
|
+
16385,
|
|
1862
|
+
24577,
|
|
1863
|
+
0,
|
|
1864
|
+
0
|
|
1865
|
+
]);
|
|
1866
|
+
var dext = new Uint8Array([
|
|
1867
|
+
16,
|
|
1868
|
+
16,
|
|
1869
|
+
16,
|
|
1870
|
+
16,
|
|
1871
|
+
17,
|
|
1872
|
+
17,
|
|
1873
|
+
18,
|
|
1874
|
+
18,
|
|
1875
|
+
19,
|
|
1876
|
+
19,
|
|
1877
|
+
20,
|
|
1878
|
+
20,
|
|
1879
|
+
21,
|
|
1880
|
+
21,
|
|
1881
|
+
22,
|
|
1882
|
+
22,
|
|
1883
|
+
23,
|
|
1884
|
+
23,
|
|
1885
|
+
24,
|
|
1886
|
+
24,
|
|
1887
|
+
25,
|
|
1888
|
+
25,
|
|
1889
|
+
26,
|
|
1890
|
+
26,
|
|
1891
|
+
27,
|
|
1892
|
+
27,
|
|
1893
|
+
28,
|
|
1894
|
+
28,
|
|
1895
|
+
29,
|
|
1896
|
+
29,
|
|
1897
|
+
64,
|
|
1898
|
+
64
|
|
1899
|
+
]);
|
|
1900
|
+
var inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) => {
|
|
1901
|
+
const bits = opts.bits;
|
|
1902
|
+
let len = 0;
|
|
1903
|
+
let sym = 0;
|
|
1904
|
+
let min = 0, max = 0;
|
|
1905
|
+
let root = 0;
|
|
1906
|
+
let curr = 0;
|
|
1907
|
+
let drop = 0;
|
|
1908
|
+
let left = 0;
|
|
1909
|
+
let used = 0;
|
|
1910
|
+
let huff = 0;
|
|
1911
|
+
let incr;
|
|
1912
|
+
let fill;
|
|
1913
|
+
let low;
|
|
1914
|
+
let mask;
|
|
1915
|
+
let next;
|
|
1916
|
+
let base = null;
|
|
1917
|
+
let match;
|
|
1918
|
+
const count = /* @__PURE__ */ new Uint16Array(16);
|
|
1919
|
+
const offs = /* @__PURE__ */ new Uint16Array(16);
|
|
1920
|
+
let extra = null;
|
|
1921
|
+
let here_bits, here_op, here_val;
|
|
1922
|
+
for (len = 0; len <= MAXBITS; len++) count[len] = 0;
|
|
1923
|
+
for (sym = 0; sym < codes; sym++) count[lens[lens_index + sym]]++;
|
|
1924
|
+
root = bits;
|
|
1925
|
+
for (max = MAXBITS; max >= 1; max--) if (count[max] !== 0) break;
|
|
1926
|
+
if (root > max) root = max;
|
|
1927
|
+
if (max === 0) {
|
|
1928
|
+
table[table_index++] = 20971520;
|
|
1929
|
+
table[table_index++] = 20971520;
|
|
1930
|
+
opts.bits = 1;
|
|
1931
|
+
return 0;
|
|
1932
|
+
}
|
|
1933
|
+
for (min = 1; min < max; min++) if (count[min] !== 0) break;
|
|
1934
|
+
if (root < min) root = min;
|
|
1935
|
+
left = 1;
|
|
1936
|
+
for (len = 1; len <= MAXBITS; len++) {
|
|
1937
|
+
left <<= 1;
|
|
1938
|
+
left -= count[len];
|
|
1939
|
+
if (left < 0) return -1;
|
|
1940
|
+
}
|
|
1941
|
+
if (left > 0 && (type === CODES$1 || max !== 1)) return -1;
|
|
1942
|
+
offs[1] = 0;
|
|
1943
|
+
for (len = 1; len < MAXBITS; len++) offs[len + 1] = offs[len] + count[len];
|
|
1944
|
+
for (sym = 0; sym < codes; sym++) if (lens[lens_index + sym] !== 0) work[offs[lens[lens_index + sym]]++] = sym;
|
|
1945
|
+
if (type === CODES$1) {
|
|
1946
|
+
base = extra = work;
|
|
1947
|
+
match = 20;
|
|
1948
|
+
} else if (type === LENS$1) {
|
|
1949
|
+
base = lbase;
|
|
1950
|
+
extra = lext;
|
|
1951
|
+
match = 257;
|
|
1952
|
+
} else {
|
|
1953
|
+
base = dbase;
|
|
1954
|
+
extra = dext;
|
|
1955
|
+
match = 0;
|
|
1956
|
+
}
|
|
1957
|
+
huff = 0;
|
|
1958
|
+
sym = 0;
|
|
1959
|
+
len = min;
|
|
1960
|
+
next = table_index;
|
|
1961
|
+
curr = root;
|
|
1962
|
+
drop = 0;
|
|
1963
|
+
low = -1;
|
|
1964
|
+
used = 1 << root;
|
|
1965
|
+
mask = used - 1;
|
|
1966
|
+
if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) return 1;
|
|
1967
|
+
for (; ; ) {
|
|
1968
|
+
here_bits = len - drop;
|
|
1969
|
+
if (work[sym] + 1 < match) {
|
|
1970
|
+
here_op = 0;
|
|
1971
|
+
here_val = work[sym];
|
|
1972
|
+
} else if (work[sym] >= match) {
|
|
1973
|
+
here_op = extra[work[sym] - match];
|
|
1974
|
+
here_val = base[work[sym] - match];
|
|
1975
|
+
} else {
|
|
1976
|
+
here_op = 96;
|
|
1977
|
+
here_val = 0;
|
|
1978
|
+
}
|
|
1979
|
+
incr = 1 << len - drop;
|
|
1980
|
+
fill = 1 << curr;
|
|
1981
|
+
min = fill;
|
|
1982
|
+
do {
|
|
1983
|
+
fill -= incr;
|
|
1984
|
+
table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;
|
|
1985
|
+
} while (fill !== 0);
|
|
1986
|
+
incr = 1 << len - 1;
|
|
1987
|
+
while (huff & incr) incr >>= 1;
|
|
1988
|
+
if (incr !== 0) {
|
|
1989
|
+
huff &= incr - 1;
|
|
1990
|
+
huff += incr;
|
|
1991
|
+
} else huff = 0;
|
|
1992
|
+
sym++;
|
|
1993
|
+
if (--count[len] === 0) {
|
|
1994
|
+
if (len === max) break;
|
|
1995
|
+
len = lens[lens_index + work[sym]];
|
|
1996
|
+
}
|
|
1997
|
+
if (len > root && (huff & mask) !== low) {
|
|
1998
|
+
if (drop === 0) drop = root;
|
|
1999
|
+
next += min;
|
|
2000
|
+
curr = len - drop;
|
|
2001
|
+
left = 1 << curr;
|
|
2002
|
+
while (curr + drop < max) {
|
|
2003
|
+
left -= count[curr + drop];
|
|
2004
|
+
if (left <= 0) break;
|
|
2005
|
+
curr++;
|
|
2006
|
+
left <<= 1;
|
|
2007
|
+
}
|
|
2008
|
+
used += 1 << curr;
|
|
2009
|
+
if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) return 1;
|
|
2010
|
+
low = huff & mask;
|
|
2011
|
+
table[low] = root << 24 | curr << 16 | next - table_index | 0;
|
|
2012
|
+
}
|
|
2013
|
+
}
|
|
2014
|
+
if (huff !== 0) table[next + huff] = len - drop << 24 | 4194304;
|
|
2015
|
+
opts.bits = root;
|
|
2016
|
+
return 0;
|
|
2017
|
+
};
|
|
2018
|
+
var CODES = 0;
|
|
2019
|
+
var LENS = 1;
|
|
2020
|
+
var DISTS = 2;
|
|
2021
|
+
var HEAD = 16180;
|
|
2022
|
+
var FLAGS = 16181;
|
|
2023
|
+
var TIME = 16182;
|
|
2024
|
+
var OS = 16183;
|
|
2025
|
+
var EXLEN = 16184;
|
|
2026
|
+
var EXTRA = 16185;
|
|
2027
|
+
var NAME = 16186;
|
|
2028
|
+
var COMMENT = 16187;
|
|
2029
|
+
var HCRC = 16188;
|
|
2030
|
+
var DICTID = 16189;
|
|
2031
|
+
var DICT = 16190;
|
|
2032
|
+
var TYPE = 16191;
|
|
2033
|
+
var TYPEDO = 16192;
|
|
2034
|
+
var STORED = 16193;
|
|
2035
|
+
var COPY_ = 16194;
|
|
2036
|
+
var COPY = 16195;
|
|
2037
|
+
var TABLE = 16196;
|
|
2038
|
+
var LENLENS = 16197;
|
|
2039
|
+
var CODELENS = 16198;
|
|
2040
|
+
var LEN_ = 16199;
|
|
2041
|
+
var LEN = 16200;
|
|
2042
|
+
var LENEXT = 16201;
|
|
2043
|
+
var DIST = 16202;
|
|
2044
|
+
var DISTEXT = 16203;
|
|
2045
|
+
var MATCH = 16204;
|
|
2046
|
+
var LIT = 16205;
|
|
2047
|
+
var CHECK = 16206;
|
|
2048
|
+
var LENGTH = 16207;
|
|
2049
|
+
var DONE = 16208;
|
|
2050
|
+
var BAD = 16209;
|
|
2051
|
+
var MEM = 16210;
|
|
2052
|
+
var SYNC = 16211;
|
|
2053
|
+
var ENOUGH_LENS = 852;
|
|
2054
|
+
var ENOUGH_DISTS = 592;
|
|
2055
|
+
var zswap32 = (q) => {
|
|
2056
|
+
return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24);
|
|
2057
|
+
};
|
|
2058
|
+
var InflateState = class {
|
|
2059
|
+
constructor() {
|
|
2060
|
+
this.strm = null;
|
|
2061
|
+
this.mode = 0;
|
|
2062
|
+
this.last = false;
|
|
2063
|
+
this.wrap = 0;
|
|
2064
|
+
this.havedict = false;
|
|
2065
|
+
this.flags = 0;
|
|
2066
|
+
this.dmax = 0;
|
|
2067
|
+
this.check = 0;
|
|
2068
|
+
this.total = 0;
|
|
2069
|
+
this.head = null;
|
|
2070
|
+
this.wbits = 0;
|
|
2071
|
+
this.wsize = 0;
|
|
2072
|
+
this.whave = 0;
|
|
2073
|
+
this.wnext = 0;
|
|
2074
|
+
this.window = null;
|
|
2075
|
+
this.hold = 0;
|
|
2076
|
+
this.bits = 0;
|
|
2077
|
+
this.length = 0;
|
|
2078
|
+
this.offset = 0;
|
|
2079
|
+
this.extra = 0;
|
|
2080
|
+
this.lencode = null;
|
|
2081
|
+
this.distcode = null;
|
|
2082
|
+
this.lenbits = 0;
|
|
2083
|
+
this.distbits = 0;
|
|
2084
|
+
this.ncode = 0;
|
|
2085
|
+
this.nlen = 0;
|
|
2086
|
+
this.ndist = 0;
|
|
2087
|
+
this.have = 0;
|
|
2088
|
+
this.next = null;
|
|
2089
|
+
this.lens = /* @__PURE__ */ new Uint16Array(320);
|
|
2090
|
+
this.work = /* @__PURE__ */ new Uint16Array(288);
|
|
2091
|
+
this.lendyn = null;
|
|
2092
|
+
this.distdyn = null;
|
|
2093
|
+
this.sane = 0;
|
|
2094
|
+
this.back = 0;
|
|
2095
|
+
this.was = 0;
|
|
2096
|
+
}
|
|
2097
|
+
};
|
|
2098
|
+
var inflateStateCheck = (strm) => {
|
|
2099
|
+
if (!strm) return 1;
|
|
2100
|
+
const state = strm.state;
|
|
2101
|
+
if (!state || state.strm !== strm || state.mode < HEAD || state.mode > SYNC) return 1;
|
|
2102
|
+
return 0;
|
|
2103
|
+
};
|
|
2104
|
+
var inflateResetKeep = (strm) => {
|
|
2105
|
+
if (inflateStateCheck(strm)) return -2;
|
|
2106
|
+
const state = strm.state;
|
|
2107
|
+
strm.total_in = strm.total_out = state.total = 0;
|
|
2108
|
+
strm.msg = "";
|
|
2109
|
+
if (state.wrap) strm.adler = state.wrap & 1;
|
|
2110
|
+
state.mode = HEAD;
|
|
2111
|
+
state.last = 0;
|
|
2112
|
+
state.havedict = 0;
|
|
2113
|
+
state.flags = -1;
|
|
2114
|
+
state.dmax = 32768;
|
|
2115
|
+
state.head = null;
|
|
2116
|
+
state.hold = 0;
|
|
2117
|
+
state.bits = 0;
|
|
2118
|
+
state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);
|
|
2119
|
+
state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);
|
|
2120
|
+
state.sane = 1;
|
|
2121
|
+
state.back = -1;
|
|
2122
|
+
return 0;
|
|
2123
|
+
};
|
|
2124
|
+
var inflateReset = (strm) => {
|
|
2125
|
+
if (inflateStateCheck(strm)) return -2;
|
|
2126
|
+
const state = strm.state;
|
|
2127
|
+
state.wsize = 0;
|
|
2128
|
+
state.whave = 0;
|
|
2129
|
+
state.wnext = 0;
|
|
2130
|
+
return inflateResetKeep(strm);
|
|
2131
|
+
};
|
|
2132
|
+
var inflateReset2 = (strm, windowBits) => {
|
|
2133
|
+
let wrap;
|
|
2134
|
+
if (inflateStateCheck(strm)) return -2;
|
|
2135
|
+
const state = strm.state;
|
|
2136
|
+
if (windowBits < 0) {
|
|
2137
|
+
wrap = 0;
|
|
2138
|
+
windowBits = -windowBits;
|
|
2139
|
+
} else {
|
|
2140
|
+
wrap = (windowBits >> 4) + 5;
|
|
2141
|
+
if (windowBits < 48) windowBits &= 15;
|
|
2142
|
+
}
|
|
2143
|
+
if (windowBits && (windowBits < 8 || windowBits > 15)) return -2;
|
|
2144
|
+
if (state.window !== null && state.wbits !== windowBits) state.window = null;
|
|
2145
|
+
state.wrap = wrap;
|
|
2146
|
+
state.wbits = windowBits;
|
|
2147
|
+
return inflateReset(strm);
|
|
2148
|
+
};
|
|
2149
|
+
var inflateInit2 = (strm, windowBits) => {
|
|
2150
|
+
if (!strm) return -2;
|
|
2151
|
+
const state = new InflateState();
|
|
2152
|
+
strm.state = state;
|
|
2153
|
+
state.strm = strm;
|
|
2154
|
+
state.window = null;
|
|
2155
|
+
state.mode = HEAD;
|
|
2156
|
+
const ret = inflateReset2(strm, windowBits);
|
|
2157
|
+
if (ret !== 0) strm.state = null;
|
|
2158
|
+
return ret;
|
|
2159
|
+
};
|
|
2160
|
+
var virgin = true;
|
|
2161
|
+
var lenfix;
|
|
2162
|
+
var distfix;
|
|
2163
|
+
var fixedtables = (state) => {
|
|
2164
|
+
if (virgin) {
|
|
2165
|
+
lenfix = /* @__PURE__ */ new Int32Array(512);
|
|
2166
|
+
distfix = /* @__PURE__ */ new Int32Array(32);
|
|
2167
|
+
let sym = 0;
|
|
2168
|
+
while (sym < 144) state.lens[sym++] = 8;
|
|
2169
|
+
while (sym < 256) state.lens[sym++] = 9;
|
|
2170
|
+
while (sym < 280) state.lens[sym++] = 7;
|
|
2171
|
+
while (sym < 288) state.lens[sym++] = 8;
|
|
2172
|
+
inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });
|
|
2173
|
+
sym = 0;
|
|
2174
|
+
while (sym < 32) state.lens[sym++] = 5;
|
|
2175
|
+
inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });
|
|
2176
|
+
virgin = false;
|
|
2177
|
+
}
|
|
2178
|
+
state.lencode = lenfix;
|
|
2179
|
+
state.lenbits = 9;
|
|
2180
|
+
state.distcode = distfix;
|
|
2181
|
+
state.distbits = 5;
|
|
2182
|
+
};
|
|
2183
|
+
var updatewindow = (strm, src, end, copy) => {
|
|
2184
|
+
let dist;
|
|
2185
|
+
const state = strm.state;
|
|
2186
|
+
if (state.window === null) state.window = new Uint8Array(1 << state.wbits);
|
|
2187
|
+
if (state.wsize === 0) {
|
|
2188
|
+
state.wsize = 1 << state.wbits;
|
|
2189
|
+
state.wnext = 0;
|
|
2190
|
+
state.whave = 0;
|
|
2191
|
+
}
|
|
2192
|
+
if (copy >= state.wsize) {
|
|
2193
|
+
state.window.set(src.subarray(end - state.wsize, end), 0);
|
|
2194
|
+
state.wnext = 0;
|
|
2195
|
+
state.whave = state.wsize;
|
|
2196
|
+
} else {
|
|
2197
|
+
dist = state.wsize - state.wnext;
|
|
2198
|
+
if (dist > copy) dist = copy;
|
|
2199
|
+
state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);
|
|
2200
|
+
copy -= dist;
|
|
2201
|
+
if (copy) {
|
|
2202
|
+
state.window.set(src.subarray(end - copy, end), 0);
|
|
2203
|
+
state.wnext = copy;
|
|
2204
|
+
state.whave = state.wsize;
|
|
2205
|
+
} else {
|
|
2206
|
+
state.wnext += dist;
|
|
2207
|
+
if (state.wnext === state.wsize) state.wnext = 0;
|
|
2208
|
+
if (state.whave < state.wsize) state.whave += dist;
|
|
2209
|
+
}
|
|
2210
|
+
}
|
|
2211
|
+
return 0;
|
|
2212
|
+
};
|
|
2213
|
+
var inflate$1 = (strm, flush) => {
|
|
2214
|
+
let state;
|
|
2215
|
+
let input, output;
|
|
2216
|
+
let next;
|
|
2217
|
+
let put;
|
|
2218
|
+
let have, left;
|
|
2219
|
+
let hold;
|
|
2220
|
+
let bits;
|
|
2221
|
+
let _in, _out;
|
|
2222
|
+
let copy;
|
|
2223
|
+
let from;
|
|
2224
|
+
let from_source;
|
|
2225
|
+
let here = 0;
|
|
2226
|
+
let here_bits, here_op, here_val;
|
|
2227
|
+
let last_bits, last_op, last_val;
|
|
2228
|
+
let len;
|
|
2229
|
+
let ret;
|
|
2230
|
+
const hbuf = /* @__PURE__ */ new Uint8Array(4);
|
|
2231
|
+
let opts;
|
|
2232
|
+
let n;
|
|
2233
|
+
const order = new Uint8Array([
|
|
2234
|
+
16,
|
|
2235
|
+
17,
|
|
2236
|
+
18,
|
|
2237
|
+
0,
|
|
2238
|
+
8,
|
|
2239
|
+
7,
|
|
2240
|
+
9,
|
|
2241
|
+
6,
|
|
2242
|
+
10,
|
|
2243
|
+
5,
|
|
2244
|
+
11,
|
|
2245
|
+
4,
|
|
2246
|
+
12,
|
|
2247
|
+
3,
|
|
2248
|
+
13,
|
|
2249
|
+
2,
|
|
2250
|
+
14,
|
|
2251
|
+
1,
|
|
2252
|
+
15
|
|
2253
|
+
]);
|
|
2254
|
+
if (inflateStateCheck(strm) || !strm.output || !strm.input && strm.avail_in !== 0) return -2;
|
|
2255
|
+
state = strm.state;
|
|
2256
|
+
if (state.mode === TYPE) state.mode = TYPEDO;
|
|
2257
|
+
put = strm.next_out;
|
|
2258
|
+
output = strm.output;
|
|
2259
|
+
left = strm.avail_out;
|
|
2260
|
+
next = strm.next_in;
|
|
2261
|
+
input = strm.input;
|
|
2262
|
+
have = strm.avail_in;
|
|
2263
|
+
hold = state.hold;
|
|
2264
|
+
bits = state.bits;
|
|
2265
|
+
_in = have;
|
|
2266
|
+
_out = left;
|
|
2267
|
+
ret = 0;
|
|
2268
|
+
inf_leave: for (; ; ) switch (state.mode) {
|
|
2269
|
+
case HEAD:
|
|
2270
|
+
if (state.wrap === 0) {
|
|
2271
|
+
state.mode = TYPEDO;
|
|
2272
|
+
break;
|
|
2273
|
+
}
|
|
2274
|
+
while (bits < 16) {
|
|
2275
|
+
if (have === 0) break inf_leave;
|
|
2276
|
+
have--;
|
|
2277
|
+
hold += input[next++] << bits;
|
|
2278
|
+
bits += 8;
|
|
2279
|
+
}
|
|
2280
|
+
if (state.wrap & 2 && hold === 35615) {
|
|
2281
|
+
if (state.wbits === 0) state.wbits = 15;
|
|
2282
|
+
state.check = 0;
|
|
2283
|
+
hbuf[0] = hold & 255;
|
|
2284
|
+
hbuf[1] = hold >>> 8 & 255;
|
|
2285
|
+
state.check = crc32(state.check, hbuf, 2, 0);
|
|
2286
|
+
hold = 0;
|
|
2287
|
+
bits = 0;
|
|
2288
|
+
state.mode = FLAGS;
|
|
2289
|
+
break;
|
|
2290
|
+
}
|
|
2291
|
+
if (state.head) state.head.done = false;
|
|
2292
|
+
if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) {
|
|
2293
|
+
strm.msg = "incorrect header check";
|
|
2294
|
+
state.mode = BAD;
|
|
2295
|
+
break;
|
|
2296
|
+
}
|
|
2297
|
+
if ((hold & 15) !== 8) {
|
|
2298
|
+
strm.msg = "unknown compression method";
|
|
2299
|
+
state.mode = BAD;
|
|
2300
|
+
break;
|
|
2301
|
+
}
|
|
2302
|
+
hold >>>= 4;
|
|
2303
|
+
bits -= 4;
|
|
2304
|
+
len = (hold & 15) + 8;
|
|
2305
|
+
if (state.wbits === 0) state.wbits = len;
|
|
2306
|
+
if (len > 15 || len > state.wbits) {
|
|
2307
|
+
strm.msg = "invalid window size";
|
|
2308
|
+
state.mode = BAD;
|
|
2309
|
+
break;
|
|
2310
|
+
}
|
|
2311
|
+
state.dmax = 1 << state.wbits;
|
|
2312
|
+
state.flags = 0;
|
|
2313
|
+
strm.adler = state.check = 1;
|
|
2314
|
+
state.mode = hold & 512 ? DICTID : TYPE;
|
|
2315
|
+
hold = 0;
|
|
2316
|
+
bits = 0;
|
|
2317
|
+
break;
|
|
2318
|
+
case FLAGS:
|
|
2319
|
+
while (bits < 16) {
|
|
2320
|
+
if (have === 0) break inf_leave;
|
|
2321
|
+
have--;
|
|
2322
|
+
hold += input[next++] << bits;
|
|
2323
|
+
bits += 8;
|
|
2324
|
+
}
|
|
2325
|
+
state.flags = hold;
|
|
2326
|
+
if ((state.flags & 255) !== 8) {
|
|
2327
|
+
strm.msg = "unknown compression method";
|
|
2328
|
+
state.mode = BAD;
|
|
2329
|
+
break;
|
|
2330
|
+
}
|
|
2331
|
+
if (state.flags & 57344) {
|
|
2332
|
+
strm.msg = "unknown header flags set";
|
|
2333
|
+
state.mode = BAD;
|
|
2334
|
+
break;
|
|
2335
|
+
}
|
|
2336
|
+
if (state.head) state.head.text = hold >> 8 & 1;
|
|
2337
|
+
if (state.flags & 512 && state.wrap & 4) {
|
|
2338
|
+
hbuf[0] = hold & 255;
|
|
2339
|
+
hbuf[1] = hold >>> 8 & 255;
|
|
2340
|
+
state.check = crc32(state.check, hbuf, 2, 0);
|
|
2341
|
+
}
|
|
2342
|
+
hold = 0;
|
|
2343
|
+
bits = 0;
|
|
2344
|
+
state.mode = TIME;
|
|
2345
|
+
case TIME:
|
|
2346
|
+
while (bits < 32) {
|
|
2347
|
+
if (have === 0) break inf_leave;
|
|
2348
|
+
have--;
|
|
2349
|
+
hold += input[next++] << bits;
|
|
2350
|
+
bits += 8;
|
|
2351
|
+
}
|
|
2352
|
+
if (state.head) state.head.time = hold;
|
|
2353
|
+
if (state.flags & 512 && state.wrap & 4) {
|
|
2354
|
+
hbuf[0] = hold & 255;
|
|
2355
|
+
hbuf[1] = hold >>> 8 & 255;
|
|
2356
|
+
hbuf[2] = hold >>> 16 & 255;
|
|
2357
|
+
hbuf[3] = hold >>> 24 & 255;
|
|
2358
|
+
state.check = crc32(state.check, hbuf, 4, 0);
|
|
2359
|
+
}
|
|
2360
|
+
hold = 0;
|
|
2361
|
+
bits = 0;
|
|
2362
|
+
state.mode = OS;
|
|
2363
|
+
case OS:
|
|
2364
|
+
while (bits < 16) {
|
|
2365
|
+
if (have === 0) break inf_leave;
|
|
2366
|
+
have--;
|
|
2367
|
+
hold += input[next++] << bits;
|
|
2368
|
+
bits += 8;
|
|
2369
|
+
}
|
|
2370
|
+
if (state.head) {
|
|
2371
|
+
state.head.xflags = hold & 255;
|
|
2372
|
+
state.head.os = hold >> 8;
|
|
2373
|
+
}
|
|
2374
|
+
if (state.flags & 512 && state.wrap & 4) {
|
|
2375
|
+
hbuf[0] = hold & 255;
|
|
2376
|
+
hbuf[1] = hold >>> 8 & 255;
|
|
2377
|
+
state.check = crc32(state.check, hbuf, 2, 0);
|
|
2378
|
+
}
|
|
2379
|
+
hold = 0;
|
|
2380
|
+
bits = 0;
|
|
2381
|
+
state.mode = EXLEN;
|
|
2382
|
+
case EXLEN:
|
|
2383
|
+
if (state.flags & 1024) {
|
|
2384
|
+
while (bits < 16) {
|
|
2385
|
+
if (have === 0) break inf_leave;
|
|
2386
|
+
have--;
|
|
2387
|
+
hold += input[next++] << bits;
|
|
2388
|
+
bits += 8;
|
|
2389
|
+
}
|
|
2390
|
+
state.length = hold;
|
|
2391
|
+
if (state.head) state.head.extra_len = hold;
|
|
2392
|
+
if (state.flags & 512 && state.wrap & 4) {
|
|
2393
|
+
hbuf[0] = hold & 255;
|
|
2394
|
+
hbuf[1] = hold >>> 8 & 255;
|
|
2395
|
+
state.check = crc32(state.check, hbuf, 2, 0);
|
|
2396
|
+
}
|
|
2397
|
+
hold = 0;
|
|
2398
|
+
bits = 0;
|
|
2399
|
+
} else if (state.head) state.head.extra = null;
|
|
2400
|
+
state.mode = EXTRA;
|
|
2401
|
+
case EXTRA:
|
|
2402
|
+
if (state.flags & 1024) {
|
|
2403
|
+
copy = state.length;
|
|
2404
|
+
if (copy > have) copy = have;
|
|
2405
|
+
if (copy) {
|
|
2406
|
+
if (state.head) {
|
|
2407
|
+
len = state.head.extra_len - state.length;
|
|
2408
|
+
if (!state.head.extra) state.head.extra = new Uint8Array(state.head.extra_len);
|
|
2409
|
+
state.head.extra.set(input.subarray(next, next + copy), len);
|
|
2410
|
+
}
|
|
2411
|
+
if (state.flags & 512 && state.wrap & 4) state.check = crc32(state.check, input, copy, next);
|
|
2412
|
+
have -= copy;
|
|
2413
|
+
next += copy;
|
|
2414
|
+
state.length -= copy;
|
|
2415
|
+
}
|
|
2416
|
+
if (state.length) break inf_leave;
|
|
2417
|
+
}
|
|
2418
|
+
state.length = 0;
|
|
2419
|
+
state.mode = NAME;
|
|
2420
|
+
case NAME:
|
|
2421
|
+
if (state.flags & 2048) {
|
|
2422
|
+
if (have === 0) break inf_leave;
|
|
2423
|
+
copy = 0;
|
|
2424
|
+
do {
|
|
2425
|
+
len = input[next + copy++];
|
|
2426
|
+
if (state.head && len && state.length < 65536) state.head.name += String.fromCharCode(len);
|
|
2427
|
+
} while (len && copy < have);
|
|
2428
|
+
if (state.flags & 512 && state.wrap & 4) state.check = crc32(state.check, input, copy, next);
|
|
2429
|
+
have -= copy;
|
|
2430
|
+
next += copy;
|
|
2431
|
+
if (len) break inf_leave;
|
|
2432
|
+
} else if (state.head) state.head.name = null;
|
|
2433
|
+
state.length = 0;
|
|
2434
|
+
state.mode = COMMENT;
|
|
2435
|
+
case COMMENT:
|
|
2436
|
+
if (state.flags & 4096) {
|
|
2437
|
+
if (have === 0) break inf_leave;
|
|
2438
|
+
copy = 0;
|
|
2439
|
+
do {
|
|
2440
|
+
len = input[next + copy++];
|
|
2441
|
+
if (state.head && len && state.length < 65536) state.head.comment += String.fromCharCode(len);
|
|
2442
|
+
} while (len && copy < have);
|
|
2443
|
+
if (state.flags & 512 && state.wrap & 4) state.check = crc32(state.check, input, copy, next);
|
|
2444
|
+
have -= copy;
|
|
2445
|
+
next += copy;
|
|
2446
|
+
if (len) break inf_leave;
|
|
2447
|
+
} else if (state.head) state.head.comment = null;
|
|
2448
|
+
state.mode = HCRC;
|
|
2449
|
+
case HCRC:
|
|
2450
|
+
if (state.flags & 512) {
|
|
2451
|
+
while (bits < 16) {
|
|
2452
|
+
if (have === 0) break inf_leave;
|
|
2453
|
+
have--;
|
|
2454
|
+
hold += input[next++] << bits;
|
|
2455
|
+
bits += 8;
|
|
2456
|
+
}
|
|
2457
|
+
if (state.wrap & 4 && hold !== (state.check & 65535)) {
|
|
2458
|
+
strm.msg = "header crc mismatch";
|
|
2459
|
+
state.mode = BAD;
|
|
2460
|
+
break;
|
|
2461
|
+
}
|
|
2462
|
+
hold = 0;
|
|
2463
|
+
bits = 0;
|
|
2464
|
+
}
|
|
2465
|
+
if (state.head) {
|
|
2466
|
+
state.head.hcrc = state.flags >> 9 & 1;
|
|
2467
|
+
state.head.done = true;
|
|
2468
|
+
}
|
|
2469
|
+
strm.adler = state.check = 0;
|
|
2470
|
+
state.mode = TYPE;
|
|
2471
|
+
break;
|
|
2472
|
+
case DICTID:
|
|
2473
|
+
while (bits < 32) {
|
|
2474
|
+
if (have === 0) break inf_leave;
|
|
2475
|
+
have--;
|
|
2476
|
+
hold += input[next++] << bits;
|
|
2477
|
+
bits += 8;
|
|
2478
|
+
}
|
|
2479
|
+
strm.adler = state.check = zswap32(hold);
|
|
2480
|
+
hold = 0;
|
|
2481
|
+
bits = 0;
|
|
2482
|
+
state.mode = DICT;
|
|
2483
|
+
case DICT:
|
|
2484
|
+
if (state.havedict === 0) {
|
|
2485
|
+
strm.next_out = put;
|
|
2486
|
+
strm.avail_out = left;
|
|
2487
|
+
strm.next_in = next;
|
|
2488
|
+
strm.avail_in = have;
|
|
2489
|
+
state.hold = hold;
|
|
2490
|
+
state.bits = bits;
|
|
2491
|
+
return 2;
|
|
2492
|
+
}
|
|
2493
|
+
strm.adler = state.check = 1;
|
|
2494
|
+
state.mode = TYPE;
|
|
2495
|
+
case TYPE:
|
|
2496
|
+
if (flush === 5 || flush === 6) break inf_leave;
|
|
2497
|
+
case TYPEDO:
|
|
2498
|
+
if (state.last) {
|
|
2499
|
+
hold >>>= bits & 7;
|
|
2500
|
+
bits -= bits & 7;
|
|
2501
|
+
state.mode = CHECK;
|
|
2502
|
+
break;
|
|
2503
|
+
}
|
|
2504
|
+
while (bits < 3) {
|
|
2505
|
+
if (have === 0) break inf_leave;
|
|
2506
|
+
have--;
|
|
2507
|
+
hold += input[next++] << bits;
|
|
2508
|
+
bits += 8;
|
|
2509
|
+
}
|
|
2510
|
+
state.last = hold & 1;
|
|
2511
|
+
hold >>>= 1;
|
|
2512
|
+
bits -= 1;
|
|
2513
|
+
switch (hold & 3) {
|
|
2514
|
+
case 0:
|
|
2515
|
+
state.mode = STORED;
|
|
2516
|
+
break;
|
|
2517
|
+
case 1:
|
|
2518
|
+
fixedtables(state);
|
|
2519
|
+
state.mode = LEN_;
|
|
2520
|
+
if (flush === 6) {
|
|
2521
|
+
hold >>>= 2;
|
|
2522
|
+
bits -= 2;
|
|
2523
|
+
break inf_leave;
|
|
2524
|
+
}
|
|
2525
|
+
break;
|
|
2526
|
+
case 2:
|
|
2527
|
+
state.mode = TABLE;
|
|
2528
|
+
break;
|
|
2529
|
+
case 3:
|
|
2530
|
+
strm.msg = "invalid block type";
|
|
2531
|
+
state.mode = BAD;
|
|
2532
|
+
}
|
|
2533
|
+
hold >>>= 2;
|
|
2534
|
+
bits -= 2;
|
|
2535
|
+
break;
|
|
2536
|
+
case STORED:
|
|
2537
|
+
hold >>>= bits & 7;
|
|
2538
|
+
bits -= bits & 7;
|
|
2539
|
+
while (bits < 32) {
|
|
2540
|
+
if (have === 0) break inf_leave;
|
|
2541
|
+
have--;
|
|
2542
|
+
hold += input[next++] << bits;
|
|
2543
|
+
bits += 8;
|
|
2544
|
+
}
|
|
2545
|
+
if ((hold & 65535) !== (hold >>> 16 ^ 65535)) {
|
|
2546
|
+
strm.msg = "invalid stored block lengths";
|
|
2547
|
+
state.mode = BAD;
|
|
2548
|
+
break;
|
|
2549
|
+
}
|
|
2550
|
+
state.length = hold & 65535;
|
|
2551
|
+
hold = 0;
|
|
2552
|
+
bits = 0;
|
|
2553
|
+
state.mode = COPY_;
|
|
2554
|
+
if (flush === 6) break inf_leave;
|
|
2555
|
+
case COPY_:
|
|
2556
|
+
state.mode = COPY;
|
|
2557
|
+
case COPY:
|
|
2558
|
+
copy = state.length;
|
|
2559
|
+
if (copy) {
|
|
2560
|
+
if (copy > have) copy = have;
|
|
2561
|
+
if (copy > left) copy = left;
|
|
2562
|
+
if (copy === 0) break inf_leave;
|
|
2563
|
+
output.set(input.subarray(next, next + copy), put);
|
|
2564
|
+
have -= copy;
|
|
2565
|
+
next += copy;
|
|
2566
|
+
left -= copy;
|
|
2567
|
+
put += copy;
|
|
2568
|
+
state.length -= copy;
|
|
2569
|
+
break;
|
|
2570
|
+
}
|
|
2571
|
+
state.mode = TYPE;
|
|
2572
|
+
break;
|
|
2573
|
+
case TABLE:
|
|
2574
|
+
while (bits < 14) {
|
|
2575
|
+
if (have === 0) break inf_leave;
|
|
2576
|
+
have--;
|
|
2577
|
+
hold += input[next++] << bits;
|
|
2578
|
+
bits += 8;
|
|
2579
|
+
}
|
|
2580
|
+
state.nlen = (hold & 31) + 257;
|
|
2581
|
+
hold >>>= 5;
|
|
2582
|
+
bits -= 5;
|
|
2583
|
+
state.ndist = (hold & 31) + 1;
|
|
2584
|
+
hold >>>= 5;
|
|
2585
|
+
bits -= 5;
|
|
2586
|
+
state.ncode = (hold & 15) + 4;
|
|
2587
|
+
hold >>>= 4;
|
|
2588
|
+
bits -= 4;
|
|
2589
|
+
if (state.nlen > 286 || state.ndist > 30) {
|
|
2590
|
+
strm.msg = "too many length or distance symbols";
|
|
2591
|
+
state.mode = BAD;
|
|
2592
|
+
break;
|
|
2593
|
+
}
|
|
2594
|
+
state.have = 0;
|
|
2595
|
+
state.mode = LENLENS;
|
|
2596
|
+
case LENLENS:
|
|
2597
|
+
while (state.have < state.ncode) {
|
|
2598
|
+
while (bits < 3) {
|
|
2599
|
+
if (have === 0) break inf_leave;
|
|
2600
|
+
have--;
|
|
2601
|
+
hold += input[next++] << bits;
|
|
2602
|
+
bits += 8;
|
|
2603
|
+
}
|
|
2604
|
+
state.lens[order[state.have++]] = hold & 7;
|
|
2605
|
+
hold >>>= 3;
|
|
2606
|
+
bits -= 3;
|
|
2607
|
+
}
|
|
2608
|
+
while (state.have < 19) state.lens[order[state.have++]] = 0;
|
|
2609
|
+
state.lencode = state.lendyn;
|
|
2610
|
+
state.lenbits = 7;
|
|
2611
|
+
opts = { bits: state.lenbits };
|
|
2612
|
+
ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
|
|
2613
|
+
state.lenbits = opts.bits;
|
|
2614
|
+
if (ret) {
|
|
2615
|
+
strm.msg = "invalid code lengths set";
|
|
2616
|
+
state.mode = BAD;
|
|
2617
|
+
break;
|
|
2618
|
+
}
|
|
2619
|
+
state.have = 0;
|
|
2620
|
+
state.mode = CODELENS;
|
|
2621
|
+
case CODELENS:
|
|
2622
|
+
while (state.have < state.nlen + state.ndist) {
|
|
2623
|
+
for (; ; ) {
|
|
2624
|
+
here = state.lencode[hold & (1 << state.lenbits) - 1];
|
|
2625
|
+
here_bits = here >>> 24;
|
|
2626
|
+
here_op = here >>> 16 & 255;
|
|
2627
|
+
here_val = here & 65535;
|
|
2628
|
+
if (here_bits <= bits) break;
|
|
2629
|
+
if (have === 0) break inf_leave;
|
|
2630
|
+
have--;
|
|
2631
|
+
hold += input[next++] << bits;
|
|
2632
|
+
bits += 8;
|
|
2633
|
+
}
|
|
2634
|
+
if (here_val < 16) {
|
|
2635
|
+
hold >>>= here_bits;
|
|
2636
|
+
bits -= here_bits;
|
|
2637
|
+
state.lens[state.have++] = here_val;
|
|
2638
|
+
} else {
|
|
2639
|
+
if (here_val === 16) {
|
|
2640
|
+
n = here_bits + 2;
|
|
2641
|
+
while (bits < n) {
|
|
2642
|
+
if (have === 0) break inf_leave;
|
|
2643
|
+
have--;
|
|
2644
|
+
hold += input[next++] << bits;
|
|
2645
|
+
bits += 8;
|
|
2646
|
+
}
|
|
2647
|
+
hold >>>= here_bits;
|
|
2648
|
+
bits -= here_bits;
|
|
2649
|
+
if (state.have === 0) {
|
|
2650
|
+
strm.msg = "invalid bit length repeat";
|
|
2651
|
+
state.mode = BAD;
|
|
2652
|
+
break;
|
|
2653
|
+
}
|
|
2654
|
+
len = state.lens[state.have - 1];
|
|
2655
|
+
copy = 3 + (hold & 3);
|
|
2656
|
+
hold >>>= 2;
|
|
2657
|
+
bits -= 2;
|
|
2658
|
+
} else if (here_val === 17) {
|
|
2659
|
+
n = here_bits + 3;
|
|
2660
|
+
while (bits < n) {
|
|
2661
|
+
if (have === 0) break inf_leave;
|
|
2662
|
+
have--;
|
|
2663
|
+
hold += input[next++] << bits;
|
|
2664
|
+
bits += 8;
|
|
2665
|
+
}
|
|
2666
|
+
hold >>>= here_bits;
|
|
2667
|
+
bits -= here_bits;
|
|
2668
|
+
len = 0;
|
|
2669
|
+
copy = 3 + (hold & 7);
|
|
2670
|
+
hold >>>= 3;
|
|
2671
|
+
bits -= 3;
|
|
2672
|
+
} else {
|
|
2673
|
+
n = here_bits + 7;
|
|
2674
|
+
while (bits < n) {
|
|
2675
|
+
if (have === 0) break inf_leave;
|
|
2676
|
+
have--;
|
|
2677
|
+
hold += input[next++] << bits;
|
|
2678
|
+
bits += 8;
|
|
2679
|
+
}
|
|
2680
|
+
hold >>>= here_bits;
|
|
2681
|
+
bits -= here_bits;
|
|
2682
|
+
len = 0;
|
|
2683
|
+
copy = 11 + (hold & 127);
|
|
2684
|
+
hold >>>= 7;
|
|
2685
|
+
bits -= 7;
|
|
2686
|
+
}
|
|
2687
|
+
if (state.have + copy > state.nlen + state.ndist) {
|
|
2688
|
+
strm.msg = "invalid bit length repeat";
|
|
2689
|
+
state.mode = BAD;
|
|
2690
|
+
break;
|
|
2691
|
+
}
|
|
2692
|
+
while (copy--) state.lens[state.have++] = len;
|
|
2693
|
+
}
|
|
2694
|
+
}
|
|
2695
|
+
if (state.mode === BAD) break;
|
|
2696
|
+
if (state.lens[256] === 0) {
|
|
2697
|
+
strm.msg = "invalid code -- missing end-of-block";
|
|
2698
|
+
state.mode = BAD;
|
|
2699
|
+
break;
|
|
2700
|
+
}
|
|
2701
|
+
state.lenbits = 9;
|
|
2702
|
+
opts = { bits: state.lenbits };
|
|
2703
|
+
ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
|
|
2704
|
+
state.lenbits = opts.bits;
|
|
2705
|
+
if (ret) {
|
|
2706
|
+
strm.msg = "invalid literal/lengths set";
|
|
2707
|
+
state.mode = BAD;
|
|
2708
|
+
break;
|
|
2709
|
+
}
|
|
2710
|
+
state.distbits = 6;
|
|
2711
|
+
state.distcode = state.distdyn;
|
|
2712
|
+
opts = { bits: state.distbits };
|
|
2713
|
+
ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
|
|
2714
|
+
state.distbits = opts.bits;
|
|
2715
|
+
if (ret) {
|
|
2716
|
+
strm.msg = "invalid distances set";
|
|
2717
|
+
state.mode = BAD;
|
|
2718
|
+
break;
|
|
2719
|
+
}
|
|
2720
|
+
state.mode = LEN_;
|
|
2721
|
+
if (flush === 6) break inf_leave;
|
|
2722
|
+
case LEN_:
|
|
2723
|
+
state.mode = LEN;
|
|
2724
|
+
case LEN:
|
|
2725
|
+
if (have >= 6 && left >= 258) {
|
|
2726
|
+
strm.next_out = put;
|
|
2727
|
+
strm.avail_out = left;
|
|
2728
|
+
strm.next_in = next;
|
|
2729
|
+
strm.avail_in = have;
|
|
2730
|
+
state.hold = hold;
|
|
2731
|
+
state.bits = bits;
|
|
2732
|
+
inflate_fast(strm, _out);
|
|
2733
|
+
put = strm.next_out;
|
|
2734
|
+
output = strm.output;
|
|
2735
|
+
left = strm.avail_out;
|
|
2736
|
+
next = strm.next_in;
|
|
2737
|
+
input = strm.input;
|
|
2738
|
+
have = strm.avail_in;
|
|
2739
|
+
hold = state.hold;
|
|
2740
|
+
bits = state.bits;
|
|
2741
|
+
if (state.mode === TYPE) state.back = -1;
|
|
2742
|
+
break;
|
|
2743
|
+
}
|
|
2744
|
+
state.back = 0;
|
|
2745
|
+
for (; ; ) {
|
|
2746
|
+
here = state.lencode[hold & (1 << state.lenbits) - 1];
|
|
2747
|
+
here_bits = here >>> 24;
|
|
2748
|
+
here_op = here >>> 16 & 255;
|
|
2749
|
+
here_val = here & 65535;
|
|
2750
|
+
if (here_bits <= bits) break;
|
|
2751
|
+
if (have === 0) break inf_leave;
|
|
2752
|
+
have--;
|
|
2753
|
+
hold += input[next++] << bits;
|
|
2754
|
+
bits += 8;
|
|
2755
|
+
}
|
|
2756
|
+
if (here_op && (here_op & 240) === 0) {
|
|
2757
|
+
last_bits = here_bits;
|
|
2758
|
+
last_op = here_op;
|
|
2759
|
+
last_val = here_val;
|
|
2760
|
+
for (; ; ) {
|
|
2761
|
+
here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
|
|
2762
|
+
here_bits = here >>> 24;
|
|
2763
|
+
here_op = here >>> 16 & 255;
|
|
2764
|
+
here_val = here & 65535;
|
|
2765
|
+
if (last_bits + here_bits <= bits) break;
|
|
2766
|
+
if (have === 0) break inf_leave;
|
|
2767
|
+
have--;
|
|
2768
|
+
hold += input[next++] << bits;
|
|
2769
|
+
bits += 8;
|
|
2770
|
+
}
|
|
2771
|
+
hold >>>= last_bits;
|
|
2772
|
+
bits -= last_bits;
|
|
2773
|
+
state.back += last_bits;
|
|
2774
|
+
}
|
|
2775
|
+
hold >>>= here_bits;
|
|
2776
|
+
bits -= here_bits;
|
|
2777
|
+
state.back += here_bits;
|
|
2778
|
+
state.length = here_val;
|
|
2779
|
+
if (here_op === 0) {
|
|
2780
|
+
state.mode = LIT;
|
|
2781
|
+
break;
|
|
2782
|
+
}
|
|
2783
|
+
if (here_op & 32) {
|
|
2784
|
+
state.back = -1;
|
|
2785
|
+
state.mode = TYPE;
|
|
2786
|
+
break;
|
|
2787
|
+
}
|
|
2788
|
+
if (here_op & 64) {
|
|
2789
|
+
strm.msg = "invalid literal/length code";
|
|
2790
|
+
state.mode = BAD;
|
|
2791
|
+
break;
|
|
2792
|
+
}
|
|
2793
|
+
state.extra = here_op & 15;
|
|
2794
|
+
state.mode = LENEXT;
|
|
2795
|
+
case LENEXT:
|
|
2796
|
+
if (state.extra) {
|
|
2797
|
+
n = state.extra;
|
|
2798
|
+
while (bits < n) {
|
|
2799
|
+
if (have === 0) break inf_leave;
|
|
2800
|
+
have--;
|
|
2801
|
+
hold += input[next++] << bits;
|
|
2802
|
+
bits += 8;
|
|
2803
|
+
}
|
|
2804
|
+
state.length += hold & (1 << state.extra) - 1;
|
|
2805
|
+
hold >>>= state.extra;
|
|
2806
|
+
bits -= state.extra;
|
|
2807
|
+
state.back += state.extra;
|
|
2808
|
+
}
|
|
2809
|
+
state.was = state.length;
|
|
2810
|
+
state.mode = DIST;
|
|
2811
|
+
case DIST:
|
|
2812
|
+
for (; ; ) {
|
|
2813
|
+
here = state.distcode[hold & (1 << state.distbits) - 1];
|
|
2814
|
+
here_bits = here >>> 24;
|
|
2815
|
+
here_op = here >>> 16 & 255;
|
|
2816
|
+
here_val = here & 65535;
|
|
2817
|
+
if (here_bits <= bits) break;
|
|
2818
|
+
if (have === 0) break inf_leave;
|
|
2819
|
+
have--;
|
|
2820
|
+
hold += input[next++] << bits;
|
|
2821
|
+
bits += 8;
|
|
2822
|
+
}
|
|
2823
|
+
if ((here_op & 240) === 0) {
|
|
2824
|
+
last_bits = here_bits;
|
|
2825
|
+
last_op = here_op;
|
|
2826
|
+
last_val = here_val;
|
|
2827
|
+
for (; ; ) {
|
|
2828
|
+
here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
|
|
2829
|
+
here_bits = here >>> 24;
|
|
2830
|
+
here_op = here >>> 16 & 255;
|
|
2831
|
+
here_val = here & 65535;
|
|
2832
|
+
if (last_bits + here_bits <= bits) break;
|
|
2833
|
+
if (have === 0) break inf_leave;
|
|
2834
|
+
have--;
|
|
2835
|
+
hold += input[next++] << bits;
|
|
2836
|
+
bits += 8;
|
|
2837
|
+
}
|
|
2838
|
+
hold >>>= last_bits;
|
|
2839
|
+
bits -= last_bits;
|
|
2840
|
+
state.back += last_bits;
|
|
2841
|
+
}
|
|
2842
|
+
hold >>>= here_bits;
|
|
2843
|
+
bits -= here_bits;
|
|
2844
|
+
state.back += here_bits;
|
|
2845
|
+
if (here_op & 64) {
|
|
2846
|
+
strm.msg = "invalid distance code";
|
|
2847
|
+
state.mode = BAD;
|
|
2848
|
+
break;
|
|
2849
|
+
}
|
|
2850
|
+
state.offset = here_val;
|
|
2851
|
+
state.extra = here_op & 15;
|
|
2852
|
+
state.mode = DISTEXT;
|
|
2853
|
+
case DISTEXT:
|
|
2854
|
+
if (state.extra) {
|
|
2855
|
+
n = state.extra;
|
|
2856
|
+
while (bits < n) {
|
|
2857
|
+
if (have === 0) break inf_leave;
|
|
2858
|
+
have--;
|
|
2859
|
+
hold += input[next++] << bits;
|
|
2860
|
+
bits += 8;
|
|
2861
|
+
}
|
|
2862
|
+
state.offset += hold & (1 << state.extra) - 1;
|
|
2863
|
+
hold >>>= state.extra;
|
|
2864
|
+
bits -= state.extra;
|
|
2865
|
+
state.back += state.extra;
|
|
2866
|
+
}
|
|
2867
|
+
if (state.offset > state.dmax) {
|
|
2868
|
+
strm.msg = "invalid distance too far back";
|
|
2869
|
+
state.mode = BAD;
|
|
2870
|
+
break;
|
|
2871
|
+
}
|
|
2872
|
+
state.mode = MATCH;
|
|
2873
|
+
case MATCH:
|
|
2874
|
+
if (left === 0) break inf_leave;
|
|
2875
|
+
copy = _out - left;
|
|
2876
|
+
if (state.offset > copy) {
|
|
2877
|
+
copy = state.offset - copy;
|
|
2878
|
+
if (copy > state.whave) {
|
|
2879
|
+
if (state.sane) {
|
|
2880
|
+
strm.msg = "invalid distance too far back";
|
|
2881
|
+
state.mode = BAD;
|
|
2882
|
+
break;
|
|
2883
|
+
}
|
|
2884
|
+
}
|
|
2885
|
+
if (copy > state.wnext) {
|
|
2886
|
+
copy -= state.wnext;
|
|
2887
|
+
from = state.wsize - copy;
|
|
2888
|
+
} else from = state.wnext - copy;
|
|
2889
|
+
if (copy > state.length) copy = state.length;
|
|
2890
|
+
from_source = state.window;
|
|
2891
|
+
} else {
|
|
2892
|
+
from_source = output;
|
|
2893
|
+
from = put - state.offset;
|
|
2894
|
+
copy = state.length;
|
|
2895
|
+
}
|
|
2896
|
+
if (copy > left) copy = left;
|
|
2897
|
+
left -= copy;
|
|
2898
|
+
state.length -= copy;
|
|
2899
|
+
do
|
|
2900
|
+
output[put++] = from_source[from++];
|
|
2901
|
+
while (--copy);
|
|
2902
|
+
if (state.length === 0) state.mode = LEN;
|
|
2903
|
+
break;
|
|
2904
|
+
case LIT:
|
|
2905
|
+
if (left === 0) break inf_leave;
|
|
2906
|
+
output[put++] = state.length;
|
|
2907
|
+
left--;
|
|
2908
|
+
state.mode = LEN;
|
|
2909
|
+
break;
|
|
2910
|
+
case CHECK:
|
|
2911
|
+
if (state.wrap) {
|
|
2912
|
+
while (bits < 32) {
|
|
2913
|
+
if (have === 0) break inf_leave;
|
|
2914
|
+
have--;
|
|
2915
|
+
hold |= input[next++] << bits;
|
|
2916
|
+
bits += 8;
|
|
2917
|
+
}
|
|
2918
|
+
_out -= left;
|
|
2919
|
+
strm.total_out += _out;
|
|
2920
|
+
state.total += _out;
|
|
2921
|
+
if (state.wrap & 4 && _out) strm.adler = state.check = state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out);
|
|
2922
|
+
_out = left;
|
|
2923
|
+
if (state.wrap & 4 && (state.flags ? hold : zswap32(hold)) !== state.check) {
|
|
2924
|
+
strm.msg = "incorrect data check";
|
|
2925
|
+
state.mode = BAD;
|
|
2926
|
+
break;
|
|
2927
|
+
}
|
|
2928
|
+
hold = 0;
|
|
2929
|
+
bits = 0;
|
|
2930
|
+
}
|
|
2931
|
+
state.mode = LENGTH;
|
|
2932
|
+
case LENGTH:
|
|
2933
|
+
if (state.wrap && state.flags) {
|
|
2934
|
+
while (bits < 32) {
|
|
2935
|
+
if (have === 0) break inf_leave;
|
|
2936
|
+
have--;
|
|
2937
|
+
hold += input[next++] << bits;
|
|
2938
|
+
bits += 8;
|
|
2939
|
+
}
|
|
2940
|
+
if (state.wrap & 4 && hold !== (state.total & 4294967295)) {
|
|
2941
|
+
strm.msg = "incorrect length check";
|
|
2942
|
+
state.mode = BAD;
|
|
2943
|
+
break;
|
|
2944
|
+
}
|
|
2945
|
+
hold = 0;
|
|
2946
|
+
bits = 0;
|
|
2947
|
+
}
|
|
2948
|
+
state.mode = DONE;
|
|
2949
|
+
case DONE:
|
|
2950
|
+
ret = 1;
|
|
2951
|
+
break inf_leave;
|
|
2952
|
+
case BAD:
|
|
2953
|
+
ret = -3;
|
|
2954
|
+
break inf_leave;
|
|
2955
|
+
case MEM:
|
|
2956
|
+
return -4;
|
|
2957
|
+
case SYNC:
|
|
2958
|
+
default:
|
|
2959
|
+
return -2;
|
|
2960
|
+
}
|
|
2961
|
+
strm.next_out = put;
|
|
2962
|
+
strm.avail_out = left;
|
|
2963
|
+
strm.next_in = next;
|
|
2964
|
+
strm.avail_in = have;
|
|
2965
|
+
state.hold = hold;
|
|
2966
|
+
state.bits = bits;
|
|
2967
|
+
if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== 4)) {
|
|
2968
|
+
if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
|
|
2969
|
+
state.mode = MEM;
|
|
2970
|
+
return -4;
|
|
2971
|
+
}
|
|
2972
|
+
}
|
|
2973
|
+
_in -= strm.avail_in;
|
|
2974
|
+
_out -= strm.avail_out;
|
|
2975
|
+
strm.total_in += _in;
|
|
2976
|
+
strm.total_out += _out;
|
|
2977
|
+
state.total += _out;
|
|
2978
|
+
if (state.wrap & 4 && _out) strm.adler = state.check = state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out);
|
|
2979
|
+
strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
|
|
2980
|
+
if ((_in === 0 && _out === 0 || flush === 4) && ret === 0) ret = -5;
|
|
2981
|
+
return ret;
|
|
2982
|
+
};
|
|
2983
|
+
var inflateEnd = (strm) => {
|
|
2984
|
+
if (inflateStateCheck(strm)) return -2;
|
|
2985
|
+
let state = strm.state;
|
|
2986
|
+
if (state.window) state.window = null;
|
|
2987
|
+
strm.state = null;
|
|
2988
|
+
return 0;
|
|
2989
|
+
};
|
|
2990
|
+
var inflateSetDictionary = (strm, dictionary) => {
|
|
2991
|
+
const dictLength = dictionary.length;
|
|
2992
|
+
let state;
|
|
2993
|
+
let dictid;
|
|
2994
|
+
let ret;
|
|
2995
|
+
if (inflateStateCheck(strm)) return -2;
|
|
2996
|
+
state = strm.state;
|
|
2997
|
+
if (state.wrap !== 0 && state.mode !== DICT) return -2;
|
|
2998
|
+
if (state.mode === DICT) {
|
|
2999
|
+
dictid = 1;
|
|
3000
|
+
dictid = adler32(dictid, dictionary, dictLength, 0);
|
|
3001
|
+
if (dictid !== state.check) return -3;
|
|
3002
|
+
}
|
|
3003
|
+
ret = updatewindow(strm, dictionary, dictLength, dictLength);
|
|
3004
|
+
if (ret) {
|
|
3005
|
+
state.mode = MEM;
|
|
3006
|
+
return -4;
|
|
3007
|
+
}
|
|
3008
|
+
state.havedict = 1;
|
|
3009
|
+
return 0;
|
|
3010
|
+
};
|
|
3011
|
+
var ZStream = class {
|
|
3012
|
+
constructor() {
|
|
3013
|
+
this.input = null;
|
|
3014
|
+
this.next_in = 0;
|
|
3015
|
+
this.avail_in = 0;
|
|
3016
|
+
this.total_in = 0;
|
|
3017
|
+
this.output = null;
|
|
3018
|
+
this.next_out = 0;
|
|
3019
|
+
this.avail_out = 0;
|
|
3020
|
+
this.total_out = 0;
|
|
3021
|
+
this.msg = "";
|
|
3022
|
+
this.state = null;
|
|
3023
|
+
this.data_type = 2;
|
|
3024
|
+
this.adler = 0;
|
|
3025
|
+
}
|
|
3026
|
+
};
|
|
3027
|
+
var flattenChunks = (chunks) => {
|
|
3028
|
+
const result = new Uint8Array(chunks.reduce((len, chunk) => len + chunk.length, 0));
|
|
3029
|
+
let pos = 0;
|
|
3030
|
+
for (const chunk of chunks) {
|
|
3031
|
+
result.set(chunk, pos);
|
|
3032
|
+
pos += chunk.length;
|
|
3033
|
+
}
|
|
3034
|
+
return result;
|
|
3035
|
+
};
|
|
3036
|
+
var toString$1 = Object.prototype.toString;
|
|
3037
|
+
var defaultOptions$1 = {
|
|
3038
|
+
level: -1,
|
|
3039
|
+
chunkSize: 16384,
|
|
3040
|
+
windowBits: 15,
|
|
3041
|
+
memLevel: 8,
|
|
3042
|
+
strategy: 0,
|
|
3043
|
+
raw: false,
|
|
3044
|
+
gzip: false,
|
|
3045
|
+
legacyHash: false,
|
|
3046
|
+
dictionary: /* @__PURE__ */ new Uint8Array(0)
|
|
3047
|
+
};
|
|
3048
|
+
var Deflate = class {
|
|
3049
|
+
options;
|
|
3050
|
+
/**
|
|
3051
|
+
* Error code after deflate finishes. {@link Z_OK} on success.
|
|
3052
|
+
* You will not need it in real life, because deflate errors
|
|
3053
|
+
* are possible only on wrong options or bad custom `onData` / `onEnd`
|
|
3054
|
+
* handlers.
|
|
3055
|
+
*/
|
|
3056
|
+
err;
|
|
3057
|
+
/** Error message, if {@link Deflate.err} is not {@link Z_OK}. */
|
|
3058
|
+
msg;
|
|
3059
|
+
ended;
|
|
3060
|
+
started;
|
|
3061
|
+
/**
|
|
3062
|
+
* Chunks of output data, if {@link Deflate.onData} not overridden.
|
|
3063
|
+
* @internal
|
|
3064
|
+
*/
|
|
3065
|
+
chunks;
|
|
3066
|
+
strm;
|
|
3067
|
+
/**
|
|
3068
|
+
* Compressed result, generated by default {@link Deflate.onData}
|
|
3069
|
+
* and {@link Deflate.onEnd} handlers. Filled after you push last chunk
|
|
3070
|
+
* (call {@link Deflate.push} with {@link Z_FINISH} / `true` param).
|
|
3071
|
+
*/
|
|
3072
|
+
result;
|
|
3073
|
+
/**
|
|
3074
|
+
* Creates a new deflator instance with the specified params. Throws an
|
|
3075
|
+
* exception on bad params. See {@link DeflateOptions} for the list of
|
|
3076
|
+
* supported options.
|
|
3077
|
+
*
|
|
3078
|
+
* @example
|
|
3079
|
+
* ```javascript
|
|
3080
|
+
* import { Deflate } from 'pako'
|
|
3081
|
+
*
|
|
3082
|
+
* const chunk1 = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9])
|
|
3083
|
+
* const chunk2 = new Uint8Array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
|
|
3084
|
+
*
|
|
3085
|
+
* const deflate = new Deflate({ level: 3 })
|
|
3086
|
+
*
|
|
3087
|
+
* deflate.push(chunk1, false)
|
|
3088
|
+
* deflate.push(chunk2, true) // true -> last chunk
|
|
3089
|
+
*
|
|
3090
|
+
* if (deflate.err) throw new Error(deflate.err)
|
|
3091
|
+
*
|
|
3092
|
+
* console.log(deflate.result)
|
|
3093
|
+
* ```
|
|
3094
|
+
*/
|
|
3095
|
+
constructor(options = {}) {
|
|
3096
|
+
this.options = Object.assign({}, defaultOptions$1, options);
|
|
3097
|
+
const opt = this.options;
|
|
3098
|
+
if (opt.raw && opt.windowBits > 0) opt.windowBits = -opt.windowBits;
|
|
3099
|
+
else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) opt.windowBits += 16;
|
|
3100
|
+
this.err = 0;
|
|
3101
|
+
this.msg = "";
|
|
3102
|
+
this.ended = false;
|
|
3103
|
+
this.started = false;
|
|
3104
|
+
this.chunks = [];
|
|
3105
|
+
this.result = /* @__PURE__ */ new Uint8Array(0);
|
|
3106
|
+
this.strm = new ZStream();
|
|
3107
|
+
this.strm.avail_out = 0;
|
|
3108
|
+
let status = deflateInit2(this.strm, opt.level, 8, opt.windowBits, opt.memLevel, opt.strategy, opt.legacyHash);
|
|
3109
|
+
if (status !== 0) throw new Error(messages_default[status]);
|
|
3110
|
+
if (toString$1.call(opt.dictionary) === "[object ArrayBuffer]") opt.dictionary = new Uint8Array(opt.dictionary);
|
|
3111
|
+
const dictionary = opt.dictionary;
|
|
3112
|
+
if (dictionary.length) {
|
|
3113
|
+
if (opt.gzip) throw new Error("dictionary is not supported with gzip");
|
|
3114
|
+
status = deflateSetDictionary(this.strm, dictionary);
|
|
3115
|
+
if (status !== 0) throw new Error(messages_default[status]);
|
|
3116
|
+
}
|
|
3117
|
+
}
|
|
3118
|
+
/**
|
|
3119
|
+
* Sends input data to the deflate pipe, generating {@link Deflate.onData} calls
|
|
3120
|
+
* with new compressed chunks. Returns `true` on success. The last data block must
|
|
3121
|
+
* have `flush_mode` {@link Z_FINISH} (or `true`). That will flush the internal
|
|
3122
|
+
* pending buffers and call {@link Deflate.onEnd}.
|
|
3123
|
+
*
|
|
3124
|
+
* On failure, calls {@link Deflate.onEnd} with the error code and returns false.
|
|
3125
|
+
*
|
|
3126
|
+
* @param data input data. Strings will be converted to utf8 byte sequence.
|
|
3127
|
+
* @param flush_mode 0..6 for corresponding {@link Z_NO_FLUSH}..{@link Z_TREES} modes.
|
|
3128
|
+
* See constants. Skipped or `false` means {@link Z_NO_FLUSH}, `true` means {@link Z_FINISH}.
|
|
3129
|
+
*
|
|
3130
|
+
* @example
|
|
3131
|
+
* ```javascript
|
|
3132
|
+
* push(chunk, false) // push one of data chunks
|
|
3133
|
+
* ...
|
|
3134
|
+
* push(chunk, true) // push last chunk
|
|
3135
|
+
* ```
|
|
3136
|
+
*/
|
|
3137
|
+
push(data, flush_mode = false) {
|
|
3138
|
+
const strm = this.strm;
|
|
3139
|
+
const chunkSize = this.options.chunkSize;
|
|
3140
|
+
let status;
|
|
3141
|
+
let _flush_mode;
|
|
3142
|
+
if (this.ended) return false;
|
|
3143
|
+
if (typeof flush_mode === "number") _flush_mode = flush_mode;
|
|
3144
|
+
else _flush_mode = flush_mode === true ? 4 : 0;
|
|
3145
|
+
if (typeof data === "string") strm.input = new TextEncoder().encode(data);
|
|
3146
|
+
else if (toString$1.call(data) === "[object ArrayBuffer]") strm.input = new Uint8Array(data);
|
|
3147
|
+
else strm.input = data;
|
|
3148
|
+
strm.next_in = 0;
|
|
3149
|
+
strm.avail_in = strm.input.length;
|
|
3150
|
+
if (!this.started) {
|
|
3151
|
+
this.started = true;
|
|
3152
|
+
this.onStart(strm);
|
|
3153
|
+
}
|
|
3154
|
+
for (; ; ) {
|
|
3155
|
+
if (strm.avail_out === 0) {
|
|
3156
|
+
strm.output = new Uint8Array(chunkSize);
|
|
3157
|
+
strm.next_out = 0;
|
|
3158
|
+
strm.avail_out = chunkSize;
|
|
3159
|
+
}
|
|
3160
|
+
if ((_flush_mode === 2 || _flush_mode === 3) && strm.avail_out <= 6) {
|
|
3161
|
+
this.onData(strm.output.subarray(0, strm.next_out));
|
|
3162
|
+
strm.avail_out = 0;
|
|
3163
|
+
continue;
|
|
3164
|
+
}
|
|
3165
|
+
status = deflate$1(strm, _flush_mode);
|
|
3166
|
+
if (status === -2) break;
|
|
3167
|
+
if (status === 1) {
|
|
3168
|
+
if (strm.next_out > 0) this.onData(strm.output.subarray(0, strm.next_out));
|
|
3169
|
+
status = deflateEnd(this.strm);
|
|
3170
|
+
break;
|
|
3171
|
+
}
|
|
3172
|
+
if (strm.avail_out === 0) {
|
|
3173
|
+
this.onData(strm.output);
|
|
3174
|
+
continue;
|
|
3175
|
+
}
|
|
3176
|
+
if (_flush_mode > 0 && strm.next_out > 0) {
|
|
3177
|
+
this.onData(strm.output.subarray(0, strm.next_out));
|
|
3178
|
+
strm.avail_out = 0;
|
|
3179
|
+
continue;
|
|
3180
|
+
}
|
|
3181
|
+
if (strm.avail_in === 0) return true;
|
|
3182
|
+
}
|
|
3183
|
+
this.err = status;
|
|
3184
|
+
this.msg = strm.msg || messages_default[status];
|
|
3185
|
+
this.ended = true;
|
|
3186
|
+
this.onEnd(status);
|
|
3187
|
+
return status === 0;
|
|
3188
|
+
}
|
|
3189
|
+
/**
|
|
3190
|
+
* Called once before the first low-level deflate call.
|
|
3191
|
+
*/
|
|
3192
|
+
onStart(strm) {
|
|
3193
|
+
}
|
|
3194
|
+
/**
|
|
3195
|
+
* By default, stores data blocks in the {@link Deflate.chunks} property and glues
|
|
3196
|
+
* them in {@link Deflate.onEnd}. Override this handler if you need another behaviour.
|
|
3197
|
+
*/
|
|
3198
|
+
onData(chunk) {
|
|
3199
|
+
this.chunks.push(chunk);
|
|
3200
|
+
}
|
|
3201
|
+
/**
|
|
3202
|
+
* Called once after you tell deflate that the input stream is
|
|
3203
|
+
* complete ({@link Z_FINISH}). By default, joins the collected {@link Deflate.chunks}
|
|
3204
|
+
* into the {@link Deflate.result} property.
|
|
3205
|
+
*
|
|
3206
|
+
* @param status deflate status. {@link Z_OK} on success, other if not.
|
|
3207
|
+
*/
|
|
3208
|
+
onEnd(status) {
|
|
3209
|
+
if (status === 0) this.result = flattenChunks(this.chunks);
|
|
3210
|
+
this.chunks = [];
|
|
3211
|
+
}
|
|
3212
|
+
};
|
|
3213
|
+
function deflate(input, options = {}) {
|
|
3214
|
+
const deflator = new Deflate(options);
|
|
3215
|
+
deflator.push(input, true);
|
|
3216
|
+
if (deflator.err) throw new Error(deflator.msg);
|
|
3217
|
+
return deflator.result;
|
|
3218
|
+
}
|
|
3219
|
+
function gzip(input, options = {}) {
|
|
3220
|
+
return deflate(input, Object.assign({}, options, { gzip: true }));
|
|
3221
|
+
}
|
|
3222
|
+
var toString = Object.prototype.toString;
|
|
3223
|
+
var defaultOptions = {
|
|
3224
|
+
chunkSize: 1024 * 64,
|
|
3225
|
+
windowBits: 15,
|
|
3226
|
+
raw: false,
|
|
3227
|
+
dictionary: /* @__PURE__ */ new Uint8Array(0)
|
|
3228
|
+
};
|
|
3229
|
+
var Inflate = class {
|
|
3230
|
+
options;
|
|
3231
|
+
/**
|
|
3232
|
+
* Error code after inflate finishes. {@link Z_OK} on success.
|
|
3233
|
+
* Should be checked when broken data is possible.
|
|
3234
|
+
*/
|
|
3235
|
+
err;
|
|
3236
|
+
/** Error message, if {@link Inflate.err} is not {@link Z_OK}. */
|
|
3237
|
+
msg;
|
|
3238
|
+
/**
|
|
3239
|
+
* `true` once the compressed stream has ended. A stream may end before the
|
|
3240
|
+
* caller's data does (trailing bytes), so check this to know when to stop
|
|
3241
|
+
* pushing - further {@link Inflate.push} calls are no-ops.
|
|
3242
|
+
*/
|
|
3243
|
+
ended;
|
|
3244
|
+
started;
|
|
3245
|
+
/**
|
|
3246
|
+
* Chunks of output data, if {@link Inflate.onData} not overridden.
|
|
3247
|
+
* @internal
|
|
3248
|
+
*/
|
|
3249
|
+
chunks;
|
|
3250
|
+
strm;
|
|
3251
|
+
/**
|
|
3252
|
+
* Uncompressed result, generated by default {@link Inflate.onData}
|
|
3253
|
+
* and {@link Inflate.onEnd} handlers. Filled after you push last chunk
|
|
3254
|
+
* (call {@link Inflate.push} with {@link Z_FINISH} / `true` param).
|
|
3255
|
+
*/
|
|
3256
|
+
result;
|
|
3257
|
+
/**
|
|
3258
|
+
* Creates a new inflator instance with the specified params. Throws an
|
|
3259
|
+
* exception on bad params. See {@link InflateOptions} for the list of
|
|
3260
|
+
* supported options.
|
|
3261
|
+
*
|
|
3262
|
+
* By default, when no options are set, the deflate/gzip data format is
|
|
3263
|
+
* autodetected via the wrapper header.
|
|
3264
|
+
*
|
|
3265
|
+
* @example
|
|
3266
|
+
* ```javascript
|
|
3267
|
+
* import { Inflate } from 'pako'
|
|
3268
|
+
*
|
|
3269
|
+
* const chunk1 = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9])
|
|
3270
|
+
* const chunk2 = new Uint8Array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
|
|
3271
|
+
*
|
|
3272
|
+
* const inflate = new Inflate({ level: 3 })
|
|
3273
|
+
*
|
|
3274
|
+
* inflate.push(chunk1, false)
|
|
3275
|
+
* inflate.push(chunk2, true) // true -> last chunk
|
|
3276
|
+
*
|
|
3277
|
+
* if (inflate.err) throw new Error(inflate.err)
|
|
3278
|
+
*
|
|
3279
|
+
* console.log(inflate.result)
|
|
3280
|
+
* ```
|
|
3281
|
+
*/
|
|
3282
|
+
constructor(options = {}) {
|
|
3283
|
+
this.options = Object.assign({}, defaultOptions, options);
|
|
3284
|
+
const opt = this.options;
|
|
3285
|
+
if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {
|
|
3286
|
+
opt.windowBits = -opt.windowBits;
|
|
3287
|
+
if (opt.windowBits === 0) opt.windowBits = -15;
|
|
3288
|
+
}
|
|
3289
|
+
if (opt.windowBits >= 0 && opt.windowBits < 16 && !options.windowBits) opt.windowBits += 32;
|
|
3290
|
+
if (opt.windowBits > 15 && opt.windowBits < 48) {
|
|
3291
|
+
if ((opt.windowBits & 15) === 0) opt.windowBits |= 15;
|
|
3292
|
+
}
|
|
3293
|
+
this.err = 0;
|
|
3294
|
+
this.msg = "";
|
|
3295
|
+
this.ended = false;
|
|
3296
|
+
this.started = false;
|
|
3297
|
+
this.chunks = [];
|
|
3298
|
+
this.result = /* @__PURE__ */ new Uint8Array(0);
|
|
3299
|
+
this.strm = new ZStream();
|
|
3300
|
+
this.strm.avail_out = 0;
|
|
3301
|
+
let status = inflateInit2(this.strm, opt.windowBits);
|
|
3302
|
+
if (status !== 0) throw new Error(messages_default[status]);
|
|
3303
|
+
if (toString.call(opt.dictionary) === "[object ArrayBuffer]") opt.dictionary = new Uint8Array(opt.dictionary);
|
|
3304
|
+
const dictionary = opt.dictionary;
|
|
3305
|
+
if (opt.raw && dictionary.length) {
|
|
3306
|
+
status = inflateSetDictionary(this.strm, dictionary);
|
|
3307
|
+
if (status !== 0) throw new Error(messages_default[status]);
|
|
3308
|
+
}
|
|
3309
|
+
}
|
|
3310
|
+
/**
|
|
3311
|
+
* Sends input data to the inflate pipe, generating {@link Inflate.onData} calls
|
|
3312
|
+
* with new output chunks. Returns `true` on success. If end of stream is
|
|
3313
|
+
* detected, {@link Inflate.onEnd} will be called.
|
|
3314
|
+
*
|
|
3315
|
+
* `flush_mode` is not needed for normal operation, because end of stream
|
|
3316
|
+
* is detected automatically. Pass {@link Z_SYNC_FLUSH} to force the decoder
|
|
3317
|
+
* to emit all currently available output — handy when you need to decode
|
|
3318
|
+
* data frame-by-frame from a long-running stream.
|
|
3319
|
+
*
|
|
3320
|
+
* On failure, calls {@link Inflate.onEnd} with the error code and returns false.
|
|
3321
|
+
*
|
|
3322
|
+
* Once the stream has ended (a compressed stream may end before your data
|
|
3323
|
+
* does), further `push` calls are no-ops and return whether the decode
|
|
3324
|
+
* finished successfully. The final outcome is in {@link Inflate.result},
|
|
3325
|
+
* {@link Inflate.err} and {@link Inflate.msg}.
|
|
3326
|
+
*
|
|
3327
|
+
* @param flush_mode 0..6 for corresponding {@link Z_NO_FLUSH}..{@link Z_TREES}
|
|
3328
|
+
* flush modes. See constants. Skipped or `false` means {@link Z_NO_FLUSH},
|
|
3329
|
+
* `true` means {@link Z_FINISH}.
|
|
3330
|
+
*
|
|
3331
|
+
* @example
|
|
3332
|
+
* ```javascript
|
|
3333
|
+
* push(chunk, false) // push one of data chunks
|
|
3334
|
+
* ...
|
|
3335
|
+
* push(chunk, true) // push last chunk
|
|
3336
|
+
* ```
|
|
3337
|
+
*/
|
|
3338
|
+
push(data, flush_mode = false) {
|
|
3339
|
+
const strm = this.strm;
|
|
3340
|
+
const chunkSize = this.options.chunkSize;
|
|
3341
|
+
let status;
|
|
3342
|
+
let _flush_mode;
|
|
3343
|
+
let last_avail_out;
|
|
3344
|
+
if (this.ended) return this.err === 0;
|
|
3345
|
+
if (typeof flush_mode === "number") _flush_mode = flush_mode;
|
|
3346
|
+
else _flush_mode = flush_mode === true ? 4 : 0;
|
|
3347
|
+
if (toString.call(data) === "[object ArrayBuffer]") strm.input = new Uint8Array(data);
|
|
3348
|
+
else strm.input = data;
|
|
3349
|
+
strm.next_in = 0;
|
|
3350
|
+
strm.avail_in = strm.input.length;
|
|
3351
|
+
if (!this.started) {
|
|
3352
|
+
this.started = true;
|
|
3353
|
+
this.onStart(strm);
|
|
3354
|
+
}
|
|
3355
|
+
for (; ; ) {
|
|
3356
|
+
if (strm.avail_out === 0) {
|
|
3357
|
+
strm.output = new Uint8Array(chunkSize);
|
|
3358
|
+
strm.next_out = 0;
|
|
3359
|
+
strm.avail_out = chunkSize;
|
|
3360
|
+
}
|
|
3361
|
+
status = inflate$1(strm, _flush_mode);
|
|
3362
|
+
if (status === 2) {
|
|
3363
|
+
const dictionary = this.options.dictionary;
|
|
3364
|
+
if (dictionary.length) {
|
|
3365
|
+
status = inflateSetDictionary(strm, dictionary);
|
|
3366
|
+
if (status === 0) status = inflate$1(strm, _flush_mode);
|
|
3367
|
+
else if (status === -3) status = 2;
|
|
3368
|
+
}
|
|
3369
|
+
}
|
|
3370
|
+
while (strm.avail_in > 0 && status === 1 && strm.state.wrap & 2 && strm.state.flags !== 0 && strm.input[strm.next_in] !== 0) {
|
|
3371
|
+
inflateReset(strm);
|
|
3372
|
+
status = inflate$1(strm, _flush_mode);
|
|
3373
|
+
}
|
|
3374
|
+
if (status === -2 || status === -3 || status === 2 || status === -4) break;
|
|
3375
|
+
last_avail_out = strm.avail_out;
|
|
3376
|
+
if (strm.next_out) {
|
|
3377
|
+
if (strm.avail_out === 0 || status === 1 || _flush_mode > 0) {
|
|
3378
|
+
this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));
|
|
3379
|
+
strm.avail_out = 0;
|
|
3380
|
+
strm.next_out = 0;
|
|
3381
|
+
}
|
|
3382
|
+
}
|
|
3383
|
+
if ((status === 0 || status === -5) && last_avail_out === 0) continue;
|
|
3384
|
+
if (status === 1) {
|
|
3385
|
+
status = inflateEnd(this.strm);
|
|
3386
|
+
break;
|
|
3387
|
+
}
|
|
3388
|
+
if (strm.avail_in === 0) {
|
|
3389
|
+
if (_flush_mode === 4) {
|
|
3390
|
+
status = inflateEnd(this.strm);
|
|
3391
|
+
if (status === 0) status = -5;
|
|
3392
|
+
break;
|
|
3393
|
+
}
|
|
3394
|
+
return true;
|
|
3395
|
+
}
|
|
3396
|
+
}
|
|
3397
|
+
this.err = status;
|
|
3398
|
+
this.msg = strm.msg || messages_default[status];
|
|
3399
|
+
this.ended = true;
|
|
3400
|
+
this.onEnd(status);
|
|
3401
|
+
return status === 0;
|
|
3402
|
+
}
|
|
3403
|
+
/**
|
|
3404
|
+
* Called once before the first low-level inflate call.
|
|
3405
|
+
*
|
|
3406
|
+
* Override this handler to attach low-level inflate state, for example to read
|
|
3407
|
+
* gzip header metadata:
|
|
3408
|
+
*
|
|
3409
|
+
* ```javascript
|
|
3410
|
+
* import { Inflate, GZheader, zlibInflateGetHeader } from 'pako'
|
|
3411
|
+
*
|
|
3412
|
+
* const inflator = new Inflate()
|
|
3413
|
+
*
|
|
3414
|
+
* inflator.onStart = function (strm) {
|
|
3415
|
+
* this.header = new GZheader()
|
|
3416
|
+
* zlibInflateGetHeader(strm, this.header)
|
|
3417
|
+
* }
|
|
3418
|
+
*
|
|
3419
|
+
* inflator.push(data, true)
|
|
3420
|
+
* console.log(inflator.header.name)
|
|
3421
|
+
* ```
|
|
3422
|
+
*/
|
|
3423
|
+
onStart(strm) {
|
|
3424
|
+
}
|
|
3425
|
+
/**
|
|
3426
|
+
* By default, stores data blocks in the {@link Inflate.chunks} property and glues
|
|
3427
|
+
* them in {@link Inflate.onEnd}. Override this handler if you need another behaviour.
|
|
3428
|
+
*
|
|
3429
|
+
* @param chunk output data.
|
|
3430
|
+
*/
|
|
3431
|
+
onData(chunk) {
|
|
3432
|
+
this.chunks.push(chunk);
|
|
3433
|
+
}
|
|
3434
|
+
/**
|
|
3435
|
+
* Called after you tell inflate that the input stream is
|
|
3436
|
+
* complete ({@link Z_FINISH}). By default, joins the collected {@link Inflate.chunks},
|
|
3437
|
+
* frees memory and fills the {@link Inflate.result} property.
|
|
3438
|
+
*
|
|
3439
|
+
* @param status inflate status. {@link Z_OK} on success, other if not.
|
|
3440
|
+
*/
|
|
3441
|
+
onEnd(status) {
|
|
3442
|
+
if (status === 0) this.result = flattenChunks(this.chunks);
|
|
3443
|
+
this.chunks = [];
|
|
3444
|
+
}
|
|
3445
|
+
};
|
|
3446
|
+
function inflate(input, options = {}) {
|
|
3447
|
+
const inflator = new Inflate(options);
|
|
3448
|
+
inflator.push(input, true);
|
|
3449
|
+
if (inflator.err) throw new Error(inflator.msg);
|
|
3450
|
+
const result = inflator.result;
|
|
3451
|
+
return options.toText ? new TextDecoder().decode(result) : result;
|
|
3452
|
+
}
|
|
3453
|
+
function inflateRaw(input, options = {}) {
|
|
3454
|
+
return inflate(input, {
|
|
3455
|
+
...options,
|
|
3456
|
+
raw: true
|
|
3457
|
+
});
|
|
3458
|
+
}
|
|
3459
|
+
|
|
3460
|
+
export {
|
|
3461
|
+
gzip,
|
|
3462
|
+
inflate,
|
|
3463
|
+
inflateRaw
|
|
3464
|
+
};
|