{"version":3,"sources":["webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/epubjs/src/utils/constants.js","webpack:///./node_modules/epubjs/src/utils/core.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./node_modules/epubjs/src/utils/url.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/es5-ext/object/assign/is-implemented.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/type/plain-function/is.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/epubjs/src/utils/replacements.js","webpack:///./node_modules/es5-ext/string/#/contains/is-implemented.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/es5-ext/object/valid-callable.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/es5-ext/object/assign/index.js","webpack:///./node_modules/@xmldom/xmldom/lib/index.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/epubjs/src/mapping.js","webpack:///./node_modules/epubjs/src/epub.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/path-webpack/path.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/epubjs/src/utils/hook.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/epubjs/src/contents.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/epubjs/src/utils/path.js","webpack:///./node_modules/type/object/is.js","webpack:///./node_modules/es5-ext/object/is-value.js","webpack:///./node_modules/type/function/is.js","webpack:///./node_modules/es5-ext/object/keys/shim.js","webpack:///./node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///./node_modules/es5-ext/object/keys/index.js","webpack:///./node_modules/jszip/dist/jszip.js","webpack:///./node_modules/marks-pane/lib/svg.js","webpack:///./node_modules/@xmldom/xmldom/lib/conventions.js","webpack:///./node_modules/epubjs/src/layout.js","webpack:///./node_modules/epubjs/src/managers/helpers/snap.js","webpack:///./node_modules/epubjs/src/managers/continuous/index.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/epubjs/src/epubcfi.js","webpack:///./node_modules/type/prototype/is.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/type/value/is.js","webpack:///./node_modules/epubjs/src/utils/queue.js","webpack:///./node_modules/es5-ext/object/valid-value.js","webpack:///./node_modules/epubjs/src/themes.js","webpack:///./node_modules/epubjs/src/annotations.js","webpack:///./node_modules/epubjs/src/rendition.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/localforage/dist/localforage.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./src/views/readBook.vue?e2ec","webpack:///./node_modules/epubjs/src/index.js","webpack:///src/views/readBook.vue","webpack:///./src/views/readBook.vue?42eb","webpack:///./src/views/readBook.vue","webpack:///./node_modules/epubjs/src/utils/request.js","webpack:///./node_modules/epubjs/src/section.js","webpack:///./node_modules/epubjs/src/spine.js","webpack:///./node_modules/epubjs/src/locations.js","webpack:///./node_modules/epubjs/src/container.js","webpack:///./node_modules/epubjs/src/packaging.js","webpack:///./node_modules/epubjs/src/navigation.js","webpack:///./node_modules/epubjs/src/utils/mime.js","webpack:///./node_modules/epubjs/src/resources.js","webpack:///./node_modules/epubjs/src/pagelist.js","webpack:///./node_modules/epubjs/src/archive.js","webpack:///./node_modules/epubjs/src/store.js","webpack:///./node_modules/epubjs/src/displayoptions.js","webpack:///./node_modules/epubjs/src/book.js","webpack:///./node_modules/marks-pane/lib/marks.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom-parser.js","webpack:///./node_modules/@xmldom/xmldom/lib/entities.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/event-emitter/index.js","webpack:///./node_modules/marks-pane/lib/events.js","webpack:///./node_modules/epubjs/src/managers/views/iframe.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/@xmldom/xmldom/lib/sax.js","webpack:///./src/views/readBook.vue?e69a","webpack:///./node_modules/@xmldom/xmldom/lib/dom.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/epubjs/src/utils/scrolltype.js","webpack:///./node_modules/epubjs/src/managers/helpers/stage.js","webpack:///./node_modules/epubjs/src/managers/helpers/views.js","webpack:///./node_modules/epubjs/src/managers/default/index.js","webpack:///./node_modules/es5-ext/function/noop.js","webpack:///./node_modules/es5-ext/object/keys/is-implemented.js","webpack:///./node_modules/es5-ext/object/normalize-options.js","webpack:///./node_modules/d/index.js","webpack:///./node_modules/es5-ext/object/assign/shim.js","webpack:///./node_modules/es5-ext/string/#/contains/shim.js","webpack:///./node_modules/es5-ext/string/#/contains/index.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/lodash/isSymbol.js"],"names":["Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","module","exports","EPUBJS_VERSION","DOM_EVENTS","EVENTS","BOOK","OPEN_FAILED","CONTENTS","EXPAND","RESIZE","SELECTED","SELECTED_RANGE","LINK_CLICKED","LOCATIONS","CHANGED","MANAGERS","RESIZED","ORIENTATION_CHANGE","ADDED","SCROLL","SCROLLED","REMOVED","VIEWS","AXIS","WRITING_MODE","LOAD_ERROR","RENDERED","DISPLAYED","SHOWN","HIDDEN","MARK_CLICKED","RENDITION","STARTED","ATTACHED","DISPLAY_ERROR","LOCATION_CHANGED","RELOCATED","LAYOUT","UPDATED","ANNOTATION","ATTACH","DETACH","requestAnimationFrame","window","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ELEMENT_NODE","TEXT_NODE","_URL","URL","webkitURL","mozURL","uuid","d","Date","getTime","replace","c","r","Math","random","floor","documentHeight","max","document","documentElement","clientHeight","body","scrollHeight","offsetHeight","isElement","obj","nodeType","isNumber","n","isNaN","parseFloat","isFinite","isFloat","f","indexOf","prefixed","unprefixed","vendors","prefixes","lower","toLowerCase","length","style","i","defaults","arguments","source","prop","extend","target","sources","slice","forEach","getOwnPropertyNames","propName","defineProperty","getOwnPropertyDescriptor","insert","item","array","compareFunction","location","locationOf","splice","_start","_end","compared","start","end","pivot","parseInt","a","b","indexOfSorted","bounds","el","getComputedStyle","widthProps","heightProps","width","height","borders","nodeBounds","node","elPos","doc","ownerDocument","Node","elRange","createRange","selectNodeContents","getBoundingClientRect","windowBounds","innerWidth","innerHeight","top","left","right","bottom","indexOfNode","typeId","sib","parent","parentNode","children","childNodes","index","indexOfTextNode","textNode","indexOfElementNode","elementNode","isXml","ext","createBlob","content","mime","Blob","type","createBlobUrl","tempUrl","blob","createObjectURL","revokeBlobUrl","url","revokeObjectURL","createBase64Url","data","datauri","btoa","parse","markup","forceXMLDom","Parser","DOMParser","charCodeAt","parseFromString","qs","sel","elements","Error","querySelector","getElementsByTagName","qsa","querySelectorAll","qsp","props","q","filtered","Array","filter","getAttribute","sprint","root","func","treeWalker","NodeFilter","SHOW_TEXT","walk","createTreeWalker","nextNode","callback","firstChild","walked","nextSibling","blob2base64","Promise","resolve","reject","reader","FileReader","readAsDataURL","onloadend","defer","this","id","promise","freeze","querySelectorByType","html","element","query","getAttributeNS","findChildren","push","parents","nodes","unshift","filterChildren","nodeName","single","getParentByTagName","tagname","tagName","RangeObject","collapsed","commonAncestorContainer","endContainer","endOffset","startContainer","startOffset","startNode","_commonAncestorContainer","collapse","_checkCollapsed","endNode","toStart","referenceNode","setStart","setEnd","endIndex","textContent","startParents","endParents","debounce","isObject","FUNC_ERROR_TEXT","throttle","wait","options","leading","trailing","TypeError","Url","urlString","baseString","basePath","absolute","pathname","href","protocol","origin","hash","search","base","Path","directory","filename","extension","what","fullpath","isAbsolute","relative","isObjectLike","assign","foo","bar","trzy","global","DOMIterables","DOMTokenListPrototype","createNonEnumerableProperty","handlePrototype","CollectionPrototype","error","COLLECTION_NAME","isFunction","classRe","functionToString","Function","test","$forEach","arrayMethodIsStrict","STRICT_METHOD","callbackfn","replaceBase","section","head","createElement","insertBefore","setAttribute","replaceCanonical","link","canonical","appendChild","replaceMeta","meta","idref","replaceLinks","contents","fn","links","replaceLink","linkUrl","onclick","path","bind","substitute","urls","replacements","RegExp","str","contains","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","code","len","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","output","join","extraBytes","parts","maxChunkLength","len2","dom","DOMImplementation","XMLSerializer","objectToString","freeGlobal","freeSelf","self","Mapping","layout","direction","axis","dev","horizontal","_dev","view","ranges","findRanges","map","rangeListToCfiList","cfiBase","rangePairToCfiPair","findStart","findEnd","startRange","toRange","endRange","selection","defaultView","getSelection","removeAllRanges","addRange","acceptNode","trim","FILTER_ACCEPT","FILTER_REJECT","safeFilter","columns","scrollWidth","spreads","ceil","spreadWidth","count","divisor","columnWidth","gap","pages","$el","found","stack","$prev","shift","findTextStartRange","round","findTextEndRange","range","pos","splitTextNodeIntoRanges","prev","_splitter","text","splitter","rangePair","startCfi","endCfi","cifPair","ePub","VERSION","Book","Rendition","Contents","CFI","utils","nullTag","undefinedTag","baseGetTag","process","assertPath","normalizeStringPosix","allowAboveRoot","res","lastSlash","dots","j","_format","sep","pathObject","dir","name","posix","cwd","resolvedPath","resolvedAbsolute","normalize","trailingSeparator","joined","arg","from","to","fromStart","fromEnd","fromLen","toEnd","toLen","lastCommonSep","fromCode","toCode","out","_makeLong","dirname","hasRoot","matchedSlash","basename","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","format","ret","delimiter","now","$","proto","forced","nextTick","args","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","chdir","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","Hook","context","hooks","hook","promises","task","executing","err","console","log","all","reWhitespace","trimmedEndIndex","string","charAt","hasNavigator","isChrome","navigator","userAgent","isWebkit","sectionIndex","epubcfi","_size","epubReadingSystem","called","active","listeners","w","frame","h","rect","border","overflow","overflowX","overflowY","property","priority","setProperty","removeProperty","$viewport","parsed","newContent","settings","hasAttribute","_width","match","_height","_scale","_minimum","_maximum","_scalable","scale","minimum","maximum","scalable","scrollTo","emit","imageLoadListeners","mediaQueryListeners","addEventListeners","addSelectionListeners","ResizeObserver","resizeListeners","visibilityListeners","resizeObservers","linksHandler","removeEventListeners","removeSelectionListeners","observer","disconnect","clearTimeout","expanding","textWidth","textHeight","onResize","resizeCheck","addEventListener","visibilityState","_resizeCheck","sheets","styleSheets","mediaChangeHandler","m","matches","_expanding","expand","rules","cssRules","media","mql","matchMedia","mediaText","addListener","observe","MutationObserver","mutations","config","attributes","childList","characterData","subtree","img","images","naturalWidth","onload","fonts","ready","then","ignoreClass","position","targetPos","isCfiString","container","newRange","Range","substring","getElementById","selectNode","src","$stylesheet","rel","onreadystatechange","readyState","key","styleEl","serializedCss","_getStylesheetNode","innerHTML","styleSheet","sheet","rl","rule","selector","propStr","pl","insertRule","selectors","keys","definition","isArray","_rules","$script","async","className","classList","add","remove","_triggerEvent","triggerEvent","eventName","passive","removeEventListener","_onSelectionChange","onSelectionChange","selectionEndTimeout","triggerSelectedEvent","cfirange","rangeCount","getRangeAt","_cfi","cfi","viewport","layoutStyle","css","COLUMN_AXIS","COLUMN_GAP","COLUMN_WIDTH","COLUMN_FILL","writingMode","offsetX","offsetY","scaleStr","translateStr","viewportWidth","viewportHeight","widthScale","heightScale","scaler","properties","includes","marginLeft","mapping","page","mode","_layoutStyle","version","hasFeature","feature","removeListeners","pathString","isDirectory","splitPathRe","exec","isValue","possibleTypes","_undefined","val","isPrototype","object","documentCreateElement","constructor","t","s","o","u","require","l","1","support","_keyStr","encode","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","remainingBytes","getTypeOf","decode","resultIndex","dataUrlPrefix","substr","totalLength","uint8array","2","external","DataWorker","Crc32Probe","DataLengthProbe","CompressedObject","compressedSize","uncompressedSize","crc32","compression","compressedContent","getContentWorker","worker","pipe","uncompressWorker","that","on","streamInfo","getCompressedWorker","withStreamInfo","createWorkerFrom","uncompressedWorker","compressionOptions","compressWorker","3","GenericWorker","STORE","magic","DEFLATE","4","makeTable","table","k","crcTable","crc","buf","crc32str","5","base64","binary","createFolders","date","comment","unixPermissions","dosPermissions","6","ES6Promise","7","USE_TYPEDARRAY","Uint16Array","Uint32Array","pako","ARRAY_TYPE","FlateWorker","action","_pako","_pakoAction","_pakoOptions","inherits","processChunk","chunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","8","utf8","signature","decToHex","dec","bytes","hex","String","fromCharCode","generateUnixExternalFileAttr","isDir","generateDosExternalFileAttr","generateZipParts","streamedContent","streamingEnded","offset","encodeFileName","dosTime","dosDate","file","useCustomEncoding","utf8encode","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","extFileAttr","versionMadeBy","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","header","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","generateCentralDirectoryEnd","entriesCount","centralDirLength","localDirLength","dirEnd","CENTRAL_DIRECTORY_END","generateDataDescriptors","descriptor","DATA_DESCRIPTOR","ZipFileWorker","streamFiles","bytesWritten","zipComment","zipPlatform","accumulate","contentBuffer","dirRecords","currentSourceOffset","currentFile","_sources","currentFilePercent","percent","remainingFiles","openedSource","record","closedSource","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","generatedError","lock","9","compressions","getCompression","fileCompression","zipCompression","compressionName","generateWorker","zip","zipFileWorker","relativePath","_compressWorker","10","JSZip","files","create","clone","newObj","loadAsync","11","ZipEntries","nodejsUtils","checkEntryCRC32","zipEntry","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","zipEntries","load","results","unsafeName","fileNameStr","safeName","fileCommentStr","unsafeOriginalName","12","NodejsStreamInputAdapter","stream","_upstreamEnded","_bindStream","_stream","13","Readable","NodejsStreamOutputAdapter","helper","updateCb","_helper","_read","14","Buffer","newBufferFrom","encoding","allocBuffer","size","alloc","fill","isBuffer","15","StreamHelper","ZipObject","generate","fileAdd","originalOptions","dataType","toUpperCase","forceTrailingSlash","parentFolder","folderAdd","isUnicodeString","isCompressedEmpty","zipObjectContent","lastIndexOf","isRegExp","cb","entry","regexp","folder","newFolder","kids","generateInternalStream","opts","mimeType","checkSupport","generateAsync","onUpdate","generateNodeStream","toNodejsStream","16","17","DataReader","ArrayReader","byteAt","zero","lastIndexOfSignature","sig","sig0","sig1","sig2","sig3","readAndCheckSignature","readData","checkOffset","18","checkIndex","newIndex","setIndex","skip","readInt","readString","readDate","dostime","UTC","19","Uint8ArrayReader","NodeBufferReader","20","StringReader","21","subarray","22","23","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","24","ConvertWorker","destType","25","26","27","DEFAULT_BLOCK_SIZE","dataP","dataIsReady","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","nextIndex","min","28","extraStreamInfo","isLocked","_listeners","listener","next","mergeStreamInfo","withError","me","29","nodestream","transformZipOutput","newBlob","concat","dataArray","set","updateCallback","chunkType","_internalType","resultType","_outputType","_mimeType","outputType","internalType","_worker","evt","objectMode","30","arraybuffer","ArrayBuffer","nodebuffer","buffer","Builder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","builder","append","getBlob","31","_utf8len","string2buf","c2","m_pos","str_len","buf_len","utf8border","buf2string","c_len","utf16buf","applyFromCharCode","Utf8DecodeWorker","leftOver","Utf8EncodeWorker","previousData","nextBoundary","usableData","32","string2binary","stringToArrayLike","identity","part","arrayToStringHelper","stringifyByChunk","stringifyByChar","resultStr","applyCanBeUsed","arrayLikeToString","canUseApply","arrayLikeToArrayLike","arrayFrom","arrayTo","transform","inputType","split","pop","supported","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","ctor","superCtor","Obj","attr","inputData","isBinary","isOptimizedBinaryString","isBase64","isBlob","onerror","readAsArrayBuffer","33","readerFor","ZipEntry","loadOptions","checkSignature","expectedSignature","isSignature","askedIndex","currentIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeParamType","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","extraFieldId","extraFieldLength","extraFieldValue","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","isGarbage","endOfCentralDirOffset","expectedEndOfCentralDirOffset","abs","prepareReader","34","crc32fn","MADE_BY_DOS","MADE_BY_UNIX","findCompression","compressionMethod","method","isEncrypted","bitFlag","useUTF8","localExtraFieldsLength","fileNameLength","fileName","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","madeBy","extraReader","upath","findExtraFieldUnicodePath","fileNameByteArray","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","35","_data","_dataBinary","internalStream","askUnicodeString","_decompressWorker","nodeStream","removedMethods","removedFn","36","scheduleDrain","draining","Mutation","WebKitMutationObserver","createTextNode","MessageChannel","scriptEl","removeChild","channel","port1","onmessage","port2","postMessage","queue","oldQueue","immediate","37","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","resolver","state","outcome","safelyResolveThenable","QueueItem","onFulfilled","onRejected","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","unwrap","returnValue","getThen","thenable","onError","onSuccess","tryToUnwrap","tryCatch","status","reason","iterable","values","resolved","allResolver","resolveFromAll","outValue","race","response","p","yes","no","38","deflate","inflate","constants","39","zlib_deflate","strings","msg","ZStream","Z_NO_FLUSH","Z_FINISH","Z_OK","Z_STREAM_END","Z_SYNC_FLUSH","Z_DEFAULT_COMPRESSION","Z_DEFAULT_STRATEGY","Z_DEFLATED","Deflate","chunkSize","windowBits","memLevel","strategy","opt","gzip","ended","chunks","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","dict","deflateSetDictionary","_dict_set","deflator","deflateRaw","_mode","next_in","avail_in","Buf8","next_out","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","40","zlib_inflate","GZheader","Inflate","inflateInit2","inflateGetHeader","inflator","inflateRaw","next_out_utf8","tail","utf8str","allowBufError","binstring2buf","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","arraySet","inflateEnd","ungzip","41","TYPED_OK","Int32Array","fnTyped","dest","src_offs","dest_offs","fnUntyped","setTyped","Buf16","Buf32","42","STR_APPLY_OK","STR_APPLY_UIA_OK","__","43","adler32","adler","s1","s2","44","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_BINARY","Z_TEXT","Z_UNKNOWN","45","46","configuration_table","trees","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","LENGTH_CODES","LITERALS","L_CODES","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","rank","flush_pending","pending","pending_buf","pending_out","total_out","flush_block_only","last","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","read_buf","wrap","total_in","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","limit","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","ins_h","hash_shift","hash_mask","deflate_stored","max_block_size","pending_buf_size","max_start","deflate_fast","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","deflate_rle","deflate_huff","Config","good_length","max_lazy","nice_length","max_chain","lm_init","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","deflateReset","deflateInit","old_flush","beg","hcrc","extra","time","os","level_flags","bstate","_tr_align","_tr_stored_block","avail","tmpDict","dictLength","deflateInfo","47","xflags","extra_len","done","48","BAD","TYPE","_in","_out","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","here","op","dist","from_source","lencode","distcode","lenbits","distbits","dolen","dodist","sane","49","inflate_fast","inflate_table","CODES","LENS","DISTS","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","DONE","MEM","SYNC","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","zswap32","InflateState","havedict","flags","check","total","wbits","ncode","nlen","ndist","have","work","lendyn","distdyn","back","was","inflateResetKeep","inflateReset","inflateReset2","inflateInit","lenfix","distfix","virgin","fixedtables","sym","updatewindow","copy","put","here_bits","here_op","here_val","last_bits","last_op","last_val","hbuf","order","inf_leave","dictid","inflateInfo","50","MAXBITS","lbase","lext","dbase","dext","lens_index","codes","table_index","incr","low","mask","curr","drop","used","huff","base_index","offs","extra_index","51","0","52","STORED_BLOCK","STATIC_TREES","DYN_TREES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","DIST_CODE_LEN","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","send_bits","send_code","tree","bi_reverse","bi_flush","gen_bitlen","desc","xbits","stree","gen_codes","next_code","tr_static_init","init_block","bi_windup","copy_block","smaller","_n2","_m2","pqdownheap","v","compress_block","ltree","dtree","lc","lx","build_tree","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","build_bl_tree","max_blindex","send_all_trees","lcodes","dcodes","blcodes","detect_data_type","black_mask","static_init_done","stored_len","opt_lenb","static_lenb","53","54","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","getPrototypeOf","installNextTickImplementation","canUsePostMessage","installPostMessageImplementation","installMessageChannelImplementation","installReadyStateChangeImplementation","installSetTimeoutImplementation","clearImmediate","handle","run","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","messagePrefix","onGlobalMessage","event","attachEvent","script","createElementNS","default","find","list","predicate","ac","oc","MIME_TYPE","HTML","isHTML","XML_APPLICATION","XML_TEXT","XML_XHTML_APPLICATION","XML_SVG_IMAGE","NAMESPACE","uri","SVG","XML","XMLNS","Layout","_spread","spread","_minSpreadWidth","minSpreadWidth","_evenSpreads","evenSpreads","flow","_flow","delta","update","_gap","pageWidth","formating","fit","pageLength","newProps","PI_D2","PI","EASING_EQUATIONS","easeOutSine","sin","easeInOutSine","cos","easeInOutQuint","pow","easeInCubic","manager","duration","minVelocity","minDistance","easing","supportsTouch","setup","fullsize","stage","scroller","disableScroll","afterScrolledTimeout","isVertical","isPaginated","touchCanceler","resizeCanceler","snapping","scrollLeft","scrollTop","startTouchX","startTouchY","startTime","endTouchX","endTouchY","endTime","addListeners","DocumentTouch","_onResize","_onScroll","onScroll","_onTouchStart","onTouchStart","_onTouchMove","onTouchMove","_onTouchEnd","onTouchEnd","_afterDisplayed","afterDisplayed","off","ev","triggerViewEvent","scrollX","scrollY","screenX","screenY","touches","enableScroll","deltaY","swipped","wasSwiped","snap","snapWidth","distance","velocity","howMany","snapTo","smoothScrollTo","destination","deferred","tick","scroll","performance","super","infinite","offsetDelta","allowScriptedContent","allowPopups","viewSettings","forceEvenPages","display","_full","full","enqueue","distX","distY","scrollBy","onDisplayed","createView","views","expanded","updateAxis","updateWritingMode","afterResized","request","counter","prepend","heightDelta","widthDelta","_offset","isVisible","viewsLength","visible","updating","displayed","show","hide","destroy","trimTimeout","catch","_offsetLeft","_offsetTop","checking","newViews","_bounds","visibleLength","contentLength","rtlScrollType","rtl","first","firstIndex","lastIndex","above","below","erase","prevTop","prevLeft","ignore","addScrollListeners","snapper","scrollDeltaVert","scrollDeltaHorz","_scrolled","scrolled","didScroll","prevScrollTop","prevScrollLeft","scrollTimeout","afterScrolled","needsSnap","rendered","updateFlow","reTrimStart","baseTrim","DOCUMENT_NODE","EpubCFI","cfiFrom","spinePos","parseComponent","steps","checkType","fromRange","fromNode","cfiStr","baseComponent","pathComponent","getChapterComponent","getPathComponent","getRange","componentStr","terminal","component","assertion","parseTerminal","step","parseStep","stepStr","has_brackets","termialStr","characterOffset","textLocationAssertion","indirection","splitStr","segment","segmentString","joinSteps","cfiString","cfiOne","cfiTwo","stepsA","stepsB","terminalA","terminalB","filteredNode","filteredPosition","currentNode","filteredStep","stepA","stepB","needsIgnoring","patchOffset","pathTo","equalStep","anchor","sibling","previousSibling","isText","totalOffset","currNodeType","prevNodeType","prevIndex","textNodes","normalizedMap","xpath","_doc","evaluate","walkToNode","stepsToXpath","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","child","findNode","lastStepIndex","childIndex","startSteps","endSteps","missed","fixMiss","_spineNodeIndex","_pos","spineNodeIndex","read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","write","rt","LN2","Queue","_q","running","paused","queued","inwait","dequeue","defered","rendition","_themes","_overrides","_current","_injected","register","inject","overrides","registerThemes","registerUrl","registerRules","theme","themes","getContents","removeClass","addClass","addStylesheet","serialized","addStylesheetCss","injected","addStylesheetRules","override","highlights","underlines","marks","_annotations","_annotationsBySectionIndex","render","unloaded","clear","cfiRange","styles","encodeURI","annotation","attach","_removeFromAnnotationBySectionIndex","detach","_annotationsAt","annotations","mark","highlight","underline","unhighlight","ununderline","unmark","book","stylesheet","resizeOnOrientationChange","defaultDirection","serialize","handleLinks","passEvents","adjustImages","spine","injectIdentifier","injectStylesheet","injectScript","opened","starting","started","viewManager","View","package","metadata","displayOptions","fixedLayout","ViewManager","requireManager","requireView","globalLayoutProperties","determineLayoutProperties","afterRemoved","onResized","onOrientationChange","reportLocation","displaying","_display","locations","cfiFromPercentage","get","triggerMarkEvent","trigger","orientation","moveTo","resize","_layout","applyLayout","isRendered","changed","updateLayout","currentLocation","located","percentage","totalPages","locationStart","locationFromCfi","locationEnd","percentageFromLocation","pageStart","pageList","pageFromCfi","pageEnd","atEnd","atStart","computed","paddingTop","paddingBottom","horizontalPadding","paddingLeft","paddingRight","ident","packaging","identifier","_dereq_","_typeof","iterator","_classCallCheck","instance","Constructor","getIDB","indexedDB","webkitIndexedDB","mozIndexedDB","OIndexedDB","msIndexedDB","idb","isIndexedDBValid","open","isSafari","openDatabase","hasFetch","fetch","IDBKeyRange","Promise$1","executeCallback","executeTwoCallbacks","errorCallback","normalizeKey","warn","getCallback","DETECT_BLOB_SUPPORT_STORE","supportsBlobs","dbContexts","READ_ONLY","READ_WRITE","_binStringToArrayBuffer","bin","_checkBlobSupportWithoutCaching","txn","transaction","objectStore","onabort","preventDefault","stopPropagation","oncomplete","matchedChrome","matchedEdge","_checkBlobSupport","_deferReadiness","dbInfo","dbContext","deferredOperation","deferredOperations","dbReady","_advanceReadiness","_rejectReadiness","_getConnection","upgradeNeeded","createDbContext","db","close","dbArgs","openreq","onupgradeneeded","createObjectStore","storeName","oldVersion","ex","newVersion","onsuccess","onversionchange","_getOriginalConnection","_getUpgradedConnection","_isUpgradeNeeded","defaultVersion","isNewStore","objectStoreNames","isDowngrade","isUpgrade","incVersion","_encodeBlob","__local_forage_encoded_blob","readAsBinaryString","_decodeBlob","encodedBlob","arrayBuff","atob","_isEncodedBlob","_fullyReady","_initReady","_dbInfo","_tryReconnect","forages","forage","createTransaction","retries","tx","_initStorage","initPromises","ignoreErrors","_defaultConfig","getItem","store","req","iterate","openCursor","iterationNumber","cursor","setItem","blobSupport","removeItem","advanced","openKeyCursor","advance","dropInstance","currentConfig","isCurrentDb","dbPromise","dropObjectPromise","deleteObjectStore","_forage2","dropDBPromise","deleteDatabase","onblocked","_forage","asyncStorage","_driver","_support","isWebSQLValid","BASE_CHARS","BLOB_TYPE_PREFIX","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER","SERIALIZED_MARKER_LENGTH","TYPE_ARRAYBUFFER","TYPE_BLOB","TYPE_INT8ARRAY","TYPE_UINT8ARRAY","TYPE_UINT8CLAMPEDARRAY","TYPE_INT16ARRAY","TYPE_INT32ARRAY","TYPE_UINT16ARRAY","TYPE_UINT32ARRAY","TYPE_FLOAT32ARRAY","TYPE_FLOAT64ARRAY","TYPE_SERIALIZED_MARKER_LENGTH","toString$1","stringToBuffer","serializedString","encoded1","encoded2","encoded3","encoded4","bufferLength","bufferToString","base64String","valueType","marker","fileReader","JSON","stringify","deserialize","blobType","matcher","Int8Array","Uint8ClampedArray","Int16Array","Float32Array","Float64Array","localforageSerializer","createDbTable","executeSql","_initStorage$1","dbInfoPromise","description","serializer","tryExecuteSql","sqlStatement","SYNTAX_ERR","rows","getItem$1","iterate$1","_setItem","retriesLeft","originalValue","sqlError","QUOTA_ERR","setItem$1","removeItem$1","clear$1","length$1","key$1","keys$1","getAllStoreNames","storeNames","dropInstance$1","operationInfo","dropTable","operations","webSQLStorage","isLocalStorageValid","localStorage","_getKeyPrefix","defaultConfig","keyPrefix","checkIfLocalStorageThrows","localStorageTestKey","_isLocalStorageUsable","_initStorage$2","clear$2","getItem$2","iterate$2","keyPrefixLength","key$2","keys$2","itemKey","length$2","removeItem$2","setItem$2","dropInstance$2","localStorageWrapper","sameValue","x","y","searchElement","DefinedDrivers","DriverSupport","DefaultDrivers","INDEXEDDB","WEBSQL","LOCALSTORAGE","DefaultDriverOrder","OptionalDriverMethods","LibraryMethods","DefaultConfig","driver","callWhenReady","localForageInstance","libraryMethod","_args","_key","LocalForage","driverTypeKey","driverName","defineDriver","_config","_driverSet","_initDriver","_ready","_wrapLibraryMethodsWithReady","setDriver","driverObject","complianceError","driverMethods","driverMethodName","isRequired","configureMissingMethods","methodNotImplementedFactory","methodName","_i","_len","optionalDriverMethod","setDriverSupport","info","getDriver","getDriverPromise","getSerializer","serializerPromise","drivers","supportedDrivers","_getSupportedDrivers","setDriverToConfig","extendSelfWithDriver","_extend","initDriver","currentDriverIndex","driverPromiseLoop","oldDriverSetDone","supports","libraryMethodsAndProperties","createInstance","localforage_js","fails","METHOD_NAME","argument","_vm","_h","$createElement","_c","_self","staticClass","attrs","ifTitleAndMenuShow","_v","_s","bookname","prevPage","toggleTitleAndMenu","nextPage","ref","fontSizeList","defaultFontSize","themeList","defaultTheme","bookAvailable","navigation","progress","getCurrentLocation","setFontSize","setTheme","onProgressChange","jumpTo","staticRenderFns","dataSize","isbn","methods","created","showEpub","$http","withCredentials","headers","supportsURL","BLOB_RESPONSE","xhr","XMLHttpRequest","xhrPrototype","handler","setRequestHeader","responseXML","responseType","message","overrideMimeType","send","linear","_request","loading","loaded","xml","rendering","Serializer","isIE","serializeToString","_query","excerpt","cfiFromRange","maxSeqEle","excerptLimit","nodeList","textWithCase","reduce","acc","current","startNodeIndex","endPos","endNodeIndex","beforeEndLengthCount","globalLayout","_range","unload","spineItems","spineByHref","spineById","items","manifest","baseUrl","_package","spineItem","manifestItem","generateChapterComponent","decodeURI","each","_locations","_locationsWords","break","_wordCounter","_currentCfi","processingTimeout","chars","completed","_break","parser","wordCount","processWords","parseWords","remainingCount","foundStartNode","countWords","loc","compare","cfiFromLocation","setCurrent","stop","containerDocument","packagePath","rootfile","xmlEncoding","packageDocument","navPath","ncxPath","coverPath","metadataNode","manifestNode","spineNode","parseManifest","findNavPath","findNcxPath","findCoverPath","parseSpine","uniqueIdentifier","findUniqueIdentifier","parseMetadata","getElementText","creator","pubdate","publisher","language","rights","modified_date","getPropertyText","media_active_class","manifestXml","selected","overlay","spineXml","propArray","itemref","packageXml","uniqueIdentifierId","localName","namespaceURI","nodeValue","tocId","pkg","metaCover","coverId","cover","getElementsByTagNameNS","json","readingOrder","resources","toc","label","tocByHref","tocById","landmarks","landmarksByType","ncx","parseNav","parseLandmarks","parseNcx","unpack","subitems","getByIndex","navItems","navHtml","navElement","navList","parseNavList","navListHtml","navItem","nested","landmarkItem","tocXml","navPoints","ncxItem","navLabel","subtype","mimeTypes","defaultValue","archive","replacementUrls","assets","cssUrls","splitUrls","parsedUrl","createUrl","replaced","replacement","createCssFile","replacementUrl","indexInUrls","newUrl","textResponse","getText","relUrls","assetHref","relativeTo","firstPage","lastPage","navXml","pageTargets","navLabelText","pageText","packageUrl","isCfi","pg","percentageFromPage","urlCache","checkRequirements","zipUrl","handleResponse","decodededUrl","decodeURIComponent","useBase64","getBase64","fromCache","requester","storage","online","_status","onLine","force","mapped","encodedUrl","encodeURIComponent","retrieve","readAsText","displayOptionsDocument","interactive","openToSpread","orientationLock","displayOptionsNode","CONTAINER_PATH","IBOOKS_DISPLAY_OPTIONS_PATH","INPUT_TYPE","BINARY","BASE64","EPUB","OPF","MANIFEST","DIRECTORY","requestMethod","requestCredentials","requestHeaders","openAs","opening","isOpen","archived","determineType","openEpub","openPackaging","openManifest","openContainer","unarchive","loadNavigation","credentials","replacementsSetting","originalUrl","substituteResources","replaceCss","deregister","Underline","Highlight","Mark","Pane","_get","receiver","getter","_createClass","defineProperties","enumerable","configurable","writable","protoProps","staticProps","_svg","_svg2","_interopRequireDefault","_events","_events2","__esModule","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","setPrototypeOf","__proto__","proxyMouse","g","idx","unbind","setCoords","coords","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","return","dispatchEvent","rects","getClientRects","box","contained","_Mark","_this","dataset","docFrag","createDocumentFragment","filteredRanges","_Highlight","line","rect1","rect2","toNumber","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","debounced","isInvoking","conventions","entities","sax","ParseError","XMLReader","locator","buildErrorHandler","errorImpl","domBuilder","DOMHandler","errorHandler","isCallback","build","_locator","cdata","lineNumber","columnNumber","systemId","_toString","java","lang","appendElement","hander","currentElement","defaultNSMap","xmlns","entityMap","HTML_ENTITIES","XML_ENTITIES","setDocumentLocator","startDocument","createDocument","documentURI","startElement","qName","getURI","getValue","getQName","createAttributeNS","getLocator","setAttributeNode","endElement","startPrefixMapping","prefix","endPrefixMapping","processingInstruction","ins","createProcessingInstruction","ignorableWhitespace","ch","characters","charNode","createCDATASection","skippedEntity","endDocument","comm","createComment","startCDATA","endCDATA","startDTD","publicId","impl","implementation","createDocumentType","dt","doctype","warning","fatalError","__DOMHandler","amp","apos","gt","lt","quot","Aacute","aacute","Abreve","abreve","acd","acE","Acirc","acirc","acute","Acy","acy","AElig","aelig","af","Afr","afr","Agrave","agrave","alefsym","aleph","Alpha","alpha","Amacr","amacr","amalg","AMP","And","and","andand","andd","andslope","andv","ang","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","Aogon","aogon","Aopf","aopf","ap","apacir","apE","ape","apid","ApplyFunction","approx","approxeq","Aring","aring","Ascr","ascr","Assign","ast","asymp","asympeq","Atilde","atilde","Auml","auml","awconint","awint","backcong","backepsilon","backprime","backsim","backsimeq","Backslash","Barv","barvee","Barwed","barwed","barwedge","bbrk","bbrktbrk","bcong","Bcy","bcy","bdquo","becaus","Because","because","bemptyv","bepsi","bernou","Bernoullis","Beta","beta","beth","between","Bfr","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bNot","bnot","Bopf","bopf","bot","bowtie","boxbox","boxDL","boxDl","boxdL","boxdl","boxDR","boxDr","boxdR","boxdr","boxH","boxh","boxHD","boxHd","boxhD","boxhd","boxHU","boxHu","boxhU","boxhu","boxminus","boxplus","boxtimes","boxUL","boxUl","boxuL","boxul","boxUR","boxUr","boxuR","boxur","boxV","boxv","boxVH","boxVh","boxvH","boxvh","boxVL","boxVl","boxvL","boxvl","boxVR","boxVr","boxvR","boxvr","bprime","Breve","breve","brvbar","Bscr","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bull","bullet","bump","bumpE","bumpe","Bumpeq","bumpeq","Cacute","cacute","Cap","cap","capand","capbrcup","capcap","capcup","capdot","CapitalDifferentialD","caps","caret","caron","Cayleys","ccaps","Ccaron","ccaron","Ccedil","ccedil","Ccirc","ccirc","Cconint","ccups","ccupssm","Cdot","cdot","cedil","Cedilla","cemptyv","cent","CenterDot","centerdot","Cfr","cfr","CHcy","chcy","checkmark","Chi","chi","cir","circ","circeq","circlearrowleft","circlearrowright","circledast","circledcirc","circleddash","CircleDot","circledR","circledS","CircleMinus","CirclePlus","CircleTimes","cirE","cire","cirfnint","cirmid","cirscir","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","clubs","clubsuit","Colon","colon","Colone","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","Congruent","Conint","conint","ContourIntegral","Copf","copf","coprod","Coproduct","copysr","CounterClockwiseContourIntegral","crarr","Cross","cross","Cscr","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","Cup","cup","cupbrcap","CupCap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","Dagger","dagger","daleth","Darr","dArr","darr","dash","Dashv","dashv","dbkarow","dblac","Dcaron","dcaron","Dcy","dcy","DD","dd","ddagger","ddarr","DDotrahd","ddotseq","deg","Del","Delta","demptyv","dfisht","Dfr","dfr","dHar","dharl","dharr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","diam","Diamond","diamond","diamondsuit","diams","die","DifferentialD","digamma","disin","div","divide","divideontimes","divonx","DJcy","djcy","dlcorn","dlcrop","dollar","Dopf","dopf","Dot","dot","DotDot","doteq","doteqdot","DotEqual","dotminus","dotplus","dotsquare","doublebarwedge","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","Downarrow","downarrow","DownArrowBar","DownArrowUpArrow","DownBreve","downdownarrows","downharpoonleft","downharpoonright","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","drbkarow","drcorn","drcrop","Dscr","dscr","DScy","dscy","dsol","Dstrok","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","DZcy","dzcy","dzigrarr","Eacute","eacute","easter","Ecaron","ecaron","ecir","Ecirc","ecirc","ecolon","Ecy","ecy","eDDot","Edot","eDot","edot","ee","efDot","Efr","efr","eg","Egrave","egrave","egs","egsdot","Element","elinters","ell","els","elsdot","Emacr","emacr","empty","emptyset","EmptySmallSquare","emptyv","EmptyVerySmallSquare","emsp","emsp13","emsp14","ENG","eng","ensp","Eogon","eogon","Eopf","eopf","epar","eparsl","eplus","epsi","Epsilon","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","Equal","equals","EqualTilde","equest","Equilibrium","equiv","equivDD","eqvparsl","erarr","erDot","Escr","escr","esdot","Esim","esim","Eta","eta","ETH","eth","Euml","euml","euro","excl","exist","Exists","expectation","ExponentialE","exponentiale","fallingdotseq","Fcy","fcy","female","ffilig","fflig","ffllig","Ffr","ffr","filig","FilledSmallSquare","FilledVerySmallSquare","fjlig","flat","fllig","fltns","fnof","Fopf","fopf","ForAll","forall","fork","forkv","Fouriertrf","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","Fscr","fscr","gacute","Gamma","gamma","Gammad","gammad","Gbreve","gbreve","Gcedil","Gcirc","gcirc","Gcy","gcy","Gdot","gdot","gE","ge","gEl","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","Gfr","gfr","Gg","gg","ggg","gimel","GJcy","gjcy","gl","gla","glE","glj","gnap","gnapprox","gnE","gne","gneq","gneqq","gnsim","Gopf","gopf","grave","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","gscr","gsim","gsime","gsiml","Gt","GT","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","Hacek","hairsp","half","hamilt","HARDcy","hardcy","hArr","harr","harrcir","harrw","Hat","hbar","Hcirc","hcirc","hearts","heartsuit","hellip","hercon","Hfr","hfr","HilbertSpace","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","Hopf","hopf","horbar","HorizontalLine","Hscr","hscr","hslash","Hstrok","hstrok","HumpDownHump","HumpEqual","hybull","hyphen","Iacute","iacute","ic","Icirc","icirc","Icy","icy","Idot","IEcy","iecy","iexcl","iff","Ifr","ifr","Igrave","igrave","ii","iiiint","iiint","iinfin","iiota","IJlig","ijlig","Im","Imacr","imacr","image","ImaginaryI","imagline","imagpart","imath","imof","imped","Implies","in","incare","infin","infintie","inodot","Int","int","intcal","integers","Integral","intercal","Intersection","intlarhk","intprod","InvisibleComma","InvisibleTimes","IOcy","iocy","Iogon","iogon","Iopf","iopf","Iota","iota","iprod","iquest","Iscr","iscr","isin","isindot","isinE","isins","isinsv","isinv","it","Itilde","itilde","Iukcy","iukcy","Iuml","iuml","Jcirc","jcirc","Jcy","jcy","Jfr","jfr","jmath","Jopf","jopf","Jscr","jscr","Jsercy","jsercy","Jukcy","jukcy","Kappa","kappa","kappav","Kcedil","kcedil","Kcy","kcy","Kfr","kfr","kgreen","KHcy","khcy","KJcy","kjcy","Kopf","kopf","Kscr","kscr","lAarr","Lacute","lacute","laemptyv","lagran","Lambda","lambda","Lang","langd","langle","lap","Laplacetrf","laquo","Larr","lArr","larr","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","lAtail","latail","late","lates","lBarr","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","Lcaron","lcaron","Lcedil","lcedil","lceil","lcub","Lcy","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","lE","le","LeftAngleBracket","LeftArrow","Leftarrow","leftarrow","LeftArrowBar","LeftArrowRightArrow","leftarrowtail","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","leftharpoondown","leftharpoonup","leftleftarrows","LeftRightArrow","Leftrightarrow","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","leftthreetimes","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","lEg","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","LessEqualGreater","LessFullEqual","LessGreater","lessgtr","LessLess","lesssim","LessSlantEqual","LessTilde","lfisht","lfloor","Lfr","lfr","lg","lgE","lHar","lhard","lharu","lharul","lhblk","LJcy","ljcy","Ll","ll","llarr","llcorner","Lleftarrow","llhard","lltri","Lmidot","lmidot","lmoust","lmoustache","lnap","lnapprox","lnE","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","LongLeftArrow","Longleftarrow","longleftarrow","LongLeftRightArrow","Longleftrightarrow","longleftrightarrow","longmapsto","LongRightArrow","Longrightarrow","longrightarrow","looparrowleft","looparrowright","lopar","Lopf","lopf","loplus","lotimes","lowast","lowbar","LowerLeftArrow","LowerRightArrow","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","Lscr","lscr","Lsh","lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","Lstrok","lstrok","Lt","LT","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltri","ltrie","ltrif","ltrPar","lurdshar","luruhar","lvertneqq","lvnE","macr","male","malt","maltese","Map","mapsto","mapstodown","mapstoleft","mapstoup","mcomma","Mcy","mcy","mdash","mDDot","measuredangle","MediumSpace","Mellintrf","Mfr","mfr","mho","micro","mid","midast","midcir","middot","minus","minusb","minusd","minusdu","MinusPlus","mlcp","mldr","mnplus","models","Mopf","mopf","mp","Mscr","mscr","mstpos","Mu","mu","multimap","mumap","nabla","Nacute","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbsp","nbump","nbumpe","ncap","Ncaron","ncaron","Ncedil","ncedil","ncong","ncongdot","ncup","Ncy","ncy","ndash","ne","nearhk","neArr","nearr","nearrow","nedot","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","nequiv","nesear","nesim","NestedGreaterGreater","NestedLessLess","NewLine","nexist","nexists","Nfr","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","nGg","ngsim","nGt","ngt","ngtr","nGtv","nhArr","nharr","nhpar","ni","nis","nisd","niv","NJcy","njcy","nlArr","nlarr","nldr","nlE","nle","nLeftarrow","nleftarrow","nLeftrightarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nLl","nlsim","nLt","nlt","nltri","nltrie","nLtv","nmid","NoBreak","NonBreakingSpace","Nopf","nopf","Not","not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","notin","notindot","notinE","notinva","notinvb","notinvc","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","notni","notniva","notnivb","notnivc","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nRightarrow","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","Nscr","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","Ntilde","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","Nu","nu","numero","numsp","nvap","nVDash","nVdash","nvDash","nvdash","nvge","nvgt","nvHarr","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwarhk","nwArr","nwarr","nwarrow","nwnear","Oacute","oacute","oast","ocir","Ocirc","ocirc","Ocy","ocy","odash","Odblac","odblac","odiv","odot","odsold","OElig","oelig","ofcir","Ofr","ofr","ogon","Ograve","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","Omacr","omacr","Omega","omega","Omicron","omicron","omid","ominus","Oopf","oopf","opar","OpenCurlyDoubleQuote","OpenCurlyQuote","operp","oplus","Or","or","orarr","ord","orderof","ordf","ordm","origof","oror","orslope","orv","oS","Oscr","oscr","Oslash","oslash","osol","Otilde","otilde","Otimes","otimes","otimesas","Ouml","ouml","ovbar","OverBar","OverBrace","OverBracket","OverParenthesis","par","para","parallel","parsim","parsl","PartialD","Pcy","pcy","percnt","period","permil","perp","pertenk","Pfr","pfr","Phi","phi","phiv","phmmat","phone","Pi","pi","pitchfork","piv","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","PlusMinus","plusmn","plussim","plustwo","pm","Poincareplane","pointint","Popf","popf","pound","Pr","pr","prap","prcue","prE","pre","prec","precapprox","preccurlyeq","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","preceq","precnapprox","precneqq","precnsim","precsim","Prime","prime","primes","prnap","prnE","prnsim","prod","Product","profalar","profline","profsurf","Proportion","Proportional","propto","prsim","prurel","Pscr","pscr","Psi","psi","puncsp","Qfr","qfr","qint","Qopf","qopf","qprime","Qscr","qscr","quaternions","quatint","quest","questeq","QUOT","rAarr","Racute","racute","radic","raemptyv","Rang","rang","rangd","rangle","raquo","Rarr","rArr","rarr","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","Rarrtl","rarrtl","rarrw","rAtail","ratail","ratio","rationals","RBarr","rBarr","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","Rcaron","rcaron","Rcedil","rcedil","rceil","rcub","Rcy","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","Re","real","realine","realpart","reals","REG","reg","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","rfisht","rfloor","Rfr","rfr","rHar","rhard","rharu","rharul","Rho","rho","rhov","RightAngleBracket","RightArrow","Rightarrow","rightarrow","RightArrowBar","RightArrowLeftArrow","rightarrowtail","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","RightTee","RightTeeArrow","RightTeeVector","rightthreetimes","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","ring","risingdotseq","rlarr","rlhar","rlm","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","Ropf","ropf","roplus","rotimes","RoundImplies","rpar","rpargt","rppolint","rrarr","Rrightarrow","rsaquo","Rscr","rscr","Rsh","rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","RuleDelayed","ruluhar","rx","Sacute","sacute","sbquo","Sc","sc","scap","Scaron","scaron","sccue","scE","sce","Scedil","scedil","Scirc","scirc","scnap","scnE","scnsim","scpolint","scsim","Scy","scy","sdot","sdotb","sdote","searhk","seArr","searr","searrow","sect","semi","seswar","setminus","setmn","sext","Sfr","sfr","sfrown","sharp","SHCHcy","shchcy","SHcy","shcy","ShortDownArrow","ShortLeftArrow","shortmid","shortparallel","ShortRightArrow","ShortUpArrow","shy","Sigma","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","SmallCircle","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","SOFTcy","softcy","sol","solb","solbar","Sopf","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","Sqrt","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","Square","square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","squarf","squf","srarr","Sscr","sscr","ssetmn","ssmile","sstarf","Star","star","starf","straightepsilon","straightphi","strns","Sub","sub","subdot","subE","sube","subedot","submult","subnE","subne","subplus","subrarr","Subset","subset","subseteq","subseteqq","SubsetEqual","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","succeq","succnapprox","succneqq","succnsim","succsim","SuchThat","Sum","sum","sung","Sup","sup","sup1","sup2","sup3","supdot","supdsub","supE","supe","supedot","Superset","SupersetEqual","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","Supset","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swarhk","swArr","swarr","swarrow","swnwar","szlig","Tab","Tau","tau","tbrk","Tcaron","tcaron","Tcedil","tcedil","Tcy","tcy","tdot","telrec","Tfr","tfr","there4","Therefore","therefore","Theta","theta","thetasym","thetav","thickapprox","thicksim","ThickSpace","thinsp","ThinSpace","thkap","thksim","THORN","thorn","Tilde","tilde","TildeEqual","TildeFullEqual","TildeTilde","times","timesb","timesbar","timesd","tint","toea","topbot","topcir","Topf","topf","topfork","tosa","tprime","TRADE","trade","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","TripleDot","triplus","trisb","tritime","trpezium","Tscr","tscr","TScy","tscy","TSHcy","tshcy","Tstrok","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","Uacute","uacute","Uarr","uArr","uarr","Uarrocir","Ubrcy","ubrcy","Ubreve","ubreve","Ucirc","ucirc","Ucy","ucy","udarr","Udblac","udblac","udhar","ufisht","Ufr","ufr","Ugrave","ugrave","uHar","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","Umacr","umacr","uml","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","uogon","Uopf","uopf","UpArrow","Uparrow","uparrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","Updownarrow","updownarrow","UpEquilibrium","upharpoonleft","upharpoonright","uplus","UpperLeftArrow","UpperRightArrow","Upsi","upsi","upsih","Upsilon","upsilon","UpTee","UpTeeArrow","upuparrows","urcorn","urcorner","urcrop","Uring","uring","urtri","Uscr","uscr","utdot","Utilde","utilde","utri","utrif","uuarr","Uuml","uuml","uwangle","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","vArr","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","Vbar","vBar","vBarv","Vcy","vcy","VDash","Vdash","vDash","vdash","Vdashl","Vee","vee","veebar","veeeq","vellip","Verbar","verbar","Vert","vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","vfr","vltri","vnsub","vnsup","Vopf","vopf","vprop","vrtri","Vscr","vscr","vsubnE","vsubne","vsupnE","vsupne","Vvdash","vzigzag","Wcirc","wcirc","wedbar","Wedge","wedge","wedgeq","weierp","Wfr","wfr","Wopf","wopf","wp","wr","wreath","Wscr","wscr","xcap","xcirc","xcup","xdtri","Xfr","xfr","xhArr","xharr","Xi","xi","xlArr","xlarr","xmap","xnis","xodot","Xopf","xopf","xoplus","xotime","xrArr","xrarr","Xscr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","Yacute","yacute","YAcy","yacy","Ycirc","ycirc","Ycy","ycy","yen","Yfr","yfr","YIcy","yicy","Yopf","yopf","Yscr","yscr","YUcy","yucy","Yuml","yuml","Zacute","zacute","Zcaron","zcaron","Zcy","zcy","Zdot","zdot","zeetrf","ZeroWidthSpace","Zeta","zeta","Zfr","zfr","ZHcy","zhcy","zigrarr","Zopf","zopf","Zscr","zscr","zwj","zwnj","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","ieee754","typedArraySupport","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","encodingOrOffset","allocUnsafe","fromArrayBuffer","fromString","fromObject","assertSize","checked","isEncoding","actual","fromArrayLike","byteOffset","isnan","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","hexWrite","Number","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","toHex","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","dst","once","descriptors","callable","__ee__","__eeOnceListener__","candidate","tracked","dispatch","clientX","clientY","contentDocument","bubbles","MouseEvent","createEvent","initMouseEvent","cancelable","detail","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","rectContains","IframeView","forceRight","added","fixedWidth","fixedHeight","pane","flex","iframe","createContainer","scrolling","seamless","sandbox","resizing","visibility","elementBounds","supportsSrcdoc","sectionRender","setAxis","setWritingMode","_textWidth","_contentWidth","_textHeight","_contentHeight","_needsReframe","iframeBorders","elBorders","lockedWidth","lockedHeight","reframe","prevBounds","placeMark","onLoad","blobUrl","srcdoc","MSApp","execUnsafeLocalFunction","outerThis","contentWindow","layoutFunc","offsetWidth","stopExpanding","offsetTop","offsetLeft","emitter","addMark","removeMark","normalizeArray","up","xs","trailingSlash","paths","fromParts","toParts","samePartsLength","outputParts","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","captureStackTrace","defaultNSMapCopy","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","appendText","xt","lineEnd","linePattern","lineStart","parseStack","currentNSMap","closeMap","tagStart","localNSMap","endMatch","endIgnoreCaseMach","parseInstruction","parseDCC","ElementAttributes","parseElementStartPart","closed","fixSelfClosed","locator2","copyLocator","parseHtmlSpecialContent","addAttribute","qname","startIndex","attributeNames","addValue","attrName","setTagName","nsp","nsPrefix","_copy","ns","elStartEnd","elEndStart","matchs","pubid","sysid","lastMatch","endDTD","getLocalName","notEmptyString","splitOnASCIIWhitespace","orderedSetReducer","toOrderedSet","arrayIncludes","_extends","Class","Super","pt","NodeType","ATTRIBUTE_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","NodeList","LiveNodeList","refresh","_node","_refresh","_updateLiveList","inc","_inc","ls","__set__","$$length","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","_onAddAttribute","_removeNamedNode","_xmlEncoder","_visitNode","Document","_nsMap","_onUpdateChild","newChild","cs","_removeChild","lastChild","hasValidParentNodeType","hasInsertableNodeType","isElementNode","isTextNode","isDocTypeNode","isElementInsertionPossible","parentChildNodes","docTypeNode","isElementReplacementPossible","hasElementChildThatIsNotChild","assertPreInsertionValidity1to5","assertPreInsertionValidityInDocument","nodeChildNodes","nodeChildElements","parentElementChild","assertPreReplacementValidityInDocument","hasDoctypeChildThatIsNotChild","_insertBefore","_inDocumentAssertion","cp","newFirst","newLast","_appendSingleChild","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","nodeSerializeToString","isHtml","nodeFilter","refNode","lookupPrefix","visibleNamespaces","namespace","needNamespaceDefine","addSerializedAttribute","qualifiedName","prefixedNodeName","defaultNS","ai","nsi","internalSubset","importNode","deep","node2","cloneNode","attrs2","_ownerElement","getNamedItem","setNamedItem","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","refChild","replaceChild","oldChild","hasChildNodes","appendData","isSupported","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importedNode","rtv","getElementsByClassName","classNames","classNamesSet","nodeClassNames","nodeClassNamesSet","every","createAttribute","specified","createEntityReference","getAttributeNode","removeAttribute","removeAttributeNode","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","setAttributeNS","substringData","insertData","replaceData","deleteData","splitText","newText","newNode","getTextContent","scrollType","definer","createDefiner","scrollIntoView","innerDiv","spanA","spanB","_options","hidden","wrapper","wordSpacing","lineHeight","verticalAlign","flexDirection","flexWrap","_element","getElement","resizeFunc","orientationChangeFunc","clientWidth","containerStyles","containerPadding","_windowBounds","bodyStyles","bodyPadding","rulesArray","scope","getSheet","Views","_views","optsSettings","renditionQueue","getContainer","_stageSize","orientationTimeout","resizeTimeout","stageSize","winBounds","handleNextPrePaginated","paginatedLocation","scrolledLocation","pageHeight","vertical","sections","startPos","stopPos","currPage","endPage","tempStartPage","startPage","offsetPrev","offsetNext","_container","silent","calculate","setLayout","forceUpdate","defaultScrolledOverflow","viewContents","opts1","isPlainFunction","normalizeOpts","gs","searchString","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","symbolTag"],"mappings":"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","file":"js/readBook.d7f8237e.js","sourcesContent":["var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","export const EPUBJS_VERSION = \"0.3\";\n\n// Dom events to listen for\nexport const DOM_EVENTS = [\"keydown\", \"keyup\", \"keypressed\", \"mouseup\", \"mousedown\", \"mousemove\", \"click\", \"touchend\", \"touchstart\", \"touchmove\"];\n\nexport const EVENTS = {\n BOOK : {\n OPEN_FAILED : \"openFailed\"\n },\n CONTENTS : {\n EXPAND : \"expand\",\n RESIZE : \"resize\",\n SELECTED : \"selected\",\n SELECTED_RANGE : \"selectedRange\",\n LINK_CLICKED : \"linkClicked\"\n },\n LOCATIONS : {\n CHANGED : \"changed\"\n },\n MANAGERS : {\n RESIZE : \"resize\",\n RESIZED : \"resized\",\n ORIENTATION_CHANGE : \"orientationchange\",\n ADDED : \"added\",\n SCROLL : \"scroll\",\n SCROLLED : \"scrolled\",\n REMOVED : \"removed\",\n },\n VIEWS : {\n AXIS: \"axis\",\n WRITING_MODE: \"writingMode\",\n LOAD_ERROR : \"loaderror\",\n RENDERED : \"rendered\",\n RESIZED : \"resized\",\n DISPLAYED : \"displayed\",\n SHOWN : \"shown\",\n HIDDEN : \"hidden\",\n MARK_CLICKED : \"markClicked\"\n },\n RENDITION : {\n STARTED : \"started\",\n ATTACHED : \"attached\",\n DISPLAYED : \"displayed\",\n DISPLAY_ERROR : \"displayerror\",\n RENDERED : \"rendered\",\n REMOVED : \"removed\",\n RESIZED : \"resized\",\n ORIENTATION_CHANGE : \"orientationchange\",\n LOCATION_CHANGED : \"locationChanged\",\n RELOCATED : \"relocated\",\n MARK_CLICKED : \"markClicked\",\n SELECTED : \"selected\",\n LAYOUT: \"layout\"\n },\n LAYOUT : {\n UPDATED : \"updated\"\n },\n ANNOTATION : {\n ATTACH : \"attach\",\n DETACH : \"detach\"\n }\n}\n","/**\n * Core Utilities and Helpers\n * @module Core\n*/\nimport { DOMParser as XMLDOMParser } from \"@xmldom/xmldom\";\n\n/**\n * Vendor prefixed requestAnimationFrame\n * @returns {function} requestAnimationFrame\n * @memberof Core\n */\nexport const requestAnimationFrame = (typeof window != \"undefined\") ? (window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame) : false;\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst DOCUMENT_NODE = 9;\nconst _URL = typeof URL != \"undefined\" ? URL : (typeof window != \"undefined\" ? (window.URL || window.webkitURL || window.mozURL) : undefined);\n\n/**\n * Generates a UUID\n * based on: http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript\n * @returns {string} uuid\n * @memberof Core\n */\nexport function uuid() {\n\tvar d = new Date().getTime();\n\tvar uuid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n\t\tvar r = (d + Math.random()*16)%16 | 0;\n\t\td = Math.floor(d/16);\n\t\treturn (c==\"x\" ? r : (r&0x7|0x8)).toString(16);\n\t});\n\treturn uuid;\n}\n\n/**\n * Gets the height of a document\n * @returns {number} height\n * @memberof Core\n */\nexport function documentHeight() {\n\treturn Math.max(\n\t\t\tdocument.documentElement.clientHeight,\n\t\t\tdocument.body.scrollHeight,\n\t\t\tdocument.documentElement.scrollHeight,\n\t\t\tdocument.body.offsetHeight,\n\t\t\tdocument.documentElement.offsetHeight\n\t);\n}\n\n/**\n * Checks if a node is an element\n * @param {object} obj\n * @returns {boolean}\n * @memberof Core\n */\nexport function isElement(obj) {\n\treturn !!(obj && obj.nodeType == 1);\n}\n\n/**\n * @param {any} n\n * @returns {boolean}\n * @memberof Core\n */\nexport function isNumber(n) {\n\treturn !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * @param {any} n\n * @returns {boolean}\n * @memberof Core\n */\nexport function isFloat(n) {\n\tlet f = parseFloat(n);\n\n\tif (isNumber(n) === false) {\n\t\treturn false;\n\t}\n\n\tif (typeof n === \"string\" && n.indexOf(\".\") > -1) {\n\t\treturn true;\n\t}\n\n\treturn Math.floor(f) !== f;\n}\n\n/**\n * Get a prefixed css property\n * @param {string} unprefixed\n * @returns {string}\n * @memberof Core\n */\nexport function prefixed(unprefixed) {\n\tvar vendors = [\"Webkit\", \"webkit\", \"Moz\", \"O\", \"ms\" ];\n\tvar prefixes = [\"-webkit-\", \"-webkit-\", \"-moz-\", \"-o-\", \"-ms-\"];\n\tvar lower = unprefixed.toLowerCase();\n\tvar length = vendors.length;\n\n\tif (typeof(document) === \"undefined\" || typeof(document.body.style[lower]) != \"undefined\") {\n\t\treturn unprefixed;\n\t}\n\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof(document.body.style[prefixes[i] + lower]) != \"undefined\") {\n\t\t\treturn prefixes[i] + lower;\n\t\t}\n\t}\n\n\treturn unprefixed;\n}\n\n/**\n * Apply defaults to an object\n * @param {object} obj\n * @returns {object}\n * @memberof Core\n */\nexport function defaults(obj) {\n\tfor (var i = 1, length = arguments.length; i < length; i++) {\n\t\tvar source = arguments[i];\n\t\tfor (var prop in source) {\n\t\t\tif (obj[prop] === void 0) obj[prop] = source[prop];\n\t\t}\n\t}\n\treturn obj;\n}\n\n/**\n * Extend properties of an object\n * @param {object} target\n * @returns {object}\n * @memberof Core\n */\nexport function extend(target) {\n\tvar sources = [].slice.call(arguments, 1);\n\tsources.forEach(function (source) {\n\t\tif(!source) return;\n\t\tObject.getOwnPropertyNames(source).forEach(function(propName) {\n\t\t\tObject.defineProperty(target, propName, Object.getOwnPropertyDescriptor(source, propName));\n\t\t});\n\t});\n\treturn target;\n}\n\n/**\n * Fast quicksort insert for sorted array -- based on:\n * http://stackoverflow.com/questions/1344500/efficient-way-to-insert-a-number-into-a-sorted-array-of-numbers\n * @param {any} item\n * @param {array} array\n * @param {function} [compareFunction]\n * @returns {number} location (in array)\n * @memberof Core\n */\nexport function insert(item, array, compareFunction) {\n\tvar location = locationOf(item, array, compareFunction);\n\tarray.splice(location, 0, item);\n\n\treturn location;\n}\n\n/**\n * Finds where something would fit into a sorted array\n * @param {any} item\n * @param {array} array\n * @param {function} [compareFunction]\n * @param {function} [_start]\n * @param {function} [_end]\n * @returns {number} location (in array)\n * @memberof Core\n */\nexport function locationOf(item, array, compareFunction, _start, _end) {\n\tvar start = _start || 0;\n\tvar end = _end || array.length;\n\tvar pivot = parseInt(start + (end - start) / 2);\n\tvar compared;\n\tif(!compareFunction){\n\t\tcompareFunction = function(a, b) {\n\t\t\tif(a > b) return 1;\n\t\t\tif(a < b) return -1;\n\t\t\tif(a == b) return 0;\n\t\t};\n\t}\n\tif(end-start <= 0) {\n\t\treturn pivot;\n\t}\n\n\tcompared = compareFunction(array[pivot], item);\n\tif(end-start === 1) {\n\t\treturn compared >= 0 ? pivot : pivot + 1;\n\t}\n\tif(compared === 0) {\n\t\treturn pivot;\n\t}\n\tif(compared === -1) {\n\t\treturn locationOf(item, array, compareFunction, pivot, end);\n\t} else{\n\t\treturn locationOf(item, array, compareFunction, start, pivot);\n\t}\n}\n\n/**\n * Finds index of something in a sorted array\n * Returns -1 if not found\n * @param {any} item\n * @param {array} array\n * @param {function} [compareFunction]\n * @param {function} [_start]\n * @param {function} [_end]\n * @returns {number} index (in array) or -1\n * @memberof Core\n */\nexport function indexOfSorted(item, array, compareFunction, _start, _end) {\n\tvar start = _start || 0;\n\tvar end = _end || array.length;\n\tvar pivot = parseInt(start + (end - start) / 2);\n\tvar compared;\n\tif(!compareFunction){\n\t\tcompareFunction = function(a, b) {\n\t\t\tif(a > b) return 1;\n\t\t\tif(a < b) return -1;\n\t\t\tif(a == b) return 0;\n\t\t};\n\t}\n\tif(end-start <= 0) {\n\t\treturn -1; // Not found\n\t}\n\n\tcompared = compareFunction(array[pivot], item);\n\tif(end-start === 1) {\n\t\treturn compared === 0 ? pivot : -1;\n\t}\n\tif(compared === 0) {\n\t\treturn pivot; // Found\n\t}\n\tif(compared === -1) {\n\t\treturn indexOfSorted(item, array, compareFunction, pivot, end);\n\t} else{\n\t\treturn indexOfSorted(item, array, compareFunction, start, pivot);\n\t}\n}\n/**\n * Find the bounds of an element\n * taking padding and margin into account\n * @param {element} el\n * @returns {{ width: Number, height: Number}}\n * @memberof Core\n */\nexport function bounds(el) {\n\n\tvar style = window.getComputedStyle(el);\n\tvar widthProps = [\"width\", \"paddingRight\", \"paddingLeft\", \"marginRight\", \"marginLeft\", \"borderRightWidth\", \"borderLeftWidth\"];\n\tvar heightProps = [\"height\", \"paddingTop\", \"paddingBottom\", \"marginTop\", \"marginBottom\", \"borderTopWidth\", \"borderBottomWidth\"];\n\n\tvar width = 0;\n\tvar height = 0;\n\n\twidthProps.forEach(function(prop){\n\t\twidth += parseFloat(style[prop]) || 0;\n\t});\n\n\theightProps.forEach(function(prop){\n\t\theight += parseFloat(style[prop]) || 0;\n\t});\n\n\treturn {\n\t\theight: height,\n\t\twidth: width\n\t};\n\n}\n\n/**\n * Find the bounds of an element\n * taking padding, margin and borders into account\n * @param {element} el\n * @returns {{ width: Number, height: Number}}\n * @memberof Core\n */\nexport function borders(el) {\n\n\tvar style = window.getComputedStyle(el);\n\tvar widthProps = [\"paddingRight\", \"paddingLeft\", \"marginRight\", \"marginLeft\", \"borderRightWidth\", \"borderLeftWidth\"];\n\tvar heightProps = [\"paddingTop\", \"paddingBottom\", \"marginTop\", \"marginBottom\", \"borderTopWidth\", \"borderBottomWidth\"];\n\n\tvar width = 0;\n\tvar height = 0;\n\n\twidthProps.forEach(function(prop){\n\t\twidth += parseFloat(style[prop]) || 0;\n\t});\n\n\theightProps.forEach(function(prop){\n\t\theight += parseFloat(style[prop]) || 0;\n\t});\n\n\treturn {\n\t\theight: height,\n\t\twidth: width\n\t};\n\n}\n\n/**\n * Find the bounds of any node\n * allows for getting bounds of text nodes by wrapping them in a range\n * @param {node} node\n * @returns {BoundingClientRect}\n * @memberof Core\n */\nexport function nodeBounds(node) {\n\tlet elPos;\n\tlet doc = node.ownerDocument;\n\tif(node.nodeType == Node.TEXT_NODE){\n\t\tlet elRange = doc.createRange();\n\t\telRange.selectNodeContents(node);\n\t\telPos = elRange.getBoundingClientRect();\n\t} else {\n\t\telPos = node.getBoundingClientRect();\n\t}\n\treturn elPos;\n}\n\n/**\n * Find the equivalent of getBoundingClientRect of a browser window\n * @returns {{ width: Number, height: Number, top: Number, left: Number, right: Number, bottom: Number }}\n * @memberof Core\n */\nexport function windowBounds() {\n\n\tvar width = window.innerWidth;\n\tvar height = window.innerHeight;\n\n\treturn {\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: width,\n\t\tbottom: height,\n\t\twidth: width,\n\t\theight: height\n\t};\n\n}\n\n/**\n * Gets the index of a node in its parent\n * @param {Node} node\n * @param {string} typeId\n * @return {number} index\n * @memberof Core\n */\nexport function indexOfNode(node, typeId) {\n\tvar parent = node.parentNode;\n\tvar children = parent.childNodes;\n\tvar sib;\n\tvar index = -1;\n\tfor (var i = 0; i < children.length; i++) {\n\t\tsib = children[i];\n\t\tif (sib.nodeType === typeId) {\n\t\t\tindex++;\n\t\t}\n\t\tif (sib == node) break;\n\t}\n\n\treturn index;\n}\n\n/**\n * Gets the index of a text node in its parent\n * @param {node} textNode\n * @returns {number} index\n * @memberof Core\n */\nexport function indexOfTextNode(textNode) {\n\treturn indexOfNode(textNode, TEXT_NODE);\n}\n\n/**\n * Gets the index of an element node in its parent\n * @param {element} elementNode\n * @returns {number} index\n * @memberof Core\n */\nexport function indexOfElementNode(elementNode) {\n\treturn indexOfNode(elementNode, ELEMENT_NODE);\n}\n\n/**\n * Check if extension is xml\n * @param {string} ext\n * @returns {boolean}\n * @memberof Core\n */\nexport function isXml(ext) {\n\treturn [\"xml\", \"opf\", \"ncx\"].indexOf(ext) > -1;\n}\n\n/**\n * Create a new blob\n * @param {any} content\n * @param {string} mime\n * @returns {Blob}\n * @memberof Core\n */\nexport function createBlob(content, mime){\n\treturn new Blob([content], {type : mime });\n}\n\n/**\n * Create a new blob url\n * @param {any} content\n * @param {string} mime\n * @returns {string} url\n * @memberof Core\n */\nexport function createBlobUrl(content, mime){\n\tvar tempUrl;\n\tvar blob = createBlob(content, mime);\n\n\ttempUrl = _URL.createObjectURL(blob);\n\n\treturn tempUrl;\n}\n\n/**\n * Remove a blob url\n * @param {string} url\n * @memberof Core\n */\nexport function revokeBlobUrl(url){\n\treturn _URL.revokeObjectURL(url);\n}\n\n/**\n * Create a new base64 encoded url\n * @param {any} content\n * @param {string} mime\n * @returns {string} url\n * @memberof Core\n */\nexport function createBase64Url(content, mime){\n\tvar data;\n\tvar datauri;\n\n\tif (typeof(content) !== \"string\") {\n\t\t// Only handles strings\n\t\treturn;\n\t}\n\n\tdata = btoa(content);\n\n\tdatauri = \"data:\" + mime + \";base64,\" + data;\n\n\treturn datauri;\n}\n\n/**\n * Get type of an object\n * @param {object} obj\n * @returns {string} type\n * @memberof Core\n */\nexport function type(obj){\n\treturn Object.prototype.toString.call(obj).slice(8, -1);\n}\n\n/**\n * Parse xml (or html) markup\n * @param {string} markup\n * @param {string} mime\n * @param {boolean} forceXMLDom force using xmlDom to parse instead of native parser\n * @returns {document} document\n * @memberof Core\n */\nexport function parse(markup, mime, forceXMLDom) {\n\tvar doc;\n\tvar Parser;\n\n\tif (typeof DOMParser === \"undefined\" || forceXMLDom) {\n\t\tParser = XMLDOMParser;\n\t} else {\n\t\tParser = DOMParser;\n\t}\n\n\t// Remove byte order mark before parsing\n\t// https://www.w3.org/International/questions/qa-byte-order-mark\n\tif(markup.charCodeAt(0) === 0xFEFF) {\n\t\tmarkup = markup.slice(1);\n\t}\n\n\tdoc = new Parser().parseFromString(markup, mime);\n\n\treturn doc;\n}\n\n/**\n * querySelector polyfill\n * @param {element} el\n * @param {string} sel selector string\n * @returns {element} element\n * @memberof Core\n */\nexport function qs(el, sel) {\n\tvar elements;\n\tif (!el) {\n\t\tthrow new Error(\"No Element Provided\");\n\t}\n\n\tif (typeof el.querySelector != \"undefined\") {\n\t\treturn el.querySelector(sel);\n\t} else {\n\t\telements = el.getElementsByTagName(sel);\n\t\tif (elements.length) {\n\t\t\treturn elements[0];\n\t\t}\n\t}\n}\n\n/**\n * querySelectorAll polyfill\n * @param {element} el\n * @param {string} sel selector string\n * @returns {element[]} elements\n * @memberof Core\n */\nexport function qsa(el, sel) {\n\n\tif (typeof el.querySelector != \"undefined\") {\n\t\treturn el.querySelectorAll(sel);\n\t} else {\n\t\treturn el.getElementsByTagName(sel);\n\t}\n}\n\n/**\n * querySelector by property\n * @param {element} el\n * @param {string} sel selector string\n * @param {object[]} props\n * @returns {element[]} elements\n * @memberof Core\n */\nexport function qsp(el, sel, props) {\n\tvar q, filtered;\n\tif (typeof el.querySelector != \"undefined\") {\n\t\tsel += \"[\";\n\t\tfor (var prop in props) {\n\t\t\tsel += prop + \"~='\" + props[prop] + \"'\";\n\t\t}\n\t\tsel += \"]\";\n\t\treturn el.querySelector(sel);\n\t} else {\n\t\tq = el.getElementsByTagName(sel);\n\t\tfiltered = Array.prototype.slice.call(q, 0).filter(function(el) {\n\t\t\tfor (var prop in props) {\n\t\t\t\tif(el.getAttribute(prop) === props[prop]){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\tif (filtered) {\n\t\t\treturn filtered[0];\n\t\t}\n\t}\n}\n\n/**\n * Sprint through all text nodes in a document\n * @memberof Core\n * @param {element} root element to start with\n * @param {function} func function to run on each element\n */\nexport function sprint(root, func) {\n\tvar doc = root.ownerDocument || root;\n\tif (typeof(doc.createTreeWalker) !== \"undefined\") {\n\t\ttreeWalker(root, func, NodeFilter.SHOW_TEXT);\n\t} else {\n\t\twalk(root, function(node) {\n\t\t\tif (node && node.nodeType === 3) { // Node.TEXT_NODE\n\t\t\t\tfunc(node);\n\t\t\t}\n\t\t}, true);\n\t}\n}\n\n/**\n * Create a treeWalker\n * @memberof Core\n * @param {element} root element to start with\n * @param {function} func function to run on each element\n * @param {function | object} filter function or object to filter with\n */\nexport function treeWalker(root, func, filter) {\n\tvar treeWalker = document.createTreeWalker(root, filter, null, false);\n\tlet node;\n\twhile ((node = treeWalker.nextNode())) {\n\t\tfunc(node);\n\t}\n}\n\n/**\n * @memberof Core\n * @param {node} node\n * @param {callback} return false for continue,true for break inside callback\n */\nexport function walk(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tnode = node.firstChild;\n\tif(node){\n\t\tdo{\n\t\t\tlet walked = walk(node,callback);\n\t\t\tif(walked){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tnode = node.nextSibling;\n\t\t} while(node);\n\t}\n}\n\n/**\n * Convert a blob to a base64 encoded string\n * @param {Blog} blob\n * @returns {string}\n * @memberof Core\n */\nexport function blob2base64(blob) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar reader = new FileReader();\n\t\treader.readAsDataURL(blob);\n\t\treader.onloadend = function() {\n\t\t\tresolve(reader.result);\n\t\t};\n\t});\n}\n\n\n/**\n * Creates a new pending promise and provides methods to resolve or reject it.\n * From: https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Deferred#backwards_forwards_compatible\n * @memberof Core\n */\nexport function defer() {\n\t/* A method to resolve the associated Promise with the value passed.\n\t * If the promise is already settled it does nothing.\n\t *\n\t * @param {anything} value : This value is used to resolve the promise\n\t * If the value is a Promise then the associated promise assumes the state\n\t * of Promise passed as value.\n\t */\n\tthis.resolve = null;\n\n\t/* A method to reject the associated Promise with the value passed.\n\t * If the promise is already settled it does nothing.\n\t *\n\t * @param {anything} reason: The reason for the rejection of the Promise.\n\t * Generally its an Error object. If however a Promise is passed, then the Promise\n\t * itself will be the reason for rejection no matter the state of the Promise.\n\t */\n\tthis.reject = null;\n\n\tthis.id = uuid();\n\n\t/* A newly created Pomise object.\n\t * Initially in pending state.\n\t */\n\tthis.promise = new Promise((resolve, reject) => {\n\t\tthis.resolve = resolve;\n\t\tthis.reject = reject;\n\t});\n\tObject.freeze(this);\n}\n\n/**\n * querySelector with filter by epub type\n * @param {element} html\n * @param {string} element element type to find\n * @param {string} type epub type to find\n * @returns {element[]} elements\n * @memberof Core\n */\nexport function querySelectorByType(html, element, type){\n\tvar query;\n\tif (typeof html.querySelector != \"undefined\") {\n\t\tquery = html.querySelector(`${element}[*|type=\"${type}\"]`);\n\t}\n\t// Handle IE not supporting namespaced epub:type in querySelector\n\tif(!query || query.length === 0) {\n\t\tquery = qsa(html, element);\n\t\tfor (var i = 0; i < query.length; i++) {\n\t\t\tif(query[i].getAttributeNS(\"http://www.idpf.org/2007/ops\", \"type\") === type ||\n\t\t\t\t query[i].getAttribute(\"epub:type\") === type) {\n\t\t\t\treturn query[i];\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn query;\n\t}\n}\n\n/**\n * Find direct descendents of an element\n * @param {element} el\n * @returns {element[]} children\n * @memberof Core\n */\nexport function findChildren(el) {\n\tvar result = [];\n\tvar childNodes = el.childNodes;\n\tfor (var i = 0; i < childNodes.length; i++) {\n\t\tlet node = childNodes[i];\n\t\tif (node.nodeType === 1) {\n\t\t\tresult.push(node);\n\t\t}\n\t}\n\treturn result;\n}\n\n/**\n * Find all parents (ancestors) of an element\n * @param {element} node\n * @returns {element[]} parents\n * @memberof Core\n */\nexport function parents(node) {\n\tvar nodes = [node];\n\tfor (; node; node = node.parentNode) {\n\t\tnodes.unshift(node);\n\t}\n\treturn nodes\n}\n\n/**\n * Find all direct descendents of a specific type\n * @param {element} el\n * @param {string} nodeName\n * @param {boolean} [single]\n * @returns {element[]} children\n * @memberof Core\n */\nexport function filterChildren(el, nodeName, single) {\n\tvar result = [];\n\tvar childNodes = el.childNodes;\n\tfor (var i = 0; i < childNodes.length; i++) {\n\t\tlet node = childNodes[i];\n\t\tif (node.nodeType === 1 && node.nodeName.toLowerCase() === nodeName) {\n\t\t\tif (single) {\n\t\t\t\treturn node;\n\t\t\t} else {\n\t\t\t\tresult.push(node);\n\t\t\t}\n\t\t}\n\t}\n\tif (!single) {\n\t\treturn result;\n\t}\n}\n\n/**\n * Filter all parents (ancestors) with tag name\n * @param {element} node\n * @param {string} tagname\n * @returns {element[]} parents\n * @memberof Core\n */\nexport function getParentByTagName(node, tagname) {\n\tlet parent;\n\tif (node === null || tagname === '') return;\n\tparent = node.parentNode;\n\twhile (parent.nodeType === 1) {\n\t\tif (parent.tagName.toLowerCase() === tagname) {\n\t\t\treturn parent;\n\t\t}\n\t\tparent = parent.parentNode;\n\t}\n}\n\n/**\n * Lightweight Polyfill for DOM Range\n * @class\n * @memberof Core\n */\nexport class RangeObject {\n\tconstructor() {\n\t\tthis.collapsed = false;\n\t\tthis.commonAncestorContainer = undefined;\n\t\tthis.endContainer = undefined;\n\t\tthis.endOffset = undefined;\n\t\tthis.startContainer = undefined;\n\t\tthis.startOffset = undefined;\n\t}\n\n\tsetStart(startNode, startOffset) {\n\t\tthis.startContainer = startNode;\n\t\tthis.startOffset = startOffset;\n\n\t\tif (!this.endContainer) {\n\t\t\tthis.collapse(true);\n\t\t} else {\n\t\t\tthis.commonAncestorContainer = this._commonAncestorContainer();\n\t\t}\n\n\t\tthis._checkCollapsed();\n\t}\n\n\tsetEnd(endNode, endOffset) {\n\t\tthis.endContainer = endNode;\n\t\tthis.endOffset = endOffset;\n\n\t\tif (!this.startContainer) {\n\t\t\tthis.collapse(false);\n\t\t} else {\n\t\t\tthis.collapsed = false;\n\t\t\tthis.commonAncestorContainer = this._commonAncestorContainer();\n\t\t}\n\n\t\tthis._checkCollapsed();\n\t}\n\n\tcollapse(toStart) {\n\t\tthis.collapsed = true;\n\t\tif (toStart) {\n\t\t\tthis.endContainer = this.startContainer;\n\t\t\tthis.endOffset = this.startOffset;\n\t\t\tthis.commonAncestorContainer = this.startContainer.parentNode;\n\t\t} else {\n\t\t\tthis.startContainer = this.endContainer;\n\t\t\tthis.startOffset = this.endOffset;\n\t\t\tthis.commonAncestorContainer = this.endOffset.parentNode;\n\t\t}\n\t}\n\n\tselectNode(referenceNode) {\n\t\tlet parent = referenceNode.parentNode;\n\t\tlet index = Array.prototype.indexOf.call(parent.childNodes, referenceNode);\n\t\tthis.setStart(parent, index);\n\t\tthis.setEnd(parent, index + 1);\n\t}\n\n\tselectNodeContents(referenceNode) {\n\t\tlet end = referenceNode.childNodes[referenceNode.childNodes - 1];\n\t\tlet endIndex = (referenceNode.nodeType === 3) ?\n\t\t\t\treferenceNode.textContent.length : parent.childNodes.length;\n\t\tthis.setStart(referenceNode, 0);\n\t\tthis.setEnd(referenceNode, endIndex);\n\t}\n\n\t_commonAncestorContainer(startContainer, endContainer) {\n\t\tvar startParents = parents(startContainer || this.startContainer);\n\t\tvar endParents = parents(endContainer || this.endContainer);\n\n\t\tif (startParents[0] != endParents[0]) return undefined;\n\n\t\tfor (var i = 0; i < startParents.length; i++) {\n\t\t\tif (startParents[i] != endParents[i]) {\n\t\t\t\treturn startParents[i - 1];\n\t\t\t}\n\t\t}\n\t}\n\n\t_checkCollapsed() {\n\t\tif (this.startContainer === this.endContainer &&\n\t\t\t\tthis.startOffset === this.endOffset) {\n\t\t\tthis.collapsed = true;\n\t\t} else {\n\t\t\tthis.collapsed = false;\n\t\t}\n\t}\n\n\ttoString() {\n\t\t// TODO: implement walking between start and end to find text\n\t}\n}\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","import Path from \"./path\";\nimport path from \"path-webpack\";\n\n/**\n * creates a Url object for parsing and manipulation of a url string\n * @param\t{string} urlString\ta url string (relative or absolute)\n * @param\t{string} [baseString] optional base for the url,\n * default to window.location.href\n */\nclass Url {\n\tconstructor(urlString, baseString) {\n\t\tvar absolute = (urlString.indexOf(\"://\") > -1);\n\t\tvar pathname = urlString;\n\t\tvar basePath;\n\n\t\tthis.Url = undefined;\n\t\tthis.href = urlString;\n\t\tthis.protocol = \"\";\n\t\tthis.origin = \"\";\n\t\tthis.hash = \"\";\n\t\tthis.hash = \"\";\n\t\tthis.search = \"\";\n\t\tthis.base = baseString;\n\n\t\tif (!absolute &&\n\t\t\t\tbaseString !== false &&\n\t\t\t\ttypeof(baseString) !== \"string\" &&\n\t\t\t\twindow && window.location) {\n\t\t\tthis.base = window.location.href;\n\t\t}\n\n\t\t// URL Polyfill doesn't throw an error if base is empty\n\t\tif (absolute || this.base) {\n\t\t\ttry {\n\t\t\t\tif (this.base) { // Safari doesn't like an undefined base\n\t\t\t\t\tthis.Url = new URL(urlString, this.base);\n\t\t\t\t} else {\n\t\t\t\t\tthis.Url = new URL(urlString);\n\t\t\t\t}\n\t\t\t\tthis.href = this.Url.href;\n\n\t\t\t\tthis.protocol = this.Url.protocol;\n\t\t\t\tthis.origin = this.Url.origin;\n\t\t\t\tthis.hash = this.Url.hash;\n\t\t\t\tthis.search = this.Url.search;\n\n\t\t\t\tpathname = this.Url.pathname + (this.Url.search ? this.Url.search : '');\n\t\t\t} catch (e) {\n\t\t\t\t// Skip URL parsing\n\t\t\t\tthis.Url = undefined;\n\t\t\t\t// resolve the pathname from the base\n\t\t\t\tif (this.base) {\n\t\t\t\t\tbasePath = new Path(this.base);\n\t\t\t\t\tpathname = basePath.resolve(pathname);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.Path = new Path(pathname);\n\n\t\tthis.directory = this.Path.directory;\n\t\tthis.filename = this.Path.filename;\n\t\tthis.extension = this.Path.extension;\n\n\t}\n\n\t/**\n\t * @returns {Path}\n\t */\n\tpath () {\n\t\treturn this.Path;\n\t}\n\n\t/**\n\t * Resolves a relative path to a absolute url\n\t * @param {string} what\n\t * @returns {string} url\n\t */\n\tresolve (what) {\n\t\tvar isAbsolute = (what.indexOf(\"://\") > -1);\n\t\tvar fullpath;\n\n\t\tif (isAbsolute) {\n\t\t\treturn what;\n\t\t}\n\n\t\tfullpath = path.resolve(this.directory, what);\n\t\treturn this.origin + fullpath;\n\t}\n\n\t/**\n\t * Resolve a path relative to the url\n\t * @param {string} what\n\t * @returns {string} path\n\t */\n\trelative (what) {\n\t\treturn path.relative(what, this.directory);\n\t}\n\n\t/**\n\t * @returns {string}\n\t */\n\ttoString () {\n\t\treturn this.href;\n\t}\n}\n\nexport default Url;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","\"use strict\";\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== \"function\") return false;\n\tobj = { foo: \"raz\" };\n\tassign(obj, { bar: \"dwa\" }, { trzy: \"trzy\" });\n\treturn obj.foo + obj.bar + obj.trzy === \"razdwatrzy\";\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","\"use strict\";\n\nvar isFunction = require(\"../function/is\");\n\nvar classRe = /^\\s*class[\\s{/}]/, functionToString = Function.prototype.toString;\n\nmodule.exports = function (value) {\n\tif (!isFunction(value)) return false;\n\tif (classRe.test(functionToString.call(value))) return false;\n\treturn true;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","import { qs, qsa } from \"./core\";\nimport Url from \"./url\";\nimport Path from \"./path\";\n\nexport function replaceBase(doc, section){\n\tvar base;\n\tvar head;\n\tvar url = section.url;\n\tvar absolute = (url.indexOf(\"://\") > -1);\n\n\tif(!doc){\n\t\treturn;\n\t}\n\n\thead = qs(doc, \"head\");\n\tbase = qs(head, \"base\");\n\n\tif(!base) {\n\t\tbase = doc.createElement(\"base\");\n\t\thead.insertBefore(base, head.firstChild);\n\t}\n\n\t// Fix for Safari crashing if the url doesn't have an origin\n\tif (!absolute && window && window.location) {\n\t\turl = window.location.origin + url;\n\t}\n\n\tbase.setAttribute(\"href\", url);\n}\n\nexport function replaceCanonical(doc, section){\n\tvar head;\n\tvar link;\n\tvar url = section.canonical;\n\n\tif(!doc){\n\t\treturn;\n\t}\n\n\thead = qs(doc, \"head\");\n\tlink = qs(head, \"link[rel='canonical']\");\n\n\tif (link) {\n\t\tlink.setAttribute(\"href\", url);\n\t} else {\n\t\tlink = doc.createElement(\"link\");\n\t\tlink.setAttribute(\"rel\", \"canonical\");\n\t\tlink.setAttribute(\"href\", url);\n\t\thead.appendChild(link);\n\t}\n}\n\nexport function replaceMeta(doc, section){\n\tvar head;\n\tvar meta;\n\tvar id = section.idref;\n\tif(!doc){\n\t\treturn;\n\t}\n\n\thead = qs(doc, \"head\");\n\tmeta = qs(head, \"link[property='dc.identifier']\");\n\n\tif (meta) {\n\t\tmeta.setAttribute(\"content\", id);\n\t} else {\n\t\tmeta = doc.createElement(\"meta\");\n\t\tmeta.setAttribute(\"name\", \"dc.identifier\");\n\t\tmeta.setAttribute(\"content\", id);\n\t\thead.appendChild(meta);\n\t}\n}\n\n// TODO: move me to Contents\nexport function replaceLinks(contents, fn) {\n\n\tvar links = contents.querySelectorAll(\"a[href]\");\n\n\tif (!links.length) {\n\t\treturn;\n\t}\n\n\tvar base = qs(contents.ownerDocument, \"base\");\n\tvar location = base ? base.getAttribute(\"href\") : undefined;\n\tvar replaceLink = function(link){\n\t\tvar href = link.getAttribute(\"href\");\n\n\t\tif(href.indexOf(\"mailto:\") === 0){\n\t\t\treturn;\n\t\t}\n\n\t\tvar absolute = (href.indexOf(\"://\") > -1);\n\n\t\tif(absolute){\n\n\t\t\tlink.setAttribute(\"target\", \"_blank\");\n\n\t\t}else{\n\t\t\tvar linkUrl;\n\t\t\ttry {\n\t\t\t\tlinkUrl = new Url(href, location);\t\n\t\t\t} catch(error) {\n\t\t\t\t// NOOP\n\t\t\t}\n\n\t\t\tlink.onclick = function(){\n\n\t\t\t\tif(linkUrl && linkUrl.hash) {\n\t\t\t\t\tfn(linkUrl.Path.path + linkUrl.hash);\n\t\t\t\t} else if(linkUrl){\n\t\t\t\t\tfn(linkUrl.Path.path);\n\t\t\t\t} else {\n\t\t\t\t\tfn(href);\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}\n\t}.bind(this);\n\n\tfor (var i = 0; i < links.length; i++) {\n\t\treplaceLink(links[i]);\n\t}\n\n\n}\n\nexport function substitute(content, urls, replacements) {\n\turls.forEach(function(url, i){\n\t\tif (url && replacements[i]) {\n\t\t\t// Account for special characters in the file name.\n\t\t\t// See https://stackoverflow.com/a/6318729.\n\t\t\turl = url.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n\t\t\tcontent = content.replace(new RegExp(url, \"g\"), replacements[i]);\n\t\t}\n\t});\n\treturn content;\n}\n","\"use strict\";\n\nvar str = \"razdwatrzy\";\n\nmodule.exports = function () {\n\tif (typeof str.contains !== \"function\") return false;\n\treturn str.contains(\"dwa\") === true && str.contains(\"foo\") === false;\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","\"use strict\";\n\nmodule.exports = function (fn) {\n\tif (typeof fn !== \"function\") throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.assign : require(\"./shim\");\n","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","import EpubCFI from \"./epubcfi\";\nimport { nodeBounds } from \"./utils/core\";\n\n/**\n * Map text locations to CFI ranges\n * @class\n * @param {Layout} layout Layout to apply\n * @param {string} [direction=\"ltr\"] Text direction\n * @param {string} [axis=\"horizontal\"] vertical or horizontal axis\n * @param {boolean} [dev] toggle developer highlighting\n */\nclass Mapping {\n\tconstructor(layout, direction, axis, dev=false) {\n\t\tthis.layout = layout;\n\t\tthis.horizontal = (axis === \"horizontal\") ? true : false;\n\t\tthis.direction = direction || \"ltr\";\n\t\tthis._dev = dev;\n\t}\n\n\t/**\n\t * Find CFI pairs for entire section at once\n\t */\n\tsection(view) {\n\t\tvar ranges = this.findRanges(view);\n\t\tvar map = this.rangeListToCfiList(view.section.cfiBase, ranges);\n\n\t\treturn map;\n\t}\n\n\t/**\n\t * Find CFI pairs for a page\n\t * @param {Contents} contents Contents from view\n\t * @param {string} cfiBase string of the base for a cfi\n\t * @param {number} start position to start at\n\t * @param {number} end position to end at\n\t */\n\tpage(contents, cfiBase, start, end) {\n\t\tvar root = contents && contents.document ? contents.document.body : false;\n\t\tvar result;\n\n\t\tif (!root) {\n\t\t\treturn;\n\t\t}\n\n\t\tresult = this.rangePairToCfiPair(cfiBase, {\n\t\t\tstart: this.findStart(root, start, end),\n\t\t\tend: this.findEnd(root, start, end)\n\t\t});\n\n\t\tif (this._dev === true) {\n\t\t\tlet doc = contents.document;\n\t\t\tlet startRange = new EpubCFI(result.start).toRange(doc);\n\t\t\tlet endRange = new EpubCFI(result.end).toRange(doc);\n\n\t\t\tlet selection = doc.defaultView.getSelection();\n\t\t\tlet r = doc.createRange();\n\t\t\tselection.removeAllRanges();\n\t\t\tr.setStart(startRange.startContainer, startRange.startOffset);\n\t\t\tr.setEnd(endRange.endContainer, endRange.endOffset);\n\t\t\tselection.addRange(r);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Walk a node, preforming a function on each node it finds\n\t * @private\n\t * @param {Node} root Node to walkToNode\n\t * @param {function} func walk function\n\t * @return {*} returns the result of the walk function\n\t */\n\twalk(root, func) {\n\t\t// IE11 has strange issue, if root is text node IE throws exception on\n\t\t// calling treeWalker.nextNode(), saying\n\t\t// Unexpected call to method or property access instead of returning null value\n\t\tif(root && root.nodeType === Node.TEXT_NODE) {\n\t\t\treturn;\n\t\t}\n\t\t// safeFilter is required so that it can work in IE as filter is a function for IE\n\t\t// and for other browser filter is an object.\n\t\tvar filter = {\n\t\t\tacceptNode: function(node) {\n\t\t\t\tif (node.data.trim().length > 0) {\n\t\t\t\t\treturn NodeFilter.FILTER_ACCEPT;\n\t\t\t\t} else {\n\t\t\t\t\treturn NodeFilter.FILTER_REJECT;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tvar safeFilter = filter.acceptNode;\n\t\tsafeFilter.acceptNode = filter.acceptNode;\n\n\t\tvar treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, safeFilter, false);\n\t\tvar node;\n\t\tvar result;\n\t\twhile ((node = treeWalker.nextNode())) {\n\t\t\tresult = func(node);\n\t\t\tif(result) break;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tfindRanges(view){\n\t\tvar columns = [];\n\t\tvar scrollWidth = view.contents.scrollWidth();\n\t\tvar spreads = Math.ceil( scrollWidth / this.layout.spreadWidth);\n\t\tvar count = spreads * this.layout.divisor;\n\t\tvar columnWidth = this.layout.columnWidth;\n\t\tvar gap = this.layout.gap;\n\t\tvar start, end;\n\n\t\tfor (var i = 0; i < count.pages; i++) {\n\t\t\tstart = (columnWidth + gap) * i;\n\t\t\tend = (columnWidth * (i+1)) + (gap * i);\n\t\t\tcolumns.push({\n\t\t\t\tstart: this.findStart(view.document.body, start, end),\n\t\t\t\tend: this.findEnd(view.document.body, start, end)\n\t\t\t});\n\t\t}\n\n\t\treturn columns;\n\t}\n\n\t/**\n\t * Find Start Range\n\t * @private\n\t * @param {Node} root root node\n\t * @param {number} start position to start at\n\t * @param {number} end position to end at\n\t * @return {Range}\n\t */\n\tfindStart(root, start, end){\n\t\tvar stack = [root];\n\t\tvar $el;\n\t\tvar found;\n\t\tvar $prev = root;\n\n\t\twhile (stack.length) {\n\n\t\t\t$el = stack.shift();\n\n\t\t\tfound = this.walk($el, (node) => {\n\t\t\t\tvar left, right, top, bottom;\n\t\t\t\tvar elPos;\n\t\t\t\tvar elRange;\n\n\n\t\t\t\telPos = nodeBounds(node);\n\n\t\t\t\tif (this.horizontal && this.direction === \"ltr\") {\n\n\t\t\t\t\tleft = this.horizontal ? elPos.left : elPos.top;\n\t\t\t\t\tright = this.horizontal ? elPos.right : elPos.bottom;\n\n\t\t\t\t\tif( left >= start && left <= end ) {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else if (right > start) {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$prev = node;\n\t\t\t\t\t\tstack.push(node);\n\t\t\t\t\t}\n\n\t\t\t\t} else if (this.horizontal && this.direction === \"rtl\") {\n\n\t\t\t\t\tleft = elPos.left;\n\t\t\t\t\tright = elPos.right;\n\n\t\t\t\t\tif( right <= end && right >= start ) {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else if (left < end) {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$prev = node;\n\t\t\t\t\t\tstack.push(node);\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttop = elPos.top;\n\t\t\t\t\tbottom = elPos.bottom;\n\n\t\t\t\t\tif( top >= start && top <= end ) {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else if (bottom > start) {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$prev = node;\n\t\t\t\t\t\tstack.push(node);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\n\t\t\t});\n\n\t\t\tif(found) {\n\t\t\t\treturn this.findTextStartRange(found, start, end);\n\t\t\t}\n\n\t\t}\n\n\t\t// Return last element\n\t\treturn this.findTextStartRange($prev, start, end);\n\t}\n\n\t/**\n\t * Find End Range\n\t * @private\n\t * @param {Node} root root node\n\t * @param {number} start position to start at\n\t * @param {number} end position to end at\n\t * @return {Range}\n\t */\n\tfindEnd(root, start, end){\n\t\tvar stack = [root];\n\t\tvar $el;\n\t\tvar $prev = root;\n\t\tvar found;\n\n\t\twhile (stack.length) {\n\n\t\t\t$el = stack.shift();\n\n\t\t\tfound = this.walk($el, (node) => {\n\n\t\t\t\tvar left, right, top, bottom;\n\t\t\t\tvar elPos;\n\t\t\t\tvar elRange;\n\n\t\t\t\telPos = nodeBounds(node);\n\n\t\t\t\tif (this.horizontal && this.direction === \"ltr\") {\n\n\t\t\t\t\tleft = Math.round(elPos.left);\n\t\t\t\t\tright = Math.round(elPos.right);\n\n\t\t\t\t\tif(left > end && $prev) {\n\t\t\t\t\t\treturn $prev;\n\t\t\t\t\t} else if(right > end) {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$prev = node;\n\t\t\t\t\t\tstack.push(node);\n\t\t\t\t\t}\n\n\t\t\t\t} else if (this.horizontal && this.direction === \"rtl\") {\n\n\t\t\t\t\tleft = Math.round(this.horizontal ? elPos.left : elPos.top);\n\t\t\t\t\tright = Math.round(this.horizontal ? elPos.right : elPos.bottom);\n\n\t\t\t\t\tif(right < start && $prev) {\n\t\t\t\t\t\treturn $prev;\n\t\t\t\t\t} else if(left < start) {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$prev = node;\n\t\t\t\t\t\tstack.push(node);\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttop = Math.round(elPos.top);\n\t\t\t\t\tbottom = Math.round(elPos.bottom);\n\n\t\t\t\t\tif(top > end && $prev) {\n\t\t\t\t\t\treturn $prev;\n\t\t\t\t\t} else if(bottom > end) {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$prev = node;\n\t\t\t\t\t\tstack.push(node);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t});\n\n\n\t\t\tif(found){\n\t\t\t\treturn this.findTextEndRange(found, start, end);\n\t\t\t}\n\n\t\t}\n\n\t\t// end of chapter\n\t\treturn this.findTextEndRange($prev, start, end);\n\t}\n\n\t/**\n\t * Find Text Start Range\n\t * @private\n\t * @param {Node} root root node\n\t * @param {number} start position to start at\n\t * @param {number} end position to end at\n\t * @return {Range}\n\t */\n\tfindTextStartRange(node, start, end){\n\t\tvar ranges = this.splitTextNodeIntoRanges(node);\n\t\tvar range;\n\t\tvar pos;\n\t\tvar left, top, right;\n\n\t\tfor (var i = 0; i < ranges.length; i++) {\n\t\t\trange = ranges[i];\n\n\t\t\tpos = range.getBoundingClientRect();\n\n\t\t\tif (this.horizontal && this.direction === \"ltr\") {\n\n\t\t\t\tleft = pos.left;\n\t\t\t\tif( left >= start ) {\n\t\t\t\t\treturn range;\n\t\t\t\t}\n\n\t\t\t} else if (this.horizontal && this.direction === \"rtl\") {\n\n\t\t\t\tright = pos.right;\n\t\t\t\tif( right <= end ) {\n\t\t\t\t\treturn range;\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttop = pos.top;\n\t\t\t\tif( top >= start ) {\n\t\t\t\t\treturn range;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// prev = range;\n\n\t\t}\n\n\t\treturn ranges[0];\n\t}\n\n\t/**\n\t * Find Text End Range\n\t * @private\n\t * @param {Node} root root node\n\t * @param {number} start position to start at\n\t * @param {number} end position to end at\n\t * @return {Range}\n\t */\n\tfindTextEndRange(node, start, end){\n\t\tvar ranges = this.splitTextNodeIntoRanges(node);\n\t\tvar prev;\n\t\tvar range;\n\t\tvar pos;\n\t\tvar left, right, top, bottom;\n\n\t\tfor (var i = 0; i < ranges.length; i++) {\n\t\t\trange = ranges[i];\n\n\t\t\tpos = range.getBoundingClientRect();\n\n\t\t\tif (this.horizontal && this.direction === \"ltr\") {\n\n\t\t\t\tleft = pos.left;\n\t\t\t\tright = pos.right;\n\n\t\t\t\tif(left > end && prev) {\n\t\t\t\t\treturn prev;\n\t\t\t\t} else if(right > end) {\n\t\t\t\t\treturn range;\n\t\t\t\t}\n\n\t\t\t} else if (this.horizontal && this.direction === \"rtl\") {\n\n\t\t\t\tleft = pos.left\n\t\t\t\tright = pos.right;\n\n\t\t\t\tif(right < start && prev) {\n\t\t\t\t\treturn prev;\n\t\t\t\t} else if(left < start) {\n\t\t\t\t\treturn range;\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttop = pos.top;\n\t\t\t\tbottom = pos.bottom;\n\n\t\t\t\tif(top > end && prev) {\n\t\t\t\t\treturn prev;\n\t\t\t\t} else if(bottom > end) {\n\t\t\t\t\treturn range;\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tprev = range;\n\n\t\t}\n\n\t\t// Ends before limit\n\t\treturn ranges[ranges.length-1];\n\n\t}\n\n\t/**\n\t * Split up a text node into ranges for each word\n\t * @private\n\t * @param {Node} root root node\n\t * @param {string} [_splitter] what to split on\n\t * @return {Range[]}\n\t */\n\tsplitTextNodeIntoRanges(node, _splitter){\n\t\tvar ranges = [];\n\t\tvar textContent = node.textContent || \"\";\n\t\tvar text = textContent.trim();\n\t\tvar range;\n\t\tvar doc = node.ownerDocument;\n\t\tvar splitter = _splitter || \" \";\n\n\t\tvar pos = text.indexOf(splitter);\n\n\t\tif(pos === -1 || node.nodeType != Node.TEXT_NODE) {\n\t\t\trange = doc.createRange();\n\t\t\trange.selectNodeContents(node);\n\t\t\treturn [range];\n\t\t}\n\n\t\trange = doc.createRange();\n\t\trange.setStart(node, 0);\n\t\trange.setEnd(node, pos);\n\t\tranges.push(range);\n\t\trange = false;\n\n\t\twhile ( pos != -1 ) {\n\n\t\t\tpos = text.indexOf(splitter, pos + 1);\n\t\t\tif(pos > 0) {\n\n\t\t\t\tif(range) {\n\t\t\t\t\trange.setEnd(node, pos);\n\t\t\t\t\tranges.push(range);\n\t\t\t\t}\n\n\t\t\t\trange = doc.createRange();\n\t\t\t\trange.setStart(node, pos+1);\n\t\t\t}\n\t\t}\n\n\t\tif(range) {\n\t\t\trange.setEnd(node, text.length);\n\t\t\tranges.push(range);\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\n\t/**\n\t * Turn a pair of ranges into a pair of CFIs\n\t * @private\n\t * @param {string} cfiBase base string for an EpubCFI\n\t * @param {object} rangePair { start: Range, end: Range }\n\t * @return {object} { start: \"epubcfi(...)\", end: \"epubcfi(...)\" }\n\t */\n\trangePairToCfiPair(cfiBase, rangePair){\n\n\t\tvar startRange = rangePair.start;\n\t\tvar endRange = rangePair.end;\n\n\t\tstartRange.collapse(true);\n\t\tendRange.collapse(false);\n\n\t\tlet startCfi = new EpubCFI(startRange, cfiBase).toString();\n\t\tlet endCfi = new EpubCFI(endRange, cfiBase).toString();\n\n\t\treturn {\n\t\t\tstart: startCfi,\n\t\t\tend: endCfi\n\t\t};\n\n\t}\n\n\trangeListToCfiList(cfiBase, columns){\n\t\tvar map = [];\n\t\tvar cifPair;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tcifPair = this.rangePairToCfiPair(cfiBase, columns[i]);\n\n\t\t\tmap.push(cifPair);\n\n\t\t}\n\n\t\treturn map;\n\t}\n\n\t/**\n\t * Set the axis for mapping\n\t * @param {string} axis horizontal | vertical\n\t * @return {boolean} is it horizontal?\n\t */\n\taxis(axis) {\n\t\tif (axis) {\n\t\t\tthis.horizontal = (axis === \"horizontal\") ? true : false;\n\t\t}\n\t\treturn this.horizontal;\n\t}\n}\n\nexport default Mapping;\n","import Book from \"./book\";\nimport Rendition from \"./rendition\";\nimport CFI from \"./epubcfi\";\nimport Contents from \"./contents\";\nimport * as utils from \"./utils/core\";\nimport { EPUBJS_VERSION } from \"./utils/constants\";\n\nimport IframeView from \"./managers/views/iframe\";\nimport DefaultViewManager from \"./managers/default\";\nimport ContinuousViewManager from \"./managers/continuous\";\n\n/**\n * Creates a new Book\n * @param {string|ArrayBuffer} url URL, Path or ArrayBuffer\n * @param {object} options to pass to the book\n * @returns {Book} a new Book object\n * @example ePub(\"/path/to/book.epub\", {})\n */\nfunction ePub(url, options) {\n\treturn new Book(url, options);\n}\n\nePub.VERSION = EPUBJS_VERSION;\n\nif (typeof(global) !== \"undefined\") {\n\tglobal.EPUBJS_VERSION = EPUBJS_VERSION;\n}\n\nePub.Book = Book;\nePub.Rendition = Rendition;\nePub.Contents = Contents;\nePub.CFI = CFI;\nePub.utils = utils;\n\nexport default ePub;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","'use strict';\n\nif (!process) {\n var process = {\n \"cwd\" : function () { return '/' }\n };\n}\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + path);\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47/*/*/)\n break;\n else\n code = 47/*/*/;\n if (code === 47/*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 ||\n res.charCodeAt(res.length - 1) !== 46/*.*/ ||\n res.charCodeAt(res.length - 2) !== 46/*.*/) {\n if (res.length > 2) {\n var start = res.length - 1;\n var j = start;\n for (; j >= 0; --j) {\n if (res.charCodeAt(j) === 47/*/*/)\n break;\n }\n if (j !== start) {\n if (j === -1)\n res = '';\n else\n res = res.slice(0, j);\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46/*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base ||\n ((pathObject.name || '') + (pathObject.ext || ''));\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47/*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0)\n return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47/*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47/*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute)\n path = '.';\n if (path.length > 0 && trailingSeparator)\n path += '/';\n\n if (isAbsolute)\n return '/' + path;\n return path;\n },\n\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47/*/*/;\n },\n\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to)\n return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to)\n return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47/*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = (fromEnd - fromStart);\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47/*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = (toEnd - toStart);\n\n // Compare paths to find the longest common path from root\n var length = (fromLen < toLen ? fromLen : toLen);\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47/*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47/*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47/*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47/*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47/*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0)\n return '.';\n var code = path.charCodeAt(0);\n var hasRoot = (code === 47/*/*/);\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47/*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1)\n return hasRoot ? '/' : '.';\n if (hasRoot && end === 1)\n return '//';\n return path.slice(0, end);\n },\n\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string')\n throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path)\n return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47/*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end)\n end = firstNonSlashEnd;\n else if (end === -1)\n end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47/*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1)\n return '';\n return path.slice(start, end);\n }\n },\n\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47/*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46/*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError(\n 'Parameter \"pathObject\" must be an object, not ' + typeof(pathObject)\n );\n }\n return _format('/', pathObject);\n },\n\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0)\n return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = (code === 47/*/*/);\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47/*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46/*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = path.slice(1, end);\n else\n ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0)\n ret.dir = path.slice(0, startPart - 1);\n else if (isAbsolute)\n ret.dir = '/';\n\n return ret;\n },\n\n\n sep: '/',\n delimiter: ':',\n posix: null\n};\n\n\nmodule.exports = posix;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {\n forEach: forEach\n});\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","/**\n * Hooks allow for injecting functions that must all complete in order before finishing\n * They will execute in parallel but all must finish before continuing\n * Functions may return a promise if they are async.\n * @param {any} context scope of this\n * @example this.content = new EPUBJS.Hook(this);\n */\nclass Hook {\n\tconstructor(context){\n\t\tthis.context = context || this;\n\t\tthis.hooks = [];\n\t}\n\n\t/**\n\t * Adds a function to be run before a hook completes\n\t * @example this.content.register(function(){...});\n\t */\n\tregister(){\n\t\tfor(var i = 0; i < arguments.length; ++i) {\n\t\t\tif (typeof arguments[i] === \"function\") {\n\t\t\t\tthis.hooks.push(arguments[i]);\n\t\t\t} else {\n\t\t\t\t// unpack array\n\t\t\t\tfor(var j = 0; j < arguments[i].length; ++j) {\n\t\t\t\t\tthis.hooks.push(arguments[i][j]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes a function\n\t * @example this.content.deregister(function(){...});\n\t */\n\tderegister(func){\n\t\tlet hook;\n\t\tfor (let i = 0; i < this.hooks.length; i++) {\n\t\t\thook = this.hooks[i];\n\t\t\tif (hook === func) {\n\t\t\t\tthis.hooks.splice(i, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Triggers a hook to run all functions\n\t * @example this.content.trigger(args).then(function(){...});\n\t */\n\ttrigger(){\n\t\tvar args = arguments;\n\t\tvar context = this.context;\n\t\tvar promises = [];\n\n\t\tthis.hooks.forEach(function(task) {\n\t\t\ttry {\n\t\t\t\tvar executing = task.apply(context, args);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.log(err);\n\t\t\t}\n\n\t\t\tif(executing && typeof executing[\"then\"] === \"function\") {\n\t\t\t\t// Task is a function that returns a promise\n\t\t\t\tpromises.push(executing);\n\t\t\t}\n\t\t\t// Otherwise Task resolves immediately, continue\n\t\t});\n\n\n\t\treturn Promise.all(promises);\n\t}\n\n\t// Adds a function to be run before a hook completes\n\tlist(){\n\t\treturn this.hooks;\n\t}\n\n\tclear(){\n\t\treturn this.hooks = [];\n\t}\n}\nexport default Hook;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","import EventEmitter from \"event-emitter\";\nimport {isNumber, prefixed, borders, defaults} from \"./utils/core\";\nimport EpubCFI from \"./epubcfi\";\nimport Mapping from \"./mapping\";\nimport {replaceLinks} from \"./utils/replacements\";\nimport { EPUBJS_VERSION, EVENTS, DOM_EVENTS } from \"./utils/constants\";\n\nconst hasNavigator = typeof (navigator) !== \"undefined\";\n\nconst isChrome = hasNavigator && /Chrome/.test(navigator.userAgent);\nconst isWebkit = hasNavigator && !isChrome && /AppleWebKit/.test(navigator.userAgent);\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\n\n/**\n\t* Handles DOM manipulation, queries and events for View contents\n\t* @class\n\t* @param {document} doc Document\n\t* @param {element} content Parent Element (typically Body)\n\t* @param {string} cfiBase Section component of CFIs\n\t* @param {number} sectionIndex Index in Spine of Conntent's Section\n\t*/\nclass Contents {\n\tconstructor(doc, content, cfiBase, sectionIndex) {\n\t\t// Blank Cfi for Parsing\n\t\tthis.epubcfi = new EpubCFI();\n\n\t\tthis.document = doc;\n\t\tthis.documentElement = this.document.documentElement;\n\t\tthis.content = content || this.document.body;\n\t\tthis.window = this.document.defaultView;\n\n\t\tthis._size = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tthis.sectionIndex = sectionIndex || 0;\n\t\tthis.cfiBase = cfiBase || \"\";\n\n\t\tthis.epubReadingSystem(\"epub.js\", EPUBJS_VERSION);\n\t\tthis.called = 0;\n\t\tthis.active = true;\n\t\tthis.listeners();\n\t}\n\n\t/**\n\t\t* Get DOM events that are listened for and passed along\n\t\t*/\n\tstatic get listenedEvents() {\n\t\treturn DOM_EVENTS;\n\t}\n\n\t/**\n\t\t* Get or Set width\n\t\t* @param {number} [w]\n\t\t* @returns {number} width\n\t\t*/\n\twidth(w) {\n\t\t// var frame = this.documentElement;\n\t\tvar frame = this.content;\n\n\t\tif (w && isNumber(w)) {\n\t\t\tw = w + \"px\";\n\t\t}\n\n\t\tif (w) {\n\t\t\tframe.style.width = w;\n\t\t\t// this.content.style.width = w;\n\t\t}\n\n\t\treturn parseInt(this.window.getComputedStyle(frame)[\"width\"]);\n\n\n\t}\n\n\t/**\n\t\t* Get or Set height\n\t\t* @param {number} [h]\n\t\t* @returns {number} height\n\t\t*/\n\theight(h) {\n\t\t// var frame = this.documentElement;\n\t\tvar frame = this.content;\n\n\t\tif (h && isNumber(h)) {\n\t\t\th = h + \"px\";\n\t\t}\n\n\t\tif (h) {\n\t\t\tframe.style.height = h;\n\t\t\t// this.content.style.height = h;\n\t\t}\n\n\t\treturn parseInt(this.window.getComputedStyle(frame)[\"height\"]);\n\n\t}\n\n\t/**\n\t\t* Get or Set width of the contents\n\t\t* @param {number} [w]\n\t\t* @returns {number} width\n\t\t*/\n\tcontentWidth(w) {\n\n\t\tvar content = this.content || this.document.body;\n\n\t\tif (w && isNumber(w)) {\n\t\t\tw = w + \"px\";\n\t\t}\n\n\t\tif (w) {\n\t\t\tcontent.style.width = w;\n\t\t}\n\n\t\treturn parseInt(this.window.getComputedStyle(content)[\"width\"]);\n\n\n\t}\n\n\t/**\n\t\t* Get or Set height of the contents\n\t\t* @param {number} [h]\n\t\t* @returns {number} height\n\t\t*/\n\tcontentHeight(h) {\n\n\t\tvar content = this.content || this.document.body;\n\n\t\tif (h && isNumber(h)) {\n\t\t\th = h + \"px\";\n\t\t}\n\n\t\tif (h) {\n\t\t\tcontent.style.height = h;\n\t\t}\n\n\t\treturn parseInt(this.window.getComputedStyle(content)[\"height\"]);\n\n\t}\n\n\t/**\n\t\t* Get the width of the text using Range\n\t\t* @returns {number} width\n\t\t*/\n\ttextWidth() {\n\t\tlet rect;\n\t\tlet width;\n\t\tlet range = this.document.createRange();\n\t\tlet content = this.content || this.document.body;\n\t\tlet border = borders(content);\n\n\t\t// Select the contents of frame\n\t\trange.selectNodeContents(content);\n\n\t\t// get the width of the text content\n\t\trect = range.getBoundingClientRect();\n\t\twidth = rect.width;\n\n\t\tif (border && border.width) {\n\t\t\twidth += border.width;\n\t\t}\n\n\t\treturn Math.round(width);\n\t}\n\n\t/**\n\t\t* Get the height of the text using Range\n\t\t* @returns {number} height\n\t\t*/\n\ttextHeight() {\n\t\tlet rect;\n\t\tlet height;\n\t\tlet range = this.document.createRange();\n\t\tlet content = this.content || this.document.body;\n\n\t\trange.selectNodeContents(content);\n\n\t\trect = range.getBoundingClientRect();\n\t\theight = rect.bottom;\n\n\t\treturn Math.round(height);\n\t}\n\n\t/**\n\t\t* Get documentElement scrollWidth\n\t\t* @returns {number} width\n\t\t*/\n\tscrollWidth() {\n\t\tvar width = this.documentElement.scrollWidth;\n\n\t\treturn width;\n\t}\n\n\t/**\n\t\t* Get documentElement scrollHeight\n\t\t* @returns {number} height\n\t\t*/\n\tscrollHeight() {\n\t\tvar height = this.documentElement.scrollHeight;\n\n\t\treturn height;\n\t}\n\n\t/**\n\t\t* Set overflow css style of the contents\n\t\t* @param {string} [overflow]\n\t\t*/\n\toverflow(overflow) {\n\n\t\tif (overflow) {\n\t\t\tthis.documentElement.style.overflow = overflow;\n\t\t}\n\n\t\treturn this.window.getComputedStyle(this.documentElement)[\"overflow\"];\n\t}\n\n\t/**\n\t\t* Set overflowX css style of the documentElement\n\t\t* @param {string} [overflow]\n\t\t*/\n\toverflowX(overflow) {\n\n\t\tif (overflow) {\n\t\t\tthis.documentElement.style.overflowX = overflow;\n\t\t}\n\n\t\treturn this.window.getComputedStyle(this.documentElement)[\"overflowX\"];\n\t}\n\n\t/**\n\t\t* Set overflowY css style of the documentElement\n\t\t* @param {string} [overflow]\n\t\t*/\n\toverflowY(overflow) {\n\n\t\tif (overflow) {\n\t\t\tthis.documentElement.style.overflowY = overflow;\n\t\t}\n\n\t\treturn this.window.getComputedStyle(this.documentElement)[\"overflowY\"];\n\t}\n\n\t/**\n\t\t* Set Css styles on the contents element (typically Body)\n\t\t* @param {string} property\n\t\t* @param {string} value\n\t\t* @param {boolean} [priority] set as \"important\"\n\t\t*/\n\tcss(property, value, priority) {\n\t\tvar content = this.content || this.document.body;\n\n\t\tif (value) {\n\t\t\tcontent.style.setProperty(property, value, priority ? \"important\" : \"\");\n\t\t} else {\n\t\t\tcontent.style.removeProperty(property);\n\t\t}\n\n\t\treturn this.window.getComputedStyle(content)[property];\n\t}\n\n\t/**\n\t\t* Get or Set the viewport element\n\t\t* @param {object} [options]\n\t\t* @param {string} [options.width]\n\t\t* @param {string} [options.height]\n\t\t* @param {string} [options.scale]\n\t\t* @param {string} [options.minimum]\n\t\t* @param {string} [options.maximum]\n\t\t* @param {string} [options.scalable]\n\t\t*/\n\tviewport(options) {\n\t\tvar _width, _height, _scale, _minimum, _maximum, _scalable;\n\t\t// var width, height, scale, minimum, maximum, scalable;\n\t\tvar $viewport = this.document.querySelector(\"meta[name='viewport']\");\n\t\tvar parsed = {\n\t\t\t\"width\": undefined,\n\t\t\t\"height\": undefined,\n\t\t\t\"scale\": undefined,\n\t\t\t\"minimum\": undefined,\n\t\t\t\"maximum\": undefined,\n\t\t\t\"scalable\": undefined\n\t\t};\n\t\tvar newContent = [];\n\t\tvar settings = {};\n\n\t\t/*\n\t\t* check for the viewport size\n\t\t* \n\t\t*/\n\t\tif($viewport && $viewport.hasAttribute(\"content\")) {\n\t\t\tlet content = $viewport.getAttribute(\"content\");\n\t\t\tlet _width = content.match(/width\\s*=\\s*([^,]*)/);\n\t\t\tlet _height = content.match(/height\\s*=\\s*([^,]*)/);\n\t\t\tlet _scale = content.match(/initial-scale\\s*=\\s*([^,]*)/);\n\t\t\tlet _minimum = content.match(/minimum-scale\\s*=\\s*([^,]*)/);\n\t\t\tlet _maximum = content.match(/maximum-scale\\s*=\\s*([^,]*)/);\n\t\t\tlet _scalable = content.match(/user-scalable\\s*=\\s*([^,]*)/);\n\n\t\t\tif(_width && _width.length && typeof _width[1] !== \"undefined\"){\n\t\t\t\tparsed.width = _width[1];\n\t\t\t}\n\t\t\tif(_height && _height.length && typeof _height[1] !== \"undefined\"){\n\t\t\t\tparsed.height = _height[1];\n\t\t\t}\n\t\t\tif(_scale && _scale.length && typeof _scale[1] !== \"undefined\"){\n\t\t\t\tparsed.scale = _scale[1];\n\t\t\t}\n\t\t\tif(_minimum && _minimum.length && typeof _minimum[1] !== \"undefined\"){\n\t\t\t\tparsed.minimum = _minimum[1];\n\t\t\t}\n\t\t\tif(_maximum && _maximum.length && typeof _maximum[1] !== \"undefined\"){\n\t\t\t\tparsed.maximum = _maximum[1];\n\t\t\t}\n\t\t\tif(_scalable && _scalable.length && typeof _scalable[1] !== \"undefined\"){\n\t\t\t\tparsed.scalable = _scalable[1];\n\t\t\t}\n\t\t}\n\n\t\tsettings = defaults(options || {}, parsed);\n\n\t\tif (options) {\n\t\t\tif (settings.width) {\n\t\t\t\tnewContent.push(\"width=\" + settings.width);\n\t\t\t}\n\n\t\t\tif (settings.height) {\n\t\t\t\tnewContent.push(\"height=\" + settings.height);\n\t\t\t}\n\n\t\t\tif (settings.scale) {\n\t\t\t\tnewContent.push(\"initial-scale=\" + settings.scale);\n\t\t\t}\n\n\t\t\tif (settings.scalable === \"no\") {\n\t\t\t\tnewContent.push(\"minimum-scale=\" + settings.scale);\n\t\t\t\tnewContent.push(\"maximum-scale=\" + settings.scale);\n\t\t\t\tnewContent.push(\"user-scalable=\" + settings.scalable);\n\t\t\t} else {\n\n\t\t\t\tif (settings.scalable) {\n\t\t\t\t\tnewContent.push(\"user-scalable=\" + settings.scalable);\n\t\t\t\t}\n\n\t\t\t\tif (settings.minimum) {\n\t\t\t\t\tnewContent.push(\"minimum-scale=\" + settings.minimum);\n\t\t\t\t}\n\n\t\t\t\tif (settings.maximum) {\n\t\t\t\t\tnewContent.push(\"minimum-scale=\" + settings.maximum);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!$viewport) {\n\t\t\t\t$viewport = this.document.createElement(\"meta\");\n\t\t\t\t$viewport.setAttribute(\"name\", \"viewport\");\n\t\t\t\tthis.document.querySelector(\"head\").appendChild($viewport);\n\t\t\t}\n\n\t\t\t$viewport.setAttribute(\"content\", newContent.join(\", \"));\n\n\t\t\tthis.window.scrollTo(0, 0);\n\t\t}\n\n\n\t\treturn settings;\n\t}\n\n\t/**\n\t * Event emitter for when the contents has expanded\n\t * @private\n\t */\n\texpand() {\n\t\tthis.emit(EVENTS.CONTENTS.EXPAND);\n\t}\n\n\t/**\n\t * Add DOM listeners\n\t * @private\n\t */\n\tlisteners() {\n\t\tthis.imageLoadListeners();\n\n\t\tthis.mediaQueryListeners();\n\n\t\t// this.fontLoadListeners();\n\n\t\tthis.addEventListeners();\n\n\t\tthis.addSelectionListeners();\n\n\t\t// this.transitionListeners();\n\n\t\tif (typeof ResizeObserver === \"undefined\") {\n\t\t\tthis.resizeListeners();\n\t\t\tthis.visibilityListeners();\n\t\t} else {\n\t\t\tthis.resizeObservers();\n\t\t}\n\n\t\t// this.mutationObservers();\n\n\t\tthis.linksHandler();\n\t}\n\n\t/**\n\t * Remove DOM listeners\n\t * @private\n\t */\n\tremoveListeners() {\n\n\t\tthis.removeEventListeners();\n\n\t\tthis.removeSelectionListeners();\n\n\t\tif (this.observer) {\n\t\t\tthis.observer.disconnect();\n\t\t}\n\n\t\tclearTimeout(this.expanding);\n\t}\n\n\t/**\n\t * Check if size of contents has changed and\n\t * emit 'resize' event if it has.\n\t * @private\n\t */\n\tresizeCheck() {\n\t\tlet width = this.textWidth();\n\t\tlet height = this.textHeight();\n\n\t\tif (width != this._size.width || height != this._size.height) {\n\n\t\t\tthis._size = {\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\n\t\t\tthis.onResize && this.onResize(this._size);\n\t\t\tthis.emit(EVENTS.CONTENTS.RESIZE, this._size);\n\t\t}\n\t}\n\n\t/**\n\t * Poll for resize detection\n\t * @private\n\t */\n\tresizeListeners() {\n\t\tvar width, height;\n\t\t// Test size again\n\t\tclearTimeout(this.expanding);\n\t\trequestAnimationFrame(this.resizeCheck.bind(this));\n\t\tthis.expanding = setTimeout(this.resizeListeners.bind(this), 350);\n\t}\n\n\t/**\n\t * Listen for visibility of tab to change\n\t * @private\n\t */\n\tvisibilityListeners() {\n\t\tdocument.addEventListener(\"visibilitychange\", () => {\n\t\t\tif (document.visibilityState === \"visible\" && this.active === false) {\n\t\t\t\tthis.active = true;\n\t\t\t\tthis.resizeListeners();\n\t\t\t} else {\n\t\t\t\tthis.active = false;\n\t\t\t\tclearTimeout(this.expanding);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Use css transitions to detect resize\n\t * @private\n\t */\n\ttransitionListeners() {\n\t\tlet body = this.content;\n\n\t\tbody.style['transitionProperty'] = \"font, font-size, font-size-adjust, font-stretch, font-variation-settings, font-weight, width, height\";\n\t\tbody.style['transitionDuration'] = \"0.001ms\";\n\t\tbody.style['transitionTimingFunction'] = \"linear\";\n\t\tbody.style['transitionDelay'] = \"0\";\n\n\t\tthis._resizeCheck = this.resizeCheck.bind(this);\n\t\tthis.document.addEventListener('transitionend', this._resizeCheck);\n\t}\n\n\t/**\n\t * Listen for media query changes and emit 'expand' event\n\t * Adapted from: https://github.com/tylergaw/media-query-events/blob/master/js/mq-events.js\n\t * @private\n\t */\n\tmediaQueryListeners() {\n\t\tvar sheets = this.document.styleSheets;\n\t\tvar mediaChangeHandler = function(m){\n\t\t\tif(m.matches && !this._expanding) {\n\t\t\t\tsetTimeout(this.expand.bind(this), 1);\n\t\t\t}\n\t\t}.bind(this);\n\n\t\tfor (var i = 0; i < sheets.length; i += 1) {\n\t\t\tvar rules;\n\t\t\t// Firefox errors if we access cssRules cross-domain\n\t\t\ttry {\n\t\t\t\trules = sheets[i].cssRules;\n\t\t\t} catch (e) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(!rules) return; // Stylesheets changed\n\t\t\tfor (var j = 0; j < rules.length; j += 1) {\n\t\t\t\t//if (rules[j].constructor === CSSMediaRule) {\n\t\t\t\tif(rules[j].media){\n\t\t\t\t\tvar mql = this.window.matchMedia(rules[j].media.mediaText);\n\t\t\t\t\tmql.addListener(mediaChangeHandler);\n\t\t\t\t\t//mql.onchange = mediaChangeHandler;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Use ResizeObserver to listen for changes in the DOM and check for resize\n\t * @private\n\t */\n\tresizeObservers() {\n\t\t// create an observer instance\n\t\tthis.observer = new ResizeObserver((e) => {\n\t\t\trequestAnimationFrame(this.resizeCheck.bind(this));\n\t\t});\n\n\t\t// pass in the target node\n\t\tthis.observer.observe(this.document.documentElement);\n\t}\n\n\t/**\n\t * Use MutationObserver to listen for changes in the DOM and check for resize\n\t * @private\n\t */\n\tmutationObservers() {\n\t\t// create an observer instance\n\t\tthis.observer = new MutationObserver((mutations) => {\n\t\t\tthis.resizeCheck();\n\t\t});\n\n\t\t// configuration of the observer:\n\t\tlet config = { attributes: true, childList: true, characterData: true, subtree: true };\n\n\t\t// pass in the target node, as well as the observer options\n\t\tthis.observer.observe(this.document, config);\n\t}\n\n\t/**\n\t * Test if images are loaded or add listener for when they load\n\t * @private\n\t */\n\timageLoadListeners() {\n\t\tvar images = this.document.querySelectorAll(\"img\");\n\t\tvar img;\n\t\tfor (var i = 0; i < images.length; i++) {\n\t\t\timg = images[i];\n\n\t\t\tif (typeof img.naturalWidth !== \"undefined\" &&\n\t\t\t\t\timg.naturalWidth === 0) {\n\t\t\t\timg.onload = this.expand.bind(this);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Listen for font load and check for resize when loaded\n\t * @private\n\t */\n\tfontLoadListeners() {\n\t\tif (!this.document || !this.document.fonts) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.document.fonts.ready.then(function () {\n\t\t\tthis.resizeCheck();\n\t\t}.bind(this));\n\n\t}\n\n\t/**\n\t * Get the documentElement\n\t * @returns {element} documentElement\n\t */\n\troot() {\n\t\tif(!this.document) return null;\n\t\treturn this.document.documentElement;\n\t}\n\n\t/**\n\t * Get the location offset of a EpubCFI or an #id\n\t * @param {string | EpubCFI} target\n\t * @param {string} [ignoreClass] for the cfi\n\t * @returns { {left: Number, top: Number }\n\t */\n\tlocationOf(target, ignoreClass) {\n\t\tvar position;\n\t\tvar targetPos = {\"left\": 0, \"top\": 0};\n\n\t\tif(!this.document) return targetPos;\n\n\t\tif(this.epubcfi.isCfiString(target)) {\n\t\t\tlet range = new EpubCFI(target).toRange(this.document, ignoreClass);\n\n\t\t\tif(range) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!range.endContainer ||\n\t\t\t\t\t\t(range.startContainer == range.endContainer\n\t\t\t\t\t\t&& range.startOffset == range.endOffset)) {\n\t\t\t\t\t\t// If the end for the range is not set, it results in collapsed becoming\n\t\t\t\t\t\t// true. This in turn leads to inconsistent behaviour when calling\n\t\t\t\t\t\t// getBoundingRect. Wrong bounds lead to the wrong page being displayed.\n\t\t\t\t\t\t// https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/15684911/\n\t\t\t\t\t\tlet pos = range.startContainer.textContent.indexOf(\" \", range.startOffset);\n\t\t\t\t\t\tif (pos == -1) {\n\t\t\t\t\t\t\tpos = range.startContainer.textContent.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.setEnd(range.startContainer, pos);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(\"setting end offset to start container length failed\", e);\n\t\t\t\t}\n\n\t\t\t\tif (range.startContainer.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t\tposition = range.startContainer.getBoundingClientRect();\n\t\t\t\t\ttargetPos.left = position.left;\n\t\t\t\t\ttargetPos.top = position.top;\n\t\t\t\t} else {\n\t\t\t\t\t// Webkit does not handle collapsed range bounds correctly\n\t\t\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=138949\n\n\t\t\t\t\t// Construct a new non-collapsed range\n\t\t\t\t\tif (isWebkit) {\n\t\t\t\t\t\tlet container = range.startContainer;\n\t\t\t\t\t\tlet newRange = new Range();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (container.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\t\t\tposition = container.getBoundingClientRect();\n\t\t\t\t\t\t\t} else if (range.startOffset + 2 < container.length) {\n\t\t\t\t\t\t\t\tnewRange.setStart(container, range.startOffset);\n\t\t\t\t\t\t\t\tnewRange.setEnd(container, range.startOffset + 2);\n\t\t\t\t\t\t\t\tposition = newRange.getBoundingClientRect();\n\t\t\t\t\t\t\t} else if (range.startOffset - 2 > 0) {\n\t\t\t\t\t\t\t\tnewRange.setStart(container, range.startOffset - 2);\n\t\t\t\t\t\t\t\tnewRange.setEnd(container, range.startOffset);\n\t\t\t\t\t\t\t\tposition = newRange.getBoundingClientRect();\n\t\t\t\t\t\t\t} else { // empty, return the parent element\n\t\t\t\t\t\t\t\tposition = container.parentNode.getBoundingClientRect();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e, e.stack);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition = range.getBoundingClientRect();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else if(typeof target === \"string\" &&\n\t\t\ttarget.indexOf(\"#\") > -1) {\n\n\t\t\tlet id = target.substring(target.indexOf(\"#\")+1);\n\t\t\tlet el = this.document.getElementById(id);\n\t\t\tif(el) {\n\t\t\t\tif (isWebkit) {\n\t\t\t\t\t// Webkit reports incorrect bounding rects in Columns\n\t\t\t\t\tlet newRange = new Range();\n\t\t\t\t\tnewRange.selectNode(el);\n\t\t\t\t\tposition = newRange.getBoundingClientRect();\n\t\t\t\t} else {\n\t\t\t\t\tposition = el.getBoundingClientRect();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (position) {\n\t\t\ttargetPos.left = position.left;\n\t\t\ttargetPos.top = position.top;\n\t\t}\n\n\t\treturn targetPos;\n\t}\n\n\t/**\n\t * Append a stylesheet link to the document head\n\t * @param {string} src url\n\t */\n\taddStylesheet(src) {\n\t\treturn new Promise(function(resolve, reject){\n\t\t\tvar $stylesheet;\n\t\t\tvar ready = false;\n\n\t\t\tif(!this.document) {\n\t\t\t\tresolve(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if link already exists\n\t\t\t$stylesheet = this.document.querySelector(\"link[href='\"+src+\"']\");\n\t\t\tif ($stylesheet) {\n\t\t\t\tresolve(true);\n\t\t\t\treturn; // already present\n\t\t\t}\n\n\t\t\t$stylesheet = this.document.createElement(\"link\");\n\t\t\t$stylesheet.type = \"text/css\";\n\t\t\t$stylesheet.rel = \"stylesheet\";\n\t\t\t$stylesheet.href = src;\n\t\t\t$stylesheet.onload = $stylesheet.onreadystatechange = function() {\n\t\t\t\tif ( !ready && (!this.readyState || this.readyState == \"complete\") ) {\n\t\t\t\t\tready = true;\n\t\t\t\t\t// Let apply\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t}, 1);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.document.head.appendChild($stylesheet);\n\n\t\t}.bind(this));\n\t}\n\n\t_getStylesheetNode(key) {\n\t\tvar styleEl;\n\t\tkey = \"epubjs-inserted-css-\" + (key || '');\n\n\t\tif(!this.document) return false;\n\n\t\t// Check if link already exists\n\t\tstyleEl = this.document.getElementById(key);\n\t\tif (!styleEl) {\n\t\t\tstyleEl = this.document.createElement(\"style\");\n\t\t\tstyleEl.id = key;\n\t\t\t// Append style element to head\n\t\t\tthis.document.head.appendChild(styleEl);\n\t\t}\n\t\treturn styleEl;\n\t}\n\n\t/**\n\t * Append stylesheet css\n\t * @param {string} serializedCss\n\t * @param {string} key If the key is the same, the CSS will be replaced instead of inserted\n\t */\n\taddStylesheetCss(serializedCss, key) {\n\t\tif(!this.document || !serializedCss) return false;\n\n\t\tvar styleEl;\n\t\tstyleEl = this._getStylesheetNode(key);\n\t\tstyleEl.innerHTML = serializedCss;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Append stylesheet rules to a generate stylesheet\n\t * Array: https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/insertRule\n\t * Object: https://github.com/desirable-objects/json-to-css\n\t * @param {array | object} rules\n\t * @param {string} key If the key is the same, the CSS will be replaced instead of inserted\n\t */\n\taddStylesheetRules(rules, key) {\n\t\tvar styleSheet;\n\n\t\tif(!this.document || !rules || rules.length === 0) return;\n\n\t\t// Grab style sheet\n\t\tstyleSheet = this._getStylesheetNode(key).sheet;\n\n\t\tif (Object.prototype.toString.call(rules) === \"[object Array]\") {\n\t\t\tfor (var i = 0, rl = rules.length; i < rl; i++) {\n\t\t\t\tvar j = 1, rule = rules[i], selector = rules[i][0], propStr = \"\";\n\t\t\t\t// If the second argument of a rule is an array of arrays, correct our variables.\n\t\t\t\tif (Object.prototype.toString.call(rule[1][0]) === \"[object Array]\") {\n\t\t\t\t\trule = rule[1];\n\t\t\t\t\tj = 0;\n\t\t\t\t}\n\n\t\t\t\tfor (var pl = rule.length; j < pl; j++) {\n\t\t\t\t\tvar prop = rule[j];\n\t\t\t\t\tpropStr += prop[0] + \":\" + prop[1] + (prop[2] ? \" !important\" : \"\") + \";\\n\";\n\t\t\t\t}\n\n\t\t\t\t// Insert CSS Rule\n\t\t\t\tstyleSheet.insertRule(selector + \"{\" + propStr + \"}\", styleSheet.cssRules.length);\n\t\t\t}\n\t\t} else {\n\t\t\tconst selectors = Object.keys(rules);\n\t\t\tselectors.forEach((selector) => {\n\t\t\t\tconst definition = rules[selector];\n\t\t\t\tif (Array.isArray(definition)) {\n\t\t\t\t\tdefinition.forEach((item) => {\n\t\t\t\t\t\tconst _rules = Object.keys(item);\n\t\t\t\t\t\tconst result = _rules.map((rule) => {\n\t\t\t\t\t\t\treturn `${rule}:${item[rule]}`;\n\t\t\t\t\t\t}).join(';');\n\t\t\t\t\t\tstyleSheet.insertRule(`${selector}{${result}}`, styleSheet.cssRules.length);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst _rules = Object.keys(definition);\n\t\t\t\t\tconst result = _rules.map((rule) => {\n\t\t\t\t\t\treturn `${rule}:${definition[rule]}`;\n\t\t\t\t\t}).join(';');\n\t\t\t\t\tstyleSheet.insertRule(`${selector}{${result}}`, styleSheet.cssRules.length);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Append a script tag to the document head\n\t * @param {string} src url\n\t * @returns {Promise} loaded\n\t */\n\taddScript(src) {\n\n\t\treturn new Promise(function(resolve, reject){\n\t\t\tvar $script;\n\t\t\tvar ready = false;\n\n\t\t\tif(!this.document) {\n\t\t\t\tresolve(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$script = this.document.createElement(\"script\");\n\t\t\t$script.type = \"text/javascript\";\n\t\t\t$script.async = true;\n\t\t\t$script.src = src;\n\t\t\t$script.onload = $script.onreadystatechange = function() {\n\t\t\t\tif ( !ready && (!this.readyState || this.readyState == \"complete\") ) {\n\t\t\t\t\tready = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t}, 1);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.document.head.appendChild($script);\n\n\t\t}.bind(this));\n\t}\n\n\t/**\n\t * Add a class to the contents container\n\t * @param {string} className\n\t */\n\taddClass(className) {\n\t\tvar content;\n\n\t\tif(!this.document) return;\n\n\t\tcontent = this.content || this.document.body;\n\n\t\tif (content) {\n\t\t\tcontent.classList.add(className);\n\t\t}\n\n\t}\n\n\t/**\n\t * Remove a class from the contents container\n\t * @param {string} removeClass\n\t */\n\tremoveClass(className) {\n\t\tvar content;\n\n\t\tif(!this.document) return;\n\n\t\tcontent = this.content || this.document.body;\n\n\t\tif (content) {\n\t\t\tcontent.classList.remove(className);\n\t\t}\n\n\t}\n\n\t/**\n\t * Add DOM event listeners\n\t * @private\n\t */\n\taddEventListeners(){\n\t\tif(!this.document) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._triggerEvent = this.triggerEvent.bind(this);\n\n\t\tDOM_EVENTS.forEach(function(eventName){\n\t\t\tthis.document.addEventListener(eventName, this._triggerEvent, { passive: true });\n\t\t}, this);\n\n\t}\n\n\t/**\n\t * Remove DOM event listeners\n\t * @private\n\t */\n\tremoveEventListeners(){\n\t\tif(!this.document) {\n\t\t\treturn;\n\t\t}\n\t\tDOM_EVENTS.forEach(function(eventName){\n\t\t\tthis.document.removeEventListener(eventName, this._triggerEvent, { passive: true });\n\t\t}, this);\n\t\tthis._triggerEvent = undefined;\n\t}\n\n\t/**\n\t * Emit passed browser events\n\t * @private\n\t */\n\ttriggerEvent(e){\n\t\tthis.emit(e.type, e);\n\t}\n\n\t/**\n\t * Add listener for text selection\n\t * @private\n\t */\n\taddSelectionListeners(){\n\t\tif(!this.document) {\n\t\t\treturn;\n\t\t}\n\t\tthis._onSelectionChange = this.onSelectionChange.bind(this);\n\t\tthis.document.addEventListener(\"selectionchange\", this._onSelectionChange, { passive: true });\n\t}\n\n\t/**\n\t * Remove listener for text selection\n\t * @private\n\t */\n\tremoveSelectionListeners(){\n\t\tif(!this.document) {\n\t\t\treturn;\n\t\t}\n\t\tthis.document.removeEventListener(\"selectionchange\", this._onSelectionChange, { passive: true });\n\t\tthis._onSelectionChange = undefined;\n\t}\n\n\t/**\n\t * Handle getting text on selection\n\t * @private\n\t */\n\tonSelectionChange(e){\n\t\tif (this.selectionEndTimeout) {\n\t\t\tclearTimeout(this.selectionEndTimeout);\n\t\t}\n\t\tthis.selectionEndTimeout = setTimeout(function() {\n\t\t\tvar selection = this.window.getSelection();\n\t\t\tthis.triggerSelectedEvent(selection);\n\t\t}.bind(this), 250);\n\t}\n\n\t/**\n\t * Emit event on text selection\n\t * @private\n\t */\n\ttriggerSelectedEvent(selection){\n\t\tvar range, cfirange;\n\n\t\tif (selection && selection.rangeCount > 0) {\n\t\t\trange = selection.getRangeAt(0);\n\t\t\tif(!range.collapsed) {\n\t\t\t\t// cfirange = this.section.cfiFromRange(range);\n\t\t\t\tcfirange = new EpubCFI(range, this.cfiBase).toString();\n\t\t\t\tthis.emit(EVENTS.CONTENTS.SELECTED, cfirange);\n\t\t\t\tthis.emit(EVENTS.CONTENTS.SELECTED_RANGE, range);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get a Dom Range from EpubCFI\n\t * @param {EpubCFI} _cfi\n\t * @param {string} [ignoreClass]\n\t * @returns {Range} range\n\t */\n\trange(_cfi, ignoreClass){\n\t\tvar cfi = new EpubCFI(_cfi);\n\t\treturn cfi.toRange(this.document, ignoreClass);\n\t}\n\n\t/**\n\t * Get an EpubCFI from a Dom Range\n\t * @param {Range} range\n\t * @param {string} [ignoreClass]\n\t * @returns {EpubCFI} cfi\n\t */\n\tcfiFromRange(range, ignoreClass){\n\t\treturn new EpubCFI(range, this.cfiBase, ignoreClass).toString();\n\t}\n\n\t/**\n\t * Get an EpubCFI from a Dom node\n\t * @param {node} node\n\t * @param {string} [ignoreClass]\n\t * @returns {EpubCFI} cfi\n\t */\n\tcfiFromNode(node, ignoreClass){\n\t\treturn new EpubCFI(node, this.cfiBase, ignoreClass).toString();\n\t}\n\n\t// TODO: find where this is used - remove?\n\tmap(layout){\n\t\tvar map = new Mapping(layout);\n\t\treturn map.section();\n\t}\n\n\t/**\n\t * Size the contents to a given width and height\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n\tsize(width, height){\n\t\tvar viewport = { scale: 1.0, scalable: \"no\" };\n\n\t\tthis.layoutStyle(\"scrolling\");\n\n\t\tif (width >= 0) {\n\t\t\tthis.width(width);\n\t\t\tviewport.width = width;\n\t\t\tthis.css(\"padding\", \"0 \"+(width/12)+\"px\");\n\t\t}\n\n\t\tif (height >= 0) {\n\t\t\tthis.height(height);\n\t\t\tviewport.height = height;\n\t\t}\n\n\t\tthis.css(\"margin\", \"0\");\n\t\tthis.css(\"box-sizing\", \"border-box\");\n\n\n\t\tthis.viewport(viewport);\n\t}\n\n\t/**\n\t * Apply columns to the contents for pagination\n\t * @param {number} width\n\t * @param {number} height\n\t * @param {number} columnWidth\n\t * @param {number} gap\n\t */\n\tcolumns(width, height, columnWidth, gap, dir){\n\t\tlet COLUMN_AXIS = prefixed(\"column-axis\");\n\t\tlet COLUMN_GAP = prefixed(\"column-gap\");\n\t\tlet COLUMN_WIDTH = prefixed(\"column-width\");\n\t\tlet COLUMN_FILL = prefixed(\"column-fill\");\n\n\t\tlet writingMode = this.writingMode();\n\t\tlet axis = (writingMode.indexOf(\"vertical\") === 0) ? \"vertical\" : \"horizontal\";\n\n\t\tthis.layoutStyle(\"paginated\");\n\n\t\tif (dir === \"rtl\" && axis === \"horizontal\") {\n\t\t\tthis.direction(dir);\n\t\t}\n\n\t\tthis.width(width);\n\t\tthis.height(height);\n\n\t\t// Deal with Mobile trying to scale to viewport\n\t\tthis.viewport({ width: width, height: height, scale: 1.0, scalable: \"no\" });\n\n\t\t// TODO: inline-block needs more testing\n\t\t// Fixes Safari column cut offs, but causes RTL issues\n\t\t// this.css(\"display\", \"inline-block\");\n\n\t\tthis.css(\"overflow-y\", \"hidden\");\n\t\tthis.css(\"margin\", \"0\", true);\n\n\t\tif (axis === \"vertical\") {\n\t\t\tthis.css(\"padding-top\", (gap / 2) + \"px\", true);\n\t\t\tthis.css(\"padding-bottom\", (gap / 2) + \"px\", true);\n\t\t\tthis.css(\"padding-left\", \"20px\");\n\t\t\tthis.css(\"padding-right\", \"20px\");\n\t\t\tthis.css(COLUMN_AXIS, \"vertical\");\n\t\t} else {\n\t\t\tthis.css(\"padding-top\", \"20px\");\n\t\t\tthis.css(\"padding-bottom\", \"20px\");\n\t\t\tthis.css(\"padding-left\", (gap / 2) + \"px\", true);\n\t\t\tthis.css(\"padding-right\", (gap / 2) + \"px\", true);\n\t\t\tthis.css(COLUMN_AXIS, \"horizontal\");\n\t\t}\n\n\t\tthis.css(\"box-sizing\", \"border-box\");\n\t\tthis.css(\"max-width\", \"inherit\");\n\n\t\tthis.css(COLUMN_FILL, \"auto\");\n\n\t\tthis.css(COLUMN_GAP, gap+\"px\");\n\t\tthis.css(COLUMN_WIDTH, columnWidth+\"px\");\n\n\t\t// Fix glyph clipping in WebKit\n\t\t// https://github.com/futurepress/epub.js/issues/983\n\t\tthis.css(\"-webkit-line-box-contain\", \"block glyphs replaced\");\n\t}\n\n\t/**\n\t * Scale contents from center\n\t * @param {number} scale\n\t * @param {number} offsetX\n\t * @param {number} offsetY\n\t */\n\tscaler(scale, offsetX, offsetY){\n\t\tvar scaleStr = \"scale(\" + scale + \")\";\n\t\tvar translateStr = \"\";\n\t\t// this.css(\"position\", \"absolute\"));\n\t\tthis.css(\"transform-origin\", \"top left\");\n\n\t\tif (offsetX >= 0 || offsetY >= 0) {\n\t\t\ttranslateStr = \" translate(\" + (offsetX || 0 )+ \"px, \" + (offsetY || 0 )+ \"px )\";\n\t\t}\n\n\t\tthis.css(\"transform\", scaleStr + translateStr);\n\t}\n\n\t/**\n\t * Fit contents into a fixed width and height\n\t * @param {number} width\n\t * @param {number} height\n\t */\n\tfit(width, height, section){\n\t\tvar viewport = this.viewport();\n\t\tvar viewportWidth = parseInt(viewport.width);\n\t\tvar viewportHeight = parseInt(viewport.height);\n\t\tvar widthScale = width / viewportWidth;\n\t\tvar heightScale = height / viewportHeight;\n\t\tvar scale = widthScale < heightScale ? widthScale : heightScale;\n\n\t\t// the translate does not work as intended, elements can end up unaligned\n\t\t// var offsetY = (height - (viewportHeight * scale)) / 2;\n\t\t// var offsetX = 0;\n\t\t// if (this.sectionIndex % 2 === 1) {\n\t\t// \toffsetX = width - (viewportWidth * scale);\n\t\t// }\n\n\t\tthis.layoutStyle(\"paginated\");\n\n\t\t// scale needs width and height to be set\n\t\tthis.width(viewportWidth);\n\t\tthis.height(viewportHeight);\n\t\tthis.overflow(\"hidden\");\n\n\t\t// Scale to the correct size\n\t\tthis.scaler(scale, 0, 0);\n\t\t// this.scaler(scale, offsetX > 0 ? offsetX : 0, offsetY);\n\n\t\t// background images are not scaled by transform\n\t\tthis.css(\"background-size\", viewportWidth * scale + \"px \" + viewportHeight * scale + \"px\");\n\n\t\tthis.css(\"background-color\", \"transparent\");\n\t\tif (section && section.properties.includes(\"page-spread-left\")) {\n\t\t\t// set margin since scale is weird\n\t\t\tvar marginLeft = width - (viewportWidth * scale);\n\t\t\tthis.css(\"margin-left\", marginLeft + \"px\");\n\t\t}\n\t}\n\n\t/**\n\t * Set the direction of the text\n\t * @param {string} [dir=\"ltr\"] \"rtl\" | \"ltr\"\n\t */\n\tdirection(dir) {\n\t\tif (this.documentElement) {\n\t\t\tthis.documentElement.style[\"direction\"] = dir;\n\t\t}\n\t}\n\n\tmapPage(cfiBase, layout, start, end, dev) {\n\t\tvar mapping = new Mapping(layout, dev);\n\n\t\treturn mapping.page(this, cfiBase, start, end);\n\t}\n\n\t/**\n\t * Emit event when link in content is clicked\n\t * @private\n\t */\n\tlinksHandler() {\n\t\treplaceLinks(this.content, (href) => {\n\t\t\tthis.emit(EVENTS.CONTENTS.LINK_CLICKED, href);\n\t\t});\n\t}\n\n\t/**\n\t * Set the writingMode of the text\n\t * @param {string} [mode=\"horizontal-tb\"] \"horizontal-tb\" | \"vertical-rl\" | \"vertical-lr\"\n\t */\n\twritingMode(mode) {\n\t\tlet WRITING_MODE = prefixed(\"writing-mode\");\n\n\t\tif (mode && this.documentElement) {\n\t\t\tthis.documentElement.style[WRITING_MODE] = mode;\n\t\t}\n\n\t\treturn this.window.getComputedStyle(this.documentElement)[WRITING_MODE] || '';\n\t}\n\n\t/**\n\t * Set the layoutStyle of the content\n\t * @param {string} [style=\"paginated\"] \"scrolling\" | \"paginated\"\n\t * @private\n\t */\n\tlayoutStyle(style) {\n\n\t\tif (style) {\n\t\t\tthis._layoutStyle = style;\n\t\t\tnavigator.epubReadingSystem.layoutStyle = this._layoutStyle;\n\t\t}\n\n\t\treturn this._layoutStyle || \"paginated\";\n\t}\n\n\t/**\n\t * Add the epubReadingSystem object to the navigator\n\t * @param {string} name\n\t * @param {string} version\n\t * @private\n\t */\n\tepubReadingSystem(name, version) {\n\t\tnavigator.epubReadingSystem = {\n\t\t\tname: name,\n\t\t\tversion: version,\n\t\t\tlayoutStyle: this.layoutStyle(),\n\t\t\thasFeature: function (feature) {\n\t\t\t\tswitch (feature) {\n\t\t\t\t\tcase \"dom-manipulation\":\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase \"layout-changes\":\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase \"touch-events\":\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase \"mouse-events\":\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase \"keyboard-events\":\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tcase \"spine-scripting\":\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn navigator.epubReadingSystem;\n\t}\n\n\tdestroy() {\n\t\t// this.document.removeEventListener('transitionend', this._resizeCheck);\n\n\t\tthis.removeListeners();\n\n\t}\n}\n\nEventEmitter(Contents.prototype);\n\nexport default Contents;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","import path from \"path-webpack\";\n\n/**\n * Creates a Path object for parsing and manipulation of a path strings\n *\n * Uses a polyfill for Nodejs path: https://nodejs.org/api/path.html\n * @param\t{string} pathString\ta url string (relative or absolute)\n * @class\n */\nclass Path {\n\tconstructor(pathString) {\n\t\tvar protocol;\n\t\tvar parsed;\n\n\t\tprotocol = pathString.indexOf(\"://\");\n\t\tif (protocol > -1) {\n\t\t\tpathString = new URL(pathString).pathname;\n\t\t}\n\n\t\tparsed = this.parse(pathString);\n\n\t\tthis.path = pathString;\n\n\t\tif (this.isDirectory(pathString)) {\n\t\t\tthis.directory = pathString;\n\t\t} else {\n\t\t\tthis.directory = parsed.dir + \"/\";\n\t\t}\n\n\t\tthis.filename = parsed.base;\n\t\tthis.extension = parsed.ext.slice(1);\n\n\t}\n\n\t/**\n\t * Parse the path: https://nodejs.org/api/path.html#path_path_parse_path\n\t * @param\t{string} what\n\t * @returns {object}\n\t */\n\tparse (what) {\n\t\treturn path.parse(what);\n\t}\n\n\t/**\n\t * @param\t{string} what\n\t * @returns {boolean}\n\t */\n\tisAbsolute (what) {\n\t\treturn path.isAbsolute(what || this.path);\n\t}\n\n\t/**\n\t * Check if path ends with a directory\n\t * @param\t{string} what\n\t * @returns {boolean}\n\t */\n\tisDirectory (what) {\n\t\treturn (what.charAt(what.length-1) === \"/\");\n\t}\n\n\t/**\n\t * Resolve a path against the directory of the Path\n\t *\n\t * https://nodejs.org/api/path.html#path_path_resolve_paths\n\t * @param\t{string} what\n\t * @returns {string} resolved\n\t */\n\tresolve (what) {\n\t\treturn path.resolve(this.directory, what);\n\t}\n\n\t/**\n\t * Resolve a path relative to the directory of the Path\n\t *\n\t * https://nodejs.org/api/path.html#path_path_relative_from_to\n\t * @param\t{string} what\n\t * @returns {string} relative\n\t */\n\trelative (what) {\n\t\tvar isAbsolute = what && (what.indexOf(\"://\") > -1);\n\n\t\tif (isAbsolute) {\n\t\t\treturn what;\n\t\t}\n\n\t\treturn path.relative(this.directory, what);\n\t}\n\n\tsplitPath(filename) {\n\t\treturn this.splitPathRe.exec(filename).slice(1);\n\t}\n\n\t/**\n\t * Return the path string\n\t * @returns {string} path\n\t */\n\ttoString () {\n\t\treturn this.path;\n\t}\n}\n\nexport default Path;\n","\"use strict\";\n\nvar isValue = require(\"../value/is\");\n\n// prettier-ignore\nvar possibleTypes = { \"object\": true, \"function\": true, \"undefined\": true /* document.all */ };\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) return false;\n\treturn hasOwnProperty.call(possibleTypes, typeof value);\n};\n","\"use strict\";\n\nvar _undefined = require(\"../function/noop\")(); // Support ES3 engines\n\nmodule.exports = function (val) { return val !== _undefined && val !== null; };\n","\"use strict\";\n\nvar isPrototype = require(\"../prototype/is\");\n\nmodule.exports = function (value) {\n\tif (typeof value !== \"function\") return false;\n\n\tif (!hasOwnProperty.call(value, \"length\")) return false;\n\n\ttry {\n\t\tif (typeof value.length !== \"number\") return false;\n\t\tif (typeof value.call !== \"function\") return false;\n\t\tif (typeof value.apply !== \"function\") return false;\n\t} catch (error) {\n\t\treturn false;\n\t}\n\n\treturn !isPrototype(value);\n};\n","\"use strict\";\n\nvar isValue = require(\"../is-value\");\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) { return keys(isValue(object) ? Object(object) : object); };\n","'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.keys : require(\"./shim\");\n","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.JSZip = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nexports.decode = function(input) {\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0, resultIndex = 0;\n\n var dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9+/=]/g, \"\");\n\n var totalLength = input.length * 3 / 4;\n if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n var output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n\n},{\"./support\":30,\"./utils\":32}],2:[function(require,module,exports){\n\"use strict\";\n\nvar external = require(\"./external\");\nvar DataWorker = require(\"./stream/DataWorker\");\nvar Crc32Probe = require(\"./stream/Crc32Probe\");\nvar DataLengthProbe = require(\"./stream/DataLengthProbe\");\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nfunction CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n}\n\nCompressedObject.prototype = {\n /**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\n getContentWorker: function () {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new DataLengthProbe(\"data_length\"));\n\n var that = this;\n worker.on(\"end\", function () {\n if (this.streamInfo[\"data_length\"] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n },\n /**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\n getCompressedWorker: function () {\n return new DataWorker(external.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression)\n ;\n }\n};\n\n/**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\nCompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker\n .pipe(new Crc32Probe())\n .pipe(new DataLengthProbe(\"uncompressedSize\"))\n .pipe(compression.compressWorker(compressionOptions))\n .pipe(new DataLengthProbe(\"compressedSize\"))\n .withStreamInfo(\"compression\", compression);\n};\n\nmodule.exports = CompressedObject;\n\n},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(require,module,exports){\n\"use strict\";\n\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nexports.STORE = {\n magic: \"\\x00\\x00\",\n compressWorker : function () {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker : function () {\n return new GenericWorker(\"STORE decompression\");\n }\n};\nexports.DEFLATE = require(\"./flate\");\n\n},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"./utils\");\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for(var n =0; n < 256; n++){\n c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable, end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n var t = crcTable, end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\nmodule.exports = function crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n\n if(isArray) {\n return crc32(crc|0, input, input.length, 0);\n } else {\n return crc32str(crc|0, input, input.length, 0);\n }\n};\n\n},{\"./utils\":32}],5:[function(require,module,exports){\n\"use strict\";\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = true;\nexports.date = null;\nexports.compression = null;\nexports.compressionOptions = null;\nexports.comment = null;\nexports.unixPermissions = null;\nexports.dosPermissions = null;\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\n\n// load the global object first:\n// - it should be better integrated in the system (unhandledRejection in node)\n// - the environment may have a custom Promise implementation (see zone.js)\nvar ES6Promise = null;\nif (typeof Promise !== \"undefined\") {\n ES6Promise = Promise;\n} else {\n ES6Promise = require(\"lie\");\n}\n\n/**\n * Let the user use/change some implementations.\n */\nmodule.exports = {\n Promise: ES6Promise\n};\n\n},{\"lie\":37}],7:[function(require,module,exports){\n\"use strict\";\nvar USE_TYPEDARRAY = (typeof Uint8Array !== \"undefined\") && (typeof Uint16Array !== \"undefined\") && (typeof Uint32Array !== \"undefined\");\n\nvar pako = require(\"pako\");\nvar utils = require(\"./utils\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nvar ARRAY_TYPE = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\n\nexports.magic = \"\\x08\\x00\";\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nfunction FlateWorker(action, options) {\n GenericWorker.call(this, \"FlateWorker/\" + action);\n\n this._pako = null;\n this._pakoAction = action;\n this._pakoOptions = options;\n // the `meta` object from the last chunk received\n // this allow this worker to pass around metadata\n this.meta = {};\n}\n\nutils.inherits(FlateWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nFlateWorker.prototype.processChunk = function (chunk) {\n this.meta = chunk.meta;\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false);\n};\n\n/**\n * @see GenericWorker.flush\n */\nFlateWorker.prototype.flush = function () {\n GenericWorker.prototype.flush.call(this);\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push([], true);\n};\n/**\n * @see GenericWorker.cleanUp\n */\nFlateWorker.prototype.cleanUp = function () {\n GenericWorker.prototype.cleanUp.call(this);\n this._pako = null;\n};\n\n/**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\nFlateWorker.prototype._createPako = function () {\n this._pako = new pako[this._pakoAction]({\n raw: true,\n level: this._pakoOptions.level || -1 // default compression\n });\n var self = this;\n this._pako.onData = function(data) {\n self.push({\n data : data,\n meta : self.meta\n });\n };\n};\n\nexports.compressWorker = function (compressionOptions) {\n return new FlateWorker(\"Deflate\", compressionOptions);\n};\nexports.uncompressWorker = function () {\n return new FlateWorker(\"Inflate\", {});\n};\n\n},{\"./stream/GenericWorker\":28,\"./utils\":32,\"pako\":38}],8:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar GenericWorker = require(\"../stream/GenericWorker\");\nvar utf8 = require(\"../utf8\");\nvar crc32 = require(\"../crc32\");\nvar signature = require(\"../signature\");\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\", i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions) {\n // the dir flag is already set for compatibility\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n var file = streamInfo[\"file\"],\n compression = streamInfo[\"compression\"],\n useCustomEncoding = encodeFileName !== utf8.utf8encode,\n encodedFileName = utils.transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n comment = file.comment,\n encodedComment = utils.transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir = file.dir,\n date = file.date;\n\n\n var dataInfo = {\n crc32 : 0,\n compressedSize : 0,\n uncompressedSize : 0\n };\n\n // if the content is streamed, the sizes/crc32 are only available AFTER\n // the end of the stream.\n if (!streamedContent || streamingEnded) {\n dataInfo.crc32 = streamInfo[\"crc32\"];\n dataInfo.compressedSize = streamInfo[\"compressedSize\"];\n dataInfo.uncompressedSize = streamInfo[\"uncompressedSize\"];\n }\n\n var bitflag = 0;\n if (streamedContent) {\n // Bit 3: the sizes/crc32 are set to zero in the local header.\n // The correct values are put in the data descriptor immediately\n // following the compressed data.\n bitflag |= 0x0008;\n }\n if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n // Bit 11: Language encoding flag (EFS).\n bitflag |= 0x0800;\n }\n\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getUTCHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getUTCMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getUTCSeconds() / 2;\n\n dosDate = date.getUTCFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getUTCMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getUTCDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(crc32(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n header += decToHex(bitflag, 2);\n // compression method\n header += compression.magic;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(dataInfo.crc32, 4);\n // compressed size\n header += decToHex(dataInfo.compressedSize, 4);\n // uncompressed size\n header += decToHex(dataInfo.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = signature.CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord\n };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n var dirEnd = \"\";\n var encodedComment = utils.transformTo(\"string\", encodeFileName(comment));\n\n // end of central dir signature\n dirEnd = signature.CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(entriesCount, 2) +\n // total number of entries in the central directory\n decToHex(entriesCount, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n var descriptor = \"\";\n descriptor = signature.DATA_DESCRIPTOR +\n // crc-32 4 bytes\n decToHex(streamInfo[\"crc32\"], 4) +\n // compressed size 4 bytes\n decToHex(streamInfo[\"compressedSize\"], 4) +\n // uncompressed size 4 bytes\n decToHex(streamInfo[\"uncompressedSize\"], 4);\n\n return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nfunction ZipFileWorker(streamFiles, comment, platform, encodeFileName) {\n GenericWorker.call(this, \"ZipFileWorker\");\n // The number of bytes written so far. This doesn't count accumulated chunks.\n this.bytesWritten = 0;\n // The comment of the zip file\n this.zipComment = comment;\n // The platform \"generating\" the zip file.\n this.zipPlatform = platform;\n // the function to encode file names and comments.\n this.encodeFileName = encodeFileName;\n // Should we stream the content of the files ?\n this.streamFiles = streamFiles;\n // If `streamFiles` is false, we will need to accumulate the content of the\n // files to calculate sizes / crc32 (and write them *before* the content).\n // This boolean indicates if we are accumulating chunks (it will change a lot\n // during the lifetime of this worker).\n this.accumulate = false;\n // The buffer receiving chunks when accumulating content.\n this.contentBuffer = [];\n // The list of generated directory records.\n this.dirRecords = [];\n // The offset (in bytes) from the beginning of the zip file for the current source.\n this.currentSourceOffset = 0;\n // The total number of entries in this zip file.\n this.entriesCount = 0;\n // the name of the file currently being added, null when handling the end of the zip file.\n // Used for the emitted metadata.\n this.currentFile = null;\n\n\n\n this._sources = [];\n}\nutils.inherits(ZipFileWorker, GenericWorker);\n\n/**\n * @see GenericWorker.push\n */\nZipFileWorker.prototype.push = function (chunk) {\n\n var currentFilePercent = chunk.meta.percent || 0;\n var entriesCount = this.entriesCount;\n var remainingFiles = this._sources.length;\n\n if(this.accumulate) {\n this.contentBuffer.push(chunk);\n } else {\n this.bytesWritten += chunk.data.length;\n\n GenericWorker.prototype.push.call(this, {\n data : chunk.data,\n meta : {\n currentFile : this.currentFile,\n percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n }\n });\n }\n};\n\n/**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\nZipFileWorker.prototype.openedSource = function (streamInfo) {\n this.currentSourceOffset = this.bytesWritten;\n this.currentFile = streamInfo[\"file\"].name;\n\n var streamedContent = this.streamFiles && !streamInfo[\"file\"].dir;\n\n // don't stream folders (because they don't have any content)\n if(streamedContent) {\n var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n } else {\n // we need to wait for the whole file before pushing anything\n this.accumulate = true;\n }\n};\n\n/**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\nZipFileWorker.prototype.closedSource = function (streamInfo) {\n this.accumulate = false;\n var streamedContent = this.streamFiles && !streamInfo[\"file\"].dir;\n var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n this.dirRecords.push(record.dirRecord);\n if(streamedContent) {\n // after the streamed file, we put data descriptors\n this.push({\n data : generateDataDescriptors(streamInfo),\n meta : {percent:100}\n });\n } else {\n // the content wasn't streamed, we need to push everything now\n // first the file record, then the content\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n while(this.contentBuffer.length) {\n this.push(this.contentBuffer.shift());\n }\n }\n this.currentFile = null;\n};\n\n/**\n * @see GenericWorker.flush\n */\nZipFileWorker.prototype.flush = function () {\n\n var localDirLength = this.bytesWritten;\n for(var i = 0; i < this.dirRecords.length; i++) {\n this.push({\n data : this.dirRecords[i],\n meta : {percent:100}\n });\n }\n var centralDirLength = this.bytesWritten - localDirLength;\n\n var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n this.push({\n data : dirEnd,\n meta : {percent:100}\n });\n};\n\n/**\n * Prepare the next source to be read.\n */\nZipFileWorker.prototype.prepareNextSource = function () {\n this.previous = this._sources.shift();\n this.openedSource(this.previous.streamInfo);\n if (this.isPaused) {\n this.previous.pause();\n } else {\n this.previous.resume();\n }\n};\n\n/**\n * @see GenericWorker.registerPrevious\n */\nZipFileWorker.prototype.registerPrevious = function (previous) {\n this._sources.push(previous);\n var self = this;\n\n previous.on(\"data\", function (chunk) {\n self.processChunk(chunk);\n });\n previous.on(\"end\", function () {\n self.closedSource(self.previous.streamInfo);\n if(self._sources.length) {\n self.prepareNextSource();\n } else {\n self.end();\n }\n });\n previous.on(\"error\", function (e) {\n self.error(e);\n });\n return this;\n};\n\n/**\n * @see GenericWorker.resume\n */\nZipFileWorker.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this.previous && this._sources.length) {\n this.prepareNextSource();\n return true;\n }\n if (!this.previous && !this._sources.length && !this.generatedError) {\n this.end();\n return true;\n }\n};\n\n/**\n * @see GenericWorker.error\n */\nZipFileWorker.prototype.error = function (e) {\n var sources = this._sources;\n if(!GenericWorker.prototype.error.call(this, e)) {\n return false;\n }\n for(var i = 0; i < sources.length; i++) {\n try {\n sources[i].error(e);\n } catch(e) {\n // the `error` exploded, nothing to do\n }\n }\n return true;\n};\n\n/**\n * @see GenericWorker.lock\n */\nZipFileWorker.prototype.lock = function () {\n GenericWorker.prototype.lock.call(this);\n var sources = this._sources;\n for(var i = 0; i < sources.length; i++) {\n sources[i].lock();\n }\n};\n\nmodule.exports = ZipFileWorker;\n\n},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(require,module,exports){\n\"use strict\";\n\nvar compressions = require(\"../compressions\");\nvar ZipFileWorker = require(\"./ZipFileWorker\");\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n var compressionName = fileCompression || zipCompression;\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nexports.generateWorker = function (zip, options, comment) {\n\n var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n var entriesCount = 0;\n try {\n\n zip.forEach(function (relativePath, file) {\n entriesCount++;\n var compression = getCompression(file.options.compression, options.compression);\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n var dir = file.dir, date = file.date;\n\n file._compressWorker(compression, compressionOptions)\n .withStreamInfo(\"file\", {\n name : relativePath,\n dir : dir,\n date : date,\n comment : file.comment || \"\",\n unixPermissions : file.unixPermissions,\n dosPermissions : file.dosPermissions\n })\n .pipe(zipFileWorker);\n });\n zipFileWorker.entriesCount = entriesCount;\n } catch (e) {\n zipFileWorker.error(e);\n }\n\n return zipFileWorker;\n};\n\n},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(require,module,exports){\n\"use strict\";\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nfunction JSZip() {\n // if this constructor is used without `new`, it adds `new` before itself:\n if(!(this instanceof JSZip)) {\n return new JSZip();\n }\n\n if(arguments.length) {\n throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n // NOTE: we use a null prototype because we do not\n // want filenames like \"toString\" coming from a zip file\n // to overwrite methods and attributes in a normal Object.\n this.files = Object.create(null);\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n this.clone = function() {\n var newObj = new JSZip();\n for (var i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n}\nJSZip.prototype = require(\"./object\");\nJSZip.prototype.loadAsync = require(\"./load\");\nJSZip.support = require(\"./support\");\nJSZip.defaults = require(\"./defaults\");\n\n// TODO find a better way to handle this version,\n// a require('package.json').version doesn't work with webpack, see #327\nJSZip.version = \"3.10.1\";\n\nJSZip.loadAsync = function (content, options) {\n return new JSZip().loadAsync(content, options);\n};\n\nJSZip.external = require(\"./external\");\nmodule.exports = JSZip;\n\n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(require,module,exports){\n\"use strict\";\nvar utils = require(\"./utils\");\nvar external = require(\"./external\");\nvar utf8 = require(\"./utf8\");\nvar ZipEntries = require(\"./zipEntries\");\nvar Crc32Probe = require(\"./stream/Crc32Probe\");\nvar nodejsUtils = require(\"./nodejsUtils\");\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n return new external.Promise(function (resolve, reject) {\n var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n worker.on(\"error\", function (e) {\n reject(e);\n })\n .on(\"end\", function () {\n if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n } else {\n resolve();\n }\n })\n .resume();\n });\n}\n\nmodule.exports = function (data, options) {\n var zip = this;\n options = utils.extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString: false,\n createFolders: false,\n decodeFileName: utf8.utf8decode\n });\n\n if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n return external.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\"));\n }\n\n return utils.prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n .then(function (data) {\n var zipEntries = new ZipEntries(options);\n zipEntries.load(data);\n return zipEntries;\n }).then(function checkCRC32(zipEntries) {\n var promises = [external.Promise.resolve(zipEntries)];\n var files = zipEntries.files;\n if (options.checkCRC32) {\n for (var i = 0; i < files.length; i++) {\n promises.push(checkEntryCRC32(files[i]));\n }\n }\n return external.Promise.all(promises);\n }).then(function addFiles(results) {\n var zipEntries = results.shift();\n var files = zipEntries.files;\n for (var i = 0; i < files.length; i++) {\n var input = files[i];\n\n var unsafeName = input.fileNameStr;\n var safeName = utils.resolve(input.fileNameStr);\n\n zip.file(safeName, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment: input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions: input.unixPermissions,\n dosPermissions: input.dosPermissions,\n createFolders: options.createFolders\n });\n if (!input.dir) {\n zip.file(safeName).unsafeOriginalName = unsafeName;\n }\n }\n if (zipEntries.zipComment.length) {\n zip.comment = zipEntries.zipComment;\n }\n\n return zip;\n });\n};\n\n},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar GenericWorker = require(\"../stream/GenericWorker\");\n\n/**\n * A worker that use a nodejs stream as source.\n * @constructor\n * @param {String} filename the name of the file entry for this stream.\n * @param {Readable} stream the nodejs stream.\n */\nfunction NodejsStreamInputAdapter(filename, stream) {\n GenericWorker.call(this, \"Nodejs stream input adapter for \" + filename);\n this._upstreamEnded = false;\n this._bindStream(stream);\n}\n\nutils.inherits(NodejsStreamInputAdapter, GenericWorker);\n\n/**\n * Prepare the stream and bind the callbacks on it.\n * Do this ASAP on node 0.10 ! A lazy binding doesn't always work.\n * @param {Stream} stream the nodejs stream to use.\n */\nNodejsStreamInputAdapter.prototype._bindStream = function (stream) {\n var self = this;\n this._stream = stream;\n stream.pause();\n stream\n .on(\"data\", function (chunk) {\n self.push({\n data: chunk,\n meta : {\n percent : 0\n }\n });\n })\n .on(\"error\", function (e) {\n if(self.isPaused) {\n this.generatedError = e;\n } else {\n self.error(e);\n }\n })\n .on(\"end\", function () {\n if(self.isPaused) {\n self._upstreamEnded = true;\n } else {\n self.end();\n }\n });\n};\nNodejsStreamInputAdapter.prototype.pause = function () {\n if(!GenericWorker.prototype.pause.call(this)) {\n return false;\n }\n this._stream.pause();\n return true;\n};\nNodejsStreamInputAdapter.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if(this._upstreamEnded) {\n this.end();\n } else {\n this._stream.resume();\n }\n\n return true;\n};\n\nmodule.exports = NodejsStreamInputAdapter;\n\n},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(require,module,exports){\n\"use strict\";\n\nvar Readable = require(\"readable-stream\").Readable;\n\nvar utils = require(\"../utils\");\nutils.inherits(NodejsStreamOutputAdapter, Readable);\n\n/**\n* A nodejs stream using a worker as source.\n* @see the SourceWrapper in http://nodejs.org/api/stream.html\n* @constructor\n* @param {StreamHelper} helper the helper wrapping the worker\n* @param {Object} options the nodejs stream options\n* @param {Function} updateCb the update callback.\n*/\nfunction NodejsStreamOutputAdapter(helper, options, updateCb) {\n Readable.call(this, options);\n this._helper = helper;\n\n var self = this;\n helper.on(\"data\", function (data, meta) {\n if (!self.push(data)) {\n self._helper.pause();\n }\n if(updateCb) {\n updateCb(meta);\n }\n })\n .on(\"error\", function(e) {\n self.emit(\"error\", e);\n })\n .on(\"end\", function () {\n self.push(null);\n });\n}\n\n\nNodejsStreamOutputAdapter.prototype._read = function() {\n this._helper.resume();\n};\n\nmodule.exports = NodejsStreamOutputAdapter;\n\n},{\"../utils\":32,\"readable-stream\":16}],14:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = {\n /**\n * True if this is running in Nodejs, will be undefined in a browser.\n * In a browser, browserify won't include this file and the whole module\n * will be resolved an empty object.\n */\n isNode : typeof Buffer !== \"undefined\",\n /**\n * Create a new nodejs Buffer from an existing content.\n * @param {Object} data the data to pass to the constructor.\n * @param {String} encoding the encoding to use.\n * @return {Buffer} a new Buffer.\n */\n newBufferFrom: function(data, encoding) {\n if (Buffer.from && Buffer.from !== Uint8Array.from) {\n return Buffer.from(data, encoding);\n } else {\n if (typeof data === \"number\") {\n // Safeguard for old Node.js versions. On newer versions,\n // Buffer.from(number) / Buffer(number, encoding) already throw.\n throw new Error(\"The \\\"data\\\" argument must not be a number\");\n }\n return new Buffer(data, encoding);\n }\n },\n /**\n * Create a new nodejs Buffer with the specified size.\n * @param {Integer} size the size of the buffer.\n * @return {Buffer} a new Buffer.\n */\n allocBuffer: function (size) {\n if (Buffer.alloc) {\n return Buffer.alloc(size);\n } else {\n var buf = new Buffer(size);\n buf.fill(0);\n return buf;\n }\n },\n /**\n * Find out if an object is a Buffer.\n * @param {Object} b the object to test.\n * @return {Boolean} true if the object is a Buffer, false otherwise.\n */\n isBuffer : function(b){\n return Buffer.isBuffer(b);\n },\n\n isStream : function (obj) {\n return obj &&\n typeof obj.on === \"function\" &&\n typeof obj.pause === \"function\" &&\n typeof obj.resume === \"function\";\n }\n};\n\n},{}],15:[function(require,module,exports){\n\"use strict\";\nvar utf8 = require(\"./utf8\");\nvar utils = require(\"./utils\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\nvar StreamHelper = require(\"./stream/StreamHelper\");\nvar defaults = require(\"./defaults\");\nvar CompressedObject = require(\"./compressedObject\");\nvar ZipObject = require(\"./zipObject\");\nvar generate = require(\"./generate\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar NodejsStreamInputAdapter = require(\"./nodejs/NodejsStreamInputAdapter\");\n\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n // be sure sub folders exist\n var dataType = utils.getTypeOf(data),\n parent;\n\n\n /*\n * Correct options.\n */\n\n var o = utils.extend(originalOptions || {}, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) {\n o.compression = o.compression.toUpperCase();\n }\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n o.binary = !isUnicodeString;\n }\n\n\n var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n o.base64 = false;\n o.binary = true;\n data = \"\";\n o.compression = \"STORE\";\n dataType = \"string\";\n }\n\n /*\n * Convert content to fit.\n */\n\n var zipObjectContent = null;\n if (data instanceof CompressedObject || data instanceof GenericWorker) {\n zipObjectContent = data;\n } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n zipObjectContent = new NodejsStreamInputAdapter(name, data);\n } else {\n zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n }\n\n var object = new ZipObject(name, zipObjectContent, o);\n this.files[name] = object;\n /*\n TODO: we can't throw an exception because we have async promises\n (we can have a promise of a Date() for example) but returning a\n promise is useless because file(name, data) returns the JSZip\n object for chaining. Should we break that to allow the user\n to catch the error ?\n\n return external.Promise.resolve(zipObjectContent)\n .then(function () {\n return object;\n });\n */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) === \"/\") {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf(\"/\");\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) !== \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders) {\n createFolders = (typeof createFolders !== \"undefined\") ? createFolders : defaults.createFolders;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders\n });\n }\n return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n// return the actual prototype of JSZip\nvar out = {\n /**\n * @see loadAsync\n */\n load: function() {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n },\n\n\n /**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\n forEach: function(cb) {\n var filename, relativePath, file;\n // ignore warning about unwanted properties because this.files is a null prototype object\n /* eslint-disable-next-line guard-for-in */\n for (filename in this.files) {\n file = this.files[filename];\n relativePath = filename.slice(this.root.length, filename.length);\n if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n }\n }\n },\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter: function(search) {\n var result = [];\n this.forEach(function (relativePath, entry) {\n if (search(relativePath, entry)) { // the file matches the function\n result.push(entry);\n }\n\n });\n return result;\n },\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file: function(name, data, o) {\n if (arguments.length === 1) {\n if (isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n var obj = this.files[this.root + name];\n if (obj && !obj.dir) {\n return obj;\n } else {\n return null;\n }\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n },\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder: function(arg) {\n if (!arg) {\n return this;\n }\n\n if (isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n },\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove: function(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) !== \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n },\n\n /**\n * @deprecated This method has been removed in JSZip 3.0, please check the upgrade guide.\n */\n generate: function() {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n },\n\n /**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\n generateInternalStream: function(options) {\n var worker, opts = {};\n try {\n opts = utils.extend(options || {}, {\n streamFiles: false,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: \"application/zip\",\n encodeFileName: utf8.utf8encode\n });\n\n opts.type = opts.type.toLowerCase();\n opts.compression = opts.compression.toUpperCase();\n\n // \"binarystring\" is preferred but the internals use \"string\".\n if(opts.type === \"binarystring\") {\n opts.type = \"string\";\n }\n\n if (!opts.type) {\n throw new Error(\"No output type specified.\");\n }\n\n utils.checkSupport(opts.type);\n\n // accept nodejs `process.platform`\n if(\n opts.platform === \"darwin\" ||\n opts.platform === \"freebsd\" ||\n opts.platform === \"linux\" ||\n opts.platform === \"sunos\"\n ) {\n opts.platform = \"UNIX\";\n }\n if (opts.platform === \"win32\") {\n opts.platform = \"DOS\";\n }\n\n var comment = opts.comment || this.comment || \"\";\n worker = generate.generateWorker(this, opts, comment);\n } catch (e) {\n worker = new GenericWorker(\"error\");\n worker.error(e);\n }\n return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n },\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateAsync: function(options, onUpdate) {\n return this.generateInternalStream(options).accumulate(onUpdate);\n },\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateNodeStream: function(options, onUpdate) {\n options = options || {};\n if (!options.type) {\n options.type = \"nodebuffer\";\n }\n return this.generateInternalStream(options).toNodejsStream(onUpdate);\n }\n};\nmodule.exports = out;\n\n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(require,module,exports){\n\"use strict\";\n/*\n * This file is used by module bundlers (browserify/webpack/etc) when\n * including a stream implementation. We use \"readable-stream\" to get a\n * consistent behavior between nodejs versions but bundlers often have a shim\n * for \"stream\". Using this shim greatly improve the compatibility and greatly\n * reduce the final size of the bundle (only one stream implementation, not\n * two).\n */\nmodule.exports = require(\"stream\");\n\n},{\"stream\":undefined}],17:[function(require,module,exports){\n\"use strict\";\nvar DataReader = require(\"./DataReader\");\nvar utils = require(\"../utils\");\n\nfunction ArrayReader(data) {\n DataReader.call(this, data);\n for(var i = 0; i < this.data.length; i++) {\n data[i] = data[i] & 0xFF;\n }\n}\nutils.inherits(ArrayReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nArrayReader.prototype.byteAt = function(i) {\n return this.data[this.zero + i];\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nArrayReader.prototype.lastIndexOfSignature = function(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nArrayReader.prototype.readAndCheckSignature = function (sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n};\n/**\n * @see DataReader.readData\n */\nArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = ArrayReader;\n\n},{\"../utils\":32,\"./DataReader\":18}],18:[function(require,module,exports){\n\"use strict\";\nvar utils = require(\"../utils\");\n\nfunction DataReader(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\n this.index = 0;\n this.zero = 0;\n}\nDataReader.prototype = {\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset: function(offset) {\n this.checkIndex(this.index + offset);\n },\n /**\n * Check that the specified index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex: function(newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n },\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex: function(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n },\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip: function(n) {\n this.setIndex(this.index + n);\n },\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt: function() {\n // see implementations\n },\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt: function(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n },\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString: function(size) {\n return utils.transformTo(\"string\", this.readData(size));\n },\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData: function() {\n // see implementations\n },\n /**\n * Find the last occurrence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurrence, -1 if not found.\n */\n lastIndexOfSignature: function() {\n // see implementations\n },\n /**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\n readAndCheckSignature: function() {\n // see implementations\n },\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate: function() {\n var dostime = this.readInt(4);\n return new Date(Date.UTC(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1)); // second\n }\n};\nmodule.exports = DataReader;\n\n},{\"../utils\":32}],19:[function(require,module,exports){\n\"use strict\";\nvar Uint8ArrayReader = require(\"./Uint8ArrayReader\");\nvar utils = require(\"../utils\");\n\nfunction NodeBufferReader(data) {\n Uint8ArrayReader.call(this, data);\n}\nutils.inherits(NodeBufferReader, Uint8ArrayReader);\n\n/**\n * @see DataReader.readData\n */\nNodeBufferReader.prototype.readData = function(size) {\n this.checkOffset(size);\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = NodeBufferReader;\n\n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(require,module,exports){\n\"use strict\";\nvar DataReader = require(\"./DataReader\");\nvar utils = require(\"../utils\");\n\nfunction StringReader(data) {\n DataReader.call(this, data);\n}\nutils.inherits(StringReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nStringReader.prototype.byteAt = function(i) {\n return this.data.charCodeAt(this.zero + i);\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nStringReader.prototype.lastIndexOfSignature = function(sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nStringReader.prototype.readAndCheckSignature = function (sig) {\n var data = this.readData(4);\n return sig === data;\n};\n/**\n * @see DataReader.readData\n */\nStringReader.prototype.readData = function(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = StringReader;\n\n},{\"../utils\":32,\"./DataReader\":18}],21:[function(require,module,exports){\n\"use strict\";\nvar ArrayReader = require(\"./ArrayReader\");\nvar utils = require(\"../utils\");\n\nfunction Uint8ArrayReader(data) {\n ArrayReader.call(this, data);\n}\nutils.inherits(Uint8ArrayReader, ArrayReader);\n/**\n * @see DataReader.readData\n */\nUint8ArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = Uint8ArrayReader;\n\n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar support = require(\"../support\");\nvar ArrayReader = require(\"./ArrayReader\");\nvar StringReader = require(\"./StringReader\");\nvar NodeBufferReader = require(\"./NodeBufferReader\");\nvar Uint8ArrayReader = require(\"./Uint8ArrayReader\");\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nmodule.exports = function (data) {\n var type = utils.getTypeOf(data);\n utils.checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (type === \"nodebuffer\") {\n return new NodeBufferReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n }\n return new ArrayReader(utils.transformTo(\"array\", data));\n};\n\n},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(require,module,exports){\n\"use strict\";\nexports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nexports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nexports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nexports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nexports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nexports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n},{}],24:[function(require,module,exports){\n\"use strict\";\n\nvar GenericWorker = require(\"./GenericWorker\");\nvar utils = require(\"../utils\");\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nfunction ConvertWorker(destType) {\n GenericWorker.call(this, \"ConvertWorker to \" + destType);\n this.destType = destType;\n}\nutils.inherits(ConvertWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nConvertWorker.prototype.processChunk = function (chunk) {\n this.push({\n data : utils.transformTo(this.destType, chunk.data),\n meta : chunk.meta\n });\n};\nmodule.exports = ConvertWorker;\n\n},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(require,module,exports){\n\"use strict\";\n\nvar GenericWorker = require(\"./GenericWorker\");\nvar crc32 = require(\"../crc32\");\nvar utils = require(\"../utils\");\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nfunction Crc32Probe() {\n GenericWorker.call(this, \"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n}\nutils.inherits(Crc32Probe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nCrc32Probe.prototype.processChunk = function (chunk) {\n this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n};\nmodule.exports = Crc32Probe;\n\n},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar GenericWorker = require(\"./GenericWorker\");\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nfunction DataLengthProbe(propName) {\n GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n}\nutils.inherits(DataLengthProbe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nDataLengthProbe.prototype.processChunk = function (chunk) {\n if(chunk) {\n var length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n GenericWorker.prototype.processChunk.call(this, chunk);\n};\nmodule.exports = DataLengthProbe;\n\n\n},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar GenericWorker = require(\"./GenericWorker\");\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nvar DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nfunction DataWorker(dataP) {\n GenericWorker.call(this, \"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n\n this._tickScheduled = false;\n\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = utils.getTypeOf(data);\n if(!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n}\n\nutils.inherits(DataWorker, GenericWorker);\n\n/**\n * @see GenericWorker.cleanUp\n */\nDataWorker.prototype.cleanUp = function () {\n GenericWorker.prototype.cleanUp.call(this);\n this.data = null;\n};\n\n/**\n * @see GenericWorker.resume\n */\nDataWorker.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n utils.delay(this._tickAndRepeat, [], this);\n }\n return true;\n};\n\n/**\n * Trigger a tick a schedule an other call to this function.\n */\nDataWorker.prototype._tickAndRepeat = function() {\n this._tickScheduled = false;\n if(this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if(!this.isFinished) {\n utils.delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n};\n\n/**\n * Read and push a chunk.\n */\nDataWorker.prototype._tick = function() {\n\n if(this.isPaused || this.isFinished) {\n return false;\n }\n\n var size = DEFAULT_BLOCK_SIZE;\n var data = null, nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch(this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n case \"nodebuffer\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data : data,\n meta : {\n percent : this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n};\n\nmodule.exports = DataWorker;\n\n},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(require,module,exports){\n\"use strict\";\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nfunction GenericWorker(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n \"data\":[],\n \"end\":[],\n \"error\":[]\n };\n // the previous worker, if any\n this.previous = null;\n}\n\nGenericWorker.prototype = {\n /**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\n push : function (chunk) {\n this.emit(\"data\", chunk);\n },\n /**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\n end : function () {\n if (this.isFinished) {\n return false;\n }\n\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n },\n /**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\n error : function (e) {\n if (this.isFinished) {\n return false;\n }\n\n if(this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if(this.previous) {\n this.previous.error(e);\n }\n\n this.cleanUp();\n }\n return true;\n },\n /**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\n on : function (name, listener) {\n this._listeners[name].push(listener);\n return this;\n },\n /**\n * Clean any references when a worker is ending.\n */\n cleanUp : function () {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n },\n /**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\n emit : function (name, arg) {\n if (this._listeners[name]) {\n for(var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n },\n /**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\n pipe : function (next) {\n return next.registerPrevious(this);\n },\n /**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\n registerPrevious : function (previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on(\"data\", function (chunk) {\n self.processChunk(chunk);\n });\n previous.on(\"end\", function () {\n self.end();\n });\n previous.on(\"error\", function (e) {\n self.error(e);\n });\n return this;\n },\n /**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\n pause : function () {\n if(this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n\n if(this.previous) {\n this.previous.pause();\n }\n return true;\n },\n /**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\n resume : function () {\n if(!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if(this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if(this.previous) {\n this.previous.resume();\n }\n\n return !withError;\n },\n /**\n * Flush any remaining bytes as the stream is ending.\n */\n flush : function () {},\n /**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\n processChunk : function(chunk) {\n this.push(chunk);\n },\n /**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\n withStreamInfo : function (key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n },\n /**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\n mergeStreamInfo : function () {\n for(var key in this.extraStreamInfo) {\n if (!Object.prototype.hasOwnProperty.call(this.extraStreamInfo, key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n },\n\n /**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\n lock: function () {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n },\n\n /**\n *\n * Pretty print the workers chain.\n */\n toString : function () {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n }\n};\n\nmodule.exports = GenericWorker;\n\n},{}],29:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"../utils\");\nvar ConvertWorker = require(\"./ConvertWorker\");\nvar GenericWorker = require(\"./GenericWorker\");\nvar base64 = require(\"../base64\");\nvar support = require(\"../support\");\nvar external = require(\"../external\");\n\nvar NodejsStreamOutputAdapter = null;\nif (support.nodestream) {\n try {\n NodejsStreamOutputAdapter = require(\"../nodejs/NodejsStreamOutputAdapter\");\n } catch(e) {\n // ignore\n }\n}\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n switch(type) {\n case \"blob\" :\n return utils.newBlob(utils.transformTo(\"arraybuffer\", content), mimeType);\n case \"base64\" :\n return base64.encode(content);\n default :\n return utils.transformTo(type, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n var i, index = 0, res = null, totalLength = 0;\n for(i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch(type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for(i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n case \"nodebuffer\":\n return Buffer.concat(dataArray);\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject){\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper\n .on(\"data\", function (data, meta) {\n dataArray.push(data);\n if(updateCallback) {\n updateCallback(meta);\n }\n })\n .on(\"error\", function(err) {\n dataArray = [];\n reject(err);\n })\n .on(\"end\", function (){\n try {\n var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n })\n .resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nfunction StreamHelper(worker, outputType, mimeType) {\n var internalType = outputType;\n switch(outputType) {\n case \"blob\":\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n utils.checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch(e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n}\n\nStreamHelper.prototype = {\n /**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\n accumulate : function (updateCb) {\n return accumulate(this, updateCb);\n },\n /**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\n on : function (evt, fn) {\n var self = this;\n\n if(evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n utils.delay(fn, arguments, self);\n });\n }\n return this;\n },\n /**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n resume : function () {\n utils.delay(this._worker.resume, [], this._worker);\n return this;\n },\n /**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n pause : function () {\n this._worker.pause();\n return this;\n },\n /**\n * Return a nodejs stream for this helper.\n * @param {Function} updateCb the update callback.\n * @return {NodejsStreamOutputAdapter} the nodejs stream.\n */\n toNodejsStream : function (updateCb) {\n utils.checkSupport(\"nodestream\");\n if (this._outputType !== \"nodebuffer\") {\n // an object stream containing blob/arraybuffer/uint8array/string\n // is strange and I don't know if it would be useful.\n // I you find this comment and have a good usecase, please open a\n // bug report !\n throw new Error(this._outputType + \" is not supported by this method\");\n }\n\n return new NodejsStreamOutputAdapter(this, {\n objectMode : this._outputType !== \"nodebuffer\"\n }, updateCb);\n }\n};\n\n\nmodule.exports = StreamHelper;\n\n},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(require,module,exports){\n\"use strict\";\n\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n exports.blob = false;\n}\nelse {\n var buffer = new ArrayBuffer(0);\n try {\n exports.blob = new Blob([buffer], {\n type: \"application/zip\"\n }).size === 0;\n }\n catch (e) {\n try {\n var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n exports.blob = builder.getBlob(\"application/zip\").size === 0;\n }\n catch (e) {\n exports.blob = false;\n }\n }\n}\n\ntry {\n exports.nodestream = !!require(\"readable-stream\").Readable;\n} catch(e) {\n exports.nodestream = false;\n}\n\n},{\"readable-stream\":16}],31:[function(require,module,exports){\n\"use strict\";\n\nvar utils = require(\"./utils\");\nvar support = require(\"./support\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new Array(256);\nfor (var i=0; i<256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return utils.applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nexports.utf8encode = function utf8encode(str) {\n if (support.nodebuffer) {\n return nodejsUtils.newBufferFrom(str, \"utf-8\");\n }\n\n return string2buf(str);\n};\n\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nexports.utf8decode = function utf8decode(buf) {\n if (support.nodebuffer) {\n return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n }\n\n buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nfunction Utf8DecodeWorker() {\n GenericWorker.call(this, \"utf-8 decode\");\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n}\nutils.inherits(Utf8DecodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8DecodeWorker.prototype.processChunk = function (chunk) {\n\n var data = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if(support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n\n this.push({\n data : exports.utf8decode(usableData),\n meta : chunk.meta\n });\n};\n\n/**\n * @see GenericWorker.flush\n */\nUtf8DecodeWorker.prototype.flush = function () {\n if(this.leftOver && this.leftOver.length) {\n this.push({\n data : exports.utf8decode(this.leftOver),\n meta : {}\n });\n this.leftOver = null;\n }\n};\nexports.Utf8DecodeWorker = Utf8DecodeWorker;\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nfunction Utf8EncodeWorker() {\n GenericWorker.call(this, \"utf-8 encode\");\n}\nutils.inherits(Utf8EncodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8EncodeWorker.prototype.processChunk = function (chunk) {\n this.push({\n data : exports.utf8encode(chunk.data),\n meta : chunk.meta\n });\n};\nexports.Utf8EncodeWorker = Utf8EncodeWorker;\n\n},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(require,module,exports){\n\"use strict\";\n\nvar support = require(\"./support\");\nvar base64 = require(\"./base64\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar external = require(\"./external\");\nrequire(\"setimmediate\");\n\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nexports.newBlob = function(part, type) {\n exports.checkSupport(\"blob\");\n\n try {\n // Blob constructor\n return new Blob([part], {\n type: type\n });\n }\n catch (e) {\n\n try {\n // deprecated, browser only, old way\n var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n var builder = new Builder();\n builder.append(part);\n return builder.getBlob(type);\n }\n catch (e) {\n\n // well, fuck ?!\n throw new Error(\"Bug : can't construct the Blob.\");\n }\n }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * An helper for the function arrayLikeToString.\n * This contains static information and functions that\n * can be optimized by the browser JIT compiler.\n */\nvar arrayToStringHelper = {\n /**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\n stringifyByChunk: function(array, type, chunk) {\n var result = [], k = 0, len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\n if (type === \"array\" || type === \"nodebuffer\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n return result.join(\"\");\n },\n /**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\n stringifyByChar: function(array){\n var resultStr = \"\";\n for(var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n },\n applyCanBeUsed : {\n /**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\n uint8array : (function () {\n try {\n return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n return false;\n }\n })(),\n /**\n * true if the browser accepts to use String.fromCharCode on nodejs Buffer.\n */\n nodebuffer : (function () {\n try {\n return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;\n } catch (e) {\n return false;\n }\n })()\n }\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = exports.getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;\n } else if (type === \"nodebuffer\") {\n canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;\n }\n\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return arrayToStringHelper.stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return arrayToStringHelper.stringifyByChar(array);\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": function(input) {\n return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));\n }\n};\n\n// array to ?\ntransform[\"array\"] = {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodejsUtils.newBufferFrom(input);\n }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodejsUtils.newBufferFrom(new Uint8Array(input));\n }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity,\n \"nodebuffer\": function(input) {\n return nodejsUtils.newBufferFrom(input);\n }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n exports.checkSupport(outputType);\n var inputType = exports.getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Resolve all relative path components, \".\" and \"..\", in a path. If these relative components\n * traverse above the root then the resulting path will only contain the final path component.\n *\n * All empty components, e.g. \"//\", are removed.\n * @param {string} path A path with / or \\ separators\n * @returns {string} The path with all relative path components resolved.\n */\nexports.resolve = function(path) {\n var parts = path.split(\"/\");\n var result = [];\n for (var index = 0; index < parts.length; index++) {\n var part = parts[index];\n // Allow the first and last component to be empty for trailing slashes.\n if (part === \".\" || (part === \"\" && index !== 0 && index !== parts.length - 1)) {\n continue;\n } else if (part === \"..\") {\n result.pop();\n } else {\n result.push(part);\n }\n }\n return result.join(\"/\");\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.nodebuffer && nodejsUtils.isBuffer(input)) {\n return \"nodebuffer\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this platform\");\n }\n};\n\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n var res = \"\",\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += \"\\\\x\" + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nexports.delay = function(callback, args, self) {\n setImmediate(function () {\n callback.apply(self || null, args || []);\n });\n};\n\n/**\n * Extends a prototype with an other, without calling a constructor with\n * side effects. Inspired by nodejs' `utils.inherits`\n * @param {Function} ctor the constructor to augment\n * @param {Function} superCtor the parent constructor to use\n */\nexports.inherits = function (ctor, superCtor) {\n var Obj = function() {};\n Obj.prototype = superCtor.prototype;\n ctor.prototype = new Obj();\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nexports.extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nexports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n var isBlob = support.blob && (data instanceof Blob || [\"[object File]\", \"[object Blob]\"].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function(e) {\n resolve(e.target.result);\n };\n reader.onerror = function(e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n\n return promise.then(function(data) {\n var dataType = exports.getTypeOf(data);\n\n if (!dataType) {\n return external.Promise.reject(\n new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n );\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = exports.transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = base64.decode(data);\n }\n else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\n\n},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,\"setimmediate\":54}],33:[function(require,module,exports){\n\"use strict\";\nvar readerFor = require(\"./reader/readerFor\");\nvar utils = require(\"./utils\");\nvar sig = require(\"./signature\");\nvar ZipEntry = require(\"./zipEntry\");\nvar support = require(\"./support\");\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntries(loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n}\nZipEntries.prototype = {\n /**\n * Check that the reader is on the specified signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature: function(expectedSignature) {\n if (!this.reader.readAndCheckSignature(expectedSignature)) {\n this.reader.index -= 4;\n var signature = this.reader.readString(4);\n throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + utils.pretty(signature) + \", expected \" + utils.pretty(expectedSignature) + \")\");\n }\n },\n /**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\n isSignature: function(askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n },\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral: function() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = utils.transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n },\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral: function() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.reader.skip(4);\n // this.versionMadeBy = this.reader.readString(2);\n // this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readData(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator: function() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n },\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles: function() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(sig.LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n },\n /**\n * Read the central directory.\n */\n readCentralDir: function() {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n } else {\n // We found some records but not all.\n // Something is wrong but we got something for the user: no error here.\n // console.warn(\"expected\", this.centralDirRecords, \"records in central dir, got\", this.files.length);\n }\n }\n },\n /**\n * Read the end of central directory.\n */\n readEndOfCentral: function() {\n var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);\n\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip: can't find end of central directory\");\n }\n\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(sig.CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {\n // The offsets seem wrong, but we have something at the specified offset.\n // So… we keep it.\n } else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n },\n prepareReader: function(data) {\n this.reader = readerFor(data);\n },\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load: function(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n};\n// }}} end of ZipEntries\nmodule.exports = ZipEntries;\n\n},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(require,module,exports){\n\"use strict\";\nvar readerFor = require(\"./reader/readerFor\");\nvar utils = require(\"./utils\");\nvar CompressedObject = require(\"./compressedObject\");\nvar crc32fn = require(\"./crc32\");\nvar utf8 = require(\"./utf8\");\nvar compressions = require(\"./compressions\");\nvar support = require(\"./support\");\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!Object.prototype.hasOwnProperty.call(compressions, method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntry(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n}\nZipEntry.prototype = {\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted: function() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n },\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8: function() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n },\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart: function(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n }\n\n compression = findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + utils.pretty(this.compressionMethod) + \" unknown (inner file : \" + utils.transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n },\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart: function(reader) {\n this.versionMadeBy = reader.readInt(2);\n reader.skip(2);\n // this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n var fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n // will be read in the local part, see the comments there\n reader.skip(fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n },\n\n /**\n * Parse the external file attributes and get the unix/dos permissions.\n */\n processAttributes: function () {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n if(madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n\n if(madeBy === MADE_BY_UNIX) {\n this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === \"/\") {\n this.dir = true;\n }\n },\n\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField: function() {\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = readerFor(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === utils.MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n },\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields: function(reader) {\n var end = reader.index + this.extraFieldsLength,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n if (!this.extraFields) {\n this.extraFields = {};\n }\n\n while (reader.index + 4 < end) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readData(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n\n reader.setIndex(end);\n },\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8: function() {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = utf8.utf8decode(this.fileName);\n this.fileCommentStr = utf8.utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n // ASCII text or unsupported code page\n var fileNameByteArray = utils.transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n // ASCII text or unsupported code page\n var commentByteArray = utils.transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n },\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath: function() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = readerFor(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (crc32fn(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8.utf8decode(extraReader.readData(upathField.length - 5));\n }\n return null;\n },\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment: function() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = readerFor(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (crc32fn(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8.utf8decode(extraReader.readData(ucommentField.length - 5));\n }\n return null;\n }\n};\nmodule.exports = ZipEntry;\n\n},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(require,module,exports){\n\"use strict\";\n\nvar StreamHelper = require(\"./stream/StreamHelper\");\nvar DataWorker = require(\"./stream/DataWorker\");\nvar utf8 = require(\"./utf8\");\nvar CompressedObject = require(\"./compressedObject\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this._dataBinary = options.binary;\n // keep only the compression\n this.options = {\n compression : options.compression,\n compressionOptions : options.compressionOptions\n };\n};\n\nZipObject.prototype = {\n /**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\n internalStream: function (type) {\n var result = null, outputType = \"string\";\n try {\n if (!type) {\n throw new Error(\"No output type specified.\");\n }\n outputType = type.toLowerCase();\n var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n if (outputType === \"binarystring\" || outputType === \"text\") {\n outputType = \"string\";\n }\n result = this._decompressWorker();\n\n var isUnicodeString = !this._dataBinary;\n\n if (isUnicodeString && !askUnicodeString) {\n result = result.pipe(new utf8.Utf8EncodeWorker());\n }\n if (!isUnicodeString && askUnicodeString) {\n result = result.pipe(new utf8.Utf8DecodeWorker());\n }\n } catch (e) {\n result = new GenericWorker(\"error\");\n result.error(e);\n }\n\n return new StreamHelper(result, outputType, \"\");\n },\n\n /**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\n async: function (type, onUpdate) {\n return this.internalStream(type).accumulate(onUpdate);\n },\n\n /**\n * Prepare the content as a nodejs stream.\n * @param {String} type the type of each chunk.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Stream the stream.\n */\n nodeStream: function (type, onUpdate) {\n return this.internalStream(type || \"nodebuffer\").toNodejsStream(onUpdate);\n },\n\n /**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\n _compressWorker: function (compression, compressionOptions) {\n if (\n this._data instanceof CompressedObject &&\n this._data.compression.magic === compression.magic\n ) {\n return this._data.getCompressedWorker();\n } else {\n var result = this._decompressWorker();\n if(!this._dataBinary) {\n result = result.pipe(new utf8.Utf8EncodeWorker());\n }\n return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n }\n },\n /**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\n _decompressWorker : function () {\n if (this._data instanceof CompressedObject) {\n return this._data.getContentWorker();\n } else if (this._data instanceof GenericWorker) {\n return this._data;\n } else {\n return new DataWorker(this._data);\n }\n }\n};\n\nvar removedMethods = [\"asText\", \"asBinary\", \"asNodeBuffer\", \"asUint8Array\", \"asArrayBuffer\"];\nvar removedFn = function () {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\nfor(var i = 0; i < removedMethods.length; i++) {\n ZipObject.prototype[removedMethods[i]] = removedFn;\n}\nmodule.exports = ZipObject;\n\n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(require,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a \r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./readBook.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./readBook.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./readBook.vue?vue&type=template&id=87140528&scoped=true&\"\nimport script from \"./readBook.vue?vue&type=script&lang=js&\"\nexport * from \"./readBook.vue?vue&type=script&lang=js&\"\nimport style0 from \"./readBook.vue?vue&type=style&index=0&id=87140528&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"87140528\",\n null\n \n)\n\nexport default component.exports","import {defer, isXml, parse} from \"./core\";\nimport Path from \"./path\";\n\nfunction request(url, type, withCredentials, headers) {\n\tvar supportsURL = (typeof window != \"undefined\") ? window.URL : false; // TODO: fallback for url if window isn't defined\n\tvar BLOB_RESPONSE = supportsURL ? \"blob\" : \"arraybuffer\";\n\n\tvar deferred = new defer();\n\n\tvar xhr = new XMLHttpRequest();\n\n\t//-- Check from PDF.js:\n\t// https://github.com/mozilla/pdf.js/blob/master/web/compatibility.js\n\tvar xhrPrototype = XMLHttpRequest.prototype;\n\n\tvar header;\n\n\tif (!(\"overrideMimeType\" in xhrPrototype)) {\n\t\t// IE10 might have response, but not overrideMimeType\n\t\tObject.defineProperty(xhrPrototype, \"overrideMimeType\", {\n\t\t\tvalue: function xmlHttpRequestOverrideMimeType() {}\n\t\t});\n\t}\n\n\tif(withCredentials) {\n\t\txhr.withCredentials = true;\n\t}\n\n\txhr.onreadystatechange = handler;\n\txhr.onerror = err;\n\n\txhr.open(\"GET\", url, true);\n\n\tfor(header in headers) {\n\t\txhr.setRequestHeader(header, headers[header]);\n\t}\n\n\tif(type == \"json\") {\n\t\txhr.setRequestHeader(\"Accept\", \"application/json\");\n\t}\n\n\t// If type isn\"t set, determine it from the file extension\n\tif(!type) {\n\t\ttype = new Path(url).extension;\n\t}\n\n\tif(type == \"blob\"){\n\t\txhr.responseType = BLOB_RESPONSE;\n\t}\n\n\n\tif(isXml(type)) {\n\t\t// xhr.responseType = \"document\";\n\t\txhr.overrideMimeType(\"text/xml\"); // for OPF parsing\n\t}\n\n\tif(type == \"xhtml\") {\n\t\t// xhr.responseType = \"document\";\n\t}\n\n\tif(type == \"html\" || type == \"htm\") {\n\t\t// xhr.responseType = \"document\";\n\t}\n\n\tif(type == \"binary\") {\n\t\txhr.responseType = \"arraybuffer\";\n\t}\n\n\txhr.send();\n\n\tfunction err(e) {\n\t\tdeferred.reject(e);\n\t}\n\n\tfunction handler() {\n\t\tif (this.readyState === XMLHttpRequest.DONE) {\n\t\t\tvar responseXML = false;\n\n\t\t\tif(this.responseType === \"\" || this.responseType === \"document\") {\n\t\t\t\tresponseXML = this.responseXML;\n\t\t\t}\n\n\t\t\tif (this.status === 200 || this.status === 0 || responseXML) { //-- Firefox is reporting 0 for blob urls\n\t\t\t\tvar r;\n\n\t\t\t\tif (!this.response && !responseXML) {\n\t\t\t\t\tdeferred.reject({\n\t\t\t\t\t\tstatus: this.status,\n\t\t\t\t\t\tmessage : \"Empty Response\",\n\t\t\t\t\t\tstack : new Error().stack\n\t\t\t\t\t});\n\t\t\t\t\treturn deferred.promise;\n\t\t\t\t}\n\n\t\t\t\tif (this.status === 403) {\n\t\t\t\t\tdeferred.reject({\n\t\t\t\t\t\tstatus: this.status,\n\t\t\t\t\t\tresponse: this.response,\n\t\t\t\t\t\tmessage : \"Forbidden\",\n\t\t\t\t\t\tstack : new Error().stack\n\t\t\t\t\t});\n\t\t\t\t\treturn deferred.promise;\n\t\t\t\t}\n\t\t\t\tif(responseXML){\n\t\t\t\t\tr = this.responseXML;\n\t\t\t\t} else\n\t\t\t\tif(isXml(type)){\n\t\t\t\t\t// xhr.overrideMimeType(\"text/xml\"); // for OPF parsing\n\t\t\t\t\t// If this.responseXML wasn't set, try to parse using a DOMParser from text\n\t\t\t\t\tr = parse(this.response, \"text/xml\");\n\t\t\t\t}else\n\t\t\t\tif(type == \"xhtml\"){\n\t\t\t\t\tr = parse(this.response, \"application/xhtml+xml\");\n\t\t\t\t}else\n\t\t\t\tif(type == \"html\" || type == \"htm\"){\n\t\t\t\t\tr = parse(this.response, \"text/html\");\n\t\t\t\t}else\n\t\t\t\tif(type == \"json\"){\n\t\t\t\t\tr = JSON.parse(this.response);\n\t\t\t\t}else\n\t\t\t\tif(type == \"blob\"){\n\n\t\t\t\t\tif(supportsURL) {\n\t\t\t\t\t\tr = this.response;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//-- Safari doesn't support responseType blob, so create a blob from arraybuffer\n\t\t\t\t\t\tr = new Blob([this.response]);\n\t\t\t\t\t}\n\n\t\t\t\t}else{\n\t\t\t\t\tr = this.response;\n\t\t\t\t}\n\n\t\t\t\tdeferred.resolve(r);\n\t\t\t} else {\n\n\t\t\t\tdeferred.reject({\n\t\t\t\t\tstatus: this.status,\n\t\t\t\t\tmessage : this.response,\n\t\t\t\t\tstack : new Error().stack\n\t\t\t\t});\n\n\t\t\t}\n\t\t}\n\t}\n\n\treturn deferred.promise;\n}\n\nexport default request;\n","import { defer } from \"./utils/core\";\nimport EpubCFI from \"./epubcfi\";\nimport Hook from \"./utils/hook\";\nimport { sprint } from \"./utils/core\";\nimport { replaceBase } from \"./utils/replacements\";\nimport Request from \"./utils/request\";\nimport { DOMParser as XMLDOMSerializer } from \"@xmldom/xmldom\";\n\n/**\n * Represents a Section of the Book\n *\n * In most books this is equivalent to a Chapter\n * @param {object} item The spine item representing the section\n * @param {object} hooks hooks for serialize and content\n */\nclass Section {\n\tconstructor(item, hooks){\n\t\tthis.idref = item.idref;\n\t\tthis.linear = item.linear === \"yes\";\n\t\tthis.properties = item.properties;\n\t\tthis.index = item.index;\n\t\tthis.href = item.href;\n\t\tthis.url = item.url;\n\t\tthis.canonical = item.canonical;\n\t\tthis.next = item.next;\n\t\tthis.prev = item.prev;\n\n\t\tthis.cfiBase = item.cfiBase;\n\n\t\tif (hooks) {\n\t\t\tthis.hooks = hooks;\n\t\t} else {\n\t\t\tthis.hooks = {};\n\t\t\tthis.hooks.serialize = new Hook(this);\n\t\t\tthis.hooks.content = new Hook(this);\n\t\t}\n\n\t\tthis.document = undefined;\n\t\tthis.contents = undefined;\n\t\tthis.output = undefined;\n\t}\n\n\t/**\n\t * Load the section from its url\n\t * @param {method} [_request] a request method to use for loading\n\t * @return {document} a promise with the xml document\n\t */\n\tload(_request){\n\t\tvar request = _request || this.request || Request;\n\t\tvar loading = new defer();\n\t\tvar loaded = loading.promise;\n\n\t\tif(this.contents) {\n\t\t\tloading.resolve(this.contents);\n\t\t} else {\n\t\t\trequest(this.url)\n\t\t\t\t.then(function(xml){\n\t\t\t\t\t// var directory = new Url(this.url).directory;\n\n\t\t\t\t\tthis.document = xml;\n\t\t\t\t\tthis.contents = xml.documentElement;\n\n\t\t\t\t\treturn this.hooks.content.trigger(this.document, this);\n\t\t\t\t}.bind(this))\n\t\t\t\t.then(function(){\n\t\t\t\t\tloading.resolve(this.contents);\n\t\t\t\t}.bind(this))\n\t\t\t\t.catch(function(error){\n\t\t\t\t\tloading.reject(error);\n\t\t\t\t});\n\t\t}\n\n\t\treturn loaded;\n\t}\n\n\t/**\n\t * Adds a base tag for resolving urls in the section\n\t * @private\n\t */\n\tbase(){\n\t\treturn replaceBase(this.document, this);\n\t}\n\n\t/**\n\t * Render the contents of a section\n\t * @param {method} [_request] a request method to use for loading\n\t * @return {string} output a serialized XML Document\n\t */\n\trender(_request){\n\t\tvar rendering = new defer();\n\t\tvar rendered = rendering.promise;\n\t\tthis.output; // TODO: better way to return this from hooks?\n\n\t\tthis.load(_request).\n\t\t\tthen(function(contents){\n\t\t\t\tvar userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || '';\n\t\t\t\tvar isIE = userAgent.indexOf('Trident') >= 0;\n\t\t\t\tvar Serializer;\n\t\t\t\tif (typeof XMLSerializer === \"undefined\" || isIE) {\n\t\t\t\t\tSerializer = XMLDOMSerializer;\n\t\t\t\t} else {\n\t\t\t\t\tSerializer = XMLSerializer;\n\t\t\t\t}\n\t\t\t\tvar serializer = new Serializer();\n\t\t\t\tthis.output = serializer.serializeToString(contents);\n\t\t\t\treturn this.output;\n\t\t\t}.bind(this)).\n\t\t\tthen(function(){\n\t\t\t\treturn this.hooks.serialize.trigger(this.output, this);\n\t\t\t}.bind(this)).\n\t\t\tthen(function(){\n\t\t\t\trendering.resolve(this.output);\n\t\t\t}.bind(this))\n\t\t\t.catch(function(error){\n\t\t\t\trendering.reject(error);\n\t\t\t});\n\n\t\treturn rendered;\n\t}\n\n\t/**\n\t * Find a string in a section\n\t * @param {string} _query The query string to find\n\t * @return {object[]} A list of matches, with form {cfi, excerpt}\n\t */\n\tfind(_query){\n\t\tvar section = this;\n\t\tvar matches = [];\n\t\tvar query = _query.toLowerCase();\n\t\tvar find = function(node){\n\t\t\tvar text = node.textContent.toLowerCase();\n\t\t\tvar range = section.document.createRange();\n\t\t\tvar cfi;\n\t\t\tvar pos;\n\t\t\tvar last = -1;\n\t\t\tvar excerpt;\n\t\t\tvar limit = 150;\n\n\t\t\twhile (pos != -1) {\n\t\t\t\t// Search for the query\n\t\t\t\tpos = text.indexOf(query, last + 1);\n\n\t\t\t\tif (pos != -1) {\n\t\t\t\t\t// We found it! Generate a CFI\n\t\t\t\t\trange = section.document.createRange();\n\t\t\t\t\trange.setStart(node, pos);\n\t\t\t\t\trange.setEnd(node, pos + query.length);\n\n\t\t\t\t\tcfi = section.cfiFromRange(range);\n\n\t\t\t\t\t// Generate the excerpt\n\t\t\t\t\tif (node.textContent.length < limit) {\n\t\t\t\t\t\texcerpt = node.textContent;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\texcerpt = node.textContent.substring(pos - limit/2, pos + limit/2);\n\t\t\t\t\t\texcerpt = \"...\" + excerpt + \"...\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add the CFI to the matches list\n\t\t\t\t\tmatches.push({\n\t\t\t\t\t\tcfi: cfi,\n\t\t\t\t\t\texcerpt: excerpt\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tlast = pos;\n\t\t\t}\n\t\t};\n\n\t\tsprint(section.document, function(node) {\n\t\t\tfind(node);\n\t\t});\n\n\t\treturn matches;\n\t};\n\n\n\t/**\n\t * Search a string in multiple sequential Element of the section. If the document.createTreeWalker api is missed(eg: IE8), use `find` as a fallback.\n\t * @param {string} _query The query string to search\n\t * @param {int} maxSeqEle The maximum number of Element that are combined for search, default value is 5.\n\t * @return {object[]} A list of matches, with form {cfi, excerpt}\n\t */\n\tsearch(_query , maxSeqEle = 5){\n\t\tif (typeof(document.createTreeWalker) == \"undefined\") {\n\t\t\treturn this.find(_query);\n\t\t}\n\t\tlet matches = [];\n\t\tconst excerptLimit = 150;\n\t\tconst section = this;\n\t\tconst query = _query.toLowerCase();\n\t\tconst search = function(nodeList){\n\t\t\tconst textWithCase = nodeList.reduce((acc ,current)=>{\n\t\t\t\treturn acc + current.textContent;\n\t\t\t},\"\");\n\t\t\tconst text = textWithCase.toLowerCase();\n\t\t\tconst pos = text.indexOf(query);\n\t\t\tif (pos != -1){\n\t\t\t\tconst startNodeIndex = 0 , endPos = pos + query.length;\n\t\t\t\tlet endNodeIndex = 0 , l = 0;\n\t\t\t\tif (pos < nodeList[startNodeIndex].length){\n\t\t\t\t\tlet cfi;\n\t\t\t\t\twhile( endNodeIndex < nodeList.length - 1 ){\n\t\t\t\t\t\tl += nodeList[endNodeIndex].length;\n\t\t\t\t\t\tif ( endPos <= l){\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tendNodeIndex += 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet startNode = nodeList[startNodeIndex] , endNode = nodeList[endNodeIndex];\n\t\t\t\t\tlet range = section.document.createRange();\n\t\t\t\t\trange.setStart(startNode,pos);\n\t\t\t\t\tlet beforeEndLengthCount = nodeList.slice(0, endNodeIndex).reduce((acc,current)=>{return acc+current.textContent.length;},0) ;\n\t\t\t\t\trange.setEnd(endNode, beforeEndLengthCount > endPos ? endPos : endPos - beforeEndLengthCount );\n\t\t\t\t\tcfi = section.cfiFromRange(range);\n\n\t\t\t\t\tlet excerpt = nodeList.slice(0, endNodeIndex+1).reduce((acc,current)=>{return acc+current.textContent ;},\"\");\n\t\t\t\t\tif (excerpt.length > excerptLimit){\n\t\t\t\t\t\texcerpt = excerpt.substring(pos - excerptLimit/2, pos + excerptLimit/2);\n\t\t\t\t\t\texcerpt = \"...\" + excerpt + \"...\";\n\t\t\t\t\t}\n\t\t\t\t\tmatches.push({\n\t\t\t\t\t\tcfi: cfi,\n\t\t\t\t\t\texcerpt: excerpt\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst treeWalker = document.createTreeWalker(section.document, NodeFilter.SHOW_TEXT, null, false);\n\t\tlet node , nodeList = [];\n\t\twhile (node = treeWalker.nextNode()) {\n\t\t\tnodeList.push(node);\n\t\t\tif (nodeList.length == maxSeqEle){\n\t\t\t\tsearch(nodeList.slice(0 , maxSeqEle));\n\t\t\t\tnodeList = nodeList.slice(1, maxSeqEle);\n\t\t\t}\n\t\t}\n\t\tif (nodeList.length > 0){\n\t\t\tsearch(nodeList);\n\t\t}\n\t\treturn matches;\n\t}\n\n\t/**\n\t* Reconciles the current chapters layout properties with\n\t* the global layout properties.\n\t* @param {object} globalLayout The global layout settings object, chapter properties string\n\t* @return {object} layoutProperties Object with layout properties\n\t*/\n\treconcileLayoutSettings(globalLayout){\n\t\t//-- Get the global defaults\n\t\tvar settings = {\n\t\t\tlayout : globalLayout.layout,\n\t\t\tspread : globalLayout.spread,\n\t\t\torientation : globalLayout.orientation\n\t\t};\n\n\t\t//-- Get the chapter's display type\n\t\tthis.properties.forEach(function(prop){\n\t\t\tvar rendition = prop.replace(\"rendition:\", \"\");\n\t\t\tvar split = rendition.indexOf(\"-\");\n\t\t\tvar property, value;\n\n\t\t\tif(split != -1){\n\t\t\t\tproperty = rendition.slice(0, split);\n\t\t\t\tvalue = rendition.slice(split+1);\n\n\t\t\t\tsettings[property] = value;\n\t\t\t}\n\t\t});\n\t\treturn settings;\n\t}\n\n\t/**\n\t * Get a CFI from a Range in the Section\n\t * @param {range} _range\n\t * @return {string} cfi an EpubCFI string\n\t */\n\tcfiFromRange(_range) {\n\t\treturn new EpubCFI(_range, this.cfiBase).toString();\n\t}\n\n\t/**\n\t * Get a CFI from an Element in the Section\n\t * @param {element} el\n\t * @return {string} cfi an EpubCFI string\n\t */\n\tcfiFromElement(el) {\n\t\treturn new EpubCFI(el, this.cfiBase).toString();\n\t}\n\n\t/**\n\t * Unload the section document\n\t */\n\tunload() {\n\t\tthis.document = undefined;\n\t\tthis.contents = undefined;\n\t\tthis.output = undefined;\n\t}\n\n\tdestroy() {\n\t\tthis.unload();\n\t\tthis.hooks.serialize.clear();\n\t\tthis.hooks.content.clear();\n\n\t\tthis.hooks = undefined;\n\t\tthis.idref = undefined;\n\t\tthis.linear = undefined;\n\t\tthis.properties = undefined;\n\t\tthis.index = undefined;\n\t\tthis.href = undefined;\n\t\tthis.url = undefined;\n\t\tthis.next = undefined;\n\t\tthis.prev = undefined;\n\n\t\tthis.cfiBase = undefined;\n\t}\n}\n\nexport default Section;\n","import EpubCFI from \"./epubcfi\";\nimport Hook from \"./utils/hook\";\nimport Section from \"./section\";\nimport {replaceBase, replaceCanonical, replaceMeta} from \"./utils/replacements\";\n\n/**\n * A collection of Spine Items\n */\nclass Spine {\n\tconstructor() {\n\t\tthis.spineItems = [];\n\t\tthis.spineByHref = {};\n\t\tthis.spineById = {};\n\n\t\tthis.hooks = {};\n\t\tthis.hooks.serialize = new Hook();\n\t\tthis.hooks.content = new Hook();\n\n\t\t// Register replacements\n\t\tthis.hooks.content.register(replaceBase);\n\t\tthis.hooks.content.register(replaceCanonical);\n\t\tthis.hooks.content.register(replaceMeta);\n\n\t\tthis.epubcfi = new EpubCFI();\n\n\t\tthis.loaded = false;\n\n\t\tthis.items = undefined;\n\t\tthis.manifest = undefined;\n\t\tthis.spineNodeIndex = undefined;\n\t\tthis.baseUrl = undefined;\n\t\tthis.length = undefined;\n\t}\n\n\t/**\n\t * Unpack items from a opf into spine items\n\t * @param {Packaging} _package\n\t * @param {method} resolver URL resolver\n\t * @param {method} canonical Resolve canonical url\n\t */\n\tunpack(_package, resolver, canonical) {\n\n\t\tthis.items = _package.spine;\n\t\tthis.manifest = _package.manifest;\n\t\tthis.spineNodeIndex = _package.spineNodeIndex;\n\t\tthis.baseUrl = _package.baseUrl || _package.basePath || \"\";\n\t\tthis.length = this.items.length;\n\n\t\tthis.items.forEach( (item, index) => {\n\t\t\tvar manifestItem = this.manifest[item.idref];\n\t\t\tvar spineItem;\n\n\t\t\titem.index = index;\n\t\t\titem.cfiBase = this.epubcfi.generateChapterComponent(this.spineNodeIndex, item.index, item.id);\n\n\t\t\tif (item.href) {\n\t\t\t\titem.url = resolver(item.href, true);\n\t\t\t\titem.canonical = canonical(item.href);\n\t\t\t}\n\n\t\t\tif(manifestItem) {\n\t\t\t\titem.href = manifestItem.href;\n\t\t\t\titem.url = resolver(item.href, true);\n\t\t\t\titem.canonical = canonical(item.href);\n\n\t\t\t\tif(manifestItem.properties.length){\n\t\t\t\t\titem.properties.push.apply(item.properties, manifestItem.properties);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (item.linear === \"yes\") {\n\t\t\t\titem.prev = function() {\n\t\t\t\t\tlet prevIndex = item.index;\n\t\t\t\t\twhile (prevIndex > 0) {\n\t\t\t\t\t\tlet prev = this.get(prevIndex-1);\n\t\t\t\t\t\tif (prev && prev.linear) {\n\t\t\t\t\t\t\treturn prev;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprevIndex -= 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}.bind(this);\n\t\t\t\titem.next = function() {\n\t\t\t\t\tlet nextIndex = item.index;\n\t\t\t\t\twhile (nextIndex < this.spineItems.length-1) {\n\t\t\t\t\t\tlet next = this.get(nextIndex+1);\n\t\t\t\t\t\tif (next && next.linear) {\n\t\t\t\t\t\t\treturn next;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextIndex += 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}.bind(this);\n\t\t\t} else {\n\t\t\t\titem.prev = function() {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\titem.next = function() {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tspineItem = new Section(item, this.hooks);\n\n\t\t\tthis.append(spineItem);\n\n\n\t\t});\n\n\t\tthis.loaded = true;\n\t}\n\n\t/**\n\t * Get an item from the spine\n\t * @param {string|number} [target]\n\t * @return {Section} section\n\t * @example spine.get();\n\t * @example spine.get(1);\n\t * @example spine.get(\"chap1.html\");\n\t * @example spine.get(\"#id1234\");\n\t */\n\tget(target) {\n\t\tvar index = 0;\n\n\t\tif (typeof target === \"undefined\") {\n\t\t\twhile (index < this.spineItems.length) {\n\t\t\t\tlet next = this.spineItems[index];\n\t\t\t\tif (next && next.linear) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tindex += 1;\n\t\t\t}\n\t\t} else if(this.epubcfi.isCfiString(target)) {\n\t\t\tlet cfi = new EpubCFI(target);\n\t\t\tindex = cfi.spinePos;\n\t\t} else if(typeof target === \"number\" || isNaN(target) === false){\n\t\t\tindex = target;\n\t\t} else if(typeof target === \"string\" && target.indexOf(\"#\") === 0) {\n\t\t\tindex = this.spineById[target.substring(1)];\n\t\t} else if(typeof target === \"string\") {\n\t\t\t// Remove fragments\n\t\t\ttarget = target.split(\"#\")[0];\n\t\t\tindex = this.spineByHref[target] || this.spineByHref[encodeURI(target)];\n\t\t}\n\n\t\treturn this.spineItems[index] || null;\n\t}\n\n\t/**\n\t * Append a Section to the Spine\n\t * @private\n\t * @param {Section} section\n\t */\n\tappend(section) {\n\t\tvar index = this.spineItems.length;\n\t\tsection.index = index;\n\n\t\tthis.spineItems.push(section);\n\n\t\t// Encode and Decode href lookups\n\t\t// see pr for details: https://github.com/futurepress/epub.js/pull/358\n\t\tthis.spineByHref[decodeURI(section.href)] = index;\n\t\tthis.spineByHref[encodeURI(section.href)] = index;\n\t\tthis.spineByHref[section.href] = index;\n\n\t\tthis.spineById[section.idref] = index;\n\n\t\treturn index;\n\t}\n\n\t/**\n\t * Prepend a Section to the Spine\n\t * @private\n\t * @param {Section} section\n\t */\n\tprepend(section) {\n\t\t// var index = this.spineItems.unshift(section);\n\t\tthis.spineByHref[section.href] = 0;\n\t\tthis.spineById[section.idref] = 0;\n\n\t\t// Re-index\n\t\tthis.spineItems.forEach(function(item, index){\n\t\t\titem.index = index;\n\t\t});\n\n\t\treturn 0;\n\t}\n\n\t// insert(section, index) {\n\t//\n\t// };\n\n\t/**\n\t * Remove a Section from the Spine\n\t * @private\n\t * @param {Section} section\n\t */\n\tremove(section) {\n\t\tvar index = this.spineItems.indexOf(section);\n\n\t\tif(index > -1) {\n\t\t\tdelete this.spineByHref[section.href];\n\t\t\tdelete this.spineById[section.idref];\n\n\t\t\treturn this.spineItems.splice(index, 1);\n\t\t}\n\t}\n\n\t/**\n\t * Loop over the Sections in the Spine\n\t * @return {method} forEach\n\t */\n\teach() {\n\t\treturn this.spineItems.forEach.apply(this.spineItems, arguments);\n\t}\n\n\t/**\n\t * Find the first Section in the Spine\n\t * @return {Section} first section\n\t */\n\tfirst() {\n\t\tlet index = 0;\n\n\t\tdo {\n\t\t\tlet next = this.get(index);\n\n\t\t\tif (next && next.linear) {\n\t\t\t\treturn next;\n\t\t\t}\n\t\t\tindex += 1;\n\t\t} while (index < this.spineItems.length) ;\n\t}\n\n\t/**\n\t * Find the last Section in the Spine\n\t * @return {Section} last section\n\t */\n\tlast() {\n\t\tlet index = this.spineItems.length-1;\n\n\t\tdo {\n\t\t\tlet prev = this.get(index);\n\t\t\tif (prev && prev.linear) {\n\t\t\t\treturn prev;\n\t\t\t}\n\t\t\tindex -= 1;\n\t\t} while (index >= 0);\n\t}\n\n\tdestroy() {\n\t\tthis.each((section) => section.destroy());\n\n\t\tthis.spineItems = undefined\n\t\tthis.spineByHref = undefined\n\t\tthis.spineById = undefined\n\n\t\tthis.hooks.serialize.clear();\n\t\tthis.hooks.content.clear();\n\t\tthis.hooks = undefined;\n\n\t\tthis.epubcfi = undefined;\n\n\t\tthis.loaded = false;\n\n\t\tthis.items = undefined;\n\t\tthis.manifest = undefined;\n\t\tthis.spineNodeIndex = undefined;\n\t\tthis.baseUrl = undefined;\n\t\tthis.length = undefined;\n\t}\n}\n\nexport default Spine;\n","import {qs, sprint, locationOf, defer} from \"./utils/core\";\nimport Queue from \"./utils/queue\";\nimport EpubCFI from \"./epubcfi\";\nimport { EVENTS } from \"./utils/constants\";\nimport EventEmitter from \"event-emitter\";\n\n/**\n * Find Locations for a Book\n * @param {Spine} spine\n * @param {request} request\n * @param {number} [pause=100]\n */\nclass Locations {\n\tconstructor(spine, request, pause) {\n\t\tthis.spine = spine;\n\t\tthis.request = request;\n\t\tthis.pause = pause || 100;\n\n\t\tthis.q = new Queue(this);\n\t\tthis.epubcfi = new EpubCFI();\n\n\t\tthis._locations = [];\n\t\tthis._locationsWords = [];\n\t\tthis.total = 0;\n\n\t\tthis.break = 150;\n\n\t\tthis._current = 0;\n\n\t\tthis._wordCounter = 0;\n\n\t\tthis.currentLocation = '';\n\t\tthis._currentCfi ='';\n\t\tthis.processingTimeout = undefined;\n\t}\n\n\t/**\n\t * Load all of sections in the book to generate locations\n\t * @param {int} chars how many chars to split on\n\t * @return {Promise>} locations\n\t */\n\tgenerate(chars) {\n\n\t\tif (chars) {\n\t\t\tthis.break = chars;\n\t\t}\n\n\t\tthis.q.pause();\n\n\t\tthis.spine.each(function(section) {\n\t\t\tif (section.linear) {\n\t\t\t\tthis.q.enqueue(this.process.bind(this), section);\n\t\t\t}\n\t\t}.bind(this));\n\n\t\treturn this.q.run().then(function() {\n\t\t\tthis.total = this._locations.length - 1;\n\n\t\t\tif (this._currentCfi) {\n\t\t\t\tthis.currentLocation = this._currentCfi;\n\t\t\t}\n\n\t\t\treturn this._locations;\n\t\t\t// console.log(this.percentage(this.book.rendition.location.start), this.percentage(this.book.rendition.location.end));\n\t\t}.bind(this));\n\n\t}\n\n\tcreateRange () {\n\t\treturn {\n\t\t\tstartContainer: undefined,\n\t\t\tstartOffset: undefined,\n\t\t\tendContainer: undefined,\n\t\t\tendOffset: undefined\n\t\t};\n\t}\n\n\tprocess(section) {\n\n\t\treturn section.load(this.request)\n\t\t\t.then(function(contents) {\n\t\t\t\tvar completed = new defer();\n\t\t\t\tvar locations = this.parse(contents, section.cfiBase);\n\t\t\t\tthis._locations = this._locations.concat(locations);\n\n\t\t\t\tsection.unload();\n\n\t\t\t\tthis.processingTimeout = setTimeout(() => completed.resolve(locations), this.pause);\n\t\t\t\treturn completed.promise;\n\t\t\t}.bind(this));\n\n\t}\n\n\tparse(contents, cfiBase, chars) {\n\t\tvar locations = [];\n\t\tvar range;\n\t\tvar doc = contents.ownerDocument;\n\t\tvar body = qs(doc, \"body\");\n\t\tvar counter = 0;\n\t\tvar prev;\n\t\tvar _break = chars || this.break;\n\t\tvar parser = function(node) {\n\t\t\tvar len = node.length;\n\t\t\tvar dist;\n\t\t\tvar pos = 0;\n\n\t\t\tif (node.textContent.trim().length === 0) {\n\t\t\t\treturn false; // continue\n\t\t\t}\n\n\t\t\t// Start range\n\t\t\tif (counter == 0) {\n\t\t\t\trange = this.createRange();\n\t\t\t\trange.startContainer = node;\n\t\t\t\trange.startOffset = 0;\n\t\t\t}\n\n\t\t\tdist = _break - counter;\n\n\t\t\t// Node is smaller than a break,\n\t\t\t// skip over it\n\t\t\tif(dist > len){\n\t\t\t\tcounter += len;\n\t\t\t\tpos = len;\n\t\t\t}\n\n\n\t\t\twhile (pos < len) {\n\t\t\t\tdist = _break - counter;\n\n\t\t\t\tif (counter === 0) {\n\t\t\t\t\t// Start new range\n\t\t\t\t\tpos += 1;\n\t\t\t\t\trange = this.createRange();\n\t\t\t\t\trange.startContainer = node;\n\t\t\t\t\trange.startOffset = pos;\n\t\t\t\t}\n\n\t\t\t\t// pos += dist;\n\n\t\t\t\t// Gone over\n\t\t\t\tif(pos + dist >= len){\n\t\t\t\t\t// Continue counter for next node\n\t\t\t\t\tcounter += len - pos;\n\t\t\t\t\t// break\n\t\t\t\t\tpos = len;\n\t\t\t\t// At End\n\t\t\t\t} else {\n\t\t\t\t\t// Advance pos\n\t\t\t\t\tpos += dist;\n\n\t\t\t\t\t// End the previous range\n\t\t\t\t\trange.endContainer = node;\n\t\t\t\t\trange.endOffset = pos;\n\t\t\t\t\t// cfi = section.cfiFromRange(range);\n\t\t\t\t\tlet cfi = new EpubCFI(range, cfiBase).toString();\n\t\t\t\t\tlocations.push(cfi);\n\t\t\t\t\tcounter = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tprev = node;\n\t\t};\n\n\t\tsprint(body, parser.bind(this));\n\n\t\t// Close remaining\n\t\tif (range && range.startContainer && prev) {\n\t\t\trange.endContainer = prev;\n\t\t\trange.endOffset = prev.length;\n\t\t\tlet cfi = new EpubCFI(range, cfiBase).toString();\n\t\t\tlocations.push(cfi);\n\t\t\tcounter = 0;\n\t\t}\n\n\t\treturn locations;\n\t}\n\n\n\t/**\n\t * Load all of sections in the book to generate locations\n\t * @param {string} startCfi start position\n\t * @param {int} wordCount how many words to split on\n\t * @param {int} count result count\n\t * @return {object} locations\n\t */\n\tgenerateFromWords(startCfi, wordCount, count) {\n\t\tvar start = startCfi ? new EpubCFI(startCfi) : undefined;\n\t\tthis.q.pause();\n\t\tthis._locationsWords = [];\n\t\tthis._wordCounter = 0;\n\n\t\tthis.spine.each(function(section) {\n\t\t\tif (section.linear) {\n\t\t\t\tif (start) {\n\t\t\t\t\tif (section.index >= start.spinePos) {\n\t\t\t\t\t\tthis.q.enqueue(this.processWords.bind(this), section, wordCount, start, count);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.q.enqueue(this.processWords.bind(this), section, wordCount, start, count);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(this));\n\n\t\treturn this.q.run().then(function() {\n\t\t\tif (this._currentCfi) {\n\t\t\t\tthis.currentLocation = this._currentCfi;\n\t\t\t}\n\n\t\t\treturn this._locationsWords;\n\t\t}.bind(this));\n\n\t}\n\n\tprocessWords(section, wordCount, startCfi, count) {\n\t\tif (count && this._locationsWords.length >= count) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn section.load(this.request)\n\t\t\t.then(function(contents) {\n\t\t\t\tvar completed = new defer();\n\t\t\t\tvar locations = this.parseWords(contents, section, wordCount, startCfi);\n\t\t\t\tvar remainingCount = count - this._locationsWords.length;\n\t\t\t\tthis._locationsWords = this._locationsWords.concat(locations.length >= count ? locations.slice(0, remainingCount) : locations);\n\n\t\t\t\tsection.unload();\n\n\t\t\t\tthis.processingTimeout = setTimeout(() => completed.resolve(locations), this.pause);\n\t\t\t\treturn completed.promise;\n\t\t\t}.bind(this));\n\t}\n\n\t//http://stackoverflow.com/questions/18679576/counting-words-in-string\n\tcountWords(s) {\n\t\ts = s.replace(/(^\\s*)|(\\s*$)/gi, \"\");//exclude start and end white-space\n\t\ts = s.replace(/[ ]{2,}/gi, \" \");//2 or more space to 1\n\t\ts = s.replace(/\\n /, \"\\n\"); // exclude newline with a start spacing\n\t\treturn s.split(\" \").length;\n\t}\n\n\tparseWords(contents, section, wordCount, startCfi) {\n\t\tvar cfiBase = section.cfiBase;\n\t\tvar locations = [];\n\t\tvar doc = contents.ownerDocument;\n\t\tvar body = qs(doc, \"body\");\n\t\tvar prev;\n\t\tvar _break = wordCount;\n\t\tvar foundStartNode = startCfi ? startCfi.spinePos !== section.index : true;\n\t\tvar startNode;\n\t\tif (startCfi && section.index === startCfi.spinePos) {\n\t\t\tstartNode = startCfi.findNode(startCfi.range ? startCfi.path.steps.concat(startCfi.start.steps) : startCfi.path.steps, contents.ownerDocument);\n\t\t}\n\t\tvar parser = function(node) {\n\t\t\tif (!foundStartNode) {\n\t\t\t\tif (node === startNode) {\n\t\t\t\t\tfoundStartNode = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (node.textContent.length < 10) {\n\t\t\t\tif (node.textContent.trim().length === 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar len = this.countWords(node.textContent);\n\t\t\tvar dist;\n\t\t\tvar pos = 0;\n\n\t\t\tif (len === 0) {\n\t\t\t\treturn false; // continue\n\t\t\t}\n\n\t\t\tdist = _break - this._wordCounter;\n\n\t\t\t// Node is smaller than a break,\n\t\t\t// skip over it\n\t\t\tif (dist > len) {\n\t\t\t\tthis._wordCounter += len;\n\t\t\t\tpos = len;\n\t\t\t}\n\n\n\t\t\twhile (pos < len) {\n\t\t\t\tdist = _break - this._wordCounter;\n\n\t\t\t\t// Gone over\n\t\t\t\tif (pos + dist >= len) {\n\t\t\t\t\t// Continue counter for next node\n\t\t\t\t\tthis._wordCounter += len - pos;\n\t\t\t\t\t// break\n\t\t\t\t\tpos = len;\n\t\t\t\t\t// At End\n\t\t\t\t} else {\n\t\t\t\t\t// Advance pos\n\t\t\t\t\tpos += dist;\n\n\t\t\t\t\tlet cfi = new EpubCFI(node, cfiBase);\n\t\t\t\t\tlocations.push({ cfi: cfi.toString(), wordCount: this._wordCounter });\n\t\t\t\t\tthis._wordCounter = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tprev = node;\n\t\t};\n\n\t\tsprint(body, parser.bind(this));\n\n\t\treturn locations;\n\t}\n\n\t/**\n\t * Get a location from an EpubCFI\n\t * @param {EpubCFI} cfi\n\t * @return {number}\n\t */\n\tlocationFromCfi(cfi){\n\t\tlet loc;\n\t\tif (EpubCFI.prototype.isCfiString(cfi)) {\n\t\t\tcfi = new EpubCFI(cfi);\n\t\t}\n\t\t// Check if the location has not been set yet\n\t\tif(this._locations.length === 0) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tloc = locationOf(cfi, this._locations, this.epubcfi.compare);\n\n\t\tif (loc > this.total) {\n\t\t\treturn this.total;\n\t\t}\n\n\t\treturn loc;\n\t}\n\n\t/**\n\t * Get a percentage position in locations from an EpubCFI\n\t * @param {EpubCFI} cfi\n\t * @return {number}\n\t */\n\tpercentageFromCfi(cfi) {\n\t\tif(this._locations.length === 0) {\n\t\t\treturn null;\n\t\t}\n\t\t// Find closest cfi\n\t\tvar loc = this.locationFromCfi(cfi);\n\t\t// Get percentage in total\n\t\treturn this.percentageFromLocation(loc);\n\t}\n\n\t/**\n\t * Get a percentage position from a location index\n\t * @param {number} location\n\t * @return {number}\n\t */\n\tpercentageFromLocation(loc) {\n\t\tif (!loc || !this.total) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn (loc / this.total);\n\t}\n\n\t/**\n\t * Get an EpubCFI from location index\n\t * @param {number} loc\n\t * @return {EpubCFI} cfi\n\t */\n\tcfiFromLocation(loc){\n\t\tvar cfi = -1;\n\t\t// check that pg is an int\n\t\tif(typeof loc != \"number\"){\n\t\t\tloc = parseInt(loc);\n\t\t}\n\n\t\tif(loc >= 0 && loc < this._locations.length) {\n\t\t\tcfi = this._locations[loc];\n\t\t}\n\n\t\treturn cfi;\n\t}\n\n\t/**\n\t * Get an EpubCFI from location percentage\n\t * @param {number} percentage\n\t * @return {EpubCFI} cfi\n\t */\n\tcfiFromPercentage(percentage){\n\t\tlet loc;\n\t\tif (percentage > 1) {\n\t\t\tconsole.warn(\"Normalize cfiFromPercentage value to between 0 - 1\");\n\t\t}\n\n\t\t// Make sure 1 goes to very end\n\t\tif (percentage >= 1) {\n\t\t\tlet cfi = new EpubCFI(this._locations[this.total]);\n\t\t\tcfi.collapse();\n\t\t\treturn cfi.toString();\n\t\t}\n\n\t\tloc = Math.ceil(this.total * percentage);\n\t\treturn this.cfiFromLocation(loc);\n\t}\n\n\t/**\n\t * Load locations from JSON\n\t * @param {json} locations\n\t */\n\tload(locations){\n\t\tif (typeof locations === \"string\") {\n\t\t\tthis._locations = JSON.parse(locations);\n\t\t} else {\n\t\t\tthis._locations = locations;\n\t\t}\n\t\tthis.total = this._locations.length - 1;\n\t\treturn this._locations;\n\t}\n\n\t/**\n\t * Save locations to JSON\n\t * @return {json}\n\t */\n\tsave(){\n\t\treturn JSON.stringify(this._locations);\n\t}\n\n\tgetCurrent(){\n\t\treturn this._current;\n\t}\n\n\tsetCurrent(curr){\n\t\tvar loc;\n\n\t\tif(typeof curr == \"string\"){\n\t\t\tthis._currentCfi = curr;\n\t\t} else if (typeof curr == \"number\") {\n\t\t\tthis._current = curr;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tif(this._locations.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(typeof curr == \"string\"){\n\t\t\tloc = this.locationFromCfi(curr);\n\t\t\tthis._current = loc;\n\t\t} else {\n\t\t\tloc = curr;\n\t\t}\n\n\t\tthis.emit(EVENTS.LOCATIONS.CHANGED, {\n\t\t\tpercentage: this.percentageFromLocation(loc)\n\t\t});\n\t}\n\n\t/**\n\t * Get the current location\n\t */\n\tget currentLocation() {\n\t\treturn this._current;\n\t}\n\n\t/**\n\t * Set the current location\n\t */\n\tset currentLocation(curr) {\n\t\tthis.setCurrent(curr);\n\t}\n\n\t/**\n\t * Locations length\n\t */\n\tlength () {\n\t\treturn this._locations.length;\n\t}\n\n\tdestroy () {\n\t\tthis.spine = undefined;\n\t\tthis.request = undefined;\n\t\tthis.pause = undefined;\n\n\t\tthis.q.stop();\n\t\tthis.q = undefined;\n\t\tthis.epubcfi = undefined;\n\n\t\tthis._locations = undefined\n\t\tthis.total = undefined;\n\n\t\tthis.break = undefined;\n\t\tthis._current = undefined;\n\n\t\tthis.currentLocation = undefined;\n\t\tthis._currentCfi = undefined;\n\t\tclearTimeout(this.processingTimeout);\n\t}\n}\n\nEventEmitter(Locations.prototype);\n\nexport default Locations;\n","import path from \"path-webpack\";\nimport {qs} from \"./utils/core\";\n\n/**\n * Handles Parsing and Accessing an Epub Container\n * @class\n * @param {document} [containerDocument] xml document\n */\nclass Container {\n\tconstructor(containerDocument) {\n\t\tthis.packagePath = '';\n\t\tthis.directory = '';\n\t\tthis.encoding = '';\n\n\t\tif (containerDocument) {\n\t\t\tthis.parse(containerDocument);\n\t\t}\n\t}\n\n\t/**\n\t * Parse the Container XML\n\t * @param {document} containerDocument\n\t */\n\tparse(containerDocument){\n\t\t//-- \n\t\tvar rootfile;\n\n\t\tif(!containerDocument) {\n\t\t\tthrow new Error(\"Container File Not Found\");\n\t\t}\n\n\t\trootfile = qs(containerDocument, \"rootfile\");\n\n\t\tif(!rootfile) {\n\t\t\tthrow new Error(\"No RootFile Found\");\n\t\t}\n\n\t\tthis.packagePath = rootfile.getAttribute(\"full-path\");\n\t\tthis.directory = path.dirname(this.packagePath);\n\t\tthis.encoding = containerDocument.xmlEncoding;\n\t}\n\n\tdestroy() {\n\t\tthis.packagePath = undefined;\n\t\tthis.directory = undefined;\n\t\tthis.encoding = undefined;\n\t}\n}\n\nexport default Container;\n","import {qs, qsa, qsp, indexOfElementNode} from \"./utils/core\";\n\n/**\n * Open Packaging Format Parser\n * @class\n * @param {document} packageDocument OPF XML\n */\nclass Packaging {\n\tconstructor(packageDocument) {\n\t\tthis.manifest = {};\n\t\tthis.navPath = '';\n\t\tthis.ncxPath = '';\n\t\tthis.coverPath = '';\n\t\tthis.spineNodeIndex = 0;\n\t\tthis.spine = [];\n\t\tthis.metadata = {};\n\n\t\tif (packageDocument) {\n\t\t\tthis.parse(packageDocument);\n\t\t}\n\t}\n\n\t/**\n\t * Parse OPF XML\n\t * @param {document} packageDocument OPF XML\n\t * @return {object} parsed package parts\n\t */\n\tparse(packageDocument){\n\t\tvar metadataNode, manifestNode, spineNode;\n\n\t\tif(!packageDocument) {\n\t\t\tthrow new Error(\"Package File Not Found\");\n\t\t}\n\n\t\tmetadataNode = qs(packageDocument, \"metadata\");\n\t\tif(!metadataNode) {\n\t\t\tthrow new Error(\"No Metadata Found\");\n\t\t}\n\n\t\tmanifestNode = qs(packageDocument, \"manifest\");\n\t\tif(!manifestNode) {\n\t\t\tthrow new Error(\"No Manifest Found\");\n\t\t}\n\n\t\tspineNode = qs(packageDocument, \"spine\");\n\t\tif(!spineNode) {\n\t\t\tthrow new Error(\"No Spine Found\");\n\t\t}\n\n\t\tthis.manifest = this.parseManifest(manifestNode);\n\t\tthis.navPath = this.findNavPath(manifestNode);\n\t\tthis.ncxPath = this.findNcxPath(manifestNode, spineNode);\n\t\tthis.coverPath = this.findCoverPath(packageDocument);\n\n\t\tthis.spineNodeIndex = indexOfElementNode(spineNode);\n\n\t\tthis.spine = this.parseSpine(spineNode, this.manifest);\n\n\t\tthis.uniqueIdentifier = this.findUniqueIdentifier(packageDocument);\n\t\tthis.metadata = this.parseMetadata(metadataNode);\n\n\t\tthis.metadata.direction = spineNode.getAttribute(\"page-progression-direction\");\n\n\t\treturn {\n\t\t\t\"metadata\" : this.metadata,\n\t\t\t\"spine\" : this.spine,\n\t\t\t\"manifest\" : this.manifest,\n\t\t\t\"navPath\" : this.navPath,\n\t\t\t\"ncxPath\" : this.ncxPath,\n\t\t\t\"coverPath\": this.coverPath,\n\t\t\t\"spineNodeIndex\" : this.spineNodeIndex\n\t\t};\n\t}\n\n\t/**\n\t * Parse Metadata\n\t * @private\n\t * @param {node} xml\n\t * @return {object} metadata\n\t */\n\tparseMetadata(xml){\n\t\tvar metadata = {};\n\n\t\tmetadata.title = this.getElementText(xml, \"title\");\n\t\tmetadata.creator = this.getElementText(xml, \"creator\");\n\t\tmetadata.description = this.getElementText(xml, \"description\");\n\n\t\tmetadata.pubdate = this.getElementText(xml, \"date\");\n\n\t\tmetadata.publisher = this.getElementText(xml, \"publisher\");\n\n\t\tmetadata.identifier = this.getElementText(xml, \"identifier\");\n\t\tmetadata.language = this.getElementText(xml, \"language\");\n\t\tmetadata.rights = this.getElementText(xml, \"rights\");\n\n\t\tmetadata.modified_date = this.getPropertyText(xml, \"dcterms:modified\");\n\n\t\tmetadata.layout = this.getPropertyText(xml, \"rendition:layout\");\n\t\tmetadata.orientation = this.getPropertyText(xml, \"rendition:orientation\");\n\t\tmetadata.flow = this.getPropertyText(xml, \"rendition:flow\");\n\t\tmetadata.viewport = this.getPropertyText(xml, \"rendition:viewport\");\n\t\tmetadata.media_active_class = this.getPropertyText(xml, \"media:active-class\");\n\t\tmetadata.spread = this.getPropertyText(xml, \"rendition:spread\");\n\t\t// metadata.page_prog_dir = packageXml.querySelector(\"spine\").getAttribute(\"page-progression-direction\");\n\n\t\treturn metadata;\n\t}\n\n\t/**\n\t * Parse Manifest\n\t * @private\n\t * @param {node} manifestXml\n\t * @return {object} manifest\n\t */\n\tparseManifest(manifestXml){\n\t\tvar manifest = {};\n\n\t\t//-- Turn items into an array\n\t\t// var selected = manifestXml.querySelectorAll(\"item\");\n\t\tvar selected = qsa(manifestXml, \"item\");\n\t\tvar items = Array.prototype.slice.call(selected);\n\n\t\t//-- Create an object with the id as key\n\t\titems.forEach(function(item){\n\t\t\tvar id = item.getAttribute(\"id\"),\n\t\t\t\t\thref = item.getAttribute(\"href\") || \"\",\n\t\t\t\t\ttype = item.getAttribute(\"media-type\") || \"\",\n\t\t\t\t\toverlay = item.getAttribute(\"media-overlay\") || \"\",\n\t\t\t\t\tproperties = item.getAttribute(\"properties\") || \"\";\n\n\t\t\tmanifest[id] = {\n\t\t\t\t\"href\" : href,\n\t\t\t\t// \"url\" : href,\n\t\t\t\t\"type\" : type,\n\t\t\t\t\"overlay\" : overlay,\n\t\t\t\t\"properties\" : properties.length ? properties.split(\" \") : []\n\t\t\t};\n\n\t\t});\n\n\t\treturn manifest;\n\n\t}\n\n\t/**\n\t * Parse Spine\n\t * @private\n\t * @param {node} spineXml\n\t * @param {Packaging.manifest} manifest\n\t * @return {object} spine\n\t */\n\tparseSpine(spineXml, manifest){\n\t\tvar spine = [];\n\n\t\tvar selected = qsa(spineXml, \"itemref\");\n\t\tvar items = Array.prototype.slice.call(selected);\n\n\t\t// var epubcfi = new EpubCFI();\n\n\t\t//-- Add to array to maintain ordering and cross reference with manifest\n\t\titems.forEach(function(item, index){\n\t\t\tvar idref = item.getAttribute(\"idref\");\n\t\t\t// var cfiBase = epubcfi.generateChapterComponent(spineNodeIndex, index, Id);\n\t\t\tvar props = item.getAttribute(\"properties\") || \"\";\n\t\t\tvar propArray = props.length ? props.split(\" \") : [];\n\t\t\t// var manifestProps = manifest[Id].properties;\n\t\t\t// var manifestPropArray = manifestProps.length ? manifestProps.split(\" \") : [];\n\n\t\t\tvar itemref = {\n\t\t\t\t\"id\" : item.getAttribute(\"id\"),\n\t\t\t\t\"idref\" : idref,\n\t\t\t\t\"linear\" : item.getAttribute(\"linear\") || \"yes\",\n\t\t\t\t\"properties\" : propArray,\n\t\t\t\t// \"href\" : manifest[Id].href,\n\t\t\t\t// \"url\" : manifest[Id].url,\n\t\t\t\t\"index\" : index\n\t\t\t\t// \"cfiBase\" : cfiBase\n\t\t\t};\n\t\t\tspine.push(itemref);\n\t\t});\n\n\t\treturn spine;\n\t}\n\n\t/**\n\t * Find Unique Identifier\n\t * @private\n\t * @param {node} packageXml\n\t * @return {string} Unique Identifier text\n\t */\n\tfindUniqueIdentifier(packageXml){\n\t\tvar uniqueIdentifierId = packageXml.documentElement.getAttribute(\"unique-identifier\");\n\t\tif (! uniqueIdentifierId) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar identifier = packageXml.getElementById(uniqueIdentifierId);\n\t\tif (! identifier) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tif (identifier.localName === \"identifier\" && identifier.namespaceURI === \"http://purl.org/dc/elements/1.1/\") {\n\t\t\treturn identifier.childNodes.length > 0 ? identifier.childNodes[0].nodeValue.trim() : \"\";\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * Find TOC NAV\n\t * @private\n\t * @param {element} manifestNode\n\t * @return {string}\n\t */\n\tfindNavPath(manifestNode){\n\t\t// Find item with property \"nav\"\n\t\t// Should catch nav regardless of order\n\t\t// var node = manifestNode.querySelector(\"item[properties$='nav'], item[properties^='nav '], item[properties*=' nav ']\");\n\t\tvar node = qsp(manifestNode, \"item\", {\"properties\":\"nav\"});\n\t\treturn node ? node.getAttribute(\"href\") : false;\n\t}\n\n\t/**\n\t * Find TOC NCX\n\t * media-type=\"application/x-dtbncx+xml\" href=\"toc.ncx\"\n\t * @private\n\t * @param {element} manifestNode\n\t * @param {element} spineNode\n\t * @return {string}\n\t */\n\tfindNcxPath(manifestNode, spineNode){\n\t\t// var node = manifestNode.querySelector(\"item[media-type='application/x-dtbncx+xml']\");\n\t\tvar node = qsp(manifestNode, \"item\", {\"media-type\":\"application/x-dtbncx+xml\"});\n\t\tvar tocId;\n\n\t\t// If we can't find the toc by media-type then try to look for id of the item in the spine attributes as\n\t\t// according to http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2,\n\t\t// \"The item that describes the NCX must be referenced by the spine toc attribute.\"\n\t\tif (!node) {\n\t\t\ttocId = spineNode.getAttribute(\"toc\");\n\t\t\tif(tocId) {\n\t\t\t\t// node = manifestNode.querySelector(\"item[id='\" + tocId + \"']\");\n\t\t\t\tnode = manifestNode.querySelector(`#${tocId}`);\n\t\t\t}\n\t\t}\n\n\t\treturn node ? node.getAttribute(\"href\") : false;\n\t}\n\n\t/**\n\t * Find the Cover Path\n\t * \n\t * Fallback for Epub 2.0\n\t * @private\n\t * @param {node} packageXml\n\t * @return {string} href\n\t */\n\tfindCoverPath(packageXml){\n\t\tvar pkg = qs(packageXml, \"package\");\n\t\tvar epubVersion = pkg.getAttribute(\"version\");\n\t\t\n\t\t// Try parsing cover with epub 3.\n\t\t// var node = packageXml.querySelector(\"item[properties='cover-image']\");\n\t\tvar node = qsp(packageXml, \"item\", {\"properties\":\"cover-image\"});\n\t\tif (node) return node.getAttribute(\"href\");\n\t\t\n\t\t// Fallback to epub 2.\n\t\tvar metaCover = qsp(packageXml, \"meta\", {\"name\":\"cover\"});\n\n\t\tif (metaCover) {\n\t\t\tvar coverId = metaCover.getAttribute(\"content\");\n\t\t\t// var cover = packageXml.querySelector(\"item[id='\" + coverId + \"']\");\n\t\t\tvar cover = packageXml.getElementById(coverId);\n\t\t\treturn cover ? cover.getAttribute(\"href\") : \"\";\n\t\t}\n\t\telse {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Get text of a namespaced element\n\t * @private\n\t * @param {node} xml\n\t * @param {string} tag\n\t * @return {string} text\n\t */\n\tgetElementText(xml, tag){\n\t\tvar found = xml.getElementsByTagNameNS(\"http://purl.org/dc/elements/1.1/\", tag);\n\t\tvar el;\n\n\t\tif(!found || found.length === 0) return \"\";\n\n\t\tel = found[0];\n\n\t\tif(el.childNodes.length){\n\t\t\treturn el.childNodes[0].nodeValue;\n\t\t}\n\n\t\treturn \"\";\n\n\t}\n\n\t/**\n\t * Get text by property\n\t * @private\n\t * @param {node} xml\n\t * @param {string} property\n\t * @return {string} text\n\t */\n\tgetPropertyText(xml, property){\n\t\tvar el = qsp(xml, \"meta\", {\"property\":property});\n\n\t\tif(el && el.childNodes.length){\n\t\t\treturn el.childNodes[0].nodeValue;\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * Load JSON Manifest\n\t * @param {document} packageDocument OPF XML\n\t * @return {object} parsed package parts\n\t */\n\tload(json) {\n\t\tthis.metadata = json.metadata;\n\n\t\tlet spine = json.readingOrder || json.spine;\n\t\tthis.spine = spine.map((item, index) =>{\n\t\t\titem.index = index;\n\t\t\titem.linear = item.linear || \"yes\";\n\t\t\treturn item;\n\t\t});\n\n\t\tjson.resources.forEach((item, index) => {\n\t\t\tthis.manifest[index] = item;\n\n\t\t\tif (item.rel && item.rel[0] === \"cover\") {\n\t\t\t\tthis.coverPath = item.href;\n\t\t\t}\n\t\t});\n\n\t\tthis.spineNodeIndex = 0;\n\n\t\tthis.toc = json.toc.map((item, index) =>{\n\t\t\titem.label = item.title;\n\t\t\treturn item;\n\t\t});\n\n\t\treturn {\n\t\t\t\"metadata\" : this.metadata,\n\t\t\t\"spine\" : this.spine,\n\t\t\t\"manifest\" : this.manifest,\n\t\t\t\"navPath\" : this.navPath,\n\t\t\t\"ncxPath\" : this.ncxPath,\n\t\t\t\"coverPath\": this.coverPath,\n\t\t\t\"spineNodeIndex\" : this.spineNodeIndex,\n\t\t\t\"toc\" : this.toc\n\t\t};\n\t}\n\n\tdestroy() {\n\t\tthis.manifest = undefined;\n\t\tthis.navPath = undefined;\n\t\tthis.ncxPath = undefined;\n\t\tthis.coverPath = undefined;\n\t\tthis.spineNodeIndex = undefined;\n\t\tthis.spine = undefined;\n\t\tthis.metadata = undefined;\n\t}\n}\n\nexport default Packaging;\n","import {qs, qsa, querySelectorByType, filterChildren, getParentByTagName} from \"./utils/core\";\n\n/**\n * Navigation Parser\n * @param {document} xml navigation html / xhtml / ncx\n */\nclass Navigation {\n\tconstructor(xml) {\n\t\tthis.toc = [];\n\t\tthis.tocByHref = {};\n\t\tthis.tocById = {};\n\n\t\tthis.landmarks = [];\n\t\tthis.landmarksByType = {};\n\n\t\tthis.length = 0;\n\t\tif (xml) {\n\t\t\tthis.parse(xml);\n\t\t}\n\t}\n\n\t/**\n\t * Parse out the navigation items\n\t * @param {document} xml navigation html / xhtml / ncx\n\t */\n\tparse(xml) {\n\t\tlet isXml = xml.nodeType;\n\t\tlet html;\n\t\tlet ncx;\n\n\t\tif (isXml) {\n\t\t\thtml = qs(xml, \"html\");\n\t\t\tncx = qs(xml, \"ncx\");\n\t\t}\n\n\t\tif (!isXml) {\n\t\t\tthis.toc = this.load(xml);\n\t\t} else if(html) {\n\t\t\tthis.toc = this.parseNav(xml);\n\t\t\tthis.landmarks = this.parseLandmarks(xml);\n\t\t} else if(ncx){\n\t\t\tthis.toc = this.parseNcx(xml);\n\t\t}\n\n\t\tthis.length = 0;\n\n\t\tthis.unpack(this.toc);\n\t}\n\n\t/**\n\t * Unpack navigation items\n\t * @private\n\t * @param {array} toc\n\t */\n\tunpack(toc) {\n\t\tvar item;\n\n\t\tfor (var i = 0; i < toc.length; i++) {\n\t\t\titem = toc[i];\n\n\t\t\tif (item.href) {\n\t\t\t\tthis.tocByHref[item.href] = i;\n\t\t\t}\n\n\t\t\tif (item.id) {\n\t\t\t\tthis.tocById[item.id] = i;\n\t\t\t}\n\n\t\t\tthis.length++;\n\n\t\t\tif (item.subitems.length) {\n\t\t\t\tthis.unpack(item.subitems);\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Get an item from the navigation\n\t * @param {string} target\n\t * @return {object} navItem\n\t */\n\tget(target) {\n\t\tvar index;\n\n\t\tif(!target) {\n\t\t\treturn this.toc;\n\t\t}\n\n\t\tif(target.indexOf(\"#\") === 0) {\n\t\t\tindex = this.tocById[target.substring(1)];\n\t\t} else if(target in this.tocByHref){\n\t\t\tindex = this.tocByHref[target];\n\t\t}\n\n\t\treturn this.getByIndex(target, index, this.toc);\n\t}\n\n\t/**\n\t * Get an item from navigation subitems recursively by index\n\t * @param {string} target\n\t * @param {number} index\n\t * @param {array} navItems\n\t * @return {object} navItem\n\t */\n\tgetByIndex(target, index, navItems) {\n\t\tif (navItems.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst item = navItems[index];\n\t\tif (item && (target === item.id || target === item.href)) {\n\t\t\treturn item;\n\t\t} else {\n\t\t\tlet result;\n\t\t\tfor (let i = 0; i < navItems.length; ++i) {\n\t\t\t\tresult = this.getByIndex(target, index, navItems[i].subitems);\n\t\t\t\tif (result) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\t/**\n\t * Get a landmark by type\n\t * List of types: https://idpf.github.io/epub-vocabs/structure/\n\t * @param {string} type\n\t * @return {object} landmarkItem\n\t */\n\tlandmark(type) {\n\t\tvar index;\n\n\t\tif(!type) {\n\t\t\treturn this.landmarks;\n\t\t}\n\n\t\tindex = this.landmarksByType[type];\n\n\t\treturn this.landmarks[index];\n\t}\n\n\t/**\n\t * Parse toc from a Epub > 3.0 Nav\n\t * @private\n\t * @param {document} navHtml\n\t * @return {array} navigation list\n\t */\n\tparseNav(navHtml){\n\t\tvar navElement = querySelectorByType(navHtml, \"nav\", \"toc\");\n\t\tvar list = [];\n\n\t\tif (!navElement) return list;\n\n\t\tlet navList = filterChildren(navElement, \"ol\", true);\n\t\tif (!navList) return list;\n\n\t\tlist = this.parseNavList(navList);\n\t\treturn list;\n\t}\n\n\t/**\n\t * Parses lists in the toc\n\t * @param {document} navListHtml\n\t * @param {string} parent id\n\t * @return {array} navigation list\n\t */\n\tparseNavList(navListHtml, parent) {\n\t\tconst result = [];\n\n\t\tif (!navListHtml) return result;\n\t\tif (!navListHtml.children) return result;\n\t\t\n\t\tfor (let i = 0; i < navListHtml.children.length; i++) {\n\t\t\tconst item = this.navItem(navListHtml.children[i], parent);\n\n\t\t\tif (item) {\n\t\t\t\tresult.push(item);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Create a navItem\n\t * @private\n\t * @param {element} item\n\t * @return {object} navItem\n\t */\n\tnavItem(item, parent) {\n\t\tlet id = item.getAttribute(\"id\") || undefined;\n\t\tlet content = filterChildren(item, \"a\", true)\n\t\t\t|| filterChildren(item, \"span\", true);\n\n\t\tif (!content) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet src = content.getAttribute(\"href\") || \"\";\n\t\t\n\t\tif (!id) {\n\t\t\tid = src;\n\t\t}\n\t\tlet text = content.textContent || \"\";\n\n\t\tlet subitems = [];\n\t\tlet nested = filterChildren(item, \"ol\", true);\n\t\tif (nested) {\n\t\t\tsubitems = \tthis.parseNavList(nested, id);\n\t\t}\n\n\t\treturn {\n\t\t\t\"id\": id,\n\t\t\t\"href\": src,\n\t\t\t\"label\": text,\n\t\t\t\"subitems\" : subitems,\n\t\t\t\"parent\" : parent\n\t\t};\n\t}\n\n\t/**\n\t * Parse landmarks from a Epub > 3.0 Nav\n\t * @private\n\t * @param {document} navHtml\n\t * @return {array} landmarks list\n\t */\n\tparseLandmarks(navHtml){\n\t\tvar navElement = querySelectorByType(navHtml, \"nav\", \"landmarks\");\n\t\tvar navItems = navElement ? qsa(navElement, \"li\") : [];\n\t\tvar length = navItems.length;\n\t\tvar i;\n\t\tvar list = [];\n\t\tvar item;\n\n\t\tif(!navItems || length === 0) return list;\n\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\titem = this.landmarkItem(navItems[i]);\n\t\t\tif (item) {\n\t\t\t\tlist.push(item);\n\t\t\t\tthis.landmarksByType[item.type] = i;\n\t\t\t}\n\t\t}\n\n\t\treturn list;\n\t}\n\n\t/**\n\t * Create a landmarkItem\n\t * @private\n\t * @param {element} item\n\t * @return {object} landmarkItem\n\t */\n\tlandmarkItem(item){\n\t\tlet content = filterChildren(item, \"a\", true);\n\n\t\tif (!content) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet type = content.getAttributeNS(\"http://www.idpf.org/2007/ops\", \"type\") || undefined;\n\t\tlet href = content.getAttribute(\"href\") || \"\";\n\t\tlet text = content.textContent || \"\";\n\n\t\treturn {\n\t\t\t\"href\": href,\n\t\t\t\"label\": text,\n\t\t\t\"type\" : type\n\t\t};\n\t}\n\n\t/**\n\t * Parse from a Epub > 3.0 NC\n\t * @private\n\t * @param {document} navHtml\n\t * @return {array} navigation list\n\t */\n\tparseNcx(tocXml){\n\t\tvar navPoints = qsa(tocXml, \"navPoint\");\n\t\tvar length = navPoints.length;\n\t\tvar i;\n\t\tvar toc = {};\n\t\tvar list = [];\n\t\tvar item, parent;\n\n\t\tif(!navPoints || length === 0) return list;\n\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\titem = this.ncxItem(navPoints[i]);\n\t\t\ttoc[item.id] = item;\n\t\t\tif(!item.parent) {\n\t\t\t\tlist.push(item);\n\t\t\t} else {\n\t\t\t\tparent = toc[item.parent];\n\t\t\t\tparent.subitems.push(item);\n\t\t\t}\n\t\t}\n\n\t\treturn list;\n\t}\n\n\t/**\n\t * Create a ncxItem\n\t * @private\n\t * @param {element} item\n\t * @return {object} ncxItem\n\t */\n\tncxItem(item){\n\t\tvar id = item.getAttribute(\"id\") || false,\n\t\t\t\tcontent = qs(item, \"content\"),\n\t\t\t\tsrc = content.getAttribute(\"src\"),\n\t\t\t\tnavLabel = qs(item, \"navLabel\"),\n\t\t\t\ttext = navLabel.textContent ? navLabel.textContent : \"\",\n\t\t\t\tsubitems = [],\n\t\t\t\tparentNode = item.parentNode,\n\t\t\t\tparent;\n\n\t\tif(parentNode && (parentNode.nodeName === \"navPoint\" || parentNode.nodeName.split(':').slice(-1)[0] === \"navPoint\")) {\n\t\t\tparent = parentNode.getAttribute(\"id\");\n\t\t}\n\n\n\t\treturn {\n\t\t\t\"id\": id,\n\t\t\t\"href\": src,\n\t\t\t\"label\": text,\n\t\t\t\"subitems\" : subitems,\n\t\t\t\"parent\" : parent\n\t\t};\n\t}\n\n\t/**\n\t * Load Spine Items\n\t * @param {object} json the items to be loaded\n\t * @return {Array} navItems\n\t */\n\tload(json) {\n\t\treturn json.map(item => {\n\t\t\titem.label = item.title;\n\t\t\titem.subitems = item.children ? this.load(item.children) : [];\n\t\t\treturn item;\n\t\t});\n\t}\n\n\t/**\n\t * forEach pass through\n\t * @param {Function} fn function to run on each item\n\t * @return {method} forEach loop\n\t */\n\tforEach(fn) {\n\t\treturn this.toc.forEach(fn);\n\t}\n}\n\nexport default Navigation;\n","/*\n From Zip.js, by Gildas Lormeau\nedited down\n */\n\nvar table = {\n\t\"application\" : {\n\t\t\"ecmascript\" : [ \"es\", \"ecma\" ],\n\t\t\"javascript\" : \"js\",\n\t\t\"ogg\" : \"ogx\",\n\t\t\"pdf\" : \"pdf\",\n\t\t\"postscript\" : [ \"ps\", \"ai\", \"eps\", \"epsi\", \"epsf\", \"eps2\", \"eps3\" ],\n\t\t\"rdf+xml\" : \"rdf\",\n\t\t\"smil\" : [ \"smi\", \"smil\" ],\n\t\t\"xhtml+xml\" : [ \"xhtml\", \"xht\" ],\n\t\t\"xml\" : [ \"xml\", \"xsl\", \"xsd\", \"opf\", \"ncx\" ],\n\t\t\"zip\" : \"zip\",\n\t\t\"x-httpd-eruby\" : \"rhtml\",\n\t\t\"x-latex\" : \"latex\",\n\t\t\"x-maker\" : [ \"frm\", \"maker\", \"frame\", \"fm\", \"fb\", \"book\", \"fbdoc\" ],\n\t\t\"x-object\" : \"o\",\n\t\t\"x-shockwave-flash\" : [ \"swf\", \"swfl\" ],\n\t\t\"x-silverlight\" : \"scr\",\n\t\t\"epub+zip\" : \"epub\",\n\t\t\"font-tdpfr\" : \"pfr\",\n\t\t\"inkml+xml\" : [ \"ink\", \"inkml\" ],\n\t\t\"json\" : \"json\",\n\t\t\"jsonml+json\" : \"jsonml\",\n\t\t\"mathml+xml\" : \"mathml\",\n\t\t\"metalink+xml\" : \"metalink\",\n\t\t\"mp4\" : \"mp4s\",\n\t\t// \"oebps-package+xml\" : \"opf\",\n\t\t\"omdoc+xml\" : \"omdoc\",\n\t\t\"oxps\" : \"oxps\",\n\t\t\"vnd.amazon.ebook\" : \"azw\",\n\t\t\"widget\" : \"wgt\",\n\t\t// \"x-dtbncx+xml\" : \"ncx\",\n\t\t\"x-dtbook+xml\" : \"dtb\",\n\t\t\"x-dtbresource+xml\" : \"res\",\n\t\t\"x-font-bdf\" : \"bdf\",\n\t\t\"x-font-ghostscript\" : \"gsf\",\n\t\t\"x-font-linux-psf\" : \"psf\",\n\t\t\"x-font-otf\" : \"otf\",\n\t\t\"x-font-pcf\" : \"pcf\",\n\t\t\"x-font-snf\" : \"snf\",\n\t\t\"x-font-ttf\" : [ \"ttf\", \"ttc\" ],\n\t\t\"x-font-type1\" : [ \"pfa\", \"pfb\", \"pfm\", \"afm\" ],\n\t\t\"x-font-woff\" : \"woff\",\n\t\t\"x-mobipocket-ebook\" : [ \"prc\", \"mobi\" ],\n\t\t\"x-mspublisher\" : \"pub\",\n\t\t\"x-nzb\" : \"nzb\",\n\t\t\"x-tgif\" : \"obj\",\n\t\t\"xaml+xml\" : \"xaml\",\n\t\t\"xml-dtd\" : \"dtd\",\n\t\t\"xproc+xml\" : \"xpl\",\n\t\t\"xslt+xml\" : \"xslt\",\n\t\t\"internet-property-stream\" : \"acx\",\n\t\t\"x-compress\" : \"z\",\n\t\t\"x-compressed\" : \"tgz\",\n\t\t\"x-gzip\" : \"gz\",\n\t},\n\t\"audio\" : {\n\t\t\"flac\" : \"flac\",\n\t\t\"midi\" : [ \"mid\", \"midi\", \"kar\", \"rmi\" ],\n\t\t\"mpeg\" : [ \"mpga\", \"mpega\", \"mp2\", \"mp3\", \"m4a\", \"mp2a\", \"m2a\", \"m3a\" ],\n\t\t\"mpegurl\" : \"m3u\",\n\t\t\"ogg\" : [ \"oga\", \"ogg\", \"spx\" ],\n\t\t\"x-aiff\" : [ \"aif\", \"aiff\", \"aifc\" ],\n\t\t\"x-ms-wma\" : \"wma\",\n\t\t\"x-wav\" : \"wav\",\n\t\t\"adpcm\" : \"adp\",\n\t\t\"mp4\" : \"mp4a\",\n\t\t\"webm\" : \"weba\",\n\t\t\"x-aac\" : \"aac\",\n\t\t\"x-caf\" : \"caf\",\n\t\t\"x-matroska\" : \"mka\",\n\t\t\"x-pn-realaudio-plugin\" : \"rmp\",\n\t\t\"xm\" : \"xm\",\n\t\t\"mid\" : [ \"mid\", \"rmi\" ]\n\t},\n\t\"image\" : {\n\t\t\"gif\" : \"gif\",\n\t\t\"ief\" : \"ief\",\n\t\t\"jpeg\" : [ \"jpeg\", \"jpg\", \"jpe\" ],\n\t\t\"pcx\" : \"pcx\",\n\t\t\"png\" : \"png\",\n\t\t\"svg+xml\" : [ \"svg\", \"svgz\" ],\n\t\t\"tiff\" : [ \"tiff\", \"tif\" ],\n\t\t\"x-icon\" : \"ico\",\n\t\t\"bmp\" : \"bmp\",\n\t\t\"webp\" : \"webp\",\n\t\t\"x-pict\" : [ \"pic\", \"pct\" ],\n\t\t\"x-tga\" : \"tga\",\n\t\t\"cis-cod\" : \"cod\"\n\t},\n\t\"text\" : {\n\t\t\"cache-manifest\" : [ \"manifest\", \"appcache\" ],\n\t\t\"css\" : \"css\",\n\t\t\"csv\" : \"csv\",\n\t\t\"html\" : [ \"html\", \"htm\", \"shtml\", \"stm\" ],\n\t\t\"mathml\" : \"mml\",\n\t\t\"plain\" : [ \"txt\", \"text\", \"brf\", \"conf\", \"def\", \"list\", \"log\", \"in\", \"bas\" ],\n\t\t\"richtext\" : \"rtx\",\n\t\t\"tab-separated-values\" : \"tsv\",\n\t\t\"x-bibtex\" : \"bib\"\n\t},\n\t\"video\" : {\n\t\t\"mpeg\" : [ \"mpeg\", \"mpg\", \"mpe\", \"m1v\", \"m2v\", \"mp2\", \"mpa\", \"mpv2\" ],\n\t\t\"mp4\" : [ \"mp4\", \"mp4v\", \"mpg4\" ],\n\t\t\"quicktime\" : [ \"qt\", \"mov\" ],\n\t\t\"ogg\" : \"ogv\",\n\t\t\"vnd.mpegurl\" : [ \"mxu\", \"m4u\" ],\n\t\t\"x-flv\" : \"flv\",\n\t\t\"x-la-asf\" : [ \"lsf\", \"lsx\" ],\n\t\t\"x-mng\" : \"mng\",\n\t\t\"x-ms-asf\" : [ \"asf\", \"asx\", \"asr\" ],\n\t\t\"x-ms-wm\" : \"wm\",\n\t\t\"x-ms-wmv\" : \"wmv\",\n\t\t\"x-ms-wmx\" : \"wmx\",\n\t\t\"x-ms-wvx\" : \"wvx\",\n\t\t\"x-msvideo\" : \"avi\",\n\t\t\"x-sgi-movie\" : \"movie\",\n\t\t\"x-matroska\" : [ \"mpv\", \"mkv\", \"mk3d\", \"mks\" ],\n\t\t\"3gpp2\" : \"3g2\",\n\t\t\"h261\" : \"h261\",\n\t\t\"h263\" : \"h263\",\n\t\t\"h264\" : \"h264\",\n\t\t\"jpeg\" : \"jpgv\",\n\t\t\"jpm\" : [ \"jpm\", \"jpgm\" ],\n\t\t\"mj2\" : [ \"mj2\", \"mjp2\" ],\n\t\t\"vnd.ms-playready.media.pyv\" : \"pyv\",\n\t\t\"vnd.uvvu.mp4\" : [ \"uvu\", \"uvvu\" ],\n\t\t\"vnd.vivo\" : \"viv\",\n\t\t\"webm\" : \"webm\",\n\t\t\"x-f4v\" : \"f4v\",\n\t\t\"x-m4v\" : \"m4v\",\n\t\t\"x-ms-vob\" : \"vob\",\n\t\t\"x-smv\" : \"smv\"\n\t}\n};\n\nvar mimeTypes = (function() {\n\tvar type, subtype, val, index, mimeTypes = {};\n\tfor (type in table) {\n\t\tif (table.hasOwnProperty(type)) {\n\t\t\tfor (subtype in table[type]) {\n\t\t\t\tif (table[type].hasOwnProperty(subtype)) {\n\t\t\t\t\tval = table[type][subtype];\n\t\t\t\t\tif (typeof val == \"string\") {\n\t\t\t\t\t\tmimeTypes[val] = type + \"/\" + subtype;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (index = 0; index < val.length; index++) {\n\t\t\t\t\t\t\tmimeTypes[val[index]] = type + \"/\" + subtype;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn mimeTypes;\n})();\n\nvar defaultValue = \"text/plain\";//\"application/octet-stream\";\n\nfunction lookup(filename) {\n\treturn filename && mimeTypes[filename.split(\".\").pop().toLowerCase()] || defaultValue;\n};\n\nexport default { lookup };\n","import {substitute} from \"./utils/replacements\";\nimport {createBase64Url, createBlobUrl, blob2base64} from \"./utils/core\";\nimport Url from \"./utils/url\";\nimport mime from \"./utils/mime\";\nimport Path from \"./utils/path\";\nimport path from \"path-webpack\";\n\n/**\n * Handle Package Resources\n * @class\n * @param {Manifest} manifest\n * @param {object} [options]\n * @param {string} [options.replacements=\"base64\"]\n * @param {Archive} [options.archive]\n * @param {method} [options.resolver]\n */\nclass Resources {\n\tconstructor(manifest, options) {\n\t\tthis.settings = {\n\t\t\treplacements: (options && options.replacements) || \"base64\",\n\t\t\tarchive: (options && options.archive),\n\t\t\tresolver: (options && options.resolver),\n\t\t\trequest: (options && options.request)\n\t\t};\n\n\t\tthis.process(manifest);\n\t}\n\n\t/**\n\t * Process resources\n\t * @param {Manifest} manifest\n\t */\n\tprocess(manifest){\n\t\tthis.manifest = manifest;\n\t\tthis.resources = Object.keys(manifest).\n\t\t\tmap(function (key){\n\t\t\t\treturn manifest[key];\n\t\t\t});\n\n\t\tthis.replacementUrls = [];\n\n\t\tthis.html = [];\n\t\tthis.assets = [];\n\t\tthis.css = [];\n\n\t\tthis.urls = [];\n\t\tthis.cssUrls = [];\n\n\t\tthis.split();\n\t\tthis.splitUrls();\n\t}\n\n\t/**\n\t * Split resources by type\n\t * @private\n\t */\n\tsplit(){\n\n\t\t// HTML\n\t\tthis.html = this.resources.\n\t\t\tfilter(function (item){\n\t\t\t\tif (item.type === \"application/xhtml+xml\" ||\n\t\t\t\t\t\titem.type === \"text/html\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Exclude HTML\n\t\tthis.assets = this.resources.\n\t\t\tfilter(function (item){\n\t\t\t\tif (item.type !== \"application/xhtml+xml\" &&\n\t\t\t\t\t\titem.type !== \"text/html\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Only CSS\n\t\tthis.css = this.resources.\n\t\t\tfilter(function (item){\n\t\t\t\tif (item.type === \"text/css\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Convert split resources into Urls\n\t * @private\n\t */\n\tsplitUrls(){\n\n\t\t// All Assets Urls\n\t\tthis.urls = this.assets.\n\t\t\tmap(function(item) {\n\t\t\t\treturn item.href;\n\t\t\t}.bind(this));\n\n\t\t// Css Urls\n\t\tthis.cssUrls = this.css.map(function(item) {\n\t\t\treturn item.href;\n\t\t});\n\n\t}\n\n\t/**\n\t * Create a url to a resource\n\t * @param {string} url\n\t * @return {Promise} Promise resolves with url string\n\t */\n\tcreateUrl (url) {\n\t\tvar parsedUrl = new Url(url);\n\t\tvar mimeType = mime.lookup(parsedUrl.filename);\n\n\t\tif (this.settings.archive) {\n\t\t\treturn this.settings.archive.createUrl(url, {\"base64\": (this.settings.replacements === \"base64\")});\n\t\t} else {\n\t\t\tif (this.settings.replacements === \"base64\") {\n\t\t\t\treturn this.settings.request(url, 'blob')\n\t\t\t\t\t.then((blob) => {\n\t\t\t\t\t\treturn blob2base64(blob);\n\t\t\t\t\t})\n\t\t\t\t\t.then((blob) => {\n\t\t\t\t\t\treturn createBase64Url(blob, mimeType);\n\t\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn this.settings.request(url, 'blob').then((blob) => {\n\t\t\t\t\treturn createBlobUrl(blob, mimeType);\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Create blob urls for all the assets\n\t * @return {Promise} returns replacement urls\n\t */\n\treplacements(){\n\t\tif (this.settings.replacements === \"none\") {\n\t\t\treturn new Promise(function(resolve) {\n\t\t\t\tresolve(this.urls);\n\t\t\t}.bind(this));\n\t\t}\n\n\t\tvar replacements = this.urls.map( (url) => {\n\t\t\t\tvar absolute = this.settings.resolver(url);\n\n\t\t\t\treturn this.createUrl(absolute).\n\t\t\t\t\tcatch((err) => {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\t\t\t});\n\n\t\treturn Promise.all(replacements)\n\t\t\t.then( (replacementUrls) => {\n\t\t\t\tthis.replacementUrls = replacementUrls.filter((url) => {\n\t\t\t\t\treturn (typeof(url) === \"string\");\n\t\t\t\t});\n\t\t\t\treturn replacementUrls;\n\t\t\t});\n\t}\n\n\t/**\n\t * Replace URLs in CSS resources\n\t * @private\n\t * @param {Archive} [archive]\n\t * @param {method} [resolver]\n\t * @return {Promise}\n\t */\n\treplaceCss(archive, resolver){\n\t\tvar replaced = [];\n\t\tarchive = archive || this.settings.archive;\n\t\tresolver = resolver || this.settings.resolver;\n\t\tthis.cssUrls.forEach(function(href) {\n\t\t\tvar replacement = this.createCssFile(href, archive, resolver)\n\t\t\t\t.then(function (replacementUrl) {\n\t\t\t\t\t// switch the url in the replacementUrls\n\t\t\t\t\tvar indexInUrls = this.urls.indexOf(href);\n\t\t\t\t\tif (indexInUrls > -1) {\n\t\t\t\t\t\tthis.replacementUrls[indexInUrls] = replacementUrl;\n\t\t\t\t\t}\n\t\t\t\t}.bind(this))\n\n\n\t\t\treplaced.push(replacement);\n\t\t}.bind(this));\n\t\treturn Promise.all(replaced);\n\t}\n\n\t/**\n\t * Create a new CSS file with the replaced URLs\n\t * @private\n\t * @param {string} href the original css file\n\t * @return {Promise} returns a BlobUrl to the new CSS file or a data url\n\t */\n\tcreateCssFile(href){\n\t\tvar newUrl;\n\n\t\tif (path.isAbsolute(href)) {\n\t\t\treturn new Promise(function(resolve){\n\t\t\t\tresolve();\n\t\t\t});\n\t\t}\n\n\t\tvar absolute = this.settings.resolver(href);\n\n\t\t// Get the text of the css file from the archive\n\t\tvar textResponse;\n\n\t\tif (this.settings.archive) {\n\t\t\ttextResponse = this.settings.archive.getText(absolute);\n\t\t} else {\n\t\t\ttextResponse = this.settings.request(absolute, \"text\");\n\t\t}\n\n\t\t// Get asset links relative to css file\n\t\tvar relUrls = this.urls.map( (assetHref) => {\n\t\t\tvar resolved = this.settings.resolver(assetHref);\n\t\t\tvar relative = new Path(absolute).relative(resolved);\n\n\t\t\treturn relative;\n\t\t});\n\n\t\tif (!textResponse) {\n\t\t\t// file not found, don't replace\n\t\t\treturn new Promise(function(resolve){\n\t\t\t\tresolve();\n\t\t\t});\n\t\t}\n\n\t\treturn textResponse.then( (text) => {\n\t\t\t// Replacements in the css text\n\t\t\ttext = substitute(text, relUrls, this.replacementUrls);\n\n\t\t\t// Get the new url\n\t\t\tif (this.settings.replacements === \"base64\") {\n\t\t\t\tnewUrl = createBase64Url(text, \"text/css\");\n\t\t\t} else {\n\t\t\t\tnewUrl = createBlobUrl(text, \"text/css\");\n\t\t\t}\n\n\t\t\treturn newUrl;\n\t\t}, (err) => {\n\t\t\t// handle response errors\n\t\t\treturn new Promise(function(resolve){\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\n\t}\n\n\t/**\n\t * Resolve all resources URLs relative to an absolute URL\n\t * @param {string} absolute to be resolved to\n\t * @param {resolver} [resolver]\n\t * @return {string[]} array with relative Urls\n\t */\n\trelativeTo(absolute, resolver){\n\t\tresolver = resolver || this.settings.resolver;\n\n\t\t// Get Urls relative to current sections\n\t\treturn this.urls.\n\t\t\tmap(function(href) {\n\t\t\t\tvar resolved = resolver(href);\n\t\t\t\tvar relative = new Path(absolute).relative(resolved);\n\t\t\t\treturn relative;\n\t\t\t}.bind(this));\n\t}\n\n\t/**\n\t * Get a URL for a resource\n\t * @param {string} path\n\t * @return {string} url\n\t */\n\tget(path) {\n\t\tvar indexInUrls = this.urls.indexOf(path);\n\t\tif (indexInUrls === -1) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.replacementUrls.length) {\n\t\t\treturn new Promise(function(resolve, reject) {\n\t\t\t\tresolve(this.replacementUrls[indexInUrls]);\n\t\t\t}.bind(this));\n\t\t} else {\n\t\t\treturn this.createUrl(path);\n\t\t}\n\t}\n\n\t/**\n\t * Substitute urls in content, with replacements,\n\t * relative to a url if provided\n\t * @param {string} content\n\t * @param {string} [url] url to resolve to\n\t * @return {string} content with urls substituted\n\t */\n\tsubstitute(content, url) {\n\t\tvar relUrls;\n\t\tif (url) {\n\t\t\trelUrls = this.relativeTo(url);\n\t\t} else {\n\t\t\trelUrls = this.urls;\n\t\t}\n\t\treturn substitute(content, relUrls, this.replacementUrls);\n\t}\n\n\tdestroy() {\n\t\tthis.settings = undefined;\n\t\tthis.manifest = undefined;\n\t\tthis.resources = undefined;\n\t\tthis.replacementUrls = undefined;\n\t\tthis.html = undefined;\n\t\tthis.assets = undefined;\n\t\tthis.css = undefined;\n\n\t\tthis.urls = undefined;\n\t\tthis.cssUrls = undefined;\n\t}\n}\n\nexport default Resources;\n","import EpubCFI from \"./epubcfi\";\nimport {\n\tqs,\n\tqsa,\n\tquerySelectorByType,\n\tindexOfSorted,\n\tlocationOf\n} from \"./utils/core\";\n\n/**\n * Page List Parser\n * @param {document} [xml]\n */\nclass PageList {\n\tconstructor(xml) {\n\t\tthis.pages = [];\n\t\tthis.locations = [];\n\t\tthis.epubcfi = new EpubCFI();\n\n\t\tthis.firstPage = 0;\n\t\tthis.lastPage = 0;\n\t\tthis.totalPages = 0;\n\n\t\tthis.toc = undefined;\n\t\tthis.ncx = undefined;\n\n\t\tif (xml) {\n\t\t\tthis.pageList = this.parse(xml);\n\t\t}\n\n\t\tif(this.pageList && this.pageList.length) {\n\t\t\tthis.process(this.pageList);\n\t\t}\n\t}\n\n\t/**\n\t * Parse PageList Xml\n\t * @param {document} xml\n\t */\n\tparse(xml) {\n\t\tvar html = qs(xml, \"html\");\n\t\tvar ncx = qs(xml, \"ncx\");\n\n\t\tif(html) {\n\t\t\treturn this.parseNav(xml);\n\t\t} else if(ncx){\n\t\t\treturn this.parseNcx(xml);\n\t\t}\n\n\t}\n\n\t/**\n\t * Parse a Nav PageList\n\t * @private\n\t * @param {node} navHtml\n\t * @return {PageList.item[]} list\n\t */\n\tparseNav(navHtml){\n\t\tvar navElement = querySelectorByType(navHtml, \"nav\", \"page-list\");\n\t\tvar navItems = navElement ? qsa(navElement, \"li\") : [];\n\t\tvar length = navItems.length;\n\t\tvar i;\n\t\tvar list = [];\n\t\tvar item;\n\n\t\tif(!navItems || length === 0) return list;\n\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\titem = this.item(navItems[i]);\n\t\t\tlist.push(item);\n\t\t}\n\n\t\treturn list;\n\t}\n\n\tparseNcx(navXml) {\n\t\tvar list = [];\n\t\tvar i = 0;\n\t\tvar item;\n\t\tvar pageList;\n\t\tvar pageTargets;\n\t\tvar length = 0;\n\n\t\tpageList = qs(navXml, \"pageList\");\n\t\tif (!pageList) return list;\n\n\t\tpageTargets = qsa(pageList, \"pageTarget\");\n\t\tlength = pageTargets.length;\n\n\t\tif (!pageTargets || pageTargets.length === 0) {\n\t\t\treturn list;\n\t\t}\n\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\titem = this.ncxItem(pageTargets[i]);\n\t\t\tlist.push(item);\n\t\t}\n\n\t\treturn list;\n\t}\n\n\tncxItem(item) {\n\t\tvar navLabel = qs(item, \"navLabel\");\n\t\tvar navLabelText = qs(navLabel, \"text\");\n\t\tvar pageText = navLabelText.textContent;\n\t\tvar content = qs(item, \"content\");\n\n\t\tvar href = content.getAttribute(\"src\");\n\t\tvar page = parseInt(pageText, 10);\n\n\t\treturn {\n\t\t\t\"href\": href,\n\t\t\t\"page\": page,\n\t\t};\n\t}\n\n\t/**\n\t * Page List Item\n\t * @private\n\t * @param {node} item\n\t * @return {object} pageListItem\n\t */\n\titem(item){\n\t\tvar content = qs(item, \"a\"),\n\t\t\t\thref = content.getAttribute(\"href\") || \"\",\n\t\t\t\ttext = content.textContent || \"\",\n\t\t\t\tpage = parseInt(text),\n\t\t\t\tisCfi = href.indexOf(\"epubcfi\"),\n\t\t\t\tsplit,\n\t\t\t\tpackageUrl,\n\t\t\t\tcfi;\n\n\t\tif(isCfi != -1) {\n\t\t\tsplit = href.split(\"#\");\n\t\t\tpackageUrl = split[0];\n\t\t\tcfi = split.length > 1 ? split[1] : false;\n\t\t\treturn {\n\t\t\t\t\"cfi\" : cfi,\n\t\t\t\t\"href\" : href,\n\t\t\t\t\"packageUrl\" : packageUrl,\n\t\t\t\t\"page\" : page\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\t\"href\" : href,\n\t\t\t\t\"page\" : page\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Process pageList items\n\t * @private\n\t * @param {array} pageList\n\t */\n\tprocess(pageList){\n\t\tpageList.forEach(function(item){\n\t\t\tthis.pages.push(item.page);\n\t\t\tif (item.cfi) {\n\t\t\t\tthis.locations.push(item.cfi);\n\t\t\t}\n\t\t}, this);\n\t\tthis.firstPage = parseInt(this.pages[0]);\n\t\tthis.lastPage = parseInt(this.pages[this.pages.length-1]);\n\t\tthis.totalPages = this.lastPage - this.firstPage;\n\t}\n\n\t/**\n\t * Get a PageList result from a EpubCFI\n\t * @param {string} cfi EpubCFI String\n\t * @return {number} page\n\t */\n\tpageFromCfi(cfi){\n\t\tvar pg = -1;\n\n\t\t// Check if the pageList has not been set yet\n\t\tif(this.locations.length === 0) {\n\t\t\treturn -1;\n\t\t}\n\n\t\t// TODO: check if CFI is valid?\n\n\t\t// check if the cfi is in the location list\n\t\t// var index = this.locations.indexOf(cfi);\n\t\tvar index = indexOfSorted(cfi, this.locations, this.epubcfi.compare);\n\t\tif(index != -1) {\n\t\t\tpg = this.pages[index];\n\t\t} else {\n\t\t\t// Otherwise add it to the list of locations\n\t\t\t// Insert it in the correct position in the locations page\n\t\t\t//index = EPUBJS.core.insert(cfi, this.locations, this.epubcfi.compare);\n\t\t\tindex = locationOf(cfi, this.locations, this.epubcfi.compare);\n\t\t\t// Get the page at the location just before the new one, or return the first\n\t\t\tpg = index-1 >= 0 ? this.pages[index-1] : this.pages[0];\n\t\t\tif(pg !== undefined) {\n\t\t\t\t// Add the new page in so that the locations and page array match up\n\t\t\t\t//this.pages.splice(index, 0, pg);\n\t\t\t} else {\n\t\t\t\tpg = -1;\n\t\t\t}\n\n\t\t}\n\t\treturn pg;\n\t}\n\n\t/**\n\t * Get an EpubCFI from a Page List Item\n\t * @param {string | number} pg\n\t * @return {string} cfi\n\t */\n\tcfiFromPage(pg){\n\t\tvar cfi = -1;\n\t\t// check that pg is an int\n\t\tif(typeof pg != \"number\"){\n\t\t\tpg = parseInt(pg);\n\t\t}\n\n\t\t// check if the cfi is in the page list\n\t\t// Pages could be unsorted.\n\t\tvar index = this.pages.indexOf(pg);\n\t\tif(index != -1) {\n\t\t\tcfi = this.locations[index];\n\t\t}\n\t\t// TODO: handle pages not in the list\n\t\treturn cfi;\n\t}\n\n\t/**\n\t * Get a Page from Book percentage\n\t * @param {number} percent\n\t * @return {number} page\n\t */\n\tpageFromPercentage(percent){\n\t\tvar pg = Math.round(this.totalPages * percent);\n\t\treturn pg;\n\t}\n\n\t/**\n\t * Returns a value between 0 - 1 corresponding to the location of a page\n\t * @param {number} pg the page\n\t * @return {number} percentage\n\t */\n\tpercentageFromPage(pg){\n\t\tvar percentage = (pg - this.firstPage) / this.totalPages;\n\t\treturn Math.round(percentage * 1000) / 1000;\n\t}\n\n\t/**\n\t * Returns a value between 0 - 1 corresponding to the location of a cfi\n\t * @param {string} cfi EpubCFI String\n\t * @return {number} percentage\n\t */\n\tpercentageFromCfi(cfi){\n\t\tvar pg = this.pageFromCfi(cfi);\n\t\tvar percentage = this.percentageFromPage(pg);\n\t\treturn percentage;\n\t}\n\n\t/**\n\t * Destroy\n\t */\n\tdestroy() {\n\t\tthis.pages = undefined;\n\t\tthis.locations = undefined;\n\t\tthis.epubcfi = undefined;\n\n\t\tthis.pageList = undefined;\n\n\t\tthis.toc = undefined;\n\t\tthis.ncx = undefined;\n\t}\n}\n\nexport default PageList;\n","import {defer, isXml, parse} from \"./utils/core\";\nimport request from \"./utils/request\";\nimport mime from \"./utils/mime\";\nimport Path from \"./utils/path\";\nimport JSZip from \"jszip/dist/jszip\";\n\n/**\n * Handles Unzipping a requesting files from an Epub Archive\n * @class\n */\nclass Archive {\n\n\tconstructor() {\n\t\tthis.zip = undefined;\n\t\tthis.urlCache = {};\n\n\t\tthis.checkRequirements();\n\n\t}\n\n\t/**\n\t * Checks to see if JSZip exists in global namspace,\n\t * Requires JSZip if it isn't there\n\t * @private\n\t */\n\tcheckRequirements(){\n\t\ttry {\n\t\t\tthis.zip = new JSZip();\n\t\t} catch (e) {\n\t\t\tthrow new Error(\"JSZip lib not loaded\");\n\t\t}\n\t}\n\n\t/**\n\t * Open an archive\n\t * @param {binary} input\n\t * @param {boolean} [isBase64] tells JSZip if the input data is base64 encoded\n\t * @return {Promise} zipfile\n\t */\n\topen(input, isBase64){\n\t\treturn this.zip.loadAsync(input, {\"base64\": isBase64});\n\t}\n\n\t/**\n\t * Load and Open an archive\n\t * @param {string} zipUrl\n\t * @param {boolean} [isBase64] tells JSZip if the input data is base64 encoded\n\t * @return {Promise} zipfile\n\t */\n\topenUrl(zipUrl, isBase64){\n\t\treturn request(zipUrl, \"binary\")\n\t\t\t.then(function(data){\n\t\t\t\treturn this.zip.loadAsync(data, {\"base64\": isBase64});\n\t\t\t}.bind(this));\n\t}\n\n\t/**\n\t * Request a url from the archive\n\t * @param {string} url a url to request from the archive\n\t * @param {string} [type] specify the type of the returned result\n\t * @return {Promise}\n\t */\n\trequest(url, type){\n\t\tvar deferred = new defer();\n\t\tvar response;\n\t\tvar path = new Path(url);\n\n\t\t// If type isn't set, determine it from the file extension\n\t\tif(!type) {\n\t\t\ttype = path.extension;\n\t\t}\n\n\t\tif(type == \"blob\"){\n\t\t\tresponse = this.getBlob(url);\n\t\t} else {\n\t\t\tresponse = this.getText(url);\n\t\t}\n\n\t\tif (response) {\n\t\t\tresponse.then(function (r) {\n\t\t\t\tlet result = this.handleResponse(r, type);\n\t\t\t\tdeferred.resolve(result);\n\t\t\t}.bind(this));\n\t\t} else {\n\t\t\tdeferred.reject({\n\t\t\t\tmessage : \"File not found in the epub: \" + url,\n\t\t\t\tstack : new Error().stack\n\t\t\t});\n\t\t}\n\t\treturn deferred.promise;\n\t}\n\n\t/**\n\t * Handle the response from request\n\t * @private\n\t * @param {any} response\n\t * @param {string} [type]\n\t * @return {any} the parsed result\n\t */\n\thandleResponse(response, type){\n\t\tvar r;\n\n\t\tif(type == \"json\") {\n\t\t\tr = JSON.parse(response);\n\t\t}\n\t\telse\n\t\tif(isXml(type)) {\n\t\t\tr = parse(response, \"text/xml\");\n\t\t}\n\t\telse\n\t\tif(type == \"xhtml\") {\n\t\t\tr = parse(response, \"application/xhtml+xml\");\n\t\t}\n\t\telse\n\t\tif(type == \"html\" || type == \"htm\") {\n\t\t\tr = parse(response, \"text/html\");\n\t\t } else {\n\t\t\t r = response;\n\t\t }\n\n\t\treturn r;\n\t}\n\n\t/**\n\t * Get a Blob from Archive by Url\n\t * @param {string} url\n\t * @param {string} [mimeType]\n\t * @return {Blob}\n\t */\n\tgetBlob(url, mimeType){\n\t\tvar decodededUrl = window.decodeURIComponent(url.substr(1)); // Remove first slash\n\t\tvar entry = this.zip.file(decodededUrl);\n\n\t\tif(entry) {\n\t\t\tmimeType = mimeType || mime.lookup(entry.name);\n\t\t\treturn entry.async(\"uint8array\").then(function(uint8array) {\n\t\t\t\treturn new Blob([uint8array], {type : mimeType});\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Get Text from Archive by Url\n\t * @param {string} url\n\t * @param {string} [encoding]\n\t * @return {string}\n\t */\n\tgetText(url, encoding){\n\t\tvar decodededUrl = window.decodeURIComponent(url.substr(1)); // Remove first slash\n\t\tvar entry = this.zip.file(decodededUrl);\n\n\t\tif(entry) {\n\t\t\treturn entry.async(\"string\").then(function(text) {\n\t\t\t\treturn text;\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Get a base64 encoded result from Archive by Url\n\t * @param {string} url\n\t * @param {string} [mimeType]\n\t * @return {string} base64 encoded\n\t */\n\tgetBase64(url, mimeType){\n\t\tvar decodededUrl = window.decodeURIComponent(url.substr(1)); // Remove first slash\n\t\tvar entry = this.zip.file(decodededUrl);\n\n\t\tif(entry) {\n\t\t\tmimeType = mimeType || mime.lookup(entry.name);\n\t\t\treturn entry.async(\"base64\").then(function(data) {\n\t\t\t\treturn \"data:\" + mimeType + \";base64,\" + data;\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Create a Url from an unarchived item\n\t * @param {string} url\n\t * @param {object} [options.base64] use base64 encoding or blob url\n\t * @return {Promise} url promise with Url string\n\t */\n\tcreateUrl(url, options){\n\t\tvar deferred = new defer();\n\t\tvar _URL = window.URL || window.webkitURL || window.mozURL;\n\t\tvar tempUrl;\n\t\tvar response;\n\t\tvar useBase64 = options && options.base64;\n\n\t\tif(url in this.urlCache) {\n\t\t\tdeferred.resolve(this.urlCache[url]);\n\t\t\treturn deferred.promise;\n\t\t}\n\n\t\tif (useBase64) {\n\t\t\tresponse = this.getBase64(url);\n\n\t\t\tif (response) {\n\t\t\t\tresponse.then(function(tempUrl) {\n\n\t\t\t\t\tthis.urlCache[url] = tempUrl;\n\t\t\t\t\tdeferred.resolve(tempUrl);\n\n\t\t\t\t}.bind(this));\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tresponse = this.getBlob(url);\n\n\t\t\tif (response) {\n\t\t\t\tresponse.then(function(blob) {\n\n\t\t\t\t\ttempUrl = _URL.createObjectURL(blob);\n\t\t\t\t\tthis.urlCache[url] = tempUrl;\n\t\t\t\t\tdeferred.resolve(tempUrl);\n\n\t\t\t\t}.bind(this));\n\n\t\t\t}\n\t\t}\n\n\n\t\tif (!response) {\n\t\t\tdeferred.reject({\n\t\t\t\tmessage : \"File not found in the epub: \" + url,\n\t\t\t\tstack : new Error().stack\n\t\t\t});\n\t\t}\n\n\t\treturn deferred.promise;\n\t}\n\n\t/**\n\t * Revoke Temp Url for a archive item\n\t * @param {string} url url of the item in the archive\n\t */\n\trevokeUrl(url){\n\t\tvar _URL = window.URL || window.webkitURL || window.mozURL;\n\t\tvar fromCache = this.urlCache[url];\n\t\tif(fromCache) _URL.revokeObjectURL(fromCache);\n\t}\n\n\tdestroy() {\n\t\tvar _URL = window.URL || window.webkitURL || window.mozURL;\n\t\tfor (let fromCache in this.urlCache) {\n\t\t\t_URL.revokeObjectURL(fromCache);\n\t\t}\n\t\tthis.zip = undefined;\n\t\tthis.urlCache = {};\n\t}\n}\n\nexport default Archive;\n","import {defer, isXml, parse} from \"./utils/core\";\nimport httpRequest from \"./utils/request\";\nimport mime from \"./utils/mime\";\nimport Path from \"./utils/path\";\nimport EventEmitter from \"event-emitter\";\nimport localforage from \"localforage\";\n\n/**\n * Handles saving and requesting files from local storage\n * @class\n * @param {string} name This should be the name of the application for modals\n * @param {function} [requester]\n * @param {function} [resolver]\n */\nclass Store {\n\n\tconstructor(name, requester, resolver) {\n\t\tthis.urlCache = {};\n\n\t\tthis.storage = undefined;\n\n\t\tthis.name = name;\n\t\tthis.requester = requester || httpRequest;\n\t\tthis.resolver = resolver;\n\n\t\tthis.online = true;\n\n\t\tthis.checkRequirements();\n\n\t\tthis.addListeners();\n\t}\n\n\t/**\n\t * Checks to see if localForage exists in global namspace,\n\t * Requires localForage if it isn't there\n\t * @private\n\t */\n\tcheckRequirements(){\n\t\ttry {\n\t\t\tlet store;\n\t\t\tif (typeof localforage === \"undefined\") {\n\t\t\t\tstore = localforage;\n\t\t\t}\n\t\t\tthis.storage = store.createInstance({\n\t\t\t\t\tname: this.name\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tthrow new Error(\"localForage lib not loaded\");\n\t\t}\n\t}\n\n\t/**\n\t * Add online and offline event listeners\n\t * @private\n\t */\n\taddListeners() {\n\t\tthis._status = this.status.bind(this);\n\t\twindow.addEventListener('online', this._status);\n\t window.addEventListener('offline', this._status);\n\t}\n\n\t/**\n\t * Remove online and offline event listeners\n\t * @private\n\t */\n\tremoveListeners() {\n\t\twindow.removeEventListener('online', this._status);\n\t window.removeEventListener('offline', this._status);\n\t\tthis._status = undefined;\n\t}\n\n\t/**\n\t * Update the online / offline status\n\t * @private\n\t */\n\tstatus(event) {\n\t\tlet online = navigator.onLine;\n\t\tthis.online = online;\n\t\tif (online) {\n\t\t\tthis.emit(\"online\", this);\n\t\t} else {\n\t\t\tthis.emit(\"offline\", this);\n\t\t}\n\t}\n\n\t/**\n\t * Add all of a book resources to the store\n\t * @param {Resources} resources book resources\n\t * @param {boolean} [force] force resaving resources\n\t * @return {Promise