/*!

JSZip - A Javascript class for generating and reading zip files
<http://stuartk.com/jszip>

(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.

JSZip uses the library zlib.js released under the following license :
zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License
*/
!function(a) {
"object" == typeof exports ? module.exports = a() : "function" == typeof define && define.amd ? define(a) : "undefined" != typeof window ? window.JSZip = a() : "undefined" != typeof global ? global.JSZip = a() : "undefined" != typeof self && (self.JSZip = a())
}(function() {
return function a(b, c, d) {
function e(g, h) {
if (!c[g]) {
if (!b[g]) {
var i = "function" == typeof require && require;
if (!h && i)
return i(g, !0);
if (f)
return f(g, !0);
throw new Error("Cannot find module '" + g + "'")
}
var j = c[g] = {
exports: {}
};
b[g][0].call(j.exports, function(a) {
var c = b[g][1][a];
return e(c ? c : a)
}, j, j.exports, a, b, c, d)
}
return c[g].exports
}
for (var f = "function" == typeof require && require, g = 0; g < d.length; g++)
e(d[g]);
return e
}({
1: [function(a, b, c) {
"use strict";
var d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
c.encode = function(a) {
for (var b, c, e, f, g, h, i, j = "", k = 0; k < a.length; )
b = a.charCodeAt(k++),
c = a.charCodeAt(k++),
e = a.charCodeAt(k++),
f = b >> 2,
g = (3 & b) << 4 | c >> 4,
h = (15 & c) << 2 | e >> 6,
i = 63 & e,
isNaN(c) ? h = i = 64 : isNaN(e) && (i = 64),
j = j + d.charAt(f) + d.charAt(g) + d.charAt(h) + d.charAt(i);
return j
}
,
c.decode = function(a) {
var b, c, e, f, g, h, i, j = "", k = 0;
for (a = a.replace(/[^A-Za-z0-9\+\/\=]/g, ""); k < a.length; )
f = d.indexOf(a.charAt(k++)),
g = d.indexOf(a.charAt(k++)),
h = d.indexOf(a.charAt(k++)),
i = d.indexOf(a.charAt(k++)),
b = f << 2 | g >> 4,
c = (15 & g) << 4 | h >> 2,
e = (3 & h) << 6 | i,
j += String.fromCharCode(b),
64 != h && (j += String.fromCharCode(c)),
64 != i && (j += String.fromCharCode(e));
return j
}
}
, {}],
2: [function(a, b) {
"use strict";
function c() {
this.compressedSize = 0,
this.uncompressedSize = 0,
this.crc32 = 0,
this.compressionMethod = null,
this.compressedContent = null
}
c.prototype = {
getContent: function() {
return null
},
getCompressedContent: function() {
return null
}
},
b.exports = c
}
, {}],
3: [function(a, b, c) {
"use strict";
c.STORE = {
magic: "\x00\x00",
compress: function(a) {
return a
},
uncompress: function(a) {
return a
},
compressInputType: null,
uncompressInputType: null
},
c.DEFLATE = a("./flate")
}
, {
"./flate": 6
}],
4: [function(a, b) {
"use strict";
function c() {
this.data = null,
this.length = 0,
this.index = 0
}
var d = a("./utils");
c.prototype = {
checkOffset: function(a) {
this.checkIndex(this.index + a)
},
checkIndex: function(a) {
if (this.length < a || 0 > a)
throw new Error("End of data reached (data length = " + this.length + ", asked index = " + a + "). Corrupted zip ?")
},
setIndex: function(a) {
this.checkIndex(a),
this.index = a
},
skip: function(a) {
this.setIndex(this.index + a)
},
byteAt: function() {},
readInt: function(a) {
var b, c = 0;
for (this.checkOffset(a),
b = this.index + a - 1; b >= this.index; b--)
c = (c << 8) + this.byteAt(b);
return this.index += a,
c
},
readString: function(a) {
return d.transformTo("string", this.readData(a))
},
readData: function() {},
lastIndexOfSignature: function() {},
readDate: function() {
var a = this.readInt(4);
return new Date((a >> 25 & 127) + 1980,(a >> 21 & 15) - 1,a >> 16 & 31,a >> 11 & 31,a >> 5 & 63,(31 & a) << 1)
}
},
b.exports = c
}
, {
"./utils": 14
}],
5: [function(a, b, c) {
"use strict";
c.base64 = !1,
c.binary = !1,
c.dir = !1,
c.date = null,
c.compression = null
}
, {}],
6: [function(a, b, c) {
"use strict";
var d = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array
, e = a("zlibjs/bin/rawdeflate.min").Zlib
, f = a("zlibjs/bin/rawinflate.min").Zlib;
c.uncompressInputType = d ? "uint8array" : "array",
c.compressInputType = d ? "uint8array" : "array",
c.magic = "\b\x00",
c.compress = function(a) {
var b = new e.RawDeflate(a);
return b.compress()
}
,
c.uncompress = function(a) {
var b = new f.RawInflate(a);
return b.decompress()
}
}
, {
"zlibjs/bin/rawdeflate.min": 19,
"zlibjs/bin/rawinflate.min": 20
}],
7: [function(a, b) {
"use strict";
function c(a, b) {
return this instanceof c ? (this.files = {},
this.root = "",
a && this.load(a, b),
void (this.clone = function() {
var a = new c;
for (var b in this)
"function" != typeof this[b] && (a[b] = this[b]);
return a
}
)) : new c(a,b)
}
c.prototype = a("./object"),
c.prototype.load = a("./load"),
c.support = a("./support"),
c.defaults = a("./defaults"),
c.utils = a("./utils"),
c.base64 = a("./base64"),
c.compressions = a("./compressions"),
b.exports = c
}
, {
"./base64": 1,
"./compressions": 3,
"./defaults": 5,
"./load": 8,
"./object": 9,
"./support": 12,
"./utils": 14
}],
8: [function(a, b) {
"use strict";
var c = a("./base64")
, d = a("./zipEntries");
b.exports = function(a, b) {
var e, f, g, h;
for (b = b || {},
b.base64 && (a = c.decode(a)),
f = new d(a,b),
e = f.files,
g = 0; g < e.length; g++)
h = e[g],
this.file(h.fileName, h.decompressed, {
binary: !0,
optimizedBinaryString: !0,
date: h.date,
dir: h.dir
});
return this
}
}
, {
"./base64": 1,
"./zipEntries": 15
}],
9: [function(a, b) {
"use strict";
var c, d, e = a("./support"), f = a("./utils"), g = a("./signature"), h = a("./defaults"), i = a("./base64"), j = a("./compressions"), k = a("./compressedObject"), l = a("./nodeBuffer");
e.uint8array && "function" == typeof TextEncoder && "function" == typeof TextDecoder && (c = new TextEncoder("utf-8"),
d = new TextDecoder("utf-8"));
var m = function(a) {
if (a._data instanceof k && (a._data = a._data.getContent(),
a.options.binary = !0,
a.options.base64 = !1,
"uint8array" === f.getTypeOf(a._data))) {
var b = a._data;
a._data = new Uint8Array(b.length),
0 !== b.length && a._data.set(b, 0)
}
return a._data
}
, n = function(a) {
var b = m(a)
, d = f.getTypeOf(b);
if ("string" === d) {
if (!a.options.binary) {
if (c)
return c.encode(b);
if (e.nodebuffer)
return l(b, "utf-8")
}
return a.asBinary()
}
return b
}
, o = function(a) {
var b = m(this);
return null === b || "undefined" == typeof b ? "" : (this.options.base64 && (b = i.decode(b)),
b = a && this.options.binary ? A.utf8decode(b) : f.transformTo("string", b),
a || this.options.binary || (b = A.utf8encode(b)),
b)
}
, p = function(a, b, c) {
this.name = a,
this._data = b,
this.options = c
};
p.prototype = {
asText: function() {
return o.call(this, !0)
},
asBinary: function() {
return o.call(this, !1)
},
asNodeBuffer: function() {
var a = n(this);
return f.transformTo("nodebuffer", a)
},
asUint8Array: function() {
var a = n(this);
return f.transformTo("uint8array", a)
},
asArrayBuffer: function() {
return this.asUint8Array().buffer
}
};
var q = function(a, b) {
var c, d = "";
for (c = 0; b > c; c++)
d += String.fromCharCode(255 & a),
a >>>= 8;
return d
}
, r = function() {
var a, b, c = {};
for (a = 0; a < arguments.length; a++)
for (b in arguments[a])
arguments[a].hasOwnProperty(b) && "undefined" == typeof c[b] && (c[b] = arguments[a][b]);
return c
}
, s = function(a) {
return a = a || {},
a.base64 !== !0 || null !== a.binary && void 0 !== a.binary || (a.binary = !0),
a = r(a, h),
a.date = a.date || new Date,
null !== a.compression && (a.compression = a.compression.toUpperCase()),
a
}
, t = function(a, b, c) {
var d = u(a)
, e = f.getTypeOf(b);
if (d && v.call(this, d),
c = s(c),
c.dir || null === b || "undefined" == typeof b)
c.base64 = !1,
c.binary = !1,
b = null;
else if ("string" === e)
c.binary && !c.base64 && c.optimizedBinaryString !== !0 && (b = f.string2binary(b));
else {
if (c.base64 = !1,
c.binary = !0,
!(e || b instanceof k))
throw new Error("The data of '" + a + "' is in an unsupported format !");
"arraybuffer" === e && (b = f.transformTo("uint8array", b))
}
var g = new p(a,b,c);
return this.files[a] = g,
g
}
, u = function(a) {
"/" == a.slice(-1) && (a = a.substring(0, a.length - 1));
var b = a.lastIndexOf("/");
return b > 0 ? a.substring(0, b) : ""
}
, v = function(a) {
return "/" != a.slice(-1) && (a += "/"),
this.files[a] || t.call(this, a, null, {
dir: !0
}),
this.files[a]
}
, w = function(a, b) {
var c, d = new k;
return a._data instanceof k ? (d.uncompressedSize = a._data.uncompressedSize,
d.crc32 = a._data.crc32,
0 === d.uncompressedSize || a.options.dir ? (b = j.STORE,
d.compressedContent = "",
d.crc32 = 0) : a._data.compressionMethod === b.magic ? d.compressedContent = a._data.getCompressedContent() : (c = a._data.getContent(),
d.compressedContent = b.compress(f.transformTo(b.compressInputType, c)))) : (c = n(a),
(!c || 0 === c.length || a.options.dir) && (b = j.STORE,
c = ""),
d.uncompressedSize = c.length,
d.crc32 = this.crc32(c),
d.compressedContent = b.compress(f.transformTo(b.compressInputType, c))),
d.compressedSize = d.compressedContent.length,
d.compressionMethod = b.magic,
d
}
, x = function(a, b, c, d) {
var e, f, h = (c.compressedContent,
this.utf8encode(b.name)), i = h !== b.name, j = b.options, k = "", l = "";
e = j.date.getHours(),
e <<= 6,
e |= j.date.getMinutes(),
e <<= 5,
e |= j.date.getSeconds() / 2,
f = j.date.getFullYear() - 1980,
f <<= 4,
f |= j.date.getMonth() + 1,
f <<= 5,
f |= j.date.getDate(),
i && (l = q(1, 1) + q(this.crc32(h), 4) + h,
k += "up" + q(l.length, 2) + l);
var m = "";
m += "\n\x00",
m += i ? "\x00\b" : "\x00\x00",
m += c.compressionMethod,
m += q(e, 2),
m += q(f, 2),
m += q(c.crc32, 4),
m += q(c.compressedSize, 4),
m += q(c.uncompressedSize, 4),
m += q(h.length, 2),
m += q(k.length, 2);
var n = g.LOCAL_FILE_HEADER + m + h + k
, o = g.CENTRAL_FILE_HEADER + "\x00" + m + "\x00\x00\x00\x00\x00\x00" + (b.options.dir === !0 ? "\x00\x00\x00" : "\x00\x00\x00\x00") + q(d, 4) + h + k;
return {
fileRecord: n,
dirRecord: o,
compressedObject: c
}
}
, y = function() {
this.data = []
};
y.prototype = {
append: function(a) {
a = f.transformTo("string", a),
this.data.push(a)
},
finalize: function() {
return this.data.join("")
}
};
var z = function(a) {
this.data = new Uint8Array(a),
this.index = 0
};
z.prototype = {
append: function(a) {
0 !== a.length && (a = f.transformTo("uint8array", a),
this.data.set(a, this.index),
this.index += a.length)
},
finalize: function() {
return this.data
}
};
var A = {
load: function() {
throw new Error("Load method is not defined. Is the file jszip-load.js included ?")
},
filter: function(a) {
var b, c, d, e, f = [];
for (b in this.files)
this.files.hasOwnProperty(b) && (d = this.files[b],
e = new p(d.name,d._data,r(d.options)),
c = b.slice(this.root.length, b.length),
b.slice(0, this.root.length) === this.root && a(c, e) && f.push(e));
return f
},
file: function(a, b, c) {
if (1 === arguments.length) {
if (f.isRegExp(a)) {
var d = a;
return this.filter(function(a, b) {
return !b.options.dir && d.test(a)
})
}
return this.filter(function(b, c) {
return !c.options.dir && b === a
})[0] || null
}
return a = this.root + a,
t.call(this, a, b, c),
this
},
folder: function(a) {
if (!a)
return this;
if (f.isRegExp(a))
return this.filter(function(b, c) {
return c.options.dir && a.test(b)
});
var b = this.root + a
, c = v.call(this, b)
, d = this.clone();
return d.root = c.name,
d
},
remove: function(a) {
a = this.root + a;
var b = this.files[a];
if (b || ("/" != a.slice(-1) && (a += "/"),
b = this.files[a]),
b)
if (b.options.dir)
for (var c = this.filter(function(b, c) {
return c.name.slice(0, a.length) === a
}), d = 0; d < c.length; d++)
delete this.files[c[d].name];
else
delete this.files[a];
return this
},
generate: function(a) {
a = r(a || {}, {
base64: !0,
compression: "STORE",
type: "base64"
}),
f.checkSupport(a.type);
var b, c, d = [], e = 0, h = 0;
for (var k in this.files)
if (this.files.hasOwnProperty(k)) {
var l = this.files[k]
, m = l.options.compression || a.compression.toUpperCase()
, n = j[m];
if (!n)
throw new Error(m + " is not a valid compression method !");
var o = w.call(this, l, n)
, p = x.call(this, k, l, o, e);
e += p.fileRecord.length + o.compressedSize,
h += p.dirRecord.length,
d.push(p)
}
var s = "";
s = g.CENTRAL_DIRECTORY_END + "\x00\x00\x00\x00" + q(d.length, 2) + q(d.length, 2) + q(h, 4) + q(e, 4) + "\x00\x00";
var t = a.type.toLowerCase();
for (b = "uint8array" === t || "arraybuffer" === t || "blob" === t || "nodebuffer" === t ? new z(e + h + s.length) : new y(e + h + s.length),
c = 0; c < d.length; c++)
b.append(d[c].fileRecord),
b.append(d[c].compressedObject.compressedContent);
for (c = 0; c < d.length; c++)
b.append(d[c].dirRecord);
b.append(s);
var u = b.finalize();
switch (a.type.toLowerCase()) {
case "uint8array":
case "arraybuffer":
case "nodebuffer":
return f.transformTo(a.type.toLowerCase(), u);
case "blob":
return f.arrayBuffer2Blob(f.transformTo("arraybuffer", u));
case "base64":
return a.base64 ? i.encode(u) : u;
default:
return u
}
},
crc32: function(a, b) {
if ("undefined" == typeof a || !a.length)
return 0;
var c = "string" !== f.getTypeOf(a)
, d = [0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918e3, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117];
"undefined" == typeof b && (b = 0);
var e = 0
, g = 0
, h = 0;
b = -1 ^ b;
for (var i = 0, j = a.length; j > i; i++)
h = c ? a[i] : a.charCodeAt(i),
g = 255 & (b ^ h),
e = d[g],
b = b >>> 8 ^ e;
return -1 ^ b
},
utf8encode: function(a) {
if (c) {
var b = c.encode(a);
return f.transformTo("string", b)
}
if (e.nodebuffer)
return f.transformTo("string", l(a, "utf-8"));
for (var d = [], g = 0, h = 0; h < a.length; h++) {
var i = a.charCodeAt(h);
128 > i ? d[g++] = String.fromCharCode(i) : i > 127 && 2048 > i ? (d[g++] = String.fromCharCode(i >> 6 | 192),
d[g++] = String.fromCharCode(63 & i | 128)) : (d[g++] = String.fromCharCode(i >> 12 | 224),
d[g++] = String.fromCharCode(i >> 6 & 63 | 128),
d[g++] = String.fromCharCode(63 & i | 128))
}
return d.join("")
},
utf8decode: function(a) {
var b = []
, c = 0
, g = f.getTypeOf(a)
, h = "string" !== g
, i = 0
, j = 0
, k = 0
, l = 0;
if (d)
return d.decode(f.transformTo("uint8array", a));
if (e.nodebuffer)
return f.transformTo("nodebuffer", a).toString("utf-8");
for (; i < a.length; )
j = h ? a[i] : a.charCodeAt(i),
128 > j ? (b[c++] = String.fromCharCode(j),
i++) : j > 191 && 224 > j ? (k = h ? a[i + 1] : a.charCodeAt(i + 1),
b[c++] = String.fromCharCode((31 & j) << 6 | 63 & k),
i += 2) : (k = h ? a[i + 1] : a.charCodeAt(i + 1),
l = h ? a[i + 2] : a.charCodeAt(i + 2),
b[c++] = String.fromCharCode((15 & j) << 12 | (63 & k) << 6 | 63 & l),
i += 3);
return b.join("")
}
};
b.exports = A
}
, {
"./base64": 1,
"./compressedObject": 2,
"./compressions": 3,
"./defaults": 5,
"./nodeBuffer": 17,
"./signature": 10,
"./support": 12,
"./utils": 14
}],
10: [function(a, b, c) {
"use strict";
c.LOCAL_FILE_HEADER = "PK",
c.CENTRAL_FILE_HEADER = "PK",
c.CENTRAL_DIRECTORY_END = "PK",
c.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK",
c.ZIP64_CENTRAL_DIRECTORY_END = "PK",
c.DATA_DESCRIPTOR = "PK\b"
}
, {}],
11: [function(a, b) {
"use strict";
function c(a, b) {
this.data = a,
b || (this.data = e.string2binary(this.data)),
this.length = this.data.length,
this.index = 0
}
var d = a("./dataReader")
, e = a("./utils");
c.prototype = new d,
c.prototype.byteAt = function(a) {
return this.data.charCodeAt(a)
}
,
c.prototype.lastIndexOfSignature = function(a) {
return this.data.lastIndexOf(a)
}
,
c.prototype.readData = function(a) {
this.checkOffset(a);
var b = this.data.slice(this.index, this.index + a);
return this.index += a,
b
}
,
b.exports = c
}
, {
"./dataReader": 4,
"./utils": 14
}],
12: [function(a, b, c) {
var d = a("__browserify_process");
if (c.base64 = !0,
c.array = !0,
c.string = !0,
c.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array,
c.nodebuffer = !d.browser,
c.uint8array = "undefined" != typeof Uint8Array,
"undefined" == typeof ArrayBuffer)
c.blob = !1;
else {
var e = new ArrayBuffer(0);
try {
c.blob = 0 === new Blob([e],{
type: "application/zip"
}).size
} catch (f) {
try {
var g = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder
, h = new g;
h.append(e),
c.blob = 0 === h.getBlob("application/zip").size
} catch (f) {
c.blob = !1
}
}
}
}
, {
__browserify_process: 18
}],
13: [function(a, b) {
"use strict";
function c(a) {
a && (this.data = a,
this.length = this.data.length,
this.index = 0)
}
var d = a("./dataReader");
c.prototype = new d,
c.prototype.byteAt = function(a) {
return this.data[a]
}
,
c.prototype.lastIndexOfSignature = function(a) {
for (var b = a.charCodeAt(0), c = a.charCodeAt(1), d = a.charCodeAt(2), e = a.charCodeAt(3), f = this.length - 4; f >= 0; --f)
if (this.data[f] === b && this.data[f + 1] === c && this.data[f + 2] === d && this.data[f + 3] === e)
return f;
return -1
}
,
c.prototype.readData = function(a) {
this.checkOffset(a);
var b = this.data.subarray(this.index, this.index + a);
return this.index += a,
b
}
,
b.exports = c
}
, {
"./dataReader": 4
}],
14: [function(a, b, c) {
"use strict";
function d(a) {
return a
}
function e(a, b) {
for (var c = 0; c < a.length; ++c)
b[c] = 255 & a.charCodeAt(c);
return b
}
function f(a) {
var b = 65536
, d = []
, e = a.length
, f = c.getTypeOf(a)
, g = 0
, h = !0;
try {
switch (f) {
case "uint8array":
String.fromCharCode.apply(null, new Uint8Array(0));
break;
case "nodebuffer":
String.fromCharCode.apply(null, j(0))
}
} catch (i) {
h = !1
}
if (!h) {
for (var k = "", l = 0; l < a.length; l++)
k += String.fromCharCode(a[l]);
return k
}
for (; e > g && b > 1; )
try {
d.push("array" === f || "nodebuffer" === f ? String.fromCharCode.apply(null, a.slice(g, Math.min(g + b, e))) : String.fromCharCode.apply(null, a.subarray(g, Math.min(g + b, e)))),
g += b
} catch (i) {
b = Math.floor(b / 2)
}
return d.join("")
}
function g(a, b) {
for (var c = 0; c < a.length; c++)
b[c] = a[c];
return b
}
var h = a("./support")
, i = a("./compressions")
, j = a("./nodeBuffer");
c.string2binary = function(a) {
for (var b = "", c = 0; c < a.length; c++)
b += String.fromCharCode(255 & a.charCodeAt(c));
return b
}
,
c.string2Uint8Array = function(a) {
return c.transformTo("uint8array", a)
}
,
c.uint8Array2String = function(a) {
return c.transformTo("string", a)
}
,
c.string2Blob = function(a) {
var b = c.transformTo("arraybuffer", a);
return c.arrayBuffer2Blob(b)
}
,
c.arrayBuffer2Blob = function(a) {
c.checkSupport("blob");
try {
return new Blob([a],{
type: "application/zip"
})
} catch (b) {
try {
var d = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder
, e = new d;
return e.append(a),
e.getBlob("application/zip")
} catch (b) {
throw new Error("Bug : can't construct the Blob.")
}
}
}
;
var k = {};
k.string = {
string: d,
array: function(a) {
return e(a, new Array(a.length))
},
arraybuffer: function(a) {
return k.string.uint8array(a).buffer
},
uint8array: function(a) {
return e(a, new Uint8Array(a.length))
},
nodebuffer: function(a) {
return e(a, j(a.length))
}
},
k.array = {
string: f,
array: d,
arraybuffer: function(a) {
return new Uint8Array(a).buffer
},
uint8array: function(a) {
return new Uint8Array(a)
},
nodebuffer: function(a) {
return j(a)
}
},
k.arraybuffer = {
string: function(a) {
return f(new Uint8Array(a))
},
array: function(a) {
return g(new Uint8Array(a), new Array(a.byteLength))
},
arraybuffer: d,
uint8array: function(a) {
return new Uint8Array(a)
},
nodebuffer: function(a) {
return j(new Uint8Array(a))
}
},
k.uint8array = {
string: f,
array: function(a) {
return g(a, new Array(a.length))
},
arraybuffer: function(a) {
return a.buffer
},
uint8array: d,
nodebuffer: function(a) {
return j(a)
}
},
k.nodebuffer = {
string: f,
array: function(a) {
return g(a, new Array(a.length))
},
arraybuffer: function(a) {
return k.nodebuffer.uint8array(a).buffer
},
uint8array: function(a) {
return g(a, new Uint8Array(a.length))
},
nodebuffer: d
},
c.transformTo = function(a, b) {
if (b || (b = ""),
!a)
return b;
c.checkSupport(a);
var d = c.getTypeOf(b)
, e = k[d][a](b);
return e
}
,
c.getTypeOf = function(a) {
return "string" == typeof a ? "string" : "[object Array]" === Object.prototype.toString.call(a) ? "array" : h.nodebuffer && j.test(a) ? "nodebuffer" : h.uint8array && a instanceof Uint8Array ? "uint8array" : h.arraybuffer && a instanceof ArrayBuffer ? "arraybuffer" : void 0
}
,
c.checkSupport = function(a) {
var b = h[a.toLowerCase()];
if (!b)
throw new Error(a + " is not supported by this browser")
}
,
c.MAX_VALUE_16BITS = 65535,
c.MAX_VALUE_32BITS = -1,
c.pretty = function(a) {
var b, c, d = "";
for (c = 0; c < (a || "").length; c++)
b = a.charCodeAt(c),
d += "\\x" + (16 > b ? "0" : "") + b.toString(16).toUpperCase();
return d
}
,
c.findCompression = function(a) {
for (var b in i)
if (i.hasOwnProperty(b) && i[b].magic === a)
return i[b];
return null
}
,
c.isRegExp = function(a) {
return "[object RegExp]" === Object.prototype.toString.call(a)
}
}
, {
"./compressions": 3,
"./nodeBuffer": 17,
"./support": 12
}],
15: [function(a, b) {
"use strict";
function c(a, b) {
this.files = [],
this.loadOptions = b,
a && this.load(a)
}
var d = a("./stringReader")
, e = a("./nodeBufferReader")
, f = a("./uint8ArrayReader")
, g = a("./utils")
, h = a("./signature")
, i = a("./zipEntry")
, j = a("./support");
c.prototype = {
checkSignature: function(a) {
var b = this.reader.readString(4);
if (b !== a)
throw new Error("Corrupted zip or bug : unexpected signature (" + g.pretty(b) + ", expected " + g.pretty(a) + ")")
},
readBlockEndOfCentral: function() {
this.diskNumber = this.reader.readInt(2),
this.diskWithCentralDirStart = this.reader.readInt(2),
this.centralDirRecordsOnThisDisk = this.reader.readInt(2),
this.centralDirRecords = this.reader.readInt(2),
this.centralDirSize = this.reader.readInt(4),
this.centralDirOffset = this.reader.readInt(4),
this.zipCommentLength = this.reader.readInt(2),
this.zipComment = this.reader.readString(this.zipCommentLength)
},
readBlockZip64EndOfCentral: function() {
this.zip64EndOfCentralSize = this.reader.readInt(8),
this.versionMadeBy = this.reader.readString(2),
this.versionNeeded = this.reader.readInt(2),
this.diskNumber = this.reader.readInt(4),
this.diskWithCentralDirStart = this.reader.readInt(4),
this.centralDirRecordsOnThisDisk = this.reader.readInt(8),
this.centralDirRecords = this.reader.readInt(8),
this.centralDirSize = this.reader.readInt(8),
this.centralDirOffset = this.reader.readInt(8),
this.zip64ExtensibleData = {};
for (var a, b, c, d = this.zip64EndOfCentralSize - 44, e = 0; d > e; )
a = this.reader.readInt(2),
b = this.reader.readInt(4),
c = this.reader.readString(b),
this.zip64ExtensibleData[a] = {
id: a,
length: b,
value: c
}
},
readBlockZip64EndOfCentralLocator: function() {
if (this.diskWithZip64CentralDirStart = this.reader.readInt(4),
this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8),
this.disksCount = this.reader.readInt(4),
this.disksCount > 1)
throw new Error("Multi-volumes zip are not supported")
},
readLocalFiles: function() {
var a, b;
for (a = 0; a < this.files.length; a++)
b = this.files[a],
this.reader.setIndex(b.localHeaderOffset),
this.checkSignature(h.LOCAL_FILE_HEADER),
b.readLocalPart(this.reader),
b.handleUTF8()
},
readCentralDir: function() {
var a;
for (this.reader.setIndex(this.centralDirOffset); this.reader.readString(4) === h.CENTRAL_FILE_HEADER; )
a = new i({
zip64: this.zip64
},this.loadOptions),
a.readCentralPart(this.reader),
this.files.push(a)
},
readEndOfCentral: function() {
var a = this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);
if (-1 === a)
throw new Error("Corrupted zip : can't find end of central directory");
if (this.reader.setIndex(a),
this.checkSignature(h.CENTRAL_DIRECTORY_END),
this.readBlockEndOfCentral(),
this.diskNumber === g.MAX_VALUE_16BITS || this.diskWithCentralDirStart === g.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === g.MAX_VALUE_16BITS || this.centralDirRecords === g.MAX_VALUE_16BITS || this.centralDirSize === g.MAX_VALUE_32BITS || this.centralDirOffset === g.MAX_VALUE_32BITS) {
if (this.zip64 = !0,
a = this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),
-1 === a)
throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");
this.reader.setIndex(a),
this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),
this.readBlockZip64EndOfCentralLocator(),
this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),
this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),
this.readBlockZip64EndOfCentral()
}
},
prepareReader: function(a) {
var b = g.getTypeOf(a);
this.reader = "string" !== b || j.uint8array ? "nodebuffer" === b ? new e(a) : new f(g.transformTo("uint8array", a)) : new d(a,this.loadOptions.optimizedBinaryString)
},
load: function(a) {
this.prepareReader(a),
this.readEndOfCentral(),
this.readCentralDir(),
this.readLocalFiles()
}
},
b.exports = c
}
, {
"./nodeBufferReader": 17,
"./signature": 10,
"./stringReader": 11,
"./support": 12,
"./uint8ArrayReader": 13,
"./utils": 14,
"./zipEntry": 16
}],
16: [function(a, b) {
"use strict";
function c(a, b) {
this.options = a,
this.loadOptions = b
}
var d = a("./stringReader")
, e = a("./utils")
, f = a("./compressedObject")
, g = a("./object");
c.prototype = {
isEncrypted: function() {
return 1 === (1 & this.bitFlag)
},
useUTF8: function() {
return 2048 === (2048 & this.bitFlag)
},
prepareCompressedContent: function(a, b, c) {
return function() {
var d = a.index;
a.setIndex(b);
var e = a.readData(c);
return a.setIndex(d),
e
}
},
prepareContent: function(a, b, c, d, f) {
return function() {
var a = e.transformTo(d.uncompressInputType, this.getCompressedContent())
, b = d.uncompress(a);
if (b.length !== f)
throw new Error("Bug : uncompressed data size mismatch");
return b
}
},
readLocalPart: function(a) {
var b, c;
if (a.skip(22),
this.fileNameLength = a.readInt(2),
c = a.readInt(2),
this.fileName = a.readString(this.fileNameLength),
a.skip(c),
-1 == this.compressedSize || -1 == this.uncompressedSize)
throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");
if (b = e.findCompression(this.compressionMethod),
null === b)
throw new Error("Corrupted zip : compression " + e.pretty(this.compressionMethod) + " unknown (inner file : " + this.fileName + ")");
if (this.decompressed = new f,
this.decompressed.compressedSize = this.compressedSize,
this.decompressed.uncompressedSize = this.uncompressedSize,
this.decompressed.crc32 = this.crc32,
this.decompressed.compressionMethod = this.compressionMethod,
this.decompressed.getCompressedContent = this.prepareCompressedContent(a, a.index, this.compressedSize, b),
this.decompressed.getContent = this.prepareContent(a, a.index, this.compressedSize, b, this.uncompressedSize),
this.loadOptions.checkCRC32 && (this.decompressed = e.transformTo("string", this.decompressed.getContent()),
g.crc32(this.decompressed) !== this.crc32))
throw new Error("Corrupted zip : CRC32 mismatch")
},
readCentralPart: function(a) {
if (this.versionMadeBy = a.readString(2),
this.versionNeeded = a.readInt(2),
this.bitFlag = a.readInt(2),
this.compressionMethod = a.readString(2),
this.date = a.readDate(),
this.crc32 = a.readInt(4),
this.compressedSize = a.readInt(4),
this.uncompressedSize = a.readInt(4),
this.fileNameLength = a.readInt(2),
this.extraFieldsLength = a.readInt(2),
this.fileCommentLength = a.readInt(2),
this.diskNumberStart = a.readInt(2),
this.internalFileAttributes = a.readInt(2),
this.externalFileAttributes = a.readInt(4),
this.localHeaderOffset = a.readInt(4),
this.isEncrypted())
throw new Error("Encrypted zip are not supported");
this.fileName = a.readString(this.fileNameLength),
this.readExtraFields(a),
this.parseZIP64ExtraField(a),
this.fileComment = a.readString(this.fileCommentLength),
this.dir = 16 & this.externalFileAttributes ? !0 : !1
},
parseZIP64ExtraField: function() {
if (this.extraFields[1]) {
var a = new d(this.extraFields[1].value);
this.uncompressedSize === e.MAX_VALUE_32BITS && (this.uncompressedSize = a.readInt(8)),
this.compressedSize === e.MAX_VALUE_32BITS && (this.compressedSize = a.readInt(8)),
this.localHeaderOffset === e.MAX_VALUE_32BITS && (this.localHeaderOffset = a.readInt(8)),
this.diskNumberStart === e.MAX_VALUE_32BITS && (this.diskNumberStart = a.readInt(4))
}
},
readExtraFields: function(a) {
var b, c, d, e = a.index;
for (this.extraFields = this.extraFields || {}; a.index < e + this.extraFieldsLength; )
b = a.readInt(2),
c = a.readInt(2),
d = a.readString(c),
this.extraFields[b] = {
id: b,
length: c,
value: d
}
},
handleUTF8: function() {
if (this.useUTF8())
this.fileName = g.utf8decode(this.fileName),
this.fileComment = g.utf8decode(this.fileComment);
else {
var a = this.findExtraFieldUnicodePath();
null !== a && (this.fileName = a)
}
},
findExtraFieldUnicodePath: function() {
var a = this.extraFields[28789];
if (a) {
var b = new d(a.value);
return 1 !== b.readInt(1) ? null : g.crc32(this.fileName) !== b.readInt(4) ? null : g.utf8decode(b.readString(a.length - 5))
}
return null
}
},
b.exports = c
}
, {
"./compressedObject": 2,
"./object": 9,
"./stringReader": 11,
"./utils": 14
}],
17: [function() {}
, {}],
18: [function(a, b) {
var c = b.exports = {};
c.nextTick = function() {
var a = "undefined" != typeof window && window.setImmediate
, b = "undefined" != typeof window && window.postMessage && window.addEventListener;
if (a)
return function(a) {
return window.setImmediate(a)
}
;
if (b) {
var c = [];
return window.addEventListener("message", function(a) {
var b = a.source;
if ((b === window || null === b) && "process-tick" === a.data && (a.stopPropagation(),
c.length > 0)) {
var d = c.shift();
d()
}
}, !0),
function(a) {
c.push(a),
window.postMessage("process-tick", "*")
}
}
return function(a) {
setTimeout(a, 0)
}
}(),
c.title = "browser",
c.browser = !0,
c.env = {},
c.argv = [],
c.binding = function() {
throw new Error("process.binding is not supported")
}
,
c.cwd = function() {
return "/"
}
,
c.chdir = function() {
throw new Error("process.chdir is not supported")
}
}
, {}],
19: [function() {
/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */
(function() {
"use strict";
function a(a, b) {
var c = a.split(".")
, d = n;
!(c[0]in d) && d.execScript && d.execScript("var " + c[0]);
for (var e; c.length && (e = c.shift()); )
c.length || b === l ? d = d[e] ? d[e] : d[e] = {} : d[e] = b
}
function b(a, b) {
if (this.index = "number" == typeof b ? b : 0,
this.d = 0,
this.buffer = a instanceof (o ? Uint8Array : Array) ? a : new (o ? Uint8Array : Array)(32768),
2 * this.buffer.length <= this.index)
throw Error("invalid index");
this.buffer.length <= this.index && c(this)
}
function c(a) {
var b, c = a.buffer, d = c.length, e = new (o ? Uint8Array : Array)(d << 1);
if (o)
e.set(c);
else
for (b = 0; d > b; ++b)
e[b] = c[b];
return a.buffer = e
}
function d(a) {
this.buffer = new (o ? Uint16Array : Array)(2 * a),
this.length = 0
}
function e(a, b) {
this.e = w,
this.f = 0,
this.input = o && a instanceof Array ? new Uint8Array(a) : a,
this.c = 0,
b && (b.lazy && (this.f = b.lazy),
"number" == typeof b.compressionType && (this.e = b.compressionType),
b.outputBuffer && (this.b = o && b.outputBuffer instanceof Array ? new Uint8Array(b.outputBuffer) : b.outputBuffer),
"number" == typeof b.outputIndex && (this.c = b.outputIndex)),
this.b || (this.b = new (o ? Uint8Array : Array)(32768))
}
function f(a, b) {
this.length = a,
this.g = b
}
function g(a, b) {
function c(a, b) {
var c, d = a.g, e = [], f = 0;
c = z[a.length],
e[f++] = 65535 & c,
e[f++] = c >> 16 & 255,
e[f++] = c >> 24;
var g;
switch (m) {
case 1 === d:
g = [0, d - 1, 0];
break;
case 2 === d:
g = [1, d - 2, 0];
break;
case 3 === d:
g = [2, d - 3, 0];
break;
case 4 === d:
g = [3, d - 4, 0];
break;
case 6 >= d:
g = [4, d - 5, 1];
break;
case 8 >= d:
g = [5, d - 7, 1];
break;
case 12 >= d:
g = [6, d - 9, 2];
break;
case 16 >= d:
g = [7, d - 13, 2];
break;
case 24 >= d:
g = [8, d - 17, 3];
break;
case 32 >= d:
g = [9, d - 25, 3];
break;
case 48 >= d:
g = [10, d - 33, 4];
break;
case 64 >= d:
g = [11, d - 49, 4];
break;
case 96 >= d:
g = [12, d - 65, 5];
break;
case 128 >= d:
g = [13, d - 97, 5];
break;
case 192 >= d:
g = [14, d - 129, 6];
break;
case 256 >= d:
g = [15, d - 193, 6];
break;
case 384 >= d:
g = [16, d - 257, 7];
break;
case 512 >= d:
g = [17, d - 385, 7];
break;
case 768 >= d:
g = [18, d - 513, 8];
break;
case 1024 >= d:
g = [19, d - 769, 8];
break;
case 1536 >= d:
g = [20, d - 1025, 9];
break;
case 2048 >= d:
g = [21, d - 1537, 9];
break;
case 3072 >= d:
g = [22, d - 2049, 10];
break;
case 4096 >= d:
g = [23, d - 3073, 10];
break;
case 6144 >= d:
g = [24, d - 4097, 11];
break;
case 8192 >= d:
g = [25, d - 6145, 11];
break;
case 12288 >= d:
g = [26, d - 8193, 12];
break;
case 16384 >= d:
g = [27, d - 12289, 12];
break;
case 24576 >= d:
g = [28, d - 16385, 13];
break;
case 32768 >= d:
g = [29, d - 24577, 13];
break;
default:
throw "invalid distance"
}
c = g,
e[f++] = c[0],
e[f++] = c[1],
e[f++] = c[2];
var h, i;
for (h = 0,
i = e.length; i > h; ++h)
r[s++] = e[h];
u[e[0]]++,
v[e[3]]++,
t = a.length + b - 1,
n = null
}
var d, e, f, g, i, j, k, n, p, q = {}, r = o ? new Uint16Array(2 * b.length) : [], s = 0, t = 0, u = new (o ? Uint32Array : Array)(286), v = new (o ? Uint32Array : Array)(30), w = a.f;
if (!o) {
for (f = 0; 285 >= f; )
u[f++] = 0;
for (f = 0; 29 >= f; )
v[f++] = 0
}
for (u[256] = 1,
d = 0,
e = b.length; e > d; ++d) {
for (f = i = 0,
g = 3; g > f && d + f !== e; ++f)
i = i << 8 | b[d + f];
if (q[i] === l && (q[i] = []),
j = q[i],
!(0 < t--)) {
for (; 0 < j.length && 32768 < d - j[0]; )
j.shift();
if (d + 3 >= e) {
for (n && c(n, -1),
f = 0,
g = e - d; g > f; ++f)
p = b[d + f],
r[s++] = p,
++u[p];
break
}
0 < j.length ? (k = h(b, d, j),
n ? n.length < k.length ? (p = b[d - 1],
r[s++] = p,
++u[p],
c(k, 0)) : c(n, -1) : k.length < w ? n = k : c(k, 0)) : n ? c(n, -1) : (p = b[d],
r[s++] = p,
++u[p])
}
j.push(d)
}
return r[s++] = 256,
u[256]++,
a.j = u,
a.i = v,
o ? r.subarray(0, s) : r
}
function h(a, b, c) {
var d, e, g, h, i, j, k = 0, l = a.length;
h = 0,
j = c.length;
a: for (; j > h; h++) {
if (d = c[j - h - 1],
g = 3,
k > 3) {
for (i = k; i > 3; i--)
if (a[d + i - 1] !== a[b + i - 1])
continue a;
g = k
}
for (; 258 > g && l > b + g && a[d + g] === a[b + g]; )
++g;
if (g > k && (e = d,
k = g),
258 === g)
break
}
return new f(k,b - e)
}
function i(a, b) {
var c, e, f, g, h, i = a.length, k = new d(572), l = new (o ? Uint8Array : Array)(i);
if (!o)
for (g = 0; i > g; g++)
l[g] = 0;
for (g = 0; i > g; ++g)
0 < a[g] && k.push(g, a[g]);
if (c = Array(k.length / 2),
e = new (o ? Uint32Array : Array)(k.length / 2),
1 === c.length)
return l[k.pop().index] = 1,
l;
for (g = 0,
h = k.length / 2; h > g; ++g)
c[g] = k.pop(),
e[g] = c[g].value;
for (f = j(e, e.length, b),
g = 0,
h = c.length; h > g; ++g)
l[c[g].index] = f[g];
return l
}
function j(a, b, c) {
function d(a) {
var c = n[a][p[a]];
c === b ? (d(a + 1),
d(a + 1)) : --l[c],
++p[a]
}
var e, f, g, h, i, j = new (o ? Uint16Array : Array)(c), k = new (o ? Uint8Array : Array)(c), l = new (o ? Uint8Array : Array)(b), m = Array(c), n = Array(c), p = Array(c), q = (1 << c) - b, r = 1 << c - 1;
for (j[c - 1] = b,
f = 0; c > f; ++f)
r > q ? k[f] = 0 : (k[f] = 1,
q -= r),
q <<= 1,
j[c - 2 - f] = (j[c - 1 - f] / 2 | 0) + b;
for (j[0] = k[0],
m[0] = Array(j[0]),
n[0] = Array(j[0]),
f = 1; c > f; ++f)
j[f] > 2 * j[f - 1] + k[f] && (j[f] = 2 * j[f - 1] + k[f]),
m[f] = Array(j[f]),
n[f] = Array(j[f]);
for (e = 0; b > e; ++e)
l[e] = c;
for (g = 0; g < j[c - 1]; ++g)
m[c - 1][g] = a[g],
n[c - 1][g] = g;
for (e = 0; c > e; ++e)
p[e] = 0;
for (1 === k[c - 1] && (--l[0],
++p[c - 1]),
f = c - 2; f >= 0; --f) {
for (h = e = 0,
i = p[f + 1],
g = 0; g < j[f]; g++)
h = m[f + 1][i] + m[f + 1][i + 1],
h > a[e] ? (m[f][g] = h,
n[f][g] = b,
i += 2) : (m[f][g] = a[e],
n[f][g] = e,
++e);
p[f] = 0,
1 === k[f] && d(f)
}
return l
}
function k(a) {
var b, c, d, e, f = new (o ? Uint16Array : Array)(a.length), g = [], h = [], i = 0;
for (b = 0,
c = a.length; c > b; b++)
g[a[b]] = (0 | g[a[b]]) + 1;
for (b = 1,
c = 16; c >= b; b++)
h[b] = i,
i += 0 | g[b],
i <<= 1;
for (b = 0,
c = a.length; c > b; b++)
for (i = h[a[b]],
h[a[b]] += 1,
d = f[b] = 0,
e = a[b]; e > d; d++)
f[b] = f[b] << 1 | 1 & i,
i >>>= 1;
return f
}
var l = void 0
, m = !0
, n = this
, o = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array && "undefined" != typeof DataView;
b.prototype.a = function(a, b, d) {
var e, f = this.buffer, g = this.index, h = this.d, i = f[g];
if (d && b > 1 && (a = b > 8 ? (u[255 & a] << 24 | u[a >>> 8 & 255] << 16 | u[a >>> 16 & 255] << 8 | u[a >>> 24 & 255]) >> 32 - b : u[a] >> 8 - b),
8 > b + h)
i = i << b | a,
h += b;
else
for (e = 0; b > e; ++e)
i = i << 1 | a >> b - e - 1 & 1,
8 === ++h && (h = 0,
f[g++] = u[i],
i = 0,
g === f.length && (f = c(this)));
f[g] = i,
this.buffer = f,
this.d = h,
this.index = g
}
,
b.prototype.finish = function() {
var a, b = this.buffer, c = this.index;
return 0 < this.d && (b[c] <<= 8 - this.d,
b[c] = u[b[c]],
c++),
o ? a = b.subarray(0, c) : (b.length = c,
a = b),
a
}
;
var p, q = new (o ? Uint8Array : Array)(256);
for (p = 0; 256 > p; ++p) {
for (var r = p, s = r, t = 7, r = r >>> 1; r; r >>>= 1)
s <<= 1,
s |= 1 & r,
--t;
q[p] = (s << t & 255) >>> 0
}
var u = q;
d.prototype.getParent = function(a) {
return 2 * ((a - 2) / 4 | 0)
}
,
d.prototype.push = function(a, b) {
var c, d, e, f = this.buffer;
for (c = this.length,
f[this.length++] = b,
f[this.length++] = a; c > 0 && (d = this.getParent(c),
f[c] > f[d]); )
e = f[c],
f[c] = f[d],
f[d] = e,
e = f[c + 1],
f[c + 1] = f[d + 1],
f[d + 1] = e,
c = d;
return this.length
}
,
d.prototype.pop = function() {
var a, b, c, d, e, f = this.buffer;
for (b = f[0],
a = f[1],
this.length -= 2,
f[0] = f[this.length],
f[1] = f[this.length + 1],
e = 0; d = 2 * e + 2,
!(d >= this.length) && (d + 2 < this.length && f[d + 2] > f[d] && (d += 2),
f[d] > f[e]); )
c = f[e],
f[e] = f[d],
f[d] = c,
c = f[e + 1],
f[e + 1] = f[d + 1],
f[d + 1] = c,
e = d;
return {
index: a,
value: b,
length: this.length
}
}
;
var v, w = 2, x = [];
for (v = 0; 288 > v; v++)
switch (m) {
case 143 >= v:
x.push([v + 48, 8]);
break;
case 255 >= v:
x.push([v - 144 + 400, 9]);
break;
case 279 >= v:
x.push([v - 256 + 0, 7]);
break;
case 287 >= v:
x.push([v - 280 + 192, 8]);
break;
default:
throw "invalid literal: " + v
}
e.prototype.h = function() {
var a, c, d, e, f = this.input;
switch (this.e) {
case 0:
for (d = 0,
e = f.length; e > d; ) {
c = o ? f.subarray(d, d + 65535) : f.slice(d, d + 65535),
d += c.length;
var h = c
, j = d === e
, n = l
, p = l
, q = l
, r = l
, s = l
, t = this.b
, u = this.c;
if (o) {
for (t = new Uint8Array(this.b.buffer); t.length <= u + h.length + 5; )
t = new Uint8Array(t.length << 1);
t.set(this.b)
}
if (n = j ? 1 : 0,
t[u++] = 0 | n,
p = h.length,
q = ~p + 65536 & 65535,
t[u++] = 255 & p,
t[u++] = p >>> 8 & 255,
t[u++] = 255 & q,
t[u++] = q >>> 8 & 255,
o)
t.set(h, u),
u += h.length,
t = t.subarray(0, u);
else {
for (r = 0,
s = h.length; s > r; ++r)
t[u++] = h[r];
t.length = u
}
this.c = u,
this.b = t
}
break;
case 1:
var v = new b(o ? new Uint8Array(this.b.buffer) : this.b,this.c);
v.a(1, 1, m),
v.a(1, 2, m);
var y, z, A, B = g(this, f);
for (y = 0,
z = B.length; z > y; y++)
if (A = B[y],
b.prototype.a.apply(v, x[A]),
A > 256)
v.a(B[++y], B[++y], m),
v.a(B[++y], 5),
v.a(B[++y], B[++y], m);
else if (256 === A)
break;
this.b = v.finish(),
this.c = this.b.length;
break;
case w:
var C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R = new b(o ? new Uint8Array(this.b.buffer) : this.b,this.c), S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], T = Array(19);
for (C = w,
R.a(1, 1, m),
R.a(C, 2, m),
D = g(this, f),
H = i(this.j, 15),
I = k(H),
J = i(this.i, 7),
K = k(J),
E = 286; E > 257 && 0 === H[E - 1]; E--)
;
for (F = 30; F > 1 && 0 === J[F - 1]; F--)
;
var U, V, W, X, Y, Z, $ = E, _ = F, ab = new (o ? Uint32Array : Array)($ + _), bb = new (o ? Uint32Array : Array)(316), cb = new (o ? Uint8Array : Array)(19);
for (U = V = 0; $ > U; U++)
ab[V++] = H[U];
for (U = 0; _ > U; U++)
ab[V++] = J[U];
if (!o)
for (U = 0,
X = cb.length; X > U; ++U)
cb[U] = 0;
for (U = Y = 0,
X = ab.length; X > U; U += V) {
for (V = 1; X > U + V && ab[U + V] === ab[U]; ++V)
;
if (W = V,
0 === ab[U])
if (3 > W)
for (; 0 < W--; )
bb[Y++] = 0,
cb[0]++;
else
for (; W > 0; )
Z = 138 > W ? W : 138,
Z > W - 3 && W > Z && (Z = W - 3),
10 >= Z ? (bb[Y++] = 17,
bb[Y++] = Z - 3,
cb[17]++) : (bb[Y++] = 18,
bb[Y++] = Z - 11,
cb[18]++),
W -= Z;
else if (bb[Y++] = ab[U],
cb[ab[U]]++,
W--,
3 > W)
for (; 0 < W--; )
bb[Y++] = ab[U],
cb[ab[U]]++;
else
for (; W > 0; )
Z = 6 > W ? W : 6,
Z > W - 3 && W > Z && (Z = W - 3),
bb[Y++] = 16,
bb[Y++] = Z - 3,
cb[16]++,
W -= Z
}
for (a = o ? bb.subarray(0, Y) : bb.slice(0, Y),
L = i(cb, 7),
P = 0; 19 > P; P++)
T[P] = L[S[P]];
for (G = 19; G > 4 && 0 === T[G - 1]; G--)
;
for (M = k(L),
R.a(E - 257, 5, m),
R.a(F - 1, 5, m),
R.a(G - 4, 4, m),
P = 0; G > P; P++)
R.a(T[P], 3, m);
for (P = 0,
Q = a.length; Q > P; P++)
if (N = a[P],
R.a(M[N], L[N], m),
N >= 16) {
switch (P++,
N) {
case 16:
O = 2;
break;
case 17:
O = 3;
break;
case 18:
O = 7;
break;
default:
throw "invalid code: " + N
}
R.a(a[P], O, m)
}
var db, eb, fb, gb, hb, ib, jb, kb, lb = [I, H], mb = [K, J];
for (hb = lb[0],
ib = lb[1],
jb = mb[0],
kb = mb[1],
db = 0,
eb = D.length; eb > db; ++db)
if (fb = D[db],
R.a(hb[fb], ib[fb], m),
fb > 256)
R.a(D[++db], D[++db], m),
gb = D[++db],
R.a(jb[gb], kb[gb], m),
R.a(D[++db], D[++db], m);
else if (256 === fb)
break;
this.b = R.finish(),
this.c = this.b.length;
break;
default:
throw "invalid compression type"
}
return this.b
}
;
var y = function() {
function a(a) {
switch (m) {
case 3 === a:
return [257, a - 3, 0];
case 4 === a:
return [258, a - 4, 0];
case 5 === a:
return [259, a - 5, 0];
case 6 === a:
return [260, a - 6, 0];
case 7 === a:
return [261, a - 7, 0];
case 8 === a:
return [262, a - 8, 0];
case 9 === a:
return [263, a - 9, 0];
case 10 === a:
return [264, a - 10, 0];
case 12 >= a:
return [265, a - 11, 1];
case 14 >= a:
return [266, a - 13, 1];
case 16 >= a:
return [267, a - 15, 1];
case 18 >= a:
return [268, a - 17, 1];
case 22 >= a:
return [269, a - 19, 2];
case 26 >= a:
return [270, a - 23, 2];
case 30 >= a:
return [271, a - 27, 2];
case 34 >= a:
return [272, a - 31, 2];
case 42 >= a:
return [273, a - 35, 3];
case 50 >= a:
return [274, a - 43, 3];
case 58 >= a:
return [275, a - 51, 3];
case 66 >= a:
return [276, a - 59, 3];
case 82 >= a:
return [277, a - 67, 4];
case 98 >= a:
return [278, a - 83, 4];
case 114 >= a:
return [279, a - 99, 4];
case 130 >= a:
return [280, a - 115, 4];
case 162 >= a:
return [281, a - 131, 5];
case 194 >= a:
return [282, a - 163, 5];
case 226 >= a:
return [283, a - 195, 5];
case 257 >= a:
return [284, a - 227, 5];
case 258 === a:
return [285, a - 258, 0];
default:
throw "invalid length: " + a
}
}
var b, c, d = [];
for (b = 3; 258 >= b; b++)
c = a(b),
d[b] = c[2] << 24 | c[1] << 16 | c[0];
return d
}()
, z = o ? new Uint32Array(y) : y;
a("Zlib.RawDeflate", e),
a("Zlib.RawDeflate.prototype.compress", e.prototype.h);
var A, B, C, D, E = {
NONE: 0,
FIXED: 1,
DYNAMIC: w
};
if (Object.keys)
A = Object.keys(E);
else
for (B in A = [],
C = 0,
E)
A[C++] = B;
for (C = 0,
D = A.length; D > C; ++C)
B = A[C],
a("Zlib.RawDeflate.CompressionType." + B, E[B])
}
).call(this)
}
, {}],
20: [function() {
/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */
(function() {
"use strict";
function a(a, b) {
var c = a.split(".")
, d = g;
!(c[0]in d) && d.execScript && d.execScript("var " + c[0]);
for (var e; c.length && (e = c.shift()); )
c.length || void 0 === b ? d = d[e] ? d[e] : d[e] = {} : d[e] = b
}
function b(a) {
var b, c, d, e, f, g, i, j, k, l, m = a.length, n = 0, o = Number.POSITIVE_INFINITY;
for (j = 0; m > j; ++j)
a[j] > n && (n = a[j]),
a[j] < o && (o = a[j]);
for (b = 1 << n,
c = new (h ? Uint32Array : Array)(b),
d = 1,
e = 0,
f = 2; n >= d; ) {
for (j = 0; m > j; ++j)
if (a[j] === d) {
for (g = 0,
i = e,
k = 0; d > k; ++k)
g = g << 1 | 1 & i,
i >>= 1;
for (l = d << 16 | j,
k = g; b > k; k += f)
c[k] = l;
++e
}
++d,
e <<= 1,
f <<= 1
}
return [c, n, o]
}
function c(a, b) {
switch (this.g = [],
this.h = 32768,
this.c = this.f = this.d = this.k = 0,
this.input = h ? new Uint8Array(a) : a,
this.l = !1,
this.i = j,
this.q = !1,
(b || !(b = {})) && (b.index && (this.d = b.index),
b.bufferSize && (this.h = b.bufferSize),
b.bufferType && (this.i = b.bufferType),
b.resize && (this.q = b.resize)),
this.i) {
case i:
this.a = 32768,
this.b = new (h ? Uint8Array : Array)(32768 + this.h + 258);
break;
case j:
this.a = 0,
this.b = new (h ? Uint8Array : Array)(this.h),
this.e = this.v,
this.m = this.s,
this.j = this.t;
break;
default:
throw Error("invalid inflate mode")
}
}
function d(a, b) {
for (var c, d = a.f, e = a.c, f = a.input, g = a.d, h = f.length; b > e; ) {
if (g >= h)
throw Error("input buffer is broken");
d |= f[g++] << e,
e += 8
}
return c = d & (1 << b) - 1,
a.f = d >>> b,
a.c = e - b,
a.d = g,
c
}
function e(a, b) {
for (var c, d, e = a.f, f = a.c, g = a.input, h = a.d, i = g.length, j = b[0], k = b[1]; k > f && !(h >= i); )
e |= g[h++] << f,
f += 8;
return c = j[e & (1 << k) - 1],
d = c >>> 16,
a.f = e >> d,
a.c = f - d,
a.d = h,
65535 & c
}
function f(a) {
function c(a, b, c) {
var f, g, h, i = this.p;
for (h = 0; a > h; )
switch (f = e(this, b)) {
case 16:
for (g = 3 + d(this, 2); g--; )
c[h++] = i;
break;
case 17:
for (g = 3 + d(this, 3); g--; )
c[h++] = 0;
i = 0;
break;
case 18:
for (g = 11 + d(this, 7); g--; )
c[h++] = 0;
i = 0;
break;
default:
i = c[h++] = f
}
return this.p = i,
c
}
var f, g, i, j, k = d(a, 5) + 257, l = d(a, 5) + 1, m = d(a, 4) + 4, o = new (h ? Uint8Array : Array)(n.length);
for (j = 0; m > j; ++j)
o[n[j]] = d(a, 3);
if (!h)
for (j = m,
m = o.length; m > j; ++j)
o[n[j]] = 0;
f = b(o),
g = new (h ? Uint8Array : Array)(k),
i = new (h ? Uint8Array : Array)(l),
a.p = 0,
a.j(b(c.call(a, k, f, g)), b(c.call(a, l, f, i)))
}
var g = this
, h = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array && "undefined" != typeof DataView
, i = 0
, j = 1;
c.prototype.u = function() {
for (; !this.l; ) {
var a = d(this, 3);
switch (1 & a && (this.l = !0),
a >>>= 1) {
case 0:
var b = this.input
, c = this.d
, e = this.b
, g = this.a
, k = b.length
, l = void 0
, m = void 0
, n = e.length
, o = void 0;
if (this.c = this.f = 0,
c + 1 >= k)
throw Error("invalid uncompressed block header: LEN");
if (l = b[c++] | b[c++] << 8,
c + 1 >= k)
throw Error("invalid uncompressed block header: NLEN");
if (m = b[c++] | b[c++] << 8,
l === ~m)
throw Error("invalid uncompressed block header: length verify");
if (c + l > b.length)
throw Error("input buffer is broken");
switch (this.i) {
case i:
for (; g + l > e.length; ) {
if (o = n - g,
l -= o,
h)
e.set(b.subarray(c, c + o), g),
g += o,
c += o;
else
for (; o--; )
e[g++] = b[c++];
this.a = g,
e = this.e(),
g = this.a
}
break;
case j:
for (; g + l > e.length; )
e = this.e({
o: 2
});
break;
default:
throw Error("invalid inflate mode")
}
if (h)
e.set(b.subarray(c, c + l), g),
g += l,
c += l;
else
for (; l--; )
e[g++] = b[c++];
this.d = c,
this.a = g,
this.b = e;
break;
case 1:
this.j(z, B);
break;
case 2:
f(this);
break;
default:
throw Error("unknown BTYPE: " + a)
}
}
return this.m()
}
;
var k, l, m = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], n = h ? new Uint16Array(m) : m, o = [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, 258, 258], p = h ? new Uint16Array(o) : o, q = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0], r = h ? new Uint8Array(q) : q, s = [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], t = h ? new Uint16Array(s) : s, u = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], v = h ? new Uint8Array(u) : u, w = new (h ? Uint8Array : Array)(288);
for (k = 0,
l = w.length; l > k; ++k)
w[k] = 143 >= k ? 8 : 255 >= k ? 9 : 279 >= k ? 7 : 8;
var x, y, z = b(w), A = new (h ? Uint8Array : Array)(30);
for (x = 0,
y = A.length; y > x; ++x)
A[x] = 5;
var B = b(A);
c.prototype.j = function(a, b) {
var c = this.b
, f = this.a;
this.n = a;
for (var g, h, i, j, k = c.length - 258; 256 !== (g = e(this, a)); )
if (256 > g)
f >= k && (this.a = f,
c = this.e(),
f = this.a),
c[f++] = g;
else
for (h = g - 257,
j = p[h],
0 < r[h] && (j += d(this, r[h])),
g = e(this, b),
i = t[g],
0 < v[g] && (i += d(this, v[g])),
f >= k && (this.a = f,
c = this.e(),
f = this.a); j--; )
c[f] = c[f++ - i];
for (; 8 <= this.c; )
this.c -= 8,
this.d--;
this.a = f
}
,
c.prototype.t = function(a, b) {
var c = this.b
, f = this.a;
this.n = a;
for (var g, h, i, j, k = c.length; 256 !== (g = e(this, a)); )
if (256 > g)
f >= k && (c = this.e(),
k = c.length),
c[f++] = g;
else
for (h = g - 257,
j = p[h],
0 < r[h] && (j += d(this, r[h])),
g = e(this, b),
i = t[g],
0 < v[g] && (i += d(this, v[g])),
f + j > k && (c = this.e(),
k = c.length); j--; )
c[f] = c[f++ - i];
for (; 8 <= this.c; )
this.c -= 8,
this.d--;
this.a = f
}
,
c.prototype.e = function() {
var a, b, c = new (h ? Uint8Array : Array)(this.a - 32768), d = this.a - 32768, e = this.b;
if (h)
c.set(e.subarray(32768, c.length));
else
for (a = 0,
b = c.length; b > a; ++a)
c[a] = e[a + 32768];
if (this.g.push(c),
this.k += c.length,
h)
e.set(e.subarray(d, d + 32768));
else
for (a = 0; 32768 > a; ++a)
e[a] = e[d + a];
return this.a = 32768,
e
}
,
c.prototype.v = function(a) {
var b, c, d, e, f = this.input.length / this.d + 1 | 0, g = this.input, i = this.b;
return a && ("number" == typeof a.o && (f = a.o),
"number" == typeof a.r && (f += a.r)),
2 > f ? (c = (g.length - this.d) / this.n[2],
e = 258 * (c / 2) | 0,
d = e < i.length ? i.length + e : i.length << 1) : d = i.length * f,
h ? (b = new Uint8Array(d),
b.set(i)) : b = i,
this.b = b
}
,
c.prototype.m = function() {
var a, b, c, d, e, f = 0, g = this.b, i = this.g, j = new (h ? Uint8Array : Array)(this.k + (this.a - 32768));
if (0 === i.length)
return h ? this.b.subarray(32768, this.a) : this.b.slice(32768, this.a);
for (b = 0,
c = i.length; c > b; ++b)
for (a = i[b],
d = 0,
e = a.length; e > d; ++d)
j[f++] = a[d];
for (b = 32768,
c = this.a; c > b; ++b)
j[f++] = g[b];
return this.g = [],
this.buffer = j
}
,
c.prototype.s = function() {
var a, b = this.a;
return h ? this.q ? (a = new Uint8Array(b),
a.set(this.b.subarray(0, b))) : a = this.b.subarray(0, b) : (this.b.length > b && (this.b.length = b),
a = this.b),
this.buffer = a
}
,
a("Zlib.RawInflate", c),
a("Zlib.RawInflate.prototype.decompress", c.prototype.u);
var C, D, E, F, G = {
ADAPTIVE: j,
BLOCK: i
};
if (Object.keys)
C = Object.keys(G);
else
for (D in C = [],
E = 0,
G)
C[E++] = D;
for (E = 0,
F = C.length; F > E; ++E)
D = C[E],
a("Zlib.RawInflate.BufferType." + D, G[D])
}
).call(this)
}
, {}]
}, {}, [7])(7)
})

JSZip的更多相关文章

  1. 网页端压缩解压缩插件JSZIP库的使用

    JSZIP这个库支持在网页端生成zip格式的文件,  官方网站是:http://stuk.github.io/jszip/ 官方网站的DEMO如下: <!DOCTYPE html> < ...

  2. Egret 压缩与解压(jszip)

    一 jszip是什么 二 为什么要用jszip 三 如果使用zip 一 jszip是什么 jszip 是一个 JavaScript 库,可直接在浏览器上创建 zip 压缩档. 二 为什么要用jszip ...

  3. Node.js使用jszip实现打包zip压缩包

    一.前言 最近有这样的一个需求,需要把两个同名的.mtl文件和.obj文件打包成一个同名的.zip压缩包.刚开始文件不多的时候,只有几个,或者十几个,甚至二三十个的时候,还能勉强接受手动修改,但是随着 ...

  4. jszip 前端生成zip文件下载

    [文档地址] export const ZipFileCreate = () => { Promise.all([ // 下面是引入依赖包 require('jszip'), import('f ...

  5. 【咸鱼教程】JsZip压缩与解压教程

    引擎版本3.0.6 教程目录一 为什么要用jszip二 如何使用jszip    2.1 下载jszip库    2.2 导入jszip库    2.3 加载和解压zip代码三 Demo源码下载 一 ...

  6. jQuery.qrcode 生成二维码,并使用 jszip、FileSaver 下载 zip 压缩包至本地。

    生成二维码 引用 jquery.qrcode.js  :连接:https://files.cnblogs.com/files/kitty-blog/jquery.qrcode.js .https:// ...

  7. Jszip的使用和打包下载图片

    因为canvas总结到后面又想到了jszip的一些事情,那就索性也回去看看吧.试过,至少谷歌和火狐都是支持jszip的. 1.  jszip的使用 官方文档说的很清楚了,而且也有读取zip文件.生成z ...

  8. 【探索】利用 canvas 实现数据压缩

    前言 HTTP 支持 GZip 压缩,可节省不少传输资源.但遗憾的是,只有下载才有,上传并不支持.如果上传也能压缩,那就完美了.特别适合大量文本提交的场合,比如博客园,就是很好的例子. 虽然标准不支持 ...

  9. Zip 压缩和解压技术在 HTML5 中的应用

    JSZip 是一款可以创建.读取.修改 .zip 文件的 javaScript 工具.在 web 应用中,免不了需要从 web 服务器中获取资源,如果可以将所有的资源都合并到一个 .zip 文件中,这 ...

随机推荐

  1. 题解 P2674 【《瞿葩的数字游戏》T2-多边形数】

    题目说了很清楚,此题找规律,那么就找规律. 我们观察数列. 令k表示数列的第k个数. 三角形数:1 3 6 10 15 两项相减:1 2 3 4 5 再次相减:1 1 1 1 1 四边形数:1 4 9 ...

  2. django FBV +CBV 视图处理方式总结

    1.FBV(function base views) 在视图里使用函数处理请求. url:        re_path('fbv', views.fbv),        # url(r'^fbv' ...

  3. cs231n assignment1 KNN

    title: cs231n assignment1 KNN tags: - KNN - cs231n categories: - 机器学习 date: 2019年9月16日 17:03:13 利用KN ...

  4. Spring Cloud教程(十二)加密和解密

    Spring Cloud具有一个用于在本地解密属性值的Environment预处理器.它遵循与Config Server相同的规则,并通过encrypt.*具有相同的外部配置.因此,您可以使用{cip ...

  5. node.js运行配置(vs code非控制台输出)

    node.js运行配置(vs code非控制台输出) node  配置 简化  vs code 是非常强大的编译器,皆因它有有各种各样好用的插件. 在没有安装code runner插件之前,想要执行n ...

  6. ARM非对齐访问和Alignment Fault

    1.指令对齐 A64指令必须word对齐.尝试在非对齐地址取值会触发PC alignment fault. 1.1.PC alignment checking PC(Program Counter)寄 ...

  7. 协议:FTP

    ylbtech-协议:FTP FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客 ...

  8. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_3_绝对路径和相对路径

  9. 《上瘾 - 让用户养成使用习惯的四大产品逻辑》 - Nir Eyal, Ryan Hoover

    <上瘾 - 让用户养成使用习惯的四大产品逻辑> - Nir Eyal, Ryan Hoover 前言 1.所谓的消费升级,就是个人愿意付出更高的成本购买与自我价值相匹配的产品.购买即是一种 ...

  10. React-onsenui之RouterNavigator组件解读

    var index = 1;// index的最外层初始值,亦是全局 var MyPage = React.createClass({ //构成工具栏组件,根据hasBackButton的值为back ...