init
This commit is contained in:
		
							
								
								
									
										27
									
								
								vendor/pako/lib/zlib/adler32.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								vendor/pako/lib/zlib/adler32.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| // Note: adler32 takes 12% for level 0 and 2% for level 6. | ||||
| // It doesn't worth to make additional optimizationa as in original. | ||||
| // Small size is preferable. | ||||
|  | ||||
| export default function adler32(adler, buf, len, pos) { | ||||
|   var s1 = (adler & 0xffff) |0, | ||||
|       s2 = ((adler >>> 16) & 0xffff) |0, | ||||
|       n = 0; | ||||
|  | ||||
|   while (len !== 0) { | ||||
|     // Set limit ~ twice less than 5552, to keep | ||||
|     // s2 in 31-bits, because we force signed ints. | ||||
|     // in other case %= will fail. | ||||
|     n = len > 2000 ? 2000 : len; | ||||
|     len -= n; | ||||
|  | ||||
|     do { | ||||
|       s1 = (s1 + buf[pos++]) |0; | ||||
|       s2 = (s2 + s1) |0; | ||||
|     } while (--n); | ||||
|  | ||||
|     s1 %= 65521; | ||||
|     s2 %= 65521; | ||||
|   } | ||||
|  | ||||
|   return (s1 | (s2 << 16)) |0; | ||||
| } | ||||
							
								
								
									
										47
									
								
								vendor/pako/lib/zlib/constants.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								vendor/pako/lib/zlib/constants.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| export default { | ||||
|  | ||||
|   /* Allowed flush values; see deflate() and inflate() below for details */ | ||||
|   Z_NO_FLUSH:         0, | ||||
|   Z_PARTIAL_FLUSH:    1, | ||||
|   Z_SYNC_FLUSH:       2, | ||||
|   Z_FULL_FLUSH:       3, | ||||
|   Z_FINISH:           4, | ||||
|   Z_BLOCK:            5, | ||||
|   Z_TREES:            6, | ||||
|  | ||||
|   /* Return codes for the compression/decompression functions. Negative values | ||||
|   * are errors, positive values are used for special but normal events. | ||||
|   */ | ||||
|   Z_OK:               0, | ||||
|   Z_STREAM_END:       1, | ||||
|   Z_NEED_DICT:        2, | ||||
|   Z_ERRNO:           -1, | ||||
|   Z_STREAM_ERROR:    -2, | ||||
|   Z_DATA_ERROR:      -3, | ||||
|   //Z_MEM_ERROR:     -4, | ||||
|   Z_BUF_ERROR:       -5, | ||||
|   //Z_VERSION_ERROR: -6, | ||||
|  | ||||
|   /* compression levels */ | ||||
|   Z_NO_COMPRESSION:         0, | ||||
|   Z_BEST_SPEED:             1, | ||||
|   Z_BEST_COMPRESSION:       9, | ||||
|   Z_DEFAULT_COMPRESSION:   -1, | ||||
|  | ||||
|  | ||||
|   Z_FILTERED:               1, | ||||
|   Z_HUFFMAN_ONLY:           2, | ||||
|   Z_RLE:                    3, | ||||
|   Z_FIXED:                  4, | ||||
|   Z_DEFAULT_STRATEGY:       0, | ||||
|  | ||||
|   /* Possible values of the data_type field (though see inflate()) */ | ||||
|   Z_BINARY:                 0, | ||||
|   Z_TEXT:                   1, | ||||
|   //Z_ASCII:                1, // = Z_TEXT (deprecated) | ||||
|   Z_UNKNOWN:                2, | ||||
|  | ||||
|   /* The deflate compression method */ | ||||
|   Z_DEFLATED:               8 | ||||
|   //Z_NULL:                 null // Use -1 or null inline, depending on var type | ||||
| }; | ||||
							
								
								
									
										36
									
								
								vendor/pako/lib/zlib/crc32.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								vendor/pako/lib/zlib/crc32.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | ||||
| // Note: we can't get significant speed boost here. | ||||
| // So write code to minimize size - no pregenerated tables | ||||
| // and array tools dependencies. | ||||
|  | ||||
|  | ||||
| // Use ordinary array, since untyped makes no boost here | ||||
| export default function makeTable() { | ||||
|   var c, table = []; | ||||
|  | ||||
|   for (var n = 0; n < 256; n++) { | ||||
|     c = n; | ||||
|     for (var k = 0; k < 8; k++) { | ||||
|       c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); | ||||
|     } | ||||
|     table[n] = c; | ||||
|   } | ||||
|  | ||||
|   return table; | ||||
| } | ||||
|  | ||||
| // Create table on load. Just 255 signed longs. Not a problem. | ||||
| var crcTable = makeTable(); | ||||
|  | ||||
|  | ||||
| function crc32(crc, buf, len, pos) { | ||||
|   var t = crcTable, | ||||
|       end = pos + len; | ||||
|  | ||||
|   crc ^= -1; | ||||
|  | ||||
|   for (var i = pos; i < end; i++) { | ||||
|     crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF]; | ||||
|   } | ||||
|  | ||||
|   return (crc ^ (-1)); // >>> 0; | ||||
| } | ||||
							
								
								
									
										1846
									
								
								vendor/pako/lib/zlib/deflate.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1846
									
								
								vendor/pako/lib/zlib/deflate.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										35
									
								
								vendor/pako/lib/zlib/gzheader.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								vendor/pako/lib/zlib/gzheader.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| export default function GZheader() { | ||||
|   /* true if compressed data believed to be text */ | ||||
|   this.text       = 0; | ||||
|   /* modification time */ | ||||
|   this.time       = 0; | ||||
|   /* extra flags (not used when writing a gzip file) */ | ||||
|   this.xflags     = 0; | ||||
|   /* operating system */ | ||||
|   this.os         = 0; | ||||
|   /* pointer to extra field or Z_NULL if none */ | ||||
|   this.extra      = null; | ||||
|   /* extra field length (valid if extra != Z_NULL) */ | ||||
|   this.extra_len  = 0; // Actually, we don't need it in JS, | ||||
|                        // but leave for few code modifications | ||||
|  | ||||
|   // | ||||
|   // Setup limits is not necessary because in js we should not preallocate memory | ||||
|   // for inflate use constant limit in 65536 bytes | ||||
|   // | ||||
|  | ||||
|   /* space at extra (only when reading header) */ | ||||
|   // this.extra_max  = 0; | ||||
|   /* pointer to zero-terminated file name or Z_NULL */ | ||||
|   this.name       = ''; | ||||
|   /* space at name (only when reading header) */ | ||||
|   // this.name_max   = 0; | ||||
|   /* pointer to zero-terminated comment or Z_NULL */ | ||||
|   this.comment    = ''; | ||||
|   /* space at comment (only when reading header) */ | ||||
|   // this.comm_max   = 0; | ||||
|   /* true if there was or will be a header crc */ | ||||
|   this.hcrc       = 0; | ||||
|   /* true when done reading gzip header (not used when writing a gzip file) */ | ||||
|   this.done       = false; | ||||
| } | ||||
							
								
								
									
										324
									
								
								vendor/pako/lib/zlib/inffast.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										324
									
								
								vendor/pako/lib/zlib/inffast.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,324 @@ | ||||
| // See state defs from inflate.js | ||||
| var BAD = 30;       /* got a data error -- remain here until reset */ | ||||
| var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */ | ||||
|  | ||||
| /* | ||||
|    Decode literal, length, and distance codes and write out the resulting | ||||
|    literal and match bytes until either not enough input or output is | ||||
|    available, an end-of-block is encountered, or a data error is encountered. | ||||
|    When large enough input and output buffers are supplied to inflate(), for | ||||
|    example, a 16K input buffer and a 64K output buffer, more than 95% of the | ||||
|    inflate execution time is spent in this routine. | ||||
|  | ||||
|    Entry assumptions: | ||||
|  | ||||
|         state.mode === LEN | ||||
|         strm.avail_in >= 6 | ||||
|         strm.avail_out >= 258 | ||||
|         start >= strm.avail_out | ||||
|         state.bits < 8 | ||||
|  | ||||
|    On return, state.mode is one of: | ||||
|  | ||||
|         LEN -- ran out of enough output space or enough available input | ||||
|         TYPE -- reached end of block code, inflate() to interpret next block | ||||
|         BAD -- error in block data | ||||
|  | ||||
|    Notes: | ||||
|  | ||||
|     - The maximum input bits used by a length/distance pair is 15 bits for the | ||||
|       length code, 5 bits for the length extra, 15 bits for the distance code, | ||||
|       and 13 bits for the distance extra.  This totals 48 bits, or six bytes. | ||||
|       Therefore if strm.avail_in >= 6, then there is enough input to avoid | ||||
|       checking for available input while decoding. | ||||
|  | ||||
|     - The maximum bytes that a single length/distance pair can output is 258 | ||||
|       bytes, which is the maximum length that can be coded.  inflate_fast() | ||||
|       requires strm.avail_out >= 258 for each loop to avoid checking for | ||||
|       output space. | ||||
|  */ | ||||
| export default function inflate_fast(strm, start) { | ||||
|   var state; | ||||
|   var _in;                    /* local strm.input */ | ||||
|   var last;                   /* have enough input while in < last */ | ||||
|   var _out;                   /* local strm.output */ | ||||
|   var beg;                    /* inflate()'s initial strm.output */ | ||||
|   var end;                    /* while out < end, enough space available */ | ||||
| //#ifdef INFLATE_STRICT | ||||
|   var dmax;                   /* maximum distance from zlib header */ | ||||
| //#endif | ||||
|   var wsize;                  /* window size or zero if not using window */ | ||||
|   var whave;                  /* valid bytes in the window */ | ||||
|   var wnext;                  /* window write index */ | ||||
|   // Use `s_window` instead `window`, avoid conflict with instrumentation tools | ||||
|   var s_window;               /* allocated sliding window, if wsize != 0 */ | ||||
|   var hold;                   /* local strm.hold */ | ||||
|   var bits;                   /* local strm.bits */ | ||||
|   var lcode;                  /* local strm.lencode */ | ||||
|   var dcode;                  /* local strm.distcode */ | ||||
|   var lmask;                  /* mask for first level of length codes */ | ||||
|   var dmask;                  /* mask for first level of distance codes */ | ||||
|   var here;                   /* retrieved table entry */ | ||||
|   var op;                     /* code bits, operation, extra bits, or */ | ||||
|                               /*  window position, window bytes to copy */ | ||||
|   var len;                    /* match length, unused bytes */ | ||||
|   var dist;                   /* match distance */ | ||||
|   var from;                   /* where to copy match from */ | ||||
|   var from_source; | ||||
|  | ||||
|  | ||||
|   var input, output; // JS specific, because we have no pointers | ||||
|  | ||||
|   /* copy state to local variables */ | ||||
|   state = strm.state; | ||||
|   //here = state.here; | ||||
|   _in = strm.next_in; | ||||
|   input = strm.input; | ||||
|   last = _in + (strm.avail_in - 5); | ||||
|   _out = strm.next_out; | ||||
|   output = strm.output; | ||||
|   beg = _out - (start - strm.avail_out); | ||||
|   end = _out + (strm.avail_out - 257); | ||||
| //#ifdef INFLATE_STRICT | ||||
|   dmax = state.dmax; | ||||
| //#endif | ||||
|   wsize = state.wsize; | ||||
|   whave = state.whave; | ||||
|   wnext = state.wnext; | ||||
|   s_window = state.window; | ||||
|   hold = state.hold; | ||||
|   bits = state.bits; | ||||
|   lcode = state.lencode; | ||||
|   dcode = state.distcode; | ||||
|   lmask = (1 << state.lenbits) - 1; | ||||
|   dmask = (1 << state.distbits) - 1; | ||||
|  | ||||
|  | ||||
|   /* decode literals and length/distances until end-of-block or not enough | ||||
|      input data or output space */ | ||||
|  | ||||
|   top: | ||||
|   do { | ||||
|     if (bits < 15) { | ||||
|       hold += input[_in++] << bits; | ||||
|       bits += 8; | ||||
|       hold += input[_in++] << bits; | ||||
|       bits += 8; | ||||
|     } | ||||
|  | ||||
|     here = lcode[hold & lmask]; | ||||
|  | ||||
|     dolen: | ||||
|     for (;;) { // Goto emulation | ||||
|       op = here >>> 24/*here.bits*/; | ||||
|       hold >>>= op; | ||||
|       bits -= op; | ||||
|       op = (here >>> 16) & 0xff/*here.op*/; | ||||
|       if (op === 0) {                          /* literal */ | ||||
|         //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? | ||||
|         //        "inflate:         literal '%c'\n" : | ||||
|         //        "inflate:         literal 0x%02x\n", here.val)); | ||||
|         output[_out++] = here & 0xffff/*here.val*/; | ||||
|       } | ||||
|       else if (op & 16) {                     /* length base */ | ||||
|         len = here & 0xffff/*here.val*/; | ||||
|         op &= 15;                           /* number of extra bits */ | ||||
|         if (op) { | ||||
|           if (bits < op) { | ||||
|             hold += input[_in++] << bits; | ||||
|             bits += 8; | ||||
|           } | ||||
|           len += hold & ((1 << op) - 1); | ||||
|           hold >>>= op; | ||||
|           bits -= op; | ||||
|         } | ||||
|         //Tracevv((stderr, "inflate:         length %u\n", len)); | ||||
|         if (bits < 15) { | ||||
|           hold += input[_in++] << bits; | ||||
|           bits += 8; | ||||
|           hold += input[_in++] << bits; | ||||
|           bits += 8; | ||||
|         } | ||||
|         here = dcode[hold & dmask]; | ||||
|  | ||||
|         dodist: | ||||
|         for (;;) { // goto emulation | ||||
|           op = here >>> 24/*here.bits*/; | ||||
|           hold >>>= op; | ||||
|           bits -= op; | ||||
|           op = (here >>> 16) & 0xff/*here.op*/; | ||||
|  | ||||
|           if (op & 16) {                      /* distance base */ | ||||
|             dist = here & 0xffff/*here.val*/; | ||||
|             op &= 15;                       /* number of extra bits */ | ||||
|             if (bits < op) { | ||||
|               hold += input[_in++] << bits; | ||||
|               bits += 8; | ||||
|               if (bits < op) { | ||||
|                 hold += input[_in++] << bits; | ||||
|                 bits += 8; | ||||
|               } | ||||
|             } | ||||
|             dist += hold & ((1 << op) - 1); | ||||
| //#ifdef INFLATE_STRICT | ||||
|             if (dist > dmax) { | ||||
|               strm.msg = 'invalid distance too far back'; | ||||
|               state.mode = BAD; | ||||
|               break top; | ||||
|             } | ||||
| //#endif | ||||
|             hold >>>= op; | ||||
|             bits -= op; | ||||
|             //Tracevv((stderr, "inflate:         distance %u\n", dist)); | ||||
|             op = _out - beg;                /* max distance in output */ | ||||
|             if (dist > op) {                /* see if copy from window */ | ||||
|               op = dist - op;               /* distance back in window */ | ||||
|               if (op > whave) { | ||||
|                 if (state.sane) { | ||||
|                   strm.msg = 'invalid distance too far back'; | ||||
|                   state.mode = BAD; | ||||
|                   break top; | ||||
|                 } | ||||
|  | ||||
| // (!) This block is disabled in zlib defailts, | ||||
| // don't enable it for binary compatibility | ||||
| //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR | ||||
| //                if (len <= op - whave) { | ||||
| //                  do { | ||||
| //                    output[_out++] = 0; | ||||
| //                  } while (--len); | ||||
| //                  continue top; | ||||
| //                } | ||||
| //                len -= op - whave; | ||||
| //                do { | ||||
| //                  output[_out++] = 0; | ||||
| //                } while (--op > whave); | ||||
| //                if (op === 0) { | ||||
| //                  from = _out - dist; | ||||
| //                  do { | ||||
| //                    output[_out++] = output[from++]; | ||||
| //                  } while (--len); | ||||
| //                  continue top; | ||||
| //                } | ||||
| //#endif | ||||
|               } | ||||
|               from = 0; // window index | ||||
|               from_source = s_window; | ||||
|               if (wnext === 0) {           /* very common case */ | ||||
|                 from += wsize - op; | ||||
|                 if (op < len) {         /* some from window */ | ||||
|                   len -= op; | ||||
|                   do { | ||||
|                     output[_out++] = s_window[from++]; | ||||
|                   } while (--op); | ||||
|                   from = _out - dist;  /* rest from output */ | ||||
|                   from_source = output; | ||||
|                 } | ||||
|               } | ||||
|               else if (wnext < op) {      /* wrap around window */ | ||||
|                 from += wsize + wnext - op; | ||||
|                 op -= wnext; | ||||
|                 if (op < len) {         /* some from end of window */ | ||||
|                   len -= op; | ||||
|                   do { | ||||
|                     output[_out++] = s_window[from++]; | ||||
|                   } while (--op); | ||||
|                   from = 0; | ||||
|                   if (wnext < len) {  /* some from start of window */ | ||||
|                     op = wnext; | ||||
|                     len -= op; | ||||
|                     do { | ||||
|                       output[_out++] = s_window[from++]; | ||||
|                     } while (--op); | ||||
|                     from = _out - dist;      /* rest from output */ | ||||
|                     from_source = output; | ||||
|                   } | ||||
|                 } | ||||
|               } | ||||
|               else {                      /* contiguous in window */ | ||||
|                 from += wnext - op; | ||||
|                 if (op < len) {         /* some from window */ | ||||
|                   len -= op; | ||||
|                   do { | ||||
|                     output[_out++] = s_window[from++]; | ||||
|                   } while (--op); | ||||
|                   from = _out - dist;  /* rest from output */ | ||||
|                   from_source = output; | ||||
|                 } | ||||
|               } | ||||
|               while (len > 2) { | ||||
|                 output[_out++] = from_source[from++]; | ||||
|                 output[_out++] = from_source[from++]; | ||||
|                 output[_out++] = from_source[from++]; | ||||
|                 len -= 3; | ||||
|               } | ||||
|               if (len) { | ||||
|                 output[_out++] = from_source[from++]; | ||||
|                 if (len > 1) { | ||||
|                   output[_out++] = from_source[from++]; | ||||
|                 } | ||||
|               } | ||||
|             } | ||||
|             else { | ||||
|               from = _out - dist;          /* copy direct from output */ | ||||
|               do {                        /* minimum length is three */ | ||||
|                 output[_out++] = output[from++]; | ||||
|                 output[_out++] = output[from++]; | ||||
|                 output[_out++] = output[from++]; | ||||
|                 len -= 3; | ||||
|               } while (len > 2); | ||||
|               if (len) { | ||||
|                 output[_out++] = output[from++]; | ||||
|                 if (len > 1) { | ||||
|                   output[_out++] = output[from++]; | ||||
|                 } | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|           else if ((op & 64) === 0) {          /* 2nd level distance code */ | ||||
|             here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; | ||||
|             continue dodist; | ||||
|           } | ||||
|           else { | ||||
|             strm.msg = 'invalid distance code'; | ||||
|             state.mode = BAD; | ||||
|             break top; | ||||
|           } | ||||
|  | ||||
|           break; // need to emulate goto via "continue" | ||||
|         } | ||||
|       } | ||||
|       else if ((op & 64) === 0) {              /* 2nd level length code */ | ||||
|         here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; | ||||
|         continue dolen; | ||||
|       } | ||||
|       else if (op & 32) {                     /* end-of-block */ | ||||
|         //Tracevv((stderr, "inflate:         end of block\n")); | ||||
|         state.mode = TYPE; | ||||
|         break top; | ||||
|       } | ||||
|       else { | ||||
|         strm.msg = 'invalid literal/length code'; | ||||
|         state.mode = BAD; | ||||
|         break top; | ||||
|       } | ||||
|  | ||||
|       break; // need to emulate goto via "continue" | ||||
|     } | ||||
|   } while (_in < last && _out < end); | ||||
|  | ||||
|   /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ | ||||
|   len = bits >> 3; | ||||
|   _in -= len; | ||||
|   bits -= len << 3; | ||||
|   hold &= (1 << bits) - 1; | ||||
|  | ||||
|   /* update state and return */ | ||||
|   strm.next_in = _in; | ||||
|   strm.next_out = _out; | ||||
|   strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last)); | ||||
|   strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end)); | ||||
|   state.hold = hold; | ||||
|   state.bits = bits; | ||||
|   return; | ||||
| }; | ||||
							
								
								
									
										1527
									
								
								vendor/pako/lib/zlib/inflate.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1527
									
								
								vendor/pako/lib/zlib/inflate.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										322
									
								
								vendor/pako/lib/zlib/inftrees.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										322
									
								
								vendor/pako/lib/zlib/inftrees.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,322 @@ | ||||
| import * as utils from "../utils/common.js"; | ||||
|  | ||||
| var MAXBITS = 15; | ||||
| var ENOUGH_LENS = 852; | ||||
| var ENOUGH_DISTS = 592; | ||||
| //var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); | ||||
|  | ||||
| var CODES = 0; | ||||
| var LENS = 1; | ||||
| var DISTS = 2; | ||||
|  | ||||
| var lbase = [ /* Length codes 257..285 base */ | ||||
|   3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, | ||||
|   35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 | ||||
| ]; | ||||
|  | ||||
| var lext = [ /* Length codes 257..285 extra */ | ||||
|   16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, | ||||
|   19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 | ||||
| ]; | ||||
|  | ||||
| var dbase = [ /* Distance codes 0..29 base */ | ||||
|   1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, | ||||
|   257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, | ||||
|   8193, 12289, 16385, 24577, 0, 0 | ||||
| ]; | ||||
|  | ||||
| var dext = [ /* Distance codes 0..29 extra */ | ||||
|   16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, | ||||
|   23, 23, 24, 24, 25, 25, 26, 26, 27, 27, | ||||
|   28, 28, 29, 29, 64, 64 | ||||
| ]; | ||||
|  | ||||
| export default function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) | ||||
| { | ||||
|   var bits = opts.bits; | ||||
|       //here = opts.here; /* table entry for duplication */ | ||||
|  | ||||
|   var len = 0;               /* a code's length in bits */ | ||||
|   var sym = 0;               /* index of code symbols */ | ||||
|   var min = 0, max = 0;          /* minimum and maximum code lengths */ | ||||
|   var root = 0;              /* number of index bits for root table */ | ||||
|   var curr = 0;              /* number of index bits for current table */ | ||||
|   var drop = 0;              /* code bits to drop for sub-table */ | ||||
|   var left = 0;                   /* number of prefix codes available */ | ||||
|   var used = 0;              /* code entries in table used */ | ||||
|   var huff = 0;              /* Huffman code */ | ||||
|   var incr;              /* for incrementing code, index */ | ||||
|   var fill;              /* index for replicating entries */ | ||||
|   var low;               /* low bits for current root entry */ | ||||
|   var mask;              /* mask for low root bits */ | ||||
|   var next;             /* next available space in table */ | ||||
|   var base = null;     /* base value table to use */ | ||||
|   var base_index = 0; | ||||
| //  var shoextra;    /* extra bits table to use */ | ||||
|   var end;                    /* use base and extra for symbol > end */ | ||||
|   var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */ | ||||
|   var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */ | ||||
|   var extra = null; | ||||
|   var extra_index = 0; | ||||
|  | ||||
|   var here_bits, here_op, here_val; | ||||
|  | ||||
|   /* | ||||
|    Process a set of code lengths to create a canonical Huffman code.  The | ||||
|    code lengths are lens[0..codes-1].  Each length corresponds to the | ||||
|    symbols 0..codes-1.  The Huffman code is generated by first sorting the | ||||
|    symbols by length from short to long, and retaining the symbol order | ||||
|    for codes with equal lengths.  Then the code starts with all zero bits | ||||
|    for the first code of the shortest length, and the codes are integer | ||||
|    increments for the same length, and zeros are appended as the length | ||||
|    increases.  For the deflate format, these bits are stored backwards | ||||
|    from their more natural integer increment ordering, and so when the | ||||
|    decoding tables are built in the large loop below, the integer codes | ||||
|    are incremented backwards. | ||||
|  | ||||
|    This routine assumes, but does not check, that all of the entries in | ||||
|    lens[] are in the range 0..MAXBITS.  The caller must assure this. | ||||
|    1..MAXBITS is interpreted as that code length.  zero means that that | ||||
|    symbol does not occur in this code. | ||||
|  | ||||
|    The codes are sorted by computing a count of codes for each length, | ||||
|    creating from that a table of starting indices for each length in the | ||||
|    sorted table, and then entering the symbols in order in the sorted | ||||
|    table.  The sorted table is work[], with that space being provided by | ||||
|    the caller. | ||||
|  | ||||
|    The length counts are used for other purposes as well, i.e. finding | ||||
|    the minimum and maximum length codes, determining if there are any | ||||
|    codes at all, checking for a valid set of lengths, and looking ahead | ||||
|    at length counts to determine sub-table sizes when building the | ||||
|    decoding tables. | ||||
|    */ | ||||
|  | ||||
|   /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ | ||||
|   for (len = 0; len <= MAXBITS; len++) { | ||||
|     count[len] = 0; | ||||
|   } | ||||
|   for (sym = 0; sym < codes; sym++) { | ||||
|     count[lens[lens_index + sym]]++; | ||||
|   } | ||||
|  | ||||
|   /* bound code lengths, force root to be within code lengths */ | ||||
|   root = bits; | ||||
|   for (max = MAXBITS; max >= 1; max--) { | ||||
|     if (count[max] !== 0) { break; } | ||||
|   } | ||||
|   if (root > max) { | ||||
|     root = max; | ||||
|   } | ||||
|   if (max === 0) {                     /* no symbols to code at all */ | ||||
|     //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */ | ||||
|     //table.bits[opts.table_index] = 1;   //here.bits = (var char)1; | ||||
|     //table.val[opts.table_index++] = 0;   //here.val = (var short)0; | ||||
|     table[table_index++] = (1 << 24) | (64 << 16) | 0; | ||||
|  | ||||
|  | ||||
|     //table.op[opts.table_index] = 64; | ||||
|     //table.bits[opts.table_index] = 1; | ||||
|     //table.val[opts.table_index++] = 0; | ||||
|     table[table_index++] = (1 << 24) | (64 << 16) | 0; | ||||
|  | ||||
|     opts.bits = 1; | ||||
|     return 0;     /* no symbols, but wait for decoding to report error */ | ||||
|   } | ||||
|   for (min = 1; min < max; min++) { | ||||
|     if (count[min] !== 0) { break; } | ||||
|   } | ||||
|   if (root < min) { | ||||
|     root = min; | ||||
|   } | ||||
|  | ||||
|   /* check for an over-subscribed or incomplete set of lengths */ | ||||
|   left = 1; | ||||
|   for (len = 1; len <= MAXBITS; len++) { | ||||
|     left <<= 1; | ||||
|     left -= count[len]; | ||||
|     if (left < 0) { | ||||
|       return -1; | ||||
|     }        /* over-subscribed */ | ||||
|   } | ||||
|   if (left > 0 && (type === CODES || max !== 1)) { | ||||
|     return -1;                      /* incomplete set */ | ||||
|   } | ||||
|  | ||||
|   /* generate offsets into symbol table for each length for sorting */ | ||||
|   offs[1] = 0; | ||||
|   for (len = 1; len < MAXBITS; len++) { | ||||
|     offs[len + 1] = offs[len] + count[len]; | ||||
|   } | ||||
|  | ||||
|   /* sort symbols by length, by symbol order within each length */ | ||||
|   for (sym = 0; sym < codes; sym++) { | ||||
|     if (lens[lens_index + sym] !== 0) { | ||||
|       work[offs[lens[lens_index + sym]]++] = sym; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /* | ||||
|    Create and fill in decoding tables.  In this loop, the table being | ||||
|    filled is at next and has curr index bits.  The code being used is huff | ||||
|    with length len.  That code is converted to an index by dropping drop | ||||
|    bits off of the bottom.  For codes where len is less than drop + curr, | ||||
|    those top drop + curr - len bits are incremented through all values to | ||||
|    fill the table with replicated entries. | ||||
|  | ||||
|    root is the number of index bits for the root table.  When len exceeds | ||||
|    root, sub-tables are created pointed to by the root entry with an index | ||||
|    of the low root bits of huff.  This is saved in low to check for when a | ||||
|    new sub-table should be started.  drop is zero when the root table is | ||||
|    being filled, and drop is root when sub-tables are being filled. | ||||
|  | ||||
|    When a new sub-table is needed, it is necessary to look ahead in the | ||||
|    code lengths to determine what size sub-table is needed.  The length | ||||
|    counts are used for this, and so count[] is decremented as codes are | ||||
|    entered in the tables. | ||||
|  | ||||
|    used keeps track of how many table entries have been allocated from the | ||||
|    provided *table space.  It is checked for LENS and DIST tables against | ||||
|    the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in | ||||
|    the initial root table size constants.  See the comments in inftrees.h | ||||
|    for more information. | ||||
|  | ||||
|    sym increments through all symbols, and the loop terminates when | ||||
|    all codes of length max, i.e. all codes, have been processed.  This | ||||
|    routine permits incomplete codes, so another loop after this one fills | ||||
|    in the rest of the decoding tables with invalid code markers. | ||||
|    */ | ||||
|  | ||||
|   /* set up for code type */ | ||||
|   // poor man optimization - use if-else instead of switch, | ||||
|   // to avoid deopts in old v8 | ||||
|   if (type === CODES) { | ||||
|     base = extra = work;    /* dummy value--not used */ | ||||
|     end = 19; | ||||
|  | ||||
|   } else if (type === LENS) { | ||||
|     base = lbase; | ||||
|     base_index -= 257; | ||||
|     extra = lext; | ||||
|     extra_index -= 257; | ||||
|     end = 256; | ||||
|  | ||||
|   } else {                    /* DISTS */ | ||||
|     base = dbase; | ||||
|     extra = dext; | ||||
|     end = -1; | ||||
|   } | ||||
|  | ||||
|   /* initialize opts for loop */ | ||||
|   huff = 0;                   /* starting code */ | ||||
|   sym = 0;                    /* starting code symbol */ | ||||
|   len = min;                  /* starting code length */ | ||||
|   next = table_index;              /* current table to fill in */ | ||||
|   curr = root;                /* current table index bits */ | ||||
|   drop = 0;                   /* current bits to drop from code for index */ | ||||
|   low = -1;                   /* trigger new sub-table when len > root */ | ||||
|   used = 1 << root;          /* use root table entries */ | ||||
|   mask = used - 1;            /* mask for comparing low */ | ||||
|  | ||||
|   /* check available table space */ | ||||
|   if ((type === LENS && used > ENOUGH_LENS) || | ||||
|     (type === DISTS && used > ENOUGH_DISTS)) { | ||||
|     return 1; | ||||
|   } | ||||
|  | ||||
|   /* process all codes and make table entries */ | ||||
|   for (;;) { | ||||
|     /* create table entry */ | ||||
|     here_bits = len - drop; | ||||
|     if (work[sym] < end) { | ||||
|       here_op = 0; | ||||
|       here_val = work[sym]; | ||||
|     } | ||||
|     else if (work[sym] > end) { | ||||
|       here_op = extra[extra_index + work[sym]]; | ||||
|       here_val = base[base_index + work[sym]]; | ||||
|     } | ||||
|     else { | ||||
|       here_op = 32 + 64;         /* end of block */ | ||||
|       here_val = 0; | ||||
|     } | ||||
|  | ||||
|     /* replicate for those indices with low len bits equal to huff */ | ||||
|     incr = 1 << (len - drop); | ||||
|     fill = 1 << curr; | ||||
|     min = fill;                 /* save offset to next table */ | ||||
|     do { | ||||
|       fill -= incr; | ||||
|       table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0; | ||||
|     } while (fill !== 0); | ||||
|  | ||||
|     /* backwards increment the len-bit code huff */ | ||||
|     incr = 1 << (len - 1); | ||||
|     while (huff & incr) { | ||||
|       incr >>= 1; | ||||
|     } | ||||
|     if (incr !== 0) { | ||||
|       huff &= incr - 1; | ||||
|       huff += incr; | ||||
|     } else { | ||||
|       huff = 0; | ||||
|     } | ||||
|  | ||||
|     /* go to next symbol, update count, len */ | ||||
|     sym++; | ||||
|     if (--count[len] === 0) { | ||||
|       if (len === max) { break; } | ||||
|       len = lens[lens_index + work[sym]]; | ||||
|     } | ||||
|  | ||||
|     /* create new sub-table if needed */ | ||||
|     if (len > root && (huff & mask) !== low) { | ||||
|       /* if first time, transition to sub-tables */ | ||||
|       if (drop === 0) { | ||||
|         drop = root; | ||||
|       } | ||||
|  | ||||
|       /* increment past last table */ | ||||
|       next += min;            /* here min is 1 << curr */ | ||||
|  | ||||
|       /* determine length of next table */ | ||||
|       curr = len - drop; | ||||
|       left = 1 << curr; | ||||
|       while (curr + drop < max) { | ||||
|         left -= count[curr + drop]; | ||||
|         if (left <= 0) { break; } | ||||
|         curr++; | ||||
|         left <<= 1; | ||||
|       } | ||||
|  | ||||
|       /* check for enough space */ | ||||
|       used += 1 << curr; | ||||
|       if ((type === LENS && used > ENOUGH_LENS) || | ||||
|         (type === DISTS && used > ENOUGH_DISTS)) { | ||||
|         return 1; | ||||
|       } | ||||
|  | ||||
|       /* point entry in root table to sub-table */ | ||||
|       low = huff & mask; | ||||
|       /*table.op[low] = curr; | ||||
|       table.bits[low] = root; | ||||
|       table.val[low] = next - opts.table_index;*/ | ||||
|       table[low] = (root << 24) | (curr << 16) | (next - table_index) |0; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /* fill in remaining table entry if code is incomplete (guaranteed to have | ||||
|    at most one remaining entry, since if the code is incomplete, the | ||||
|    maximum code length that was allowed to get this far is one bit) */ | ||||
|   if (huff !== 0) { | ||||
|     //table.op[next + huff] = 64;            /* invalid code marker */ | ||||
|     //table.bits[next + huff] = len - drop; | ||||
|     //table.val[next + huff] = 0; | ||||
|     table[next + huff] = ((len - drop) << 24) | (64 << 16) |0; | ||||
|   } | ||||
|  | ||||
|   /* set return parameters */ | ||||
|   //opts.table_index += used; | ||||
|   opts.bits = root; | ||||
|   return 0; | ||||
| }; | ||||
							
								
								
									
										11
									
								
								vendor/pako/lib/zlib/messages.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/pako/lib/zlib/messages.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| export default { | ||||
|   2:      'need dictionary',     /* Z_NEED_DICT       2  */ | ||||
|   1:      'stream end',          /* Z_STREAM_END      1  */ | ||||
|   0:      '',                    /* Z_OK              0  */ | ||||
|   '-1':   'file error',          /* Z_ERRNO         (-1) */ | ||||
|   '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */ | ||||
|   '-3':   'data error',          /* Z_DATA_ERROR    (-3) */ | ||||
|   '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */ | ||||
|   '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */ | ||||
|   '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */ | ||||
| }; | ||||
							
								
								
									
										1195
									
								
								vendor/pako/lib/zlib/trees.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1195
									
								
								vendor/pako/lib/zlib/trees.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										24
									
								
								vendor/pako/lib/zlib/zstream.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								vendor/pako/lib/zlib/zstream.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| export default function ZStream() { | ||||
|   /* next input byte */ | ||||
|   this.input = null; // JS specific, because we have no pointers | ||||
|   this.next_in = 0; | ||||
|   /* number of bytes available at input */ | ||||
|   this.avail_in = 0; | ||||
|   /* total number of input bytes read so far */ | ||||
|   this.total_in = 0; | ||||
|   /* next output byte should be put there */ | ||||
|   this.output = null; // JS specific, because we have no pointers | ||||
|   this.next_out = 0; | ||||
|   /* remaining free space at output */ | ||||
|   this.avail_out = 0; | ||||
|   /* total number of bytes output so far */ | ||||
|   this.total_out = 0; | ||||
|   /* last error message, NULL if no error */ | ||||
|   this.msg = ''/*Z_NULL*/; | ||||
|   /* not visible by applications */ | ||||
|   this.state = null; | ||||
|   /* best guess about the data type: binary or text */ | ||||
|   this.data_type = 2/*Z_UNKNOWN*/; | ||||
|   /* adler32 value of the uncompressed data */ | ||||
|   this.adler = 0; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user