diff --git a/public/static/reader/epub/README.md b/public/static/reader/epub/README.md new file mode 100644 index 00000000..470f4db2 --- /dev/null +++ b/public/static/reader/epub/README.md @@ -0,0 +1,10 @@ +# ePubViewer + +## About +A web-based ebook viewer. + +Try out the web-app now + +## Compatibility + +Tested with Mozilla Firefox 20+, Google Chrome 30+, and Opera 30+. diff --git a/public/static/reader/epub/epubjs/epub.min.js b/public/static/reader/epub/epubjs/epub.min.js new file mode 100644 index 00000000..fff28008 --- /dev/null +++ b/public/static/reader/epub/epubjs/epub.min.js @@ -0,0 +1,8 @@ +/*! + * @overview RSVP - a tiny implementation of Promises/A+. + * @copyright Copyright (c) 2016 Yehuda Katz, Tom Dale, Stefan Penner and contributors + * @license Licensed under MIT license + * See https://raw.githubusercontent.com/tildeio/rsvp.js/master/LICENSE + * @version 3.5.0 + */ +"use strict";!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):b(a.RSVP=a.RSVP||{})}(this,function(a){function b(a,b){for(var c=0,d=a.length;c1)throw new Error("Second argument not supported");if("object"!=typeof a)throw new TypeError("Argument must be an object");return h.prototype=a,new h},Aa=[],Ba=void 0,Ca=1,Da=2,Ea=new y,Fa=new y;E.prototype._validateInput=function(a){return xa(a)},E.prototype._validationError=function(){return new Error("Array Methods must be provided an Array")},E.prototype._init=function(){this._result=new Array(this.length)},E.prototype._enumerate=function(){for(var a=this.length,b=this.promise,c=this._input,d=0;b._state===Ba&&d=i)l.resolve();else{if(c&&c.cancelled)return e.remove(),this.element.removeChild(f),void l.reject(new Error("User cancelled"));h=g,b=new EPUBJS.Chapter(this.spine[h],this.store),e.displayChapter(b,this.globalLayoutProperties).then(function(a){e.pageMap.forEach(function(a){j+=1,d.push({cfi:a.start,page:j})}),e.pageMap.length%2>0&&e.spreads&&(j+=1,d.push({cfi:e.pageMap[e.pageMap.length-1].end,page:j})),setTimeout(function(){k(l)},1)})}return l.promise}.bind(this);k().then(function(){e.remove(),this.element.removeChild(f),g.resolve(d)}.bind(this),function(a){g.reject(a)});return g.promise},EPUBJS.Book.prototype.generatePagination=function(a,b,c){var d=this,e=new RSVP.defer;return this.ready.spine.promise.then(function(){d.generatePageList(a,b,c).then(function(a){d.pageList=d.contents.pageList=a,d.pagination.process(a),d.ready.pageList.resolve(d.pageList),e.resolve(d.pageList)},function(a){e.reject(a)})}),e.promise},EPUBJS.Book.prototype.loadPagination=function(a){var b;return b="string"==typeof a?JSON.parse(a):a,b&&b.length&&(this.pageList=b,this.pagination.process(this.pageList),this.ready.pageList.resolve(this.pageList)),this.pageList},EPUBJS.Book.prototype.getPageList=function(){return this.ready.pageList.promise},EPUBJS.Book.prototype.getMetadata=function(){return this.ready.metadata.promise},EPUBJS.Book.prototype.getToc=function(){return this.ready.toc.promise},EPUBJS.Book.prototype.networkListeners=function(){var a=this;window.addEventListener("offline",function(b){a.online=!1,a.settings.storage&&a.fromStorage(!0),a.trigger("book:offline")},!1),window.addEventListener("online",function(b){a.online=!0,a.settings.storage&&a.fromStorage(!1),a.trigger("book:online")},!1)},EPUBJS.Book.prototype.listenToRenderer=function(a){var b=this;a.Events.forEach(function(c){a.on(c,function(a){b.trigger(c,a)})}),a.on("renderer:visibleRangeChanged",function(a){var b,c,d,e=[];this.pageList.length>0&&(b=this.pagination.pageFromCfi(a.start),d=this.pagination.percentageFromPage(b),e.push(b),a.end&&(c=this.pagination.pageFromCfi(a.end),e.push(c)),this.trigger("book:pageChanged",{anchorPage:b,percentage:d,pageRange:e}))}.bind(this)),a.on("render:loaded",this.loadChange.bind(this))},EPUBJS.Book.prototype.loadChange=function(a){var b,c,d=EPUBJS.core.uri(a),e=EPUBJS.core.uri(this.currentChapter.absolute);d.path!=e.path?(console.warn("Miss Match",d.path,this.currentChapter.absolute),b=this.spineIndexByURL[d.filename],c=new EPUBJS.Chapter(this.spine[b],this.store),this.currentChapter=c,this.renderer.currentChapter=c,this.renderer.afterLoad(this.renderer.render.docEl),this.renderer.beforeDisplay(function(){this.renderer.afterDisplay()}.bind(this))):this._rendering||this.renderer.reformat()},EPUBJS.Book.prototype.unlistenToRenderer=function(a){a.Events.forEach(function(b){a.off(b)})},EPUBJS.Book.prototype.coverUrl=function(){var a=this.ready.cover.promise.then(function(a){return this.settings.fromStorage?this.store.getUrl(this.contents.cover):this.settings.contained?this.zip.getUrl(this.contents.cover):this.contents.cover}.bind(this));return a.then(function(a){this.cover=a}.bind(this)),a},EPUBJS.Book.prototype.loadXml=function(a){return this.settings.fromStorage?this.store.getXml(a,this.settings.encoding):this.settings.contained?this.zip.getXml(a,this.settings.encoding):EPUBJS.core.request(a,"xml",this.settings.withCredentials)},EPUBJS.Book.prototype.urlFrom=function(a){var b,c=EPUBJS.core.uri(a),d=c.protocol,e="/"==c.path[0],f=window.location,g=f.origin||f.protocol+"//"+f.host,h=document.getElementsByTagName("base");return h.length&&(b=h[0].href),c.protocol?c.origin+c.path:!d&&e?(b||g)+c.path:d||e?void 0:EPUBJS.core.resolveUrl(b||f.pathname,c.path)},EPUBJS.Book.prototype.unarchive=function(a){return this.zip=new EPUBJS.Unarchiver,this.store=this.zip,this.zip.open(a)},EPUBJS.Book.prototype.isContained=function(a){if(a instanceof ArrayBuffer)return!0;var b=EPUBJS.core.uri(a);return!(!b.extension||"epub"!=b.extension&&"zip"!=b.extension)},EPUBJS.Book.prototype.isSaved=function(a){var b;return!!localStorage&&(b=localStorage.getItem(a),!(!localStorage||null===b))},EPUBJS.Book.prototype.generateBookKey=function(a){return"epubjs:"+EPUBJS.VERSION+":"+window.location.host+":"+a},EPUBJS.Book.prototype.saveContents=function(){if(!localStorage)return!1;localStorage.setItem(this.settings.bookKey,JSON.stringify(this.contents))},EPUBJS.Book.prototype.removeSavedContents=function(){if(!localStorage)return!1;localStorage.removeItem(this.settings.bookKey)},EPUBJS.Book.prototype.renderTo=function(a){var b=this;if(EPUBJS.core.isElement(a))this.element=a;else{if("string"!=typeof a)return void console.error("Not an Element");this.element=EPUBJS.core.getEl(a)}return this.opened.then(function(){return b.renderer.initialize(b.element,b.settings.width,b.settings.height),b.metadata.direction&&b.renderer.setDirection(b.metadata.direction),b._rendered(),b.startDisplay()})},EPUBJS.Book.prototype.startDisplay=function(){return this.settings.goto?this.goto(this.settings.goto):this.settings.previousLocationCfi?this.gotoCfi(this.settings.previousLocationCfi):this.displayChapter(this.spinePos,this.settings.displayLastPage)},EPUBJS.Book.prototype.restore=function(a){var b,c=this,d=["manifest","spine","metadata","cover","toc","spineNodeIndex","spineIndexByURL","globalLayoutProperties"],e=!1,f=this.generateBookKey(a),g=localStorage.getItem(f),h=d.length;if(this.settings.clearSaved&&(e=!0),!e&&"undefined"!=g&&null!==g)for(c.contents=JSON.parse(g),b=0;b=this.spine.length)&&(console.warn("Not A Valid Location"),f=0,b=!1,e=!1),g=new EPUBJS.Chapter(this.spine[f],this.store),this._rendering=!0,this._needsAssetReplacement()&&g.registerHook("beforeChapterRender",[EPUBJS.replace.head,EPUBJS.replace.resources,EPUBJS.replace.posters,EPUBJS.replace.svg],!0),h.currentChapter=g,d=h.renderer.displayChapter(g,this.globalLayoutProperties),e?h.renderer.gotoCfi(e):b&&h.renderer.lastPage(),d.then(function(a){h.spinePos=f,i.resolve(h.renderer),h.settings.fromStorage===!1&&h.settings.contained===!1&&h.preloadNextChapter(),h._rendering=!1,h._displayQ.dequeue(),0===h._displayQ.length()&&h._gotoQ.dequeue()},function(a){console.error("Could not load Chapter: "+g.absolute,a),h.trigger("book:chapterLoadFailed",g.absolute),h._rendering=!1,i.reject(a)}),i.promise):(this._q.enqueue("displayChapter",arguments),i.reject({message:"Rendering",stack:(new Error).stack}),i.promise)},EPUBJS.Book.prototype.nextPage=function(a){var a=a||new RSVP.defer;return this.isRendered?this.renderer.nextPage()?(a.resolve(!0),a.promise):this.nextChapter(a):(this._q.enqueue("nextPage",[a]),a.promise)},EPUBJS.Book.prototype.prevPage=function(a){var a=a||new RSVP.defer;return this.isRendered?this.renderer.prevPage()?(a.resolve(!0),a.promise):this.prevChapter(a):(this._q.enqueue("prevPage",[a]),a.promise)},EPUBJS.Book.prototype.nextChapter=function(a){var a=a||new RSVP.defer;if(this.spinePos0){for(var b=this.spinePos-1;this.spine[b]&&this.spine[b].linear&&"no"==this.spine[b].linear;)b--;if(b>=0)return this.displayChapter(b,!0,a)}return this.trigger("book:atStart"),a.resolve(!0),a.promise},EPUBJS.Book.prototype.getCurrentLocationCfi=function(){return!!this.isRendered&&this.renderer.currentLocationCfi},EPUBJS.Book.prototype.goto=function(a){return 0===a.indexOf("epubcfi(")?this.gotoCfi(a):a.indexOf("%")===a.length-1?this.gotoPercentage(parseInt(a.substring(0,a.length-1))/100):"number"==typeof a||isNaN(a)===!1?this.gotoPage(a):this.gotoHref(a)},EPUBJS.Book.prototype.gotoCfi=function(a,b){var c,d,e,f,g,h=b||new RSVP.defer;return this.isRendered?this._moving||this._rendering?(console.warn("Renderer is moving"),this._gotoQ.enqueue("gotoCfi",[a,h]),!1):(c=new EPUBJS.EpubCFI(a),(d=c.spinePos)!=-1&&(e=this.spine[d],f=h.promise,this._moving=!0,this.currentChapter&&this.spinePos===d?(this.renderer.gotoCfi(c),this._moving=!1,h.resolve(this.renderer.currentLocationCfi)):(e&&d!=-1||(d=0,e=this.spine[d]),g=this.displayChapter(a),g.then(function(a){this._moving=!1,h.resolve(a.currentLocationCfi)}.bind(this),function(){this._moving=!1}.bind(this))),f.then(function(){this._gotoQ.dequeue()}.bind(this)),f)):(console.warn("Not yet Rendered"),this.settings.previousLocationCfi=a,!1)},EPUBJS.Book.prototype.gotoHref=function(a,b){var c,d,e,f,g,h=b||new RSVP.defer;return this.isRendered?this._moving||this._rendering?(this._gotoQ.enqueue("gotoHref",[a,h]),!1):(c=a.split("#"),d=c[0],e=c[1]||!1,f=d.search("://")==-1?d.replace(EPUBJS.core.uri(this.settings.contentsPath).path,""):d.replace(this.settings.contentsPath,""),g=this.spineIndexByURL[f],d||(g=this.currentChapter?this.currentChapter.spinePos:0),"number"==typeof g&&(this.currentChapter&&g==this.currentChapter.spinePos?(e?this.renderer.section(e):this.renderer.firstPage(),h.resolve(this.renderer.currentLocationCfi),h.promise.then(function(){this._gotoQ.dequeue()}.bind(this)),h.promise):this.displayChapter(g).then(function(){e&&this.renderer.section(e),h.resolve(this.renderer.currentLocationCfi)}.bind(this)))):(this.settings.goto=a,!1)},EPUBJS.Book.prototype.gotoPage=function(a){var b=this.pagination.cfiFromPage(a);return this.gotoCfi(b)},EPUBJS.Book.prototype.gotoPercentage=function(a){var b=this.pagination.pageFromPercentage(a);return this.gotoPage(b)},EPUBJS.Book.prototype.preloadNextChapter=function(){var a,b=this.spinePos+1;if(b>=this.spine.length)return!1;(a=new EPUBJS.Chapter(this.spine[b]))&&EPUBJS.core.request(a.absolute)},EPUBJS.Book.prototype.storeOffline=function(){var a=this,b=EPUBJS.core.values(this.manifest);return this.store.put(b).then(function(){a.settings.stored=!0,a.trigger("book:stored")})},EPUBJS.Book.prototype.availableOffline=function(){return this.settings.stored>0},EPUBJS.Book.prototype.toStorage=function(){var a=this.settings.bookKey;this.store.isStored(a).then(function(b){return b===!0?(this.settings.stored=!0,!0):this.storeOffline().then(function(){this.store.token(a,!0)}.bind(this))}.bind(this))},EPUBJS.Book.prototype.fromStorage=function(a){EPUBJS.replace.head,EPUBJS.replace.resources,EPUBJS.replace.posters,EPUBJS.replace.svg;this.contained||this.settings.contained||(this.online&&this.opened.then(this.toStorage.bind(this)),this.store&&this.settings.fromStorage&&a===!1?(this.settings.fromStorage=!1,this.store.off("offline"),this.store=!1):this.settings.fromStorage||(this.store=new EPUBJS.Storage(this.settings.credentials),this.store.on("offline",function(a){a?(this.offline=!0,this.settings.fromStorage=!0,this.trigger("book:offline")):(this.offline=!1,this.settings.fromStorage=!1,this.trigger("book:online"))}.bind(this))))},EPUBJS.Book.prototype.setStyle=function(a,b,c){var d=["color","background","background-color"];if(!this.isRendered)return this._q.enqueue("setStyle",arguments);this.settings.styles[a]=b,this.renderer.setStyle(a,b,c),d.indexOf(a)===-1&&this.renderer.reformat()},EPUBJS.Book.prototype.removeStyle=function(a){if(!this.isRendered)return this._q.enqueue("removeStyle",arguments);this.renderer.removeStyle(a),this.renderer.reformat(),delete this.settings.styles[a]},EPUBJS.Book.prototype.resetClasses=function(a){if(!this.isRendered)return this._q.enqueue("setClasses",arguments);a.constructor===String&&(a=[a]),this.settings.classes=a,this.renderer.setClasses(this.settings.classes),this.renderer.reformat()},EPUBJS.Book.prototype.addClass=function(a){if(!this.isRendered)return this._q.enqueue("addClass",arguments);this.settings.classes.indexOf(a)==-1&&this.settings.classes.push(a),this.renderer.setClasses(this.settings.classes),this.renderer.reformat()},EPUBJS.Book.prototype.removeClass=function(a){if(!this.isRendered)return this._q.enqueue("removeClass",arguments);var b=this.settings.classes.indexOf(a);b!=-1&&(delete this.settings.classes[b],this.renderer.setClasses(this.settings.classes),this.renderer.reformat())},EPUBJS.Book.prototype.addHeadTag=function(a,b){if(!this.isRendered)return this._q.enqueue("addHeadTag",arguments);this.settings.headTags[a]=b},EPUBJS.Book.prototype.useSpreads=function(a){console.warn("useSpreads is deprecated, use forceSingle or set a layoutOveride instead"),a===!1?this.forceSingle(!0):this.forceSingle(!1)},EPUBJS.Book.prototype.forceSingle=function(a){var b=void 0===a||a;this.renderer.forceSingle(b),this.settings.forceSingle=b,this.isRendered&&this.renderer.reformat()},EPUBJS.Book.prototype.setMinSpreadWidth=function(a){this.settings.minSpreadWidth=a,this.isRendered&&(this.renderer.setMinSpreadWidth(this.settings.minSpreadWidth),this.renderer.reformat())},EPUBJS.Book.prototype.setGap=function(a){this.settings.gap=a,this.isRendered&&(this.renderer.setGap(this.settings.gap),this.renderer.reformat())},EPUBJS.Book.prototype.chapter=function(a){var b,c,d=this.spineIndexByURL[a];return d&&(b=this.spine[d],c=new EPUBJS.Chapter(b,this.store,this.settings.withCredentials),c.load()),c},EPUBJS.Book.prototype.unload=function(){this.settings.restore&&localStorage&&this.saveContents(),this.unlistenToRenderer(this.renderer),this.trigger("book:unload")},EPUBJS.Book.prototype.destroy=function(){window.removeEventListener("beforeunload",this.unload),this.currentChapter&&this.currentChapter.unload(),this.unload(),this.renderer&&this.renderer.remove()},EPUBJS.Book.prototype._ready=function(){this.trigger("book:ready")},EPUBJS.Book.prototype._rendered=function(a){this.isRendered=!0,this.trigger("book:rendered"),this._q.flush()},EPUBJS.Book.prototype.applyStyles=function(a,b){a.applyStyles(this.settings.styles),b()},EPUBJS.Book.prototype.applyClasses=function(a,b){a.setClasses(this.settings.classes),b()},EPUBJS.Book.prototype.applyHeadTags=function(a,b){a.applyHeadTags(this.settings.headTags),b()},EPUBJS.Book.prototype._registerReplacements=function(a){a.registerHook("beforeChapterDisplay",this.applyStyles.bind(this,a),!0),a.registerHook("beforeChapterDisplay",this.applyHeadTags.bind(this,a),!0),a.registerHook("beforeChapterDisplay",this.applyClasses.bind(this,a),!0),a.registerHook("beforeChapterDisplay",EPUBJS.replace.hrefs.bind(this),!0)},EPUBJS.Book.prototype._needsAssetReplacement=function(){return!!this.settings.fromStorage||!!this.settings.contained},EPUBJS.Book.prototype.parseLayoutProperties=function(a){return{layout:this.settings.layoutOveride&&this.settings.layoutOveride.layout||a.layout||"reflowable",spread:this.settings.layoutOveride&&this.settings.layoutOveride.spread||a.spread||"auto",orientation:this.settings.layoutOveride&&this.settings.layoutOveride.orientation||a.orientation||"auto"}},RSVP.EventTarget.mixin(EPUBJS.Book.prototype),RSVP.on("error",function(a){console.error(a)}),RSVP.configure("instrument",!0),EPUBJS.Chapter=function(a,b,c){this.href=a.href,this.absolute=a.url,this.id=a.id,this.spinePos=a.index,this.cfiBase=a.cfiBase,this.properties=a.properties,this.manifestProperties=a.manifestProperties,this.linear=a.linear,this.pages=1,this.store=b,this.credentials=c,this.epubcfi=new EPUBJS.EpubCFI,this.deferred=new RSVP.defer,this.loaded=this.deferred.promise,EPUBJS.Hooks.mixin(this),this.getHooks("beforeChapterRender"),this.caches={}},EPUBJS.Chapter.prototype.load=function(a,b){var c,d=a||this.store,e=b||this.credentials;return c=d?d.getXml(this.absolute):EPUBJS.core.request(this.absolute,!1,e),c.then(function(a){try{this.setDocument(a),this.deferred.resolve(this)}catch(a){this.deferred.reject({message:this.absolute+" -> "+a.message,stack:(new Error).stack})}}.bind(this)),c},EPUBJS.Chapter.prototype.render=function(a){return this.load().then(function(a){var b=a.querySelector("head"),c=a.createElement("base");return c.setAttribute("href",this.absolute),b.insertBefore(c,b.firstChild),this.contents=a,new RSVP.Promise(function(b,c){this.triggerHooks("beforeChapterRender",function(){b(a)}.bind(this),this)}.bind(this))}.bind(this)).then(function(a){return(new XMLSerializer).serializeToString(a)}.bind(this))},EPUBJS.Chapter.prototype.url=function(a){var b,c=new RSVP.defer,d=a||this.store,e=this;return d?this.tempUrl?(b=this.tempUrl,c.resolve(b)):d.getUrl(this.absolute).then(function(a){e.tempUrl=a,c.resolve(a)}):(b=this.absolute,c.resolve(b)),c.promise},EPUBJS.Chapter.prototype.setPages=function(a){this.pages=a},EPUBJS.Chapter.prototype.getPages=function(a){return this.pages},EPUBJS.Chapter.prototype.getID=function(){return this.ID},EPUBJS.Chapter.prototype.unload=function(a){this.document=null,this.tempUrl&&a&&(a.revokeUrl(this.tempUrl),this.tempUrl=!1)},EPUBJS.Chapter.prototype.setDocument=function(a){this.document=a,this.contents=a.documentElement,!this.document.evaluate&&document.evaluate&&(this.document.evaluate=document.evaluate)},EPUBJS.Chapter.prototype.cfiFromRange=function(a){var b,c,d,e,f,g,h;if(this.document){if(void 0!==document.evaluate){if(c=EPUBJS.core.getElementXPath(a.startContainer),d=EPUBJS.core.getElementXPath(a.endContainer),e=this.document.evaluate(c,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,a.collapsed||(f=this.document.evaluate(d,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue),b=this.document.createRange(),e)try{b.setStart(e,a.startOffset),!a.collapsed&&f&&b.setEnd(f,a.endOffset)}catch(a){console.log("missed"),e=!1}e||(console.log("not found, try fuzzy match"),g=EPUBJS.core.cleanStringForXpath(a.startContainer.textContent),c="//text()[contains(.,"+g+")]",(e=this.document.evaluate(c,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue)&&(b.setStart(e,a.startOffset),a.collapsed||(h=EPUBJS.core.cleanStringForXpath(a.endContainer.textContent),d="//text()[contains(.,"+h+")]",(f=this.document.evaluate(d,this.document,EPUBJS.core.nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue)&&b.setEnd(f,a.endOffset))))}else b=a;return this.epubcfi.generateCfiFromRange(b,this.cfiBase)}},EPUBJS.Chapter.prototype.find=function(a){var b=this,c=[],d=a.toLowerCase(),e=function(a){for(var e,f,g,h=a.textContent.toLowerCase(),i=b.document.createRange(),j=-1,k=150;f!=-1;)f=h.indexOf(d,j+1),f!=-1&&(i=b.document.createRange(),i.setStart(a,f),i.setEnd(a,f+d.length),e=b.cfiFromRange(i),a.textContent.lengthb?1:a0?i:i+1:0===f?i:f===-1?EPUBJS.core.locationOf(a,b,c,i,h):EPUBJS.core.locationOf(a,b,c,g,i))},EPUBJS.core.indexOfSorted=function(a,b,c,d,e){var f,g=d||0,h=e||b.length,i=parseInt(g+(h-g)/2);return c||(c=function(a,b){return a>b?1:a0;){if(c=d.shift(),"text"===c.type?(e=g.childNodes[c.index],g=e.parentNode||g):g=c.id?f.getElementById(c.id):h[c.index],!g||void 0===g)return console.error("No Element For",c,a.str),!1;h=Array.prototype.slice.call(g.children)}return g},EPUBJS.EpubCFI.prototype.compare=function(a,b){if("string"==typeof a&&(a=new EPUBJS.EpubCFI(a)),"string"==typeof b&&(b=new EPUBJS.EpubCFI(b)),a.spinePos>b.spinePos)return 1;if(a.spinePosb.steps[c].index)return 1;if(a.steps[c].indexb.characterOffset?1:a.characterOffset")},EPUBJS.EpubCFI.prototype.generateRangeFromCfi=function(a,b){var c,d,e,f,g,h,i=b||document,j=i.createRange();return"string"==typeof a&&(a=this.parse(a)),a.spinePos!==-1&&(c=a.steps[a.steps.length-1],void 0!==document.evaluate?(d=this.generateXpathFromSteps(a.steps),e=i.evaluate(d,i,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue):(g=this.generateQueryFromSteps(a.steps),(h=i.querySelector(g))&&"text"==c.type&&(e=h.childNodes[c.index])),e?(e&&a.characterOffset>=0?(f=e.length,a.characterOffset-1&&this.hooks[a].splice(c,1):Array.isArray(b)&&b.forEach(function(b){(c=this.hooks[a].indexOf(b))>-1&&this.hooks[a].splice(c,1)},this))},a.prototype.triggerHooks=function(a,b,c){function d(){--f<=0&&b&&b()}var e,f;if(void 0===this.hooks[a])return!1;e=this.hooks[a],f=e.length,0===f&&b&&b(),e.forEach(function(a){a(d,c)})},{register:function(a){if(void 0===EPUBJS.hooks[a]&&(EPUBJS.hooks[a]={}),"object"!=typeof EPUBJS.hooks[a])throw"Already registered: "+a;return EPUBJS.hooks[a]},mixin:function(b){for(var c in a.prototype)b[c]=a.prototype[c]}}}(),EPUBJS.Layout=EPUBJS.Layout||{},EPUBJS.Layout.isFixedLayout=function(a){var b=a.querySelector("[name=viewport]");if(!b||!b.hasAttribute("content"))return!1;var c=b.getAttribute("content");return/width=(\d+)/.test(c)&&/height=(\d+)/.test(c)},EPUBJS.Layout.Reflowable=function(){this.documentElement=null,this.spreadWidth=null},EPUBJS.Layout.Reflowable.prototype.format=function(a,b,c,d){var e=EPUBJS.core.prefixed("columnAxis"),f=EPUBJS.core.prefixed("columnGap"),g=EPUBJS.core.prefixed("columnWidth"),h=EPUBJS.core.prefixed("columnFill"),i=Math.floor(b),j=Math.floor(i/8),k=d>=0?d:j%2==0?j:j-1;return this.documentElement=a,this.spreadWidth=i+k,a.style.overflow="hidden",a.style.width=i+"px",a.style.height=c+"px",a.style[e]="horizontal",a.style[h]="auto",a.style[g]=i+"px",a.style[f]=k+"px",this.colWidth=i,this.gap=k,{pageWidth:this.spreadWidth,pageHeight:c}},EPUBJS.Layout.Reflowable.prototype.calculatePages=function(){var a,b;return this.documentElement.style.width="auto",a=this.documentElement.scrollWidth,b=Math.ceil(a/this.spreadWidth),{displayedPages:b,pageCount:b}},EPUBJS.Layout.ReflowableSpreads=function(){this.documentElement=null,this.spreadWidth=null},EPUBJS.Layout.ReflowableSpreads.prototype.format=function(a,b,c,d){var e=EPUBJS.core.prefixed("columnAxis"),f=EPUBJS.core.prefixed("columnGap"),g=EPUBJS.core.prefixed("columnWidth"),h=EPUBJS.core.prefixed("columnFill"),i=2,j=Math.floor(b),k=j%2==0?j:j-1,l=Math.floor(k/8),m=d>=0?d:l%2==0?l:l-1,n=Math.floor((k-m)/i);return this.documentElement=a,this.spreadWidth=(n+m)*i,a.style.overflow="hidden",a.style.width=k+"px",a.style.height=c+"px",a.style[e]="horizontal",a.style[h]="auto",a.style[f]=m+"px",a.style[g]=n+"px",this.colWidth=n,this.gap=m,{pageWidth:this.spreadWidth,pageHeight:c}},EPUBJS.Layout.ReflowableSpreads.prototype.calculatePages=function(){var a=this.documentElement.scrollWidth,b=Math.ceil(a/this.spreadWidth);return this.documentElement.style.width=b*this.spreadWidth-this.gap+"px",{displayedPages:b,pageCount:2*b}},EPUBJS.Layout.Fixed=function(){this.documentElement=null},EPUBJS.Layout.Fixed.prototype.format=function(a,b,c,d){var e,f,g,h,i=EPUBJS.core.prefixed("columnWidth"),j=EPUBJS.core.prefixed("transform"),k=EPUBJS.core.prefixed("transformOrigin"),l=a.querySelector("[name=viewport]");this.documentElement=a,l&&l.hasAttribute("content")&&(e=l.getAttribute("content"),f=e.split(","),f[0]&&(g=f[0].replace("width=","")),f[1]&&(h=f[1].replace("height=","")));var m=b/g,n=c/h,o=m=d?g.resolve():(c=f,b=new EPUBJS.Chapter(this.spine[c],this.store,this.credentials),this.process(b).then(function(){setTimeout(function(){e(g)},1)})),g.promise}.bind(this);return"number"==typeof a&&(this.break=a),e().then(function(){this.total=this._locations.length-1,this._currentCfi&&(this.currentLocation=this._currentCfi),b.resolve(this._locations)}.bind(this)),b.promise},EPUBJS.Locations.prototype.process=function(a){return a.load().then(function(b){var c,d,e,f=b,g=f.documentElement.querySelector("body"),h=0,i=this.break;this.sprint(g,function(b){var g,j=b.length,k=0;if(0===b.textContent.trim().length)return!1;for(0===h&&(c=f.createRange(),c.setStart(b,0)),g=i-h,g>j&&(h+=j,k=j);k=j?(h+=j-k,k=j):(k+=g,c.setEnd(b,k),e=a.cfiFromRange(c),this._locations.push(e),h=0);d=b}.bind(this)),c&&(c.setEnd(d,d.length),e=a.cfiFromRange(c),this._locations.push(e),h=0)}.bind(this))},EPUBJS.Locations.prototype.sprint=function(a,b){for(var c,d=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);c=d.nextNode();)b(c)},EPUBJS.Locations.prototype.locationFromCfi=function(a){return 0===this._locations.length?-1:EPUBJS.core.locationOf(a,this._locations,this.epubcfi.compare)},EPUBJS.Locations.prototype.percentageFromCfi=function(a){var b=this.locationFromCfi(a);return this.percentageFromLocation(b)},EPUBJS.Locations.prototype.percentageFromLocation=function(a){return a&&this.total?a/this.total:0},EPUBJS.Locations.prototype.cfiFromLocation=function(a){var b=-1;return"number"!=typeof a&&(a=parseInt(a)),a>=0&&a1?a/100:a,c=Math.ceil(this.total*b);return this.cfiFromLocation(c)},EPUBJS.Locations.prototype.load=function(a){return this._locations=JSON.parse(a),this.total=this._locations.length-1,this._locations},EPUBJS.Locations.prototype.save=function(a){return JSON.stringify(this._locations)},EPUBJS.Locations.prototype.getCurrent=function(a){return this._current},EPUBJS.Locations.prototype.setCurrent=function(a){var b;if("string"==typeof a)this._currentCfi=a;else{if("number"!=typeof a)return;this._current=a}0!==this._locations.length&&("string"==typeof a?(b=this.locationFromCfi(a),this._current=b):b=a,this.trigger("changed",{percentage:this.percentageFromLocation(b)}))},Object.defineProperty(EPUBJS.Locations.prototype,"currentLocation",{get:function(){return this._current},set:function(a){this.setCurrent(a)}}),RSVP.EventTarget.mixin(EPUBJS.Locations.prototype),EPUBJS.Pagination=function(a){this.pages=[],this.locations=[],this.epubcfi=new EPUBJS.EpubCFI,a&&a.length&&this.process(a)},EPUBJS.Pagination.prototype.process=function(a){a.forEach(function(a){this.pages.push(a.page),this.locations.push(a.cfi)},this),this.pageList=a,this.firstPage=parseInt(this.pages[0]),this.lastPage=parseInt(this.pages[this.pages.length-1]),this.totalPages=this.lastPage-this.firstPage},EPUBJS.Pagination.prototype.pageFromCfi=function(a){var b=-1;if(0===this.locations.length)return-1;var c=EPUBJS.core.indexOfSorted(a,this.locations,this.epubcfi.compare);return c!=-1?b=this.pages[c]:(c=EPUBJS.core.locationOf(a,this.locations,this.epubcfi.compare),void 0!==(b=c-1>=0?this.pages[c-1]:this.pages[0])||(b=-1)),b},EPUBJS.Pagination.prototype.cfiFromPage=function(a){var b=-1;"number"!=typeof a&&(a=parseInt(a));var c=this.pages.indexOf(a);return c!=-1&&(b=this.locations[c]),b},EPUBJS.Pagination.prototype.pageFromPercentage=function(a){return Math.round(this.totalPages*a)},EPUBJS.Pagination.prototype.percentageFromPage=function(a){var b=(a-this.firstPage)/this.totalPages;return Math.round(1e3*b)/1e3},EPUBJS.Pagination.prototype.percentageFromCfi=function(a){var b=this.pageFromCfi(a);return this.percentageFromPage(b)},EPUBJS.Parser=function(a){this.baseUrl=a||""},EPUBJS.Parser.prototype.container=function(a){var b,c,d,e;return a?(b=a.querySelector("rootfile"))?(c=b.getAttribute("full-path"),d=EPUBJS.core.uri(c).directory,e=a.xmlEncoding,{packagePath:c,basePath:d,encoding:e}):void console.error("No RootFile Found"):void console.error("Container File Not Found")},EPUBJS.Parser.prototype.identifier=function(a){var b;return a?(b=a.querySelector("metadata"),b?this.getElementText(b,"identifier"):void console.error("No Metadata Found")):void console.error("Package File Not Found")},EPUBJS.Parser.prototype.packageContents=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=this;return b&&(this.baseUrl=b),a?(c=a.querySelector("metadata"))?(d=a.querySelector("manifest"))?(e=a.querySelector("spine"))?(f=n.manifest(d),g=n.findNavPath(d),h=n.findTocPath(d,e),i=n.findCoverPath(a),j=Array.prototype.indexOf.call(e.parentNode.childNodes,e),k=n.spine(e,f),l={},k.forEach(function(a){l[a.href]=a.index}),m=n.metadata(c),m.direction=e.getAttribute("page-progression-direction"),{metadata:m,spine:k,manifest:f,navPath:g,tocPath:h,coverPath:i,spineNodeIndex:j,spineIndexByURL:l}):void console.error("No Spine Found"):void console.error("No Manifest Found"):void console.error("No Metadata Found"):void console.error("Package File Not Found")},EPUBJS.Parser.prototype.findNavPath=function(a){var b=a.querySelector("item[properties$='nav'], item[properties^='nav '], item[properties*=' nav ']");return!!b&&b.getAttribute("href")},EPUBJS.Parser.prototype.findTocPath=function(a,b){var c,d=a.querySelector("item[media-type='application/x-dtbncx+xml']");return d||(c=b.getAttribute("toc"))&&(d=a.querySelector("item[id='"+c+"']")),!!d&&d.getAttribute("href")},EPUBJS.Parser.prototype.metadata=function(a){var b={},c=this;return b.bookTitle=c.getElementText(a,"title"),b.creator=c.getElementText(a,"creator"),b.description=c.getElementText(a,"description"),b.pubdate=c.getElementText(a,"date"),b.publisher=c.getElementText(a,"publisher"),b.identifier=c.getElementText(a,"identifier"),b.language=c.getElementText(a,"language"),b.rights=c.getElementText(a,"rights"),b.modified_date=c.querySelectorText(a,"meta[property='dcterms:modified']"),b.layout=c.querySelectorText(a,"meta[property='rendition:layout']"),b.orientation=c.querySelectorText(a,"meta[property='rendition:orientation']"),b.spread=c.querySelectorText(a,"meta[property='rendition:spread']"),b},EPUBJS.Parser.prototype.findCoverPath=function(a){if("2.0"===a.querySelector("package").getAttribute("version")){var b=a.querySelector('meta[name="cover"]');if(b){var c=b.getAttribute("content"),d=a.querySelector("item[id='"+c+"']");return!!d&&d.getAttribute("href")}return!1}var e=a.querySelector("item[properties='cover-image']");return!!e&&e.getAttribute("href")},EPUBJS.Parser.prototype.getElementText=function(a,b){var c,d=a.getElementsByTagNameNS("http://purl.org/dc/elements/1.1/",b);return d&&0!==d.length?(c=d[0],c.childNodes.length?c.childNodes[0].nodeValue:""):""},EPUBJS.Parser.prototype.querySelectorText=function(a,b){var c=a.querySelector(b);return c&&c.childNodes.length?c.childNodes[0].nodeValue:""},EPUBJS.Parser.prototype.manifest=function(a){var b=this.baseUrl,c={},d=a.querySelectorAll("item");return Array.prototype.slice.call(d).forEach(function(a){var d=a.getAttribute("id"),e=a.getAttribute("href")||"",f=a.getAttribute("media-type")||"",g=a.getAttribute("properties")||"";c[d]={href:e,url:b+e,type:f,properties:g}}),c},EPUBJS.Parser.prototype.spine=function(a,b){var c=a.getElementsByTagName("itemref"),d=Array.prototype.slice.call(c),e=EPUBJS.core.indexOfElementNode(a),f=new EPUBJS.EpubCFI;return d.map(function(a,c){var d=a.getAttribute("idref"),g=f.generateChapterComponent(e,c,d),h=a.getAttribute("properties")||"",i=h.length?h.split(" "):[],j=b[d].properties,k=j.length?j.split(" "):[];return{id:d,linear:a.getAttribute("linear")||"",properties:i,manifestProperties:k,href:b[d].href,url:b[d].url,index:c,cfiBase:g,cfi:"epubcfi("+g+")"}})},EPUBJS.Parser.prototype.querySelectorByType=function(a,b,c){var d=a.querySelector(b+'[*|type="'+c+'"]');if(null!==d&&0!==d.length)return d;d=a.querySelectorAll(b);for(var e=0;e1&&d[1],{cfi:f,href:h,packageUrl:e,page:j}):{href:h,page:j}},EPUBJS.Render.Iframe=function(){this.iframe=null,this.document=null,this.window=null,this.docEl=null,this.bodyEl=null,this.leftPos=0,this.pageWidth=0,this.id=EPUBJS.core.uuid()},EPUBJS.Render.Iframe.prototype.create=function(){return this.element=document.createElement("div"),this.element.id="epubjs-view:"+this.id,this.isMobile=navigator.userAgent.match(/(iPad|iPhone|iPod|Mobile|Android)/g),this.transform=EPUBJS.core.prefixed("transform"),this.element},EPUBJS.Render.Iframe.prototype.addIframe=function(){return this.iframe=document.createElement("iframe"),this.iframe.id="epubjs-iframe:"+this.id,this.iframe.scrolling=this.scrolling||"no",this.iframe.seamless="seamless",this.iframe.style.border="none",this.iframe.addEventListener("load",this.loaded.bind(this),!1),(this._width||this._height)&&(this.iframe.height=this._height,this.iframe.width=this._width),this.iframe},EPUBJS.Render.Iframe.prototype.load=function(a,b){var c=this,d=new RSVP.defer;return this.window&&this.unload(),this.iframe&&this.element.removeChild(this.iframe),this.iframe=this.addIframe(),this.element.appendChild(this.iframe),this.iframe.onload=function(a){c.document=c.iframe.contentDocument,c.docEl=c.document.documentElement,c.headEl=c.document.head,c.bodyEl=c.document.body||c.document.querySelector("body"),c.window=c.iframe.contentWindow,c.window.addEventListener("resize",c.resized.bind(c),!1),c.leftPos=0,c.setLeft(0),c.bodyEl&&(c.bodyEl.style.margin="0"),d.resolve(c.docEl)},this.iframe.onerror=function(a){d.reject({message:"Error Loading Contents: "+a,stack:(new Error).stack})},this.document=this.iframe.contentDocument,this.document?(this.iframe.contentDocument.open(),this.iframe.contentDocument.write(a),this.iframe.contentDocument.close(),d.promise):(d.reject(new Error("No Document Available")),d.promise)},EPUBJS.Render.Iframe.prototype.loaded=function(a){var b,c,d=this.iframe.contentWindow.location.href;this.document=this.iframe.contentDocument,this.docEl=this.document.documentElement,this.headEl=this.document.head,this.bodyEl=this.document.body||this.document.querySelector("body"),this.window=this.iframe.contentWindow,this.window.focus(),"about:blank"!=d&&(b=this.iframe.contentDocument.querySelector("base"),c=b.getAttribute("href"),this.trigger("render:loaded",c))},EPUBJS.Render.Iframe.prototype.resize=function(a,b){this.element&&(this.element.style.height=b,isNaN(a)||a%2==0||(a+=1),this.element.style.width=a,this.iframe&&(this.iframe.height=b,this.iframe.width=a),this._height=b,this._width=a,this.width=this.element.getBoundingClientRect().width||a,this.height=this.element.getBoundingClientRect().height||b)},EPUBJS.Render.Iframe.prototype.resized=function(a){this.width=this.iframe.getBoundingClientRect().width,this.height=this.iframe.getBoundingClientRect().height},EPUBJS.Render.Iframe.prototype.totalWidth=function(){return this.docEl.scrollWidth},EPUBJS.Render.Iframe.prototype.totalHeight=function(){return this.docEl.scrollHeight},EPUBJS.Render.Iframe.prototype.setPageDimensions=function(a,b){this.pageWidth=a,this.pageHeight=b},EPUBJS.Render.Iframe.prototype.setDirection=function(a){this.direction=a,this.docEl&&"rtl"==this.docEl.dir&&(this.docEl.dir="rtl","pre-paginated"!==this.layout&&(this.docEl.style.position="static",this.docEl.style.right="auto"))},EPUBJS.Render.Iframe.prototype.setLeft=function(a){this.isMobile?this.docEl.style[this.transform]="translate("+-a+"px, 0)":this.document.defaultView.scrollTo(a,0)},EPUBJS.Render.Iframe.prototype.setLayout=function(a){this.layout=a},EPUBJS.Render.Iframe.prototype.setStyle=function(a,b,c){c&&(a=EPUBJS.core.prefixed(a)),this.bodyEl&&(this.bodyEl.style[a]=b)},EPUBJS.Render.Iframe.prototype.removeStyle=function(a){this.bodyEl&&(this.bodyEl.style[a]="")},EPUBJS.Render.Iframe.prototype.setClasses=function(a){this.bodyEl&&(this.bodyEl.className=a.join(" "))},EPUBJS.Render.Iframe.prototype.addHeadTag=function(a,b,c){var d=c||this.document,e=d.createElement(a),f=d.head;for(var g in b)e.setAttribute(g,b[g]);f&&f.insertBefore(e,f.firstChild)},EPUBJS.Render.Iframe.prototype.page=function(a){this.leftPos=this.pageWidth*(a-1),"rtl"===this.direction&&(this.leftPos=this.leftPos*-1),this.setLeft(this.leftPos)},EPUBJS.Render.Iframe.prototype.getPageNumberByElement=function(a){var b;if(a)return b=this.leftPos+a.getBoundingClientRect().left,Math.floor(b/this.pageWidth)+1},EPUBJS.Render.Iframe.prototype.getPageNumberByRect=function(a){var b;return b=this.leftPos+a.left,Math.floor(b/this.pageWidth)+1},EPUBJS.Render.Iframe.prototype.getBaseElement=function(){return this.bodyEl},EPUBJS.Render.Iframe.prototype.getDocumentElement=function(){return this.docEl},EPUBJS.Render.Iframe.prototype.isElementVisible=function(a){var b,c;return!!(a&&"function"==typeof a.getBoundingClientRect&&(b=a.getBoundingClientRect(),c=b.left,0!==b.width&&0!==b.height&&c>=0&&c=1&&a<=this.displayedPages&&(this.chapterPos=a,this.render.page(a),this.visibleRangeCfi=this.getVisibleRangeCfi(),this.currentLocationCfi=this.visibleRangeCfi.start,this.trigger("renderer:locationChanged",this.currentLocationCfi),this.trigger("renderer:visibleRangeChanged",this.visibleRangeCfi),!0):(console.warn("pageMap not set, queuing"),this._q.enqueue("page",arguments),!0)},EPUBJS.Renderer.prototype.nextPage=function(){return this.page(this.chapterPos+1)},EPUBJS.Renderer.prototype.prevPage=function(){return this.page(this.chapterPos-1)},EPUBJS.Renderer.prototype.pageByElement=function(a){var b;a&&(b=this.render.getPageNumberByElement(a),this.page(b))},EPUBJS.Renderer.prototype.lastPage=function(){if(this._moving)return this._q.enqueue("lastPage",arguments);this.page(this.displayedPages)},EPUBJS.Renderer.prototype.firstPage=function(){if(this._moving)return this._q.enqueue("firstPage",arguments);this.page(1)},EPUBJS.Renderer.prototype.section=function(a){var b=this.doc.getElementById(a);b&&this.pageByElement(b)},EPUBJS.Renderer.prototype.firstElementisTextNode=function(a){var b=a.childNodes;return!!(b.length&&b[0]&&3===b[0].nodeType&&b[0].textContent.trim().length)},EPUBJS.Renderer.prototype.isGoodNode=function(a){return["audio","canvas","embed","iframe","img","math","object","svg","video"].indexOf(a.tagName.toLowerCase())!==-1||this.firstElementisTextNode(a)},EPUBJS.Renderer.prototype.walk=function(a,b,c){for(var d,e,f,g,h=a,i=[h],j=1e4,k=0;!d&&i.length;){if(a=i.shift(),this.containsPoint(a,b,c)&&this.isGoodNode(a)&&(d=a),!d&&a&&a.childElementCount>0){if(!(e=a.children)||!e.length)return d;f=e.length?e.length:0;for(var l=f-1;l>=0;l--)e[l]!=g&&i.unshift(e[l])}if(!d&&0===i.length&&h&&null!==h.parentNode&&(i.push(h.parentNode),g=h,h=h.parentNode),++k>j){console.error("ENDLESS LOOP");break}}return d},EPUBJS.Renderer.prototype.containsPoint=function(a,b,c){var d;return!!(a&&"function"==typeof a.getBoundingClientRect&&(d=a.getBoundingClientRect(),0!==d.width&&0!==d.height&&d.left>=b&&b<=d.left+d.width))},EPUBJS.Renderer.prototype.textSprint=function(a,b){var c,d,e=function(a){return/^\s*$/.test(a.data)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT};try{for(c=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,{acceptNode:e},!1);d=c.nextNode();)b(d)}catch(f){for(c=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,e,!1);d=c.nextNode();)b(d)}},EPUBJS.Renderer.prototype.sprint=function(a,b){for(var c,d=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT,null,!1);c=d.nextNode();)b(c)},EPUBJS.Renderer.prototype.mapPage=function(){var a,b,c,d,e,f,g,h,i=this,j=[],k=this.render.getBaseElement(),l=1,m=this.layout.colWidth+this.layout.gap,n=this.formated.pageWidth*(this.chapterPos-1),o=m*l-n,p=0,q=function(b){var c,e,f;if(b.nodeType==Node.TEXT_NODE){if(e=document.createRange(),e.selectNodeContents(b),!(c=e.getBoundingClientRect())||0===c.width&&0===c.height)return;c.left>p&&(f=r(b)),c.right>p&&(f=r(b)),d=b,f&&(a=null)}},r=function(e){var f;return i.splitTextNodeIntoWordsRanges(e).forEach(function(e){var g=e.getBoundingClientRect();!g||0===g.width&&0===g.height||(g.left+g.width0&&(b&&(b.setEnd(a,e),c.push(b)),b=this.doc.createRange(),b.setStart(a,e+1));return b&&(b.setEnd(a,d.length),c.push(b)),c},EPUBJS.Renderer.prototype.rangePosition=function(a){var b;return b=a.getClientRects(),b.length?b[0]:null},EPUBJS.Renderer.prototype.getPageCfi=function(){var a=2*this.chapterPos-1;return this.pageMap[a].start},EPUBJS.Renderer.prototype.getRange=function(a,b,c){var d,e=this.doc.createRange();return c=!0,void 0===document.caretPositionFromPoint||c?void 0===document.caretRangeFromPoint||c?(this.visibileEl=this.findElementAfter(a,b),e.setStart(this.visibileEl,1)):e=this.doc.caretRangeFromPoint(a,b):(d=this.doc.caretPositionFromPoint(a,b),e.setStart(d.offsetNode,d.offset)),e},EPUBJS.Renderer.prototype.pagesInCurrentChapter=function(){return this.pageMap?this.pageMap.length:(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.currentRenderedPage=function(){return this.pageMap?this.spreads&&this.pageMap.length>1?2*this.chapterPos-1:this.chapterPos:(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.getRenderedPagesLeft=function(){var a,b;return this.pageMap?(b=this.pageMap.length,a=this.spreads?2*this.chapterPos-1:this.chapterPos,b-a):(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.getVisibleRangeCfi=function(){var a,b,c;return this.pageMap?(this.spreads?(a=2*this.chapterPos,b=this.pageMap[a-2],c=b,this.pageMap.length>1&&this.pageMap.length>a-1&&(c=this.pageMap[a-1])):(a=this.chapterPos,b=this.pageMap[a-1],c=b),b||(console.warn("page range miss:",a,this.pageMap),b=this.pageMap[this.pageMap.length-1],c=b),{start:b.start,end:c.end}):(console.warn("page map not loaded"),!1)},EPUBJS.Renderer.prototype.gotoCfi=function(a){var b,c,d;if(this._moving)return this._q.enqueue("gotoCfi",arguments);if(EPUBJS.core.isString(a)&&(a=this.epubcfi.parse(a)),void 0===document.evaluate)(c=this.epubcfi.addMarker(a,this.doc))&&(b=this.render.getPageNumberByElement(c),this.epubcfi.removeMarker(c,this.doc),this.page(b));else if(d=this.epubcfi.generateRangeFromCfi(a,this.doc)){var e=d.getBoundingClientRect();b=e?this.render.getPageNumberByRect(e):1,this.page(b),this.currentLocationCfi=a.str}else this.page(1)},EPUBJS.Renderer.prototype.findFirstVisible=function(a){var b,c=a||this.render.getBaseElement();return b=this.walk(c,0,0),b?b:a},EPUBJS.Renderer.prototype.findElementAfter=function(a,b,c){var d,e=c||this.render.getBaseElement();return d=this.walk(e,a,b),d?d:e},EPUBJS.Renderer.prototype.resize=function(a,b,c){this.width=a,this.height=b,c!==!1&&this.render.resize(this.width,this.height),this.contents&&this.reformat(),this.trigger("renderer:resized",{width:this.width,height:this.height})},EPUBJS.Renderer.prototype.onResized=function(a){this.trigger("renderer:beforeResize");var b=this.container.clientWidth,c=this.container.clientHeight;this.resize(b,c,!1)},EPUBJS.Renderer.prototype.addEventListeners=function(){this.render.document&&this.listenedEvents.forEach(function(a){this.render.document.addEventListener(a,this.triggerEvent.bind(this),!1)},this)},EPUBJS.Renderer.prototype.removeEventListeners=function(){this.render.document&&this.listenedEvents.forEach(function(a){this.render.document.removeEventListener(a,this.triggerEvent,!1)},this)},EPUBJS.Renderer.prototype.triggerEvent=function(a){this.trigger("renderer:"+a.type,a)},EPUBJS.Renderer.prototype.addSelectionListeners=function(){this.render.document.addEventListener("selectionchange",this.onSelectionChange.bind(this),!1)},EPUBJS.Renderer.prototype.removeSelectionListeners=function(){this.render.document&&this.doc.removeEventListener("selectionchange",this.onSelectionChange,!1)},EPUBJS.Renderer.prototype.onSelectionChange=function(a){this.selectionEndTimeout&&clearTimeout(this.selectionEndTimeout),this.selectionEndTimeout=setTimeout(function(){this.selectedRange=this.render.window.getSelection(),this.trigger("renderer:selected",this.selectedRange)}.bind(this),500)},EPUBJS.Renderer.prototype.setMinSpreadWidth=function(a){this.minSpreadWidth=a,this.spreads=this.determineSpreads(a)},EPUBJS.Renderer.prototype.determineSpreads=function(a){return!(this.isForcedSingle||!a||this.width=d?h.resolve():(c=a[e].url,g=window.encodeURIComponent(c),EPUBJS.core.request(c,"binary").then(function(a){return localforage.setItem(g,a)}).then(function(a){e++,setTimeout(function(){f(h)},1)})),h.promise}.bind(this);return Array.isArray(a)||(a=[a]),f().then(function(){c.resolve()}.bind(this)),c.promise},EPUBJS.Storage.prototype.token=function(a,b){var c=window.encodeURIComponent(a);return localforage.setItem(c,b).then(function(a){return null!==a})},EPUBJS.Storage.prototype.isStored=function(a){var b=window.encodeURIComponent(a);return localforage.getItem(b).then(function(a){return null!==a})},EPUBJS.Storage.prototype.getText=function(a){var b=window.encodeURIComponent(a);return EPUBJS.core.request(a,"arraybuffer",this.withCredentials).then(function(a){return this.offline&&(this.offline=!1,this.trigger("offline",!1)),localforage.setItem(b,a),a}.bind(this)).then(function(b){var c=new RSVP.defer,d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;return f.addEventListener("loadend",function(){c.resolve(f.result)}),f.readAsText(e,d),c.promise}).catch(function(){var c=new RSVP.defer,d=localforage.getItem(b);return this.offline||(this.offline=!0,this.trigger("offline",!0)),d?(d.then(function(b){var d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;f.addEventListener("loadend",function(){c.resolve(f.result)}),f.readAsText(e,d)}),c.promise):(c.reject({message:"File not found in the storage: "+a,stack:(new Error).stack}),c.promise)}.bind(this))},EPUBJS.Storage.prototype.getUrl=function(a){var b=window.encodeURIComponent(a);return EPUBJS.core.request(a,"arraybuffer",this.withCredentials).then(function(c){return this.offline&&(this.offline=!1,this.trigger("offline",!1)),localforage.setItem(b,c),a}.bind(this)).catch(function(){var c,d,e=new RSVP.defer,f=window.URL||window.webkitURL||window.mozURL;return this.offline||(this.offline=!0,this.trigger("offline",!0)),b in this.urlCache?(e.resolve(this.urlCache[b]),e.promise):(c=localforage.getItem(b))?(c.then(function(c){var g=new Blob([c],{type:EPUBJS.core.getMimeType(a)});d=f.createObjectURL(g),e.resolve(d),this.urlCache[b]=d}.bind(this)),e.promise):(e.reject({message:"File not found in the storage: "+a,stack:(new Error).stack}),e.promise)}.bind(this))},EPUBJS.Storage.prototype.getXml=function(a){var b=window.encodeURIComponent(a);return EPUBJS.core.request(a,"arraybuffer",this.withCredentials).then(function(a){return this.offline&&(this.offline=!1,this.trigger("offline",!1)),localforage.setItem(b,a),a}.bind(this)).then(function(b){var c=new RSVP.defer,d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;return f.addEventListener("loadend",function(){var a=new DOMParser,b=a.parseFromString(f.result,"text/xml");c.resolve(b)}),f.readAsText(e,d),c.promise}).catch(function(){var c=new RSVP.defer,d=localforage.getItem(b);return this.offline||(this.offline=!0,this.trigger("offline",!0)),d?(d.then(function(b){var d=EPUBJS.core.getMimeType(a),e=new Blob([b],{type:d}),f=new FileReader;f.addEventListener("loadend",function(){var a=new DOMParser,b=a.parseFromString(f.result,"text/xml");c.resolve(b)}),f.readAsText(e,d)}),c.promise):(c.reject({message:"File not found in the storage: "+a,stack:(new Error).stack}),c.promise)}.bind(this))},EPUBJS.Storage.prototype.revokeUrl=function(a){var b=window.URL||window.webkitURL||window.mozURL,c=this.urlCache[a];c&&b.revokeObjectURL(c)},EPUBJS.Storage.prototype.failed=function(a){console.error(a)},RSVP.EventTarget.mixin(EPUBJS.Storage.prototype),EPUBJS.Unarchiver=function(a){this.checkRequirements(),this.urlCache={}},EPUBJS.Unarchiver.prototype.checkRequirements=function(a){"undefined"==typeof JSZip&&console.error("JSZip lib not loaded")},EPUBJS.Unarchiver.prototype.open=function(a,b){if(a instanceof ArrayBuffer){this.zip=new JSZip(a);var c=new RSVP.defer;return c.resolve(),c.promise}return EPUBJS.core.request(a,"binary").then(function(a){this.zip=new JSZip(a)}.bind(this))},EPUBJS.Unarchiver.prototype.getXml=function(a,b){var c=window.decodeURIComponent(a);return this.getText(c,b).then(function(b){var c=new DOMParser,d=EPUBJS.core.getMimeType(a);return 65279===b.charCodeAt(0)&&(b=b.slice(1)),c.parseFromString(b,d)})},EPUBJS.Unarchiver.prototype.getUrl=function(a,b){var c,d,e=this,f=new RSVP.defer,g=window.decodeURIComponent(a),h=this.zip.file(g),i=window.URL||window.webkitURL||window.mozURL;return h?a in this.urlCache?(f.resolve(this.urlCache[a]),f.promise):(d=new Blob([h.asUint8Array()],{type:EPUBJS.core.getMimeType(h.name)}),c=i.createObjectURL(d),f.resolve(c),e.urlCache[a]=c,f.promise):(f.reject({message:"File not found in the epub: "+a,stack:(new Error).stack}),f.promise)},EPUBJS.Unarchiver.prototype.getText=function(a,b){var c,d=new RSVP.defer,e=window.decodeURIComponent(a),f=this.zip.file(e);return f?(c=f.asText(),d.resolve(c),d.promise):(d.reject({message:"File not found in the epub: "+a,stack:(new Error).stack}),d.promise)},EPUBJS.Unarchiver.prototype.revokeUrl=function(a){var b=window.URL||window.webkitURL||window.mozURL,c=this.urlCache[a];c&&b.revokeObjectURL(c)},EPUBJS.Unarchiver.prototype.failed=function(a){console.error(a)},EPUBJS.Unarchiver.prototype.afterSaved=function(a){this.callback()},EPUBJS.Unarchiver.prototype.toStorage=function(a){function b(){0===--e&&d.afterSaved()}var c=0,d=this,e=a.length;a.forEach(function(a){setTimeout(function(a){d.saveEntryFileToStorage(a,b)},c,a),c+=20}),console.log("time",c)},function(){var a={application:{ecmascript:["es","ecma"],javascript:"js",ogg:"ogx",pdf:"pdf",postscript:["ps","ai","eps","epsi","epsf","eps2","eps3"],"rdf+xml":"rdf",smil:["smi","smil"],"xhtml+xml":["xhtml","xht"],xml:["xml","xsl","xsd","opf","ncx"],zip:"zip","x-httpd-eruby":"rhtml","x-latex":"latex","x-maker":["frm","maker","frame","fm","fb","book","fbdoc"],"x-object":"o","x-shockwave-flash":["swf","swfl"],"x-silverlight":"scr","epub+zip":"epub","font-tdpfr":"pfr","inkml+xml":["ink","inkml"],json:"json","jsonml+json":"jsonml","mathml+xml":"mathml","metalink+xml":"metalink",mp4:"mp4s","omdoc+xml":"omdoc",oxps:"oxps","vnd.amazon.ebook":"azw",widget:"wgt","x-dtbook+xml":"dtb","x-dtbresource+xml":"res","x-font-bdf":"bdf","x-font-ghostscript":"gsf","x-font-linux-psf":"psf","x-font-otf":"otf","x-font-pcf":"pcf","x-font-snf":"snf","x-font-ttf":["ttf","ttc"],"x-font-type1":["pfa","pfb","pfm","afm"],"x-font-woff":"woff","x-mobipocket-ebook":["prc","mobi"],"x-mspublisher":"pub","x-nzb":"nzb","x-tgif":"obj","xaml+xml":"xaml","xml-dtd":"dtd","xproc+xml":"xpl","xslt+xml":"xslt","internet-property-stream":"acx","x-compress":"z","x-compressed":"tgz","x-gzip":"gz"},audio:{flac:"flac",midi:["mid","midi","kar","rmi"],mpeg:["mpga","mpega","mp2","mp3","m4a","mp2a","m2a","m3a"],mpegurl:"m3u",ogg:["oga","ogg","spx"],"x-aiff":["aif","aiff","aifc"],"x-ms-wma":"wma","x-wav":"wav",adpcm:"adp",mp4:"mp4a",webm:"weba","x-aac":"aac","x-caf":"caf","x-matroska":"mka","x-pn-realaudio-plugin":"rmp",xm:"xm",mid:["mid","rmi"]},image:{gif:"gif",ief:"ief",jpeg:["jpeg","jpg","jpe"],pcx:"pcx",png:"png","svg+xml":["svg","svgz"],tiff:["tiff","tif"],"x-icon":"ico",bmp:"bmp",webp:"webp","x-pict":["pic","pct"],"x-tga":"tga","cis-cod":"cod"},message:{rfc822:["eml","mime","mht","mhtml","nws"]},text:{"cache-manifest":["manifest","appcache"],calendar:["ics","icz","ifb"],css:"css",csv:"csv",h323:"323",html:["html","htm","shtml","stm"],iuls:"uls",mathml:"mml",plain:["txt","text","brf","conf","def","list","log","in","bas"],richtext:"rtx","tab-separated-values":"tsv","x-bibtex":"bib","x-dsrc":"d","x-diff":["diff","patch"],"x-haskell":"hs","x-java":"java","x-literate-haskell":"lhs","x-moc":"moc","x-pascal":["p","pas"],"x-pcs-gcd":"gcd","x-perl":["pl","pm"],"x-python":"py","x-scala":"scala","x-setext":"etx","x-tcl":["tcl","tk"],"x-tex":["tex","ltx","sty","cls"],"x-vcard":"vcf",sgml:["sgml","sgm"],"x-c":["c","cc","cxx","cpp","h","hh","dic"],"x-fortran":["f","for","f77","f90"],"x-opml":"opml","x-nfo":"nfo","x-sfv":"sfv","x-uuencode":"uu",webviewhtml:"htt"},video:{mpeg:["mpeg","mpg","mpe","m1v","m2v","mp2","mpa","mpv2"],mp4:["mp4","mp4v","mpg4"],quicktime:["qt","mov"],ogg:"ogv","vnd.mpegurl":["mxu","m4u"],"x-flv":"flv","x-la-asf":["lsf","lsx"],"x-mng":"mng","x-ms-asf":["asf","asx","asr"],"x-ms-wm":"wm","x-ms-wmv":"wmv","x-ms-wmx":"wmx","x-ms-wvx":"wvx","x-msvideo":"avi","x-sgi-movie":"movie","x-matroska":["mpv","mkv","mk3d","mks"],"3gpp2":"3g2",h261:"h261",h263:"h263",h264:"h264",jpeg:"jpgv",jpm:["jpm","jpgm"],mj2:["mj2","mjp2"],"vnd.ms-playready.media.pyv":"pyv","vnd.uvvu.mp4":["uvu","uvvu"],"vnd.vivo":"viv",webm:"webm","x-f4v":"f4v","x-m4v":"m4v","x-ms-vob":"vob","x-smv":"smv"}},b=function(){var b,c,d,e,f={};for(b in a)if(a.hasOwnProperty(b))for(c in a[b])if(a[b].hasOwnProperty(c))if("string"==typeof(d=a[b][c]))f[d]=b+"/"+c;else for(e=0;en/2.5&&(p=n/2.5,pop_content.style.maxHeight=p+"px"),popRect.height+l>=n-25?(c.style.top=l-popRect.height+"px",c.classList.add("above")):c.classList.remove("above"),k-popRect.width<=0?(c.style.left=k+"px",c.classList.add("left")):c.classList.remove("left"),k+popRect.width/2>=o?(c.style.left=k-300+"px",popRect=c.getBoundingClientRect(),c.style.left=k-popRect.width+"px",popRect.height+l>=n-25?(c.style.top=l-popRect.height+"px",c.classList.add("above")):c.classList.remove("above"),c.classList.add("right")):c.classList.remove("right")}function d(){f[i].classList.add("on")}function e(){f[i].classList.remove("on")}function g(){setTimeout(function(){f[i].classList.remove("show")},100)}var h,i,j,k,l,m;"noteref"==a.getAttribute("epub:type")&&(h=a.getAttribute("href"),i=h.replace("#",""),j=b.render.document.getElementById(i),a.addEventListener("mouseover",c,!1),a.addEventListener("mouseout",g,!1))}),a&&a()},EPUBJS.Hooks.register("beforeChapterDisplay").mathml=function(a,b){if(b.currentChapter.manifestProperties.indexOf("mathml")!==-1){b.render.iframe.contentWindow.mathmlCallback=a;var c=document.createElement("script");c.type="text/x-mathjax-config",c.innerHTML=' MathJax.Hub.Register.StartupHook("End",function () { window.mathmlCallback(); }); MathJax.Hub.Config({jax: ["input/TeX","input/MathML","output/SVG"],extensions: ["tex2jax.js","mml2jax.js","MathEvents.js"],TeX: {extensions: ["noErrors.js","noUndefined.js","autoload-all.js"]},MathMenu: {showRenderer: false},menuSettings: {zoom: "Click"},messageStyle: "none"}); ',b.doc.body.appendChild(c),EPUBJS.core.addScript("http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML",null,b.doc.head)}else a&&a()},EPUBJS.Hooks.register("beforeChapterDisplay").smartimages=function(a,b){var c=b.contents.querySelectorAll("img"),d=Array.prototype.slice.call(c),e=b.height;if("reflowable"!=b.layoutSettings.layout)return void a();d.forEach(function(a){var c=function(){var c,d=a.getBoundingClientRect(),f=d.height,g=d.top,h=a.getAttribute("data-height"),i=h||f,j=Number(getComputedStyle(a,"").fontSize.match(/(\d*(\.\d*)?)px/)[1]),k=j?j/2:0;e=b.contents.clientHeight,g<0&&(g=0),a.style.maxWidth="100%",i+g>=e?(ge&&(a.style.maxHeight=e+"px",a.style.width="auto",d=a.getBoundingClientRect(),i=d.height),a.style.display="block",a.style.WebkitColumnBreakBefore="always",a.style.breakBefore="column"),a.setAttribute("data-height",c)):(a.style.removeProperty("max-height"),a.style.removeProperty("margin-top"))},d=function(){b.off("renderer:resized",c),b.off("renderer:chapterUnload",this)};a.addEventListener("load",c,!1),b.on("renderer:resized",c),b.on("renderer:chapterUnload",d),c()}),a&&a()},EPUBJS.Hooks.register("beforeChapterDisplay").transculsions=function(a,b){var c=b.contents.querySelectorAll("[transclusion]");Array.prototype.slice.call(c).forEach(function(a){function c(){j=g,k=h,j>chapter.colWidth&&(d=chapter.colWidth/j,j=chapter.colWidth,k*=d),f.width=j,f.height=k}var d,e=a.getAttribute("ref"),f=document.createElement("iframe"),g=a.getAttribute("width"),h=a.getAttribute("height"),i=a.parentNode,j=g,k=h;c(),b.listenUntil("renderer:resized","renderer:chapterUnloaded",c),f.src=e,i.replaceChild(f,a)}),a&&a()}; \ No newline at end of file diff --git a/public/static/reader/epub/epubjs/libs/hammer.min.js b/public/static/reader/epub/epubjs/libs/hammer.min.js new file mode 100644 index 00000000..d5def773 --- /dev/null +++ b/public/static/reader/epub/epubjs/libs/hammer.min.js @@ -0,0 +1,7 @@ +/*! Hammer.JS - v2.0.6 - 2015-12-23 + * http://hammerjs.github.io/ + * + * Copyright (c) 2015 Jorik Tangelder; + * Licensed under the license */ +!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(j(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",f=a.console&&(a.console.warn||a.console.log);return f&&f.call(a.console,e,d),b.apply(this,arguments)}}function i(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&hb(d,c)}function j(a,b){return function(){return a.apply(b,arguments)}}function k(a,b){return typeof a==kb?a.apply(b?b[0]||d:d,b):a}function l(a,b){return a===d?b:a}function m(a,b,c){g(q(b),function(b){a.addEventListener(b,c,!1)})}function n(a,b,c){g(q(b),function(b){a.removeEventListener(b,c,!1)})}function o(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function p(a,b){return a.indexOf(b)>-1}function q(a){return a.trim().split(/\s+/g)}function r(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function u(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=nb(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY);var j=F(b.deltaTime,b.deltaX,b.deltaY);b.overallVelocityX=j.x,b.overallVelocityY=j.y,b.overallVelocity=mb(j.x)>mb(j.y)?j.x:j.y,b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,b.maxPointers=c.prevInput?b.pointers.length>c.prevInput.maxPointers?b.pointers.length:c.prevInput.maxPointers:b.pointers.length,C(c,b);var k=a.element;o(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===Ab||f.eventType===Cb)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Db&&(i>zb||h.velocity===d)){var j=b.deltaX-h.deltaX,k=b.deltaY-h.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=mb(l.x)>mb(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function D(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:lb(c/b),y:lb(d/b)}}function F(a,b,c){return{x:b/a||0,y:c/a||0}}function G(a,b){return a===b?Eb:mb(a)>=mb(b)?0>a?Fb:Gb:0>b?Hb:Ib}function H(a,b,c){c||(c=Mb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function I(a,b,c){c||(c=Mb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function J(a,b){return I(b[1],b[0],Nb)+I(a[1],a[0],Nb)}function K(a,b){return H(b[0],b[1],Nb)/H(a[0],a[1],Nb)}function L(){this.evEl=Pb,this.evWin=Qb,this.allow=!0,this.pressed=!1,x.apply(this,arguments)}function M(){this.evEl=Tb,this.evWin=Ub,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function N(){this.evTarget=Wb,this.evWin=Xb,this.started=!1,x.apply(this,arguments)}function O(a,b){var c=s(a.touches),d=s(a.changedTouches);return b&(Cb|Db)&&(c=t(c.concat(d),"identifier",!0)),[c,d]}function P(){this.evTarget=Zb,this.targetIds={},x.apply(this,arguments)}function Q(a,b){var c=s(a.touches),d=this.targetIds;if(b&(Ab|Bb)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=s(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return o(a.target,i)}),b===Ab)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Cb|Db)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Vb={touchstart:Ab,touchmove:Bb,touchend:Cb,touchcancel:Db},Wb="touchstart",Xb="touchstart touchmove touchend touchcancel";i(N,x,{handler:function(a){var b=Vb[a.type];if(b===Ab&&(this.started=!0),this.started){var c=O.call(this,a,b);b&(Cb|Db)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:vb,srcEvent:a})}}});var Yb={touchstart:Ab,touchmove:Bb,touchend:Cb,touchcancel:Db},Zb="touchstart touchmove touchend touchcancel";i(P,x,{handler:function(a){var b=Yb[a.type],c=Q.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:vb,srcEvent:a})}}),i(R,x,{handler:function(a,b,c){var d=c.pointerType==vb,e=c.pointerType==xb;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Cb|Db)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var $b=u(jb.style,"touchAction"),_b=$b!==d,ac="compute",bc="auto",cc="manipulation",dc="none",ec="pan-x",fc="pan-y";S.prototype={set:function(a){a==ac&&(a=this.compute()),_b&&this.manager.element.style&&(this.manager.element.style[$b]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){k(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),T(a.join(" "))},preventDefaults:function(a){if(!_b){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=p(d,dc),f=p(d,fc),g=p(d,ec);if(e){var h=1===a.pointers.length,i=a.distance<2,j=a.deltaTime<250;if(h&&i&&j)return}if(!g||!f)return e||f&&c&Jb||g&&c&Kb?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var gc=1,hc=2,ic=4,jc=8,kc=jc,lc=16,mc=32;U.prototype={defaults:{},set:function(a){return hb(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=X(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=X(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=X(a,this),-1===r(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=X(a,this);var b=r(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(b,a)}var c=this,d=this.state;jc>d&&b(c.options.event+V(d)),b(c.options.event),a.additionalEvent&&b(a.additionalEvent),d>=jc&&b(c.options.event+V(d))},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=mc)},canEmit:function(){for(var a=0;af?Fb:Gb,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Eb:0>g?Hb:Ib,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Y.prototype.attrTest.call(this,a)&&(this.state&hc||!(this.state&hc)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=W(a.direction);b&&(a.additionalEvent=this.options.event+b),this._super.emit.call(this,a)}}),i($,Y,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[dc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&hc)},emit:function(a){if(1!==a.scale){var b=a.scale<1?"in":"out";a.additionalEvent=this.options.event+b}this._super.emit.call(this,a)}}),i(_,U,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[bc]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Cb|Db)&&!f)this.reset();else if(a.eventType&Ab)this.reset(),this._timer=e(function(){this.state=kc,this.tryEmit()},b.time,this);else if(a.eventType&Cb)return kc;return mc},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===kc&&(a&&a.eventType&Cb?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=nb(),this.manager.emit(this.options.event,this._input)))}}),i(ab,Y,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[dc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&hc)}}),i(bb,Y,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Jb|Kb,pointers:1},getTouchAction:function(){return Z.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Jb|Kb)?b=a.overallVelocity:c&Jb?b=a.overallVelocityX:c&Kb&&(b=a.overallVelocityY),this._super.attrTest.call(this,a)&&c&a.offsetDirection&&a.distance>this.options.threshold&&a.maxPointers==this.options.pointers&&mb(b)>this.options.velocity&&a.eventType&Cb},emit:function(a){var b=W(a.offsetDirection);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),i(cb,U,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[cc]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance=43)}}).catch(function(){return!1})}function n(a){return"boolean"==typeof ha?ja.resolve(ha):m(a).then(function(a){return ha=a})}function o(a){var b=ia[a.name],c={};c.promise=new ja(function(a){c.resolve=a}),b.deferredOperations.push(c),b.dbReady?b.dbReady=b.dbReady.then(function(){return c.promise}):b.dbReady=c.promise}function p(a){var b=ia[a.name],c=b.deferredOperations.pop();c&&c.resolve()}function q(a,b){return new ja(function(c,d){if(a.db){if(!b)return c(a.db);o(a),a.db.close()}var e=[a.name];b&&e.push(a.version);var f=ga.open.apply(ga,e);b&&(f.onupgradeneeded=function(b){var c=f.result;try{c.createObjectStore(a.storeName),b.oldVersion<=1&&c.createObjectStore(ka)}catch(c){if("ConstraintError"!==c.name)throw c;console.warn('The database "'+a.name+'" has been upgraded from version '+b.oldVersion+" to version "+b.newVersion+', but the storage "'+a.storeName+'" already exists.')}}),f.onerror=function(a){a.preventDefault(),d(f.error)},f.onsuccess=function(){c(f.result),p(a)}})}function r(a){return q(a,!1)}function s(a){return q(a,!0)}function t(a,b){if(!a.db)return!0;var c=!a.db.objectStoreNames.contains(a.storeName),d=a.versiona.db.version;if(d&&(a.version!==b&&console.warn('The database "'+a.name+"\" can't be downgraded from version "+a.db.version+" to version "+a.version+"."),a.version=a.db.version),e||c){if(c){var f=a.db.version+1;f>a.version&&(a.version=f)}return!0}return!1}function u(a){return new ja(function(b,c){var d=new FileReader;d.onerror=c,d.onloadend=function(c){var d=btoa(c.target.result||"");b({__local_forage_encoded_blob:!0,data:d,type:a.type})},d.readAsBinaryString(a)})}function v(a){var b=l(atob(a.data));return i([b],{type:a.type})}function w(a){return a&&a.__local_forage_encoded_blob}function x(a){var b=this,c=b._initReady().then(function(){var a=ia[b._dbInfo.name];if(a&&a.dbReady)return a.dbReady});return k(c,a,a),c}function y(a){function b(){return ja.resolve()}var c=this,d={db:null};if(a)for(var e in a)d[e]=a[e];ia||(ia={});var f=ia[d.name];f||(f={forages:[],db:null,dbReady:null,deferredOperations:[]},ia[d.name]=f),f.forages.push(c),c._initReady||(c._initReady=c.ready,c.ready=x);for(var g=[],h=0;h>4,k[i++]=(15&d)<<4|e>>2,k[i++]=(3&e)<<6|63&f;return j}function I(a){var b,c=new Uint8Array(a),d="";for(b=0;b>2],d+=na[(3&c[b])<<4|c[b+1]>>4],d+=na[(15&c[b+1])<<2|c[b+2]>>6],d+=na[63&c[b+2]];return c.length%3===2?d=d.substring(0,d.length-1)+"=":c.length%3===1&&(d=d.substring(0,d.length-2)+"=="),d}function J(a,b){var c="";if(a&&(c=Ea.call(a)),a&&("[object ArrayBuffer]"===c||a.buffer&&"[object ArrayBuffer]"===Ea.call(a.buffer))){var d,e=qa;a instanceof ArrayBuffer?(d=a,e+=sa):(d=a.buffer,"[object Int8Array]"===c?e+=ua:"[object Uint8Array]"===c?e+=va:"[object Uint8ClampedArray]"===c?e+=wa:"[object Int16Array]"===c?e+=xa:"[object Uint16Array]"===c?e+=za:"[object Int32Array]"===c?e+=ya:"[object Uint32Array]"===c?e+=Aa:"[object Float32Array]"===c?e+=Ba:"[object Float64Array]"===c?e+=Ca:b(new Error("Failed to get type for BinaryArray"))),b(e+I(d))}else if("[object Blob]"===c){var f=new FileReader;f.onload=function(){var c=oa+a.type+"~"+I(this.result);b(qa+ta+c)},f.readAsArrayBuffer(a)}else try{b(JSON.stringify(a))}catch(c){console.error("Couldn't convert value into a JSON string: ",a),b(null,c)}}function K(a){if(a.substring(0,ra)!==qa)return JSON.parse(a);var b,c=a.substring(Da),d=a.substring(ra,Da);if(d===ta&&pa.test(c)){var e=c.match(pa);b=e[1],c=c.substring(e[0].length)}var f=H(c);switch(d){case sa:return f;case ta:return i([f],{type:b});case ua:return new Int8Array(f);case va:return new Uint8Array(f);case wa:return new Uint8ClampedArray(f);case xa:return new Int16Array(f);case za:return new Uint16Array(f);case ya:return new Int32Array(f);case Aa:return new Uint32Array(f);case Ba:return new Float32Array(f);case Ca:return new Float64Array(f);default:throw new Error("Unkown type: "+d)}}function L(a){var b=this,c={db:null};if(a)for(var d in a)c[d]="string"!=typeof a[d]?a[d].toString():a[d];var e=new ja(function(a,d){try{c.db=openDatabase(c.name,String(c.version),c.description,c.size)}catch(a){return d(a)}c.db.transaction(function(e){e.executeSql("CREATE TABLE IF NOT EXISTS "+c.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],function(){b._dbInfo=c,a()},function(a,b){d(b)})})});return c.serializer=Fa,e}function M(a,b){var c=this;"string"!=typeof a&&(console.warn(a+" used as a key, but it is not a string."),a=String(a));var d=new ja(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){c.executeSql("SELECT * FROM "+e.storeName+" WHERE key = ? LIMIT 1",[a],function(a,c){var d=c.rows.length?c.rows.item(0).value:null;d&&(d=e.serializer.deserialize(d)),b(d)},function(a,b){d(b)})})}).catch(d)});return j(d,b),d}function N(a,b){var c=this,d=new ja(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){c.executeSql("SELECT * FROM "+e.storeName,[],function(c,d){for(var f=d.rows,g=f.length,h=0;h0)return void f(O.apply(e,[a,h,c,d-1]));g(b)}})})}).catch(g)});return j(f,c),f}function P(a,b,c){return O.apply(this,[a,b,c,1])}function Q(a,b){var c=this;"string"!=typeof a&&(console.warn(a+" used as a key, but it is not a string."),a=String(a));var d=new ja(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){c.executeSql("DELETE FROM "+e.storeName+" WHERE key = ?",[a],function(){b()},function(a,b){d(b)})})}).catch(d)});return j(d,b),d}function R(a){var b=this,c=new ja(function(a,c){b.ready().then(function(){var d=b._dbInfo;d.db.transaction(function(b){b.executeSql("DELETE FROM "+d.storeName,[],function(){a()},function(a,b){c(b)})})}).catch(c)});return j(c,a),c}function S(a){var b=this,c=new ja(function(a,c){b.ready().then(function(){var d=b._dbInfo;d.db.transaction(function(b){b.executeSql("SELECT COUNT(key) as c FROM "+d.storeName,[],function(b,c){var d=c.rows.item(0).c;a(d)},function(a,b){c(b)})})}).catch(c)});return j(c,a),c}function T(a,b){var c=this,d=new ja(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){c.executeSql("SELECT key FROM "+e.storeName+" WHERE id = ? LIMIT 1",[a+1],function(a,c){var d=c.rows.length?c.rows.item(0).key:null;b(d)},function(a,b){d(b)})})}).catch(d)});return j(d,b),d}function U(a){var b=this,c=new ja(function(a,c){b.ready().then(function(){var d=b._dbInfo;d.db.transaction(function(b){b.executeSql("SELECT key FROM "+d.storeName,[],function(b,c){for(var d=[],e=0;e=0;c--){var d=localStorage.key(c);0===d.indexOf(a)&&localStorage.removeItem(d)}});return j(c,a),c}function X(a,b){var c=this;"string"!=typeof a&&(console.warn(a+" used as a key, but it is not a string."),a=String(a));var d=c.ready().then(function(){var b=c._dbInfo,d=localStorage.getItem(b.keyPrefix+a);return d&&(d=b.serializer.deserialize(d)),d});return j(d,b),d}function Y(a,b){var c=this,d=c.ready().then(function(){for(var b=c._dbInfo,d=b.keyPrefix,e=d.length,f=localStorage.length,g=1,h=0;h + +(c) 2009-2014 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/master/LICENSE +*/ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.lengtha)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.compressionOptions=null,c.comment=null,c.unixPermissions=null,c.dosPermissions=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a,b){return e.deflateRaw(a,{level:b.level||-1})},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;gc;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a0?a.substring(0,b):""},x=function(a){return"/"!=a.slice(-1)&&(a+="/"),a},y=function(a,b){return b="undefined"!=typeof b?b:!1,a=x(a),this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},z=function(a,b,c){var f,g=new j;return a._data instanceof j?(g.uncompressedSize=a._data.uncompressedSize,g.crc32=a._data.crc32,0===g.uncompressedSize||a.dir?(b=i.STORE,g.compressedContent="",g.crc32=0):a._data.compressionMethod===b.magic?g.compressedContent=a._data.getCompressedContent():(f=a._data.getContent(),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c))):(f=p(a),(!f||0===f.length||a.dir)&&(b=i.STORE,f=""),g.uncompressedSize=f.length,g.crc32=e(f),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c)),g.compressedSize=g.compressedContent.length,g.compressionMethod=b.magic,g},A=function(a,b){var c=a;return a||(c=b?16893:33204),(65535&c)<<16},B=function(a){return 63&(a||0)},C=function(a,b,c,g,h){var i,j,k,m,n=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),o=b.comment||"",p=d.transformTo("string",l.utf8encode(o)),q=n.length!==b.name.length,r=p.length!==o.length,t=b.options,u="",v="",w="";k=b._initialMetadata.dir!==b.dir?b.dir:t.dir,m=b._initialMetadata.date!==b.date?b.date:t.date;var x=0,y=0;k&&(x|=16),"UNIX"===h?(y=798,x|=A(b.unixPermissions,k)):(y=20,x|=B(b.dosPermissions,k)),i=m.getHours(),i<<=6,i|=m.getMinutes(),i<<=5,i|=m.getSeconds()/2,j=m.getFullYear()-1980,j<<=4,j|=m.getMonth()+1,j<<=5,j|=m.getDate(),q&&(v=s(1,1)+s(e(n),4)+n,u+="up"+s(v.length,2)+v),r&&(w=s(1,1)+s(this.crc32(p),4)+p,u+="uc"+s(w.length,2)+w);var z="";z+="\n\x00",z+=q||r?"\x00\b":"\x00\x00",z+=c.compressionMethod,z+=s(i,2),z+=s(j,2),z+=s(c.crc32,4),z+=s(c.compressedSize,4),z+=s(c.uncompressedSize,4),z+=s(n.length,2),z+=s(u.length,2);var C=f.LOCAL_FILE_HEADER+z+n+u,D=f.CENTRAL_FILE_HEADER+s(y,2)+z+s(p.length,2)+"\x00\x00\x00\x00"+s(x,4)+s(g,4)+n+u+p;return{fileRecord:C,dirRecord:D,compressedObject:c}},D={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=y.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;cg&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;cb?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a>8;this.dir=16&this.externalFileAttributes?!0:!1,a===h&&(this.dosPermissions=63&this.externalFileAttributes),a===i&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileName.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.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}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead=hb&&(a.ins_h=(a.ins_h<=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<=hb&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){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=Y,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 C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(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 u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){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}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<q&&(p+=B[f++]<>>=w,q-=w),15>q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<q&&(p+=B[f++]<q&&(p+=B[f++]<k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){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 r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1); +break}for(c.back=0;Ab=c.lencode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.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"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++jj){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[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],ab=[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],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){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}b.exports=c},{}]},{},[9])(9)}); \ No newline at end of file diff --git a/public/static/reader/epub/epubjs/libs/zip.min.map b/public/static/reader/epub/epubjs/libs/zip.min.map new file mode 100644 index 00000000..f7f73f03 --- /dev/null +++ b/public/static/reader/epub/epubjs/libs/zip.min.map @@ -0,0 +1 @@ +{"version":3,"file":"zip.min.js","sources":["../../node_modules/jszip/lib/base64.js","../../node_modules/jszip/lib/compressedObject.js","../../node_modules/jszip/lib/dataReader.js","../../node_modules/jszip/lib/index.js","../../node_modules/jszip/lib/nodeBufferReader.js","../../node_modules/jszip/lib/stringReader.js","../../node_modules/jszip/lib/uint8ArrayReader.js","../../node_modules/jszip/lib/utils.js","../../node_modules/jszip/lib/zipEntries.js","../../node_modules/jszip/lib/zipEntry.js","../../node_modules/jszip/lib/compressions.js","../../node_modules/jszip/lib/crc32.js","../../node_modules/jszip/lib/defaults.js","../../node_modules/jszip/lib/deprecatedPublicUtils.js","../../node_modules/jszip/lib/flate.js","../../node_modules/jszip/lib/load.js","../../node_modules/jszip/lib/nodeBuffer.js","../../node_modules/jszip/lib/object.js","../../node_modules/jszip/lib/signature.js","../../node_modules/jszip/lib/stringWriter.js","../../node_modules/jszip/lib/support.js","../../node_modules/jszip/lib/uint8ArrayWriter.js","../../node_modules/jszip/lib/utf8.js"],"names":["CompressedObject","this","compressedSize","uncompressedSize","crc32","compressionMethod","compressedContent","DataReader","data","length","index","JSZip","options","files","comment","root","load","clone","newObj","i","NodeBufferReader","StringReader","optimizedBinaryString","utils","string2binary","Uint8ArrayReader","identity","input","stringToArrayLike","str","array","charCodeAt","arrayLikeToString","chunk","result","len","type","exports","getTypeOf","k","canUseApply","String","fromCharCode","apply","Uint8Array","nodeBuffer","e","resultStr","push","slice","Math","min","subarray","floor","join","arrayLikeToArrayLike","arrayFrom","arrayTo","ZipEntries","loadOptions","ZipEntry","_keyStr","encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","isNaN","charAt","decode","replace","indexOf","prototype","getContent","getCompressedContent","module","STORE","magic","compress","content","uncompress","compressInputType","uncompressInputType","DEFLATE","require","table","crc","isArray","x","y","b","iTop","checkOffset","offset","checkIndex","newIndex","Error","setIndex","skip","n","byteAt","readInt","size","readString","transformTo","readData","lastIndexOfSignature","readDate","dostime","Date","base64","binary","dir","createFolders","date","compression","compressionOptions","unixPermissions","dosPermissions","string2Uint8Array","uint8Array2String","string2Blob","buffer","arrayBuffer2Blob","outputType","checkSupport","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","findCompression","isRegExp","object","USE_TYPEDARRAY","Uint16Array","Uint32Array","pako","deflateRaw","level","inflateRaw","support","defaults","compressions","zipEntries","file","fileName","decompressed","fileComment","zipComment","encoding","Buffer","test","isBuffer","signature","utf8","StringWriter","Uint8ArrayWriter","getRawData","_data","copy","set","getBinaryData","nodebuffer","asBinary","dataToString","asUTF8","out","utf8decode","utf8encode","ZipObject","name","_initialMetadata","asText","call","asNodeBuffer","asUint8Array","asArrayBuffer","decToHex","dec","bytes","hex","extend","attr","arguments","hasOwnProperty","prepareFileAttrs","o","undefined","toUpperCase","fileAdd","parent","dataType","parseInt","forceTrailingSlash","parentFolder","folderAdd","path","substring","lastSlash","lastIndexOf","generateCompressedObjectFrom","generateUnixExternalFileAttr","isDir","generateDosExternalFileAttr","generateZipParts","compressedObject","platform","dosTime","dosDate","utfEncodedFileName","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","extFileAttr","versionMadeBy","getHours","getMinutes","getSeconds","getFullYear","getMonth","getDate","header","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","filter","search","filename","relativePath","fileClone","regexp","folder","arg","newFolder","ret","remove","kids","generate","mimeType","writer","zipData","localDirLength","centralDirLength","compressionName","zipPart","dirEnd","CENTRAL_DIRECTORY_END","typeName","toLowerCase","append","zip","finalize","string","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","DATA_DESCRIPTOR","sig","arraybuffer","ArrayBuffer","uint8array","blob","Blob","Builder","window","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","builder","getBlob","sig0","sig1","sig2","sig3","_utf8len","Array","string2buf","buf","c","c2","m_pos","str_len","buf_len","utf8border","max","pos","buf2string","c_len","utf16buf","applyFromCharCode","toString","nextBoundary","transform","byteLength","inputType","Object","supported","code","res","method","jszipProto","checkSignature","expectedSignature","reader","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","versionNeeded","zip64ExtensibleData","extraFieldId","extraFieldLength","extraFieldValue","extraDataSize","id","value","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","isGarbage","prepareReader","MADE_BY_DOS","MADE_BY_UNIX","isEncrypted","bitFlag","useUTF8","prepareCompressedContent","from","previousIndex","compressedFileData","prepareContent","uncompressedFileData","localExtraFieldsLength","fileNameLength","checkCRC32","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","madeBy","extraReader","start","upath","findExtraFieldUnicodePath","ucomment","findExtraFieldUnicodeComment","upathField","ucommentField"],"mappings":"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"} \ No newline at end of file diff --git a/public/static/reader/epub/icon.ico b/public/static/reader/epub/icon.ico new file mode 100644 index 00000000..f6b0ff2d Binary files /dev/null and b/public/static/reader/epub/icon.ico differ diff --git a/public/static/reader/epub/icon.png b/public/static/reader/epub/icon.png new file mode 100644 index 00000000..d3572603 Binary files /dev/null and b/public/static/reader/epub/icon.png differ diff --git a/public/static/reader/epub/index.html b/public/static/reader/epub/index.html new file mode 100644 index 00000000..1c15844a --- /dev/null +++ b/public/static/reader/epub/index.html @@ -0,0 +1,260 @@ + + + + + + + + ePubViewer + + + + + + + + + + +
+ +
+ +
+
+
+
ePubViewer
+ +
+
+
+
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/public/static/reader/epub/script.js b/public/static/reader/epub/script.js new file mode 100644 index 00000000..60b227c9 --- /dev/null +++ b/public/static/reader/epub/script.js @@ -0,0 +1,769 @@ +(function(d){ + var c = " ", f = "flex", fw = "-webkit-"+f, e = d.createElement('b'); + try { + e.style.display = fw; + e.style.display = f; + c += (e.style.display == f || e.style.display == fw) ? f : "no-"+f; + } catch(ex) { + c += "no-"+f; + } + d.documentElement.className += c; +})(document); + +ePubViewer = {}; +ePubViewer.state = { + "loaded": false, + "book-title": "", + "current-page": 0, + "total-pages": 0, + "book-author": "", + "cover-url": "", + "book-id": "", + "percent-read": 0, + "current-cfi": "", + "current-chapter": "", + "book": null, + "toc": [] +}; +ePubViewer.themes = { + "SepiaLight": { + "background-color": "#FBF0D9", + "color": "#704214", + "light": true + }, + "White": { + "color": "#000000", + "background-color": "#FFFFFF", + "light": true + }, + "Black": { + "background-color": "#000000", + "color": "#FFFFFF", + "light": false + }, + "Gray": { + "background-color": "#333333", + "color": "#EEEEEE", + "light": false + }, + "Dark": { + "background-color": "#262c2e", + "color": "#f0f2f3", + "light": false + }, + "SolarizedLight": { + "background-color": "#fdf6e3", + "color": "#657b83", + "light": true + }, + "SolarizedDark": { + "color": "#839496", + "background-color": "#002b36", + "light": false + }, +}; +ePubViewer.fonts = { + "ArbutusSlab": { + "link": "https://fonts.googleapis.com/css?family=Arbutus+Slab", + "font-family": "'Arbutus Slab', Georgia, serif" + }, + "DroidSerif": { + "link": "https://fonts.googleapis.com/css?family=Droid+Serif:400,400i,700,700i", + "font-family": "'Droid Serif', Georgia, serif" + }, + "OpenSans": { + "link": "https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i", + "font-family": "'Open Sans', Ubuntu, Trebuchet, sans-serif" + }, + "SourceCodePro": { + "link": "https://fonts.googleapis.com/css?family=Source+Code+Pro:200,300,400,500,600,700,900", + "font-family": "'Source Code Pro', 'Open Sans', sans-serif" + }, + "SourceSansPro": { + "link": "https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i&subset=cyrillic,cyrillic-ext,greek,greek-ext,latin-ext,vietnamese", + "font-family": "'Source Sans Pro', sans-serif" + } +}; +ePubViewer.settings = { + "theme": "White", + "font": "OpenSans", + "line-height": "1.5", + "font-size": "11pt", + "margin": "5%" +}; +ePubViewer.elements = {}; +ePubViewer.events = {}; +ePubViewer.functions = {}; +ePubViewer.functions.showFatalError = function (message) { + ePubViewer.state = { + "loaded": false, + "book-title": "", + "current-page": 0, + "total-pages": 0, + "book-author": "", + "cover-url": "", + "book-id": "", + "percent-read": 0, + "current-cfi": "", + "current-chapter": "", + "book": null, + "toc": [] + }; + ePubViewer.elements.content.innerHTML = [ + "
", + "
", + "
ePubViewer
", + "
", + "A fatal error has occured: " + message, + "
", + "
", + "
" + ].join("\n"); +}; +ePubViewer.functions.updateIndicators = function (message) { + if (ePubViewer.state.loaded) { + try { + ePubViewer.state["percent-read"] = Math.round(ePubViewer.state.book.locations.percentageFromCfi(ePubViewer.state.book.getCurrentLocationCfi()).toFixed(2) * 100); + } catch (e) {} + try { + ePubViewer.state["current-cfi"] = ePubViewer.state.book.getCurrentLocationCfi(); + } catch (e) {} + try { + ePubViewer.state["current-chapter"] = ePubViewer.state.book.toc[ePubViewer.state.book.spinePos].label; + } catch (e) {} + try { + document.title = ePubViewer.state["book-title"] + " - " + ePubViewer.state["book-author"]; + } catch (e) {} + if (ePubViewer.state.book.pagination.totalPages) { + ePubViewer.state["current-page"] = ePubViewer.state.book.pagination.pageFromCfi(ePubViewer.state.book.getCurrentLocationCfi()); + ePubViewer.state["total-pages"] = ePubViewer.state.book.pagination.totalPages; + } + } + + var els = document.querySelectorAll("[data-text]"); + var i = 0; + var nv = null; + for (i = 0; i < els.length; i++) { + try { + nv = ePubViewer.state[els[i].getAttribute("data-text")]; + if (els[i].innerHTML != nv) { + els[i].innerHTML = nv; + } + } catch (e) {} + } + + els = document.querySelectorAll("[data-href]"); + for (i = 0; i < els.length; i++) { + try { + nv = ePubViewer.state[els[i].getAttribute("data-href")]; + if (els[i].href != nv) { + els[i].href = nv; + } + } catch (e) {} + } + + els = document.querySelectorAll("[data-src]"); + for (i = 0; i < els.length; i++) { + try { + nv = ePubViewer.state[els[i].getAttribute("data-src")]; + if (els[i].src != nv) { + els[i].src = nv; + } + } catch (e) {} + } + + els = document.querySelectorAll("[data-if]"); + for (i = 0; i < els.length; i++) { + try { + var ea = ePubViewer.state[els[i].getAttribute("data-if")]; + if (ea) { + if (ea != "" && ea != 0 && ea != false) { + els[i].classList.remove("hidden"); + } else { + els[i].classList.add("hidden"); + } + } else { + els[i].classList.add("hidden"); + } + } catch (ex) {} + } + + els = document.querySelectorAll("[data-if-not]"); + for (i = 0; i < els.length; i++) { + try { + var eb = ePubViewer.state[els[i].getAttribute("data-if-not")]; + if (eb) { + if (eb != "" && eb != 0 && eb != false) { + els[i].classList.add("hidden"); + } else { + els[i].classList.remove("hidden"); + } + } else { + els[i].classList.remove("hidden"); + } + } catch (ex) {} + } +}; + +ePubViewer.functions.loadSettings = function () { + for (var k in ePubViewer.settings) { + if (ePubViewer.settings.hasOwnProperty(k)) { + var v = localStorage.getItem("ePubViewer|settings|" + k); + if (v !== null) { + ePubViewer.settings[k] = v; + console.log("Loaded setting: ", k, v); + } + + var el = document.querySelector(".reader [data-setting=" + k + "]"); + if (el) { + el.value = ePubViewer.settings[k]; + console.log("Updated setting chooser: ", el, k, v); + } + } + } + ePubViewer.functions.applySettings(); +}; + +ePubViewer.functions.updateSettingsFromSelectors = function () { + for (var k in ePubViewer.settings) { + if (ePubViewer.settings.hasOwnProperty(k)) { + var el = document.querySelector(".reader [data-setting=" + k + "]"); + if (el) { + if (el.value) { + var v = el.value; + if (el.tagName.toLowerCase() == "select") { + v = el.options[el.selectedIndex].value; + } + ePubViewer.settings[k] = v; + console.log("Updated setting: ", el, k, v); + ePubViewer.functions.saveSettings(); + } + } + } + } + ePubViewer.functions.applySettings(); +}; + +ePubViewer.functions.saveSettings = function () { + for (var k in ePubViewer.settings) { + if (ePubViewer.settings.hasOwnProperty(k)) { + var v = ePubViewer.settings[k]; + localStorage.setItem("ePubViewer|settings|" + k, v); + console.log("Saved setting: ", k, v); + } + } +}; + +ePubViewer.functions.applySettings = function () { + var font = ePubViewer.fonts[ePubViewer.settings.font] || ePubViewer.fonts.ArbutusSlab; + var theme = ePubViewer.themes[ePubViewer.settings.theme] || ePubViewer.themes.SepiaLight; + + try { + if (theme.light) { + document.body.classList.remove("dark"); + document.body.classList.add("light"); + } else { + document.body.classList.add("dark"); + document.body.classList.remove("light"); + } + } catch (ex) {} + + try { + var doc = ePubViewer.state.book.renderer.doc; + if (doc.getElementById("ePubViewerSettings") === null) { + doc.body.appendChild(doc.createElement("style")).id = "ePubViewerSettings"; + } + var styleEl = doc.getElementById("ePubViewerSettings"); + styleEl.innerHTML = [ + "html, body {", + "font-family: " + font["font-family"] + ";", + "font-size: " + ePubViewer.settings["font-size"] + ";", + "color: " + theme.color + " !important;", + "background-color: " + theme["background-color"] + " !important;", + "line-height: " + ePubViewer.settings["line-height"] + " !important;", + "}", + "p {", + "font-family: " + font["font-family"] + " !important;", + "font-size: " + ePubViewer.settings["font-size"] + " !important;", + "}" + ].join("\n"); + if (font.link) { + if (doc.getElementById("ePubViewerFontLink") === null) { + doc.body.appendChild(doc.createElement("link")).id = "ePubViewerFontLink"; + } + var el = document.getElementById("ePubViewerFontLink"); + el.setAttribute("rel", "stylesheet"); + el.setAttribute("href", font.link); + } + } catch (e) {} + + if (document.getElementById("ePubViewerAppSettings") === null) { + document.body.appendChild(document.createElement("style")).id = "ePubViewerAppSettings"; + } + var styleEla = document.getElementById("ePubViewerAppSettings"); + styleEla.innerHTML = [ + ".reader {", + "font-family: " + font["font-family"] + ";", + "color: " + theme.color + ";", + "background-color: " + theme["background-color"] + ";", + "}", + ".reader .main .content {", + "margin: 5px " + ePubViewer.settings.margin + ";", + "}", + ".reader .main .sidebar.overlay {", + "color: " + theme.color + ";", + "background: " + theme["background-color"] + " !important;", + "}", + ].join("\n"); + if (font.link) { + if (document.getElementById("ePubViewerAppFontLink") === null) { + document.body.appendChild(document.createElement("link")).id = "ePubViewerAppFontLink"; + } + var ela = document.getElementById("ePubViewerAppFontLink"); + ela.setAttribute("rel", "stylesheet"); + ela.setAttribute("href", font.link); + } +}; + +ePubViewer.functions.getCoverURL = function (callback) { + ePubViewer.state.book.coverUrl().then(function (blobUrl) { + console.log(blobUrl); + var xhr = new XMLHttpRequest(); + xhr.responseType = 'blob'; + xhr.onload = function () { + var recoveredBlob = xhr.response; + var reader = new FileReader(); + reader.onload = function () { + callback(reader.result); + }; + reader.readAsDataURL(recoveredBlob); + }; + xhr.open('GET', blobUrl); + xhr.send(); + }); +}; +ePubViewer.actions = {}; +ePubViewer.actions.settingsReset = function () { + for (var k in ePubViewer.settings) { + if (ePubViewer.settings.hasOwnProperty(k)) { + try { + delete localStorage["ePubViewer|settings|" + k]; + } catch (e) {} + console.log("Deleted setting: ", k); + } + } + window.location.reload(); +}; +ePubViewer.actions.allReset = function () { + if (confirm("Really delete all settings and book progress information?")) { + for (var i = 0; i < localStorage.length; i++) { + var k = localStorage.key(i); + if (k.startsWith("ePubViewer|")) { + try { + delete localStorage[k]; + } catch (e) {} + } + } + window.location.reload(); + } +}; +ePubViewer.actions.showSidebar = function (sbname) { + var sbels = document.querySelectorAll(".reader .sidebar [data-sidebar]"); + for (var i = 0; i < sbels.length; i++) { + try { + if (sbels[i].getAttribute("data-sidebar") == sbname) { + sbels[i].classList.add("visible"); + } else { + sbels[i].classList.remove("visible"); + } + } catch (e) {} + } + var sb = document.querySelector(".reader .sidebar"); + sb.classList.add("visible"); + sb.classList.remove("hidden"); +}; +ePubViewer.actions.closeSidebars = function () { + var sbels = document.querySelectorAll(".reader .sidebar [data-sidebar]"); + for (var i = 0; i < sbels.length; i++) { + sbels[i].classList.remove("visible"); + } + var sb = document.querySelector(".reader .sidebar"); + sb.classList.remove("visible"); + sb.classList.add("hidden"); +}; +ePubViewer.actions.prevPage = function () { + ePubViewer.state.book.prevPage(); +}; +ePubViewer.actions.nextPage = function () { + ePubViewer.state.book.nextPage(); +}; +ePubViewer.actions.gotoChapter = function (chapter) { + if (chapter.indexOf("epubcfi") > -1) { + ePubViewer.state.book.gotoCfi(chapter); + } else { + ePubViewer.state.book.gotoHref(chapter); + } +}; +ePubViewer.actions.doSearch = function(q) { + return new Promise(function(resolve, reject) { + var r = ePubViewer.elements.searchResults; + + r.innerHTML = ""; + + var resultPromises = []; + + q = q.replace(/^\s+|\s+$/g,''); + + if (q.length < 3) { + r.innerHTML = 'Please enter at least 3 characters'; + resolve([]); + return; + } + + for (var i = 0; i < ePubViewer.state.book.spine.length; i++) { + var spineItem = ePubViewer.state.book.spine[i]; + resultPromises.push(new Promise(function(resolve, reject) { + new Promise(function(resolve, reject) { + resolve(new EPUBJS.Chapter(spineItem, ePubViewer.state.book.store, ePubViewer.state.book.credentials)); + }).then(function(chapter) { + return new Promise(function(resolve, reject) { + chapter.load().then(function() { + resolve(chapter); + }).catch(reject); + }); + }).then(function(chapter) { + return Promise.resolve(chapter.find(q)); + }).then(function(result) { + resolve(result); + }); + })); + } + Promise.all(resultPromises).then(function(results) { + return new Promise(function(resolve, reject) { + resolve(results); + var mergedResults = [].concat.apply([], results); + console.log(mergedResults); + var max = mergedResults.length; + max = max > 100 ? 100 : max; + var fragment = document.createDocumentFragment() + for (var i = 0; i < max; i++) { + try { + var er = document.createElement("a"); + er.classList.add("result"); + er.href = "javascript:void(0);"; + er.addEventListener("click", function() { + console.log(this.getAttribute("data-location")); + ePubViewer.state.book.goto(this.getAttribute("data-location")); + }); + er.setAttribute("data-location", mergedResults[i].cfi); + er.innerHTML = mergedResults[i].excerpt; + fragment.appendChild(er); + } catch (e) { + console.warn(e); + } + } + r.appendChild(fragment); + }); + }); + }); +}; +ePubViewer.actions.loadBook = function (urlOrArrayBuffer) { + ePubViewer.actions.clearSearch(); + ePubViewer.elements.tocList.innerHTML = ""; + + ePubViewer.elements.content.innerHTML = ""; + ePubViewer.state.book = ePub({ + "storage": false + }); + ePubViewer.state.book.on("book:loadFailed", function () { + ePubViewer.state.loaded = false; + ePubViewer.functions.updateIndicators(); + ePubViewer.functions.showFatalError("Error loading book"); + }); + ePubViewer.state.book.open(urlOrArrayBuffer); + + ePubViewer.state.book.getMetadata().then(function (meta) { + try { + ePubViewer.state.book.nextPage(); + } catch (e) {} + + ePubViewer.state["book-title"] = meta.bookTitle; + ePubViewer.state["book-author"] = meta.creator; + + try { + ePubViewer.functions.getCoverURL(function (u) { + ePubViewer.state["cover-url"] = u; + }); + } catch (e) {} + + ePubViewer.state["book-id"] = [meta.bookTitle, meta.creator, meta.identifier, meta.publisher].join(":"); + + var curpostmp = localStorage.getItem("ePubViewer|" + ePubViewer.state["book-id"] + "|curPosCfi"); + if (curpostmp) { + ePubViewer.state.book.goto(curpostmp); + } + + ePubViewer.state.book.on('renderer:locationChanged', function (locationCfi) { + localStorage.setItem("ePubViewer|" + ePubViewer.state["book-id"] + "|curPosCfi", ePubViewer.state.book.getCurrentLocationCfi()); + }); + + ePubViewer.state.book.locations.generate().then(function () { + ePubViewer.functions.updateIndicators(); + }); + + var ismobile = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)); + if (!ismobile) { + window.setTimeout(function () { + var w = 600; + var h = 800; + ePubViewer.state.book.generatePagination(w, h).then(function () { + ePubViewer.functions.updateIndicators(); + }); + }, 1000); + } + + ePubViewer.state.book.on('renderer:locationChanged', function (locationCfi) { + ePubViewer.functions.updateIndicators(); + }); + + ePubViewer.state.book.getToc().then(function (toc) { + ePubViewer.state.toc = toc; + var containerel = ePubViewer.elements.tocList; + containerel.innerHTML = ""; + for (var i = 0; i < toc.length; i++) { + console.log(toc[i]); + var entryel = document.createElement("a"); + entryel.classList.add("toc-entry"); + entryel.innerHTML = toc[i].label; + entryel.setAttribute("data-cfi", toc[i].href); + entryel.href = "javascript:void(0);"; + entryel.onclick = function (e) { + ePubViewer.actions.gotoChapter(e.target.getAttribute("data-cfi")); + }; + containerel.appendChild(entryel); + if (toc[i].subitems) { + for (var j = 0; j < toc[i].subitems.length; j++) { + var entryela = document.createElement("a"); + entryela.classList.add("toc-entry"); + entryela.style.paddingLeft = "20px"; + entryela.innerHTML = toc[i].subitems[j].label; + entryela.setAttribute("data-cfi", toc[i].subitems[j].href); + entryela.href = "javascript:void(0);"; + entryela.onclick = function (e) { + ePubViewer.actions.gotoChapter(e.target.getAttribute("data-cfi")); + }; + containerel.appendChild(entryela); + if (toc[i].subitems[j].subitems) { + for (var k = 0; k < toc[i].subitems[j].subitems.length; k++) { + var entryelb = document.createElement("a"); + entryelb.classList.add("toc-entry"); + entryelb.style.paddingLeft = "40px"; + entryelb.innerHTML = toc[i].subitems[j].subitems[k].label; + entryelb.setAttribute("data-cfi", toc[i].subitems[j].subitems[k].href); + entryelb.href = "javascript:void(0);"; + entryelb.onclick = function (e) { + ePubViewer.actions.gotoChapter(e.target.getAttribute("data-cfi")); + }; + containerel.appendChild(entryelb); + } + } + } + } + } + }); + + ePubViewer.state.book.on('renderer:locationChanged', function (locationCfi) { + try { + var toclist = document.querySelectorAll(".reader .toc .toc-entry"); + for (var e = 0; e < toclist.length; e++) { + if (toclist[e].getAttribute("data-cfi") == "epubcfi(" + ePubViewer.state.book.currentChapter.cfiBase + ")") { + toclist[e].classList.add("active"); + } else { + toclist[e].classList.remove("active"); + } + } + } catch (ex) {} + }); + + ePubViewer.functions.applySettings(); + }); + + ePubViewer.state.loaded = true; + ePubViewer.functions.updateIndicators(); + ePubViewer.state.book.renderTo(ePubViewer.elements.content); +}; +ePubViewer.actions.handleSearch = function() { + ePubViewer.actions.doSearch(ePubViewer.elements.searchBox.value); +}; +ePubViewer.actions.clearSearch = function() { + ePubViewer.elements.searchResults.innerHTML = ""; +}; +ePubViewer.actions.openBook = function () { + var fi = document.createElement("input"); + fi.accept = "application/epub+zip"; + fi.style.display = "none"; + fi.type = "file"; + fi.onchange = function (event) { + var reader = new FileReader(); + reader.addEventListener("load", function () { + var arr = (new Uint8Array(reader.result)).subarray(0, 2); + var header = ""; + for (var i = 0; i < arr.length; i++) { + header += arr[i].toString(16); + } + console.log(header); + if (header == "504b") { + ePubViewer.actions.loadBook(reader.result); + } else { + ePubViewer.functions.showFatalError("The book you chose is not a valid epub book. Please try again."); + } + }, false); + if (fi.files[0]) { + reader.readAsArrayBuffer(fi.files[0]); + } + }; + document.body.appendChild(fi); + fi.click(); +}; +ePubViewer.actions.fullScreen = function () { + document.fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.documentElement.webkitRequestFullScreen; + + var requestFullscreen = function (element) { + if (element.requestFullscreen) { + element.requestFullscreen(); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.webkitRequestFullScreen) { + element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); + } + }; + + if (document.fullscreenEnabled) { + requestFullscreen(document.documentElement); + } +}; +ePubViewer.init = function () { + ePubViewer.elements.content = document.querySelector(".reader .content"); + ePubViewer.elements.openButton = document.querySelector(".reader .header .open-button"); + ePubViewer.elements.searchResults = document.querySelector(".reader .search-results"); + ePubViewer.elements.searchBox = document.querySelector('.reader .search-box'); + ePubViewer.elements.tocList = document.querySelector(".reader .toc"); + + EPUBJS.Hooks.register('beforeChapterDisplay').swipeDetection = function (callback, renderer) { + var swiper = renderer.doc.createElement('script'); + swiper.innerHTML = 'function Swiper(f,g,h,k,l){var b=null,c=null;f.addEventListener("touchstart",function(a){b=a.touches[0].clientX;c=a.touches[0].clientY},!1);f.addEventListener("touchmove",function(a){if(b&&c){var d=b-a.touches[0].clientX;a=c-a.touches[0].clientY;var e=Math.abs(d)>Math.abs(a);e&&30>Math.abs(d)||!e&&30>Math.abs(a)||(e?0 (third * 2)) { + ePubViewer.actions.nextPage(); + } + }); + if (callback) callback(); + }; + + EPUBJS.Hooks.register("beforeChapterDisplay").noSelection = function (callback, renderer) { + renderer.doc.body.appendChild(document.createElement("style")).innerHTML = [ + "* {", + " -webkit-user-select: none;", + " -moz-user-select: none;", + " -ms-user-select: none;", + " user-select: none;", + " -webkit-user-drag: none;", + " -moz-user-drag: none;", + " -ms-user-drag: none;", + " user-drag: none;", + "}" + ].join("\n"); + if (callback) callback(); + }; + + EPUBJS.Hooks.register("beforeChapterDisplay").styles = function (callback, renderer) { + renderer.doc.body.appendChild(document.createElement("style")).innerHTML = [ + "a:link, a:visited {", + " color: inherit;", + " background: rgba(0,0,0,0.05);", + "}", + "", + "html {", + " line-height: 1.5;", + " column-rule: 1px inset rgba(0,0,0,0.05);", + "}" + ].join("\n"); + if (callback) callback(); + }; + + EPUBJS.Hooks.register("beforeChapterDisplay").settings = function (callback, renderer) { + ePubViewer.functions.applySettings(); + if (callback) callback(); + }; + + ePubViewer.functions.updateIndicators(); + window.setInterval(ePubViewer.functions.updateIndicators, 1000); + + ePubViewer.functions.loadSettings(); + + (function loadFromURL() { + var ufn = location.search.replace("?", "") || location.hash.replace("#", ""); + if (ufn.startsWith("!")) { + ufn = ufn.replace("!", ""); + document.getElementById("openbutton").style = "display: none !important"; + } + if (ufn) { + ePubViewer.actions.loadBook(ufn); + } + })(); + (function nwjsfunctions() { + if (typeof nw != "undefined") { + var gui = require('nw.gui'); + var fs = require('fs'); + var uto = gui.App.argv[0]; + fs.stat(uto, function (err, stat) { + if (err == null) { + ePubViewer.actions.loadBook("file://" + uto); + } else if (err.code == 'ENOENT') {} else {} + }); + } + })(); + window.clearTimeout(ePubViewerLoadError); + document.body.parentElement.classList.remove("load-error"); +}; +ePubViewer.init(); \ No newline at end of file diff --git a/public/static/reader/epub/style.css b/public/static/reader/epub/style.css new file mode 100644 index 00000000..0b122165 --- /dev/null +++ b/public/static/reader/epub/style.css @@ -0,0 +1,492 @@ +.reader { + display: flex; + flex-direction: column; + align-content: space-between; + justify-content: space-between; + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + font-family: 'Open Sans', sans-serif; + background: #FFFFFF; + color: #000000; +} + +.reader .header, +.reader .footer { + flex: 0 0 auto; + display: flex; + flex-direction: row; + align-content: space-between; + justify-content: space-between; + height: 30px; + line-height: 30px; + font-size: 14px; +} + +.reader .header .material-icons, +.reader .footer .material-icons { + display: inline-block; + font-size: 20px; + line-height: 30px; + width: 30px; + text-align: center; +} + +@media only screen and (max-width: 500px) { + .nomobile { + display: none !important; + } +} + +@media only screen and (min-height: 500px) and (min-width: 500px) { + .reader .header, + .reader .footer { + height: 50px; + line-height: 50px; + } + .reader .header .material-icons, + .reader .footer .material-icons { + line-height: 50px; + width: 50px; + } +} + +.reader .header .left, +.reader .header .right, +.reader .footer .left, +.reader .footer .right { + flex: 0 0 auto; +} + +.reader .header .center, +.reader .footer .center { + flex: 1; + text-align: center; +} + +.reader .header .item, +.reader .footer .item, +.reader .header .item:link, +.reader .footer .item:link, +.reader .header .item:visited, +.reader .footer .item:visited { + display: inline-block; + color: inherit; + opacity: 0.65; + text-decoration: none; +} + +.reader .header .item:link, +.reader .footer .item:link { + cursor: pointer; +} + +.reader .header .item:hover, +.reader .footer .item:hover { + opacity: 1.0; +} + +.reader .header .item:active, +.reader .footer .item:active { + transform: scale(1.02); +} + +.reader .main { + flex: 1; + display: flex; + flex-direction: row; + align-content: flex-start; + justify-content: flex-start; +} + +.reader .main .content { + flex: 1; + display: flex; +} + +.reader .main .content :first-child { + flex: 1; +} + +.reader .main .content .welcome { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.reader .main .content .welcome .welcome-inner { + flex: 0 0 auto; + padding-bottom: 200px; +} + +.reader .main .content .welcome .welcome-inner .title { + font-size: 40px; + font-weight: 300; + display: block; + padding: 20px; +} + +.reader .main .content .welcome .welcome-inner .menu { + display: block; + text-align: center; +} + +.reader .main .content .welcome .welcome-inner .menu .big-item, +.reader .main .content .welcome .welcome-inner .menu .big-item:link, +.reader .main .content .welcome .welcome-inner .menu .big-item:visited { + display: inline-block; + width: 150px; + max-width: 100%; + font-size: 20px; + border-radius: 10px; + padding: 10px; + text-align: center; + margin: auto; + color: inherit; + text-decoration: none; + margin: 20px; + background: rgba(0, 0, 0, 0.03); + border: 1px solid rgba(0, 0, 0, 0.1); +} + +.reader .main .content .welcome .welcome-inner .menu .big-item:hover, +.reader .main .content .welcome .welcome-inner .menu .big-item:active { + background: rgba(0, 0, 0, 0.1); +} + +.reader .main .content .welcome .welcome-inner .menu .big-item:active { + border: 1px solid rgba(0, 0, 0, 0.2); + border-bottom: 3px solid rgba(0, 0, 0, 0.2); +} + +.reader .main .sidebar { + flex: 0 0 auto; + max-width: 250px; + overflow-y: auto; + border-right: 1px solid rgba(0,0,0,0.1); + font-size: 14px; + min-width: 200px; +} + +.reader .main .sidebar.hidden { + display: none; +} + +.reader .main .sidebar.visible { + display: block; +} + +.reader .main .sidebar.hidden { + display: none; +} + +.reader .main .sidebar.visible { + display: block; +} + +.reader .main .sidebar.overlay { + position: fixed; + top: 30px; + left: 0; + bottom: 30px; + background: inherit; + z-index: 1000000; + transition: transform 0.2s ease-in-out; +} + +.reader .main .sidebar.overlay.hidden { + display: block !important; + transform: translateX(-100%); +} + +.reader .main .sidebar.overlay.visible { + display: block !important; + transform: none; +} + +@media only screen and (min-height: 500px) and (min-width: 500px) { + .reader .main .sidebar.overlay { + top: 50px; + bottom: 50px; + } +} + +.reader .main .sidebar .sidebar-inner { + display: block; + display: flex; + height: 100%; + flex-direction: column; +} + +.reader .main .sidebar .sidebar-inner .sidebar-contents { + flex: 1; + height: 100%; + overflow-y: auto; +} + +.reader .main .sidebar .sidebar-header { + display: block; + padding: 5px; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + margin-bottom: 5px; + font-size: 130%; + flex: 0 0 auto; +} + +.reader .main .sidebar .sidebar-header .x { + display: block; + float: right; + font-size: 100%; + background: rgba(0, 0, 0, 0.001); + color: inherit; +} + +.reader .main .sidebar .sidebar-inner { + display: none; +} + +.reader .main .sidebar .toc-sidebar .toc { + display: block; +} + +.reader .main .sidebar .toc-sidebar .toc .toc-entry, +.reader .main .sidebar .toc-sidebar .toc .toc-entry:link, +.reader .main .sidebar .toc-sidebar .toc .toc-entry:visited { + display: block; + white-space: nowrap; + text-overflow: ellipsis; + color: inherit; + text-decoration: none; + overflow: hidden; + padding: 7px 3px; + margin-right: 3px; +} + +.reader .main .sidebar .toc-sidebar .toc .toc-entry:hover { + background: rgba(0, 0, 0, 0.1); +} + +.reader .main .sidebar .book-info { + display: block; + margin: 5px; +} + +.reader .main .sidebar .book-info .cover { + display: block; + max-width: 90px; + margin: 10px auto; +} + +.reader .main .sidebar .book-info .cover img { + width: 100%; +} + +.reader .main .sidebar .book-info .meta { + display: block; + text-align: center; +} + +.reader .main .sidebar .book-info .meta .book-title { + display: block; + text-align: center; + font-size: 125%; +} + +.reader .main .sidebar .progress-info { + display: block; + margin: 5px auto; + max-width: 70%; + border-top: 1px solid rgba(0, 0, 0, 0.1); + text-align: center; +} + +.reader .main .sidebar .progress-info>div { + display: block; + margin: 3px auto; +} + +.reader .main .sidebar .search-sidebar .search-bar { + display: flex; +} + +.reader .main .sidebar .search-sidebar .search-bar .search-box, +.reader .main .sidebar .search-sidebar .search-bar button { + border-radius: 0 !important; + padding: 3px !important; + border-color: rgba(0,0,0,0.3); + outline: 0; +} + +.reader .main .sidebar .search-sidebar .search-bar .search-box { + width: auto; + flex: 1; + cursor: text; +} +.reader .main .sidebar .search-sidebar .search-bar button { + flex: 0 0 30px; +} + +.reader .main .sidebar .search-sidebar .search-results { + display: block; +} + +.reader .main .sidebar .search-sidebar .search-results a.result, +.reader .main .sidebar .search-sidebar .search-results a.result:link, +.reader .main .sidebar .search-sidebar .search-results a.result:visited { + display: block; + text-decoration: none; + color: inherit; + padding: 14px; + border-bottom: 1px solid rgba(0,0,0,0.1); + font-size: 85%; +} + +.reader .main .sidebar .search-sidebar .search-results a.result:hover { + background: rgba(0,0,0,0.05); +} + +.reader .main .sidebar .search-sidebar .search-results a.result:active { + background: rgba(0,0,0,0.10); +} + +body.dark .reader .main .sidebar .search-sidebar .search-results a.result, +body.dark .reader .main .sidebar .search-sidebar .search-results a.result:link, +body.dark .reader .main .sidebar .search-sidebar .search-results a.result:visited { + border-bottom: 1px solid rgba(255,255,255,0.1); +} + +body.dark .reader .main .sidebar .search-sidebar .search-results a.result:hover { + background: rgba(255,255,255,0.05); +} + +body.dark .reader .main .sidebar .search-sidebar .search-results a.result:active { + background: rgba(255,255,255,0.10); +} + +.reader .main .sidebar .control { + display: flex; + margin: 5px 2px; +} + +.reader .main .sidebar .control .label { + flex: 1; + text-align: left; + font-size: 14px; +} + +.reader .main .sidebar .control select, +.reader .main .sidebar .control input, +.reader .main .sidebar .control button { + flex: 1; +} + +select, +button, +input[type="text"] { + background: transparent; + width: 130px; + padding: 5px; + font-size: 16px; + border: 1px solid rgba(0,0,0,0.5); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: rgba(0,0,0,0.3); + color: rgba(255,255,255,0.8); + border-radius: 5px; + -webkit-user-select: text !important; + -moz-user-select: text !important; + -ms-user-select: text !important; + user-select: text !important; +} + +select { + padding: 5px 35px 5px 5px; +} + +select:hover, +button:hover, +input[type="text"]:hover { + background: rgba(0,0,0,0.45); + cursor: pointer; +} + +body.light select, +body.light button , +body.light input[type="text"]{ + background: rgba(255,255,255,0.3); + color: rgba(0,0,0,0.8); +} + +body.light select:hover, +body.light button:hover, +body.light input[type="text"]:hover { + background: rgba(255,255,255,0.45); +} + +select::-ms-expand { + display: none; /* remove default arrow in IE 10 and 11 */ +} + +.reader .main .sidebar div.visible { + display: block; + display: flex; +} + +.reader * { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.reader .hidden { + display: none !important; +} + +.error.banner { + display: none; + position: fixed; + z-index: 1000000000; + top: 0; + left: 0; + right: 0; + color: #FFFFFF; + background: #a94442; + padding: 20px; + font-family: 'Open Sans', 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; +} + +html.no-flex .error.banner.incompatible-browser { + display: block; + z-index: 1000000005; +} + +html.load-error .error.banner.load-error { + display: block; + z-index: 1000000004; +} + +::-webkit-scrollbar-track { + background-color: transparent; +} + +::-webkit-scrollbar { + width: 6px; + background-color: rgba(0,0,0,0.07); +} + +::-webkit-scrollbar:hover { + background-color: rgba(0,0,0,0.1); +} + +::-webkit-scrollbar-thumb { + background-color: rgba(0,0,0,0.3); +} + +::-webkit-scrollbar-thumb:hover{ + background-color: rgba(0,0,0,0.4); +}