Greasy Fork

学在浙大/智云课堂 辅助脚本

学在浙大/智云课堂 辅助脚本 by memset0

目前为 2024-03-03 提交的版本。查看 最新版本

// ==UserScript==
// @name            学在浙大/智云课堂 辅助脚本
// @description     学在浙大/智云课堂 辅助脚本 by memset0
// @namespace       https://github.com/memset0/Learning-at-ZJU-Helper
// @homepage        https://github.com/memset0/Learning-at-ZJU-Helper
// @supportURL      https://github.com/memset0/Learning-at-ZJU-Helper/issues
// @match           *://livingroom.cmc.zju.edu.cn/*
// @match           *://onlineroom.cmc.zju.edu.cn/*
// @match           *://classroom.zju.edu.cn/*
// @match           *://interactivemeta.cmc.zju.edu.cn/*
// @grant           unsafeWindow
// @grant           GM_setValue
// @grant           GM_getValue
// @grant           GM_addValueChangeListener
// @grant           GM_removeValueChangeListener
// @encoding        utf-8
// @run-at          document-start
// @version         1.1.4
// @author          memset0
// @license         MIT
// ==/UserScript==


/*! For license information please see bundle.js.LICENSE.txt */
(() => {
	var e = {
			297: (e, t, r) => {
				"use strict";
				r.d(t, {
					A: () => o
				});
				var n = r(601),
					i = r.n(n),
					a = r(314),
					s = r.n(a)()(i());
				s.push([e.id, ".mem-btn{border:none;display:flex;margin-left:16px;cursor:pointer;height:32px;line-height:32px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;background-color:#f0f1f3;font-size:14px;color:#144aea;text-align:center;position:relative;padding:0 6px}@media screen and (max-width:1679px){.mem-btn{margin-left:11.42856px;height:22.85712px;line-height:22.85712px;font-size:9.99999px}}@media screen and (min-width:1680px) and (max-width:1919px){.mem-btn{margin-left:14px;height:28px;line-height:28px;font-size:12.25px}}", ""]);
				const o = s
			},
			513: (e, t, r) => {
				"use strict";
				r.d(t, {
					A: () => o
				});
				var n = r(601),
					i = r.n(n),
					a = r(314),
					s = r.n(a)()(i());
				s.push([e.id, ".custom-footer,.feedback-wrapper,.hot-recommend-wrapper,.menu-content>.first-menu:nth-child(4),.menu-content>.first-menu:nth-child(5),__nothing__{display:none!important}__nothing__{opacity:0!important;pointer-events:none;cursor:default}.living-page-wrapper{padding-bottom:20.040129px}.course-filter-searchAll-custom{border-left:none!important;border-right:none!important}.collect>.collect_span,.collect>.good_span,.operate_wrap>.collect_span,.operate_wrap>.good_span{display:none!important}.side_tab_wrap .side_tab{background:#f9f9f9!important;transform:none!important;color:#a0a0a0!important}.side_tab_wrap .side_tab span{transform:none!important}.side_tab_wrap .side_tab.active span{color:#144aea!important;font-weight:700!important}.relative-info-gap,.relative-info-right{display:none}.relative-info-left{width:100%!important}", ""]);
				const o = s
			},
			314: e => {
				"use strict";
				e.exports = function(e) {
					var t = [];
					return t.toString = function() {
						return this.map((function(t) {
							var r = "",
								n = void 0 !== t[5];
							return t[4] && (r += "@supports (".concat(t[4], ") {")), t[2] && (r += "@media ".concat(t[2], " {")), n && (r += "@layer".concat(t[5].length > 0 ? " ".concat(t[5]) : "", " {")), r += e(t), n && (r += "}"), t[2] && (r += "}"), t[4] && (r += "}"), r
						})).join("")
					}, t.i = function(e, r, n, i, a) {
						"string" == typeof e && (e = [
							[null, e, void 0]
						]);
						var s = {};
						if (n)
							for (var o = 0; o < this.length; o++) {
								var u = this[o][0];
								null != u && (s[u] = !0)
							}
						for (var l = 0; l < e.length; l++) {
							var c = [].concat(e[l]);
							n && s[c[0]] || (void 0 !== a && (void 0 === c[5] || (c[1] = "@layer".concat(c[5].length > 0 ? " ".concat(c[5]) : "", " {").concat(c[1], "}")), c[5] = a), r && (c[2] ? (c[1] = "@media ".concat(c[2], " {").concat(c[1], "}"), c[2] = r) : c[2] = r), i && (c[4] ? (c[1] = "@supports (".concat(c[4], ") {").concat(c[1], "}"), c[4] = i) : c[4] = "".concat(i)), t.push(c))
						}
					}, t
				}
			},
			601: e => {
				"use strict";
				e.exports = function(e) {
					return e[1]
				}
			},
			213: function(e, t, r) {
				var n, i;
				void 0 === (i = "function" == typeof(n = function() {
					"use strict";

					function t(e, t, r) {
						var n = new XMLHttpRequest;
						n.open("GET", e), n.responseType = "blob", n.onload = function() {
							o(n.response, t, r)
						}, n.onerror = function() {
							console.error("could not download file")
						}, n.send()
					}

					function n(e) {
						var t = new XMLHttpRequest;
						t.open("HEAD", e, !1);
						try {
							t.send()
						} catch (e) {}
						return 200 <= t.status && 299 >= t.status
					}

					function i(e) {
						try {
							e.dispatchEvent(new MouseEvent("click"))
						} catch (r) {
							var t = document.createEvent("MouseEvents");
							t.initMouseEvent("click", !0, !0, window, 0, 0, 0, 80, 20, !1, !1, !1, !1, 0, null), e.dispatchEvent(t)
						}
					}
					var a = "object" == typeof window && window.window === window ? window : "object" == typeof self && self.self === self ? self : "object" == typeof r.g && r.g.global === r.g ? r.g : void 0,
						s = a.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent),
						o = a.saveAs || ("object" != typeof window || window !== a ? function() {} : "download" in HTMLAnchorElement.prototype && !s ? function(e, r, s) {
							var o = a.URL || a.webkitURL,
								u = document.createElement("a");
							r = r || e.name || "download", u.download = r, u.rel = "noopener", "string" == typeof e ? (u.href = e, u.origin === location.origin ? i(u) : n(u.href) ? t(e, r, s) : i(u, u.target = "_blank")) : (u.href = o.createObjectURL(e), setTimeout((function() {
								o.revokeObjectURL(u.href)
							}), 4e4), setTimeout((function() {
								i(u)
							}), 0))
						} : "msSaveOrOpenBlob" in navigator ? function(e, r, a) {
							if (r = r || e.name || "download", "string" != typeof e) navigator.msSaveOrOpenBlob(function(e, t) {
								return void 0 === t ? t = {
									autoBom: !1
								} : "object" != typeof t && (console.warn("Deprecated: Expected third argument to be a object"), t = {
									autoBom: !t
								}), t.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type) ? new Blob(["\ufeff", e], {
									type: e.type
								}) : e
							}(e, a), r);
							else if (n(e)) t(e, r, a);
							else {
								var s = document.createElement("a");
								s.href = e, s.target = "_blank", setTimeout((function() {
									i(s)
								}))
							}
						} : function(e, r, n, i) {
							if ((i = i || open("", "_blank")) && (i.document.title = i.document.body.innerText = "downloading..."), "string" == typeof e) return t(e, r, n);
							var o = "application/octet-stream" === e.type,
								u = /constructor/i.test(a.HTMLElement) || a.safari,
								l = /CriOS\/[\d]+/.test(navigator.userAgent);
							if ((l || o && u || s) && "undefined" != typeof FileReader) {
								var c = new FileReader;
								c.onloadend = function() {
									var e = c.result;
									e = l ? e : e.replace(/^data:[^;]*;/, "data:attachment/file;"), i ? i.location.href = e : location = e, i = null
								}, c.readAsDataURL(e)
							} else {
								var h = a.URL || a.webkitURL,
									d = h.createObjectURL(e);
								i ? i.location = d : location.href = d, i = null, setTimeout((function() {
									h.revokeObjectURL(d)
								}), 4e4)
							}
						});
					a.saveAs = o.saveAs = o, e.exports = o
				}) ? n.apply(t, []) : n) || (e.exports = i)
			},
			710: (e, t, r) => {
				e.exports = function e(t, r, n) {
					function i(s, o) {
						if (!r[s]) {
							if (!t[s]) {
								if (a) return a(s, !0);
								var u = new Error("Cannot find module '" + s + "'");
								throw u.code = "MODULE_NOT_FOUND", u
							}
							var l = r[s] = {
								exports: {}
							};
							t[s][0].call(l.exports, (function(e) {
								return i(t[s][1][e] || e)
							}), l, l.exports, e, t, r, n)
						}
						return r[s].exports
					}
					for (var a = void 0, s = 0; s < n.length; s++) i(n[s]);
					return i
				}({
					1: [function(e, t, r) {
						"use strict";
						var n = e("./utils"),
							i = e("./support"),
							a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
						r.encode = function(e) {
							for (var t, r, i, s, o, u, l, c = [], h = 0, d = e.length, f = d, p = "string" !== n.getTypeOf(e); h < e.length;) f = d - h, i = p ? (t = e[h++], r = h < d ? e[h++] : 0, h < d ? e[h++] : 0) : (t = e.charCodeAt(h++), r = h < d ? e.charCodeAt(h++) : 0, h < d ? e.charCodeAt(h++) : 0), s = t >> 2, o = (3 & t) << 4 | r >> 4, u = 1 < f ? (15 & r) << 2 | i >> 6 : 64, l = 2 < f ? 63 & i : 64, c.push(a.charAt(s) + a.charAt(o) + a.charAt(u) + a.charAt(l));
							return c.join("")
						}, r.decode = function(e) {
							var t, r, n, s, o, u, l = 0,
								c = 0,
								h = "data:";
							if (e.substr(0, 5) === h) throw new Error("Invalid base64 input, it looks like a data url.");
							var d, f = 3 * (e = e.replace(/[^A-Za-z0-9\+\/\=]/g, "")).length / 4;
							if (e.charAt(e.length - 1) === a.charAt(64) && f--, e.charAt(e.length - 2) === a.charAt(64) && f--, f % 1 != 0) throw new Error("Invalid base64 input, bad content length.");
							for (d = i.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); l < e.length;) t = a.indexOf(e.charAt(l++)) << 2 | (s = a.indexOf(e.charAt(l++))) >> 4, r = (15 & s) << 4 | (o = a.indexOf(e.charAt(l++))) >> 2, n = (3 & o) << 6 | (u = a.indexOf(e.charAt(l++))), d[c++] = t, 64 !== o && (d[c++] = r), 64 !== u && (d[c++] = n);
							return d
						}
					}, {
						"./support": 30,
						"./utils": 32
					}],
					2: [function(e, t, r) {
						"use strict";
						var n = e("./external"),
							i = e("./stream/DataWorker"),
							a = e("./stream/Crc32Probe"),
							s = e("./stream/DataLengthProbe");

						function o(e, t, r, n, i) {
							this.compressedSize = e, this.uncompressedSize = t, this.crc32 = r, this.compression = n, this.compressedContent = i
						}
						o.prototype = {
							getContentWorker: function() {
								var e = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new s("data_length")),
									t = this;
								return e.on("end", (function() {
									if (this.streamInfo.data_length !== t.uncompressedSize) throw new Error("Bug : uncompressed data size mismatch")
								})), e
							},
							getCompressedWorker: function() {
								return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression)
							}
						}, o.createWorkerFrom = function(e, t, r) {
							return e.pipe(new a).pipe(new s("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new s("compressedSize")).withStreamInfo("compression", t)
						}, t.exports = o
					}, {
						"./external": 6,
						"./stream/Crc32Probe": 25,
						"./stream/DataLengthProbe": 26,
						"./stream/DataWorker": 27
					}],
					3: [function(e, t, r) {
						"use strict";
						var n = e("./stream/GenericWorker");
						r.STORE = {
							magic: "\0\0",
							compressWorker: function(e) {
								return new n("STORE compression")
							},
							uncompressWorker: function() {
								return new n("STORE decompression")
							}
						}, r.DEFLATE = e("./flate")
					}, {
						"./flate": 7,
						"./stream/GenericWorker": 28
					}],
					4: [function(e, t, r) {
						"use strict";
						var n = e("./utils"),
							i = function() {
								for (var e, t = [], r = 0; r < 256; r++) {
									e = r;
									for (var n = 0; n < 8; n++) e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1;
									t[r] = e
								}
								return t
							}();
						t.exports = function(e, t) {
							return void 0 !== e && e.length ? "string" !== n.getTypeOf(e) ? function(e, t, r, n) {
								var a = i,
									s = 0 + r;
								e ^= -1;
								for (var o = 0; o < s; o++) e = e >>> 8 ^ a[255 & (e ^ t[o])];
								return -1 ^ e
							}(0 | t, e, e.length) : function(e, t, r, n) {
								var a = i,
									s = 0 + r;
								e ^= -1;
								for (var o = 0; o < s; o++) e = e >>> 8 ^ a[255 & (e ^ t.charCodeAt(o))];
								return -1 ^ e
							}(0 | t, e, e.length) : 0
						}
					}, {
						"./utils": 32
					}],
					5: [function(e, t, r) {
						"use strict";
						r.base64 = !1, r.binary = !1, r.dir = !1, r.createFolders = !0, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null
					}, {}],
					6: [function(e, t, r) {
						"use strict";
						var n;
						n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = {
							Promise: n
						}
					}, {
						lie: 37
					}],
					7: [function(e, t, r) {
						"use strict";
						var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array,
							i = e("pako"),
							a = e("./utils"),
							s = e("./stream/GenericWorker"),
							o = n ? "uint8array" : "array";

						function u(e, t) {
							s.call(this, "FlateWorker/" + e), this._pako = null, this._pakoAction = e, this._pakoOptions = t, this.meta = {}
						}
						r.magic = "\b\0", a.inherits(u, s), u.prototype.processChunk = function(e) {
							this.meta = e.meta, null === this._pako && this._createPako(), this._pako.push(a.transformTo(o, e.data), !1)
						}, u.prototype.flush = function() {
							s.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], !0)
						}, u.prototype.cleanUp = function() {
							s.prototype.cleanUp.call(this), this._pako = null
						}, u.prototype._createPako = function() {
							this._pako = new i[this._pakoAction]({
								raw: !0,
								level: this._pakoOptions.level || -1
							});
							var e = this;
							this._pako.onData = function(t) {
								e.push({
									data: t,
									meta: e.meta
								})
							}
						}, r.compressWorker = function(e) {
							return new u("Deflate", e)
						}, r.uncompressWorker = function() {
							return new u("Inflate", {})
						}
					}, {
						"./stream/GenericWorker": 28,
						"./utils": 32,
						pako: 38
					}],
					8: [function(e, t, r) {
						"use strict";

						function n(e, t) {
							var r, n = "";
							for (r = 0; r < t; r++) n += String.fromCharCode(255 & e), e >>>= 8;
							return n
						}

						function i(e, t, r, i, s, c) {
							var h, d, f = e.file,
								p = e.compression,
								m = c !== o.utf8encode,
								_ = a.transformTo("string", c(f.name)),
								g = a.transformTo("string", o.utf8encode(f.name)),
								b = f.comment,
								v = a.transformTo("string", c(b)),
								y = a.transformTo("string", o.utf8encode(b)),
								w = g.length !== f.name.length,
								k = y.length !== b.length,
								x = "",
								S = "",
								A = "",
								z = f.dir,
								E = f.date,
								C = {
									crc32: 0,
									compressedSize: 0,
									uncompressedSize: 0
								};
							t && !r || (C.crc32 = e.crc32, C.compressedSize = e.compressedSize, C.uncompressedSize = e.uncompressedSize);
							var O = 0;
							t && (O |= 8), m || !w && !k || (O |= 2048);
							var I = 0,
								T = 0;
							z && (I |= 16), "UNIX" === s ? (T = 798, I |= function(e, t) {
								var r = e;
								return e || (r = t ? 16893 : 33204), (65535 & r) << 16
							}(f.unixPermissions, z)) : (T = 20, I |= function(e) {
								return 63 & (e || 0)
							}(f.dosPermissions)), h = E.getUTCHours(), h <<= 6, h |= E.getUTCMinutes(), h <<= 5, h |= E.getUTCSeconds() / 2, d = E.getUTCFullYear() - 1980, d <<= 4, d |= E.getUTCMonth() + 1, d <<= 5, d |= E.getUTCDate(), w && (S = n(1, 1) + n(u(_), 4) + g, x += "up" + n(S.length, 2) + S), k && (A = n(1, 1) + n(u(v), 4) + y, x += "uc" + n(A.length, 2) + A);
							var B = "";
							return B += "\n\0", B += n(O, 2), B += p.magic, B += n(h, 2), B += n(d, 2), B += n(C.crc32, 4), B += n(C.compressedSize, 4), B += n(C.uncompressedSize, 4), B += n(_.length, 2), B += n(x.length, 2), {
								fileRecord: l.LOCAL_FILE_HEADER + B + _ + x,
								dirRecord: l.CENTRAL_FILE_HEADER + n(T, 2) + B + n(v.length, 2) + "\0\0\0\0" + n(I, 4) + n(i, 4) + _ + x + v
							}
						}
						var a = e("../utils"),
							s = e("../stream/GenericWorker"),
							o = e("../utf8"),
							u = e("../crc32"),
							l = e("../signature");

						function c(e, t, r, n) {
							s.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t, this.zipPlatform = r, this.encodeFileName = n, this.streamFiles = e, this.accumulate = !1, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []
						}
						a.inherits(c, s), c.prototype.push = function(e) {
							var t = e.meta.percent || 0,
								r = this.entriesCount,
								n = this._sources.length;
							this.accumulate ? this.contentBuffer.push(e) : (this.bytesWritten += e.data.length, s.prototype.push.call(this, {
								data: e.data,
								meta: {
									currentFile: this.currentFile,
									percent: r ? (t + 100 * (r - n - 1)) / r : 100
								}
							}))
						}, c.prototype.openedSource = function(e) {
							this.currentSourceOffset = this.bytesWritten, this.currentFile = e.file.name;
							var t = this.streamFiles && !e.file.dir;
							if (t) {
								var r = i(e, t, !1, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);
								this.push({
									data: r.fileRecord,
									meta: {
										percent: 0
									}
								})
							} else this.accumulate = !0
						}, c.prototype.closedSource = function(e) {
							this.accumulate = !1;
							var t = this.streamFiles && !e.file.dir,
								r = i(e, t, !0, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);
							if (this.dirRecords.push(r.dirRecord), t) this.push({
								data: function(e) {
									return l.DATA_DESCRIPTOR + n(e.crc32, 4) + n(e.compressedSize, 4) + n(e.uncompressedSize, 4)
								}(e),
								meta: {
									percent: 100
								}
							});
							else
								for (this.push({
										data: r.fileRecord,
										meta: {
											percent: 0
										}
									}); this.contentBuffer.length;) this.push(this.contentBuffer.shift());
							this.currentFile = null
						}, c.prototype.flush = function() {
							for (var e = this.bytesWritten, t = 0; t < this.dirRecords.length; t++) this.push({
								data: this.dirRecords[t],
								meta: {
									percent: 100
								}
							});
							var r = this.bytesWritten - e,
								i = function(e, t, r, i, s) {
									var o = a.transformTo("string", s(i));
									return l.CENTRAL_DIRECTORY_END + "\0\0\0\0" + n(e, 2) + n(e, 2) + n(t, 4) + n(r, 4) + n(o.length, 2) + o
								}(this.dirRecords.length, r, e, this.zipComment, this.encodeFileName);
							this.push({
								data: i,
								meta: {
									percent: 100
								}
							})
						}, c.prototype.prepareNextSource = function() {
							this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume()
						}, c.prototype.registerPrevious = function(e) {
							this._sources.push(e);
							var t = this;
							return e.on("data", (function(e) {
								t.processChunk(e)
							})), e.on("end", (function() {
								t.closedSource(t.previous.streamInfo), t._sources.length ? t.prepareNextSource() : t.end()
							})), e.on("error", (function(e) {
								t.error(e)
							})), this
						}, c.prototype.resume = function() {
							return !!s.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), !0) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), !0))
						}, c.prototype.error = function(e) {
							var t = this._sources;
							if (!s.prototype.error.call(this, e)) return !1;
							for (var r = 0; r < t.length; r++) try {
								t[r].error(e)
							} catch (e) {}
							return !0
						}, c.prototype.lock = function() {
							s.prototype.lock.call(this);
							for (var e = this._sources, t = 0; t < e.length; t++) e[t].lock()
						}, t.exports = c
					}, {
						"../crc32": 4,
						"../signature": 23,
						"../stream/GenericWorker": 28,
						"../utf8": 31,
						"../utils": 32
					}],
					9: [function(e, t, r) {
						"use strict";
						var n = e("../compressions"),
							i = e("./ZipFileWorker");
						r.generateWorker = function(e, t, r) {
							var a = new i(t.streamFiles, r, t.platform, t.encodeFileName),
								s = 0;
							try {
								e.forEach((function(e, r) {
									s++;
									var i = function(e, t) {
											var r = e || t,
												i = n[r];
											if (!i) throw new Error(r + " is not a valid compression method !");
											return i
										}(r.options.compression, t.compression),
										o = r.options.compressionOptions || t.compressionOptions || {},
										u = r.dir,
										l = r.date;
									r._compressWorker(i, o).withStreamInfo("file", {
										name: e,
										dir: u,
										date: l,
										comment: r.comment || "",
										unixPermissions: r.unixPermissions,
										dosPermissions: r.dosPermissions
									}).pipe(a)
								})), a.entriesCount = s
							} catch (e) {
								a.error(e)
							}
							return a
						}
					}, {
						"../compressions": 3,
						"./ZipFileWorker": 8
					}],
					10: [function(e, t, r) {
						"use strict";

						function n() {
							if (!(this instanceof n)) return new n;
							if (arguments.length) throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");
							this.files = Object.create(null), this.comment = null, this.root = "", this.clone = function() {
								var e = new n;
								for (var t in this) "function" != typeof this[t] && (e[t] = this[t]);
								return e
							}
						}(n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.9.1", n.loadAsync = function(e, t) {
							return (new n).loadAsync(e, t)
						}, n.external = e("./external"), t.exports = n
					}, {
						"./defaults": 5,
						"./external": 6,
						"./load": 11,
						"./object": 15,
						"./support": 30
					}],
					11: [function(e, t, r) {
						"use strict";
						var n = e("./utils"),
							i = e("./external"),
							a = e("./utf8"),
							s = e("./zipEntries"),
							o = e("./stream/Crc32Probe"),
							u = e("./nodejsUtils");

						function l(e) {
							return new i.Promise((function(t, r) {
								var n = e.decompressed.getContentWorker().pipe(new o);
								n.on("error", (function(e) {
									r(e)
								})).on("end", (function() {
									n.streamInfo.crc32 !== e.decompressed.crc32 ? r(new Error("Corrupted zip : CRC32 mismatch")) : t()
								})).resume()
							}))
						}
						t.exports = function(e, t) {
							var r = this;
							return t = n.extend(t || {}, {
								base64: !1,
								checkCRC32: !1,
								optimizedBinaryString: !1,
								createFolders: !1,
								decodeFileName: a.utf8decode
							}), u.isNode && u.isStream(e) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : n.prepareContent("the loaded zip file", e, !0, t.optimizedBinaryString, t.base64).then((function(e) {
								var r = new s(t);
								return r.load(e), r
							})).then((function(e) {
								var r = [i.Promise.resolve(e)],
									n = e.files;
								if (t.checkCRC32)
									for (var a = 0; a < n.length; a++) r.push(l(n[a]));
								return i.Promise.all(r)
							})).then((function(e) {
								for (var i = e.shift(), a = i.files, s = 0; s < a.length; s++) {
									var o = a[s],
										u = o.fileNameStr,
										l = n.resolve(o.fileNameStr);
									r.file(l, o.decompressed, {
										binary: !0,
										optimizedBinaryString: !0,
										date: o.date,
										dir: o.dir,
										comment: o.fileCommentStr.length ? o.fileCommentStr : null,
										unixPermissions: o.unixPermissions,
										dosPermissions: o.dosPermissions,
										createFolders: t.createFolders
									}), o.dir || (r.file(l).unsafeOriginalName = u)
								}
								return i.zipComment.length && (r.comment = i.zipComment), r
							}))
						}
					}, {
						"./external": 6,
						"./nodejsUtils": 14,
						"./stream/Crc32Probe": 25,
						"./utf8": 31,
						"./utils": 32,
						"./zipEntries": 33
					}],
					12: [function(e, t, r) {
						"use strict";
						var n = e("../utils"),
							i = e("../stream/GenericWorker");

						function a(e, t) {
							i.call(this, "Nodejs stream input adapter for " + e), this._upstreamEnded = !1, this._bindStream(t)
						}
						n.inherits(a, i), a.prototype._bindStream = function(e) {
							var t = this;
							(this._stream = e).pause(), e.on("data", (function(e) {
								t.push({
									data: e,
									meta: {
										percent: 0
									}
								})
							})).on("error", (function(e) {
								t.isPaused ? this.generatedError = e : t.error(e)
							})).on("end", (function() {
								t.isPaused ? t._upstreamEnded = !0 : t.end()
							}))
						}, a.prototype.pause = function() {
							return !!i.prototype.pause.call(this) && (this._stream.pause(), !0)
						}, a.prototype.resume = function() {
							return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), !0)
						}, t.exports = a
					}, {
						"../stream/GenericWorker": 28,
						"../utils": 32
					}],
					13: [function(e, t, r) {
						"use strict";
						var n = e("readable-stream").Readable;

						function i(e, t, r) {
							n.call(this, t), this._helper = e;
							var i = this;
							e.on("data", (function(e, t) {
								i.push(e) || i._helper.pause(), r && r(t)
							})).on("error", (function(e) {
								i.emit("error", e)
							})).on("end", (function() {
								i.push(null)
							}))
						}
						e("../utils").inherits(i, n), i.prototype._read = function() {
							this._helper.resume()
						}, t.exports = i
					}, {
						"../utils": 32,
						"readable-stream": 16
					}],
					14: [function(e, t, r) {
						"use strict";
						t.exports = {
							isNode: "undefined" != typeof Buffer,
							newBufferFrom: function(e, t) {
								if (Buffer.from && Buffer.from !== Uint8Array.from) return Buffer.from(e, t);
								if ("number" == typeof e) throw new Error('The "data" argument must not be a number');
								return new Buffer(e, t)
							},
							allocBuffer: function(e) {
								if (Buffer.alloc) return Buffer.alloc(e);
								var t = new Buffer(e);
								return t.fill(0), t
							},
							isBuffer: function(e) {
								return Buffer.isBuffer(e)
							},
							isStream: function(e) {
								return e && "function" == typeof e.on && "function" == typeof e.pause && "function" == typeof e.resume
							}
						}
					}, {}],
					15: [function(e, t, r) {
						"use strict";

						function n(e, t, r) {
							var n, i = a.getTypeOf(t),
								o = a.extend(r || {}, u);
							o.date = o.date || new Date, null !== o.compression && (o.compression = o.compression.toUpperCase()), "string" == typeof o.unixPermissions && (o.unixPermissions = parseInt(o.unixPermissions, 8)), o.unixPermissions && 16384 & o.unixPermissions && (o.dir = !0), o.dosPermissions && 16 & o.dosPermissions && (o.dir = !0), o.dir && (e = m(e)), o.createFolders && (n = p(e)) && _.call(this, n, !0);
							var h = "string" === i && !1 === o.binary && !1 === o.base64;
							r && void 0 !== r.binary || (o.binary = !h), (t instanceof l && 0 === t.uncompressedSize || o.dir || !t || 0 === t.length) && (o.base64 = !1, o.binary = !0, t = "", o.compression = "STORE", i = "string");
							var g;
							g = t instanceof l || t instanceof s ? t : d.isNode && d.isStream(t) ? new f(e, t) : a.prepareContent(e, t, o.binary, o.optimizedBinaryString, o.base64);
							var b = new c(e, g, o);
							this.files[e] = b
						}
						var i = e("./utf8"),
							a = e("./utils"),
							s = e("./stream/GenericWorker"),
							o = e("./stream/StreamHelper"),
							u = e("./defaults"),
							l = e("./compressedObject"),
							c = e("./zipObject"),
							h = e("./generate"),
							d = e("./nodejsUtils"),
							f = e("./nodejs/NodejsStreamInputAdapter"),
							p = function(e) {
								"/" === e.slice(-1) && (e = e.substring(0, e.length - 1));
								var t = e.lastIndexOf("/");
								return 0 < t ? e.substring(0, t) : ""
							},
							m = function(e) {
								return "/" !== e.slice(-1) && (e += "/"), e
							},
							_ = function(e, t) {
								return t = void 0 !== t ? t : u.createFolders, e = m(e), this.files[e] || n.call(this, e, null, {
									dir: !0,
									createFolders: t
								}), this.files[e]
							};

						function g(e) {
							return "[object RegExp]" === Object.prototype.toString.call(e)
						}
						var b = {
							load: function() {
								throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")
							},
							forEach: function(e) {
								var t, r, n;
								for (t in this.files) n = this.files[t], (r = t.slice(this.root.length, t.length)) && t.slice(0, this.root.length) === this.root && e(r, n)
							},
							filter: function(e) {
								var t = [];
								return this.forEach((function(r, n) {
									e(r, n) && t.push(n)
								})), t
							},
							file: function(e, t, r) {
								if (1 !== arguments.length) return e = this.root + e, n.call(this, e, t, r), this;
								if (g(e)) {
									var i = e;
									return this.filter((function(e, t) {
										return !t.dir && i.test(e)
									}))
								}
								var a = this.files[this.root + e];
								return a && !a.dir ? a : null
							},
							folder: function(e) {
								if (!e) return this;
								if (g(e)) return this.filter((function(t, r) {
									return r.dir && e.test(t)
								}));
								var t = this.root + e,
									r = _.call(this, t),
									n = this.clone();
								return n.root = r.name, n
							},
							remove: function(e) {
								e = this.root + e;
								var t = this.files[e];
								if (t || ("/" !== e.slice(-1) && (e += "/"), t = this.files[e]), t && !t.dir) delete this.files[e];
								else
									for (var r = this.filter((function(t, r) {
											return r.name.slice(0, e.length) === e
										})), n = 0; n < r.length; n++) delete this.files[r[n].name];
								return this
							},
							generate: function(e) {
								throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")
							},
							generateInternalStream: function(e) {
								var t, r = {};
								try {
									if ((r = a.extend(e || {}, {
											streamFiles: !1,
											compression: "STORE",
											compressionOptions: null,
											type: "",
											platform: "DOS",
											comment: null,
											mimeType: "application/zip",
											encodeFileName: i.utf8encode
										})).type = r.type.toLowerCase(), r.compression = r.compression.toUpperCase(), "binarystring" === r.type && (r.type = "string"), !r.type) throw new Error("No output type specified.");
									a.checkSupport(r.type), "darwin" !== r.platform && "freebsd" !== r.platform && "linux" !== r.platform && "sunos" !== r.platform || (r.platform = "UNIX"), "win32" === r.platform && (r.platform = "DOS");
									var n = r.comment || this.comment || "";
									t = h.generateWorker(this, r, n)
								} catch (e) {
									(t = new s("error")).error(e)
								}
								return new o(t, r.type || "string", r.mimeType)
							},
							generateAsync: function(e, t) {
								return this.generateInternalStream(e).accumulate(t)
							},
							generateNodeStream: function(e, t) {
								return (e = e || {}).type || (e.type = "nodebuffer"), this.generateInternalStream(e).toNodejsStream(t)
							}
						};
						t.exports = b
					}, {
						"./compressedObject": 2,
						"./defaults": 5,
						"./generate": 9,
						"./nodejs/NodejsStreamInputAdapter": 12,
						"./nodejsUtils": 14,
						"./stream/GenericWorker": 28,
						"./stream/StreamHelper": 29,
						"./utf8": 31,
						"./utils": 32,
						"./zipObject": 35
					}],
					16: [function(e, t, r) {
						t.exports = e("stream")
					}, {
						stream: void 0
					}],
					17: [function(e, t, r) {
						"use strict";
						var n = e("./DataReader");

						function i(e) {
							n.call(this, e);
							for (var t = 0; t < this.data.length; t++) e[t] = 255 & e[t]
						}
						e("../utils").inherits(i, n), i.prototype.byteAt = function(e) {
							return this.data[this.zero + e]
						}, i.prototype.lastIndexOfSignature = function(e) {
							for (var t = e.charCodeAt(0), r = e.charCodeAt(1), n = e.charCodeAt(2), i = e.charCodeAt(3), a = this.length - 4; 0 <= a; --a)
								if (this.data[a] === t && this.data[a + 1] === r && this.data[a + 2] === n && this.data[a + 3] === i) return a - this.zero;
							return -1
						}, i.prototype.readAndCheckSignature = function(e) {
							var t = e.charCodeAt(0),
								r = e.charCodeAt(1),
								n = e.charCodeAt(2),
								i = e.charCodeAt(3),
								a = this.readData(4);
							return t === a[0] && r === a[1] && n === a[2] && i === a[3]
						}, i.prototype.readData = function(e) {
							if (this.checkOffset(e), 0 === e) return [];
							var t = this.data.slice(this.zero + this.index, this.zero + this.index + e);
							return this.index += e, t
						}, t.exports = i
					}, {
						"../utils": 32,
						"./DataReader": 18
					}],
					18: [function(e, t, r) {
						"use strict";
						var n = e("../utils");

						function i(e) {
							this.data = e, this.length = e.length, this.index = 0, this.zero = 0
						}
						i.prototype = {
							checkOffset: function(e) {
								this.checkIndex(this.index + e)
							},
							checkIndex: function(e) {
								if (this.length < this.zero + e || e < 0) throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e + "). Corrupted zip ?")
							},
							setIndex: function(e) {
								this.checkIndex(e), this.index = e
							},
							skip: function(e) {
								this.setIndex(this.index + e)
							},
							byteAt: function(e) {},
							readInt: function(e) {
								var t, r = 0;
								for (this.checkOffset(e), t = this.index + e - 1; t >= this.index; t--) r = (r << 8) + this.byteAt(t);
								return this.index += e, r
							},
							readString: function(e) {
								return n.transformTo("string", this.readData(e))
							},
							readData: function(e) {},
							lastIndexOfSignature: function(e) {},
							readAndCheckSignature: function(e) {},
							readDate: function() {
								var e = this.readInt(4);
								return new Date(Date.UTC(1980 + (e >> 25 & 127), (e >> 21 & 15) - 1, e >> 16 & 31, e >> 11 & 31, e >> 5 & 63, (31 & e) << 1))
							}
						}, t.exports = i
					}, {
						"../utils": 32
					}],
					19: [function(e, t, r) {
						"use strict";
						var n = e("./Uint8ArrayReader");

						function i(e) {
							n.call(this, e)
						}
						e("../utils").inherits(i, n), i.prototype.readData = function(e) {
							this.checkOffset(e);
							var t = this.data.slice(this.zero + this.index, this.zero + this.index + e);
							return this.index += e, t
						}, t.exports = i
					}, {
						"../utils": 32,
						"./Uint8ArrayReader": 21
					}],
					20: [function(e, t, r) {
						"use strict";
						var n = e("./DataReader");

						function i(e) {
							n.call(this, e)
						}
						e("../utils").inherits(i, n), i.prototype.byteAt = function(e) {
							return this.data.charCodeAt(this.zero + e)
						}, i.prototype.lastIndexOfSignature = function(e) {
							return this.data.lastIndexOf(e) - this.zero
						}, i.prototype.readAndCheckSignature = function(e) {
							return e === this.readData(4)
						}, i.prototype.readData = function(e) {
							this.checkOffset(e);
							var t = this.data.slice(this.zero + this.index, this.zero + this.index + e);
							return this.index += e, t
						}, t.exports = i
					}, {
						"../utils": 32,
						"./DataReader": 18
					}],
					21: [function(e, t, r) {
						"use strict";
						var n = e("./ArrayReader");

						function i(e) {
							n.call(this, e)
						}
						e("../utils").inherits(i, n), i.prototype.readData = function(e) {
							if (this.checkOffset(e), 0 === e) return new Uint8Array(0);
							var t = this.data.subarray(this.zero + this.index, this.zero + this.index + e);
							return this.index += e, t
						}, t.exports = i
					}, {
						"../utils": 32,
						"./ArrayReader": 17
					}],
					22: [function(e, t, r) {
						"use strict";
						var n = e("../utils"),
							i = e("../support"),
							a = e("./ArrayReader"),
							s = e("./StringReader"),
							o = e("./NodeBufferReader"),
							u = e("./Uint8ArrayReader");
						t.exports = function(e) {
							var t = n.getTypeOf(e);
							return n.checkSupport(t), "string" !== t || i.uint8array ? "nodebuffer" === t ? new o(e) : i.uint8array ? new u(n.transformTo("uint8array", e)) : new a(n.transformTo("array", e)) : new s(e)
						}
					}, {
						"../support": 30,
						"../utils": 32,
						"./ArrayReader": 17,
						"./NodeBufferReader": 19,
						"./StringReader": 20,
						"./Uint8ArrayReader": 21
					}],
					23: [function(e, t, r) {
						"use strict";
						r.LOCAL_FILE_HEADER = "PK", r.CENTRAL_FILE_HEADER = "PK", r.CENTRAL_DIRECTORY_END = "PK", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK", r.ZIP64_CENTRAL_DIRECTORY_END = "PK", r.DATA_DESCRIPTOR = "PK\b"
					}, {}],
					24: [function(e, t, r) {
						"use strict";
						var n = e("./GenericWorker"),
							i = e("../utils");

						function a(e) {
							n.call(this, "ConvertWorker to " + e), this.destType = e
						}
						i.inherits(a, n), a.prototype.processChunk = function(e) {
							this.push({
								data: i.transformTo(this.destType, e.data),
								meta: e.meta
							})
						}, t.exports = a
					}, {
						"../utils": 32,
						"./GenericWorker": 28
					}],
					25: [function(e, t, r) {
						"use strict";
						var n = e("./GenericWorker"),
							i = e("../crc32");

						function a() {
							n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0)
						}
						e("../utils").inherits(a, n), a.prototype.processChunk = function(e) {
							this.streamInfo.crc32 = i(e.data, this.streamInfo.crc32 || 0), this.push(e)
						}, t.exports = a
					}, {
						"../crc32": 4,
						"../utils": 32,
						"./GenericWorker": 28
					}],
					26: [function(e, t, r) {
						"use strict";
						var n = e("../utils"),
							i = e("./GenericWorker");

						function a(e) {
							i.call(this, "DataLengthProbe for " + e), this.propName = e, this.withStreamInfo(e, 0)
						}
						n.inherits(a, i), a.prototype.processChunk = function(e) {
							if (e) {
								var t = this.streamInfo[this.propName] || 0;
								this.streamInfo[this.propName] = t + e.data.length
							}
							i.prototype.processChunk.call(this, e)
						}, t.exports = a
					}, {
						"../utils": 32,
						"./GenericWorker": 28
					}],
					27: [function(e, t, r) {
						"use strict";
						var n = e("../utils"),
							i = e("./GenericWorker");

						function a(e) {
							i.call(this, "DataWorker");
							var t = this;
							this.dataIsReady = !1, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = !1, e.then((function(e) {
								t.dataIsReady = !0, t.data = e, t.max = e && e.length || 0, t.type = n.getTypeOf(e), t.isPaused || t._tickAndRepeat()
							}), (function(e) {
								t.error(e)
							}))
						}
						n.inherits(a, i), a.prototype.cleanUp = function() {
							i.prototype.cleanUp.call(this), this.data = null
						}, a.prototype.resume = function() {
							return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = !0, n.delay(this._tickAndRepeat, [], this)), !0)
						}, a.prototype._tickAndRepeat = function() {
							this._tickScheduled = !1, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = !0))
						}, a.prototype._tick = function() {
							if (this.isPaused || this.isFinished) return !1;
							var e = null,
								t = Math.min(this.max, this.index + 16384);
							if (this.index >= this.max) return this.end();
							switch (this.type) {
								case "string":
									e = this.data.substring(this.index, t);
									break;
								case "uint8array":
									e = this.data.subarray(this.index, t);
									break;
								case "array":
								case "nodebuffer":
									e = this.data.slice(this.index, t)
							}
							return this.index = t, this.push({
								data: e,
								meta: {
									percent: this.max ? this.index / this.max * 100 : 0
								}
							})
						}, t.exports = a
					}, {
						"../utils": 32,
						"./GenericWorker": 28
					}],
					28: [function(e, t, r) {
						"use strict";

						function n(e) {
							this.name = e || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = !0, this.isFinished = !1, this.isLocked = !1, this._listeners = {
								data: [],
								end: [],
								error: []
							}, this.previous = null
						}
						n.prototype = {
							push: function(e) {
								this.emit("data", e)
							},
							end: function() {
								if (this.isFinished) return !1;
								this.flush();
								try {
									this.emit("end"), this.cleanUp(), this.isFinished = !0
								} catch (e) {
									this.emit("error", e)
								}
								return !0
							},
							error: function(e) {
								return !this.isFinished && (this.isPaused ? this.generatedError = e : (this.isFinished = !0, this.emit("error", e), this.previous && this.previous.error(e), this.cleanUp()), !0)
							},
							on: function(e, t) {
								return this._listeners[e].push(t), this
							},
							cleanUp: function() {
								this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []
							},
							emit: function(e, t) {
								if (this._listeners[e])
									for (var r = 0; r < this._listeners[e].length; r++) this._listeners[e][r].call(this, t)
							},
							pipe: function(e) {
								return e.registerPrevious(this)
							},
							registerPrevious: function(e) {
								if (this.isLocked) throw new Error("The stream '" + this + "' has already been used.");
								this.streamInfo = e.streamInfo, this.mergeStreamInfo(), this.previous = e;
								var t = this;
								return e.on("data", (function(e) {
									t.processChunk(e)
								})), e.on("end", (function() {
									t.end()
								})), e.on("error", (function(e) {
									t.error(e)
								})), this
							},
							pause: function() {
								return !this.isPaused && !this.isFinished && (this.isPaused = !0, this.previous && this.previous.pause(), !0)
							},
							resume: function() {
								if (!this.isPaused || this.isFinished) return !1;
								var e = this.isPaused = !1;
								return this.generatedError && (this.error(this.generatedError), e = !0), this.previous && this.previous.resume(), !e
							},
							flush: function() {},
							processChunk: function(e) {
								this.push(e)
							},
							withStreamInfo: function(e, t) {
								return this.extraStreamInfo[e] = t, this.mergeStreamInfo(), this
							},
							mergeStreamInfo: function() {
								for (var e in this.extraStreamInfo) this.extraStreamInfo.hasOwnProperty(e) && (this.streamInfo[e] = this.extraStreamInfo[e])
							},
							lock: function() {
								if (this.isLocked) throw new Error("The stream '" + this + "' has already been used.");
								this.isLocked = !0, this.previous && this.previous.lock()
							},
							toString: function() {
								var e = "Worker " + this.name;
								return this.previous ? this.previous + " -> " + e : e
							}
						}, t.exports = n
					}, {}],
					29: [function(e, t, r) {
						"use strict";
						var n = e("../utils"),
							i = e("./ConvertWorker"),
							a = e("./GenericWorker"),
							s = e("../base64"),
							o = e("../support"),
							u = e("../external"),
							l = null;
						if (o.nodestream) try {
							l = e("../nodejs/NodejsStreamOutputAdapter")
						} catch (e) {}

						function c(e, t, r) {
							var s = t;
							switch (t) {
								case "blob":
								case "arraybuffer":
									s = "uint8array";
									break;
								case "base64":
									s = "string"
							}
							try {
								this._internalType = s, this._outputType = t, this._mimeType = r, n.checkSupport(s), this._worker = e.pipe(new i(s)), e.lock()
							} catch (e) {
								this._worker = new a("error"), this._worker.error(e)
							}
						}
						c.prototype = {
							accumulate: function(e) {
								return function(e, t) {
									return new u.Promise((function(r, i) {
										var a = [],
											o = e._internalType,
											u = e._outputType,
											l = e._mimeType;
										e.on("data", (function(e, r) {
											a.push(e), t && t(r)
										})).on("error", (function(e) {
											a = [], i(e)
										})).on("end", (function() {
											try {
												var e = function(e, t, r) {
													switch (e) {
														case "blob":
															return n.newBlob(n.transformTo("arraybuffer", t), r);
														case "base64":
															return s.encode(t);
														default:
															return n.transformTo(e, t)
													}
												}(u, function(e, t) {
													var r, n = 0,
														i = null,
														a = 0;
													for (r = 0; r < t.length; r++) a += t[r].length;
													switch (e) {
														case "string":
															return t.join("");
														case "array":
															return Array.prototype.concat.apply([], t);
														case "uint8array":
															for (i = new Uint8Array(a), r = 0; r < t.length; r++) i.set(t[r], n), n += t[r].length;
															return i;
														case "nodebuffer":
															return Buffer.concat(t);
														default:
															throw new Error("concat : unsupported type '" + e + "'")
													}
												}(o, a), l);
												r(e)
											} catch (e) {
												i(e)
											}
											a = []
										})).resume()
									}))
								}(this, e)
							},
							on: function(e, t) {
								var r = this;
								return "data" === e ? this._worker.on(e, (function(e) {
									t.call(r, e.data, e.meta)
								})) : this._worker.on(e, (function() {
									n.delay(t, arguments, r)
								})), this
							},
							resume: function() {
								return n.delay(this._worker.resume, [], this._worker), this
							},
							pause: function() {
								return this._worker.pause(), this
							},
							toNodejsStream: function(e) {
								if (n.checkSupport("nodestream"), "nodebuffer" !== this._outputType) throw new Error(this._outputType + " is not supported by this method");
								return new l(this, {
									objectMode: "nodebuffer" !== this._outputType
								}, e)
							}
						}, t.exports = c
					}, {
						"../base64": 1,
						"../external": 6,
						"../nodejs/NodejsStreamOutputAdapter": 13,
						"../support": 30,
						"../utils": 32,
						"./ConvertWorker": 24,
						"./GenericWorker": 28
					}],
					30: [function(e, t, r) {
						"use strict";
						if (r.base64 = !0, r.array = !0, r.string = !0, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) r.blob = !1;
						else {
							var n = new ArrayBuffer(0);
							try {
								r.blob = 0 === new Blob([n], {
									type: "application/zip"
								}).size
							} catch (e) {
								try {
									var i = new(self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder);
									i.append(n), r.blob = 0 === i.getBlob("application/zip").size
								} catch (e) {
									r.blob = !1
								}
							}
						}
						try {
							r.nodestream = !!e("readable-stream").Readable
						} catch (e) {
							r.nodestream = !1
						}
					}, {
						"readable-stream": 16
					}],
					31: [function(e, t, r) {
						"use strict";
						for (var n = e("./utils"), i = e("./support"), a = e("./nodejsUtils"), s = e("./stream/GenericWorker"), o = new Array(256), u = 0; u < 256; u++) o[u] = 252 <= u ? 6 : 248 <= u ? 5 : 240 <= u ? 4 : 224 <= u ? 3 : 192 <= u ? 2 : 1;

						function l() {
							s.call(this, "utf-8 decode"), this.leftOver = null
						}

						function c() {
							s.call(this, "utf-8 encode")
						}
						o[254] = o[254] = 1, r.utf8encode = function(e) {
							return i.nodebuffer ? a.newBufferFrom(e, "utf-8") : function(e) {
								var t, r, n, a, s, o = e.length,
									u = 0;
								for (a = 0; a < o; a++) 55296 == (64512 & (r = e.charCodeAt(a))) && a + 1 < o && 56320 == (64512 & (n = e.charCodeAt(a + 1))) && (r = 65536 + (r - 55296 << 10) + (n - 56320), a++), u += r < 128 ? 1 : r < 2048 ? 2 : r < 65536 ? 3 : 4;
								for (t = i.uint8array ? new Uint8Array(u) : new Array(u), a = s = 0; s < u; a++) 55296 == (64512 & (r = e.charCodeAt(a))) && a + 1 < o && 56320 == (64512 & (n = e.charCodeAt(a + 1))) && (r = 65536 + (r - 55296 << 10) + (n - 56320), a++), r < 128 ? t[s++] = r : (r < 2048 ? t[s++] = 192 | r >>> 6 : (r < 65536 ? t[s++] = 224 | r >>> 12 : (t[s++] = 240 | r >>> 18, t[s++] = 128 | r >>> 12 & 63), t[s++] = 128 | r >>> 6 & 63), t[s++] = 128 | 63 & r);
								return t
							}(e)
						}, r.utf8decode = function(e) {
							return i.nodebuffer ? n.transformTo("nodebuffer", e).toString("utf-8") : function(e) {
								var t, r, i, a, s = e.length,
									u = new Array(2 * s);
								for (t = r = 0; t < s;)
									if ((i = e[t++]) < 128) u[r++] = i;
									else if (4 < (a = o[i])) u[r++] = 65533, t += a - 1;
								else {
									for (i &= 2 === a ? 31 : 3 === a ? 15 : 7; 1 < a && t < s;) i = i << 6 | 63 & e[t++], a--;
									1 < a ? u[r++] = 65533 : i < 65536 ? u[r++] = i : (i -= 65536, u[r++] = 55296 | i >> 10 & 1023, u[r++] = 56320 | 1023 & i)
								}
								return u.length !== r && (u.subarray ? u = u.subarray(0, r) : u.length = r), n.applyFromCharCode(u)
							}(e = n.transformTo(i.uint8array ? "uint8array" : "array", e))
						}, n.inherits(l, s), l.prototype.processChunk = function(e) {
							var t = n.transformTo(i.uint8array ? "uint8array" : "array", e.data);
							if (this.leftOver && this.leftOver.length) {
								if (i.uint8array) {
									var a = t;
									(t = new Uint8Array(a.length + this.leftOver.length)).set(this.leftOver, 0), t.set(a, this.leftOver.length)
								} else t = this.leftOver.concat(t);
								this.leftOver = null
							}
							var s = function(e, t) {
									var r;
									for ((t = t || e.length) > e.length && (t = e.length), r = t - 1; 0 <= r && 128 == (192 & e[r]);) r--;
									return r < 0 || 0 === r ? t : r + o[e[r]] > t ? r : t
								}(t),
								u = t;
							s !== t.length && (i.uint8array ? (u = t.subarray(0, s), this.leftOver = t.subarray(s, t.length)) : (u = t.slice(0, s), this.leftOver = t.slice(s, t.length))), this.push({
								data: r.utf8decode(u),
								meta: e.meta
							})
						}, l.prototype.flush = function() {
							this.leftOver && this.leftOver.length && (this.push({
								data: r.utf8decode(this.leftOver),
								meta: {}
							}), this.leftOver = null)
						}, r.Utf8DecodeWorker = l, n.inherits(c, s), c.prototype.processChunk = function(e) {
							this.push({
								data: r.utf8encode(e.data),
								meta: e.meta
							})
						}, r.Utf8EncodeWorker = c
					}, {
						"./nodejsUtils": 14,
						"./stream/GenericWorker": 28,
						"./support": 30,
						"./utils": 32
					}],
					32: [function(e, t, r) {
						"use strict";
						var n = e("./support"),
							i = e("./base64"),
							a = e("./nodejsUtils"),
							s = e("set-immediate-shim"),
							o = e("./external");

						function u(e) {
							return e
						}

						function l(e, t) {
							for (var r = 0; r < e.length; ++r) t[r] = 255 & e.charCodeAt(r);
							return t
						}
						r.newBlob = function(e, t) {
							r.checkSupport("blob");
							try {
								return new Blob([e], {
									type: t
								})
							} catch (r) {
								try {
									var n = new(self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder);
									return n.append(e), n.getBlob(t)
								} catch (e) {
									throw new Error("Bug : can't construct the Blob.")
								}
							}
						};
						var c = {
							stringifyByChunk: function(e, t, r) {
								var n = [],
									i = 0,
									a = e.length;
								if (a <= r) return String.fromCharCode.apply(null, e);
								for (; i < a;) "array" === t || "nodebuffer" === t ? n.push(String.fromCharCode.apply(null, e.slice(i, Math.min(i + r, a)))) : n.push(String.fromCharCode.apply(null, e.subarray(i, Math.min(i + r, a)))), i += r;
								return n.join("")
							},
							stringifyByChar: function(e) {
								for (var t = "", r = 0; r < e.length; r++) t += String.fromCharCode(e[r]);
								return t
							},
							applyCanBeUsed: {
								uint8array: function() {
									try {
										return n.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length
									} catch (e) {
										return !1
									}
								}(),
								nodebuffer: function() {
									try {
										return n.nodebuffer && 1 === String.fromCharCode.apply(null, a.allocBuffer(1)).length
									} catch (e) {
										return !1
									}
								}()
							}
						};

						function h(e) {
							var t = 65536,
								n = r.getTypeOf(e),
								i = !0;
							if ("uint8array" === n ? i = c.applyCanBeUsed.uint8array : "nodebuffer" === n && (i = c.applyCanBeUsed.nodebuffer), i)
								for (; 1 < t;) try {
									return c.stringifyByChunk(e, n, t)
								} catch (e) {
									t = Math.floor(t / 2)
								}
							return c.stringifyByChar(e)
						}

						function d(e, t) {
							for (var r = 0; r < e.length; r++) t[r] = e[r];
							return t
						}
						r.applyFromCharCode = h;
						var f = {};
						f.string = {
							string: u,
							array: function(e) {
								return l(e, new Array(e.length))
							},
							arraybuffer: function(e) {
								return f.string.uint8array(e).buffer
							},
							uint8array: function(e) {
								return l(e, new Uint8Array(e.length))
							},
							nodebuffer: function(e) {
								return l(e, a.allocBuffer(e.length))
							}
						}, f.array = {
							string: h,
							array: u,
							arraybuffer: function(e) {
								return new Uint8Array(e).buffer
							},
							uint8array: function(e) {
								return new Uint8Array(e)
							},
							nodebuffer: function(e) {
								return a.newBufferFrom(e)
							}
						}, f.arraybuffer = {
							string: function(e) {
								return h(new Uint8Array(e))
							},
							array: function(e) {
								return d(new Uint8Array(e), new Array(e.byteLength))
							},
							arraybuffer: u,
							uint8array: function(e) {
								return new Uint8Array(e)
							},
							nodebuffer: function(e) {
								return a.newBufferFrom(new Uint8Array(e))
							}
						}, f.uint8array = {
							string: h,
							array: function(e) {
								return d(e, new Array(e.length))
							},
							arraybuffer: function(e) {
								return e.buffer
							},
							uint8array: u,
							nodebuffer: function(e) {
								return a.newBufferFrom(e)
							}
						}, f.nodebuffer = {
							string: h,
							array: function(e) {
								return d(e, new Array(e.length))
							},
							arraybuffer: function(e) {
								return f.nodebuffer.uint8array(e).buffer
							},
							uint8array: function(e) {
								return d(e, new Uint8Array(e.length))
							},
							nodebuffer: u
						}, r.transformTo = function(e, t) {
							if (t = t || "", !e) return t;
							r.checkSupport(e);
							var n = r.getTypeOf(t);
							return f[n][e](t)
						}, r.resolve = function(e) {
							for (var t = e.split("/"), r = [], n = 0; n < t.length; n++) {
								var i = t[n];
								"." === i || "" === i && 0 !== n && n !== t.length - 1 || (".." === i ? r.pop() : r.push(i))
							}
							return r.join("/")
						}, r.getTypeOf = function(e) {
							return "string" == typeof e ? "string" : "[object Array]" === Object.prototype.toString.call(e) ? "array" : n.nodebuffer && a.isBuffer(e) ? "nodebuffer" : n.uint8array && e instanceof Uint8Array ? "uint8array" : n.arraybuffer && e instanceof ArrayBuffer ? "arraybuffer" : void 0
						}, r.checkSupport = function(e) {
							if (!n[e.toLowerCase()]) throw new Error(e + " is not supported by this platform")
						}, r.MAX_VALUE_16BITS = 65535, r.MAX_VALUE_32BITS = -1, r.pretty = function(e) {
							var t, r, n = "";
							for (r = 0; r < (e || "").length; r++) n += "\\x" + ((t = e.charCodeAt(r)) < 16 ? "0" : "") + t.toString(16).toUpperCase();
							return n
						}, r.delay = function(e, t, r) {
							s((function() {
								e.apply(r || null, t || [])
							}))
						}, r.inherits = function(e, t) {
							function r() {}
							r.prototype = t.prototype, e.prototype = new r
						}, r.extend = function() {
							var e, t, r = {};
							for (e = 0; e < arguments.length; e++)
								for (t in arguments[e]) arguments[e].hasOwnProperty(t) && void 0 === r[t] && (r[t] = arguments[e][t]);
							return r
						}, r.prepareContent = function(e, t, a, s, u) {
							return o.Promise.resolve(t).then((function(e) {
								return n.blob && (e instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(e))) && "undefined" != typeof FileReader ? new o.Promise((function(t, r) {
									var n = new FileReader;
									n.onload = function(e) {
										t(e.target.result)
									}, n.onerror = function(e) {
										r(e.target.error)
									}, n.readAsArrayBuffer(e)
								})) : e
							})).then((function(t) {
								var c = r.getTypeOf(t);
								return c ? ("arraybuffer" === c ? t = r.transformTo("uint8array", t) : "string" === c && (u ? t = i.decode(t) : a && !0 !== s && (t = function(e) {
									return l(e, n.uint8array ? new Uint8Array(e.length) : new Array(e.length))
								}(t))), t) : o.Promise.reject(new Error("Can't read the data of '" + e + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))
							}))
						}
					}, {
						"./base64": 1,
						"./external": 6,
						"./nodejsUtils": 14,
						"./support": 30,
						"set-immediate-shim": 54
					}],
					33: [function(e, t, r) {
						"use strict";
						var n = e("./reader/readerFor"),
							i = e("./utils"),
							a = e("./signature"),
							s = e("./zipEntry"),
							o = (e("./utf8"), e("./support"));

						function u(e) {
							this.files = [], this.loadOptions = e
						}
						u.prototype = {
							checkSignature: function(e) {
								if (!this.reader.readAndCheckSignature(e)) {
									this.reader.index -= 4;
									var t = this.reader.readString(4);
									throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t) + ", expected " + i.pretty(e) + ")")
								}
							},
							isSignature: function(e, t) {
								var r = this.reader.index;
								this.reader.setIndex(e);
								var n = this.reader.readString(4) === t;
								return this.reader.setIndex(r), n
							},
							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);
								var e = this.reader.readData(this.zipCommentLength),
									t = o.uint8array ? "uint8array" : "array",
									r = i.transformTo(t, e);
								this.zipComment = this.loadOptions.decodeFileName(r)
							},
							readBlockZip64EndOfCentral: function() {
								this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), 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 e, t, r, n = this.zip64EndOfCentralSize - 44; 0 < n;) e = this.reader.readInt(2), t = this.reader.readInt(4), r = this.reader.readData(t), this.zip64ExtensibleData[e] = {
									id: e,
									length: t,
									value: r
								}
							},
							readBlockZip64EndOfCentralLocator: function() {
								if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) throw new Error("Multi-volumes zip are not supported")
							},
							readLocalFiles: function() {
								var e, t;
								for (e = 0; e < this.files.length; e++) t = this.files[e], this.reader.setIndex(t.localHeaderOffset), this.checkSignature(a.LOCAL_FILE_HEADER), t.readLocalPart(this.reader), t.handleUTF8(), t.processAttributes()
							},
							readCentralDir: function() {
								var e;
								for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(a.CENTRAL_FILE_HEADER);)(e = new s({
									zip64: this.zip64
								}, this.loadOptions)).readCentralPart(this.reader), this.files.push(e);
								if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length)
							},
							readEndOfCentral: function() {
								var e = this.reader.lastIndexOfSignature(a.CENTRAL_DIRECTORY_END);
								if (e < 0) throw this.isSignature(0, a.LOCAL_FILE_HEADER) ? new Error("Corrupted zip: can't find end of central directory") : new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");
								this.reader.setIndex(e);
								var t = e;
								if (this.checkSignature(a.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) {
									if (this.zip64 = !0, (e = this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");
									if (this.reader.setIndex(e), this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, a.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");
									this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral()
								}
								var r = this.centralDirOffset + this.centralDirSize;
								this.zip64 && (r += 20, r += 12 + this.zip64EndOfCentralSize);
								var n = t - r;
								if (0 < n) this.isSignature(t, a.CENTRAL_FILE_HEADER) || (this.reader.zero = n);
								else if (n < 0) throw new Error("Corrupted zip: missing " + Math.abs(n) + " bytes.")
							},
							prepareReader: function(e) {
								this.reader = n(e)
							},
							load: function(e) {
								this.prepareReader(e), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles()
							}
						}, t.exports = u
					}, {
						"./reader/readerFor": 22,
						"./signature": 23,
						"./support": 30,
						"./utf8": 31,
						"./utils": 32,
						"./zipEntry": 34
					}],
					34: [function(e, t, r) {
						"use strict";
						var n = e("./reader/readerFor"),
							i = e("./utils"),
							a = e("./compressedObject"),
							s = e("./crc32"),
							o = e("./utf8"),
							u = e("./compressions"),
							l = e("./support");

						function c(e, t) {
							this.options = e, this.loadOptions = t
						}
						c.prototype = {
							isEncrypted: function() {
								return 1 == (1 & this.bitFlag)
							},
							useUTF8: function() {
								return 2048 == (2048 & this.bitFlag)
							},
							readLocalPart: function(e) {
								var t, r;
								if (e.skip(22), this.fileNameLength = e.readInt(2), r = e.readInt(2), this.fileName = e.readData(this.fileNameLength), e.skip(r), -1 === this.compressedSize || -1 === this.uncompressedSize) throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");
								if (null === (t = function(e) {
										for (var t in u)
											if (u.hasOwnProperty(t) && u[t].magic === e) return u[t];
										return null
									}(this.compressionMethod))) throw new Error("Corrupted zip : compression " + i.pretty(this.compressionMethod) + " unknown (inner file : " + i.transformTo("string", this.fileName) + ")");
								this.decompressed = new a(this.compressedSize, this.uncompressedSize, this.crc32, t, e.readData(this.compressedSize))
							},
							readCentralPart: function(e) {
								this.versionMadeBy = e.readInt(2), e.skip(2), this.bitFlag = e.readInt(2), this.compressionMethod = e.readString(2), this.date = e.readDate(), this.crc32 = e.readInt(4), this.compressedSize = e.readInt(4), this.uncompressedSize = e.readInt(4);
								var t = e.readInt(2);
								if (this.extraFieldsLength = e.readInt(2), this.fileCommentLength = e.readInt(2), this.diskNumberStart = e.readInt(2), this.internalFileAttributes = e.readInt(2), this.externalFileAttributes = e.readInt(4), this.localHeaderOffset = e.readInt(4), this.isEncrypted()) throw new Error("Encrypted zip are not supported");
								e.skip(t), this.readExtraFields(e), this.parseZIP64ExtraField(e), this.fileComment = e.readData(this.fileCommentLength)
							},
							processAttributes: function() {
								this.unixPermissions = null, this.dosPermissions = null;
								var e = this.versionMadeBy >> 8;
								this.dir = !!(16 & this.externalFileAttributes), 0 == e && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = !0)
							},
							parseZIP64ExtraField: function(e) {
								if (this.extraFields[1]) {
									var t = n(this.extraFields[1].value);
									this.uncompressedSize === i.MAX_VALUE_32BITS && (this.uncompressedSize = t.readInt(8)), this.compressedSize === i.MAX_VALUE_32BITS && (this.compressedSize = t.readInt(8)), this.localHeaderOffset === i.MAX_VALUE_32BITS && (this.localHeaderOffset = t.readInt(8)), this.diskNumberStart === i.MAX_VALUE_32BITS && (this.diskNumberStart = t.readInt(4))
								}
							},
							readExtraFields: function(e) {
								var t, r, n, i = e.index + this.extraFieldsLength;
								for (this.extraFields || (this.extraFields = {}); e.index + 4 < i;) t = e.readInt(2), r = e.readInt(2), n = e.readData(r), this.extraFields[t] = {
									id: t,
									length: r,
									value: n
								};
								e.setIndex(i)
							},
							handleUTF8: function() {
								var e = l.uint8array ? "uint8array" : "array";
								if (this.useUTF8()) this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment);
								else {
									var t = this.findExtraFieldUnicodePath();
									if (null !== t) this.fileNameStr = t;
									else {
										var r = i.transformTo(e, this.fileName);
										this.fileNameStr = this.loadOptions.decodeFileName(r)
									}
									var n = this.findExtraFieldUnicodeComment();
									if (null !== n) this.fileCommentStr = n;
									else {
										var a = i.transformTo(e, this.fileComment);
										this.fileCommentStr = this.loadOptions.decodeFileName(a)
									}
								}
							},
							findExtraFieldUnicodePath: function() {
								var e = this.extraFields[28789];
								if (e) {
									var t = n(e.value);
									return 1 !== t.readInt(1) || s(this.fileName) !== t.readInt(4) ? null : o.utf8decode(t.readData(e.length - 5))
								}
								return null
							},
							findExtraFieldUnicodeComment: function() {
								var e = this.extraFields[25461];
								if (e) {
									var t = n(e.value);
									return 1 !== t.readInt(1) || s(this.fileComment) !== t.readInt(4) ? null : o.utf8decode(t.readData(e.length - 5))
								}
								return null
							}
						}, t.exports = c
					}, {
						"./compressedObject": 2,
						"./compressions": 3,
						"./crc32": 4,
						"./reader/readerFor": 22,
						"./support": 30,
						"./utf8": 31,
						"./utils": 32
					}],
					35: [function(e, t, r) {
						"use strict";

						function n(e, t, r) {
							this.name = e, this.dir = r.dir, this.date = r.date, this.comment = r.comment, this.unixPermissions = r.unixPermissions, this.dosPermissions = r.dosPermissions, this._data = t, this._dataBinary = r.binary, this.options = {
								compression: r.compression,
								compressionOptions: r.compressionOptions
							}
						}
						var i = e("./stream/StreamHelper"),
							a = e("./stream/DataWorker"),
							s = e("./utf8"),
							o = e("./compressedObject"),
							u = e("./stream/GenericWorker");
						n.prototype = {
							internalStream: function(e) {
								var t = null,
									r = "string";
								try {
									if (!e) throw new Error("No output type specified.");
									var n = "string" === (r = e.toLowerCase()) || "text" === r;
									"binarystring" !== r && "text" !== r || (r = "string"), t = this._decompressWorker();
									var a = !this._dataBinary;
									a && !n && (t = t.pipe(new s.Utf8EncodeWorker)), !a && n && (t = t.pipe(new s.Utf8DecodeWorker))
								} catch (e) {
									(t = new u("error")).error(e)
								}
								return new i(t, r, "")
							},
							async: function(e, t) {
								return this.internalStream(e).accumulate(t)
							},
							nodeStream: function(e, t) {
								return this.internalStream(e || "nodebuffer").toNodejsStream(t)
							},
							_compressWorker: function(e, t) {
								if (this._data instanceof o && this._data.compression.magic === e.magic) return this._data.getCompressedWorker();
								var r = this._decompressWorker();
								return this._dataBinary || (r = r.pipe(new s.Utf8EncodeWorker)), o.createWorkerFrom(r, e, t)
							},
							_decompressWorker: function() {
								return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof u ? this._data : new a(this._data)
							}
						};
						for (var l = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], c = function() {
								throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")
							}, h = 0; h < l.length; h++) n.prototype[l[h]] = c;
						t.exports = n
					}, {
						"./compressedObject": 2,
						"./stream/DataWorker": 27,
						"./stream/GenericWorker": 28,
						"./stream/StreamHelper": 29,
						"./utf8": 31
					}],
					36: [function(e, t, n) {
						(function(e) {
							"use strict";
							var r, n, i = e.MutationObserver || e.WebKitMutationObserver;
							if (i) {
								var a = 0,
									s = new i(c),
									o = e.document.createTextNode("");
								s.observe(o, {
									characterData: !0
								}), r = function() {
									o.data = a = ++a % 2
								}
							} else if (e.setImmediate || void 0 === e.MessageChannel) r = "document" in e && "onreadystatechange" in e.document.createElement("script") ? function() {
								var t = e.document.createElement("script");
								t.onreadystatechange = function() {
									c(), t.onreadystatechange = null, t.parentNode.removeChild(t), t = null
								}, e.document.documentElement.appendChild(t)
							} : function() {
								setTimeout(c, 0)
							};
							else {
								var u = new e.MessageChannel;
								u.port1.onmessage = c, r = function() {
									u.port2.postMessage(0)
								}
							}
							var l = [];

							function c() {
								var e, t;
								n = !0;
								for (var r = l.length; r;) {
									for (t = l, l = [], e = -1; ++e < r;) t[e]();
									r = l.length
								}
								n = !1
							}
							t.exports = function(e) {
								1 !== l.push(e) || n || r()
							}
						}).call(this, void 0 !== r.g ? r.g : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
					}, {}],
					37: [function(e, t, r) {
						"use strict";
						var n = e("immediate");

						function i() {}
						var a = {},
							s = ["REJECTED"],
							o = ["FULFILLED"],
							u = ["PENDING"];

						function l(e) {
							if ("function" != typeof e) throw new TypeError("resolver must be a function");
							this.state = u, this.queue = [], this.outcome = void 0, e !== i && f(this, e)
						}

						function c(e, t, r) {
							this.promise = e, "function" == typeof t && (this.onFulfilled = t, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r && (this.onRejected = r, this.callRejected = this.otherCallRejected)
						}

						function h(e, t, r) {
							n((function() {
								var n;
								try {
									n = t(r)
								} catch (n) {
									return a.reject(e, n)
								}
								n === e ? a.reject(e, new TypeError("Cannot resolve promise with itself")) : a.resolve(e, n)
							}))
						}

						function d(e) {
							var t = e && e.then;
							if (e && ("object" == typeof e || "function" == typeof e) && "function" == typeof t) return function() {
								t.apply(e, arguments)
							}
						}

						function f(e, t) {
							var r = !1;

							function n(t) {
								r || (r = !0, a.reject(e, t))
							}

							function i(t) {
								r || (r = !0, a.resolve(e, t))
							}
							var s = p((function() {
								t(i, n)
							}));
							"error" === s.status && n(s.value)
						}

						function p(e, t) {
							var r = {};
							try {
								r.value = e(t), r.status = "success"
							} catch (e) {
								r.status = "error", r.value = e
							}
							return r
						}(t.exports = l).prototype.finally = function(e) {
							if ("function" != typeof e) return this;
							var t = this.constructor;
							return this.then((function(r) {
								return t.resolve(e()).then((function() {
									return r
								}))
							}), (function(r) {
								return t.resolve(e()).then((function() {
									throw r
								}))
							}))
						}, l.prototype.catch = function(e) {
							return this.then(null, e)
						}, l.prototype.then = function(e, t) {
							if ("function" != typeof e && this.state === o || "function" != typeof t && this.state === s) return this;
							var r = new this.constructor(i);
							return this.state !== u ? h(r, this.state === o ? e : t, this.outcome) : this.queue.push(new c(r, e, t)), r
						}, c.prototype.callFulfilled = function(e) {
							a.resolve(this.promise, e)
						}, c.prototype.otherCallFulfilled = function(e) {
							h(this.promise, this.onFulfilled, e)
						}, c.prototype.callRejected = function(e) {
							a.reject(this.promise, e)
						}, c.prototype.otherCallRejected = function(e) {
							h(this.promise, this.onRejected, e)
						}, a.resolve = function(e, t) {
							var r = p(d, t);
							if ("error" === r.status) return a.reject(e, r.value);
							var n = r.value;
							if (n) f(e, n);
							else {
								e.state = o, e.outcome = t;
								for (var i = -1, s = e.queue.length; ++i < s;) e.queue[i].callFulfilled(t)
							}
							return e
						}, a.reject = function(e, t) {
							e.state = s, e.outcome = t;
							for (var r = -1, n = e.queue.length; ++r < n;) e.queue[r].callRejected(t);
							return e
						}, l.resolve = function(e) {
							return e instanceof this ? e : a.resolve(new this(i), e)
						}, l.reject = function(e) {
							var t = new this(i);
							return a.reject(t, e)
						}, l.all = function(e) {
							var t = this;
							if ("[object Array]" !== Object.prototype.toString.call(e)) return this.reject(new TypeError("must be an array"));
							var r = e.length,
								n = !1;
							if (!r) return this.resolve([]);
							for (var s = new Array(r), o = 0, u = -1, l = new this(i); ++u < r;) c(e[u], u);
							return l;

							function c(e, i) {
								t.resolve(e).then((function(e) {
									s[i] = e, ++o !== r || n || (n = !0, a.resolve(l, s))
								}), (function(e) {
									n || (n = !0, a.reject(l, e))
								}))
							}
						}, l.race = function(e) {
							if ("[object Array]" !== Object.prototype.toString.call(e)) return this.reject(new TypeError("must be an array"));
							var t = e.length,
								r = !1;
							if (!t) return this.resolve([]);
							for (var n, s = -1, o = new this(i); ++s < t;) n = e[s], this.resolve(n).then((function(e) {
								r || (r = !0, a.resolve(o, e))
							}), (function(e) {
								r || (r = !0, a.reject(o, e))
							}));
							return o
						}
					}, {
						immediate: 36
					}],
					38: [function(e, t, r) {
						"use strict";
						var n = {};
						(0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n
					}, {
						"./lib/deflate": 39,
						"./lib/inflate": 40,
						"./lib/utils/common": 41,
						"./lib/zlib/constants": 44
					}],
					39: [function(e, t, r) {
						"use strict";
						var n = e("./zlib/deflate"),
							i = e("./utils/common"),
							a = e("./utils/strings"),
							s = e("./zlib/messages"),
							o = e("./zlib/zstream"),
							u = Object.prototype.toString,
							l = 0,
							c = -1,
							h = 0,
							d = 8;

						function f(e) {
							if (!(this instanceof f)) return new f(e);
							this.options = i.assign({
								level: c,
								method: d,
								chunkSize: 16384,
								windowBits: 15,
								memLevel: 8,
								strategy: h,
								to: ""
							}, e || {});
							var t = this.options;
							t.raw && 0 < t.windowBits ? t.windowBits = -t.windowBits : t.gzip && 0 < t.windowBits && t.windowBits < 16 && (t.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new o, this.strm.avail_out = 0;
							var r = n.deflateInit2(this.strm, t.level, t.method, t.windowBits, t.memLevel, t.strategy);
							if (r !== l) throw new Error(s[r]);
							if (t.header && n.deflateSetHeader(this.strm, t.header), t.dictionary) {
								var p;
								if (p = "string" == typeof t.dictionary ? a.string2buf(t.dictionary) : "[object ArrayBuffer]" === u.call(t.dictionary) ? new Uint8Array(t.dictionary) : t.dictionary, (r = n.deflateSetDictionary(this.strm, p)) !== l) throw new Error(s[r]);
								this._dict_set = !0
							}
						}

						function p(e, t) {
							var r = new f(t);
							if (r.push(e, !0), r.err) throw r.msg || s[r.err];
							return r.result
						}
						f.prototype.push = function(e, t) {
							var r, s, o = this.strm,
								c = this.options.chunkSize;
							if (this.ended) return !1;
							s = t === ~~t ? t : !0 === t ? 4 : 0, "string" == typeof e ? o.input = a.string2buf(e) : "[object ArrayBuffer]" === u.call(e) ? o.input = new Uint8Array(e) : o.input = e, o.next_in = 0, o.avail_in = o.input.length;
							do {
								if (0 === o.avail_out && (o.output = new i.Buf8(c), o.next_out = 0, o.avail_out = c), 1 !== (r = n.deflate(o, s)) && r !== l) return this.onEnd(r), !(this.ended = !0);
								0 !== o.avail_out && (0 !== o.avail_in || 4 !== s && 2 !== s) || ("string" === this.options.to ? this.onData(a.buf2binstring(i.shrinkBuf(o.output, o.next_out))) : this.onData(i.shrinkBuf(o.output, o.next_out)))
							} while ((0 < o.avail_in || 0 === o.avail_out) && 1 !== r);
							return 4 === s ? (r = n.deflateEnd(this.strm), this.onEnd(r), this.ended = !0, r === l) : 2 !== s || (this.onEnd(l), !(o.avail_out = 0))
						}, f.prototype.onData = function(e) {
							this.chunks.push(e)
						}, f.prototype.onEnd = function(e) {
							e === l && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = i.flattenChunks(this.chunks)), this.chunks = [], this.err = e, this.msg = this.strm.msg
						}, r.Deflate = f, r.deflate = p, r.deflateRaw = function(e, t) {
							return (t = t || {}).raw = !0, p(e, t)
						}, r.gzip = function(e, t) {
							return (t = t || {}).gzip = !0, p(e, t)
						}
					}, {
						"./utils/common": 41,
						"./utils/strings": 42,
						"./zlib/deflate": 46,
						"./zlib/messages": 51,
						"./zlib/zstream": 53
					}],
					40: [function(e, t, r) {
						"use strict";
						var n = e("./zlib/inflate"),
							i = e("./utils/common"),
							a = e("./utils/strings"),
							s = e("./zlib/constants"),
							o = e("./zlib/messages"),
							u = e("./zlib/zstream"),
							l = e("./zlib/gzheader"),
							c = Object.prototype.toString;

						function h(e) {
							if (!(this instanceof h)) return new h(e);
							this.options = i.assign({
								chunkSize: 16384,
								windowBits: 0,
								to: ""
							}, e || {});
							var t = this.options;
							t.raw && 0 <= t.windowBits && t.windowBits < 16 && (t.windowBits = -t.windowBits, 0 === t.windowBits && (t.windowBits = -15)), !(0 <= t.windowBits && t.windowBits < 16) || e && e.windowBits || (t.windowBits += 32), 15 < t.windowBits && t.windowBits < 48 && 0 == (15 & t.windowBits) && (t.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new u, this.strm.avail_out = 0;
							var r = n.inflateInit2(this.strm, t.windowBits);
							if (r !== s.Z_OK) throw new Error(o[r]);
							this.header = new l, n.inflateGetHeader(this.strm, this.header)
						}

						function d(e, t) {
							var r = new h(t);
							if (r.push(e, !0), r.err) throw r.msg || o[r.err];
							return r.result
						}
						h.prototype.push = function(e, t) {
							var r, o, u, l, h, d, f = this.strm,
								p = this.options.chunkSize,
								m = this.options.dictionary,
								_ = !1;
							if (this.ended) return !1;
							o = t === ~~t ? t : !0 === t ? s.Z_FINISH : s.Z_NO_FLUSH, "string" == typeof e ? f.input = a.binstring2buf(e) : "[object ArrayBuffer]" === c.call(e) ? f.input = new Uint8Array(e) : f.input = e, f.next_in = 0, f.avail_in = f.input.length;
							do {
								if (0 === f.avail_out && (f.output = new i.Buf8(p), f.next_out = 0, f.avail_out = p), (r = n.inflate(f, s.Z_NO_FLUSH)) === s.Z_NEED_DICT && m && (d = "string" == typeof m ? a.string2buf(m) : "[object ArrayBuffer]" === c.call(m) ? new Uint8Array(m) : m, r = n.inflateSetDictionary(this.strm, d)), r === s.Z_BUF_ERROR && !0 === _ && (r = s.Z_OK, _ = !1), r !== s.Z_STREAM_END && r !== s.Z_OK) return this.onEnd(r), !(this.ended = !0);
								f.next_out && (0 !== f.avail_out && r !== s.Z_STREAM_END && (0 !== f.avail_in || o !== s.Z_FINISH && o !== s.Z_SYNC_FLUSH) || ("string" === this.options.to ? (u = a.utf8border(f.output, f.next_out), l = f.next_out - u, h = a.buf2string(f.output, u), f.next_out = l, f.avail_out = p - l, l && i.arraySet(f.output, f.output, u, l, 0), this.onData(h)) : this.onData(i.shrinkBuf(f.output, f.next_out)))), 0 === f.avail_in && 0 === f.avail_out && (_ = !0)
							} while ((0 < f.avail_in || 0 === f.avail_out) && r !== s.Z_STREAM_END);
							return r === s.Z_STREAM_END && (o = s.Z_FINISH), o === s.Z_FINISH ? (r = n.inflateEnd(this.strm), this.onEnd(r), this.ended = !0, r === s.Z_OK) : o !== s.Z_SYNC_FLUSH || (this.onEnd(s.Z_OK), !(f.avail_out = 0))
						}, h.prototype.onData = function(e) {
							this.chunks.push(e)
						}, h.prototype.onEnd = function(e) {
							e === s.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = i.flattenChunks(this.chunks)), this.chunks = [], this.err = e, this.msg = this.strm.msg
						}, r.Inflate = h, r.inflate = d, r.inflateRaw = function(e, t) {
							return (t = t || {}).raw = !0, d(e, t)
						}, r.ungzip = d
					}, {
						"./utils/common": 41,
						"./utils/strings": 42,
						"./zlib/constants": 44,
						"./zlib/gzheader": 47,
						"./zlib/inflate": 49,
						"./zlib/messages": 51,
						"./zlib/zstream": 53
					}],
					41: [function(e, t, r) {
						"use strict";
						var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array;
						r.assign = function(e) {
							for (var t = Array.prototype.slice.call(arguments, 1); t.length;) {
								var r = t.shift();
								if (r) {
									if ("object" != typeof r) throw new TypeError(r + "must be non-object");
									for (var n in r) r.hasOwnProperty(n) && (e[n] = r[n])
								}
							}
							return e
						}, r.shrinkBuf = function(e, t) {
							return e.length === t ? e : e.subarray ? e.subarray(0, t) : (e.length = t, e)
						};
						var i = {
								arraySet: function(e, t, r, n, i) {
									if (t.subarray && e.subarray) e.set(t.subarray(r, r + n), i);
									else
										for (var a = 0; a < n; a++) e[i + a] = t[r + a]
								},
								flattenChunks: function(e) {
									var t, r, n, i, a, s;
									for (t = n = 0, r = e.length; t < r; t++) n += e[t].length;
									for (s = new Uint8Array(n), t = i = 0, r = e.length; t < r; t++) a = e[t], s.set(a, i), i += a.length;
									return s
								}
							},
							a = {
								arraySet: function(e, t, r, n, i) {
									for (var a = 0; a < n; a++) e[i + a] = t[r + a]
								},
								flattenChunks: function(e) {
									return [].concat.apply([], e)
								}
							};
						r.setTyped = function(e) {
							e ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, a))
						}, r.setTyped(n)
					}, {}],
					42: [function(e, t, r) {
						"use strict";
						var n = e("./common"),
							i = !0,
							a = !0;
						try {
							String.fromCharCode.apply(null, [0])
						} catch (e) {
							i = !1
						}
						try {
							String.fromCharCode.apply(null, new Uint8Array(1))
						} catch (e) {
							a = !1
						}
						for (var s = new n.Buf8(256), o = 0; o < 256; o++) s[o] = 252 <= o ? 6 : 248 <= o ? 5 : 240 <= o ? 4 : 224 <= o ? 3 : 192 <= o ? 2 : 1;

						function u(e, t) {
							if (t < 65537 && (e.subarray && a || !e.subarray && i)) return String.fromCharCode.apply(null, n.shrinkBuf(e, t));
							for (var r = "", s = 0; s < t; s++) r += String.fromCharCode(e[s]);
							return r
						}
						s[254] = s[254] = 1, r.string2buf = function(e) {
							var t, r, i, a, s, o = e.length,
								u = 0;
							for (a = 0; a < o; a++) 55296 == (64512 & (r = e.charCodeAt(a))) && a + 1 < o && 56320 == (64512 & (i = e.charCodeAt(a + 1))) && (r = 65536 + (r - 55296 << 10) + (i - 56320), a++), u += r < 128 ? 1 : r < 2048 ? 2 : r < 65536 ? 3 : 4;
							for (t = new n.Buf8(u), a = s = 0; s < u; a++) 55296 == (64512 & (r = e.charCodeAt(a))) && a + 1 < o && 56320 == (64512 & (i = e.charCodeAt(a + 1))) && (r = 65536 + (r - 55296 << 10) + (i - 56320), a++), r < 128 ? t[s++] = r : (r < 2048 ? t[s++] = 192 | r >>> 6 : (r < 65536 ? t[s++] = 224 | r >>> 12 : (t[s++] = 240 | r >>> 18, t[s++] = 128 | r >>> 12 & 63), t[s++] = 128 | r >>> 6 & 63), t[s++] = 128 | 63 & r);
							return t
						}, r.buf2binstring = function(e) {
							return u(e, e.length)
						}, r.binstring2buf = function(e) {
							for (var t = new n.Buf8(e.length), r = 0, i = t.length; r < i; r++) t[r] = e.charCodeAt(r);
							return t
						}, r.buf2string = function(e, t) {
							var r, n, i, a, o = t || e.length,
								l = new Array(2 * o);
							for (r = n = 0; r < o;)
								if ((i = e[r++]) < 128) l[n++] = i;
								else if (4 < (a = s[i])) l[n++] = 65533, r += a - 1;
							else {
								for (i &= 2 === a ? 31 : 3 === a ? 15 : 7; 1 < a && r < o;) i = i << 6 | 63 & e[r++], a--;
								1 < a ? l[n++] = 65533 : i < 65536 ? l[n++] = i : (i -= 65536, l[n++] = 55296 | i >> 10 & 1023, l[n++] = 56320 | 1023 & i)
							}
							return u(l, n)
						}, r.utf8border = function(e, t) {
							var r;
							for ((t = t || e.length) > e.length && (t = e.length), r = t - 1; 0 <= r && 128 == (192 & e[r]);) r--;
							return r < 0 || 0 === r ? t : r + s[e[r]] > t ? r : t
						}
					}, {
						"./common": 41
					}],
					43: [function(e, t, r) {
						"use strict";
						t.exports = function(e, t, r, n) {
							for (var i = 65535 & e | 0, a = e >>> 16 & 65535 | 0, s = 0; 0 !== r;) {
								for (r -= s = 2e3 < r ? 2e3 : r; a = a + (i = i + t[n++] | 0) | 0, --s;);
								i %= 65521, a %= 65521
							}
							return i | a << 16 | 0
						}
					}, {}],
					44: [function(e, t, r) {
						"use strict";
						t.exports = {
							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,
							Z_OK: 0,
							Z_STREAM_END: 1,
							Z_NEED_DICT: 2,
							Z_ERRNO: -1,
							Z_STREAM_ERROR: -2,
							Z_DATA_ERROR: -3,
							Z_BUF_ERROR: -5,
							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,
							Z_BINARY: 0,
							Z_TEXT: 1,
							Z_UNKNOWN: 2,
							Z_DEFLATED: 8
						}
					}, {}],
					45: [function(e, t, r) {
						"use strict";
						var n = function() {
							for (var e, t = [], r = 0; r < 256; r++) {
								e = r;
								for (var n = 0; n < 8; n++) e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1;
								t[r] = e
							}
							return t
						}();
						t.exports = function(e, t, r, i) {
							var a = n,
								s = i + r;
							e ^= -1;
							for (var o = i; o < s; o++) e = e >>> 8 ^ a[255 & (e ^ t[o])];
							return -1 ^ e
						}
					}, {}],
					46: [function(e, t, r) {
						"use strict";
						var n, i = e("../utils/common"),
							a = e("./trees"),
							s = e("./adler32"),
							o = e("./crc32"),
							u = e("./messages"),
							l = 0,
							c = 0,
							h = -2,
							d = 2,
							f = 8,
							p = 286,
							m = 30,
							_ = 19,
							g = 2 * p + 1,
							b = 15,
							v = 3,
							y = 258,
							w = y + v + 1,
							k = 42,
							x = 113;

						function S(e, t) {
							return e.msg = u[t], t
						}

						function A(e) {
							return (e << 1) - (4 < e ? 9 : 0)
						}

						function z(e) {
							for (var t = e.length; 0 <= --t;) e[t] = 0
						}

						function E(e) {
							var t = e.state,
								r = t.pending;
							r > e.avail_out && (r = e.avail_out), 0 !== r && (i.arraySet(e.output, t.pending_buf, t.pending_out, r, e.next_out), e.next_out += r, t.pending_out += r, e.total_out += r, e.avail_out -= r, t.pending -= r, 0 === t.pending && (t.pending_out = 0))
						}

						function C(e, t) {
							a._tr_flush_block(e, 0 <= e.block_start ? e.block_start : -1, e.strstart - e.block_start, t), e.block_start = e.strstart, E(e.strm)
						}

						function O(e, t) {
							e.pending_buf[e.pending++] = t
						}

						function I(e, t) {
							e.pending_buf[e.pending++] = t >>> 8 & 255, e.pending_buf[e.pending++] = 255 & t
						}

						function T(e, t) {
							var r, n, i = e.max_chain_length,
								a = e.strstart,
								s = e.prev_length,
								o = e.nice_match,
								u = e.strstart > e.w_size - w ? e.strstart - (e.w_size - w) : 0,
								l = e.window,
								c = e.w_mask,
								h = e.prev,
								d = e.strstart + y,
								f = l[a + s - 1],
								p = l[a + s];
							e.prev_length >= e.good_match && (i >>= 2), o > e.lookahead && (o = e.lookahead);
							do {
								if (l[(r = t) + s] === p && l[r + s - 1] === f && l[r] === l[a] && l[++r] === l[a + 1]) {
									a += 2, r++;
									do {} while (l[++a] === l[++r] && l[++a] === l[++r] && l[++a] === l[++r] && l[++a] === l[++r] && l[++a] === l[++r] && l[++a] === l[++r] && l[++a] === l[++r] && l[++a] === l[++r] && a < d);
									if (n = y - (d - a), a = d - y, s < n) {
										if (e.match_start = t, o <= (s = n)) break;
										f = l[a + s - 1], p = l[a + s]
									}
								}
							} while ((t = h[t & c]) > u && 0 != --i);
							return s <= e.lookahead ? s : e.lookahead
						}

						function B(e) {
							var t, r, n, a, u, l, c, h, d, f, p = e.w_size;
							do {
								if (a = e.window_size - e.lookahead - e.strstart, e.strstart >= p + (p - w)) {
									for (i.arraySet(e.window, e.window, p, p, 0), e.match_start -= p, e.strstart -= p, e.block_start -= p, t = r = e.hash_size; n = e.head[--t], e.head[t] = p <= n ? n - p : 0, --r;);
									for (t = r = p; n = e.prev[--t], e.prev[t] = p <= n ? n - p : 0, --r;);
									a += p
								}
								if (0 === e.strm.avail_in) break;
								if (l = e.strm, c = e.window, h = e.strstart + e.lookahead, f = void 0, (d = a) < (f = l.avail_in) && (f = d), r = 0 === f ? 0 : (l.avail_in -= f, i.arraySet(c, l.input, l.next_in, f, h), 1 === l.state.wrap ? l.adler = s(l.adler, c, f, h) : 2 === l.state.wrap && (l.adler = o(l.adler, c, f, h)), l.next_in += f, l.total_in += f, f), e.lookahead += r, e.lookahead + e.insert >= v)
									for (u = e.strstart - e.insert, e.ins_h = e.window[u], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[u + 1]) & e.hash_mask; e.insert && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[u + v - 1]) & e.hash_mask, e.prev[u & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = u, u++, e.insert--, !(e.lookahead + e.insert < v)););
							} while (e.lookahead < w && 0 !== e.strm.avail_in)
						}

						function R(e, t) {
							for (var r, n;;) {
								if (e.lookahead < w) {
									if (B(e), e.lookahead < w && t === l) return 1;
									if (0 === e.lookahead) break
								}
								if (r = 0, e.lookahead >= v && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + v - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), 0 !== r && e.strstart - r <= e.w_size - w && (e.match_length = T(e, r)), e.match_length >= v)
									if (n = a._tr_tally(e, e.strstart - e.match_start, e.match_length - v), e.lookahead -= e.match_length, e.match_length <= e.max_lazy_match && e.lookahead >= v) {
										for (e.match_length--; e.strstart++, e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + v - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart, 0 != --e.match_length;);
										e.strstart++
									} else e.strstart += e.match_length, e.match_length = 0, e.ins_h = e.window[e.strstart], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + 1]) & e.hash_mask;
								else n = a._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++;
								if (n && (C(e, !1), 0 === e.strm.avail_out)) return 1
							}
							return e.insert = e.strstart < v - 1 ? e.strstart : v - 1, 4 === t ? (C(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (C(e, !1), 0 === e.strm.avail_out) ? 1 : 2
						}

						function D(e, t) {
							for (var r, n, i;;) {
								if (e.lookahead < w) {
									if (B(e), e.lookahead < w && t === l) return 1;
									if (0 === e.lookahead) break
								}
								if (r = 0, e.lookahead >= v && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + v - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), e.prev_length = e.match_length, e.prev_match = e.match_start, e.match_length = v - 1, 0 !== r && e.prev_length < e.max_lazy_match && e.strstart - r <= e.w_size - w && (e.match_length = T(e, r), e.match_length <= 5 && (1 === e.strategy || e.match_length === v && 4096 < e.strstart - e.match_start) && (e.match_length = v - 1)), e.prev_length >= v && e.match_length <= e.prev_length) {
									for (i = e.strstart + e.lookahead - v, n = a._tr_tally(e, e.strstart - 1 - e.prev_match, e.prev_length - v), e.lookahead -= e.prev_length - 1, e.prev_length -= 2; ++e.strstart <= i && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + v - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), 0 != --e.prev_length;);
									if (e.match_available = 0, e.match_length = v - 1, e.strstart++, n && (C(e, !1), 0 === e.strm.avail_out)) return 1
								} else if (e.match_available) {
									if ((n = a._tr_tally(e, 0, e.window[e.strstart - 1])) && C(e, !1), e.strstart++, e.lookahead--, 0 === e.strm.avail_out) return 1
								} else e.match_available = 1, e.strstart++, e.lookahead--
							}
							return e.match_available && (n = a._tr_tally(e, 0, e.window[e.strstart - 1]), e.match_available = 0), e.insert = e.strstart < v - 1 ? e.strstart : v - 1, 4 === t ? (C(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (C(e, !1), 0 === e.strm.avail_out) ? 1 : 2
						}

						function F(e, t, r, n, i) {
							this.good_length = e, this.max_lazy = t, this.nice_length = r, this.max_chain = n, this.func = i
						}

						function U() {
							this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = f, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new i.Buf16(2 * g), this.dyn_dtree = new i.Buf16(2 * (2 * m + 1)), this.bl_tree = new i.Buf16(2 * (2 * _ + 1)), z(this.dyn_ltree), z(this.dyn_dtree), z(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new i.Buf16(b + 1), this.heap = new i.Buf16(2 * p + 1), z(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new i.Buf16(2 * p + 1), z(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0
						}

						function N(e) {
							var t;
							return e && e.state ? (e.total_in = e.total_out = 0, e.data_type = d, (t = e.state).pending = 0, t.pending_out = 0, t.wrap < 0 && (t.wrap = -t.wrap), t.status = t.wrap ? k : x, e.adler = 2 === t.wrap ? 0 : 1, t.last_flush = l, a._tr_init(t), c) : S(e, h)
						}

						function P(e) {
							var t = N(e);
							return t === c && function(e) {
								e.window_size = 2 * e.w_size, z(e.head), e.max_lazy_match = n[e.level].max_lazy, e.good_match = n[e.level].good_length, e.nice_match = n[e.level].nice_length, e.max_chain_length = n[e.level].max_chain, e.strstart = 0, e.block_start = 0, e.lookahead = 0, e.insert = 0, e.match_length = e.prev_length = v - 1, e.match_available = 0, e.ins_h = 0
							}(e.state), t
						}

						function L(e, t, r, n, a, s) {
							if (!e) return h;
							var o = 1;
							if (-1 === t && (t = 6), n < 0 ? (o = 0, n = -n) : 15 < n && (o = 2, n -= 16), a < 1 || 9 < a || r !== f || n < 8 || 15 < n || t < 0 || 9 < t || s < 0 || 4 < s) return S(e, h);
							8 === n && (n = 9);
							var u = new U;
							return (e.state = u).strm = e, u.wrap = o, u.gzhead = null, u.w_bits = n, u.w_size = 1 << u.w_bits, u.w_mask = u.w_size - 1, u.hash_bits = a + 7, u.hash_size = 1 << u.hash_bits, u.hash_mask = u.hash_size - 1, u.hash_shift = ~~((u.hash_bits + v - 1) / v), u.window = new i.Buf8(2 * u.w_size), u.head = new i.Buf16(u.hash_size), u.prev = new i.Buf16(u.w_size), u.lit_bufsize = 1 << a + 6, u.pending_buf_size = 4 * u.lit_bufsize, u.pending_buf = new i.Buf8(u.pending_buf_size), u.d_buf = 1 * u.lit_bufsize, u.l_buf = 3 * u.lit_bufsize, u.level = t, u.strategy = s, u.method = r, P(e)
						}
						n = [new F(0, 0, 0, 0, (function(e, t) {
							var r = 65535;
							for (r > e.pending_buf_size - 5 && (r = e.pending_buf_size - 5);;) {
								if (e.lookahead <= 1) {
									if (B(e), 0 === e.lookahead && t === l) return 1;
									if (0 === e.lookahead) break
								}
								e.strstart += e.lookahead, e.lookahead = 0;
								var n = e.block_start + r;
								if ((0 === e.strstart || e.strstart >= n) && (e.lookahead = e.strstart - n, e.strstart = n, C(e, !1), 0 === e.strm.avail_out)) return 1;
								if (e.strstart - e.block_start >= e.w_size - w && (C(e, !1), 0 === e.strm.avail_out)) return 1
							}
							return e.insert = 0, 4 === t ? (C(e, !0), 0 === e.strm.avail_out ? 3 : 4) : (e.strstart > e.block_start && (C(e, !1), e.strm.avail_out), 1)
						})), new F(4, 4, 8, 4, R), new F(4, 5, 16, 8, R), new F(4, 6, 32, 32, R), new F(4, 4, 16, 16, D), new F(8, 16, 32, 32, D), new F(8, 16, 128, 128, D), new F(8, 32, 128, 256, D), new F(32, 128, 258, 1024, D), new F(32, 258, 258, 4096, D)], r.deflateInit = function(e, t) {
							return L(e, t, f, 15, 8, 0)
						}, r.deflateInit2 = L, r.deflateReset = P, r.deflateResetKeep = N, r.deflateSetHeader = function(e, t) {
							return e && e.state ? 2 !== e.state.wrap ? h : (e.state.gzhead = t, c) : h
						}, r.deflate = function(e, t) {
							var r, i, s, u;
							if (!e || !e.state || 5 < t || t < 0) return e ? S(e, h) : h;
							if (i = e.state, !e.output || !e.input && 0 !== e.avail_in || 666 === i.status && 4 !== t) return S(e, 0 === e.avail_out ? -5 : h);
							if (i.strm = e, r = i.last_flush, i.last_flush = t, i.status === k)
								if (2 === i.wrap) e.adler = 0, O(i, 31), O(i, 139), O(i, 8), i.gzhead ? (O(i, (i.gzhead.text ? 1 : 0) + (i.gzhead.hcrc ? 2 : 0) + (i.gzhead.extra ? 4 : 0) + (i.gzhead.name ? 8 : 0) + (i.gzhead.comment ? 16 : 0)), O(i, 255 & i.gzhead.time), O(i, i.gzhead.time >> 8 & 255), O(i, i.gzhead.time >> 16 & 255), O(i, i.gzhead.time >> 24 & 255), O(i, 9 === i.level ? 2 : 2 <= i.strategy || i.level < 2 ? 4 : 0), O(i, 255 & i.gzhead.os), i.gzhead.extra && i.gzhead.extra.length && (O(i, 255 & i.gzhead.extra.length), O(i, i.gzhead.extra.length >> 8 & 255)), i.gzhead.hcrc && (e.adler = o(e.adler, i.pending_buf, i.pending, 0)), i.gzindex = 0, i.status = 69) : (O(i, 0), O(i, 0), O(i, 0), O(i, 0), O(i, 0), O(i, 9 === i.level ? 2 : 2 <= i.strategy || i.level < 2 ? 4 : 0), O(i, 3), i.status = x);
								else {
									var d = f + (i.w_bits - 8 << 4) << 8;
									d |= (2 <= i.strategy || i.level < 2 ? 0 : i.level < 6 ? 1 : 6 === i.level ? 2 : 3) << 6, 0 !== i.strstart && (d |= 32), d += 31 - d % 31, i.status = x, I(i, d), 0 !== i.strstart && (I(i, e.adler >>> 16), I(i, 65535 & e.adler)), e.adler = 1
								} if (69 === i.status)
								if (i.gzhead.extra) {
									for (s = i.pending; i.gzindex < (65535 & i.gzhead.extra.length) && (i.pending !== i.pending_buf_size || (i.gzhead.hcrc && i.pending > s && (e.adler = o(e.adler, i.pending_buf, i.pending - s, s)), E(e), s = i.pending, i.pending !== i.pending_buf_size));) O(i, 255 & i.gzhead.extra[i.gzindex]), i.gzindex++;
									i.gzhead.hcrc && i.pending > s && (e.adler = o(e.adler, i.pending_buf, i.pending - s, s)), i.gzindex === i.gzhead.extra.length && (i.gzindex = 0, i.status = 73)
								} else i.status = 73;
							if (73 === i.status)
								if (i.gzhead.name) {
									s = i.pending;
									do {
										if (i.pending === i.pending_buf_size && (i.gzhead.hcrc && i.pending > s && (e.adler = o(e.adler, i.pending_buf, i.pending - s, s)), E(e), s = i.pending, i.pending === i.pending_buf_size)) {
											u = 1;
											break
										}
										u = i.gzindex < i.gzhead.name.length ? 255 & i.gzhead.name.charCodeAt(i.gzindex++) : 0, O(i, u)
									} while (0 !== u);
									i.gzhead.hcrc && i.pending > s && (e.adler = o(e.adler, i.pending_buf, i.pending - s, s)), 0 === u && (i.gzindex = 0, i.status = 91)
								} else i.status = 91;
							if (91 === i.status)
								if (i.gzhead.comment) {
									s = i.pending;
									do {
										if (i.pending === i.pending_buf_size && (i.gzhead.hcrc && i.pending > s && (e.adler = o(e.adler, i.pending_buf, i.pending - s, s)), E(e), s = i.pending, i.pending === i.pending_buf_size)) {
											u = 1;
											break
										}
										u = i.gzindex < i.gzhead.comment.length ? 255 & i.gzhead.comment.charCodeAt(i.gzindex++) : 0, O(i, u)
									} while (0 !== u);
									i.gzhead.hcrc && i.pending > s && (e.adler = o(e.adler, i.pending_buf, i.pending - s, s)), 0 === u && (i.status = 103)
								} else i.status = 103;
							if (103 === i.status && (i.gzhead.hcrc ? (i.pending + 2 > i.pending_buf_size && E(e), i.pending + 2 <= i.pending_buf_size && (O(i, 255 & e.adler), O(i, e.adler >> 8 & 255), e.adler = 0, i.status = x)) : i.status = x), 0 !== i.pending) {
								if (E(e), 0 === e.avail_out) return i.last_flush = -1, c
							} else if (0 === e.avail_in && A(t) <= A(r) && 4 !== t) return S(e, -5);
							if (666 === i.status && 0 !== e.avail_in) return S(e, -5);
							if (0 !== e.avail_in || 0 !== i.lookahead || t !== l && 666 !== i.status) {
								var p = 2 === i.strategy ? function(e, t) {
									for (var r;;) {
										if (0 === e.lookahead && (B(e), 0 === e.lookahead)) {
											if (t === l) return 1;
											break
										}
										if (e.match_length = 0, r = a._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++, r && (C(e, !1), 0 === e.strm.avail_out)) return 1
									}
									return e.insert = 0, 4 === t ? (C(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (C(e, !1), 0 === e.strm.avail_out) ? 1 : 2
								}(i, t) : 3 === i.strategy ? function(e, t) {
									for (var r, n, i, s, o = e.window;;) {
										if (e.lookahead <= y) {
											if (B(e), e.lookahead <= y && t === l) return 1;
											if (0 === e.lookahead) break
										}
										if (e.match_length = 0, e.lookahead >= v && 0 < e.strstart && (n = o[i = e.strstart - 1]) === o[++i] && n === o[++i] && n === o[++i]) {
											s = e.strstart + y;
											do {} while (n === o[++i] && n === o[++i] && n === o[++i] && n === o[++i] && n === o[++i] && n === o[++i] && n === o[++i] && n === o[++i] && i < s);
											e.match_length = y - (s - i), e.match_length > e.lookahead && (e.match_length = e.lookahead)
										}
										if (e.match_length >= v ? (r = a._tr_tally(e, 1, e.match_length - v), e.lookahead -= e.match_length, e.strstart += e.match_length, e.match_length = 0) : (r = a._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++), r && (C(e, !1), 0 === e.strm.avail_out)) return 1
									}
									return e.insert = 0, 4 === t ? (C(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (C(e, !1), 0 === e.strm.avail_out) ? 1 : 2
								}(i, t) : n[i.level].func(i, t);
								if (3 !== p && 4 !== p || (i.status = 666), 1 === p || 3 === p) return 0 === e.avail_out && (i.last_flush = -1), c;
								if (2 === p && (1 === t ? a._tr_align(i) : 5 !== t && (a._tr_stored_block(i, 0, 0, !1), 3 === t && (z(i.head), 0 === i.lookahead && (i.strstart = 0, i.block_start = 0, i.insert = 0))), E(e), 0 === e.avail_out)) return i.last_flush = -1, c
							}
							return 4 !== t ? c : i.wrap <= 0 ? 1 : (2 === i.wrap ? (O(i, 255 & e.adler), O(i, e.adler >> 8 & 255), O(i, e.adler >> 16 & 255), O(i, e.adler >> 24 & 255), O(i, 255 & e.total_in), O(i, e.total_in >> 8 & 255), O(i, e.total_in >> 16 & 255), O(i, e.total_in >> 24 & 255)) : (I(i, e.adler >>> 16), I(i, 65535 & e.adler)), E(e), 0 < i.wrap && (i.wrap = -i.wrap), 0 !== i.pending ? c : 1)
						}, r.deflateEnd = function(e) {
							var t;
							return e && e.state ? (t = e.state.status) !== k && 69 !== t && 73 !== t && 91 !== t && 103 !== t && t !== x && 666 !== t ? S(e, h) : (e.state = null, t === x ? S(e, -3) : c) : h
						}, r.deflateSetDictionary = function(e, t) {
							var r, n, a, o, u, l, d, f, p = t.length;
							if (!e || !e.state) return h;
							if (2 === (o = (r = e.state).wrap) || 1 === o && r.status !== k || r.lookahead) return h;
							for (1 === o && (e.adler = s(e.adler, t, p, 0)), r.wrap = 0, p >= r.w_size && (0 === o && (z(r.head), r.strstart = 0, r.block_start = 0, r.insert = 0), f = new i.Buf8(r.w_size), i.arraySet(f, t, p - r.w_size, r.w_size, 0), t = f, p = r.w_size), u = e.avail_in, l = e.next_in, d = e.input, e.avail_in = p, e.next_in = 0, e.input = t, B(r); r.lookahead >= v;) {
								for (n = r.strstart, a = r.lookahead - (v - 1); r.ins_h = (r.ins_h << r.hash_shift ^ r.window[n + v - 1]) & r.hash_mask, r.prev[n & r.w_mask] = r.head[r.ins_h], r.head[r.ins_h] = n, n++, --a;);
								r.strstart = n, r.lookahead = v - 1, B(r)
							}
							return r.strstart += r.lookahead, r.block_start = r.strstart, r.insert = r.lookahead, r.lookahead = 0, r.match_length = r.prev_length = v - 1, r.match_available = 0, e.next_in = l, e.input = d, e.avail_in = u, r.wrap = o, c
						}, r.deflateInfo = "pako deflate (from Nodeca project)"
					}, {
						"../utils/common": 41,
						"./adler32": 43,
						"./crc32": 45,
						"./messages": 51,
						"./trees": 52
					}],
					47: [function(e, t, r) {
						"use strict";
						t.exports = function() {
							this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1
						}
					}, {}],
					48: [function(e, t, r) {
						"use strict";
						t.exports = function(e, t) {
							var r, n, i, a, s, o, u, l, c, h, d, f, p, m, _, g, b, v, y, w, k, x, S, A, z;
							r = e.state, n = e.next_in, A = e.input, i = n + (e.avail_in - 5), a = e.next_out, z = e.output, s = a - (t - e.avail_out), o = a + (e.avail_out - 257), u = r.dmax, l = r.wsize, c = r.whave, h = r.wnext, d = r.window, f = r.hold, p = r.bits, m = r.lencode, _ = r.distcode, g = (1 << r.lenbits) - 1, b = (1 << r.distbits) - 1;
							e: do {
								p < 15 && (f += A[n++] << p, p += 8, f += A[n++] << p, p += 8), v = m[f & g];
								t: for (;;) {
									if (f >>>= y = v >>> 24, p -= y, 0 == (y = v >>> 16 & 255)) z[a++] = 65535 & v;
									else {
										if (!(16 & y)) {
											if (0 == (64 & y)) {
												v = m[(65535 & v) + (f & (1 << y) - 1)];
												continue t
											}
											if (32 & y) {
												r.mode = 12;
												break e
											}
											e.msg = "invalid literal/length code", r.mode = 30;
											break e
										}
										w = 65535 & v, (y &= 15) && (p < y && (f += A[n++] << p, p += 8), w += f & (1 << y) - 1, f >>>= y, p -= y), p < 15 && (f += A[n++] << p, p += 8, f += A[n++] << p, p += 8), v = _[f & b];
										r: for (;;) {
											if (f >>>= y = v >>> 24, p -= y, !(16 & (y = v >>> 16 & 255))) {
												if (0 == (64 & y)) {
													v = _[(65535 & v) + (f & (1 << y) - 1)];
													continue r
												}
												e.msg = "invalid distance code", r.mode = 30;
												break e
											}
											if (k = 65535 & v, p < (y &= 15) && (f += A[n++] << p, (p += 8) < y && (f += A[n++] << p, p += 8)), u < (k += f & (1 << y) - 1)) {
												e.msg = "invalid distance too far back", r.mode = 30;
												break e
											}
											if (f >>>= y, p -= y, (y = a - s) < k) {
												if (c < (y = k - y) && r.sane) {
													e.msg = "invalid distance too far back", r.mode = 30;
													break e
												}
												if (S = d, (x = 0) === h) {
													if (x += l - y, y < w) {
														for (w -= y; z[a++] = d[x++], --y;);
														x = a - k, S = z
													}
												} else if (h < y) {
													if (x += l + h - y, (y -= h) < w) {
														for (w -= y; z[a++] = d[x++], --y;);
														if (x = 0, h < w) {
															for (w -= y = h; z[a++] = d[x++], --y;);
															x = a - k, S = z
														}
													}
												} else if (x += h - y, y < w) {
													for (w -= y; z[a++] = d[x++], --y;);
													x = a - k, S = z
												}
												for (; 2 < w;) z[a++] = S[x++], z[a++] = S[x++], z[a++] = S[x++], w -= 3;
												w && (z[a++] = S[x++], 1 < w && (z[a++] = S[x++]))
											} else {
												for (x = a - k; z[a++] = z[x++], z[a++] = z[x++], z[a++] = z[x++], 2 < (w -= 3););
												w && (z[a++] = z[x++], 1 < w && (z[a++] = z[x++]))
											}
											break
										}
									}
									break
								}
							} while (n < i && a < o);
							n -= w = p >> 3, f &= (1 << (p -= w << 3)) - 1, e.next_in = n, e.next_out = a, e.avail_in = n < i ? i - n + 5 : 5 - (n - i), e.avail_out = a < o ? o - a + 257 : 257 - (a - o), r.hold = f, r.bits = p
						}
					}, {}],
					49: [function(e, t, r) {
						"use strict";
						var n = e("../utils/common"),
							i = e("./adler32"),
							a = e("./crc32"),
							s = e("./inffast"),
							o = e("./inftrees"),
							u = 0,
							l = -2,
							c = 1,
							h = 852,
							d = 592;

						function f(e) {
							return (e >>> 24 & 255) + (e >>> 8 & 65280) + ((65280 & e) << 8) + ((255 & e) << 24)
						}

						function p() {
							this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new n.Buf16(320), this.work = new n.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0
						}

						function m(e) {
							var t;
							return e && e.state ? (t = e.state, e.total_in = e.total_out = t.total = 0, e.msg = "", t.wrap && (e.adler = 1 & t.wrap), t.mode = c, t.last = 0, t.havedict = 0, t.dmax = 32768, t.head = null, t.hold = 0, t.bits = 0, t.lencode = t.lendyn = new n.Buf32(h), t.distcode = t.distdyn = new n.Buf32(d), t.sane = 1, t.back = -1, u) : l
						}

						function _(e) {
							var t;
							return e && e.state ? ((t = e.state).wsize = 0, t.whave = 0, t.wnext = 0, m(e)) : l
						}

						function g(e, t) {
							var r, n;
							return e && e.state ? (n = e.state, t < 0 ? (r = 0, t = -t) : (r = 1 + (t >> 4), t < 48 && (t &= 15)), t && (t < 8 || 15 < t) ? l : (null !== n.window && n.wbits !== t && (n.window = null), n.wrap = r, n.wbits = t, _(e))) : l
						}

						function b(e, t) {
							var r, n;
							return e ? (n = new p, (e.state = n).window = null, (r = g(e, t)) !== u && (e.state = null), r) : l
						}
						var v, y, w = !0;

						function k(e) {
							if (w) {
								var t;
								for (v = new n.Buf32(512), y = new n.Buf32(32), t = 0; t < 144;) e.lens[t++] = 8;
								for (; t < 256;) e.lens[t++] = 9;
								for (; t < 280;) e.lens[t++] = 7;
								for (; t < 288;) e.lens[t++] = 8;
								for (o(1, e.lens, 0, 288, v, 0, e.work, {
										bits: 9
									}), t = 0; t < 32;) e.lens[t++] = 5;
								o(2, e.lens, 0, 32, y, 0, e.work, {
									bits: 5
								}), w = !1
							}
							e.lencode = v, e.lenbits = 9, e.distcode = y, e.distbits = 5
						}

						function x(e, t, r, i) {
							var a, s = e.state;
							return null === s.window && (s.wsize = 1 << s.wbits, s.wnext = 0, s.whave = 0, s.window = new n.Buf8(s.wsize)), i >= s.wsize ? (n.arraySet(s.window, t, r - s.wsize, s.wsize, 0), s.wnext = 0, s.whave = s.wsize) : (i < (a = s.wsize - s.wnext) && (a = i), n.arraySet(s.window, t, r - i, a, s.wnext), (i -= a) ? (n.arraySet(s.window, t, r - i, i, 0), s.wnext = i, s.whave = s.wsize) : (s.wnext += a, s.wnext === s.wsize && (s.wnext = 0), s.whave < s.wsize && (s.whave += a))), 0
						}
						r.inflateReset = _, r.inflateReset2 = g, r.inflateResetKeep = m, r.inflateInit = function(e) {
							return b(e, 15)
						}, r.inflateInit2 = b, r.inflate = function(e, t) {
							var r, h, d, p, m, _, g, b, v, y, w, S, A, z, E, C, O, I, T, B, R, D, F, U, N = 0,
								P = new n.Buf8(4),
								L = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
							if (!e || !e.state || !e.output || !e.input && 0 !== e.avail_in) return l;
							12 === (r = e.state).mode && (r.mode = 13), m = e.next_out, d = e.output, g = e.avail_out, p = e.next_in, h = e.input, _ = e.avail_in, b = r.hold, v = r.bits, y = _, w = g, D = u;
							e: for (;;) switch (r.mode) {
								case c:
									if (0 === r.wrap) {
										r.mode = 13;
										break
									}
									for (; v < 16;) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									if (2 & r.wrap && 35615 === b) {
										P[r.check = 0] = 255 & b, P[1] = b >>> 8 & 255, r.check = a(r.check, P, 2, 0), v = b = 0, r.mode = 2;
										break
									}
									if (r.flags = 0, r.head && (r.head.done = !1), !(1 & r.wrap) || (((255 & b) << 8) + (b >> 8)) % 31) {
										e.msg = "incorrect header check", r.mode = 30;
										break
									}
									if (8 != (15 & b)) {
										e.msg = "unknown compression method", r.mode = 30;
										break
									}
									if (v -= 4, R = 8 + (15 & (b >>>= 4)), 0 === r.wbits) r.wbits = R;
									else if (R > r.wbits) {
										e.msg = "invalid window size", r.mode = 30;
										break
									}
									r.dmax = 1 << R, e.adler = r.check = 1, r.mode = 512 & b ? 10 : 12, v = b = 0;
									break;
								case 2:
									for (; v < 16;) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									if (r.flags = b, 8 != (255 & r.flags)) {
										e.msg = "unknown compression method", r.mode = 30;
										break
									}
									if (57344 & r.flags) {
										e.msg = "unknown header flags set", r.mode = 30;
										break
									}
									r.head && (r.head.text = b >> 8 & 1), 512 & r.flags && (P[0] = 255 & b, P[1] = b >>> 8 & 255, r.check = a(r.check, P, 2, 0)), v = b = 0, r.mode = 3;
								case 3:
									for (; v < 32;) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									r.head && (r.head.time = b), 512 & r.flags && (P[0] = 255 & b, P[1] = b >>> 8 & 255, P[2] = b >>> 16 & 255, P[3] = b >>> 24 & 255, r.check = a(r.check, P, 4, 0)), v = b = 0, r.mode = 4;
								case 4:
									for (; v < 16;) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									r.head && (r.head.xflags = 255 & b, r.head.os = b >> 8), 512 & r.flags && (P[0] = 255 & b, P[1] = b >>> 8 & 255, r.check = a(r.check, P, 2, 0)), v = b = 0, r.mode = 5;
								case 5:
									if (1024 & r.flags) {
										for (; v < 16;) {
											if (0 === _) break e;
											_--, b += h[p++] << v, v += 8
										}
										r.length = b, r.head && (r.head.extra_len = b), 512 & r.flags && (P[0] = 255 & b, P[1] = b >>> 8 & 255, r.check = a(r.check, P, 2, 0)), v = b = 0
									} else r.head && (r.head.extra = null);
									r.mode = 6;
								case 6:
									if (1024 & r.flags && (_ < (S = r.length) && (S = _), S && (r.head && (R = r.head.extra_len - r.length, r.head.extra || (r.head.extra = new Array(r.head.extra_len)), n.arraySet(r.head.extra, h, p, S, R)), 512 & r.flags && (r.check = a(r.check, h, S, p)), _ -= S, p += S, r.length -= S), r.length)) break e;
									r.length = 0, r.mode = 7;
								case 7:
									if (2048 & r.flags) {
										if (0 === _) break e;
										for (S = 0; R = h[p + S++], r.head && R && r.length < 65536 && (r.head.name += String.fromCharCode(R)), R && S < _;);
										if (512 & r.flags && (r.check = a(r.check, h, S, p)), _ -= S, p += S, R) break e
									} else r.head && (r.head.name = null);
									r.length = 0, r.mode = 8;
								case 8:
									if (4096 & r.flags) {
										if (0 === _) break e;
										for (S = 0; R = h[p + S++], r.head && R && r.length < 65536 && (r.head.comment += String.fromCharCode(R)), R && S < _;);
										if (512 & r.flags && (r.check = a(r.check, h, S, p)), _ -= S, p += S, R) break e
									} else r.head && (r.head.comment = null);
									r.mode = 9;
								case 9:
									if (512 & r.flags) {
										for (; v < 16;) {
											if (0 === _) break e;
											_--, b += h[p++] << v, v += 8
										}
										if (b !== (65535 & r.check)) {
											e.msg = "header crc mismatch", r.mode = 30;
											break
										}
										v = b = 0
									}
									r.head && (r.head.hcrc = r.flags >> 9 & 1, r.head.done = !0), e.adler = r.check = 0, r.mode = 12;
									break;
								case 10:
									for (; v < 32;) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									e.adler = r.check = f(b), v = b = 0, r.mode = 11;
								case 11:
									if (0 === r.havedict) return e.next_out = m, e.avail_out = g, e.next_in = p, e.avail_in = _, r.hold = b, r.bits = v, 2;
									e.adler = r.check = 1, r.mode = 12;
								case 12:
									if (5 === t || 6 === t) break e;
								case 13:
									if (r.last) {
										b >>>= 7 & v, v -= 7 & v, r.mode = 27;
										break
									}
									for (; v < 3;) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									switch (r.last = 1 & b, v -= 1, 3 & (b >>>= 1)) {
										case 0:
											r.mode = 14;
											break;
										case 1:
											if (k(r), r.mode = 20, 6 !== t) break;
											b >>>= 2, v -= 2;
											break e;
										case 2:
											r.mode = 17;
											break;
										case 3:
											e.msg = "invalid block type", r.mode = 30
									}
									b >>>= 2, v -= 2;
									break;
								case 14:
									for (b >>>= 7 & v, v -= 7 & v; v < 32;) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									if ((65535 & b) != (b >>> 16 ^ 65535)) {
										e.msg = "invalid stored block lengths", r.mode = 30;
										break
									}
									if (r.length = 65535 & b, v = b = 0, r.mode = 15, 6 === t) break e;
								case 15:
									r.mode = 16;
								case 16:
									if (S = r.length) {
										if (_ < S && (S = _), g < S && (S = g), 0 === S) break e;
										n.arraySet(d, h, p, S, m), _ -= S, p += S, g -= S, m += S, r.length -= S;
										break
									}
									r.mode = 12;
									break;
								case 17:
									for (; v < 14;) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									if (r.nlen = 257 + (31 & b), b >>>= 5, v -= 5, r.ndist = 1 + (31 & b), b >>>= 5, v -= 5, r.ncode = 4 + (15 & b), b >>>= 4, v -= 4, 286 < r.nlen || 30 < r.ndist) {
										e.msg = "too many length or distance symbols", r.mode = 30;
										break
									}
									r.have = 0, r.mode = 18;
								case 18:
									for (; r.have < r.ncode;) {
										for (; v < 3;) {
											if (0 === _) break e;
											_--, b += h[p++] << v, v += 8
										}
										r.lens[L[r.have++]] = 7 & b, b >>>= 3, v -= 3
									}
									for (; r.have < 19;) r.lens[L[r.have++]] = 0;
									if (r.lencode = r.lendyn, r.lenbits = 7, F = {
											bits: r.lenbits
										}, D = o(0, r.lens, 0, 19, r.lencode, 0, r.work, F), r.lenbits = F.bits, D) {
										e.msg = "invalid code lengths set", r.mode = 30;
										break
									}
									r.have = 0, r.mode = 19;
								case 19:
									for (; r.have < r.nlen + r.ndist;) {
										for (; C = (N = r.lencode[b & (1 << r.lenbits) - 1]) >>> 16 & 255, O = 65535 & N, !((E = N >>> 24) <= v);) {
											if (0 === _) break e;
											_--, b += h[p++] << v, v += 8
										}
										if (O < 16) b >>>= E, v -= E, r.lens[r.have++] = O;
										else {
											if (16 === O) {
												for (U = E + 2; v < U;) {
													if (0 === _) break e;
													_--, b += h[p++] << v, v += 8
												}
												if (b >>>= E, v -= E, 0 === r.have) {
													e.msg = "invalid bit length repeat", r.mode = 30;
													break
												}
												R = r.lens[r.have - 1], S = 3 + (3 & b), b >>>= 2, v -= 2
											} else if (17 === O) {
												for (U = E + 3; v < U;) {
													if (0 === _) break e;
													_--, b += h[p++] << v, v += 8
												}
												v -= E, R = 0, S = 3 + (7 & (b >>>= E)), b >>>= 3, v -= 3
											} else {
												for (U = E + 7; v < U;) {
													if (0 === _) break e;
													_--, b += h[p++] << v, v += 8
												}
												v -= E, R = 0, S = 11 + (127 & (b >>>= E)), b >>>= 7, v -= 7
											}
											if (r.have + S > r.nlen + r.ndist) {
												e.msg = "invalid bit length repeat", r.mode = 30;
												break
											}
											for (; S--;) r.lens[r.have++] = R
										}
									}
									if (30 === r.mode) break;
									if (0 === r.lens[256]) {
										e.msg = "invalid code -- missing end-of-block", r.mode = 30;
										break
									}
									if (r.lenbits = 9, F = {
											bits: r.lenbits
										}, D = o(1, r.lens, 0, r.nlen, r.lencode, 0, r.work, F), r.lenbits = F.bits, D) {
										e.msg = "invalid literal/lengths set", r.mode = 30;
										break
									}
									if (r.distbits = 6, r.distcode = r.distdyn, F = {
											bits: r.distbits
										}, D = o(2, r.lens, r.nlen, r.ndist, r.distcode, 0, r.work, F), r.distbits = F.bits, D) {
										e.msg = "invalid distances set", r.mode = 30;
										break
									}
									if (r.mode = 20, 6 === t) break e;
								case 20:
									r.mode = 21;
								case 21:
									if (6 <= _ && 258 <= g) {
										e.next_out = m, e.avail_out = g, e.next_in = p, e.avail_in = _, r.hold = b, r.bits = v, s(e, w), m = e.next_out, d = e.output, g = e.avail_out, p = e.next_in, h = e.input, _ = e.avail_in, b = r.hold, v = r.bits, 12 === r.mode && (r.back = -1);
										break
									}
									for (r.back = 0; C = (N = r.lencode[b & (1 << r.lenbits) - 1]) >>> 16 & 255, O = 65535 & N, !((E = N >>> 24) <= v);) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									if (C && 0 == (240 & C)) {
										for (I = E, T = C, B = O; C = (N = r.lencode[B + ((b & (1 << I + T) - 1) >> I)]) >>> 16 & 255, O = 65535 & N, !(I + (E = N >>> 24) <= v);) {
											if (0 === _) break e;
											_--, b += h[p++] << v, v += 8
										}
										b >>>= I, v -= I, r.back += I
									}
									if (b >>>= E, v -= E, r.back += E, r.length = O, 0 === C) {
										r.mode = 26;
										break
									}
									if (32 & C) {
										r.back = -1, r.mode = 12;
										break
									}
									if (64 & C) {
										e.msg = "invalid literal/length code", r.mode = 30;
										break
									}
									r.extra = 15 & C, r.mode = 22;
								case 22:
									if (r.extra) {
										for (U = r.extra; v < U;) {
											if (0 === _) break e;
											_--, b += h[p++] << v, v += 8
										}
										r.length += b & (1 << r.extra) - 1, b >>>= r.extra, v -= r.extra, r.back += r.extra
									}
									r.was = r.length, r.mode = 23;
								case 23:
									for (; C = (N = r.distcode[b & (1 << r.distbits) - 1]) >>> 16 & 255, O = 65535 & N, !((E = N >>> 24) <= v);) {
										if (0 === _) break e;
										_--, b += h[p++] << v, v += 8
									}
									if (0 == (240 & C)) {
										for (I = E, T = C, B = O; C = (N = r.distcode[B + ((b & (1 << I + T) - 1) >> I)]) >>> 16 & 255, O = 65535 & N, !(I + (E = N >>> 24) <= v);) {
											if (0 === _) break e;
											_--, b += h[p++] << v, v += 8
										}
										b >>>= I, v -= I, r.back += I
									}
									if (b >>>= E, v -= E, r.back += E, 64 & C) {
										e.msg = "invalid distance code", r.mode = 30;
										break
									}
									r.offset = O, r.extra = 15 & C, r.mode = 24;
								case 24:
									if (r.extra) {
										for (U = r.extra; v < U;) {
											if (0 === _) break e;
											_--, b += h[p++] << v, v += 8
										}
										r.offset += b & (1 << r.extra) - 1, b >>>= r.extra, v -= r.extra, r.back += r.extra
									}
									if (r.offset > r.dmax) {
										e.msg = "invalid distance too far back", r.mode = 30;
										break
									}
									r.mode = 25;
								case 25:
									if (0 === g) break e;
									if (S = w - g, r.offset > S) {
										if ((S = r.offset - S) > r.whave && r.sane) {
											e.msg = "invalid distance too far back", r.mode = 30;
											break
										}
										A = S > r.wnext ? (S -= r.wnext, r.wsize - S) : r.wnext - S, S > r.length && (S = r.length), z = r.window
									} else z = d, A = m - r.offset, S = r.length;
									for (g < S && (S = g), g -= S, r.length -= S; d[m++] = z[A++], --S;);
									0 === r.length && (r.mode = 21);
									break;
								case 26:
									if (0 === g) break e;
									d[m++] = r.length, g--, r.mode = 21;
									break;
								case 27:
									if (r.wrap) {
										for (; v < 32;) {
											if (0 === _) break e;
											_--, b |= h[p++] << v, v += 8
										}
										if (w -= g, e.total_out += w, r.total += w, w && (e.adler = r.check = r.flags ? a(r.check, d, w, m - w) : i(r.check, d, w, m - w)), w = g, (r.flags ? b : f(b)) !== r.check) {
											e.msg = "incorrect data check", r.mode = 30;
											break
										}
										v = b = 0
									}
									r.mode = 28;
								case 28:
									if (r.wrap && r.flags) {
										for (; v < 32;) {
											if (0 === _) break e;
											_--, b += h[p++] << v, v += 8
										}
										if (b !== (4294967295 & r.total)) {
											e.msg = "incorrect length check", r.mode = 30;
											break
										}
										v = b = 0
									}
									r.mode = 29;
								case 29:
									D = 1;
									break e;
								case 30:
									D = -3;
									break e;
								case 31:
									return -4;
								default:
									return l
							}
							return e.next_out = m, e.avail_out = g, e.next_in = p, e.avail_in = _, r.hold = b, r.bits = v, (r.wsize || w !== e.avail_out && r.mode < 30 && (r.mode < 27 || 4 !== t)) && x(e, e.output, e.next_out, w - e.avail_out) ? (r.mode = 31, -4) : (y -= e.avail_in, w -= e.avail_out, e.total_in += y, e.total_out += w, r.total += w, r.wrap && w && (e.adler = r.check = r.flags ? a(r.check, d, w, e.next_out - w) : i(r.check, d, w, e.next_out - w)), e.data_type = r.bits + (r.last ? 64 : 0) + (12 === r.mode ? 128 : 0) + (20 === r.mode || 15 === r.mode ? 256 : 0), (0 == y && 0 === w || 4 === t) && D === u && (D = -5), D)
						}, r.inflateEnd = function(e) {
							if (!e || !e.state) return l;
							var t = e.state;
							return t.window && (t.window = null), e.state = null, u
						}, r.inflateGetHeader = function(e, t) {
							var r;
							return e && e.state ? 0 == (2 & (r = e.state).wrap) ? l : ((r.head = t).done = !1, u) : l
						}, r.inflateSetDictionary = function(e, t) {
							var r, n = t.length;
							return e && e.state ? 0 !== (r = e.state).wrap && 11 !== r.mode ? l : 11 === r.mode && i(1, t, n, 0) !== r.check ? -3 : x(e, t, n, n) ? (r.mode = 31, -4) : (r.havedict = 1, u) : l
						}, r.inflateInfo = "pako inflate (from Nodeca project)"
					}, {
						"../utils/common": 41,
						"./adler32": 43,
						"./crc32": 45,
						"./inffast": 48,
						"./inftrees": 50
					}],
					50: [function(e, t, r) {
						"use strict";
						var n = e("../utils/common"),
							i = [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],
							a = [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],
							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, 0, 0],
							o = [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];
						t.exports = function(e, t, r, u, l, c, h, d) {
							var f, p, m, _, g, b, v, y, w, k = d.bits,
								x = 0,
								S = 0,
								A = 0,
								z = 0,
								E = 0,
								C = 0,
								O = 0,
								I = 0,
								T = 0,
								B = 0,
								R = null,
								D = 0,
								F = new n.Buf16(16),
								U = new n.Buf16(16),
								N = null,
								P = 0;
							for (x = 0; x <= 15; x++) F[x] = 0;
							for (S = 0; S < u; S++) F[t[r + S]]++;
							for (E = k, z = 15; 1 <= z && 0 === F[z]; z--);
							if (z < E && (E = z), 0 === z) return l[c++] = 20971520, l[c++] = 20971520, d.bits = 1, 0;
							for (A = 1; A < z && 0 === F[A]; A++);
							for (E < A && (E = A), x = I = 1; x <= 15; x++)
								if (I <<= 1, (I -= F[x]) < 0) return -1;
							if (0 < I && (0 === e || 1 !== z)) return -1;
							for (U[1] = 0, x = 1; x < 15; x++) U[x + 1] = U[x] + F[x];
							for (S = 0; S < u; S++) 0 !== t[r + S] && (h[U[t[r + S]]++] = S);
							if (b = 0 === e ? (R = N = h, 19) : 1 === e ? (R = i, D -= 257, N = a, P -= 257, 256) : (R = s, N = o, -1), x = A, g = c, O = S = B = 0, m = -1, _ = (T = 1 << (C = E)) - 1, 1 === e && 852 < T || 2 === e && 592 < T) return 1;
							for (;;) {
								for (v = x - O, w = h[S] < b ? (y = 0, h[S]) : h[S] > b ? (y = N[P + h[S]], R[D + h[S]]) : (y = 96, 0), f = 1 << x - O, A = p = 1 << C; l[g + (B >> O) + (p -= f)] = v << 24 | y << 16 | w | 0, 0 !== p;);
								for (f = 1 << x - 1; B & f;) f >>= 1;
								if (0 !== f ? (B &= f - 1, B += f) : B = 0, S++, 0 == --F[x]) {
									if (x === z) break;
									x = t[r + h[S]]
								}
								if (E < x && (B & _) !== m) {
									for (0 === O && (O = E), g += A, I = 1 << (C = x - O); C + O < z && !((I -= F[C + O]) <= 0);) C++, I <<= 1;
									if (T += 1 << C, 1 === e && 852 < T || 2 === e && 592 < T) return 1;
									l[m = B & _] = E << 24 | C << 16 | g - c | 0
								}
							}
							return 0 !== B && (l[g + B] = x - O << 24 | 64 << 16 | 0), d.bits = E, 0
						}
					}, {
						"../utils/common": 41
					}],
					51: [function(e, t, r) {
						"use strict";
						t.exports = {
							2: "need dictionary",
							1: "stream end",
							0: "",
							"-1": "file error",
							"-2": "stream error",
							"-3": "data error",
							"-4": "insufficient memory",
							"-5": "buffer error",
							"-6": "incompatible version"
						}
					}, {}],
					52: [function(e, t, r) {
						"use strict";
						var n = e("../utils/common");

						function i(e) {
							for (var t = e.length; 0 <= --t;) e[t] = 0
						}
						var a = 256,
							s = 286,
							o = 30,
							u = 15,
							l = 16,
							c = [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],
							h = [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],
							d = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7],
							f = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15],
							p = new Array(576);
						i(p);
						var m = new Array(60);
						i(m);
						var _ = new Array(512);
						i(_);
						var g = new Array(256);
						i(g);
						var b = new Array(29);
						i(b);
						var v, y, w, k = new Array(o);

						function x(e, t, r, n, i) {
							this.static_tree = e, this.extra_bits = t, this.extra_base = r, this.elems = n, this.max_length = i, this.has_stree = e && e.length
						}

						function S(e, t) {
							this.dyn_tree = e, this.max_code = 0, this.stat_desc = t
						}

						function A(e) {
							return e < 256 ? _[e] : _[256 + (e >>> 7)]
						}

						function z(e, t) {
							e.pending_buf[e.pending++] = 255 & t, e.pending_buf[e.pending++] = t >>> 8 & 255
						}

						function E(e, t, r) {
							e.bi_valid > l - r ? (e.bi_buf |= t << e.bi_valid & 65535, z(e, e.bi_buf), e.bi_buf = t >> l - e.bi_valid, e.bi_valid += r - l) : (e.bi_buf |= t << e.bi_valid & 65535, e.bi_valid += r)
						}

						function C(e, t, r) {
							E(e, r[2 * t], r[2 * t + 1])
						}

						function O(e, t) {
							for (var r = 0; r |= 1 & e, e >>>= 1, r <<= 1, 0 < --t;);
							return r >>> 1
						}

						function I(e, t, r) {
							var n, i, a = new Array(u + 1),
								s = 0;
							for (n = 1; n <= u; n++) a[n] = s = s + r[n - 1] << 1;
							for (i = 0; i <= t; i++) {
								var o = e[2 * i + 1];
								0 !== o && (e[2 * i] = O(a[o]++, o))
							}
						}

						function T(e) {
							var t;
							for (t = 0; t < s; t++) e.dyn_ltree[2 * t] = 0;
							for (t = 0; t < o; t++) e.dyn_dtree[2 * t] = 0;
							for (t = 0; t < 19; t++) e.bl_tree[2 * t] = 0;
							e.dyn_ltree[512] = 1, e.opt_len = e.static_len = 0, e.last_lit = e.matches = 0
						}

						function B(e) {
							8 < e.bi_valid ? z(e, e.bi_buf) : 0 < e.bi_valid && (e.pending_buf[e.pending++] = e.bi_buf), e.bi_buf = 0, e.bi_valid = 0
						}

						function R(e, t, r, n) {
							var i = 2 * t,
								a = 2 * r;
							return e[i] < e[a] || e[i] === e[a] && n[t] <= n[r]
						}

						function D(e, t, r) {
							for (var n = e.heap[r], i = r << 1; i <= e.heap_len && (i < e.heap_len && R(t, e.heap[i + 1], e.heap[i], e.depth) && i++, !R(t, n, e.heap[i], e.depth));) e.heap[r] = e.heap[i], r = i, i <<= 1;
							e.heap[r] = n
						}

						function F(e, t, r) {
							var n, i, s, o, u = 0;
							if (0 !== e.last_lit)
								for (; n = e.pending_buf[e.d_buf + 2 * u] << 8 | e.pending_buf[e.d_buf + 2 * u + 1], i = e.pending_buf[e.l_buf + u], u++, 0 === n ? C(e, i, t) : (C(e, (s = g[i]) + a + 1, t), 0 !== (o = c[s]) && E(e, i -= b[s], o), C(e, s = A(--n), r), 0 !== (o = h[s]) && E(e, n -= k[s], o)), u < e.last_lit;);
							C(e, 256, t)
						}

						function U(e, t) {
							var r, n, i, a = t.dyn_tree,
								s = t.stat_desc.static_tree,
								o = t.stat_desc.has_stree,
								l = t.stat_desc.elems,
								c = -1;
							for (e.heap_len = 0, e.heap_max = 573, r = 0; r < l; r++) 0 !== a[2 * r] ? (e.heap[++e.heap_len] = c = r, e.depth[r] = 0) : a[2 * r + 1] = 0;
							for (; e.heap_len < 2;) a[2 * (i = e.heap[++e.heap_len] = c < 2 ? ++c : 0)] = 1, e.depth[i] = 0, e.opt_len--, o && (e.static_len -= s[2 * i + 1]);
							for (t.max_code = c, r = e.heap_len >> 1; 1 <= r; r--) D(e, a, r);
							for (i = l; r = e.heap[1], e.heap[1] = e.heap[e.heap_len--], D(e, a, 1), n = e.heap[1], e.heap[--e.heap_max] = r, e.heap[--e.heap_max] = n, a[2 * i] = a[2 * r] + a[2 * n], e.depth[i] = (e.depth[r] >= e.depth[n] ? e.depth[r] : e.depth[n]) + 1, a[2 * r + 1] = a[2 * n + 1] = i, e.heap[1] = i++, D(e, a, 1), 2 <= e.heap_len;);
							e.heap[--e.heap_max] = e.heap[1],
								function(e, t) {
									var r, n, i, a, s, o, l = t.dyn_tree,
										c = t.max_code,
										h = t.stat_desc.static_tree,
										d = t.stat_desc.has_stree,
										f = t.stat_desc.extra_bits,
										p = t.stat_desc.extra_base,
										m = t.stat_desc.max_length,
										_ = 0;
									for (a = 0; a <= u; a++) e.bl_count[a] = 0;
									for (l[2 * e.heap[e.heap_max] + 1] = 0, r = e.heap_max + 1; r < 573; r++) m < (a = l[2 * l[2 * (n = e.heap[r]) + 1] + 1] + 1) && (a = m, _++), l[2 * n + 1] = a, c < n || (e.bl_count[a]++, s = 0, p <= n && (s = f[n - p]), o = l[2 * n], e.opt_len += o * (a + s), d && (e.static_len += o * (h[2 * n + 1] + s)));
									if (0 !== _) {
										do {
											for (a = m - 1; 0 === e.bl_count[a];) a--;
											e.bl_count[a]--, e.bl_count[a + 1] += 2, e.bl_count[m]--, _ -= 2
										} while (0 < _);
										for (a = m; 0 !== a; a--)
											for (n = e.bl_count[a]; 0 !== n;) c < (i = e.heap[--r]) || (l[2 * i + 1] !== a && (e.opt_len += (a - l[2 * i + 1]) * l[2 * i], l[2 * i + 1] = a), n--)
									}
								}(e, t), I(a, c, e.bl_count)
						}

						function N(e, t, r) {
							var n, i, a = -1,
								s = t[1],
								o = 0,
								u = 7,
								l = 4;
							for (0 === s && (u = 138, l = 3), t[2 * (r + 1) + 1] = 65535, n = 0; n <= r; n++) i = s, s = t[2 * (n + 1) + 1], ++o < u && i === s || (o < l ? e.bl_tree[2 * i] += o : 0 !== i ? (i !== a && e.bl_tree[2 * i]++, e.bl_tree[32]++) : o <= 10 ? e.bl_tree[34]++ : e.bl_tree[36]++, a = i, l = (o = 0) === s ? (u = 138, 3) : i === s ? (u = 6, 3) : (u = 7, 4))
						}

						function P(e, t, r) {
							var n, i, a = -1,
								s = t[1],
								o = 0,
								u = 7,
								l = 4;
							for (0 === s && (u = 138, l = 3), n = 0; n <= r; n++)
								if (i = s, s = t[2 * (n + 1) + 1], !(++o < u && i === s)) {
									if (o < l)
										for (; C(e, i, e.bl_tree), 0 != --o;);
									else 0 !== i ? (i !== a && (C(e, i, e.bl_tree), o--), C(e, 16, e.bl_tree), E(e, o - 3, 2)) : o <= 10 ? (C(e, 17, e.bl_tree), E(e, o - 3, 3)) : (C(e, 18, e.bl_tree), E(e, o - 11, 7));
									a = i, l = (o = 0) === s ? (u = 138, 3) : i === s ? (u = 6, 3) : (u = 7, 4)
								}
						}
						i(k);
						var L = !1;

						function j(e, t, r, i) {
							E(e, 0 + (i ? 1 : 0), 3),
								function(e, t, r, i) {
									B(e), z(e, r), z(e, ~r), n.arraySet(e.pending_buf, e.window, t, r, e.pending), e.pending += r
								}(e, t, r)
						}
						r._tr_init = function(e) {
							L || (function() {
								var e, t, r, n, i, a = new Array(u + 1);
								for (n = r = 0; n < 28; n++)
									for (b[n] = r, e = 0; e < 1 << c[n]; e++) g[r++] = n;
								for (g[r - 1] = n, n = i = 0; n < 16; n++)
									for (k[n] = i, e = 0; e < 1 << h[n]; e++) _[i++] = n;
								for (i >>= 7; n < o; n++)
									for (k[n] = i << 7, e = 0; e < 1 << h[n] - 7; e++) _[256 + i++] = n;
								for (t = 0; t <= u; t++) a[t] = 0;
								for (e = 0; e <= 143;) p[2 * e + 1] = 8, e++, a[8]++;
								for (; e <= 255;) p[2 * e + 1] = 9, e++, a[9]++;
								for (; e <= 279;) p[2 * e + 1] = 7, e++, a[7]++;
								for (; e <= 287;) p[2 * e + 1] = 8, e++, a[8]++;
								for (I(p, 287, a), e = 0; e < o; e++) m[2 * e + 1] = 5, m[2 * e] = O(e, 5);
								v = new x(p, c, 257, s, u), y = new x(m, h, 0, o, u), w = new x(new Array(0), d, 0, 19, 7)
							}(), L = !0), e.l_desc = new S(e.dyn_ltree, v), e.d_desc = new S(e.dyn_dtree, y), e.bl_desc = new S(e.bl_tree, w), e.bi_buf = 0, e.bi_valid = 0, T(e)
						}, r._tr_stored_block = j, r._tr_flush_block = function(e, t, r, n) {
							var i, s, o = 0;
							0 < e.level ? (2 === e.strm.data_type && (e.strm.data_type = function(e) {
								var t, r = 4093624447;
								for (t = 0; t <= 31; t++, r >>>= 1)
									if (1 & r && 0 !== e.dyn_ltree[2 * t]) return 0;
								if (0 !== e.dyn_ltree[18] || 0 !== e.dyn_ltree[20] || 0 !== e.dyn_ltree[26]) return 1;
								for (t = 32; t < a; t++)
									if (0 !== e.dyn_ltree[2 * t]) return 1;
								return 0
							}(e)), U(e, e.l_desc), U(e, e.d_desc), o = function(e) {
								var t;
								for (N(e, e.dyn_ltree, e.l_desc.max_code), N(e, e.dyn_dtree, e.d_desc.max_code), U(e, e.bl_desc), t = 18; 3 <= t && 0 === e.bl_tree[2 * f[t] + 1]; t--);
								return e.opt_len += 3 * (t + 1) + 5 + 5 + 4, t
							}(e), i = e.opt_len + 3 + 7 >>> 3, (s = e.static_len + 3 + 7 >>> 3) <= i && (i = s)) : i = s = r + 5, r + 4 <= i && -1 !== t ? j(e, t, r, n) : 4 === e.strategy || s === i ? (E(e, 2 + (n ? 1 : 0), 3), F(e, p, m)) : (E(e, 4 + (n ? 1 : 0), 3), function(e, t, r, n) {
								var i;
								for (E(e, t - 257, 5), E(e, r - 1, 5), E(e, n - 4, 4), i = 0; i < n; i++) E(e, e.bl_tree[2 * f[i] + 1], 3);
								P(e, e.dyn_ltree, t - 1), P(e, e.dyn_dtree, r - 1)
							}(e, e.l_desc.max_code + 1, e.d_desc.max_code + 1, o + 1), F(e, e.dyn_ltree, e.dyn_dtree)), T(e), n && B(e)
						}, r._tr_tally = function(e, t, r) {
							return e.pending_buf[e.d_buf + 2 * e.last_lit] = t >>> 8 & 255, e.pending_buf[e.d_buf + 2 * e.last_lit + 1] = 255 & t, e.pending_buf[e.l_buf + e.last_lit] = 255 & r, e.last_lit++, 0 === t ? e.dyn_ltree[2 * r]++ : (e.matches++, t--, e.dyn_ltree[2 * (g[r] + a + 1)]++, e.dyn_dtree[2 * A(t)]++), e.last_lit === e.lit_bufsize - 1
						}, r._tr_align = function(e) {
							E(e, 2, 3), C(e, 256, p),
								function(e) {
									16 === e.bi_valid ? (z(e, e.bi_buf), e.bi_buf = 0, e.bi_valid = 0) : 8 <= e.bi_valid && (e.pending_buf[e.pending++] = 255 & e.bi_buf, e.bi_buf >>= 8, e.bi_valid -= 8)
								}(e)
						}
					}, {
						"../utils/common": 41
					}],
					53: [function(e, t, r) {
						"use strict";
						t.exports = function() {
							this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0
						}
					}, {}],
					54: [function(e, t, r) {
						"use strict";
						t.exports = "function" == typeof setImmediate ? setImmediate : function() {
							var e = [].slice.apply(arguments);
							e.splice(1, 0, 0), setTimeout.apply(null, e)
						}
					}, {}]
				}, {}, [10])(10)
			},
			756: (e, t, r) => {
				"use strict";
				r.r(t), r.d(t, {
					default: () => g
				});
				var n = r(72),
					i = r.n(n),
					a = r(825),
					s = r.n(a),
					o = r(659),
					u = r.n(o),
					l = r(56),
					c = r.n(l),
					h = r(540),
					d = r.n(h),
					f = r(113),
					p = r.n(f),
					m = r(297),
					_ = {};
				_.styleTagTransform = p(), _.setAttributes = c(), _.insert = u().bind(null, "head"), _.domAPI = s(), _.insertStyleElement = d(), i()(m.A, _);
				const g = m.A && m.A.locals ? m.A.locals : void 0
			},
			242: (e, t, r) => {
				"use strict";
				r.r(t), r.d(t, {
					default: () => g
				});
				var n = r(72),
					i = r.n(n),
					a = r(825),
					s = r.n(a),
					o = r(659),
					u = r.n(o),
					l = r(56),
					c = r.n(l),
					h = r(540),
					d = r.n(h),
					f = r(113),
					p = r.n(f),
					m = r(513),
					_ = {};
				_.styleTagTransform = p(), _.setAttributes = c(), _.insert = u().bind(null, "head"), _.domAPI = s(), _.insertStyleElement = d(), i()(m.A, _);
				const g = m.A && m.A.locals ? m.A.locals : void 0
			},
			72: e => {
				"use strict";
				var t = [];

				function r(e) {
					for (var r = -1, n = 0; n < t.length; n++)
						if (t[n].identifier === e) {
							r = n;
							break
						} return r
				}

				function n(e, n) {
					for (var a = {}, s = [], o = 0; o < e.length; o++) {
						var u = e[o],
							l = n.base ? u[0] + n.base : u[0],
							c = a[l] || 0,
							h = "".concat(l, " ").concat(c);
						a[l] = c + 1;
						var d = r(h),
							f = {
								css: u[1],
								media: u[2],
								sourceMap: u[3],
								supports: u[4],
								layer: u[5]
							};
						if (-1 !== d) t[d].references++, t[d].updater(f);
						else {
							var p = i(f, n);
							n.byIndex = o, t.splice(o, 0, {
								identifier: h,
								updater: p,
								references: 1
							})
						}
						s.push(h)
					}
					return s
				}

				function i(e, t) {
					var r = t.domAPI(t);
					return r.update(e),
						function(t) {
							if (t) {
								if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap && t.supports === e.supports && t.layer === e.layer) return;
								r.update(e = t)
							} else r.remove()
						}
				}
				e.exports = function(e, i) {
					var a = n(e = e || [], i = i || {});
					return function(e) {
						e = e || [];
						for (var s = 0; s < a.length; s++) {
							var o = r(a[s]);
							t[o].references--
						}
						for (var u = n(e, i), l = 0; l < a.length; l++) {
							var c = r(a[l]);
							0 === t[c].references && (t[c].updater(), t.splice(c, 1))
						}
						a = u
					}
				}
			},
			659: e => {
				"use strict";
				var t = {};
				e.exports = function(e, r) {
					var n = function(e) {
						if (void 0 === t[e]) {
							var r = document.querySelector(e);
							if (window.HTMLIFrameElement && r instanceof window.HTMLIFrameElement) try {
								r = r.contentDocument.head
							} catch (e) {
								r = null
							}
							t[e] = r
						}
						return t[e]
					}(e);
					if (!n) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
					n.appendChild(r)
				}
			},
			540: e => {
				"use strict";
				e.exports = function(e) {
					var t = document.createElement("style");
					return e.setAttributes(t, e.attributes), e.insert(t, e.options), t
				}
			},
			56: (e, t, r) => {
				"use strict";
				e.exports = function(e) {
					var t = r.nc;
					t && e.setAttribute("nonce", t)
				}
			},
			825: e => {
				"use strict";
				e.exports = function(e) {
					if ("undefined" == typeof document) return {
						update: function() {},
						remove: function() {}
					};
					var t = e.insertStyleElement(e);
					return {
						update: function(r) {
							! function(e, t, r) {
								var n = "";
								r.supports && (n += "@supports (".concat(r.supports, ") {")), r.media && (n += "@media ".concat(r.media, " {"));
								var i = void 0 !== r.layer;
								i && (n += "@layer".concat(r.layer.length > 0 ? " ".concat(r.layer) : "", " {")), n += r.css, i && (n += "}"), r.media && (n += "}"), r.supports && (n += "}");
								var a = r.sourceMap;
								a && "undefined" != typeof btoa && (n += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a)))), " */")), t.styleTagTransform(n, e, t.options)
							}(t, e, r)
						},
						remove: function() {
							! function(e) {
								if (null === e.parentNode) return !1;
								e.parentNode.removeChild(e)
							}(t)
						}
					}
				}
			},
			113: e => {
				"use strict";
				e.exports = function(e, t) {
					if (t.styleSheet) t.styleSheet.cssText = e;
					else {
						for (; t.firstChild;) t.removeChild(t.firstChild);
						t.appendChild(document.createTextNode(e))
					}
				}
			},
			15: (e, t, r) => {
				"use strict";

				function n(e) {
					return e && "__vue__" in e
				}
				r.r(t), r.d(t, {
					check: () => o,
					load: () => u,
					name: () => i,
					skip: () => a
				});
				const i = "[builtin]视频页面前置";

				function a({
					env: e
				}) {
					return !e.isVideoPage
				}

				function s({
					document: e
				}) {
					const t = e.querySelector(".living-page-wrapper"),
						r = e.querySelector("#cmcPlayer_container"),
						i = e.querySelector(".living-page-wrapper .operate_wrap");
					return n(t) && n(r) && i ? {
						course: t,
						player: r,
						wrapper: i,
						courseVue: t.__vue__,
						playerVue: r.__vue__
					} : null
				}

				function o({
					document: e
				}) {
					return !!s({
						document: e
					})
				}

				function u({
					logger: e,
					document: t,
					extendContext: n
				}) {
					r(756);
					const i = s({
						document: t
					});
					e.debug("视频页面元素:", i), n({
						elements: i
					});
					const a = i.wrapper,
						o = t.createElement("div");
					o.className = "mem-btn-group", a.insertBefore(o, a.firstChild), e.debug("wrapper", a), n({
						addButton: function(r, n, i) {
							const a = t.createElement("button");
							a.className = "mem-btn mem-btn-primary", a.textContent = n, a.style = "display: inline-block", a.setAttribute("data-key", r), a.onclick = () => {
								i({
									element: a,
									setStatus: t => {
										e.debug("(button)" + n, "set status:", t), a.innerText = t ? n + "(" + t + ")" : n
									}
								})
							};
							for (const e of o.children)
								if (Number(e.getAttribute("data-key")) > r) return o.insertBefore(a, e), a;
							return o.appendChild(a), a
						}
					})
				}
			},
			809: (e, t, r) => {
				"use strict";
				r.r(t), r.d(t, {
					check: () => d,
					load: () => f,
					name: () => u,
					options: () => c,
					required: () => l
				});
				var n = r(710),
					i = r.n(n),
					a = r(213),
					s = r(99),
					o = r(838);
				const u = "课件下载",
					l = ["builtin-video-pages"],
					c = {
						"auto-remove": !0
					};

				function h(e) {
					return Array.from(e.courseVue.$data.pptList)
				}

				function d({
					elements: e
				}) {
					return h(e).length > 0
				}

				function f({
					logger: e,
					elements: t,
					addButton: r
				}, n) {
					let u = h(t).map((e => ({
						...e,
						ppt: {
							...e.ppt
						}
					}))).map((e => (e.imgSrc = e.imgSrc.replace("http://", "https://"), e.s_imgSrc = e.s_imgSrc.replace("http://", "https://"), e)));
					e.debug(`PPT下载(共${u.length}个):`, u[0]), u = function(e) {
						const t = [];
						for (let r = 0; r < e.length; r++) r + 1 < e.length && e[r + 1].switchTime === e[r].switchTime || t.push(e[r]);
						return t
					}(u), e.debug(`删除同一秒内的PPT后(共${u.length}个):`, u[0]), r(1.1, "打包下载", (async ({
						setStatus: t
					}) => {
						t("加载JSZip库");
						const r = new(i());
						let n = 0,
							o = u.length;
						await (0, s.f)(u.map((async (i, a) => {
							const s = `ppt-${String(a).padStart(4,"0")}-${i.switchTime.replace(/\:/g,"-")}.jpg`,
								u = await fetch(i.imgSrc, {
									method: "GET"
								}),
								l = await u.blob();
							e.debug("添加图片", s, l), t(`正在下载(${++n}/${o})`), r.file(s, l, {
								binary: !0
							})
						})), 8), t("生成Zip"), e.debug(r);
						const l = await r.generateAsync({
							type: "blob"
						});
						e.debug("完成生成zip", l), t("完成"), (0, a.saveAs)(l, "ppt.zip"), t(null)
					})), r(1.2, "导出为PDF", (async ({
						setStatus: t
					}) => {
						let r = "",
							n = 0,
							i = u.length;
						const a = await (0, s.f)(u.map((async (r, a) => {
							const s = await fetch(r.imgSrc, {
								method: "GET"
							});
							t(`正在下载(${++n}/${i})`);
							const o = await s.blob(),
								u = URL.createObjectURL(o);
							return e.log(a, u), u
						})), 8);
						t("生成PDF");
						for (const e of a) r += `<div class="page"><img src="${e}" /></div>`;
						await (0, o.j)({
							width: 1280,
							height: 720,
							margin: 0
						}, r), t(null)
					}))
				}
			},
			238: (e, t, r) => {
				"use strict";
				r.r(t), r.d(t, {
					load: () => a,
					name: () => n,
					required: () => i
				});
				const n = "视频链接解析",
					i = ["builtin-video-pages"];

				function a({
					logger: e,
					clipboard: t,
					elements: r,
					addButton: n
				}) {
					n(2, "解析链接", (({
						setStatus: n
					}) => {
						const i = function() {
							try {
								return "live" === r.playerVue.liveType ? JSON.parse(r.playerVue.liveUrl.replace("mutli-rate: ", ""))[0].url : document.querySelector("#cmc_player_video").src
							} catch (e) {
								return null
							}
						}();
						i ? (e.info("视频链接:", i), t.copy(i), n("已拷贝"), setTimeout((() => {
							n(null)
						}), 500)) : alert("获取视频地址失败,请待播放器完全加载后再试。")
					}))
				}
			},
			906: (e, t, r) => {
				"use strict";
				r.r(t), r.d(t, {
					check: () => o,
					description: () => i,
					load: () => u,
					name: () => n,
					required: () => a,
					skip: () => s
				});
				const n = "示例插件",
					i = "这是一个示例插件,他不应该被加载到脚本中。",
					a = [];

				function s() {
					return !1
				}

				function o() {
					return !0
				}

				function u({
					logger: e
				}) {
					e.debug("示例插件已被加载。")
				}
			},
			928: (e, t, r) => {
				"use strict";
				r.r(t), r.d(t, {
					load: () => i,
					name: () => n
				});
				const n = "专注模式";

				function i() {
					r(242)
				}
			},
			342: (e, t, r) => {
				var n = {
					"./builtin-video-pages/index.js": 15,
					"./download-ppt/index.js": 809,
					"./download-video/index.js": 238,
					"./example-plugin/index.js": 906,
					"./focus-mode/index.js": 928
				};

				function i(e) {
					var t = a(e);
					return r(t)
				}

				function a(e) {
					if (!r.o(n, e)) {
						var t = new Error("Cannot find module '" + e + "'");
						throw t.code = "MODULE_NOT_FOUND", t
					}
					return n[e]
				}
				i.keys = function() {
					return Object.keys(n)
				}, i.resolve = a, e.exports = i, i.id = 342
			},
			838: (e, t, r) => {
				"use strict";
				r.d(t, {
					j: () => a,
					l: () => i
				});
				var n = r(484);

				function i(e) {
					const t = document.createElement("input");
					t.style.position = "fixed", t.style.opacity = 0, t.value = e, document.body.appendChild(t), t.select(), document.execCommand("copy"), document.body.removeChild(t)
				}
				async function a(e, t) {
					const {
						width: r,
						height: i,
						margin: a
					} = e;
					t = "<style> /* normalize browsers */ html, body { margin: 0 !important; padding: 0 !important; } </style>" + (t = "<style> /* page settings */ @page { size: " + r + "px " + i + "px; margin: " + a + "px; } </style>" + (t = "<style> div.page { width: " + (r - 2 * a) + "px; height: " + (i - 2 * a) + "px; } </style>" + t));
					const {
						style: s
					} = e;
					s && (t += "\n\n\n\x3c!-- additional style --\x3e<style>" + s + "</style>\n\n\n");
					const o = new Blob([t], {
							type: "text/html;charset=utf-8"
						}),
						u = URL.createObjectURL(o);
					n.A.debug("blobUrl:", u);
					const l = document.createElement("iframe");
					l.style.display = "none", l.src = u, document.body.appendChild(l), l.onload = () => {
						setTimeout((() => {
							l.focus(), l.contentWindow.print()
						}), 1)
					}
				}
			},
			99: (e, t, r) => {
				"use strict";
				async function n(e) {
					return new Promise((t => setTimeout(t, e)))
				}

				function i(e, t) {
					return new Promise(((r, n) => {
						let i = 0,
							a = 0,
							s = 0,
							o = [];
						! function u() {
							if (console.log("!! ", a, e.length), a >= e.length) r(o);
							else
								for (; s < e.length && i < t;) {
									let t = s;
									e[s].then((e => {
										i--, a++, o[t] = e, u()
									})).catch((e => {
										n(e)
									})), i++, s++
								}
						}()
					}))
				}
				r.d(t, {
					f: () => i,
					y: () => n
				})
			},
			484: (e, t, r) => {
				"use strict";
				r.d(t, {
					A: () => i
				});
				const n = "[zju-helper]",
					i = {
						log(...e) {
							console.log(n, ...e)
						},
						error(...e) {
							console.error(n, ...e)
						},
						debug(...e) {
							console.debug(n, ...e)
						},
						info(...e) {
							console.info(n, ...e)
						}
					}
			}
		},
		t = {};

	function r(n) {
		var i = t[n];
		if (void 0 !== i) return i.exports;
		var a = t[n] = {
			id: n,
			exports: {}
		};
		return e[n].call(a.exports, a, a.exports, r), a.exports
	}
	r.n = e => {
		var t = e && e.__esModule ? () => e.default : () => e;
		return r.d(t, {
			a: t
		}), t
	}, r.d = (e, t) => {
		for (var n in t) r.o(t, n) && !r.o(e, n) && Object.defineProperty(e, n, {
			enumerable: !0,
			get: t[n]
		})
	}, r.g = function() {
		if ("object" == typeof globalThis) return globalThis;
		try {
			return this || new Function("return this")()
		} catch (e) {
			if ("object" == typeof window) return window
		}
	}(), r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), r.r = e => {
		"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
			value: "Module"
		}), Object.defineProperty(e, "__esModule", {
			value: !0
		})
	}, r.nc = void 0, (() => {
		"use strict";
		var e = r(484),
			t = r(99),
			n = r(838);
		const i = new class {
			constructor() {
				this.plugins = {};
				const e = r(342);
				e.keys().forEach((t => {
					const r = t.slice(2, -9);
					"example-plugin" !== r && (this.plugins[r] = e(t), this.plugins[r].slug = r)
				}))
			}
			async load() {
				const r = {
						logger: e.A,
						clipboard: {
							copy: n.l
						},
						window: unsafeWindow,
						document: unsafeWindow.document,
						env: {
							isVideoPage: "classroom.zju.edu.cn" === location.host && "/livingroom" === location.pathname || !("interactivemeta.cmc.zju.edu.cn" !== location.host || "/" !== location.pathname || !location.hash.startsWith("#/replay?"))
						},
						extendContext: e => {
							for (const t in e) Object.keys(r).includes(t) && r[t] instanceof Object ? r[t] = {
								...r[t],
								...e[t]
							} : r[t] = e[t]
						}
					},
					i = () => {
						for (const e in this.plugins)
							if (!this.plugins[e].loaded) return !1;
						return !0
					};
				e.A.debug("开始加载插件", this.plugins);
				let a = 0;
				do {
					for (const t in this.plugins) {
						const n = this.plugins[t];
						if (!n.loaded) {
							if (n.required && n.required instanceof Array && n.required.length > 0) {
								let t = "ok";
								for (const e of n.required) {
									if (this.plugins[e].skipped) {
										t = "skip";
										break
									}
									if (!this.plugins[e].loaded) {
										t = "wait";
										break
									}
								}
								if ("skip" === t) {
									n.loaded = !0, n.skipped = !0, e.A.debug(`跳过加载 ${n.slug} 插件,因为前置插件被跳过`);
									continue
								}
								if ("wait" === t) continue
							}
							if (n.skip instanceof Function && await n.skip(r)) {
								n.loaded = !0, n.skipped = !0, e.A.debug(`跳过加载 ${n.slug} 插件`);
								continue
							}
							if (n.check instanceof Function && !await n.check(r)) continue;
							await n.load({
								...r
							}), n.loaded = !0
						}
					}
					await (0, t.y)(100)
				} while (!i() && ++a < 129);
				e.A.info("插件加载完成!")
			}
			safe_load() {
				(async () => {
					try {
						await i.load()
					} catch (t) {
						throw e.A.error(t), t
					}
				})()
			}
		};
		i.safe_load()
	})()
})();