{"version":3,"sources":["webpack://ePub/webpack/universalModuleDefinition","webpack://ePub/webpack/bootstrap","webpack://ePub/./src/utils/core.js","webpack://ePub/./src/utils/constants.js","webpack://ePub/./src/epubcfi.js","webpack://ePub/./node_modules/core-js/internals/fails.js","webpack://ePub/./node_modules/core-js/internals/global.js","webpack://ePub/./node_modules/core-js/internals/export.js","webpack://ePub/./node_modules/core-js/internals/well-known-symbol.js","webpack://ePub/./node_modules/core-js/internals/is-callable.js","webpack://ePub/./node_modules/core-js/internals/an-object.js","webpack://ePub/./node_modules/core-js/internals/is-object.js","webpack://ePub/./node_modules/core-js/modules/es.object.to-string.js","webpack://ePub/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://ePub/./node_modules/event-emitter/index.js","webpack://ePub/./node_modules/core-js/internals/has-own-property.js","webpack://ePub/./node_modules/core-js/modules/es.array.iterator.js","webpack://ePub/./node_modules/core-js/modules/es.regexp.exec.js","webpack://ePub/./src/utils/path.js","webpack://ePub/./node_modules/core-js/internals/descriptors.js","webpack://ePub/./node_modules/core-js/modules/es.string.iterator.js","webpack://ePub/./src/utils/url.js","webpack://ePub/./node_modules/core-js/internals/object-define-property.js","webpack://ePub/./node_modules/core-js/internals/to-string.js","webpack://ePub/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://ePub/./src/utils/hook.js","webpack://ePub/./node_modules/core-js/internals/to-object.js","webpack://ePub/./node_modules/core-js/internals/redefine.js","webpack://ePub/./node_modules/path-webpack/path.js","webpack://ePub/./node_modules/core-js/modules/es.promise.js","webpack://ePub/./src/utils/replacements.js","webpack://ePub/./node_modules/core-js/internals/get-built-in.js","webpack://ePub/./node_modules/core-js/internals/internal-state.js","webpack://ePub/./node_modules/core-js/internals/to-indexed-object.js","webpack://ePub/./node_modules/core-js/internals/require-object-coercible.js","webpack://ePub/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://ePub/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://ePub/./node_modules/core-js/modules/es.array.slice.js","webpack://ePub/./node_modules/core-js/internals/length-of-array-like.js","webpack://ePub/./node_modules/core-js/modules/es.string.split.js","webpack://ePub/./node_modules/core-js/modules/es.array.map.js","webpack://ePub/./node_modules/core-js/modules/es.function.name.js","webpack://ePub/./node_modules/core-js/internals/get-method.js","webpack://ePub/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://ePub/./node_modules/core-js/internals/set-to-string-tag.js","webpack://ePub/./node_modules/core-js/internals/object-create.js","webpack://ePub/./node_modules/core-js/modules/web.url-search-params.js","webpack://ePub/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://ePub/./node_modules/core-js/internals/create-property-descriptor.js","webpack://ePub/./node_modules/core-js/internals/classof-raw.js","webpack://ePub/./node_modules/core-js/internals/a-callable.js","webpack://ePub/./node_modules/core-js/internals/is-pure.js","webpack://ePub/./node_modules/core-js/internals/function-name.js","webpack://ePub/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://ePub/./node_modules/core-js/internals/to-length.js","webpack://ePub/./node_modules/core-js/modules/web.url.js","webpack://ePub/./src/utils/queue.js","webpack://ePub/./src/utils/scrolltype.js","webpack://ePub/./src/managers/helpers/stage.js","webpack://ePub/./src/managers/helpers/views.js","webpack://ePub/./src/managers/default/index.js","webpack://ePub/./src/mapping.js","webpack://ePub/./node_modules/core-js/internals/hidden-keys.js","webpack://ePub/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://ePub/./node_modules/core-js/internals/classof.js","webpack://ePub/./node_modules/core-js/internals/iterators.js","webpack://ePub/./node_modules/core-js/internals/function-bind-context.js","webpack://ePub/./node_modules/core-js/modules/es.string.replace.js","webpack://ePub/./node_modules/core-js/modules/es.array.concat.js","webpack://ePub/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://ePub/./node_modules/core-js/internals/array-iteration.js","webpack://ePub/./node_modules/core-js/modules/es.array.filter.js","webpack://ePub/./node_modules/core-js/modules/es.symbol.js","webpack://ePub/./node_modules/core-js/modules/es.symbol.description.js","webpack://ePub/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://ePub/./node_modules/core-js/modules/es.object.keys.js","webpack://ePub/./src/contents.js","webpack://ePub/./node_modules/marks-pane/lib/marks.js","webpack://ePub/(webpack)/buildin/global.js","webpack://ePub/./node_modules/core-js/internals/indexed-object.js","webpack://ePub/./node_modules/core-js/internals/to-property-key.js","webpack://ePub/./node_modules/core-js/internals/engine-v8-version.js","webpack://ePub/./node_modules/core-js/internals/engine-user-agent.js","webpack://ePub/./node_modules/core-js/internals/shared.js","webpack://ePub/./node_modules/core-js/internals/uid.js","webpack://ePub/./node_modules/core-js/internals/document-create-element.js","webpack://ePub/./node_modules/core-js/internals/inspect-source.js","webpack://ePub/./node_modules/core-js/internals/shared-key.js","webpack://ePub/./node_modules/core-js/internals/to-absolute-index.js","webpack://ePub/./node_modules/core-js/internals/an-instance.js","webpack://ePub/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://ePub/./node_modules/core-js/internals/add-to-unscopables.js","webpack://ePub/./node_modules/core-js/internals/object-keys.js","webpack://ePub/./node_modules/core-js/internals/get-iterator-method.js","webpack://ePub/./node_modules/core-js/internals/is-constructor.js","webpack://ePub/./node_modules/core-js/internals/regexp-exec.js","webpack://ePub/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://ePub/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://ePub/./node_modules/core-js/internals/is-array.js","webpack://ePub/./node_modules/core-js/internals/create-property.js","webpack://ePub/./node_modules/core-js/modules/es.array.splice.js","webpack://ePub/./node_modules/@xmldom/xmldom/lib/conventions.js","webpack://ePub/./node_modules/core-js/modules/es.string.trim.js","webpack://ePub/./node_modules/@xmldom/xmldom/lib/index.js","webpack://ePub/./src/layout.js","webpack://ePub/./src/themes.js","webpack://ePub/./src/annotations.js","webpack://ePub/./src/rendition.js","webpack://ePub/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://ePub/./node_modules/core-js/internals/is-symbol.js","webpack://ePub/./node_modules/core-js/internals/native-symbol.js","webpack://ePub/./node_modules/core-js/internals/shared-store.js","webpack://ePub/./node_modules/core-js/internals/set-global.js","webpack://ePub/./node_modules/core-js/internals/enum-bug-keys.js","webpack://ePub/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://ePub/./node_modules/core-js/internals/is-forced.js","webpack://ePub/./node_modules/core-js/internals/redefine-all.js","webpack://ePub/./node_modules/core-js/internals/set-species.js","webpack://ePub/./node_modules/core-js/internals/to-string-tag-support.js","webpack://ePub/./node_modules/core-js/internals/get-iterator.js","webpack://ePub/./node_modules/core-js/internals/engine-is-node.js","webpack://ePub/./node_modules/core-js/internals/string-multibyte.js","webpack://ePub/./node_modules/core-js/internals/regexp-flags.js","webpack://ePub/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://ePub/./node_modules/core-js/internals/advance-string-index.js","webpack://ePub/./node_modules/core-js/internals/array-species-create.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/is-value.js","webpack://ePub/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://ePub/./node_modules/core-js/internals/is-regexp.js","webpack://ePub/./node_modules/lodash/isObject.js","webpack://ePub/./src/managers/views/iframe.js","webpack://ePub/./node_modules/lodash/debounce.js","webpack://ePub/./src/managers/helpers/snap.js","webpack://ePub/./src/managers/continuous/index.js","webpack://ePub/./node_modules/localforage/dist/localforage.js","webpack://ePub/./src/utils/request.js","webpack://ePub/./src/section.js","webpack://ePub/./src/spine.js","webpack://ePub/./src/locations.js","webpack://ePub/./src/container.js","webpack://ePub/./src/packaging.js","webpack://ePub/./src/navigation.js","webpack://ePub/./src/utils/mime.js","webpack://ePub/./src/resources.js","webpack://ePub/./src/pagelist.js","webpack://ePub/./src/archive.js","webpack://ePub/./src/store.js","webpack://ePub/./src/displayoptions.js","webpack://ePub/./src/book.js","webpack://ePub/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://ePub/./node_modules/core-js/internals/try-to-string.js","webpack://ePub/./node_modules/core-js/internals/ie8-dom-define.js","webpack://ePub/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://ePub/./node_modules/core-js/internals/object-keys-internal.js","webpack://ePub/./node_modules/core-js/internals/array-includes.js","webpack://ePub/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://ePub/./node_modules/core-js/internals/array-fill.js","webpack://ePub/./node_modules/core-js/internals/object-define-properties.js","webpack://ePub/./node_modules/core-js/internals/html.js","webpack://ePub/./node_modules/core-js/internals/define-iterator.js","webpack://ePub/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://ePub/./node_modules/core-js/internals/iterators-core.js","webpack://ePub/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://ePub/./node_modules/core-js/internals/iterator-close.js","webpack://ePub/./node_modules/core-js/internals/species-constructor.js","webpack://ePub/./node_modules/core-js/internals/a-constructor.js","webpack://ePub/./node_modules/core-js/internals/task.js","webpack://ePub/./node_modules/core-js/internals/engine-is-ios.js","webpack://ePub/./node_modules/core-js/internals/new-promise-capability.js","webpack://ePub/./node_modules/core-js/internals/dom-iterables.js","webpack://ePub/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://ePub/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://ePub/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://ePub/./node_modules/core-js/internals/native-url.js","webpack://ePub/./node_modules/core-js/internals/object-assign.js","webpack://ePub/./node_modules/core-js/internals/array-method-is-strict.js","webpack://ePub/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://ePub/./node_modules/core-js/internals/freezing.js","webpack://ePub/./node_modules/@xmldom/xmldom/lib/dom.js","webpack://ePub/./node_modules/core-js/modules/es.string.match.js","webpack://ePub/./node_modules/core-js/modules/es.array.join.js","webpack://ePub/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://ePub/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://ePub/./node_modules/core-js/modules/es.array.find.js","webpack://ePub/./node_modules/core-js/internals/whitespaces.js","webpack://ePub/./node_modules/core-js/modules/es.array.includes.js","webpack://ePub/./node_modules/core-js/modules/es.string.includes.js","webpack://ePub/./node_modules/lodash/_root.js","webpack://ePub/./node_modules/lodash/_Symbol.js","webpack://ePub/./node_modules/lodash/throttle.js","webpack://ePub/external \"JSZip\"","webpack://ePub/./src/epub.js","webpack://ePub/./node_modules/core-js/modules/es.array-buffer.constructor.js","webpack://ePub/./node_modules/core-js/internals/to-primitive.js","webpack://ePub/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://ePub/./node_modules/core-js/internals/native-weak-map.js","webpack://ePub/./node_modules/core-js/internals/own-keys.js","webpack://ePub/./node_modules/core-js/internals/array-buffer.js","webpack://ePub/./node_modules/core-js/internals/array-buffer-native.js","webpack://ePub/./node_modules/core-js/internals/to-index.js","webpack://ePub/./node_modules/core-js/internals/ieee754.js","webpack://ePub/./node_modules/core-js/internals/a-possible-prototype.js","webpack://ePub/./node_modules/core-js/internals/object-to-string.js","webpack://ePub/./node_modules/core-js/internals/native-promise-constructor.js","webpack://ePub/./node_modules/core-js/internals/iterate.js","webpack://ePub/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://ePub/./node_modules/core-js/internals/microtask.js","webpack://ePub/./node_modules/core-js/internals/engine-is-ios-pebble.js","webpack://ePub/./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://ePub/./node_modules/core-js/internals/promise-resolve.js","webpack://ePub/./node_modules/core-js/internals/host-report-errors.js","webpack://ePub/./node_modules/core-js/internals/perform.js","webpack://ePub/./node_modules/core-js/internals/engine-is-browser.js","webpack://ePub/./node_modules/core-js/internals/get-substitution.js","webpack://ePub/./node_modules/core-js/internals/array-species-constructor.js","webpack://ePub/./node_modules/event-emitter/node_modules/d/index.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/assign/index.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/assign/is-implemented.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/assign/shim.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/keys/index.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/keys/is-implemented.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/keys/shim.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/function/noop.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/valid-value.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/normalize-options.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/is-callable.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/string/#/contains/index.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/string/#/contains/is-implemented.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/string/#/contains/shim.js","webpack://ePub/./node_modules/event-emitter/node_modules/es5-ext/object/valid-callable.js","webpack://ePub/./node_modules/core-js/internals/array-from.js","webpack://ePub/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://ePub/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://ePub/./node_modules/core-js/internals/array-for-each.js","webpack://ePub/./node_modules/core-js/modules/es.object.get-own-property-names.js","webpack://ePub/./node_modules/core-js/modules/es.object.freeze.js","webpack://ePub/./node_modules/core-js/internals/internal-metadata.js","webpack://ePub/./node_modules/@xmldom/xmldom/lib/dom-parser.js","webpack://ePub/./node_modules/@xmldom/xmldom/lib/entities.js","webpack://ePub/./node_modules/@xmldom/xmldom/lib/sax.js","webpack://ePub/./node_modules/core-js/modules/es.string.search.js","webpack://ePub/./node_modules/core-js/internals/same-value.js","webpack://ePub/./node_modules/core-js/internals/path.js","webpack://ePub/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://ePub/./node_modules/core-js/internals/inherit-if-required.js","webpack://ePub/./node_modules/core-js/internals/string-trim.js","webpack://ePub/./node_modules/core-js/internals/string-trim-forced.js","webpack://ePub/./node_modules/core-js/internals/not-a-regexp.js","webpack://ePub/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://ePub/./node_modules/core-js/modules/es.object.assign.js","webpack://ePub/./node_modules/marks-pane/lib/svg.js","webpack://ePub/./node_modules/marks-pane/lib/events.js","webpack://ePub/./node_modules/lodash/now.js","webpack://ePub/./node_modules/lodash/_freeGlobal.js","webpack://ePub/./node_modules/lodash/toNumber.js","webpack://ePub/./node_modules/lodash/_baseTrim.js","webpack://ePub/./node_modules/lodash/_trimmedEndIndex.js","webpack://ePub/./node_modules/lodash/isSymbol.js","webpack://ePub/./node_modules/lodash/_baseGetTag.js","webpack://ePub/./node_modules/lodash/_getRawTag.js","webpack://ePub/./node_modules/lodash/_objectToString.js","webpack://ePub/./node_modules/lodash/isObjectLike.js","webpack://ePub/./node_modules/core-js/modules/es.array.fill.js","webpack://ePub/./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack://ePub/./node_modules/core-js/modules/es.reflect.construct.js","webpack://ePub/./node_modules/core-js/internals/function-bind.js","webpack://ePub/./node_modules/core-js/modules/es.reflect.get.js","webpack://ePub/./node_modules/core-js/internals/is-data-descriptor.js"],"names":["requestAnimationFrame","window","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ELEMENT_NODE","TEXT_NODE","COMMENT_NODE","DOCUMENT_NODE","_URL","URL","webkitURL","mozURL","undefined","uuid","d","Date","getTime","replace","c","r","Math","random","floor","toString","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","call","forEach","Object","getOwnPropertyNames","propName","defineProperty","getOwnPropertyDescriptor","insert","item","array","compareFunction","location","locationOf","splice","_start","_end","start","end","pivot","parseInt","compared","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","parent","parentNode","children","childNodes","sib","index","indexOfTextNode","textNode","indexOfElementNode","elementNode","isXml","ext","createBlob","content","mime","Blob","type","createBlobUrl","tempUrl","blob","createObjectURL","revokeBlobUrl","url","revokeObjectURL","createBase64Url","data","datauri","btoa","prototype","parse","markup","forceXMLDom","Parser","DOMParser","XMLDOMParser","charCodeAt","parseFromString","qs","sel","elements","Error","querySelector","getElementsByTagName","qsa","querySelectorAll","qsp","props","q","filtered","Array","filter","getAttribute","sprint","root","func","createTreeWalker","treeWalker","NodeFilter","SHOW_TEXT","walk","nextNode","callback","firstChild","walked","nextSibling","blob2base64","Promise","resolve","reject","reader","FileReader","readAsDataURL","onloadend","result","defer","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","collapse","_commonAncestorContainer","_checkCollapsed","endNode","toStart","referenceNode","setStart","setEnd","endIndex","textContent","startParents","endParents","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","EpubCFI","cfiFrom","base","ignoreClass","str","spinePos","range","path","parseComponent","steps","checkType","fromRange","fromNode","TypeError","cfi","isCfiString","cfiStr","baseComponent","pathComponent","getChapterComponent","getPathComponent","getRange","componentStr","component","terminal","offset","assertion","parts","split","parseTerminal","shift","map","step","parseStep","bind","stepStr","num","has_brackets","match","termialStr","characterOffset","textLocationAssertion","indirection","ranges","splitStr","part","segment","join","segmentString","joinSteps","cfiString","cfiOne","cfiTwo","stepsA","stepsB","terminalA","terminalB","rangeAStartSteps","rangeAEndSteps","rangeBEndSteps","rangeAStartTerminal","rangeAEndTerminal","rangeBStartTerminal","rangeBEndTerminal","concat","position","filteredNode","filteredPosition","currentNode","filteredStep","stepA","stepB","needsIgnoring","patchOffset","pathTo","len","equalStep","anchor","sibling","previousSibling","isText","classList","contains","curr","totalOffset","output","prevIndex","currNodeType","prevNodeType","textNodes","normalizedMap","xpath","container","_doc","getElementById","evaluate","stepsToXpath","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","walkToNode","findNode","child","lastStepIndex","childIndex","hasOwnProperty","startSteps","endSteps","missed","e","fixMiss","console","log","_spineNodeIndex","_pos","pos","spineNodeIndex","Path","pathString","protocol","parsed","pathname","isDirectory","directory","dir","filename","extension","what","isAbsolute","charAt","relative","splitPathRe","exec","Url","urlString","baseString","absolute","basePath","href","origin","hash","search","fullpath","Hook","context","hooks","j","hook","args","promises","task","executing","apply","err","all","replaceBase","section","head","createElement","insertBefore","setAttribute","replaceCanonical","link","canonical","appendChild","replaceMeta","meta","idref","replaceLinks","contents","fn","links","replaceLink","linkUrl","error","onclick","substitute","urls","replacements","RegExp","Queue","_q","tick","running","paused","deferred","queued","run","inwait","then","dequeue","defered","flush","Task","toApply","value","scrollType","definer","createDefiner","scrollLeft","Element","scrollIntoView","removeChild","overflow","innerDiv","spanA","display","spanB","Stage","_options","settings","create","hidden","wrapper","wrap","options","axis","direction","add","wordSpacing","lineHeight","verticalAlign","flexDirection","flexWrap","fullsize","visibility","_element","getElement","resizeFunc","throttle","addEventListener","orientationChangeFunc","_width","_height","clientWidth","containerStyles","containerPadding","_windowBounds","bodyStyles","bodyPadding","box","createTextNode","sheet","selector","rulesArray","scope","rules","getSheet","set","insertRule","removeEventListener","Views","_views","view","destroy","displayed","show","hide","DefaultViewManager","name","optsSettings","View","request","renditionQueue","queue","infinite","writingMode","flow","allowScriptedContent","allowPopups","viewSettings","layout","method","forceEvenPages","rendered","size","tag","rtlScrollType","stage","attachTo","getContainer","views","_bounds","_stageSize","onResize","onResized","onOrientationChange","addEventListeners","updateLayout","scroller","_onScroll","onScroll","clearTimeout","orientationTimeout","resizeTimeout","afterScrolled","clear","removeEventListeners","orientation","resizeOnOrientationChange","resize","setTimeout","emit","epubcfi","stageSize","winBounds","forceRight","action","next","divisor","properties","includes","displaying","visible","find","scrollTo","moveTo","handleNextPrePaginated","distX","distY","isPaginated","delta","scrollWidth","createView","append","onDisplayed","afterDisplayed","afterResized","on","updateAxis","mode","updateWritingMode","counter","prepend","scrollBy","heightDelta","widthDelta","offsetWidth","last","scrollTop","prev","first","paginatedLocation","scrolledLocation","pageHeight","pageWidth","vertical","rtl","used","scrollY","scrollX","sections","startPos","endPos","stopPos","totalPages","count","pages","currPage","ceil","endPage","tempStartPage","pg","mapping","page","cfiBase","min","abs","startPage","offsetPrev","offsetNext","_container","viewsLength","isVisible","x","y","silent","ignore","scrolled","calculate","gap","setLayout","Mapping","forceUpdate","spread","defaultScrolledOverflow","viewContents","EventEmitter","dev","horizontal","_dev","findRanges","rangeListToCfiList","rangePairToCfiPair","findStart","findEnd","startRange","toRange","endRange","selection","defaultView","getSelection","removeAllRanges","addRange","acceptNode","trim","FILTER_ACCEPT","FILTER_REJECT","safeFilter","columns","spreads","spreadWidth","columnWidth","stack","$el","found","$prev","findTextStartRange","round","findTextEndRange","splitTextNodeIntoRanges","_splitter","text","splitter","rangePair","startCfi","endCfi","cifPair","hasNavigator","navigator","isChrome","test","userAgent","isWebkit","Contents","sectionIndex","_size","epubReadingSystem","called","active","listeners","w","frame","h","rect","border","overflowX","overflowY","property","priority","setProperty","removeProperty","_scale","_minimum","_maximum","_scalable","$viewport","newContent","hasAttribute","scale","minimum","maximum","scalable","imageLoadListeners","mediaQueryListeners","addSelectionListeners","ResizeObserver","resizeListeners","visibilityListeners","resizeObservers","linksHandler","removeSelectionListeners","observer","disconnect","expanding","textWidth","textHeight","resizeCheck","visibilityState","_resizeCheck","sheets","styleSheets","mediaChangeHandler","m","matches","_expanding","expand","cssRules","media","mql","matchMedia","mediaText","addListener","observe","MutationObserver","mutations","config","attributes","childList","characterData","subtree","images","img","naturalWidth","onload","fonts","ready","targetPos","newRange","Range","substring","selectNode","src","$stylesheet","rel","onreadystatechange","readyState","key","styleEl","serializedCss","_getStylesheetNode","innerHTML","styleSheet","rl","rule","propStr","pl","selectors","keys","definition","isArray","_rules","$script","async","className","remove","_triggerEvent","triggerEvent","eventName","passive","_onSelectionChange","onSelectionChange","selectionEndTimeout","triggerSelectedEvent","cfirange","rangeCount","getRangeAt","_cfi","viewport","layoutStyle","css","COLUMN_AXIS","COLUMN_GAP","COLUMN_WIDTH","COLUMN_FILL","offsetX","offsetY","scaleStr","translateStr","viewportWidth","viewportHeight","widthScale","heightScale","scaler","marginLeft","_layoutStyle","version","hasFeature","feature","removeListeners","Layout","_spread","_minSpreadWidth","minSpreadWidth","_evenSpreads","evenSpreads","_flow","update","_gap","formating","fit","totalLength","pageLength","newProps","Themes","rendition","_themes","_overrides","_current","_injected","register","inject","overrides","registerThemes","default","registerUrl","registerRules","theme","themes","input","getContents","removeClass","addClass","addStylesheet","serialized","addStylesheetCss","injected","addStylesheetRules","override","Annotations","highlights","underlines","marks","_annotations","_annotationsBySectionIndex","render","unloaded","cfiRange","cb","styles","encodeURI","annotation","Annotation","attach","_removeFromAnnotationBySectionIndex","detach","_annotationsAt","annotations","mark","highlight","underline","unhighlight","ununderline","unmark","Rendition","book","manager","stylesheet","script","snap","defaultDirection","serialize","handleLinks","passEvents","adjustImages","spine","injectIdentifier","injectStylesheet","injectScript","enqueue","opened","starting","started","viewManager","ContinuousViewManager","IframeView","package","metadata","displayOptions","fixedLayout","ViewManager","requireManager","requireView","load","globalLayoutProperties","determineLayoutProperties","afterRemoved","reportLocation","_display","locations","cfiFromPercentage","get","triggerMarkEvent","trigger","_layout","applyLayout","updateFlow","isRendered","changed","reportedLocation","reportedLocationAfterRAF","currentLocation","located","percentage","total","locationStart","locationFromCfi","locationEnd","percentageFromLocation","pageStart","pageList","pageFromCfi","pageEnd","atEnd","atStart","ev","triggerViewEvent","computed","paddingTop","paddingBottom","horizontalPadding","paddingLeft","paddingRight","ident","packaging","identifier","added","fixedWidth","fixedHeight","pane","flex","iframe","createContainer","scrolling","seamless","sandbox","resizing","elementBounds","supportsSrcdoc","sectionRender","setAxis","setWritingMode","format","addListeners","_textWidth","_contentWidth","_textHeight","_contentHeight","_needsReframe","lock","elBorders","iframeBorders","lockedWidth","lockedHeight","force","reframe","prevBounds","placeMark","loading","loaded","event","onLoad","blobUrl","srcdoc","contentDocument","open","MSApp","execUnsafeLocalFunction","outerThis","write","close","contentWindow","rendering","layoutFunc","transform","stopExpanding","offsetTop","offsetLeft","parentPos","assign","emitter","Pane","Highlight","addMark","Underline","dataset","rects","getClientRects","removeMark","l","PI_D2","PI","EASING_EQUATIONS","easeOutSine","sin","easeInOutSine","cos","easeInOutQuint","pow","easeInCubic","Snap","duration","minVelocity","minDistance","easing","supportsTouch","setup","disableScroll","afterScrolledTimeout","isVertical","touchCanceler","resizeCanceler","snapping","startTouchX","startTouchY","startTime","endTouchX","endTouchY","endTime","DocumentTouch","_onResize","_onTouchStart","onTouchStart","_onTouchMove","onTouchMove","_onTouchEnd","onTouchEnd","_afterDisplayed","off","touches","screenX","screenY","enableScroll","now","deltaY","swipped","wasSwiped","snapWidth","distance","time","velocity","howMany","snapTo","smoothScrollTo","destination","timeFunction","scroll","performance","offsetDelta","fill","_full","full","check","expanded","_offset","updating","trimTimeout","catch","_offsetLeft","_offsetTop","checking","newViews","visibleLength","contentLength","firstIndex","lastIndex","above","below","erase","prevTop","prevLeft","addScrollListeners","snapper","scrollDeltaVert","scrollDeltaHorz","_scrolled","debounce","didScroll","prevScrollTop","prevScrollLeft","scrollTimeout","needsSnap","withCredentials","headers","supportsURL","BLOB_RESPONSE","xhr","XMLHttpRequest","xhrPrototype","header","xmlHttpRequestOverrideMimeType","handler","onerror","setRequestHeader","responseType","overrideMimeType","send","DONE","responseXML","status","response","message","JSON","Section","linear","_request","Request","xml","isIE","Serializer","XMLSerializer","XMLDOMSerializer","serializer","serializeToString","_query","excerpt","limit","cfiFromRange","maxSeqEle","excerptLimit","nodeList","textWithCase","reduce","acc","current","startNodeIndex","endNodeIndex","beforeEndLengthCount","globalLayout","_range","unload","Spine","spineItems","spineByHref","spineById","items","manifest","baseUrl","_package","resolver","manifestItem","spineItem","generateChapterComponent","nextIndex","decodeURI","each","Locations","pause","_locations","_locationsWords","break","_wordCounter","_currentCfi","processingTimeout","chars","process","completed","_break","parser","dist","wordCount","processWords","parseWords","remainingCount","s","foundStartNode","countWords","loc","compare","warn","cfiFromLocation","stringify","setCurrent","stop","Container","containerDocument","packagePath","encoding","rootfile","dirname","xmlEncoding","Packaging","packageDocument","navPath","ncxPath","coverPath","metadataNode","manifestNode","spineNode","parseManifest","findNavPath","findNcxPath","findCoverPath","parseSpine","uniqueIdentifier","findUniqueIdentifier","parseMetadata","title","getElementText","creator","description","pubdate","publisher","language","rights","modified_date","getPropertyText","media_active_class","manifestXml","selected","overlay","spineXml","propArray","itemref","packageXml","uniqueIdentifierId","localName","namespaceURI","nodeValue","tocId","pkg","epubVersion","metaCover","coverId","cover","getElementsByTagNameNS","json","readingOrder","resources","toc","label","Navigation","tocByHref","tocById","landmarks","landmarksByType","ncx","parseNav","parseLandmarks","parseNcx","unpack","subitems","getByIndex","navItems","navHtml","navElement","list","navList","parseNavList","navListHtml","navItem","nested","landmarkItem","tocXml","navPoints","ncxItem","navLabel","table","mimeTypes","subtype","val","defaultValue","lookup","pop","Resources","archive","replacementUrls","assets","cssUrls","splitUrls","parsedUrl","mimeType","createUrl","replaced","replacement","createCssFile","replacementUrl","indexInUrls","newUrl","textResponse","getText","relUrls","assetHref","resolved","relativeTo","PageList","firstPage","lastPage","navXml","pageTargets","navLabelText","pageText","isCfi","packageUrl","percent","percentageFromPage","Archive","zip","urlCache","checkRequirements","JSZip","isBase64","loadAsync","zipUrl","getBlob","handleResponse","decodededUrl","decodeURIComponent","substr","entry","file","uint8array","useBase64","base64","getBase64","fromCache","Store","requester","storage","httpRequest","online","store","localforage","createInstance","_status","onLine","mapped","encodedUrl","encodeURIComponent","getItem","setItem","put","retrieve","readAsText","DisplayOptions","displayOptionsDocument","interactive","openToSpread","orientationLock","displayOptionsNode","CONTAINER_PATH","IBOOKS_DISPLAY_OPTIONS_PATH","INPUT_TYPE","BINARY","BASE64","EPUB","OPF","MANIFEST","DIRECTORY","Book","ArrayBuffer","requestMethod","requestCredentials","requestHeaders","openAs","opening","isOpen","navigation","archived","determineType","openEpub","openPackaging","openManifest","openContainer","unarchive","loadNavigation","credentials","replacementsSetting","originalUrl","substituteResources","replaceCss","deregister","ePub","VERSION","global","CFI","utils"],"mappings":"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;AACA;;;;;;;ACNA,iBAAiB,mBAAO,CAAC,CAA0B;;AAEnD;AACA;AACA;;;;;;;ACJA,4BAA4B,mBAAO,CAAC,GAAoC;AACxE,eAAe,mBAAO,CAAC,EAAuB;AAC9C,eAAe,mBAAO,CAAC,GAA+B;;AAEtD;AACA;AACA;AACA,oDAAoD,eAAe;AACnE;;;;;;;ACRA,aAAa,mBAAO,CAAC,CAAqB;AAC1C,mBAAmB,mBAAO,CAAC,GAA4B;AACvD,4BAA4B,mBAAO,CAAC,GAAuC;AAC3E,cAAc,mBAAO,CAAC,GAA6B;AACnD,kCAAkC,mBAAO,CAAC,EAA6C;;AAEvF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACrBa;;AAEb,eAAe,mBAAO,CAAC,GAAG;AAC1B,eAAe,mBAAO,CAAC,GAA+B;;AAEtD;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;;AAEpB;AACA,aAAa,2BAA2B;AACxC;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA;AACA;AACA;;;;;;;ACnIA,eAAe,mBAAO,CAAC,EAAwB;;AAE/C,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;AC7CY;;AAEb;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,8BAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,yBAAyB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,qBAAqB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU,aAAa;AACvB;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,WAAW;AACX;AACA,qCAAqC;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA,gDAAgD;AAChD;AACA,WAAW;AACX;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;;AAGA;;;;;;;;ACziBa;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,cAAc,mBAAO,CAAC,EAAsB;AAC5C,aAAa,mBAAO,CAAC,CAAqB;AAC1C,iBAAiB,mBAAO,CAAC,EAA2B;AACpD,oBAAoB,mBAAO,CAAC,GAAyC;AACrE,eAAe,mBAAO,CAAC,EAAuB;AAC9C,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,qBAAqB,mBAAO,CAAC,EAAsC;AACnE,qBAAqB,mBAAO,CAAC,EAAgC;AAC7D,iBAAiB,mBAAO,CAAC,GAA0B;AACnD,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,eAAe,mBAAO,CAAC,CAAwB;AAC/C,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,oBAAoB,mBAAO,CAAC,EAA6B;AACzD,cAAc,mBAAO,CAAC,GAAsB;AAC5C,kCAAkC,mBAAO,CAAC,GAA6C;AACvF,yBAAyB,mBAAO,CAAC,GAAkC;AACnE,WAAW,mBAAO,CAAC,GAAmB;AACtC,gBAAgB,mBAAO,CAAC,GAAwB;AAChD,qBAAqB,mBAAO,CAAC,GAA8B;AAC3D,uBAAuB,mBAAO,CAAC,GAAiC;AAChE,iCAAiC,mBAAO,CAAC,GAAqC;AAC9E,cAAc,mBAAO,CAAC,GAAsB;AAC5C,0BAA0B,mBAAO,CAAC,EAA6B;AAC/D,eAAe,mBAAO,CAAC,GAAwB;AAC/C,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,iBAAiB,mBAAO,CAAC,GAAgC;AACzD,cAAc,mBAAO,CAAC,GAA6B;AACnD,iBAAiB,mBAAO,CAAC,EAAgC;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,YAAY,EAAE;AACzE;AACA,sBAAsB,cAAc,eAAe,cAAc;AACjE;AACA;AACA;AACA,0CAA0C,cAAc;AACxD;AACA;AACA;AACA,CAAC;;AAED;AACA,yDAAyD,cAAc;AACvE,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,cAAc;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO,GAAG,eAAe;;AAEzB;AACA,uFAAuF,eAAe;AACtG;;AAEA;AACA;AACA;AACA,KAAK,gBAAgB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,2CAA2C;AAC9C;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA,GAAG,8CAA8C;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,yDAAyD;AAC5D;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,2DAA2D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,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;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACpJY;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,WAAW,mBAAO,CAAC,EAA8B;AACjD,mCAAmC,mBAAO,CAAC,EAA+C;;AAE1F;;AAEA;AACA;AACA;AACA,GAAG,6DAA6D;AAChE;AACA;AACA;AACA,CAAC;;;;;;;ACdD,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,2BAA2B,mBAAO,CAAC,EAA4B;AAC/D,qBAAqB,mBAAO,CAAC,EAAqC;;AAElE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACtBA,gBAAgB,mBAAO,CAAC,EAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA,qBAAqB,mBAAO,CAAC,EAAqC;AAClE,aAAa,mBAAO,CAAC,EAA+B;AACpD,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;;AAEA;AACA;AACA,uCAAuC,iCAAiC;AACxE;AACA;;;;;;;ACVA;AACA,eAAe,mBAAO,CAAC,CAAwB;AAC/C,uBAAuB,mBAAO,CAAC,GAAuC;AACtE,kBAAkB,mBAAO,CAAC,GAA4B;AACtD,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,WAAW,mBAAO,CAAC,GAAmB;AACtC,4BAA4B,mBAAO,CAAC,EAAsC;AAC1E,gBAAgB,mBAAO,CAAC,EAAyB;;AAEjD;AACA;AACA;AACA;AACA;;AAEA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;ACjFa;AACb;AACA,mBAAO,CAAC,EAA8B;AACtC,QAAQ,mBAAO,CAAC,CAAqB;AACrC,iBAAiB,mBAAO,CAAC,EAA2B;AACpD,qBAAqB,mBAAO,CAAC,GAAyB;AACtD,eAAe,mBAAO,CAAC,EAAuB;AAC9C,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,qBAAqB,mBAAO,CAAC,EAAgC;AAC7D,gCAAgC,mBAAO,CAAC,GAA0C;AAClF,0BAA0B,mBAAO,CAAC,EAA6B;AAC/D,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,aAAa,mBAAO,CAAC,EAA+B;AACpD,WAAW,mBAAO,CAAC,EAAoC;AACvD,cAAc,mBAAO,CAAC,EAAsB;AAC5C,eAAe,mBAAO,CAAC,CAAwB;AAC/C,eAAe,mBAAO,CAAC,CAAwB;AAC/C,gBAAgB,mBAAO,CAAC,EAAwB;AAChD,aAAa,mBAAO,CAAC,EAA4B;AACjD,+BAA+B,mBAAO,CAAC,EAAyC;AAChF,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,wBAAwB,mBAAO,CAAC,EAAkC;AAClE,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+EAA+E,EAAE,EAAE,cAAc;AACjG;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAA8D;AACtF;AACA,OAAO,6DAA6D,wCAAwC;AAC5G,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gDAAgD;AACxE;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uBAAuB;AACrD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAmB;;AAEvB;AACA,gFAAgF,kBAAkB;;AAElG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC,GAAG,mBAAmB;;AAEvB;;AAEA,GAAG,wCAAwC;AAC3C;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA,OAAO,+CAA+C;AACtD;AACA,8FAA8F;AAC9F;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,kGAAkG;AAClG;;AAEA;AACA;;AAEA,OAAO,6BAA6B;AACpC;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;AC/WA,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,iCAAiC,mBAAO,CAAC,GAA4C;AACrF,+BAA+B,mBAAO,CAAC,EAAyC;AAChF,sBAAsB,mBAAO,CAAC,EAAgC;AAC9D,oBAAoB,mBAAO,CAAC,EAA8B;AAC1D,aAAa,mBAAO,CAAC,EAA+B;AACpD,qBAAqB,mBAAO,CAAC,GAA6B;;AAE1D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;ACJA,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,kBAAkB,mBAAO,CAAC,GAA4B;;AAEtD;AACA;AACA;AACA;AACA;;;;;;;ACPA;;;;;;;ACAA,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,aAAa,mBAAO,CAAC,EAA+B;;AAEpD;AACA;AACA;;AAEA;AACA;AACA,8CAA8C,cAAc;AAC5D;;AAEA;AACA;AACA;AACA;AACA;;;;;;;AChBA,yBAAyB,mBAAO,CAAC,GAAmC;AACpE,kBAAkB,mBAAO,CAAC,GAA4B;;AAEtD;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA,0BAA0B,mBAAO,CAAC,EAAqC;;AAEvE;;AAEA;AACA;AACA;AACA,iFAAiF;AACjF;;;;;;;;ACRa;AACb;AACA,mBAAO,CAAC,EAA+B;AACvC,QAAQ,mBAAO,CAAC,CAAqB;AACrC,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,qBAAqB,mBAAO,CAAC,GAAyB;AACtD,aAAa,mBAAO,CAAC,CAAqB;AAC1C,uBAAuB,mBAAO,CAAC,GAAuC;AACtE,eAAe,mBAAO,CAAC,EAAuB;AAC9C,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,aAAa,mBAAO,CAAC,EAA+B;AACpD,aAAa,mBAAO,CAAC,GAA4B;AACjD,gBAAgB,mBAAO,CAAC,GAAyB;AACjD,aAAa,mBAAO,CAAC,GAA+B;AACpD,cAAc,mBAAO,CAAC,GAAuC;AAC7D,gBAAgB,mBAAO,CAAC,EAAwB;AAChD,qBAAqB,mBAAO,CAAC,EAAgC;AAC7D,4BAA4B,mBAAO,CAAC,EAAkC;AACtE,0BAA0B,mBAAO,CAAC,EAA6B;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,wCAAwC;AACxC;AACA,CAAC;AACD,oCAAoC;AACpC,oBAAoB,QAAQ;AAC5B,CAAC;AACD,wCAAwC;AACxC,oBAAoB;AACpB,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,yBAAyB,6BAA6B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,cAAc;AACpD;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AAC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CAAC,EAA0B;AACnD,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;AACA;AACA,gDAAgD,kBAAkB,EAAE;;AAEpE;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1BA;;;;;;;ACAA,gBAAgB,mBAAO,CAAC,EAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBa;AACb,oCAAoC,mBAAO,CAAC,EAAiD;AAC7F,YAAY,mBAAO,CAAC,CAAoB;AACxC,eAAe,mBAAO,CAAC,CAAwB;AAC/C,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,0BAA0B,mBAAO,CAAC,EAAqC;AACvE,eAAe,mBAAO,CAAC,EAAwB;AAC/C,eAAe,mBAAO,CAAC,EAAwB;AAC/C,6BAA6B,mBAAO,CAAC,EAAuC;AAC5E,yBAAyB,mBAAO,CAAC,GAAmC;AACpE,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,sBAAsB,mBAAO,CAAC,GAA+B;AAC7D,iBAAiB,mBAAO,CAAC,EAAmC;AAC5D,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,oBAAoB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;A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C;AACrF,eAAe,mBAAO,CAAC,EAAuB;AAC9C,aAAa,mBAAO,CAAC,EAAqB;AAC1C,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,UAAU,mBAAO,CAAC,EAAkB;AACpC,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,mCAAmC,mBAAO,CAAC,GAAwC;AACnF,4BAA4B,mBAAO,CAAC,GAAuC;AAC3E,qBAAqB,mBAAO,CAAC,EAAgC;AAC7D,0BAA0B,mBAAO,CAAC,EAA6B;AAC/D,eAAe,mBAAO,CAAC,EAA8B;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,sBAAsB,yCAAyC,WAAW,IAAI;AAC9E,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F;AAC5F;AACA,KAAK;AACL;AACA,mDAAmD,iDAAiD;AACpG,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,kCAAkC;AAChH;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gFAAgF,eAAe;AAC/F;AACA;AACA;;AAEA,GAAG,yEAAyE;AAC5E;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED,GAAG,qDAAqD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,mBAAmB,EAAE;AAC/C,0BAA0B,oBAAoB;AAC9C,CAAC;;AAED,GAAG,2EAA2E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,uDAAuD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,GAAG,0DAA0D,kCAAkC,EAAE,GAAG;AACpG;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY,QAAQ;AACzC;AACA,0CAA0C;AAC1C,GAAG;;AAEH,KAAK,4DAA4D;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;ACrTA;AACA;AACa;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,aAAa,mBAAO,CAAC,CAAqB;AAC1C,aAAa,mBAAO,CAAC,EAA+B;AACpD,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,eAAe,mBAAO,CAAC,CAAwB;AAC/C,qBAAqB,mBAAO,CAAC,EAAqC;AAClE,gCAAgC,mBAAO,CAAC,GAA0C;;AAElF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,KAAK,6BAA6B;AAClC;AACA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EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0EAA0E,gEAAgE;AAC1I;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;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AW,EAAE;AACb,WAAW,2CAA2C;AACtD;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;;;;;;;AC/Ia;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,YAAY,mBAAO,CAAC,GAA0B;AAC9C,6BAA6B,mBAAO,CAAC,GAAiC;;AAEtE;AACA;AACA,GAAG,wEAAwE;AAC3E;AACA;AACA;AACA,CAAC;;;;;;;ACXD,UAAU,mBAAO,CAAC,GAAO;AACzB;AACA;AACA,oBAAoB,mBAAO,CAAC,GAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACH1C;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMwI,a;AACL,kBAAYxW,QAAZ,EAAsB;AAAA;;AACrB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKiD,IAAL,GAAYjD,QAAQ,CAAC6D,MAAT,IAAmB,YAA/B;AACA,SAAK4S,OAAL,GAAgBzW,QAA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AW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9LA;AACA;CAGA;;AACA,IAAMmH,KAAK,GAAIv/B,IAAI,CAACw/B,EAAL,GAAU,CAAzB;AACA,IAAMC,gBAAgB,GAAG;AACvBC,aAAW,EAAE,qBAAUlpB,GAAV,EAAe;AAC1B,WAAOxW,IAAI,CAAC2/B,GAAL,CAASnpB,GAAG,GAAG+oB,KAAf,CAAP;AACD,GAHsB;AAIvBK,eAAa,EAAE,uBAAUppB,GAAV,EAAe;AAC5B,WAAQ,CAAC,GAAD,IAAQxW,IAAI,CAAC6/B,GAAL,CAAS7/B,IAAI,CAACw/B,EAAL,GAAUhpB,GAAnB,IAA0B,CAAlC,CAAR;AACD,GANsB;AAOvBspB,gBAAc,EAAE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AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,qIAAqI;AACtI,CAAC,GAAG;AACJ;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,CAAC,EAAE,MAAM;AACT;AACA;AACA;AACA;AACA;;AAEA,CAAC,qIAAqI;AACtI,CAAC,EAAE,MAAM;AACT;;AAEA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB;AACrB,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,oCAAoC,yBAAyB;AAC7D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,8BAA8B;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+BAA+B,oBAAoB;AACnD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,mCAAmC,oBAAoB;AACvD;AACA;AACA;AACA,iBAAiB;AACjB,mGAAmG;AACnG;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,+BAA+B,oBAAoB;AACnD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,mCAAmC,oBAAoB;AACvD;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mGAAmG;AACnG;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iBAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,YAAY;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB,qBAAqB;AACrB,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,yBAAyB;AAC5D;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,yBAAyB;AACxD;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,aAAa;AACb,SAAS;AACT;AACA,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;;AAEA;AACA,0EAA0E,SAAS;AACnF;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C,QAAQ;AACrD;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,iDAAiD,QAAQ;AACzD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;AACvC,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA,mEAAmE;AACnE;;AAEA,6CAA6C;AAC7C;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,6EAA6E;;AAE7E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2DAA2D,SAAS;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yEAAyE,WAAW;AACpF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;;AAGA;;AAEA;;AAEA,CAAC,EAAE,MAAM,EAAE,GAAG;AACd,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/vFD;AACA;;AAEA,SAASxY,eAAT,CAAiB1Y,GAA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mBAAO,CAAC,CAAwB;AAC/C,gBAAgB,mBAAO,CAAC,EAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrBA,eAAe,mBAAO,CAAC,CAAwB;AAC/C,mBAAmB,mBAAO,CAAC,GAA4B;AACvD,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,EAA6B;AACzD,kBAAkB,mBAAO,CAAC,GAA4B;;AAEtD;AACA;AACA;AACA;AACA;;;;;;;ACPA,aAAa,mBAAO,CAAC,CAAqB;AAC1C,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,YAAY,mBAAO,CAAC,CAAoB;AACxC,WAAW,mBAAO,CAAC,EAAoC;AACvD,WAAW,mBAAO,CAAC,GAAmB;AACtC,oBAAoB,mBAAO,CAAC,EAAsC;AAClE,aAAa,mBAAO,CAAC,GAA4B;AACjD,cAAc,mBAAO,CAAC,GAA6B;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,gBAAgB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;AChHA,gBAAgB,mBAAO,CAAC,EAAgC;;AAExD;;;;;;;;ACFa;AACb,gBAAgB,mBAAO,CAAC,EAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClCA;AACA,4BAA4B,mBAAO,CAAC,EAAsC;;AAE1E;AACA;;AAEA;;;;;;;ACNA,YAAY,mBAAO,CAAC,CAAoB;AACxC,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;ACTD,YAAY,mBAAO,CAAC,CAAoB;AACxC,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACVD,YAAY,mBAAO,CAAC,CAAoB;AACxC,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,cAAc,mBAAO,CAAC,EAAsB;;AAE5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AChCY;AACb,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,YAAY,mBAAO,CAAC,CAAoB;AACxC,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,kCAAkC,mBAAO,CAAC,GAA8C;AACxF,iCAAiC,mBAAO,CAAC,GAA4C;AACrF,eAAe,mBAAO,CAAC,EAAwB;AAC/C,oBAAoB,mBAAO,CAAC,EAA6B;;AAEzD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B,OAAO,2BAA2B;AAChE;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG,IAAI,OAAO;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,cAAc,EAAE;AAC7D,mBAAmB,0CAA0C;AAC7D,CAAC,qCAAqC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;ACrDY;AACb,YAAY,mBAAO,CAAC,CAAoB;;AAExC;AACA;AACA;AACA;AACA,+CAA+C,SAAS,EAAE;AAC1D,GAAG;AACH;;;;;;;ACTA,QAAQ,mBAAO,CAAC,CAAqB;AACrC,YAAY,mBAAO,CAAC,CAAoB;AACxC,sBAAsB,mBAAO,CAAC,EAAgC;AAC9D,qCAAqC,mBAAO,CAAC,EAAiD;AAC9F,kBAAkB,mBAAO,CAAC,EAA0B;;AAEpD,6CAA6C,mCAAmC,EAAE;AAClF;;AAEA;AACA;AACA,GAAG,mEAAmE;AACtE;AACA;AACA;AACA,CAAC;;;;;;;ACfD,YAAY,mBAAO,CAAC,CAAoB;;AAExC;AACA;AACA,wDAAwD;AACxD,CAAC;;;;;;;ACLD,kBAAkB,mBAAO,CAAC,EAAe;;AAEzC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,oCAAoC;AAC/C,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,oBAAoB,YAAY,QAAQ;AAChF,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,0BAA0B,cAAc;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;;AAGA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB,YAAY,OAAO;AACnB,YAAY,kBAAkB;AAC9B,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,EAAE;AACF,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,cAAc;AAC1B,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,yBAAyB;AACzB,0BAA0B;AAC1B,2BAA2B;AAC3B,4BAA4B;AAC5B,+BAA+B;AAC/B;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,SAAS;AACT;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO,gEAAgE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA,GAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,UAAU;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,UAAU;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,cAAc,MAAM;AACpB;AACA;AACA;AACA,4BAA4B,gDAAgD;AAC5E,IAAI;AACJ,4BAA4B,oCAAoC;AAChE;AACA;;AAEA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA,4BAA4B,gCAAgC;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gCAAgC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,2EAA2E;AAC3E,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC39Ca;AACb,oCAAoC,mBAAO,CAAC,EAAiD;AAC7F,eAAe,mBAAO,CAAC,CAAwB;AAC/C,eAAe,mBAAO,CAAC,EAAwB;AAC/C,eAAe,mBAAO,CAAC,EAAwB;AAC/C,6BAA6B,mBAAO,CAAC,EAAuC;AAC5E,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,yBAAyB,mBAAO,CAAC,GAAmC;AACpE,iBAAiB,mBAAO,CAAC,EAAmC;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AC7CY;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,oBAAoB,mBAAO,CAAC,EAA6B;AACzD,sBAAsB,mBAAO,CAAC,EAAgC;AAC9D,0BAA0B,mBAAO,CAAC,GAAqC;;AAEvE;;AAEA;AACA;;AAEA;AACA;AACA,GAAG,sEAAsE;AACzE;AACA;AACA;AACA,CAAC;;;;;;;ACjBD,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;;;;;;;ACFA,WAAW,mBAAO,CAAC,GAAmB;AACtC,aAAa,mBAAO,CAAC,EAA+B;AACpD,mCAAmC,mBAAO,CAAC,GAAwC;AACnF,qBAAqB,mBAAO,CAAC,EAAqC;;AAElE;AACA,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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,iBAAiB;AACxF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG,GAAG,eAAe;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;ACzOA;AACA;;;;;;;ACDA,0BAA0B,mBAAO,CAAC,EAAqC;AACvE,eAAe,mBAAO,CAAC,EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,QAAQ,qBAAqB;AAC7B;AACA;AACA,QAAQ,oBAAoB;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;;;;;;ACrFA,iBAAiB,mBAAO,CAAC,CAA0B;;AAEnD;AACA;AACA;AACA;;;;;;;;ACLa;AACb,4BAA4B,mBAAO,CAAC,GAAoC;AACxE,cAAc,mBAAO,CAAC,EAAsB;;AAE5C;AACA;AACA,2CAA2C;AAC3C;AACA;;;;;;;ACRA,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;;;;;;;ACFA,eAAe,mBAAO,CAAC,CAAwB;AAC/C,4BAA4B,mBAAO,CAAC,GAAuC;AAC3E,wBAAwB,mBAAO,CAAC,EAAmC;AACnE,WAAW,mBAAO,CAAC,EAAoC;AACvD,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,wBAAwB,mBAAO,CAAC,EAAkC;AAClE,oBAAoB,mBAAO,CAAC,GAA6B;;AAEzD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,2DAA2D,gBAAgB;AAC3E;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACzDA,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS,EAAE;AACzD,CAAC,gBAAgB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;;;;;;;ACrCA,aAAa,mBAAO,CAAC,CAAqB;AAC1C,+BAA+B,mBAAO,CAAC,EAAiD;AACxF,gBAAgB,mBAAO,CAAC,GAAmB;AAC3C,aAAa,mBAAO,CAAC,GAA4B;AACjD,oBAAoB,mBAAO,CAAC,GAAmC;AAC/D,sBAAsB,mBAAO,CAAC,GAAqC;AACnE,cAAc,mBAAO,CAAC,GAA6B;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;AClFA,gBAAgB,mBAAO,CAAC,EAAgC;AACxD,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;;;;;;;ACHA,gBAAgB,mBAAO,CAAC,EAAgC;;AAExD;;;;;;;ACFA,eAAe,mBAAO,CAAC,CAAwB;AAC/C,eAAe,mBAAO,CAAC,CAAwB;AAC/C,2BAA2B,mBAAO,CAAC,GAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA,YAAY;AACZ,GAAG;AACH,YAAY;AACZ;AACA;;;;;;;ACNA;;;;;;;ACAA,eAAe,mBAAO,CAAC,EAAwB;;AAE/C;AACA;AACA,yCAAyC,IAAI;AAC7C,kDAAkD,IAAI;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACxCA,cAAc,mBAAO,CAAC,EAAuB;AAC7C,oBAAoB,mBAAO,CAAC,EAA6B;AACzD,eAAe,mBAAO,CAAC,CAAwB;AAC/C,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;ACpBa;;AAEb,oBAAoB,mBAAO,CAAC,GAAuB;AACnD,oBAAoB,mBAAO,CAAC,GAAkC;AAC9D,oBAAoB,mBAAO,CAAC,GAA4B;AACxD,oBAAoB,mBAAO,CAAC,GAA2B;;AAEvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA,SAAS;AACT;AACA;;;;;;;;AC9Da;;AAEb,iBAAiB,mBAAO,CAAC,GAAkB;AAC3C;AACA,GAAG,mBAAO,CAAC,GAAQ;;;;;;;;ACJN;;AAEb;AACA;AACA;AACA,QAAQ;AACR,cAAc,aAAa,GAAG,eAAe;AAC7C;AACA;;;;;;;;ACRa;;AAEb,YAAY,mBAAO,CAAC,GAAS;AAC7B,YAAY,mBAAO,CAAC,GAAgB;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBa;;AAEb,iBAAiB,mBAAO,CAAC,GAAkB;AAC3C;AACA,GAAG,mBAAO,CAAC,GAAQ;;;;;;;;ACJN;;AAEb;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;ACTa;;AAEb,cAAc,mBAAO,CAAC,GAAa;;AAEnC;;AAEA;AACA;AACA;;;;;;;;ACRa;;AAEb;AACA;;;;;;;;ACHa;;AAEb,cAAc,mBAAO,CAAC,GAAY;;AAElC;AACA;AACA;AACA;;;;;;;;ACPa;;AAEb,cAAc,mBAAO,CAAC,GAAY;;AAElC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;;;;;;ACnBA;;AAEa;;AAEb;AACA;AACA;;;;;;;;ACNa;;AAEb,iBAAiB,mBAAO,CAAC,GAAkB;AAC3C;AACA,GAAG,mBAAO,CAAC,GAAQ;;;;;;;;ACJN;;AAEb;;AAEA;AACA;AACA;AACA;;;;;;;;ACPa;;AAEb;;AAEA;AACA;AACA;;;;;;;;ACNa;;AAEb;AACA;AACA;AACA;;;;;;;;ACLa;AACb,WAAW,mBAAO,CAAC,EAAoC;AACvD,eAAe,mBAAO,CAAC,EAAwB;AAC/C,mCAAmC,mBAAO,CAAC,GAA+C;AAC1F,4BAA4B,mBAAO,CAAC,GAAuC;AAC3E,oBAAoB,mBAAO,CAAC,EAA6B;AACzD,wBAAwB,mBAAO,CAAC,EAAmC;AACnE,qBAAqB,mBAAO,CAAC,EAA8B;AAC3D,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,wBAAwB,mBAAO,CAAC,EAAkC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,eAAe;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1CA,eAAe,mBAAO,CAAC,CAAwB;AAC/C,oBAAoB,mBAAO,CAAC,GAA6B;;AAEzD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;ACVa;AACb;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,oBAAoB;AACpB,mCAAmC;AACnC,+CAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA,OAAO;AACP,uCAAuC;AACvC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mCAAmC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC,mCAAmC;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;;;;;;;;ACvKa;AACb,eAAe,mBAAO,CAAC,EAA8B;AACrD,0BAA0B,mBAAO,CAAC,GAAqC;;AAEvE;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACXD,QAAQ,mBAAO,CAAC,CAAqB;AACrC,YAAY,mBAAO,CAAC,CAAoB;AACxC,0BAA0B,mBAAO,CAAC,GAAqD;;AAEvF;AACA,6CAA6C,uCAAuC,EAAE;;AAEtF;AACA;AACA,GAAG,4DAA4D;AAC/D;AACA,CAAC;;;;;;;ACXD,QAAQ,mBAAO,CAAC,CAAqB;AACrC,eAAe,mBAAO,CAAC,GAAuB;AAC9C,YAAY,mBAAO,CAAC,CAAoB;AACxC,eAAe,mBAAO,CAAC,CAAwB;AAC/C,eAAe,mBAAO,CAAC,GAAgC;;AAEvD;AACA;AACA,6CAA6C,YAAY,EAAE;;AAE3D;AACA;AACA,GAAG,6EAA6E;AAChF;AACA;AACA;AACA,CAAC;;;;;;;AChBD,QAAQ,mBAAO,CAAC,CAAqB;AACrC,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,eAAe,mBAAO,CAAC,CAAwB;AAC/C,aAAa,mBAAO,CAAC,EAA+B;AACpD,qBAAqB,mBAAO,CAAC,EAAqC;AAClE,gCAAgC,mBAAO,CAAC,EAA4C;AACpF,wCAAwC,mBAAO,CAAC,GAAqD;AACrG,UAAU,mBAAO,CAAC,EAAkB;AACpC,eAAe,mBAAO,CAAC,GAAuB;;AAE9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA,gBAAgB;AAChB,GAAG,EAAE;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,OAAO,6CAA6C;AACpD;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3FA,kBAAkB,mBAAO,CAAC,EAAe;AACzC,UAAU,mBAAO,CAAC,GAAO;AACzB,eAAe,mBAAO,CAAC,GAAY;AACnC,UAAU,mBAAO,CAAC,GAAO;;AAEzB;;AAEA;;AAEA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mBAAmB;AAC/D;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,gCAAgC;AAChC;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,CAAC;;AAED,kHAAkH;AAClH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;AC3QA,aAAa,mBAAO,CAAC,EAAe;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4CAA4C;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;;;;;;AChRA,gBAAgB,mBAAO,CAAC,EAAe;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,eAAe;AACf,mBAAmB;AACnB,aAAa;AACb,4BAA4B;AAC5B,mBAAmB;AACnB,oBAAoB;AACpB,oBAAoB;;AAEpB;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,uB;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,8BAA8B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA4H;AAC5H;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,WAAW;AACX,mBAAmB,MAAM;AACzB;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,IAAI;AACJ,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,IAAI,KAAK;AACT;AACA;AACA;AACA,wBAAwB;AACxB,yBAAyB;AACzB,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,IAAI;AACJ;;AAEA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,KAAK;AACZ,gCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,I;AACA;AACA;AACA,sBAAsB;AACtB;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,KAAK;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,EAAE;AACF;AACA,0BAA0B,yBAAyB;AACnD,wBAAwB,uBAAuB;AAC/C,sBAAsB,qBAAqB;AAC3C,oBAAoB,mBAAmB;AACvC,sBAAsB;AACtB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ,uBAAuB,0DAA0D;AACjF;AACA,wBAAwB;AACxB;;;;AAIA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;ACnoBa;AACb,oCAAoC,mBAAO,CAAC,EAAiD;AAC7F,eAAe,mBAAO,CAAC,CAAwB;AAC/C,6BAA6B,mBAAO,CAAC,EAAuC;AAC5E,gBAAgB,mBAAO,CAAC,GAAyB;AACjD,eAAe,mBAAO,CAAC,EAAwB;AAC/C,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,iBAAiB,mBAAO,CAAC,EAAmC;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACnCD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;;;;;;;ACFA,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,aAAa,mBAAO,CAAC,CAAqB;AAC1C,eAAe,mBAAO,CAAC,GAAwB;AAC/C,wBAAwB,mBAAO,CAAC,GAAkC;AAClE,kCAAkC,mBAAO,CAAC,EAA6C;AACvF,qBAAqB,mBAAO,CAAC,EAAqC;AAClE,0BAA0B,mBAAO,CAAC,EAA4C;AAC9E,eAAe,mBAAO,CAAC,GAAwB;AAC/C,eAAe,mBAAO,CAAC,EAAwB;AAC/C,eAAe,mBAAO,CAAC,GAA2B;AAClD,oBAAoB,mBAAO,CAAC,GAAoC;AAChE,eAAe,mBAAO,CAAC,EAAuB;AAC9C,YAAY,mBAAO,CAAC,CAAoB;AACxC,aAAa,mBAAO,CAAC,EAA+B;AACpD,2BAA2B,mBAAO,CAAC,EAA6B;AAChE,iBAAiB,mBAAO,CAAC,GAA0B;AACnD,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,0BAA0B,mBAAO,CAAC,GAAyC;AAC3E,sBAAsB,mBAAO,CAAC,GAAqC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,gBAAgB;;AAErB;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,0BAA0B,EAAE;AACpD,0BAA0B,wBAAwB;AAClD,KAAK;AACL;;AAEA,+DAA+D,qBAAqB;AACpF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC5LA,iBAAiB,mBAAO,CAAC,CAA0B;AACnD,eAAe,mBAAO,CAAC,CAAwB;AAC/C,qBAAqB,mBAAO,CAAC,EAAsC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjBA,6BAA6B,mBAAO,CAAC,EAAuC;AAC5E,eAAe,mBAAO,CAAC,EAAwB;AAC/C,kBAAkB,mBAAO,CAAC,GAA0B;;AAEpD;AACA;AACA;;AAEA,sBAAsB,gDAAgD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA,2BAA2B,mBAAO,CAAC,EAA4B;AAC/D,YAAY,mBAAO,CAAC,CAAoB;AACxC,kBAAkB,mBAAO,CAAC,GAA0B;;AAEpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACdA,eAAe,mBAAO,CAAC,GAAwB;;AAE/C;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACNA,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK,iBAAiB;AACtB,GAAG;AACH;;;;;;;ACdA,QAAQ,mBAAO,CAAC,CAAqB;AACrC,aAAa,mBAAO,CAAC,GAA4B;;AAEjD;AACA;AACA;AACA,GAAG,iEAAiE;AACpE;AACA,CAAC;;;;;;;;ACRY;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACZa;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,KAAK;AACvB,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa;AACb;AACA;AACA,+BAA+B,MAAM,iBAAiB;AACtD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA,aAAa;AACb,aAAa;AACb,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/HA,WAAW,mBAAO,CAAC,GAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;;AAEA;;;;;;;;ACHA,eAAe,mBAAO,CAAC,GAAa;AACpC,eAAe,mBAAO,CAAC,GAAY;AACnC,eAAe,mBAAO,CAAC,GAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/DA,sBAAsB,mBAAO,CAAC,GAAoB;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;AClBA,iBAAiB,mBAAO,CAAC,GAAe;AACxC,mBAAmB,mBAAO,CAAC,GAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA,aAAa,mBAAO,CAAC,GAAW;AAChC,gBAAgB,mBAAO,CAAC,GAAc;AACtC,qBAAqB,mBAAO,CAAC,GAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA,aAAa,mBAAO,CAAC,GAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7CA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA,QAAQ,mBAAO,CAAC,CAAqB;AACrC,WAAW,mBAAO,CAAC,GAAyB;AAC5C,uBAAuB,mBAAO,CAAC,EAAiC;;AAEhE;AACA;AACA,GAAG,+BAA+B;AAClC;AACA,CAAC;;AAED;AACA;;;;;;;ACXA,QAAQ,mBAAO,CAAC,CAAqB;AACrC,YAAY,mBAAO,CAAC,CAAoB;AACxC,eAAe,mBAAO,CAAC,EAAwB;AAC/C,2BAA2B,mBAAO,CAAC,EAAsC;AACzE,+BAA+B,mBAAO,CAAC,GAAuC;;AAE9E,6CAA6C,yBAAyB,EAAE;;AAExE;AACA;AACA,GAAG,6FAA6F;AAChG;AACA;AACA;AACA,CAAC;;;;;;;;ACdD,QAAQ,mBAAO,CAAC,CAAqB;AACrC,iBAAiB,mBAAO,CAAC,EAA2B;AACpD,mBAAmB,mBAAO,CAAC,GAA4B;AACvD,eAAe,mBAAO,CAAC,CAAwB;AAC/C,eAAe,mBAAO,CAAC,CAAwB;AAC/C,aAAa,mBAAO,CAAC,EAA4B;AACjD,WAAW,mBAAO,CAAC,GAA4B;AAC/C,YAAY,mBAAO,CAAC,CAAoB;;AAExC;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,wCAAwC,cAAc;AACtD,CAAC;AACD;AACA,+BAA+B,cAAc;AAC7C,CAAC;AACD;;AAEA,GAAG,8DAA8D;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AClDY;AACb,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,eAAe,mBAAO,CAAC,CAAwB;;AAE/C;AACA;;AAEA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1BA,QAAQ,mBAAO,CAAC,CAAqB;AACrC,eAAe,mBAAO,CAAC,CAAwB;AAC/C,eAAe,mBAAO,CAAC,CAAwB;AAC/C,uBAAuB,mBAAO,CAAC,GAAiC;AAChE,qCAAqC,mBAAO,CAAC,EAAiD;AAC9F,qBAAqB,mBAAO,CAAC,EAAsC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,gCAAgC;AACnC;AACA,CAAC;;;;;;;ACtBD,aAAa,mBAAO,CAAC,EAA+B;;AAEpD;AACA;AACA","file":"epub.legacy.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"JSZip\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"JSZip\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ePub\"] = factory(require(\"JSZip\"));\n\telse\n\t\troot[\"ePub\"] = factory(root[\"JSZip\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__168__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 169);\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","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","import {extend, type, findChildren, RangeObject, isNumber} from \"./utils/core\";\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst DOCUMENT_NODE = 9;\n\n/**\n\t* Parsing and creation of EpubCFIs: http://www.idpf.org/epub/linking/cfi/epub-cfi.html\n\n\t* Implements:\n\t* - Character Offset: epubcfi(/6/4[chap01ref]!/4[body01]/10[para05]/2/1:3)\n\t* - Simple Ranges : epubcfi(/6/4[chap01ref]!/4[body01]/10[para05],/2/1:1,/3:4)\n\n\t* Does Not Implement:\n\t* - Temporal Offset (~)\n\t* - Spatial Offset (@)\n\t* - Temporal-Spatial Offset (~ + @)\n\t* - Text Location Assertion ([)\n\t* @class\n\t@param {string | Range | Node } [cfiFrom]\n\t@param {string | object} [base]\n\t@param {string} [ignoreClass] class to ignore when parsing DOM\n*/\nclass EpubCFI {\n\tconstructor(cfiFrom, base, ignoreClass){\n\t\tvar type;\n\n\t\tthis.str = \"\";\n\n\t\tthis.base = {};\n\t\tthis.spinePos = 0; // For compatibility\n\n\t\tthis.range = false; // true || false;\n\n\t\tthis.path = {};\n\t\tthis.start = null;\n\t\tthis.end = null;\n\n\t\t// Allow instantiation without the \"new\" keyword\n\t\tif (!(this instanceof EpubCFI)) {\n\t\t\treturn new EpubCFI(cfiFrom, base, ignoreClass);\n\t\t}\n\n\t\tif(typeof base === \"string\") {\n\t\t\tthis.base = this.parseComponent(base);\n\t\t} else if(typeof base === \"object\" && base.steps) {\n\t\t\tthis.base = base;\n\t\t}\n\n\t\ttype = this.checkType(cfiFrom);\n\n\n\t\tif(type === \"string\") {\n\t\t\tthis.str = cfiFrom;\n\t\t\treturn extend(this, this.parse(cfiFrom));\n\t\t} else if (type === \"range\") {\n\t\t\treturn extend(this, this.fromRange(cfiFrom, this.base, ignoreClass));\n\t\t} else if (type === \"node\") {\n\t\t\treturn extend(this, this.fromNode(cfiFrom, this.base, ignoreClass));\n\t\t} else if (type === \"EpubCFI\" && cfiFrom.path) {\n\t\t\treturn cfiFrom;\n\t\t} else if (!cfiFrom) {\n\t\t\treturn this;\n\t\t} else {\n\t\t\tthrow new TypeError(\"not a valid argument for EpubCFI\");\n\t\t}\n\n\t}\n\n\t/**\n\t * Check the type of constructor input\n\t * @private\n\t */\n\tcheckType(cfi) {\n\n\t\tif (this.isCfiString(cfi)) {\n\t\t\treturn \"string\";\n\t\t// Is a range object\n\t\t} else if (cfi && typeof cfi === \"object\" && (type(cfi) === \"Range\" || typeof(cfi.startContainer) != \"undefined\")){\n\t\t\treturn \"range\";\n\t\t} else if (cfi && typeof cfi === \"object\" && typeof(cfi.nodeType) != \"undefined\" ){ // || typeof cfi === \"function\"\n\t\t\treturn \"node\";\n\t\t} else if (cfi && typeof cfi === \"object\" && cfi instanceof EpubCFI){\n\t\t\treturn \"EpubCFI\";\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Parse a cfi string to a CFI object representation\n\t * @param {string} cfiStr\n\t * @returns {object} cfi\n\t */\n\tparse(cfiStr) {\n\t\tvar cfi = {\n\t\t\tspinePos: -1,\n\t\t\trange: false,\n\t\t\tbase: {},\n\t\t\tpath: {},\n\t\t\tstart: null,\n\t\t\tend: null\n\t\t};\n\t\tvar baseComponent, pathComponent, range;\n\n\t\tif(typeof cfiStr !== \"string\") {\n\t\t\treturn {spinePos: -1};\n\t\t}\n\n\t\tif(cfiStr.indexOf(\"epubcfi(\") === 0 && cfiStr[cfiStr.length-1] === \")\") {\n\t\t\t// Remove initial epubcfi( and ending )\n\t\t\tcfiStr = cfiStr.slice(8, cfiStr.length-1);\n\t\t}\n\n\t\tbaseComponent = this.getChapterComponent(cfiStr);\n\n\t\t// Make sure this is a valid cfi or return\n\t\tif(!baseComponent) {\n\t\t\treturn {spinePos: -1};\n\t\t}\n\n\t\tcfi.base = this.parseComponent(baseComponent);\n\n\t\tpathComponent = this.getPathComponent(cfiStr);\n\t\tcfi.path = this.parseComponent(pathComponent);\n\n\t\trange = this.getRange(cfiStr);\n\n\t\tif(range) {\n\t\t\tcfi.range = true;\n\t\t\tcfi.start = this.parseComponent(range[0]);\n\t\t\tcfi.end = this.parseComponent(range[1]);\n\t\t}\n\n\t\t// Get spine node position\n\t\t// cfi.spineSegment = cfi.base.steps[1];\n\n\t\t// Chapter segment is always the second step\n\t\tcfi.spinePos = cfi.base.steps[1].index;\n\n\t\treturn cfi;\n\t}\n\n\tparseComponent(componentStr){\n\t\tvar component = {\n\t\t\tsteps: [],\n\t\t\tterminal: {\n\t\t\t\toffset: null,\n\t\t\t\tassertion: null\n\t\t\t}\n\t\t};\n\t\tvar parts = componentStr.split(\":\");\n\t\tvar steps = parts[0].split(\"/\");\n\t\tvar terminal;\n\n\t\tif(parts.length > 1) {\n\t\t\tterminal = parts[1];\n\t\t\tcomponent.terminal = this.parseTerminal(terminal);\n\t\t}\n\n\t\tif (steps[0] === \"\") {\n\t\t\tsteps.shift(); // Ignore the first slash\n\t\t}\n\n\t\tcomponent.steps = steps.map(function(step){\n\t\t\treturn this.parseStep(step);\n\t\t}.bind(this));\n\n\t\treturn component;\n\t}\n\n\tparseStep(stepStr){\n\t\tvar type, num, index, has_brackets, id;\n\n\t\thas_brackets = stepStr.match(/\\[(.*)\\]/);\n\t\tif(has_brackets && has_brackets[1]){\n\t\t\tid = has_brackets[1];\n\t\t}\n\n\t\t//-- Check if step is a text node or element\n\t\tnum = parseInt(stepStr);\n\n\t\tif(isNaN(num)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(num % 2 === 0) { // Even = is an element\n\t\t\ttype = \"element\";\n\t\t\tindex = num / 2 - 1;\n\t\t} else {\n\t\t\ttype = \"text\";\n\t\t\tindex = (num - 1 ) / 2;\n\t\t}\n\n\t\treturn {\n\t\t\t\"type\" : type,\n\t\t\t\"index\" : index,\n\t\t\t\"id\" : id || null\n\t\t};\n\t}\n\n\tparseTerminal(termialStr){\n\t\tvar characterOffset, textLocationAssertion;\n\t\tvar assertion = termialStr.match(/\\[(.*)\\]/);\n\n\t\tif(assertion && assertion[1]){\n\t\t\tcharacterOffset = parseInt(termialStr.split(\"[\")[0]);\n\t\t\ttextLocationAssertion = assertion[1];\n\t\t} else {\n\t\t\tcharacterOffset = parseInt(termialStr);\n\t\t}\n\n\t\tif (!isNumber(characterOffset)) {\n\t\t\tcharacterOffset = null;\n\t\t}\n\n\t\treturn {\n\t\t\t\"offset\": characterOffset,\n\t\t\t\"assertion\": textLocationAssertion\n\t\t};\n\n\t}\n\n\tgetChapterComponent(cfiStr) {\n\n\t\tvar indirection = cfiStr.split(\"!\");\n\n\t\treturn indirection[0];\n\t}\n\n\tgetPathComponent(cfiStr) {\n\n\t\tvar indirection = cfiStr.split(\"!\");\n\n\t\tif(indirection[1]) {\n\t\t\tlet ranges = indirection[1].split(\",\");\n\t\t\treturn ranges[0];\n\t\t}\n\n\t}\n\n\tgetRange(cfiStr) {\n\n\t\tvar ranges = cfiStr.split(\",\");\n\n\t\tif(ranges.length === 3){\n\t\t\treturn [\n\t\t\t\tranges[1],\n\t\t\t\tranges[2]\n\t\t\t];\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tgetCharecterOffsetComponent(cfiStr) {\n\t\tvar splitStr = cfiStr.split(\":\");\n\t\treturn splitStr[1] || \"\";\n\t}\n\n\tjoinSteps(steps) {\n\t\tif(!steps) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\treturn steps.map(function(part){\n\t\t\tvar segment = \"\";\n\n\t\t\tif(part.type === \"element\") {\n\t\t\t\tsegment += (part.index + 1) * 2;\n\t\t\t}\n\n\t\t\tif(part.type === \"text\") {\n\t\t\t\tsegment += 1 + (2 * part.index); // TODO: double check that this is odd\n\t\t\t}\n\n\t\t\tif(part.id) {\n\t\t\t\tsegment += \"[\" + part.id + \"]\";\n\t\t\t}\n\n\t\t\treturn segment;\n\n\t\t}).join(\"/\");\n\n\t}\n\n\tsegmentString(segment) {\n\t\tvar segmentString = \"/\";\n\n\t\tsegmentString += this.joinSteps(segment.steps);\n\n\t\tif(segment.terminal && segment.terminal.offset != null){\n\t\t\tsegmentString += \":\" + segment.terminal.offset;\n\t\t}\n\n\t\tif(segment.terminal && segment.terminal.assertion != null){\n\t\t\tsegmentString += \"[\" + segment.terminal.assertion + \"]\";\n\t\t}\n\n\t\treturn segmentString;\n\t}\n\n\t/**\n\t * Convert CFI to a epubcfi(...) string\n\t * @returns {string} epubcfi\n\t */\n\ttoString() {\n\t\tvar cfiString = \"epubcfi(\";\n\n\t\tcfiString += this.segmentString(this.base);\n\n\t\tcfiString += \"!\";\n\t\tcfiString += this.segmentString(this.path);\n\n\t\t// Add Range, if present\n\t\tif(this.range && this.start) {\n\t\t\tcfiString += \",\";\n\t\t\tcfiString += this.segmentString(this.start);\n\t\t}\n\n\t\tif(this.range && this.end) {\n\t\t\tcfiString += \",\";\n\t\t\tcfiString += this.segmentString(this.end);\n\t\t}\n\n\t\tcfiString += \")\";\n\n\t\treturn cfiString;\n\t}\n\n\n\t/**\n\t * Compare which of two CFIs is earlier in the text\n\t * @returns {number} First is earlier = -1, Second is earlier = 1, They are equal = 0\n\t */\n\tcompare(cfiOne, cfiTwo) {\n\t\tvar stepsA, stepsB;\n\t\tvar terminalA, terminalB;\n\n\t\tvar rangeAStartSteps, rangeAEndSteps;\n\t\tvar rangeBEndSteps, rangeBEndSteps;\n\t\tvar rangeAStartTerminal, rangeAEndTerminal;\n\t\tvar rangeBStartTerminal, rangeBEndTerminal;\n\n\t\tif(typeof cfiOne === \"string\") {\n\t\t\tcfiOne = new EpubCFI(cfiOne);\n\t\t}\n\t\tif(typeof cfiTwo === \"string\") {\n\t\t\tcfiTwo = new EpubCFI(cfiTwo);\n\t\t}\n\t\t// Compare Spine Positions\n\t\tif(cfiOne.spinePos > cfiTwo.spinePos) {\n\t\t\treturn 1;\n\t\t}\n\t\tif(cfiOne.spinePos < cfiTwo.spinePos) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (cfiOne.range) {\n\t\t\tstepsA = cfiOne.path.steps.concat(cfiOne.start.steps);\n\t\t\tterminalA = cfiOne.start.terminal;\n\t\t} else {\n\t\t\tstepsA = cfiOne.path.steps;\n\t\t\tterminalA = cfiOne.path.terminal;\n\t\t}\n\n\t\tif (cfiTwo.range) {\n\t\t\tstepsB = cfiTwo.path.steps.concat(cfiTwo.start.steps);\n\t\t\tterminalB = cfiTwo.start.terminal;\n\t\t} else {\n\t\t\tstepsB = cfiTwo.path.steps;\n\t\t\tterminalB = cfiTwo.path.terminal;\n\t\t}\n\n\t\t// Compare Each Step in the First item\n\t\tfor (var i = 0; i < stepsA.length; i++) {\n\t\t\tif(!stepsA[i]) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif(!stepsB[i]) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif(stepsA[i].index > stepsB[i].index) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif(stepsA[i].index < stepsB[i].index) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\t// Otherwise continue checking\n\t\t}\n\n\t\t// All steps in First equal to Second and First is Less Specific\n\t\tif(stepsA.length < stepsB.length) {\n\t\t\treturn -1;\n\t\t}\n\n\t\t// Compare the character offset of the text node\n\t\tif(terminalA.offset > terminalB.offset) {\n\t\t\treturn 1;\n\t\t}\n\t\tif(terminalA.offset < terminalB.offset) {\n\t\t\treturn -1;\n\t\t}\n\n\t\t// CFI's are equal\n\t\treturn 0;\n\t}\n\n\tstep(node) {\n\t\tvar nodeType = (node.nodeType === TEXT_NODE) ? \"text\" : \"element\";\n\n\t\treturn {\n\t\t\t\"id\" : node.id,\n\t\t\t\"tagName\" : node.tagName,\n\t\t\t\"type\" : nodeType,\n\t\t\t\"index\" : this.position(node)\n\t\t};\n\t}\n\n\tfilteredStep(node, ignoreClass) {\n\t\tvar filteredNode = this.filter(node, ignoreClass);\n\t\tvar nodeType;\n\n\t\t// Node filtered, so ignore\n\t\tif (!filteredNode) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Otherwise add the filter node in\n\t\tnodeType = (filteredNode.nodeType === TEXT_NODE) ? \"text\" : \"element\";\n\n\t\treturn {\n\t\t\t\"id\" : filteredNode.id,\n\t\t\t\"tagName\" : filteredNode.tagName,\n\t\t\t\"type\" : nodeType,\n\t\t\t\"index\" : this.filteredPosition(filteredNode, ignoreClass)\n\t\t};\n\t}\n\n\tpathTo(node, offset, ignoreClass) {\n\t\tvar segment = {\n\t\t\tsteps: [],\n\t\t\tterminal: {\n\t\t\t\toffset: null,\n\t\t\t\tassertion: null\n\t\t\t}\n\t\t};\n\t\tvar currentNode = node;\n\t\tvar step;\n\n\t\twhile(currentNode && currentNode.parentNode &&\n\t\t\t\t\tcurrentNode.parentNode.nodeType != DOCUMENT_NODE) {\n\n\t\t\tif (ignoreClass) {\n\t\t\t\tstep = this.filteredStep(currentNode, ignoreClass);\n\t\t\t} else {\n\t\t\t\tstep = this.step(currentNode);\n\t\t\t}\n\n\t\t\tif (step) {\n\t\t\t\tsegment.steps.unshift(step);\n\t\t\t}\n\n\t\t\tcurrentNode = currentNode.parentNode;\n\n\t\t}\n\n\t\tif (offset != null && offset >= 0) {\n\n\t\t\tsegment.terminal.offset = offset;\n\n\t\t\t// Make sure we are getting to a textNode if there is an offset\n\t\t\tif(segment.steps[segment.steps.length-1].type != \"text\") {\n\t\t\t\tsegment.steps.push({\n\t\t\t\t\t\"type\" : \"text\",\n\t\t\t\t\t\"index\" : 0\n\t\t\t\t});\n\t\t\t}\n\n\t\t}\n\n\n\t\treturn segment;\n\t}\n\n\tequalStep(stepA, stepB) {\n\t\tif (!stepA || !stepB) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(stepA.index === stepB.index &&\n\t\t\t stepA.id === stepB.id &&\n\t\t\t stepA.type === stepB.type) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Create a CFI object from a Range\n\t * @param {Range} range\n\t * @param {string | object} base\n\t * @param {string} [ignoreClass]\n\t * @returns {object} cfi\n\t */\n\tfromRange(range, base, ignoreClass) {\n\t\tvar cfi = {\n\t\t\trange: false,\n\t\t\tbase: {},\n\t\t\tpath: {},\n\t\t\tstart: null,\n\t\t\tend: null\n\t\t};\n\n\t\tvar start = range.startContainer;\n\t\tvar end = range.endContainer;\n\n\t\tvar startOffset = range.startOffset;\n\t\tvar endOffset = range.endOffset;\n\n\t\tvar needsIgnoring = false;\n\n\t\tif (ignoreClass) {\n\t\t\t// Tell pathTo if / what to ignore\n\t\t\tneedsIgnoring = (start.ownerDocument.querySelector(\".\" + ignoreClass) != null);\n\t\t}\n\n\n\t\tif (typeof base === \"string\") {\n\t\t\tcfi.base = this.parseComponent(base);\n\t\t\tcfi.spinePos = cfi.base.steps[1].index;\n\t\t} else if (typeof base === \"object\") {\n\t\t\tcfi.base = base;\n\t\t}\n\n\t\tif (range.collapsed) {\n\t\t\tif (needsIgnoring) {\n\t\t\t\tstartOffset = this.patchOffset(start, startOffset, ignoreClass);\n\t\t\t}\n\t\t\tcfi.path = this.pathTo(start, startOffset, ignoreClass);\n\t\t} else {\n\t\t\tcfi.range = true;\n\n\t\t\tif (needsIgnoring) {\n\t\t\t\tstartOffset = this.patchOffset(start, startOffset, ignoreClass);\n\t\t\t}\n\n\t\t\tcfi.start = this.pathTo(start, startOffset, ignoreClass);\n\t\t\tif (needsIgnoring) {\n\t\t\t\tendOffset = this.patchOffset(end, endOffset, ignoreClass);\n\t\t\t}\n\n\t\t\tcfi.end = this.pathTo(end, endOffset, ignoreClass);\n\n\t\t\t// Create a new empty path\n\t\t\tcfi.path = {\n\t\t\t\tsteps: [],\n\t\t\t\tterminal: null\n\t\t\t};\n\n\t\t\t// Push steps that are shared between start and end to the common path\n\t\t\tvar len = cfi.start.steps.length;\n\t\t\tvar i;\n\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (this.equalStep(cfi.start.steps[i], cfi.end.steps[i])) {\n\t\t\t\t\tif(i === len-1) {\n\t\t\t\t\t\t// Last step is equal, check terminals\n\t\t\t\t\t\tif(cfi.start.terminal === cfi.end.terminal) {\n\t\t\t\t\t\t\t// CFI's are equal\n\t\t\t\t\t\t\tcfi.path.steps.push(cfi.start.steps[i]);\n\t\t\t\t\t\t\t// Not a range\n\t\t\t\t\t\t\tcfi.range = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcfi.path.steps.push(cfi.start.steps[i]);\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcfi.start.steps = cfi.start.steps.slice(cfi.path.steps.length);\n\t\t\tcfi.end.steps = cfi.end.steps.slice(cfi.path.steps.length);\n\n\t\t\t// TODO: Add Sanity check to make sure that the end if greater than the start\n\t\t}\n\n\t\treturn cfi;\n\t}\n\n\t/**\n\t * Create a CFI object from a Node\n\t * @param {Node} anchor\n\t * @param {string | object} base\n\t * @param {string} [ignoreClass]\n\t * @returns {object} cfi\n\t */\n\tfromNode(anchor, base, ignoreClass) {\n\t\tvar cfi = {\n\t\t\trange: false,\n\t\t\tbase: {},\n\t\t\tpath: {},\n\t\t\tstart: null,\n\t\t\tend: null\n\t\t};\n\n\t\tif (typeof base === \"string\") {\n\t\t\tcfi.base = this.parseComponent(base);\n\t\t\tcfi.spinePos = cfi.base.steps[1].index;\n\t\t} else if (typeof base === \"object\") {\n\t\t\tcfi.base = base;\n\t\t}\n\n\t\tcfi.path = this.pathTo(anchor, null, ignoreClass);\n\n\t\treturn cfi;\n\t}\n\n\tfilter(anchor, ignoreClass) {\n\t\tvar needsIgnoring;\n\t\tvar sibling; // to join with\n\t\tvar parent, previousSibling, nextSibling;\n\t\tvar isText = false;\n\n\t\tif (anchor.nodeType === TEXT_NODE) {\n\t\t\tisText = true;\n\t\t\tparent = anchor.parentNode;\n\t\t\tneedsIgnoring = anchor.parentNode.classList.contains(ignoreClass);\n\t\t} else {\n\t\t\tisText = false;\n\t\t\tneedsIgnoring = anchor.classList.contains(ignoreClass);\n\t\t}\n\n\t\tif (needsIgnoring && isText) {\n\t\t\tpreviousSibling = parent.previousSibling;\n\t\t\tnextSibling = parent.nextSibling;\n\n\t\t\t// If the sibling is a text node, join the nodes\n\t\t\tif (previousSibling && previousSibling.nodeType === TEXT_NODE) {\n\t\t\t\tsibling = previousSibling;\n\t\t\t} else if (nextSibling && nextSibling.nodeType === TEXT_NODE) {\n\t\t\t\tsibling = nextSibling;\n\t\t\t}\n\n\t\t\tif (sibling) {\n\t\t\t\treturn sibling;\n\t\t\t} else {\n\t\t\t\t// Parent will be ignored on next step\n\t\t\t\treturn anchor;\n\t\t\t}\n\n\t\t} else if (needsIgnoring && !isText) {\n\t\t\t// Otherwise just skip the element node\n\t\t\treturn false;\n\t\t} else {\n\t\t\t// No need to filter\n\t\t\treturn anchor;\n\t\t}\n\n\t}\n\n\tpatchOffset(anchor, offset, ignoreClass) {\n\t\tif (anchor.nodeType != TEXT_NODE) {\n\t\t\tthrow new Error(\"Anchor must be a text node\");\n\t\t}\n\n\t\tvar curr = anchor;\n\t\tvar totalOffset = offset;\n\n\t\t// If the parent is a ignored node, get offset from it's start\n\t\tif (anchor.parentNode.classList.contains(ignoreClass)) {\n\t\t\tcurr = anchor.parentNode;\n\t\t}\n\n\t\twhile (curr.previousSibling) {\n\t\t\tif(curr.previousSibling.nodeType === ELEMENT_NODE) {\n\t\t\t\t// Originally a text node, so join\n\t\t\t\tif(curr.previousSibling.classList.contains(ignoreClass)){\n\t\t\t\t\ttotalOffset += curr.previousSibling.textContent.length;\n\t\t\t\t} else {\n\t\t\t\t\tbreak; // Normal node, dont join\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the previous sibling is a text node, join the nodes\n\t\t\t\ttotalOffset += curr.previousSibling.textContent.length;\n\t\t\t}\n\n\t\t\tcurr = curr.previousSibling;\n\t\t}\n\n\t\treturn totalOffset;\n\n\t}\n\n\tnormalizedMap(children, nodeType, ignoreClass) {\n\t\tvar output = {};\n\t\tvar prevIndex = -1;\n\t\tvar i, len = children.length;\n\t\tvar currNodeType;\n\t\tvar prevNodeType;\n\n\t\tfor (i = 0; i < len; i++) {\n\n\t\t\tcurrNodeType = children[i].nodeType;\n\n\t\t\t// Check if needs ignoring\n\t\t\tif (currNodeType === ELEMENT_NODE &&\n\t\t\t\t\tchildren[i].classList.contains(ignoreClass)) {\n\t\t\t\tcurrNodeType = TEXT_NODE;\n\t\t\t}\n\n\t\t\tif (i > 0 &&\n\t\t\t\t\tcurrNodeType === TEXT_NODE &&\n\t\t\t\t\tprevNodeType === TEXT_NODE) {\n\t\t\t\t// join text nodes\n\t\t\t\toutput[i] = prevIndex;\n\t\t\t} else if (nodeType === currNodeType){\n\t\t\t\tprevIndex = prevIndex + 1;\n\t\t\t\toutput[i] = prevIndex;\n\t\t\t}\n\n\t\t\tprevNodeType = currNodeType;\n\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tposition(anchor) {\n\t\tvar children, index;\n\t\tif (anchor.nodeType === ELEMENT_NODE) {\n\t\t\tchildren = anchor.parentNode.children;\n\t\t\tif (!children) {\n\t\t\t\tchildren = findChildren(anchor.parentNode);\n\t\t\t}\n\t\t\tindex = Array.prototype.indexOf.call(children, anchor);\n\t\t} else {\n\t\t\tchildren = this.textNodes(anchor.parentNode);\n\t\t\tindex = children.indexOf(anchor);\n\t\t}\n\n\t\treturn index;\n\t}\n\n\tfilteredPosition(anchor, ignoreClass) {\n\t\tvar children, index, map;\n\n\t\tif (anchor.nodeType === ELEMENT_NODE) {\n\t\t\tchildren = anchor.parentNode.children;\n\t\t\tmap = this.normalizedMap(children, ELEMENT_NODE, ignoreClass);\n\t\t} else {\n\t\t\tchildren = anchor.parentNode.childNodes;\n\t\t\t// Inside an ignored node\n\t\t\tif(anchor.parentNode.classList.contains(ignoreClass)) {\n\t\t\t\tanchor = anchor.parentNode;\n\t\t\t\tchildren = anchor.parentNode.childNodes;\n\t\t\t}\n\t\t\tmap = this.normalizedMap(children, TEXT_NODE, ignoreClass);\n\t\t}\n\n\n\t\tindex = Array.prototype.indexOf.call(children, anchor);\n\n\t\treturn map[index];\n\t}\n\n\tstepsToXpath(steps) {\n\t\tvar xpath = [\".\", \"*\"];\n\n\t\tsteps.forEach(function(step){\n\t\t\tvar position = step.index + 1;\n\n\t\t\tif(step.id){\n\t\t\t\txpath.push(\"*[position()=\" + position + \" and @id='\" + step.id + \"']\");\n\t\t\t} else if(step.type === \"text\") {\n\t\t\t\txpath.push(\"text()[\" + position + \"]\");\n\t\t\t} else {\n\t\t\t\txpath.push(\"*[\" + position + \"]\");\n\t\t\t}\n\t\t});\n\n\t\treturn xpath.join(\"/\");\n\t}\n\n\n\t/*\n\n\tTo get the last step if needed:\n\n\t// Get the terminal step\n\tlastStep = steps[steps.length-1];\n\t// Get the query string\n\tquery = this.stepsToQuery(steps);\n\t// Find the containing element\n\tstartContainerParent = doc.querySelector(query);\n\t// Find the text node within that element\n\tif(startContainerParent && lastStep.type == \"text\") {\n\t\tcontainer = startContainerParent.childNodes[lastStep.index];\n\t}\n\t*/\n\tstepsToQuerySelector(steps) {\n\t\tvar query = [\"html\"];\n\n\t\tsteps.forEach(function(step){\n\t\t\tvar position = step.index + 1;\n\n\t\t\tif(step.id){\n\t\t\t\tquery.push(\"#\" + step.id);\n\t\t\t} else if(step.type === \"text\") {\n\t\t\t\t// unsupported in querySelector\n\t\t\t\t// query.push(\"text()[\" + position + \"]\");\n\t\t\t} else {\n\t\t\t\tquery.push(\"*:nth-child(\" + position + \")\");\n\t\t\t}\n\t\t});\n\n\t\treturn query.join(\">\");\n\n\t}\n\n\ttextNodes(container, ignoreClass) {\n\t\treturn Array.prototype.slice.call(container.childNodes).\n\t\t\tfilter(function (node) {\n\t\t\t\tif (node.nodeType === TEXT_NODE) {\n\t\t\t\t\treturn true;\n\t\t\t\t} else if (ignoreClass && node.classList.contains(ignoreClass)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t}\n\n\twalkToNode(steps, _doc, ignoreClass) {\n\t\tvar doc = _doc || document;\n\t\tvar container = doc.documentElement;\n\t\tvar children;\n\t\tvar step;\n\t\tvar len = steps.length;\n\t\tvar i;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tstep = steps[i];\n\n\t\t\tif(step.type === \"element\") {\n\t\t\t\t//better to get a container using id as some times step.index may not be correct\n\t\t\t\t//For ex.https://github.com/futurepress/epub.js/issues/561\n\t\t\t\tif(step.id) {\n\t\t\t\t\tcontainer = doc.getElementById(step.id);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchildren = container.children || findChildren(container);\n\t\t\t\t\tcontainer = children[step.index];\n\t\t\t\t}\n\t\t\t} else if(step.type === \"text\") {\n\t\t\t\tcontainer = this.textNodes(container, ignoreClass)[step.index];\n\t\t\t}\n\t\t\tif(!container) {\n\t\t\t\t//Break the for loop as due to incorrect index we can get error if\n\t\t\t\t//container is undefined so that other functionailties works fine\n\t\t\t\t//like navigation\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t\treturn container;\n\t}\n\n\tfindNode(steps, _doc, ignoreClass) {\n\t\tvar doc = _doc || document;\n\t\tvar container;\n\t\tvar xpath;\n\n\t\tif(!ignoreClass && typeof doc.evaluate != \"undefined\") {\n\t\t\txpath = this.stepsToXpath(steps);\n\t\t\tcontainer = doc.evaluate(xpath, doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n\t\t} else if(ignoreClass) {\n\t\t\tcontainer = this.walkToNode(steps, doc, ignoreClass);\n\t\t} else {\n\t\t\tcontainer = this.walkToNode(steps, doc);\n\t\t}\n\n\t\treturn container;\n\t}\n\n\tfixMiss(steps, offset, _doc, ignoreClass) {\n\t\tvar container = this.findNode(steps.slice(0,-1), _doc, ignoreClass);\n\t\tvar children = container.childNodes;\n\t\tvar map = this.normalizedMap(children, TEXT_NODE, ignoreClass);\n\t\tvar child;\n\t\tvar len;\n\t\tvar lastStepIndex = steps[steps.length-1].index;\n\n\t\tfor (let childIndex in map) {\n\t\t\tif (!map.hasOwnProperty(childIndex)) return;\n\n\t\t\tif(map[childIndex] === lastStepIndex) {\n\t\t\t\tchild = children[childIndex];\n\t\t\t\tlen = child.textContent.length;\n\t\t\t\tif(offset > len) {\n\t\t\t\t\toffset = offset - len;\n\t\t\t\t} else {\n\t\t\t\t\tif (child.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tcontainer = child.childNodes[0];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontainer = child;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tcontainer: container,\n\t\t\toffset: offset\n\t\t};\n\n\t}\n\n\t/**\n\t * Creates a DOM range representing a CFI\n\t * @param {document} _doc document referenced in the base\n\t * @param {string} [ignoreClass]\n\t * @return {Range}\n\t */\n\ttoRange(_doc, ignoreClass) {\n\t\tvar doc = _doc || document;\n\t\tvar range;\n\t\tvar start, end, startContainer, endContainer;\n\t\tvar cfi = this;\n\t\tvar startSteps, endSteps;\n\t\tvar needsIgnoring = ignoreClass ? (doc.querySelector(\".\" + ignoreClass) != null) : false;\n\t\tvar missed;\n\n\t\tif (typeof(doc.createRange) !== \"undefined\") {\n\t\t\trange = doc.createRange();\n\t\t} else {\n\t\t\trange = new RangeObject();\n\t\t}\n\n\t\tif (cfi.range) {\n\t\t\tstart = cfi.start;\n\t\t\tstartSteps = cfi.path.steps.concat(start.steps);\n\t\t\tstartContainer = this.findNode(startSteps, doc, needsIgnoring ? ignoreClass : null);\n\t\t\tend = cfi.end;\n\t\t\tendSteps = cfi.path.steps.concat(end.steps);\n\t\t\tendContainer = this.findNode(endSteps, doc, needsIgnoring ? ignoreClass : null);\n\t\t} else {\n\t\t\tstart = cfi.path;\n\t\t\tstartSteps = cfi.path.steps;\n\t\t\tstartContainer = this.findNode(cfi.path.steps, doc, needsIgnoring ? ignoreClass : null);\n\t\t}\n\n\t\tif(startContainer) {\n\t\t\ttry {\n\n\t\t\t\tif(start.terminal.offset != null) {\n\t\t\t\t\trange.setStart(startContainer, start.terminal.offset);\n\t\t\t\t} else {\n\t\t\t\t\trange.setStart(startContainer, 0);\n\t\t\t\t}\n\n\t\t\t} catch (e) {\n\t\t\t\tmissed = this.fixMiss(startSteps, start.terminal.offset, doc, needsIgnoring ? ignoreClass : null);\n\t\t\t\trange.setStart(missed.container, missed.offset);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\"No startContainer found for\", this.toString());\n\t\t\t// No start found\n\t\t\treturn null;\n\t\t}\n\n\t\tif (endContainer) {\n\t\t\ttry {\n\n\t\t\t\tif(end.terminal.offset != null) {\n\t\t\t\t\trange.setEnd(endContainer, end.terminal.offset);\n\t\t\t\t} else {\n\t\t\t\t\trange.setEnd(endContainer, 0);\n\t\t\t\t}\n\n\t\t\t} catch (e) {\n\t\t\t\tmissed = this.fixMiss(endSteps, cfi.end.terminal.offset, doc, needsIgnoring ? ignoreClass : null);\n\t\t\t\trange.setEnd(missed.container, missed.offset);\n\t\t\t}\n\t\t}\n\n\n\t\t// doc.defaultView.getSelection().addRange(range);\n\t\treturn range;\n\t}\n\n\t/**\n\t * Check if a string is wrapped with \"epubcfi()\"\n\t * @param {string} str\n\t * @returns {boolean}\n\t */\n\tisCfiString(str) {\n\t\tif(typeof str === \"string\" &&\n\t\t\tstr.indexOf(\"epubcfi(\") === 0 &&\n\t\t\tstr[str.length-1] === \")\") {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tgenerateChapterComponent(_spineNodeIndex, _pos, id) {\n\t\tvar pos = parseInt(_pos),\n\t\t\t\tspineNodeIndex = (_spineNodeIndex + 1) * 2,\n\t\t\t\tcfi = \"/\"+spineNodeIndex+\"/\";\n\n\t\tcfi += (pos + 1) * 2;\n\n\t\tif(id) {\n\t\t\tcfi += \"[\" + id + \"]\";\n\t\t}\n\n\t\treturn cfi;\n\t}\n\n\t/**\n\t * Collapse a CFI Range to a single CFI Position\n\t * @param {boolean} [toStart=false]\n\t */\n\tcollapse(toStart) {\n\t\tif (!this.range) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.range = false;\n\n\t\tif (toStart) {\n\t\t\tthis.path.steps = this.path.steps.concat(this.start.steps);\n\t\t\tthis.path.terminal = this.start.terminal;\n\t\t} else {\n\t\t\tthis.path.steps = this.path.steps.concat(this.end.steps);\n\t\t\tthis.path.terminal = this.end.terminal;\n\t\t}\n\n\t}\n}\n\nexport default EpubCFI;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : isCallable(it);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var 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 d = require('d')\n , callable = require('es5-ext/object/valid-callable')\n\n , apply = Function.prototype.apply, call = Function.prototype.call\n , create = Object.create, defineProperty = Object.defineProperty\n , defineProperties = Object.defineProperties\n , hasOwnProperty = Object.prototype.hasOwnProperty\n , descriptor = { configurable: true, enumerable: false, writable: true }\n\n , on, once, off, emit, methods, descriptors, base;\n\non = function (type, listener) {\n\tvar data;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) {\n\t\tdata = descriptor.value = create(null);\n\t\tdefineProperty(this, '__ee__', descriptor);\n\t\tdescriptor.value = null;\n\t} else {\n\t\tdata = this.__ee__;\n\t}\n\tif (!data[type]) data[type] = listener;\n\telse if (typeof data[type] === 'object') data[type].push(listener);\n\telse data[type] = [data[type], listener];\n\n\treturn this;\n};\n\nonce = function (type, listener) {\n\tvar once, self;\n\n\tcallable(listener);\n\tself = this;\n\ton.call(this, type, once = function () {\n\t\toff.call(self, type, once);\n\t\tapply.call(listener, this, arguments);\n\t});\n\n\tonce.__eeOnceListener__ = listener;\n\treturn this;\n};\n\noff = function (type, listener) {\n\tvar data, listeners, candidate, i;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return this;\n\tdata = this.__ee__;\n\tif (!data[type]) return this;\n\tlisteners = data[type];\n\n\tif (typeof listeners === 'object') {\n\t\tfor (i = 0; (candidate = listeners[i]); ++i) {\n\t\t\tif ((candidate === listener) ||\n\t\t\t\t\t(candidate.__eeOnceListener__ === listener)) {\n\t\t\t\tif (listeners.length === 2) data[type] = listeners[i ? 0 : 1];\n\t\t\t\telse listeners.splice(i, 1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif ((listeners === listener) ||\n\t\t\t\t(listeners.__eeOnceListener__ === listener)) {\n\t\t\tdelete data[type];\n\t\t}\n\t}\n\n\treturn this;\n};\n\nemit = function (type) {\n\tvar i, l, listener, listeners, args;\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return;\n\tlisteners = this.__ee__[type];\n\tif (!listeners) return;\n\n\tif (typeof listeners === 'object') {\n\t\tl = arguments.length;\n\t\targs = new Array(l - 1);\n\t\tfor (i = 1; i < l; ++i) args[i - 1] = arguments[i];\n\n\t\tlisteners = listeners.slice();\n\t\tfor (i = 0; (listener = listeners[i]); ++i) {\n\t\t\tapply.call(listener, this, args);\n\t\t}\n\t} else {\n\t\tswitch (arguments.length) {\n\t\tcase 1:\n\t\t\tcall.call(listeners, this);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tcall.call(listeners, this, arguments[1]);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tcall.call(listeners, this, arguments[1], arguments[2]);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tl = arguments.length;\n\t\t\targs = new Array(l - 1);\n\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t}\n\t\t\tapply.call(listeners, this, args);\n\t\t}\n\t}\n};\n\nmethods = {\n\ton: on,\n\tonce: once,\n\toff: off,\n\temit: emit\n};\n\ndescriptors = {\n\ton: d(on),\n\tonce: d(once),\n\toff: d(off),\n\temit: d(emit)\n};\n\nbase = defineProperties({}, descriptors);\n\nmodule.exports = exports = function (o) {\n\treturn (o == null) ? create(base) : defineProperties(Object(o), descriptors);\n};\nexports.methods = methods;\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\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","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\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","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var classof = require('../internals/classof');\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\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","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\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","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aCallable(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromiseConstructorPrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\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","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? splitter.call(separator, O, limit)\n : internalSplit.call(toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar nativeFetch = getBuiltIn('fetch');\nvar NativeRequest = getBuiltIn('Request');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (iteratorMethod) {\n iterator = getIterator(init, iteratorMethod);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: $toString(init[key]) });\n } else {\n parseSearchParams(\n entries,\n typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : $toString(init)\n );\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: $toString(name), value: $toString(value) });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestConstructor, 'Request');\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","module.exports = false;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return input.charAt(pointer);\n };\n\n if (chr() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex == 8) return;\n if (chr() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(chr())) return;\n while (DIGIT.test(chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (chr() == ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return hasOwn(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && ALPHA.test(chr)) {\n buffer += chr.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (ALPHANUMERIC.test(chr) || chr == '+' || chr == '-' || chr == '.')) {\n buffer += chr.toLowerCase();\n } else if (chr == ':') {\n if (stateOverride && (\n (isSpecial(url) != hasOwn(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (chr == '/' || (chr == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (chr == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (chr == '/' || chr == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr != '/' && chr != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr == '[') seenBracket = true;\n else if (chr == ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (DIGIT.test(chr)) {\n buffer += chr;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (chr == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (chr == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr == '/' || chr == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (chr != '/' && chr != '\\\\') continue;\n } else if (!stateOverride && chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n state = PATH;\n if (chr != '/') continue;\n } break;\n\n case PATH:\n if (\n chr == EOF || chr == '/' ||\n (chr == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (chr == '?' || chr == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (chr != '/' && !(chr == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (chr != '/' && !(chr == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n if (chr == \"'\" && isSpecial(url)) url.query += '%27';\n else if (chr == '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = $toString(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, $toString(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = $toString(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, $toString(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom($toString(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom($toString(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, $toString(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, $toString(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = $toString(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, $toString(pathname), PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = $toString(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = $toString(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","import {defer, requestAnimationFrame} from \"./core\";\n\n/**\n * Queue for handling tasks one at a time\n * @class\n * @param {scope} context what this will resolve to in the tasks\n */\nclass Queue {\n\tconstructor(context){\n\t\tthis._q = [];\n\t\tthis.context = context;\n\t\tthis.tick = requestAnimationFrame;\n\t\tthis.running = false;\n\t\tthis.paused = false;\n\t}\n\n\t/**\n\t * Add an item to the queue\n\t * @return {Promise}\n\t */\n\tenqueue() {\n\t\tvar deferred, promise;\n\t\tvar queued;\n\t\tvar task = [].shift.call(arguments);\n\t\tvar args = arguments;\n\n\t\t// Handle single args without context\n\t\t// if(args && !Array.isArray(args)) {\n\t\t// args = [args];\n\t\t// }\n\t\tif(!task) {\n\t\t\tthrow new Error(\"No Task Provided\");\n\t\t}\n\n\t\tif(typeof task === \"function\"){\n\n\t\t\tdeferred = new defer();\n\t\t\tpromise = deferred.promise;\n\n\t\t\tqueued = {\n\t\t\t\t\"task\" : task,\n\t\t\t\t\"args\" : args,\n\t\t\t\t//\"context\" : context,\n\t\t\t\t\"deferred\" : deferred,\n\t\t\t\t\"promise\" : promise\n\t\t\t};\n\n\t\t} else {\n\t\t\t// Task is a promise\n\t\t\tqueued = {\n\t\t\t\t\"promise\" : task\n\t\t\t};\n\n\t\t}\n\n\t\tthis._q.push(queued);\n\n\t\t// Wait to start queue flush\n\t\tif (this.paused == false && !this.running) {\n\t\t\t// setTimeout(this.flush.bind(this), 0);\n\t\t\t// this.tick.call(window, this.run.bind(this));\n\t\t\tthis.run();\n\t\t}\n\n\t\treturn queued.promise;\n\t}\n\n\t/**\n\t * Run one item\n\t * @return {Promise}\n\t */\n\tdequeue(){\n\t\tvar inwait, task, result;\n\n\t\tif(this._q.length && !this.paused) {\n\t\t\tinwait = this._q.shift();\n\t\t\ttask = inwait.task;\n\t\t\tif(task){\n\t\t\t\t// console.log(task)\n\n\t\t\t\tresult = task.apply(this.context, inwait.args);\n\n\t\t\t\tif(result && typeof result[\"then\"] === \"function\") {\n\t\t\t\t\t// Task is a function that returns a promise\n\t\t\t\t\treturn result.then(function(){\n\t\t\t\t\t\tinwait.deferred.resolve.apply(this.context, arguments);\n\t\t\t\t\t}.bind(this), function() {\n\t\t\t\t\t\tinwait.deferred.reject.apply(this.context, arguments);\n\t\t\t\t\t}.bind(this));\n\t\t\t\t} else {\n\t\t\t\t\t// Task resolves immediately\n\t\t\t\t\tinwait.deferred.resolve.apply(this.context, result);\n\t\t\t\t\treturn inwait.promise;\n\t\t\t\t}\n\n\n\n\t\t\t} else if(inwait.promise) {\n\t\t\t\t// Task is a promise\n\t\t\t\treturn inwait.promise;\n\t\t\t}\n\n\t\t} else {\n\t\t\tinwait = new defer();\n\t\t\tinwait.deferred.resolve();\n\t\t\treturn inwait.promise;\n\t\t}\n\n\t}\n\n\t// Run All Immediately\n\tdump(){\n\t\twhile(this._q.length) {\n\t\t\tthis.dequeue();\n\t\t}\n\t}\n\n\t/**\n\t * Run all tasks sequentially, at convince\n\t * @return {Promise}\n\t */\n\trun(){\n\n\t\tif(!this.running){\n\t\t\tthis.running = true;\n\t\t\tthis.defered = new defer();\n\t\t}\n\n\t\tthis.tick.call(window, () => {\n\n\t\t\tif(this._q.length) {\n\n\t\t\t\tthis.dequeue()\n\t\t\t\t\t.then(function(){\n\t\t\t\t\t\tthis.run();\n\t\t\t\t\t}.bind(this));\n\n\t\t\t} else {\n\t\t\t\tthis.defered.resolve();\n\t\t\t\tthis.running = undefined;\n\t\t\t}\n\n\t\t});\n\n\t\t// Unpause\n\t\tif(this.paused == true) {\n\t\t\tthis.paused = false;\n\t\t}\n\n\t\treturn this.defered.promise;\n\t}\n\n\t/**\n\t * Flush all, as quickly as possible\n\t * @return {Promise}\n\t */\n\tflush(){\n\n\t\tif(this.running){\n\t\t\treturn this.running;\n\t\t}\n\n\t\tif(this._q.length) {\n\t\t\tthis.running = this.dequeue()\n\t\t\t\t.then(function(){\n\t\t\t\t\tthis.running = undefined;\n\t\t\t\t\treturn this.flush();\n\t\t\t\t}.bind(this));\n\n\t\t\treturn this.running;\n\t\t}\n\n\t}\n\n\t/**\n\t * Clear all items in wait\n\t */\n\tclear(){\n\t\tthis._q = [];\n\t}\n\n\t/**\n\t * Get the number of tasks in the queue\n\t * @return {number} tasks\n\t */\n\tlength(){\n\t\treturn this._q.length;\n\t}\n\n\t/**\n\t * Pause a running queue\n\t */\n\tpause(){\n\t\tthis.paused = true;\n\t}\n\n\t/**\n\t * End the queue\n\t */\n\tstop(){\n\t\tthis._q = [];\n\t\tthis.running = false;\n\t\tthis.paused = true;\n\t}\n}\n\n\n/**\n * Create a new task from a callback\n * @class\n * @private\n * @param {function} task\n * @param {array} args\n * @param {scope} context\n * @return {function} task\n */\nclass Task {\n\tconstructor(task, args, context){\n\n\t\treturn function(){\n\t\t\tvar toApply = arguments || [];\n\n\t\t\treturn new Promise( (resolve, reject) => {\n\t\t\t\tvar callback = function(value, err){\n\t\t\t\t\tif (!value && err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Add the callback to the arguments list\n\t\t\t\ttoApply.push(callback);\n\n\t\t\t\t// Apply all arguments to the functions\n\t\t\t\ttask.apply(context || this, toApply);\n\n\t\t\t});\n\n\t\t};\n\n\t}\n}\n\n\nexport default Queue;\nexport { Task };\n","// Detect RTL scroll type\n// Based on https://github.com/othree/jquery.rtl-scroll-type/blob/master/src/jquery.rtl-scroll.js\nexport default function scrollType() {\n\tvar type = \"reverse\";\n\tvar definer = createDefiner();\n\tdocument.body.appendChild(definer);\n\n\tif (definer.scrollLeft > 0) {\n\t\ttype = \"default\";\n\t} else {\n\t\tif (typeof Element !== 'undefined' && Element.prototype.scrollIntoView) {\n\t\t\tdefiner.children[0].children[1].scrollIntoView();\n\t\t\tif (definer.scrollLeft < 0) {\n\t\t\t\ttype = \"negative\";\n\t\t\t}\n\t\t} else {\n\t\t\tdefiner.scrollLeft = 1;\n\t\t\tif (definer.scrollLeft === 0) {\n\t\t\t\ttype = \"negative\";\n\t\t\t}\n\t\t}\n\t}\n\n\tdocument.body.removeChild(definer);\n\treturn type;\n}\n\nexport function createDefiner() {\n\tvar definer = document.createElement('div');\n\tdefiner.dir=\"rtl\";\n\n\tdefiner.style.position = \"fixed\";\n\tdefiner.style.width = \"1px\";\n\tdefiner.style.height = \"1px\";\n\tdefiner.style.top = \"0px\";\n\tdefiner.style.left = \"0px\";\n\tdefiner.style.overflow = \"hidden\";\n\n\tvar innerDiv = document.createElement('div');\n\tinnerDiv.style.width = \"2px\";\n\n\tvar spanA = document.createElement('span');\n\tspanA.style.width = \"1px\";\n\tspanA.style.display = \"inline-block\";\n\n\tvar spanB = document.createElement('span');\n\tspanB.style.width = \"1px\";\n\tspanB.style.display = \"inline-block\";\n\n\tinnerDiv.appendChild(spanA);\n\tinnerDiv.appendChild(spanB);\n\tdefiner.appendChild(innerDiv);\n\n\treturn definer;\n}\n","import {uuid, isNumber, isElement, windowBounds, extend} from \"../../utils/core\";\nimport throttle from 'lodash/throttle'\n\nclass Stage {\n\tconstructor(_options) {\n\t\tthis.settings = _options || {};\n\t\tthis.id = \"epubjs-container-\" + uuid();\n\n\t\tthis.container = this.create(this.settings);\n\n\t\tif(this.settings.hidden) {\n\t\t\tthis.wrapper = this.wrap(this.container);\n\t\t}\n\n\t}\n\n\t/*\n\t* Creates an element to render to.\n\t* Resizes to passed width and height or to the elements size\n\t*/\n\tcreate(options){\n\t\tlet height = options.height;// !== false ? options.height : \"100%\";\n\t\tlet width = options.width;// !== false ? options.width : \"100%\";\n\t\tlet overflow = options.overflow || false;\n\t\tlet axis = options.axis || \"vertical\";\n\t\tlet direction = options.direction;\n\n\t\textend(this.settings, options);\n\n\t\tif(options.height && isNumber(options.height)) {\n\t\t\theight = options.height + \"px\";\n\t\t}\n\n\t\tif(options.width && isNumber(options.width)) {\n\t\t\twidth = options.width + \"px\";\n\t\t}\n\n\t\t// Create new container element\n\t\tlet container = document.createElement(\"div\");\n\n\t\tcontainer.id = this.id;\n\t\tcontainer.classList.add(\"epub-container\");\n\n\t\t// Style Element\n\t\t// container.style.fontSize = \"0\";\n\t\tcontainer.style.wordSpacing = \"0\";\n\t\tcontainer.style.lineHeight = \"0\";\n\t\tcontainer.style.verticalAlign = \"top\";\n\t\tcontainer.style.position = \"relative\";\n\n\t\tif(axis === \"horizontal\") {\n\t\t\t// container.style.whiteSpace = \"nowrap\";\n\t\t\tcontainer.style.display = \"flex\";\n\t\t\tcontainer.style.flexDirection = \"row\";\n\t\t\tcontainer.style.flexWrap = \"nowrap\";\n\t\t}\n\n\t\tif(width){\n\t\t\tcontainer.style.width = width;\n\t\t}\n\n\t\tif(height){\n\t\t\tcontainer.style.height = height;\n\t\t}\n\n\t\tif (overflow) {\n\t\t\tif (overflow === \"scroll\" && axis === \"vertical\") {\n\t\t\t\tcontainer.style[\"overflow-y\"] = overflow;\n\t\t\t\tcontainer.style[\"overflow-x\"] = \"hidden\";\n\t\t\t} else if (overflow === \"scroll\" && axis === \"horizontal\") {\n\t\t\t\tcontainer.style[\"overflow-y\"] = \"hidden\";\n\t\t\t\tcontainer.style[\"overflow-x\"] = overflow;\n\t\t\t} else {\n\t\t\t\tcontainer.style[\"overflow\"] = overflow;\n\t\t\t}\n\t\t}\n\n\t\tif (direction) {\n\t\t\tcontainer.dir = direction;\n\t\t\tcontainer.style[\"direction\"] = direction;\n\t\t}\n\n\t\tif (direction && this.settings.fullsize) {\n\t\t\tdocument.body.style[\"direction\"] = direction;\n\t\t}\n\n\t\treturn container;\n\t}\n\n\twrap(container) {\n\t\tvar wrapper = document.createElement(\"div\");\n\n\t\twrapper.style.visibility = \"hidden\";\n\t\twrapper.style.overflow = \"hidden\";\n\t\twrapper.style.width = \"0\";\n\t\twrapper.style.height = \"0\";\n\n\t\twrapper.appendChild(container);\n\t\treturn wrapper;\n\t}\n\n\n\tgetElement(_element){\n\t\tvar element;\n\n\t\tif(isElement(_element)) {\n\t\t\telement = _element;\n\t\t} else if (typeof _element === \"string\") {\n\t\t\telement = document.getElementById(_element);\n\t\t}\n\n\t\tif(!element){\n\t\t\tthrow new Error(\"Not an Element\");\n\t\t}\n\n\t\treturn element;\n\t}\n\n\tattachTo(what){\n\n\t\tvar element = this.getElement(what);\n\t\tvar base;\n\n\t\tif(!element){\n\t\t\treturn;\n\t\t}\n\n\t\tif(this.settings.hidden) {\n\t\t\tbase = this.wrapper;\n\t\t} else {\n\t\t\tbase = this.container;\n\t\t}\n\n\t\telement.appendChild(base);\n\n\t\tthis.element = element;\n\n\t\treturn element;\n\n\t}\n\n\tgetContainer() {\n\t\treturn this.container;\n\t}\n\n\tonResize(func){\n\t\t// Only listen to window for resize event if width and height are not fixed.\n\t\t// This applies if it is set to a percent or auto.\n\t\tif(!isNumber(this.settings.width) ||\n\t\t\t !isNumber(this.settings.height) ) {\n\t\t\tthis.resizeFunc = throttle(func, 50);\n\t\t\twindow.addEventListener(\"resize\", this.resizeFunc, false);\n\t\t}\n\n\t}\n\n\tonOrientationChange(func){\n\t\tthis.orientationChangeFunc = func;\n\t\twindow.addEventListener(\"orientationchange\", this.orientationChangeFunc, false);\n\t}\n\n\tsize(width, height){\n\t\tvar bounds;\n\t\tlet _width = width || this.settings.width;\n\t\tlet _height = height || this.settings.height;\n\n\t\t// If width or height are set to false, inherit them from containing element\n\t\tif(width === null) {\n\t\t\tbounds = this.element.getBoundingClientRect();\n\n\t\t\tif(bounds.width) {\n\t\t\t\twidth = Math.floor(bounds.width);\n\t\t\t\tthis.container.style.width = width + \"px\";\n\t\t\t}\n\t\t} else {\n\t\t\tif (isNumber(width)) {\n\t\t\t\tthis.container.style.width = width + \"px\";\n\t\t\t} else {\n\t\t\t\tthis.container.style.width = width;\n\t\t\t}\n\t\t}\n\n\t\tif(height === null) {\n\t\t\tbounds = bounds || this.element.getBoundingClientRect();\n\n\t\t\tif(bounds.height) {\n\t\t\t\theight = bounds.height;\n\t\t\t\tthis.container.style.height = height + \"px\";\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (isNumber(height)) {\n\t\t\t\tthis.container.style.height = height + \"px\";\n\t\t\t} else {\n\t\t\t\tthis.container.style.height = height;\n\t\t\t}\n\t\t}\n\n\t\tif(!isNumber(width)) {\n\t\t\twidth = this.container.clientWidth;\n\t\t}\n\n\t\tif(!isNumber(height)) {\n\t\t\theight = this.container.clientHeight;\n\t\t}\n\n\t\tthis.containerStyles = window.getComputedStyle(this.container);\n\n\t\tthis.containerPadding = {\n\t\t\tleft: parseFloat(this.containerStyles[\"padding-left\"]) || 0,\n\t\t\tright: parseFloat(this.containerStyles[\"padding-right\"]) || 0,\n\t\t\ttop: parseFloat(this.containerStyles[\"padding-top\"]) || 0,\n\t\t\tbottom: parseFloat(this.containerStyles[\"padding-bottom\"]) || 0\n\t\t};\n\n\t\t// Bounds not set, get them from window\n\t\tlet _windowBounds = windowBounds();\n\t\tlet bodyStyles = window.getComputedStyle(document.body);\n\t\tlet bodyPadding = {\n\t\t\tleft: parseFloat(bodyStyles[\"padding-left\"]) || 0,\n\t\t\tright: parseFloat(bodyStyles[\"padding-right\"]) || 0,\n\t\t\ttop: parseFloat(bodyStyles[\"padding-top\"]) || 0,\n\t\t\tbottom: parseFloat(bodyStyles[\"padding-bottom\"]) || 0\n\t\t};\n\n\t\tif (!_width) {\n\t\t\twidth = _windowBounds.width -\n\t\t\t\t\t\t\t\tbodyPadding.left -\n\t\t\t\t\t\t\t\tbodyPadding.right;\n\t\t}\n\n\t\tif ((this.settings.fullsize && !_height) || !_height) {\n\t\t\theight = _windowBounds.height -\n\t\t\t\t\t\t\t\tbodyPadding.top -\n\t\t\t\t\t\t\t\tbodyPadding.bottom;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: width -\n\t\t\t\t\t\t\tthis.containerPadding.left -\n\t\t\t\t\t\t\tthis.containerPadding.right,\n\t\t\theight: height -\n\t\t\t\t\t\t\tthis.containerPadding.top -\n\t\t\t\t\t\t\tthis.containerPadding.bottom\n\t\t};\n\n\t}\n\n\tbounds(){\n\t\tlet box;\n\t\tif (this.container.style.overflow !== \"visible\") {\n\t\t\tbox = this.container && this.container.getBoundingClientRect();\n\t\t}\n\n\t\tif(!box || !box.width || !box.height) {\n\t\t\treturn windowBounds();\n\t\t} else {\n\t\t\treturn box;\n\t\t}\n\n\t}\n\n\tgetSheet(){\n\t\tvar style = document.createElement(\"style\");\n\n\t\t// WebKit hack --> https://davidwalsh.name/add-rules-stylesheets\n\t\tstyle.appendChild(document.createTextNode(\"\"));\n\n\t\tdocument.head.appendChild(style);\n\n\t\treturn style.sheet;\n\t}\n\n\taddStyleRules(selector, rulesArray){\n\t\tvar scope = \"#\" + this.id + \" \";\n\t\tvar rules = \"\";\n\n\t\tif(!this.sheet){\n\t\t\tthis.sheet = this.getSheet();\n\t\t}\n\n\t\trulesArray.forEach(function(set) {\n\t\t\tfor (var prop in set) {\n\t\t\t\tif(set.hasOwnProperty(prop)) {\n\t\t\t\t\trules += prop + \":\" + set[prop] + \";\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.sheet.insertRule(scope + selector + \" {\" + rules + \"}\", 0);\n\t}\n\n\taxis(axis) {\n\t\tif(axis === \"horizontal\") {\n\t\t\tthis.container.style.display = \"flex\";\n\t\t\tthis.container.style.flexDirection = \"row\";\n\t\t\tthis.container.style.flexWrap = \"nowrap\";\n\t\t} else {\n\t\t\tthis.container.style.display = \"block\";\n\t\t}\n\t\tthis.settings.axis = axis;\n\t}\n\n\t// orientation(orientation) {\n\t// \tif (orientation === \"landscape\") {\n\t//\n\t// \t} else {\n\t//\n\t// \t}\n\t//\n\t// \tthis.orientation = orientation;\n\t// }\n\n\tdirection(dir) {\n\t\tif (this.container) {\n\t\t\tthis.container.dir = dir;\n\t\t\tthis.container.style[\"direction\"] = dir;\n\t\t}\n\n\t\tif (this.settings.fullsize) {\n\t\t\tdocument.body.style[\"direction\"] = dir;\n\t\t}\n\t\tthis.settings.dir = dir;\n\t}\n\n\toverflow(overflow) {\n\t\tif (this.container) {\n\t\t\tif (overflow === \"scroll\" && this.settings.axis === \"vertical\") {\n\t\t\t\tthis.container.style[\"overflow-y\"] = overflow;\n\t\t\t\tthis.container.style[\"overflow-x\"] = \"hidden\";\n\t\t\t} else if (overflow === \"scroll\" && this.settings.axis === \"horizontal\") {\n\t\t\t\tthis.container.style[\"overflow-y\"] = \"hidden\";\n\t\t\t\tthis.container.style[\"overflow-x\"] = overflow;\n\t\t\t} else {\n\t\t\t\tthis.container.style[\"overflow\"] = overflow;\n\t\t\t}\n\t\t}\n\t\tthis.settings.overflow = overflow;\n\t}\n\n\tdestroy() {\n\t\tvar base;\n\n\t\tif (this.element) {\n\n\t\t\tif(this.settings.hidden) {\n\t\t\t\tbase = this.wrapper;\n\t\t\t} else {\n\t\t\t\tbase = this.container;\n\t\t\t}\n\n\t\t\tif(this.element.contains(this.container)) {\n\t\t\t\tthis.element.removeChild(this.container);\n\t\t\t}\n\n\t\t\twindow.removeEventListener(\"resize\", this.resizeFunc);\n\t\t\twindow.removeEventListener(\"orientationChange\", this.orientationChangeFunc);\n\n\t\t}\n\t}\n}\n\nexport default Stage;\n","class Views {\n\tconstructor(container) {\n\t\tthis.container = container;\n\t\tthis._views = [];\n\t\tthis.length = 0;\n\t\tthis.hidden = false;\n\t}\n\n\tall() {\n\t\treturn this._views;\n\t}\n\n\tfirst() {\n\t\treturn this._views[0];\n\t}\n\n\tlast() {\n\t\treturn this._views[this._views.length-1];\n\t}\n\n\tindexOf(view) {\n\t\treturn this._views.indexOf(view);\n\t}\n\n\tslice() {\n\t\treturn this._views.slice.apply(this._views, arguments);\n\t}\n\n\tget(i) {\n\t\treturn this._views[i];\n\t}\n\n\tappend(view){\n\t\tthis._views.push(view);\n\t\tif(this.container){\n\t\t\tthis.container.appendChild(view.element);\n\t\t}\n\t\tthis.length++;\n\t\treturn view;\n\t}\n\n\tprepend(view){\n\t\tthis._views.unshift(view);\n\t\tif(this.container){\n\t\t\tthis.container.insertBefore(view.element, this.container.firstChild);\n\t\t}\n\t\tthis.length++;\n\t\treturn view;\n\t}\n\n\tinsert(view, index) {\n\t\tthis._views.splice(index, 0, view);\n\n\t\tif(this.container){\n\t\t\tif(index < this.container.children.length){\n\t\t\t\tthis.container.insertBefore(view.element, this.container.children[index]);\n\t\t\t} else {\n\t\t\t\tthis.container.appendChild(view.element);\n\t\t\t}\n\t\t}\n\n\t\tthis.length++;\n\t\treturn view;\n\t}\n\n\tremove(view) {\n\t\tvar index = this._views.indexOf(view);\n\n\t\tif(index > -1) {\n\t\t\tthis._views.splice(index, 1);\n\t\t}\n\n\n\t\tthis.destroy(view);\n\n\t\tthis.length--;\n\t}\n\n\tdestroy(view) {\n\t\tif(view.displayed){\n\t\t\tview.destroy();\n\t\t}\n\t\t\n\t\tif(this.container){\n\t\t\t this.container.removeChild(view.element);\n\t\t}\n\t\tview = null;\n\t}\n\n\t// Iterators\n\n\tforEach() {\n\t\treturn this._views.forEach.apply(this._views, arguments);\n\t}\n\n\tclear(){\n\t\t// Remove all views\n\t\tvar view;\n\t\tvar len = this.length;\n\n\t\tif(!this.length) return;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tview = this._views[i];\n\t\t\tthis.destroy(view);\n\t\t}\n\n\t\tthis._views = [];\n\t\tthis.length = 0;\n\t}\n\n\tfind(section){\n\n\t\tvar view;\n\t\tvar len = this.length;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tview = this._views[i];\n\t\t\tif(view.displayed && view.section.index == section.index) {\n\t\t\t\treturn view;\n\t\t\t}\n\t\t}\n\n\t}\n\n\tdisplayed(){\n\t\tvar displayed = [];\n\t\tvar view;\n\t\tvar len = this.length;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tview = this._views[i];\n\t\t\tif(view.displayed){\n\t\t\t\tdisplayed.push(view);\n\t\t\t}\n\t\t}\n\t\treturn displayed;\n\t}\n\n\tshow(){\n\t\tvar view;\n\t\tvar len = this.length;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tview = this._views[i];\n\t\t\tif(view.displayed){\n\t\t\t\tview.show();\n\t\t\t}\n\t\t}\n\t\tthis.hidden = false;\n\t}\n\n\thide(){\n\t\tvar view;\n\t\tvar len = this.length;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tview = this._views[i];\n\t\t\tif(view.displayed){\n\t\t\t\tview.hide();\n\t\t\t}\n\t\t}\n\t\tthis.hidden = true;\n\t}\n}\n\nexport default Views;\n","import EventEmitter from \"event-emitter\";\nimport {extend, defer, windowBounds, isNumber} from \"../../utils/core\";\nimport scrollType from \"../../utils/scrolltype\";\nimport Mapping from \"../../mapping\";\nimport Queue from \"../../utils/queue\";\nimport Stage from \"../helpers/stage\";\nimport Views from \"../helpers/views\";\nimport { EVENTS } from \"../../utils/constants\";\n\nclass DefaultViewManager {\n\tconstructor(options) {\n\n\t\tthis.name = \"default\";\n\t\tthis.optsSettings = options.settings;\n\t\tthis.View = options.view;\n\t\tthis.request = options.request;\n\t\tthis.renditionQueue = options.queue;\n\t\tthis.q = new Queue(this);\n\n\t\tthis.settings = extend(this.settings || {}, {\n\t\t\tinfinite: true,\n\t\t\thidden: false,\n\t\t\twidth: undefined,\n\t\t\theight: undefined,\n\t\t\taxis: undefined,\n\t\t\twritingMode: undefined,\n\t\t\tflow: \"scrolled\",\n\t\t\tignoreClass: \"\",\n\t\t\tfullsize: undefined,\n\t\t\tallowScriptedContent: false,\n\t\t\tallowPopups: false\n\t\t});\n\n\t\textend(this.settings, options.settings || {});\n\n\t\tthis.viewSettings = {\n\t\t\tignoreClass: this.settings.ignoreClass,\n\t\t\taxis: this.settings.axis,\n\t\t\tflow: this.settings.flow,\n\t\t\tlayout: this.layout,\n\t\t\tmethod: this.settings.method, // srcdoc, blobUrl, write\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tforceEvenPages: true,\n\t\t\tallowScriptedContent: this.settings.allowScriptedContent,\n\t\t\tallowPopups: this.settings.allowPopups\n\t\t};\n\n\t\tthis.rendered = false;\n\n\t}\n\n\trender(element, size){\n\t\tlet tag = element.tagName;\n\n\t\tif (typeof this.settings.fullsize === \"undefined\" &&\n\t\t\t\ttag && (tag.toLowerCase() == \"body\" ||\n\t\t\t\ttag.toLowerCase() == \"html\")) {\n\t\t\t\tthis.settings.fullsize = true;\n\t\t}\n\n\t\tif (this.settings.fullsize) {\n\t\t\tthis.settings.overflow = \"visible\";\n\t\t\tthis.overflow = this.settings.overflow;\n\t\t}\n\n\t\tthis.settings.size = size;\n\n\t\tthis.settings.rtlScrollType = scrollType();\n\n\t\t// Save the stage\n\t\tthis.stage = new Stage({\n\t\t\twidth: size.width,\n\t\t\theight: size.height,\n\t\t\toverflow: this.overflow,\n\t\t\thidden: this.settings.hidden,\n\t\t\taxis: this.settings.axis,\n\t\t\tfullsize: this.settings.fullsize,\n\t\t\tdirection: this.settings.direction\n\t\t});\n\n\t\tthis.stage.attachTo(element);\n\n\t\t// Get this stage container div\n\t\tthis.container = this.stage.getContainer();\n\n\t\t// Views array methods\n\t\tthis.views = new Views(this.container);\n\n\t\t// Calculate Stage Size\n\t\tthis._bounds = this.bounds();\n\t\tthis._stageSize = this.stage.size();\n\n\t\t// Set the dimensions for views\n\t\tthis.viewSettings.width = this._stageSize.width;\n\t\tthis.viewSettings.height = this._stageSize.height;\n\n\t\t// Function to handle a resize event.\n\t\t// Will only attach if width and height are both fixed.\n\t\tthis.stage.onResize(this.onResized.bind(this));\n\n\t\tthis.stage.onOrientationChange(this.onOrientationChange.bind(this));\n\n\t\t// Add Event Listeners\n\t\tthis.addEventListeners();\n\n\t\t// Add Layout method\n\t\t// this.applyLayoutMethod();\n\t\tif (this.layout) {\n\t\t\tthis.updateLayout();\n\t\t}\n\n\t\tthis.rendered = true;\n\n\t}\n\n\taddEventListeners(){\n\t\tvar scroller;\n\n\t\twindow.addEventListener(\"unload\", function(e){\n\t\t\tthis.destroy();\n\t\t}.bind(this));\n\n\t\tif(!this.settings.fullsize) {\n\t\t\tscroller = this.container;\n\t\t} else {\n\t\t\tscroller = window;\n\t\t}\n\n\t\tthis._onScroll = this.onScroll.bind(this);\n\t\tscroller.addEventListener(\"scroll\", this._onScroll);\n\t}\n\n\tremoveEventListeners(){\n\t\tvar scroller;\n\n\t\tif(!this.settings.fullsize) {\n\t\t\tscroller = this.container;\n\t\t} else {\n\t\t\tscroller = window;\n\t\t}\n\n\t\tscroller.removeEventListener(\"scroll\", this._onScroll);\n\t\tthis._onScroll = undefined;\n\t}\n\n\tdestroy(){\n\t\tclearTimeout(this.orientationTimeout);\n\t\tclearTimeout(this.resizeTimeout);\n\t\tclearTimeout(this.afterScrolled);\n\n\t\tthis.clear();\n\n\t\tthis.removeEventListeners();\n\n\t\tthis.stage.destroy();\n\n\t\tthis.rendered = false;\n\n\t\t/*\n\n\t\t\tclearTimeout(this.trimTimeout);\n\t\t\tif(this.settings.hidden) {\n\t\t\t\tthis.element.removeChild(this.wrapper);\n\t\t\t} else {\n\t\t\t\tthis.element.removeChild(this.container);\n\t\t\t}\n\t\t*/\n\t}\n\n\tonOrientationChange(e) {\n\t\tlet {orientation} = window;\n\n\t\tif(this.optsSettings.resizeOnOrientationChange) {\n\t\t\tthis.resize();\n\t\t}\n\n\t\t// Per ampproject:\n\t\t// In IOS 10.3, the measured size of an element is incorrect if the\n\t\t// element size depends on window size directly and the measurement\n\t\t// happens in window.resize event. Adding a timeout for correct\n\t\t// measurement. See https://github.com/ampproject/amphtml/issues/8479\n\t\tclearTimeout(this.orientationTimeout);\n\t\tthis.orientationTimeout = setTimeout(function(){\n\t\t\tthis.orientationTimeout = undefined;\n\n\t\t\tif(this.optsSettings.resizeOnOrientationChange) {\n\t\t\t\tthis.resize();\n\t\t\t}\n\n\t\t\tthis.emit(EVENTS.MANAGERS.ORIENTATION_CHANGE, orientation);\n\t\t}.bind(this), 500);\n\n\t}\n\n\tonResized(e) {\n\t\tthis.resize();\n\t}\n\n\tresize(width, height, epubcfi){\n\t\tlet stageSize = this.stage.size(width, height);\n\n\t\t// For Safari, wait for orientation to catch up\n\t\t// if the window is a square\n\t\tthis.winBounds = windowBounds();\n\t\tif (this.orientationTimeout &&\n\t\t\t\tthis.winBounds.width === this.winBounds.height) {\n\t\t\t// reset the stage size for next resize\n\t\t\tthis._stageSize = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._stageSize &&\n\t\t\t\tthis._stageSize.width === stageSize.width &&\n\t\t\t\tthis._stageSize.height === stageSize.height ) {\n\t\t\t// Size is the same, no need to resize\n\t\t\treturn;\n\t\t}\n\n\t\tthis._stageSize = stageSize;\n\n\t\tthis._bounds = this.bounds();\n\n\t\t// Clear current views\n\t\tthis.clear();\n\n\t\t// Update for new views\n\t\tthis.viewSettings.width = this._stageSize.width;\n\t\tthis.viewSettings.height = this._stageSize.height;\n\n\t\tthis.updateLayout();\n\n\t\tthis.emit(EVENTS.MANAGERS.RESIZED, {\n\t\t\twidth: this._stageSize.width,\n\t\t\theight: this._stageSize.height\n\t\t}, epubcfi);\n\t}\n\n\tcreateView(section, forceRight) {\n\t\treturn new this.View(section, extend(this.viewSettings, { forceRight }) );\n\t}\n\n\thandleNextPrePaginated(forceRight, section, action) {\n\t\tlet next;\n\n\t\tif (this.layout.name === \"pre-paginated\" && this.layout.divisor > 1) {\n\t\t\tif (forceRight || section.index === 0) {\n\t\t\t\t// First page (cover) should stand alone for pre-paginated books\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnext = section.next();\n\t\t\tif (next && !next.properties.includes(\"page-spread-left\")) {\n\t\t\t\treturn action.call(this, next);\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplay(section, target){\n\n\t\tvar displaying = new defer();\n\t\tvar displayed = displaying.promise;\n\n\t\t// Check if moving to target is needed\n\t\tif (target === section.href || isNumber(target)) {\n\t\t\ttarget = undefined;\n\t\t}\n\n\t\t// Check to make sure the section we want isn't already shown\n\t\tvar visible = this.views.find(section);\n\n\t\t// View is already shown, just move to correct location in view\n\t\tif(visible && section && this.layout.name !== \"pre-paginated\") {\n\t\t\tlet offset = visible.offset();\n\n\t\t\tif (this.settings.direction === \"ltr\") {\n\t\t\t\tthis.scrollTo(offset.left, offset.top, true);\n\t\t\t} else {\n\t\t\t\tlet width = visible.width();\n\t\t\t\tthis.scrollTo(offset.left + width, offset.top, true);\n\t\t\t}\n\n\t\t\tif(target) {\n\t\t\t\tlet offset = visible.locationOf(target);\n\t\t\t\tlet width = visible.width();\n\t\t\t\tthis.moveTo(offset, width);\n\t\t\t}\n\n\t\t\tdisplaying.resolve();\n\t\t\treturn displayed;\n\t\t}\n\n\t\t// Hide all current views\n\t\tthis.clear();\n\n\t\tlet forceRight = false;\n\t\tif (this.layout.name === \"pre-paginated\" && this.layout.divisor === 2 && section.properties.includes(\"page-spread-right\")) {\n\t\t\tforceRight = true;\n\t\t}\n\n\t\tthis.add(section, forceRight)\n\t\t\t.then(function(view){\n\n\t\t\t\t// Move to correct place within the section, if needed\n\t\t\t\tif(target) {\n\t\t\t\t\tlet offset = view.locationOf(target);\n\t\t\t\t\tlet width = view.width();\n\t\t\t\t\tthis.moveTo(offset, width);\n\t\t\t\t}\n\n\t\t\t}.bind(this), (err) => {\n\t\t\t\tdisplaying.reject(err);\n\t\t\t})\n\t\t\t.then(function(){\n\t\t\t\treturn this.handleNextPrePaginated(forceRight, section, this.add);\n\t\t\t}.bind(this))\n\t\t\t.then(function(){\n\n\t\t\t\tthis.views.show();\n\n\t\t\t\tdisplaying.resolve();\n\n\t\t\t}.bind(this));\n\t\t// .then(function(){\n\t\t// \treturn this.hooks.display.trigger(view);\n\t\t// }.bind(this))\n\t\t// .then(function(){\n\t\t// \tthis.views.show();\n\t\t// }.bind(this));\n\t\treturn displayed;\n\t}\n\n\tafterDisplayed(view){\n\t\tthis.emit(EVENTS.MANAGERS.ADDED, view);\n\t}\n\n\tafterResized(view){\n\t\tthis.emit(EVENTS.MANAGERS.RESIZE, view.section);\n\t}\n\n\tmoveTo(offset, width){\n\t\tvar distX = 0,\n\t\t\t\tdistY = 0;\n\n\t\tif(!this.isPaginated) {\n\t\t\tdistY = offset.top;\n\t\t} else {\n\t\t\tdistX = Math.floor(offset.left / this.layout.delta) * this.layout.delta;\n\n\t\t\tif (distX + this.layout.delta > this.container.scrollWidth) {\n\t\t\t\tdistX = this.container.scrollWidth - this.layout.delta;\n\t\t\t}\n\n\t\t\tdistY = Math.floor(offset.top / this.layout.delta) * this.layout.delta;\n\n\t\t\tif (distY + this.layout.delta > this.container.scrollHeight) {\n\t\t\t\tdistY = this.container.scrollHeight - this.layout.delta;\n\t\t\t}\n\t\t}\n\t\tif(this.settings.direction === 'rtl'){\n\t\t\t/***\n\t\t\t\tthe `floor` function above (L343) is on positive values, so we should add one `layout.delta`\n\t\t\t\tto distX or use `Math.ceil` function, or multiply offset.left by -1\n\t\t\t\tbefore `Math.floor`\n\t\t\t*/\n\t\t\tdistX = distX + this.layout.delta\n\t\t\tdistX = distX - width\n\t\t}\n\t\tthis.scrollTo(distX, distY, true);\n\t}\n\n\tadd(section, forceRight){\n\t\tvar view = this.createView(section, forceRight);\n\n\t\tthis.views.append(view);\n\n\t\t// view.on(EVENTS.VIEWS.SHOWN, this.afterDisplayed.bind(this));\n\t\tview.onDisplayed = this.afterDisplayed.bind(this);\n\t\tview.onResize = this.afterResized.bind(this);\n\n\t\tview.on(EVENTS.VIEWS.AXIS, (axis) => {\n\t\t\tthis.updateAxis(axis);\n\t\t});\n\n\t\tview.on(EVENTS.VIEWS.WRITING_MODE, (mode) => {\n\t\t\tthis.updateWritingMode(mode);\n\t\t});\n\n\t\treturn view.display(this.request);\n\t}\n\n\tappend(section, forceRight){\n\t\tvar view = this.createView(section, forceRight);\n\t\tthis.views.append(view);\n\n\t\tview.onDisplayed = this.afterDisplayed.bind(this);\n\t\tview.onResize = this.afterResized.bind(this);\n\n\t\tview.on(EVENTS.VIEWS.AXIS, (axis) => {\n\t\t\tthis.updateAxis(axis);\n\t\t});\n\n\t\tview.on(EVENTS.VIEWS.WRITING_MODE, (mode) => {\n\t\t\tthis.updateWritingMode(mode);\n\t\t});\n\n\t\treturn view.display(this.request);\n\t}\n\n\tprepend(section, forceRight){\n\t\tvar view = this.createView(section, forceRight);\n\n\t\tview.on(EVENTS.VIEWS.RESIZED, (bounds) => {\n\t\t\tthis.counter(bounds);\n\t\t});\n\n\t\tthis.views.prepend(view);\n\n\t\tview.onDisplayed = this.afterDisplayed.bind(this);\n\t\tview.onResize = this.afterResized.bind(this);\n\n\t\tview.on(EVENTS.VIEWS.AXIS, (axis) => {\n\t\t\tthis.updateAxis(axis);\n\t\t});\n\n\t\tview.on(EVENTS.VIEWS.WRITING_MODE, (mode) => {\n\t\t\tthis.updateWritingMode(mode);\n\t\t});\n\n\t\treturn view.display(this.request);\n\t}\n\n\tcounter(bounds){\n\t\tif(this.settings.axis === \"vertical\") {\n\t\t\tthis.scrollBy(0, bounds.heightDelta, true);\n\t\t} else {\n\t\t\tthis.scrollBy(bounds.widthDelta, 0, true);\n\t\t}\n\n\t}\n\n\t// resizeView(view) {\n\t//\n\t// \tif(this.settings.globalLayoutProperties.layout === \"pre-paginated\") {\n\t// \t\tview.lock(\"both\", this.bounds.width, this.bounds.height);\n\t// \t} else {\n\t// \t\tview.lock(\"width\", this.bounds.width, this.bounds.height);\n\t// \t}\n\t//\n\t// };\n\n\tnext(){\n\t\tvar next;\n\t\tvar left;\n\n\t\tlet dir = this.settings.direction;\n\n\t\tif(!this.views.length) return;\n\n\t\tif(this.isPaginated && this.settings.axis === \"horizontal\" && (!dir || dir === \"ltr\")) {\n\n\t\t\tthis.scrollLeft = this.container.scrollLeft;\n\n\t\t\tleft = this.container.scrollLeft + this.container.offsetWidth + this.layout.delta;\n\n\t\t\tif(left <= this.container.scrollWidth) {\n\t\t\t\tthis.scrollBy(this.layout.delta, 0, true);\n\t\t\t} else {\n\t\t\t\tnext = this.views.last().section.next();\n\t\t\t}\n\t\t} else if (this.isPaginated && this.settings.axis === \"horizontal\" && dir === \"rtl\") {\n\n\t\t\tthis.scrollLeft = this.container.scrollLeft;\n\n\t\t\tif (this.settings.rtlScrollType === \"default\"){\n\t\t\t\tleft = this.container.scrollLeft;\n\n\t\t\t\tif (left > 0) {\n\t\t\t\t\tthis.scrollBy(this.layout.delta, 0, true);\n\t\t\t\t} else {\n\t\t\t\t\tnext = this.views.last().section.next();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tleft = this.container.scrollLeft + ( this.layout.delta * -1 );\n\n\t\t\t\tif (left > this.container.scrollWidth * -1){\n\t\t\t\t\tthis.scrollBy(this.layout.delta, 0, true);\n\t\t\t\t} else {\n\t\t\t\t\tnext = this.views.last().section.next();\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else if (this.isPaginated && this.settings.axis === \"vertical\") {\n\n\t\t\tthis.scrollTop = this.container.scrollTop;\n\n\t\t\tlet top = this.container.scrollTop + this.container.offsetHeight;\n\n\t\t\tif(top < this.container.scrollHeight) {\n\t\t\t\tthis.scrollBy(0, this.layout.height, true);\n\t\t\t} else {\n\t\t\t\tnext = this.views.last().section.next();\n\t\t\t}\n\n\t\t} else {\n\t\t\tnext = this.views.last().section.next();\n\t\t}\n\n\t\tif(next) {\n\t\t\tthis.clear();\n\t\t\t// The new section may have a different writing-mode from the old section. Thus, we need to update layout.\n\t\t\tthis.updateLayout();\n\n\t\t\tlet forceRight = false;\n\t\t\tif (this.layout.name === \"pre-paginated\" && this.layout.divisor === 2 && next.properties.includes(\"page-spread-right\")) {\n\t\t\t\tforceRight = true;\n\t\t\t}\n\n\t\t\treturn this.append(next, forceRight)\n\t\t\t\t.then(function(){\n\t\t\t\t\treturn this.handleNextPrePaginated(forceRight, next, this.append);\n\t\t\t\t}.bind(this), (err) => {\n\t\t\t\t\treturn err;\n\t\t\t\t})\n\t\t\t\t.then(function(){\n\n\t\t\t\t\t// Reset position to start for scrolled-doc vertical-rl in default mode\n\t\t\t\t\tif (!this.isPaginated &&\n\t\t\t\t\t\tthis.settings.axis === \"horizontal\" &&\n\t\t\t\t\t\tthis.settings.direction === \"rtl\" &&\n\t\t\t\t\t\tthis.settings.rtlScrollType === \"default\") {\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.scrollTo(this.container.scrollWidth, 0, true);\n\t\t\t\t\t}\n\t\t\t\t\tthis.views.show();\n\t\t\t\t}.bind(this));\n\t\t}\n\n\n\t}\n\n\tprev(){\n\t\tvar prev;\n\t\tvar left;\n\t\tlet dir = this.settings.direction;\n\n\t\tif(!this.views.length) return;\n\n\t\tif(this.isPaginated && this.settings.axis === \"horizontal\" && (!dir || dir === \"ltr\")) {\n\n\t\t\tthis.scrollLeft = this.container.scrollLeft;\n\n\t\t\tleft = this.container.scrollLeft;\n\n\t\t\tif(left > 0) {\n\t\t\t\tthis.scrollBy(-this.layout.delta, 0, true);\n\t\t\t} else {\n\t\t\t\tprev = this.views.first().section.prev();\n\t\t\t}\n\n\t\t} else if (this.isPaginated && this.settings.axis === \"horizontal\" && dir === \"rtl\") {\n\n\t\t\tthis.scrollLeft = this.container.scrollLeft;\n\n\t\t\tif (this.settings.rtlScrollType === \"default\"){\n\t\t\t\tleft = this.container.scrollLeft + this.container.offsetWidth;\n\n\t\t\t\tif (left < this.container.scrollWidth) {\n\t\t\t\t\tthis.scrollBy(-this.layout.delta, 0, true);\n\t\t\t\t} else {\n\t\t\t\t\tprev = this.views.first().section.prev();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\tleft = this.container.scrollLeft;\n\n\t\t\t\tif (left < 0) {\n\t\t\t\t\tthis.scrollBy(-this.layout.delta, 0, true);\n\t\t\t\t} else {\n\t\t\t\t\tprev = this.views.first().section.prev();\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else if (this.isPaginated && this.settings.axis === \"vertical\") {\n\n\t\t\tthis.scrollTop = this.container.scrollTop;\n\n\t\t\tlet top = this.container.scrollTop;\n\n\t\t\tif(top > 0) {\n\t\t\t\tthis.scrollBy(0, -(this.layout.height), true);\n\t\t\t} else {\n\t\t\t\tprev = this.views.first().section.prev();\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tprev = this.views.first().section.prev();\n\n\t\t}\n\n\t\tif(prev) {\n\t\t\tthis.clear();\n\t\t\t// The new section may have a different writing-mode from the old section. Thus, we need to update layout.\n\t\t\tthis.updateLayout();\n\n\t\t\tlet forceRight = false;\n\t\t\tif (this.layout.name === \"pre-paginated\" && this.layout.divisor === 2 && typeof prev.prev() !== \"object\") {\n\t\t\t\tforceRight = true;\n\t\t\t}\n\n\t\t\treturn this.prepend(prev, forceRight)\n\t\t\t\t.then(function(){\n\t\t\t\t\tvar left;\n\t\t\t\t\tif (this.layout.name === \"pre-paginated\" && this.layout.divisor > 1) {\n\t\t\t\t\t\tleft = prev.prev();\n\t\t\t\t\t\tif (left) {\n\t\t\t\t\t\t\treturn this.prepend(left);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}.bind(this), (err) => {\n\t\t\t\t\treturn err;\n\t\t\t\t})\n\t\t\t\t.then(function(){\n\t\t\t\t\tif(this.isPaginated && this.settings.axis === \"horizontal\") {\n\t\t\t\t\t\tif (this.settings.direction === \"rtl\") {\n\t\t\t\t\t\t\tif (this.settings.rtlScrollType === \"default\"){\n\t\t\t\t\t\t\t\tthis.scrollTo(0, 0, true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tthis.scrollTo((this.container.scrollWidth * -1) + this.layout.delta, 0, true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.scrollTo(this.container.scrollWidth - this.layout.delta, 0, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.views.show();\n\t\t\t\t}.bind(this));\n\t\t}\n\t}\n\n\tcurrent(){\n\t\tvar visible = this.visible();\n\t\tif(visible.length){\n\t\t\t// Current is the last visible view\n\t\t\treturn visible[visible.length-1];\n\t\t}\n\t\treturn null;\n\t}\n\n\tclear () {\n\n\t\t// this.q.clear();\n\n\t\tif (this.views) {\n\t\t\tthis.views.hide();\n\t\t\tthis.scrollTo(0,0, true);\n\t\t\tthis.views.clear();\n\t\t}\n\t}\n\n\tcurrentLocation(){\n\t\tthis.updateLayout();\n\t\tif (this.isPaginated && this.settings.axis === \"horizontal\") {\n\t\t\tthis.location = this.paginatedLocation();\n\t\t} else {\n\t\t\tthis.location = this.scrolledLocation();\n\t\t}\n\t\treturn this.location;\n\t}\n\n\tscrolledLocation() {\n\t\tlet visible = this.visible();\n\t\tlet container = this.container.getBoundingClientRect();\n\t\tlet pageHeight = (container.height < window.innerHeight) ? container.height : window.innerHeight;\n\t\tlet pageWidth = (container.width < window.innerWidth) ? container.width : window.innerWidth;\n\t\tlet vertical = (this.settings.axis === \"vertical\");\n\t\tlet rtl = (this.settings.direction === \"rtl\");\n\t\t\n\t\tlet offset = 0;\n\t\tlet used = 0;\n\n\t\tif(this.settings.fullsize) {\n\t\t\toffset = vertical ? window.scrollY : window.scrollX;\n\t\t}\n\n\t\tlet sections = visible.map((view) => {\n\t\t\tlet {index, href} = view.section;\n\t\t\tlet position = view.position();\n\t\t\tlet width = view.width();\n\t\t\tlet height = view.height();\n\n\t\t\tlet startPos;\n\t\t\tlet endPos;\n\t\t\tlet stopPos;\n\t\t\tlet totalPages;\n\n\t\t\tif (vertical) {\n\t\t\t\tstartPos = offset + container.top - position.top + used;\n\t\t\t\tendPos = startPos + pageHeight - used;\n\t\t\t\ttotalPages = this.layout.count(height, pageHeight).pages;\n\t\t\t\tstopPos = pageHeight;\n\t\t\t} else {\n\t\t\t\tstartPos = offset + container.left - position.left + used;\n\t\t\t\tendPos = startPos + pageWidth - used;\n\t\t\t\ttotalPages = this.layout.count(width, pageWidth).pages;\n\t\t\t\tstopPos = pageWidth;\n\t\t\t}\n\n\t\t\tlet currPage = Math.ceil(startPos / stopPos);\n\t\t\tlet pages = [];\n\t\t\tlet endPage = Math.ceil(endPos / stopPos);\n\n\t\t\t// Reverse page counts for horizontal rtl\n\t\t\tif (this.settings.direction === \"rtl\" && !vertical) {\n\t\t\t\tlet tempStartPage = currPage;\n\t\t\t\tcurrPage = totalPages - endPage;\n\t\t\t\tendPage = totalPages - tempStartPage;\n\t\t\t}\n\n\t\t\tpages = [];\n\t\t\tfor (var i = currPage; i <= endPage; i++) {\n\t\t\t\tlet pg = i + 1;\n\t\t\t\tpages.push(pg);\n\t\t\t}\n\n\t\t\tlet mapping = this.mapping.page(view.contents, view.section.cfiBase, startPos, endPos);\n\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\thref,\n\t\t\t\tpages,\n\t\t\t\ttotalPages,\n\t\t\t\tmapping\n\t\t\t};\n\t\t});\n\n\t\treturn sections;\n\t}\n\n\tpaginatedLocation(){\n\t\tlet visible = this.visible();\n\t\tlet container = this.container.getBoundingClientRect();\n\n\t\tlet left = 0;\n\t\tlet used = 0;\n\n\t\tif(this.settings.fullsize) {\n\t\t\tleft = window.scrollX;\n\t\t}\n\n\t\tlet sections = visible.map((view) => {\n\t\t\tlet {index, href} = view.section;\n\t\t\tlet offset;\n\t\t\tlet position = view.position();\n\t\t\tlet width = view.width();\n\n\t\t\t// Find mapping\n\t\t\tlet start;\n\t\t\tlet end;\n\t\t\tlet pageWidth;\n\n\t\t\tif (this.settings.direction === \"rtl\") {\n\t\t\t\toffset = container.right - left;\n\t\t\t\tpageWidth = Math.min(Math.abs(offset - position.left), this.layout.width) - used;\n\t\t\t\tend = position.width - (position.right - offset) - used;\n\t\t\t\tstart = end - pageWidth;\n\t\t\t} else {\n\t\t\t\toffset = container.left + left;\n\t\t\t\tpageWidth = Math.min(position.right - offset, this.layout.width) - used;\n\t\t\t\tstart = offset - position.left + used;\n\t\t\t\tend = start + pageWidth;\n\t\t\t}\n\n\t\t\tused += pageWidth;\n\n\t\t\tlet mapping = this.mapping.page(view.contents, view.section.cfiBase, start, end);\n\n\t\t\tlet totalPages = this.layout.count(width).pages;\n\t\t\tlet startPage = Math.floor(start / this.layout.pageWidth);\n\t\t\tlet pages = [];\n\t\t\tlet endPage = Math.floor(end / this.layout.pageWidth);\n\t\t\t\n\t\t\t// start page should not be negative\n\t\t\tif (startPage < 0) {\n\t\t\t\tstartPage = 0;\n\t\t\t\tendPage = endPage + 1;\n\t\t\t}\n\n\t\t\t// Reverse page counts for rtl\n\t\t\tif (this.settings.direction === \"rtl\") {\n\t\t\t\tlet tempStartPage = startPage;\n\t\t\t\tstartPage = totalPages - endPage;\n\t\t\t\tendPage = totalPages - tempStartPage;\n\t\t\t}\n\n\n\t\t\tfor (var i = startPage + 1; i <= endPage; i++) {\n\t\t\t\tlet pg = i;\n\t\t\t\tpages.push(pg);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\thref,\n\t\t\t\tpages,\n\t\t\t\ttotalPages,\n\t\t\t\tmapping\n\t\t\t};\n\t\t});\n\n\t\treturn sections;\n\t}\n\n\tisVisible(view, offsetPrev, offsetNext, _container){\n\t\tvar position = view.position();\n\t\tvar container = _container || this.bounds();\n\n\t\tif(this.settings.axis === \"horizontal\" &&\n\t\t\tposition.right > container.left - offsetPrev &&\n\t\t\tposition.left < container.right + offsetNext) {\n\n\t\t\treturn true;\n\n\t\t} else if(this.settings.axis === \"vertical\" &&\n\t\t\tposition.bottom > container.top - offsetPrev &&\n\t\t\tposition.top < container.bottom + offsetNext) {\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tvisible(){\n\t\tvar container = this.bounds();\n\t\tvar views = this.views.displayed();\n\t\tvar viewsLength = views.length;\n\t\tvar visible = [];\n\t\tvar isVisible;\n\t\tvar view;\n\n\t\tfor (var i = 0; i < viewsLength; i++) {\n\t\t\tview = views[i];\n\t\t\tisVisible = this.isVisible(view, 0, 0, container);\n\n\t\t\tif(isVisible === true) {\n\t\t\t\tvisible.push(view);\n\t\t\t}\n\n\t\t}\n\t\treturn visible;\n\t}\n\n\tscrollBy(x, y, silent){\n\t\tlet dir = this.settings.direction === \"rtl\" ? -1 : 1;\n\n\t\tif(silent) {\n\t\t\tthis.ignore = true;\n\t\t}\n\n\t\tif(!this.settings.fullsize) {\n\t\t\tif(x) this.container.scrollLeft += x * dir;\n\t\t\tif(y) this.container.scrollTop += y;\n\t\t} else {\n\t\t\twindow.scrollBy(x * dir, y * dir);\n\t\t}\n\t\tthis.scrolled = true;\n\t}\n\n\tscrollTo(x, y, silent){\n\t\tif(silent) {\n\t\t\tthis.ignore = true;\n\t\t}\n\n\t\tif(!this.settings.fullsize) {\n\t\t\tthis.container.scrollLeft = x;\n\t\t\tthis.container.scrollTop = y;\n\t\t} else {\n\t\t\twindow.scrollTo(x,y);\n\t\t}\n\t\tthis.scrolled = true;\n\t}\n\n\tonScroll(){\n\t\tlet scrollTop;\n\t\tlet scrollLeft;\n\n\t\tif(!this.settings.fullsize) {\n\t\t\tscrollTop = this.container.scrollTop;\n\t\t\tscrollLeft = this.container.scrollLeft;\n\t\t} else {\n\t\t\tscrollTop = window.scrollY;\n\t\t\tscrollLeft = window.scrollX;\n\t\t}\n\n\t\tthis.scrollTop = scrollTop;\n\t\tthis.scrollLeft = scrollLeft;\n\n\t\tif(!this.ignore) {\n\t\t\tthis.emit(EVENTS.MANAGERS.SCROLL, {\n\t\t\t\ttop: scrollTop,\n\t\t\t\tleft: scrollLeft\n\t\t\t});\n\n\t\t\tclearTimeout(this.afterScrolled);\n\t\t\tthis.afterScrolled = setTimeout(function () {\n\t\t\t\tthis.emit(EVENTS.MANAGERS.SCROLLED, {\n\t\t\t\t\ttop: this.scrollTop,\n\t\t\t\t\tleft: this.scrollLeft\n\t\t\t\t});\n\t\t\t}.bind(this), 20);\n\n\n\n\t\t} else {\n\t\t\tthis.ignore = false;\n\t\t}\n\n\t}\n\n\tbounds() {\n\t\tvar bounds;\n\n\t\tbounds = this.stage.bounds();\n\n\t\treturn bounds;\n\t}\n\n\tapplyLayout(layout) {\n\n\t\tthis.layout = layout;\n\t\tthis.updateLayout();\n\t\tif (this.views && this.views.length > 0 && this.layout.name === \"pre-paginated\") {\n\t\t\tthis.display(this.views.first().section);\n\t\t}\n\t\t // this.manager.layout(this.layout.format);\n\t}\n\n\tupdateLayout() {\n\n\t\tif (!this.stage) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._stageSize = this.stage.size();\n\n\t\tif(!this.isPaginated) {\n\t\t\tthis.layout.calculate(this._stageSize.width, this._stageSize.height);\n\t\t} else {\n\t\t\tthis.layout.calculate(\n\t\t\t\tthis._stageSize.width,\n\t\t\t\tthis._stageSize.height,\n\t\t\t\tthis.settings.gap\n\t\t\t);\n\n\t\t\t// Set the look ahead offset for what is visible\n\t\t\tthis.settings.offset = this.layout.delta / this.layout.divisor;\n\n\t\t\t// this.stage.addStyleRules(\"iframe\", [{\"margin-right\" : this.layout.gap + \"px\"}]);\n\n\t\t}\n\n\t\t// Set the dimensions for views\n\t\tthis.viewSettings.width = this.layout.width;\n\t\tthis.viewSettings.height = this.layout.height;\n\n\t\tthis.setLayout(this.layout);\n\t}\n\n\tsetLayout(layout){\n\n\t\tthis.viewSettings.layout = layout;\n\n\t\tthis.mapping = new Mapping(layout.props, this.settings.direction, this.settings.axis);\n\n\t\tif(this.views) {\n\n\t\t\tthis.views.forEach(function(view){\n\t\t\t\tif (view) {\n\t\t\t\t\tview.setLayout(layout);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t}\n\n\tupdateWritingMode(mode) {\n\t\tthis.writingMode = mode;\n\t}\n\n\tupdateAxis(axis, forceUpdate){\n\n\t\tif (!forceUpdate && axis === this.settings.axis) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.settings.axis = axis;\n\n\t\tthis.stage && this.stage.axis(axis);\n\n\t\tthis.viewSettings.axis = axis;\n\n\t\tif (this.mapping) {\n\t\t\tthis.mapping = new Mapping(this.layout.props, this.settings.direction, this.settings.axis);\n\t\t}\n\n\t\tif (this.layout) {\n\t\t\tif (axis === \"vertical\") {\n\t\t\t\tthis.layout.spread(\"none\");\n\t\t\t} else {\n\t\t\t\tthis.layout.spread(this.layout.settings.spread);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateFlow(flow, defaultScrolledOverflow=\"auto\"){\n\t\tlet isPaginated = (flow === \"paginated\" || flow === \"auto\");\n\n\t\tthis.isPaginated = isPaginated;\n\n\t\tif (flow === \"scrolled-doc\" ||\n\t\t\t\tflow === \"scrolled-continuous\" ||\n\t\t\t\tflow === \"scrolled\") {\n\t\t\tthis.updateAxis(\"vertical\");\n\t\t} else {\n\t\t\tthis.updateAxis(\"horizontal\");\n\t\t}\n\n\t\tthis.viewSettings.flow = flow;\n\n\t\tif (!this.settings.overflow) {\n\t\t\tthis.overflow = isPaginated ? \"hidden\" : defaultScrolledOverflow;\n\t\t} else {\n\t\t\tthis.overflow = this.settings.overflow;\n\t\t}\n\n\t\tthis.stage && this.stage.overflow(this.overflow);\n\n\t\tthis.updateLayout();\n\n\t}\n\n\tgetContents(){\n\t\tvar contents = [];\n\t\tif (!this.views) {\n\t\t\treturn contents;\n\t\t}\n\t\tthis.views.forEach(function(view){\n\t\t\tconst viewContents = view && view.contents;\n\t\t\tif (viewContents) {\n\t\t\t\tcontents.push(viewContents);\n\t\t\t}\n\t\t});\n\t\treturn contents;\n\t}\n\n\tdirection(dir=\"ltr\") {\n\t\tthis.settings.direction = dir;\n\n\t\tthis.stage && this.stage.direction(dir);\n\n\t\tthis.viewSettings.direction = dir;\n\n\t\tthis.updateLayout();\n\t}\n\n\tisRendered() {\n\t\treturn this.rendered;\n\t}\n}\n\n//-- Enable binding events to Manager\nEventEmitter(DefaultViewManager.prototype);\n\nexport default DefaultViewManager;\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","module.exports = {};\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","module.exports = {};\n","var aCallable = require('../internals/a-callable');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aCallable(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue === 'string' &&\n replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 &&\n replaceValue.indexOf('$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = toString(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n var valueOf = $Symbol[PROTOTYPE].valueOf;\n redefine($Symbol[PROTOTYPE], TO_PRIMITIVE, function () {\n return valueOf.apply(this, arguments);\n });\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var nativeSymbol = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = nativeSymbol ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Underline = exports.Highlight = exports.Mark = exports.Pane = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _svg = require('./svg');\n\nvar _svg2 = _interopRequireDefault(_svg);\n\nvar _events = require('./events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Pane = exports.Pane = function () {\n function Pane(target) {\n var container = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;\n\n _classCallCheck(this, Pane);\n\n this.target = target;\n this.element = _svg2.default.createElement('svg');\n this.marks = [];\n\n // Match the coordinates of the target element\n this.element.style.position = 'absolute';\n // Disable pointer events\n this.element.setAttribute('pointer-events', 'none');\n\n // Set up mouse event proxying between the target element and the marks\n _events2.default.proxyMouse(this.target, this.marks);\n\n this.container = container;\n this.container.appendChild(this.element);\n\n this.render();\n }\n\n _createClass(Pane, [{\n key: 'addMark',\n value: function addMark(mark) {\n var g = _svg2.default.createElement('g');\n this.element.appendChild(g);\n mark.bind(g, this.container);\n\n this.marks.push(mark);\n\n mark.render();\n return mark;\n }\n }, {\n key: 'removeMark',\n value: function removeMark(mark) {\n var idx = this.marks.indexOf(mark);\n if (idx === -1) {\n return;\n }\n var el = mark.unbind();\n this.element.removeChild(el);\n this.marks.splice(idx, 1);\n }\n }, {\n key: 'render',\n value: function render() {\n setCoords(this.element, coords(this.target, this.container));\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.marks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var m = _step.value;\n\n m.render();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }]);\n\n return Pane;\n}();\n\nvar Mark = exports.Mark = function () {\n function Mark() {\n _classCallCheck(this, Mark);\n\n this.element = null;\n }\n\n _createClass(Mark, [{\n key: 'bind',\n value: function bind(element, container) {\n this.element = element;\n this.container = container;\n }\n }, {\n key: 'unbind',\n value: function unbind() {\n var el = this.element;\n this.element = null;\n return el;\n }\n }, {\n key: 'render',\n value: function render() {}\n }, {\n key: 'dispatchEvent',\n value: function dispatchEvent(e) {\n if (!this.element) return;\n this.element.dispatchEvent(e);\n }\n }, {\n key: 'getBoundingClientRect',\n value: function getBoundingClientRect() {\n return this.element.getBoundingClientRect();\n }\n }, {\n key: 'getClientRects',\n value: function getClientRects() {\n var rects = [];\n var el = this.element.firstChild;\n while (el) {\n rects.push(el.getBoundingClientRect());\n el = el.nextSibling;\n }\n return rects;\n }\n }, {\n key: 'filteredRanges',\n value: function filteredRanges() {\n var rects = Array.from(this.range.getClientRects());\n\n // De-duplicate the boxes\n return rects.filter(function (box) {\n for (var i = 0; i < rects.length; i++) {\n if (rects[i] === box) {\n return true;\n }\n var contained = contains(rects[i], box);\n if (contained) {\n return false;\n }\n }\n return true;\n });\n }\n }]);\n\n return Mark;\n}();\n\nvar Highlight = exports.Highlight = function (_Mark) {\n _inherits(Highlight, _Mark);\n\n function Highlight(range, className, data, attributes) {\n _classCallCheck(this, Highlight);\n\n var _this = _possibleConstructorReturn(this, (Highlight.__proto__ || Object.getPrototypeOf(Highlight)).call(this));\n\n _this.range = range;\n _this.className = className;\n _this.data = data || {};\n _this.attributes = attributes || {};\n return _this;\n }\n\n _createClass(Highlight, [{\n key: 'bind',\n value: function bind(element, container) {\n _get(Highlight.prototype.__proto__ || Object.getPrototypeOf(Highlight.prototype), 'bind', this).call(this, element, container);\n\n for (var attr in this.data) {\n if (this.data.hasOwnProperty(attr)) {\n this.element.dataset[attr] = this.data[attr];\n }\n }\n\n for (var attr in this.attributes) {\n if (this.attributes.hasOwnProperty(attr)) {\n this.element.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n if (this.className) {\n this.element.classList.add(this.className);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n // Empty element\n while (this.element.firstChild) {\n this.element.removeChild(this.element.firstChild);\n }\n\n var docFrag = this.element.ownerDocument.createDocumentFragment();\n var filtered = this.filteredRanges();\n var offset = this.element.getBoundingClientRect();\n var container = this.container.getBoundingClientRect();\n\n for (var i = 0, len = filtered.length; i < len; i++) {\n var r = filtered[i];\n var el = _svg2.default.createElement('rect');\n el.setAttribute('x', r.left - offset.left + container.left);\n el.setAttribute('y', r.top - offset.top + container.top);\n el.setAttribute('height', r.height);\n el.setAttribute('width', r.width);\n docFrag.appendChild(el);\n }\n\n this.element.appendChild(docFrag);\n }\n }]);\n\n return Highlight;\n}(Mark);\n\nvar Underline = exports.Underline = function (_Highlight) {\n _inherits(Underline, _Highlight);\n\n function Underline(range, className, data, attributes) {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).call(this, range, className, data, attributes));\n }\n\n _createClass(Underline, [{\n key: 'render',\n value: function render() {\n // Empty element\n while (this.element.firstChild) {\n this.element.removeChild(this.element.firstChild);\n }\n\n var docFrag = this.element.ownerDocument.createDocumentFragment();\n var filtered = this.filteredRanges();\n var offset = this.element.getBoundingClientRect();\n var container = this.container.getBoundingClientRect();\n\n for (var i = 0, len = filtered.length; i < len; i++) {\n var r = filtered[i];\n\n var rect = _svg2.default.createElement('rect');\n rect.setAttribute('x', r.left - offset.left + container.left);\n rect.setAttribute('y', r.top - offset.top + container.top);\n rect.setAttribute('height', r.height);\n rect.setAttribute('width', r.width);\n rect.setAttribute('fill', 'none');\n\n var line = _svg2.default.createElement('line');\n line.setAttribute('x1', r.left - offset.left + container.left);\n line.setAttribute('x2', r.left - offset.left + container.left + r.width);\n line.setAttribute('y1', r.top - offset.top + container.top + r.height - 1);\n line.setAttribute('y2', r.top - offset.top + container.top + r.height - 1);\n\n line.setAttribute('stroke-width', 1);\n line.setAttribute('stroke', 'black'); //TODO: match text color?\n line.setAttribute('stroke-linecap', 'square');\n\n docFrag.appendChild(rect);\n\n docFrag.appendChild(line);\n }\n\n this.element.appendChild(docFrag);\n }\n }]);\n\n return Underline;\n}(Highlight);\n\nfunction coords(el, container) {\n var offset = container.getBoundingClientRect();\n var rect = el.getBoundingClientRect();\n\n return {\n top: rect.top - offset.top,\n left: rect.left - offset.left,\n height: el.scrollHeight,\n width: el.scrollWidth\n };\n}\n\nfunction setCoords(el, coords) {\n el.style.setProperty('top', coords.top + 'px', 'important');\n el.style.setProperty('left', coords.left + 'px', 'important');\n el.style.setProperty('height', coords.height + 'px', 'important');\n el.style.setProperty('width', coords.width + 'px', 'important');\n}\n\nfunction contains(rect1, rect2) {\n return rect2.right <= rect1.right && rect2.left >= rect1.left && rect2.top >= rect1.top && rect2.bottom <= rect1.bottom;\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : String(key);\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.18.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","module.exports = function (it, Constructor, name) {\n if (it instanceof Constructor) return it;\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = constructorRegExp.exec;\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(function () { /* empty */ });\n\nvar isConstructorModern = function (argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(Object, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function (argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n // we can't check .prototype since constructors produced by .bind haven't it\n } return INCORRECT_TO_STRING || !!exec.call(constructorRegExp, inspectSource(argument));\n};\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = patchedExec.call(raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = str.slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str.charAt(re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = exec.call(R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return regexpExec.call(R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict'\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n","import { extend } from \"./utils/core\";\nimport { EVENTS } from \"./utils/constants\";\nimport EventEmitter from \"event-emitter\";\n\n/**\n * Figures out the CSS values to apply for a layout\n * @class\n * @param {object} settings\n * @param {string} [settings.layout='reflowable']\n * @param {string} [settings.spread]\n * @param {number} [settings.minSpreadWidth=800]\n * @param {boolean} [settings.evenSpreads=false]\n */\nclass Layout {\n\tconstructor(settings) {\n\t\tthis.settings = settings;\n\t\tthis.name = settings.layout || \"reflowable\";\n\t\tthis._spread = (settings.spread === \"none\") ? false : true;\n\t\tthis._minSpreadWidth = settings.minSpreadWidth || 800;\n\t\tthis._evenSpreads = settings.evenSpreads || false;\n\n\t\tif (settings.flow === \"scrolled\" ||\n\t\t\t\tsettings.flow === \"scrolled-continuous\" ||\n\t\t\t\tsettings.flow === \"scrolled-doc\") {\n\t\t\tthis._flow = \"scrolled\";\n\t\t} else {\n\t\t\tthis._flow = \"paginated\";\n\t\t}\n\n\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.spreadWidth = 0;\n\t\tthis.delta = 0;\n\n\t\tthis.columnWidth = 0;\n\t\tthis.gap = 0;\n\t\tthis.divisor = 1;\n\n\t\tthis.props = {\n\t\t\tname: this.name,\n\t\t\tspread: this._spread,\n\t\t\tflow: this._flow,\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tspreadWidth: 0,\n\t\t\tdelta: 0,\n\t\t\tcolumnWidth: 0,\n\t\t\tgap: 0,\n\t\t\tdivisor: 1\n\t\t};\n\n\t}\n\n\t/**\n\t * Switch the flow between paginated and scrolled\n\t * @param {string} flow paginated | scrolled\n\t * @return {string} simplified flow\n\t */\n\tflow(flow) {\n\t\tif (typeof(flow) != \"undefined\") {\n\t\t\tif (flow === \"scrolled\" ||\n\t\t\t\t\tflow === \"scrolled-continuous\" ||\n\t\t\t\t\tflow === \"scrolled-doc\") {\n\t\t\t\tthis._flow = \"scrolled\";\n\t\t\t} else {\n\t\t\t\tthis._flow = \"paginated\";\n\t\t\t}\n\t\t\t// this.props.flow = this._flow;\n\t\t\tthis.update({flow: this._flow});\n\t\t}\n\t\treturn this._flow;\n\t}\n\n\t/**\n\t * Switch between using spreads or not, and set the\n\t * width at which they switch to single.\n\t * @param {string} spread \"none\" | \"always\" | \"auto\"\n\t * @param {number} min integer in pixels\n\t * @return {boolean} spread true | false\n\t */\n\tspread(spread, min) {\n\n\t\tif (spread) {\n\t\t\tthis._spread = (spread === \"none\") ? false : true;\n\t\t\t// this.props.spread = this._spread;\n\t\t\tthis.update({spread: this._spread});\n\t\t}\n\n\t\tif (min >= 0) {\n\t\t\tthis._minSpreadWidth = min;\n\t\t}\n\n\t\treturn this._spread;\n\t}\n\n\t/**\n\t * Calculate the dimensions of the pagination\n\t * @param {number} _width width of the rendering\n\t * @param {number} _height height of the rendering\n\t * @param {number} _gap width of the gap between columns\n\t */\n\tcalculate(_width, _height, _gap){\n\n\t\tvar divisor = 1;\n\t\tvar gap = _gap || 0;\n\n\t\t//-- Check the width and create even width columns\n\t\t// var fullWidth = Math.floor(_width);\n\t\tvar width = _width;\n\t\tvar height = _height;\n\n\t\tvar section = Math.floor(width / 12);\n\n\t\tvar columnWidth;\n\t\tvar spreadWidth;\n\t\tvar pageWidth;\n\t\tvar delta;\n\n\t\tif (this._spread && width >= this._minSpreadWidth) {\n\t\t\tdivisor = 2;\n\t\t} else {\n\t\t\tdivisor = 1;\n\t\t}\n\n\t\tif (this.name === \"reflowable\" && this._flow === \"paginated\" && !(_gap >= 0)) {\n\t\t\tgap = ((section % 2 === 0) ? section : section - 1);\n\t\t}\n\n\t\tif (this.name === \"pre-paginated\" ) {\n\t\t\tgap = 0;\n\t\t}\n\n\t\t//-- Double Page\n\t\tif(divisor > 1) {\n\t\t\t// width = width - gap;\n\t\t\t// columnWidth = (width - gap) / divisor;\n\t\t\t// gap = gap / divisor;\n\t\t\tcolumnWidth = (width / divisor) - gap;\n\t\t\tpageWidth = columnWidth + gap;\n\t\t} else {\n\t\t\tcolumnWidth = width;\n\t\t\tpageWidth = width;\n\t\t}\n\n\t\tif (this.name === \"pre-paginated\" && divisor > 1) {\n\t\t\twidth = columnWidth;\n\t\t}\n\n\t\tspreadWidth = (columnWidth * divisor) + gap;\n\n\t\tdelta = width;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.spreadWidth = spreadWidth;\n\t\tthis.pageWidth = pageWidth;\n\t\tthis.delta = delta;\n\n\t\tthis.columnWidth = columnWidth;\n\t\tthis.gap = gap;\n\t\tthis.divisor = divisor;\n\n\t\t// this.props.width = width;\n\t\t// this.props.height = _height;\n\t\t// this.props.spreadWidth = spreadWidth;\n\t\t// this.props.pageWidth = pageWidth;\n\t\t// this.props.delta = delta;\n\t\t//\n\t\t// this.props.columnWidth = colWidth;\n\t\t// this.props.gap = gap;\n\t\t// this.props.divisor = divisor;\n\n\t\tthis.update({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tspreadWidth,\n\t\t\tpageWidth,\n\t\t\tdelta,\n\t\t\tcolumnWidth,\n\t\t\tgap,\n\t\t\tdivisor\n\t\t});\n\n\t}\n\n\t/**\n\t * Apply Css to a Document\n\t * @param {Contents} contents\n\t * @return {Promise}\n\t */\n\tformat(contents, section, axis){\n\t\tvar formating;\n\n\t\tif (this.name === \"pre-paginated\") {\n\t\t\tformating = contents.fit(this.columnWidth, this.height, section);\n\t\t} else if (this._flow === \"paginated\") {\n\t\t\tformating = contents.columns(this.width, this.height, this.columnWidth, this.gap, this.settings.direction);\n\t\t} else if (axis && axis === \"horizontal\") {\n\t\t\tformating = contents.size(null, this.height);\n\t\t} else {\n\t\t\tformating = contents.size(this.width, null);\t\t\t\t\n\t\t}\n\n\t\treturn formating; // might be a promise in some View Managers\n\t}\n\n\t/**\n\t * Count number of pages\n\t * @param {number} totalLength\n\t * @param {number} pageLength\n\t * @return {{spreads: Number, pages: Number}}\n\t */\n\tcount(totalLength, pageLength) {\n\n\t\tlet spreads, pages;\n\n\t\tif (this.name === \"pre-paginated\") {\n\t\t\tspreads = 1;\n\t\t\tpages = 1;\n\t\t} else if (this._flow === \"paginated\") {\n\t\t\tpageLength = pageLength || this.delta;\n\t\t\tspreads = Math.ceil( totalLength / pageLength);\n\t\t\tpages = spreads * this.divisor;\n\t\t} else { // scrolled\n\t\t\tpageLength = pageLength || this.height;\n\t\t\tspreads = Math.ceil( totalLength / pageLength);\n\t\t\tpages = spreads;\n\t\t}\n\n\t\treturn {\n\t\t\tspreads,\n\t\t\tpages\n\t\t};\n\n\t}\n\n\t/**\n\t * Update props that have changed\n\t * @private\n\t * @param {object} props\n\t */\n\tupdate(props) {\n\t\t// Remove props that haven't changed\n\t\tObject.keys(props).forEach((propName) => {\n\t\t\tif (this.props[propName] === props[propName]) {\n\t\t\t\tdelete props[propName];\n\t\t\t}\n\t\t});\n\n\t\tif(Object.keys(props).length > 0) {\n\t\t\tlet newProps = extend(this.props, props);\n\t\t\tthis.emit(EVENTS.LAYOUT.UPDATED, newProps, props);\n\t\t}\n\t}\n}\n\nEventEmitter(Layout.prototype);\n\nexport default Layout;\n","import Url from \"./utils/url\";\n\n/**\n * Themes to apply to displayed content\n * @class\n * @param {Rendition} rendition\n */\nclass Themes {\n\tconstructor(rendition) {\n\t\tthis.rendition = rendition;\n\t\tthis._themes = {\n\t\t\t\"default\" : {\n\t\t\t\t\"rules\" : {},\n\t\t\t\t\"url\" : \"\",\n\t\t\t\t\"serialized\" : \"\"\n\t\t\t}\n\t\t};\n\t\tthis._overrides = {};\n\t\tthis._current = \"default\";\n\t\tthis._injected = [];\n\t\tthis.rendition.hooks.content.register(this.inject.bind(this));\n\t\tthis.rendition.hooks.content.register(this.overrides.bind(this));\n\n\t}\n\n\t/**\n\t * Add themes to be used by a rendition\n\t * @param {object | Array | string}\n\t * @example themes.register(\"light\", \"http://example.com/light.css\")\n\t * @example themes.register(\"light\", { \"body\": { \"color\": \"purple\"}})\n\t * @example themes.register({ \"light\" : {...}, \"dark\" : {...}})\n\t */\n\tregister () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (arguments.length === 1 && typeof(arguments[0]) === \"object\") {\n\t\t\treturn this.registerThemes(arguments[0]);\n\t\t}\n\t\tif (arguments.length === 1 && typeof(arguments[0]) === \"string\") {\n\t\t\treturn this.default(arguments[0]);\n\t\t}\n\t\tif (arguments.length === 2 && typeof(arguments[1]) === \"string\") {\n\t\t\treturn this.registerUrl(arguments[0], arguments[1]);\n\t\t}\n\t\tif (arguments.length === 2 && typeof(arguments[1]) === \"object\") {\n\t\t\treturn this.registerRules(arguments[0], arguments[1]);\n\t\t}\n\t}\n\n\t/**\n\t * Add a default theme to be used by a rendition\n\t * @param {object | string} theme\n\t * @example themes.register(\"http://example.com/default.css\")\n\t * @example themes.register({ \"body\": { \"color\": \"purple\"}})\n\t */\n\tdefault (theme) {\n\t\tif (!theme) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof(theme) === \"string\") {\n\t\t\treturn this.registerUrl(\"default\", theme);\n\t\t}\n\t\tif (typeof(theme) === \"object\") {\n\t\t\treturn this.registerRules(\"default\", theme);\n\t\t}\n\t}\n\n\t/**\n\t * Register themes object\n\t * @param {object} themes\n\t */\n\tregisterThemes (themes) {\n\t\tfor (var theme in themes) {\n\t\t\tif (themes.hasOwnProperty(theme)) {\n\t\t\t\tif (typeof(themes[theme]) === \"string\") {\n\t\t\t\t\tthis.registerUrl(theme, themes[theme]);\n\t\t\t\t} else {\n\t\t\t\t\tthis.registerRules(theme, themes[theme]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Register a theme by passing its css as string\n\t * @param {string} name \n\t * @param {string} css \n\t */\n\tregisterCss (name, css) {\n\t\tthis._themes[name] = { \"serialized\" : css };\n\t\tif (this._injected[name] || name == 'default') {\n\t\t\tthis.update(name);\n\t\t}\n\t}\n\n\t/**\n\t * Register a url\n\t * @param {string} name\n\t * @param {string} input\n\t */\n\tregisterUrl (name, input) {\n\t\tvar url = new Url(input);\n\t\tthis._themes[name] = { \"url\": url.toString() };\n\t\tif (this._injected[name] || name == 'default') {\n\t\t\tthis.update(name);\n\t\t}\n\t}\n\n\t/**\n\t * Register rule\n\t * @param {string} name\n\t * @param {object} rules\n\t */\n\tregisterRules (name, rules) {\n\t\tthis._themes[name] = { \"rules\": rules };\n\t\t// TODO: serialize css rules\n\t\tif (this._injected[name] || name == 'default') {\n\t\t\tthis.update(name);\n\t\t}\n\t}\n\n\t/**\n\t * Select a theme\n\t * @param {string} name\n\t */\n\tselect (name) {\n\t\tvar prev = this._current;\n\t\tvar contents;\n\n\t\tthis._current = name;\n\t\tthis.update(name);\n\n\t\tcontents = this.rendition.getContents();\n\t\tcontents.forEach( (content) => {\n\t\t\tcontent.removeClass(prev);\n\t\t\tcontent.addClass(name);\n\t\t});\n\t}\n\n\t/**\n\t * Update a theme\n\t * @param {string} name\n\t */\n\tupdate (name) {\n\t\tvar contents = this.rendition.getContents();\n\t\tcontents.forEach( (content) => {\n\t\t\tthis.add(name, content);\n\t\t});\n\t}\n\n\t/**\n\t * Inject all themes into contents\n\t * @param {Contents} contents\n\t */\n\tinject (contents) {\n\t\tvar links = [];\n\t\tvar themes = this._themes;\n\t\tvar theme;\n\n\t\tfor (var name in themes) {\n\t\t\tif (themes.hasOwnProperty(name) && (name === this._current || name === \"default\")) {\n\t\t\t\ttheme = themes[name];\n\t\t\t\tif((theme.rules && Object.keys(theme.rules).length > 0) || (theme.url && links.indexOf(theme.url) === -1)) {\n\t\t\t\t\tthis.add(name, contents);\n\t\t\t\t}\n\t\t\t\tthis._injected.push(name);\n\t\t\t}\n\t\t}\n\n\t\tif(this._current != \"default\") {\n\t\t\tcontents.addClass(this._current);\n\t\t}\n\t}\n\n\t/**\n\t * Add Theme to contents\n\t * @param {string} name\n\t * @param {Contents} contents\n\t */\n\tadd (name, contents) {\n\t\tvar theme = this._themes[name];\n\n\t\tif (!theme || !contents) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (theme.url) {\n\t\t\tcontents.addStylesheet(theme.url);\n\t\t} else if (theme.serialized) {\n\t\t\tcontents.addStylesheetCss(theme.serialized, name);\n\t\t\ttheme.injected = true;\n\t\t} else if (theme.rules) {\n\t\t\tcontents.addStylesheetRules(theme.rules, name);\n\t\t\ttheme.injected = true;\n\t\t}\n\t}\n\n\t/**\n\t * Add override\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {boolean} priority\n\t */\n\toverride (name, value, priority) {\n\t\tvar contents = this.rendition.getContents();\n\n\t\tthis._overrides[name] = {\n\t\t\tvalue: value,\n\t\t\tpriority: priority === true\n\t\t};\n\n\t\tcontents.forEach( (content) => {\n\t\t\tcontent.css(name, this._overrides[name].value, this._overrides[name].priority);\n\t\t});\n\t}\n\n\tremoveOverride (name) {\n\t\tvar contents = this.rendition.getContents();\n\n\t\tdelete this._overrides[name];\n\n\t\tcontents.forEach( (content) => {\n\t\t\tcontent.css(name);\n\t\t});\n\t}\n\n\t/**\n\t * Add all overrides\n\t * @param {Content} content\n\t */\n\toverrides (contents) {\n\t\tvar overrides = this._overrides;\n\n\t\tfor (var rule in overrides) {\n\t\t\tif (overrides.hasOwnProperty(rule)) {\n\t\t\t\tcontents.css(rule, overrides[rule].value, overrides[rule].priority);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Adjust the font size of a rendition\n\t * @param {number} size\n\t */\n\tfontSize (size) {\n\t\tthis.override(\"font-size\", size);\n\t}\n\n\t/**\n\t * Adjust the font-family of a rendition\n\t * @param {string} f\n\t */\n\tfont (f) {\n\t\tthis.override(\"font-family\", f, true);\n\t}\n\n\tdestroy() {\n\t\tthis.rendition = undefined;\n\t\tthis._themes = undefined;\n\t\tthis._overrides = undefined;\n\t\tthis._current = undefined;\n\t\tthis._injected = undefined;\n\t}\n\n}\n\nexport default Themes;\n","import EventEmitter from \"event-emitter\";\nimport EpubCFI from \"./epubcfi\";\nimport { EVENTS } from \"./utils/constants\";\n\n/**\n\t* Handles managing adding & removing Annotations\n\t* @param {Rendition} rendition\n\t* @class\n\t*/\nclass Annotations {\n\n\tconstructor (rendition) {\n\t\tthis.rendition = rendition;\n\t\tthis.highlights = [];\n\t\tthis.underlines = [];\n\t\tthis.marks = [];\n\t\tthis._annotations = {};\n\t\tthis._annotationsBySectionIndex = {};\n\n\t\tthis.rendition.hooks.render.register(this.inject.bind(this));\n\t\tthis.rendition.hooks.unloaded.register(this.clear.bind(this));\n\t}\n\n\t/**\n\t * Add an annotation to store\n\t * @param {string} type Type of annotation to add: \"highlight\", \"underline\", \"mark\"\n\t * @param {EpubCFI} cfiRange EpubCFI range to attach annotation to\n\t * @param {object} data Data to assign to annotation\n\t * @param {function} [cb] Callback after annotation is added\n\t * @param {string} className CSS class to assign to annotation\n\t * @param {object} styles CSS styles to assign to annotation\n\t * @returns {Annotation} annotation\n\t */\n\tadd (type, cfiRange, data, cb, className, styles) {\n\t\tlet hash = encodeURI(cfiRange + type);\n\t\tlet cfi = new EpubCFI(cfiRange);\n\t\tlet sectionIndex = cfi.spinePos;\n\t\tlet annotation = new Annotation({\n\t\t\ttype,\n\t\t\tcfiRange,\n\t\t\tdata,\n\t\t\tsectionIndex,\n\t\t\tcb,\n\t\t\tclassName,\n\t\t\tstyles\n\t\t});\n\n\t\tthis._annotations[hash] = annotation;\n\n\t\tif (sectionIndex in this._annotationsBySectionIndex) {\n\t\t\tthis._annotationsBySectionIndex[sectionIndex].push(hash);\n\t\t} else {\n\t\t\tthis._annotationsBySectionIndex[sectionIndex] = [hash];\n\t\t}\n\n\t\tlet views = this.rendition.views();\n\n\t\tviews.forEach( (view) => {\n\t\t\tif (annotation.sectionIndex === view.index) {\n\t\t\t\tannotation.attach(view);\n\t\t\t}\n\t\t});\n\n\t\treturn annotation;\n\t}\n\n\t/**\n\t * Remove an annotation from store\n\t * @param {EpubCFI} cfiRange EpubCFI range the annotation is attached to\n\t * @param {string} type Type of annotation to add: \"highlight\", \"underline\", \"mark\"\n\t */\n\tremove (cfiRange, type) {\n\t\tlet hash = encodeURI(cfiRange + type);\n\n\t\tif (hash in this._annotations) {\n\t\t\tlet annotation = this._annotations[hash];\n\n\t\t\tif (type && annotation.type !== type) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet views = this.rendition.views();\n\t\t\tviews.forEach( (view) => {\n\t\t\t\tthis._removeFromAnnotationBySectionIndex(annotation.sectionIndex, hash);\n\t\t\t\tif (annotation.sectionIndex === view.index) {\n\t\t\t\t\tannotation.detach(view);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdelete this._annotations[hash];\n\t\t}\n\t}\n\n\t/**\n\t * Remove an annotations by Section Index\n\t * @private\n\t */\n\t_removeFromAnnotationBySectionIndex (sectionIndex, hash) {\n\t\tthis._annotationsBySectionIndex[sectionIndex] = this._annotationsAt(sectionIndex).filter(h => h !== hash);\n\t}\n\n\t/**\n\t * Get annotations by Section Index\n\t * @private\n\t */\n\t_annotationsAt (index) {\n\t\treturn this._annotationsBySectionIndex[index];\n\t}\n\n\n\t/**\n\t * Add a highlight to the store\n\t * @param {EpubCFI} cfiRange EpubCFI range to attach annotation to\n\t * @param {object} data Data to assign to annotation\n\t * @param {function} cb Callback after annotation is clicked\n\t * @param {string} className CSS class to assign to annotation\n\t * @param {object} styles CSS styles to assign to annotation\n\t */\n\thighlight (cfiRange, data, cb, className, styles) {\n\t\treturn this.add(\"highlight\", cfiRange, data, cb, className, styles);\n\t}\n\n\t/**\n\t * Add a underline to the store\n\t * @param {EpubCFI} cfiRange EpubCFI range to attach annotation to\n\t * @param {object} data Data to assign to annotation\n\t * @param {function} cb Callback after annotation is clicked\n\t * @param {string} className CSS class to assign to annotation\n\t * @param {object} styles CSS styles to assign to annotation\n\t */\n\tunderline (cfiRange, data, cb, className, styles) {\n\t\treturn this.add(\"underline\", cfiRange, data, cb, className, styles);\n\t}\n\n\t/**\n\t * Add a mark to the store\n\t * @param {EpubCFI} cfiRange EpubCFI range to attach annotation to\n\t * @param {object} data Data to assign to annotation\n\t * @param {function} cb Callback after annotation is clicked\n\t */\n\tmark (cfiRange, data, cb) {\n\t\treturn this.add(\"mark\", cfiRange, data, cb);\n\t}\n\n\t/**\n\t * iterate over annotations in the store\n\t */\n\teach () {\n\t\treturn this._annotations.forEach.apply(this._annotations, arguments);\n\t}\n\n\t/**\n\t * Hook for injecting annotation into a view\n\t * @param {View} view\n\t * @private\n\t */\n\tinject (view) {\n\t\tlet sectionIndex = view.index;\n\t\tif (sectionIndex in this._annotationsBySectionIndex) {\n\t\t\tlet annotations = this._annotationsBySectionIndex[sectionIndex];\n\t\t\tannotations.forEach((hash) => {\n\t\t\t\tlet annotation = this._annotations[hash];\n\t\t\t\tannotation.attach(view);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Hook for removing annotation from a view\n\t * @param {View} view\n\t * @private\n\t */\n\tclear (view) {\n\t\tlet sectionIndex = view.index;\n\t\tif (sectionIndex in this._annotationsBySectionIndex) {\n\t\t\tlet annotations = this._annotationsBySectionIndex[sectionIndex];\n\t\t\tannotations.forEach((hash) => {\n\t\t\t\tlet annotation = this._annotations[hash];\n\t\t\t\tannotation.detach(view);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * [Not Implemented] Show annotations\n\t * @TODO: needs implementation in View\n\t */\n\tshow () {\n\n\t}\n\n\t/**\n\t * [Not Implemented] Hide annotations\n\t * @TODO: needs implementation in View\n\t */\n\thide () {\n\n\t}\n\n}\n\n/**\n * Annotation object\n * @class\n * @param {object} options\n * @param {string} options.type Type of annotation to add: \"highlight\", \"underline\", \"mark\"\n * @param {EpubCFI} options.cfiRange EpubCFI range to attach annotation to\n * @param {object} options.data Data to assign to annotation\n * @param {int} options.sectionIndex Index in the Spine of the Section annotation belongs to\n * @param {function} [options.cb] Callback after annotation is clicked\n * @param {string} className CSS class to assign to annotation\n * @param {object} styles CSS styles to assign to annotation\n * @returns {Annotation} annotation\n */\nclass Annotation {\n\n\tconstructor ({\n\t\ttype,\n\t\tcfiRange,\n\t\tdata,\n\t\tsectionIndex,\n\t\tcb,\n\t\tclassName,\n\t\tstyles\n\t}) {\n\t\tthis.type = type;\n\t\tthis.cfiRange = cfiRange;\n\t\tthis.data = data;\n\t\tthis.sectionIndex = sectionIndex;\n\t\tthis.mark = undefined;\n\t\tthis.cb = cb;\n\t\tthis.className = className;\n\t\tthis.styles = styles;\n\t}\n\n\t/**\n\t * Update stored data\n\t * @param {object} data\n\t */\n\tupdate (data) {\n\t\tthis.data = data;\n\t}\n\n\t/**\n\t * Add to a view\n\t * @param {View} view\n\t */\n\tattach (view) {\n\t\tlet {cfiRange, data, type, mark, cb, className, styles} = this;\n\t\tlet result;\n\n\t\tif (type === \"highlight\") {\n\t\t\tresult = view.highlight(cfiRange, data, cb, className, styles);\n\t\t} else if (type === \"underline\") {\n\t\t\tresult = view.underline(cfiRange, data, cb, className, styles);\n\t\t} else if (type === \"mark\") {\n\t\t\tresult = view.mark(cfiRange, data, cb);\n\t\t}\n\n\t\tthis.mark = result;\n\t\tthis.emit(EVENTS.ANNOTATION.ATTACH, result);\n\t\treturn result;\n\t}\n\n\t/**\n\t * Remove from a view\n\t * @param {View} view\n\t */\n\tdetach (view) {\n\t\tlet {cfiRange, type} = this;\n\t\tlet result;\n\n\t\tif (view) {\n\t\t\tif (type === \"highlight\") {\n\t\t\t\tresult = view.unhighlight(cfiRange);\n\t\t\t} else if (type === \"underline\") {\n\t\t\t\tresult = view.ununderline(cfiRange);\n\t\t\t} else if (type === \"mark\") {\n\t\t\t\tresult = view.unmark(cfiRange);\n\t\t\t}\n\t\t}\n\n\t\tthis.mark = undefined;\n\t\tthis.emit(EVENTS.ANNOTATION.DETACH, result);\n\t\treturn result;\n\t}\n\n\t/**\n\t * [Not Implemented] Get text of an annotation\n\t * @TODO: needs implementation in contents\n\t */\n\ttext () {\n\n\t}\n\n}\n\nEventEmitter(Annotation.prototype);\n\n\nexport default Annotations\n","import EventEmitter from \"event-emitter\";\nimport { extend, defer, isFloat } from \"./utils/core\";\nimport Hook from \"./utils/hook\";\nimport EpubCFI from \"./epubcfi\";\nimport Queue from \"./utils/queue\";\nimport Layout from \"./layout\";\n// import Mapping from \"./mapping\";\nimport Themes from \"./themes\";\nimport Contents from \"./contents\";\nimport Annotations from \"./annotations\";\nimport { EVENTS, DOM_EVENTS } from \"./utils/constants\";\n\n// Default Views\nimport IframeView from \"./managers/views/iframe\";\n\n// Default View Managers\nimport DefaultViewManager from \"./managers/default/index\";\nimport ContinuousViewManager from \"./managers/continuous/index\";\n\n/**\n * Displays an Epub as a series of Views for each Section.\n * Requires Manager and View class to handle specifics of rendering\n * the section content.\n * @class\n * @param {Book} book\n * @param {object} [options]\n * @param {number} [options.width]\n * @param {number} [options.height]\n * @param {string} [options.ignoreClass] class for the cfi parser to ignore\n * @param {string | function | object} [options.manager='default']\n * @param {string | function} [options.view='iframe']\n * @param {string} [options.layout] layout to force\n * @param {string} [options.spread] force spread value\n * @param {number} [options.minSpreadWidth] overridden by spread: none (never) / both (always)\n * @param {string} [options.stylesheet] url of stylesheet to be injected\n * @param {boolean} [options.resizeOnOrientationChange] false to disable orientation events\n * @param {string} [options.script] url of script to be injected\n * @param {boolean | object} [options.snap=false] use snap scrolling\n * @param {string} [options.defaultDirection='ltr'] default text direction\n * @param {boolean} [options.allowScriptedContent=false] enable running scripts in content\n * @param {boolean} [options.allowPopups=false] enable opening popup in content\n */\nclass Rendition {\n\tconstructor(book, options) {\n\n\t\tthis.settings = extend(this.settings || {}, {\n\t\t\twidth: null,\n\t\t\theight: null,\n\t\t\tignoreClass: \"\",\n\t\t\tmanager: \"default\",\n\t\t\tview: \"iframe\",\n\t\t\tflow: null,\n\t\t\tlayout: null,\n\t\t\tspread: null,\n\t\t\tminSpreadWidth: 800,\n\t\t\tstylesheet: null,\n\t\t\tresizeOnOrientationChange: true,\n\t\t\tscript: null,\n\t\t\tsnap: false,\n\t\t\tdefaultDirection: \"ltr\",\n\t\t\tallowScriptedContent: false,\n\t\t\tallowPopups: false\n\t\t});\n\n\t\textend(this.settings, options);\n\n\t\tif (typeof(this.settings.manager) === \"object\") {\n\t\t\tthis.manager = this.settings.manager;\n\t\t}\n\n\t\tthis.book = book;\n\n\t\t/**\n\t\t * Adds Hook methods to the Rendition prototype\n\t\t * @member {object} hooks\n\t\t * @property {Hook} hooks.content\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.hooks = {};\n\t\tthis.hooks.display = new Hook(this);\n\t\tthis.hooks.serialize = new Hook(this);\n\t\tthis.hooks.content = new Hook(this);\n\t\tthis.hooks.unloaded = new Hook(this);\n\t\tthis.hooks.layout = new Hook(this);\n\t\tthis.hooks.render = new Hook(this);\n\t\tthis.hooks.show = new Hook(this);\n\n\t\tthis.hooks.content.register(this.handleLinks.bind(this));\n\t\tthis.hooks.content.register(this.passEvents.bind(this));\n\t\tthis.hooks.content.register(this.adjustImages.bind(this));\n\n\t\tthis.book.spine.hooks.content.register(this.injectIdentifier.bind(this));\n\n\t\tif (this.settings.stylesheet) {\n\t\t\tthis.book.spine.hooks.content.register(this.injectStylesheet.bind(this));\n\t\t}\n\n\t\tif (this.settings.script) {\n\t\t\tthis.book.spine.hooks.content.register(this.injectScript.bind(this));\n\t\t}\n\n\t\t/**\n\t\t * @member {Themes} themes\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.themes = new Themes(this);\n\n\t\t/**\n\t\t * @member {Annotations} annotations\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.annotations = new Annotations(this);\n\n\t\tthis.epubcfi = new EpubCFI();\n\n\t\tthis.q = new Queue(this);\n\n\t\t/**\n\t\t * A Rendered Location Range\n\t\t * @typedef location\n\t\t * @type {Object}\n\t\t * @property {object} start\n\t\t * @property {string} start.index\n\t\t * @property {string} start.href\n\t\t * @property {object} start.displayed\n\t\t * @property {EpubCFI} start.cfi\n\t\t * @property {number} start.location\n\t\t * @property {number} start.percentage\n\t\t * @property {number} start.displayed.page\n\t\t * @property {number} start.displayed.total\n\t\t * @property {object} end\n\t\t * @property {string} end.index\n\t\t * @property {string} end.href\n\t\t * @property {object} end.displayed\n\t\t * @property {EpubCFI} end.cfi\n\t\t * @property {number} end.location\n\t\t * @property {number} end.percentage\n\t\t * @property {number} end.displayed.page\n\t\t * @property {number} end.displayed.total\n\t\t * @property {boolean} atStart\n\t\t * @property {boolean} atEnd\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.location = undefined;\n\n\t\t// Hold queue until book is opened\n\t\tthis.q.enqueue(this.book.opened);\n\n\t\tthis.starting = new defer();\n\t\t/**\n\t\t * @member {promise} started returns after the rendition has started\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.started = this.starting.promise;\n\n\t\t// Block the queue until rendering is started\n\t\tthis.q.enqueue(this.start);\n\t}\n\n\t/**\n\t * Set the manager function\n\t * @param {function} manager\n\t */\n\tsetManager(manager) {\n\t\tthis.manager = manager;\n\t}\n\n\t/**\n\t * Require the manager from passed string, or as a class function\n\t * @param {string|object} manager [description]\n\t * @return {method}\n\t */\n\trequireManager(manager) {\n\t\tvar viewManager;\n\n\t\t// If manager is a string, try to load from imported managers\n\t\tif (typeof manager === \"string\" && manager === \"default\") {\n\t\t\tviewManager = DefaultViewManager;\n\t\t} else if (typeof manager === \"string\" && manager === \"continuous\") {\n\t\t\tviewManager = ContinuousViewManager;\n\t\t} else {\n\t\t\t// otherwise, assume we were passed a class function\n\t\t\tviewManager = manager;\n\t\t}\n\n\t\treturn viewManager;\n\t}\n\n\t/**\n\t * Require the view from passed string, or as a class function\n\t * @param {string|object} view\n\t * @return {view}\n\t */\n\trequireView(view) {\n\t\tvar View;\n\n\t\t// If view is a string, try to load from imported views,\n\t\tif (typeof view == \"string\" && view === \"iframe\") {\n\t\t\tView = IframeView;\n\t\t} else {\n\t\t\t// otherwise, assume we were passed a class function\n\t\t\tView = view;\n\t\t}\n\n\t\treturn View;\n\t}\n\n\t/**\n\t * Start the rendering\n\t * @return {Promise} rendering has started\n\t */\n\tstart(){\n\t\tif (!this.settings.layout && (this.book.package.metadata.layout === \"pre-paginated\" || this.book.displayOptions.fixedLayout === \"true\")) {\n\t\t\tthis.settings.layout = \"pre-paginated\";\n\t\t}\n\t\tswitch(this.book.package.metadata.spread) {\n\t\t\tcase 'none':\n\t\t\t\tthis.settings.spread = 'none';\n\t\t\t\tbreak;\n\t\t\tcase 'both':\n\t\t\t\tthis.settings.spread = true;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(!this.manager) {\n\t\t\tthis.ViewManager = this.requireManager(this.settings.manager);\n\t\t\tthis.View = this.requireView(this.settings.view);\n\n\t\t\tthis.manager = new this.ViewManager({\n\t\t\t\tview: this.View,\n\t\t\t\tqueue: this.q,\n\t\t\t\trequest: this.book.load.bind(this.book),\n\t\t\t\tsettings: this.settings\n\t\t\t});\n\t\t}\n\n\t\tthis.direction(this.book.package.metadata.direction || this.settings.defaultDirection);\n\n\t\t// Parse metadata to get layout props\n\t\tthis.settings.globalLayoutProperties = this.determineLayoutProperties(this.book.package.metadata);\n\n\t\tthis.flow(this.settings.globalLayoutProperties.flow);\n\n\t\tthis.layout(this.settings.globalLayoutProperties);\n\n\t\t// Listen for displayed views\n\t\tthis.manager.on(EVENTS.MANAGERS.ADDED, this.afterDisplayed.bind(this));\n\t\tthis.manager.on(EVENTS.MANAGERS.REMOVED, this.afterRemoved.bind(this));\n\n\t\t// Listen for resizing\n\t\tthis.manager.on(EVENTS.MANAGERS.RESIZED, this.onResized.bind(this));\n\n\t\t// Listen for rotation\n\t\tthis.manager.on(EVENTS.MANAGERS.ORIENTATION_CHANGE, this.onOrientationChange.bind(this));\n\n\t\t// Listen for scroll changes\n\t\tthis.manager.on(EVENTS.MANAGERS.SCROLLED, this.reportLocation.bind(this));\n\n\t\t/**\n\t\t * Emit that rendering has started\n\t\t * @event started\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.emit(EVENTS.RENDITION.STARTED);\n\n\t\t// Start processing queue\n\t\tthis.starting.resolve();\n\t}\n\n\t/**\n\t * Call to attach the container to an element in the dom\n\t * Container must be attached before rendering can begin\n\t * @param {element} element to attach to\n\t * @return {Promise}\n\t */\n\tattachTo(element){\n\n\t\treturn this.q.enqueue(function () {\n\n\t\t\t// Start rendering\n\t\t\tthis.manager.render(element, {\n\t\t\t\t\"width\" : this.settings.width,\n\t\t\t\t\"height\" : this.settings.height\n\t\t\t});\n\n\t\t\t/**\n\t\t\t * Emit that rendering has attached to an element\n\t\t\t * @event attached\n\t\t\t * @memberof Rendition\n\t\t\t */\n\t\t\tthis.emit(EVENTS.RENDITION.ATTACHED);\n\n\t\t}.bind(this));\n\n\t}\n\n\t/**\n\t * Display a point in the book\n\t * The request will be added to the rendering Queue,\n\t * so it will wait until book is opened, rendering started\n\t * and all other rendering tasks have finished to be called.\n\t * @param {string} target Url or EpubCFI\n\t * @return {Promise}\n\t */\n\tdisplay(target){\n\t\tif (this.displaying) {\n\t\t\tthis.displaying.resolve();\n\t\t}\n\t\treturn this.q.enqueue(this._display, target);\n\t}\n\n\t/**\n\t * Tells the manager what to display immediately\n\t * @private\n\t * @param {string} target Url or EpubCFI\n\t * @return {Promise}\n\t */\n\t_display(target){\n\t\tif (!this.book) {\n\t\t\treturn;\n\t\t}\n\t\tvar isCfiString = this.epubcfi.isCfiString(target);\n\t\tvar displaying = new defer();\n\t\tvar displayed = displaying.promise;\n\t\tvar section;\n\t\tvar moveTo;\n\n\t\tthis.displaying = displaying;\n\n\t\t// Check if this is a book percentage\n\t\tif (this.book.locations.length() && isFloat(target)) {\n\t\t\ttarget = this.book.locations.cfiFromPercentage(parseFloat(target));\n\t\t}\n\n\t\tsection = this.book.spine.get(target);\n\n\t\tif(!section){\n\t\t\tdisplaying.reject(new Error(\"No Section Found\"));\n\t\t\treturn displayed;\n\t\t}\n\n\t\tthis.manager.display(section, target)\n\t\t\t.then(() => {\n\t\t\t\tdisplaying.resolve(section);\n\t\t\t\tthis.displaying = undefined;\n\n\t\t\t\t/**\n\t\t\t\t * Emit that a section has been displayed\n\t\t\t\t * @event displayed\n\t\t\t\t * @param {Section} section\n\t\t\t\t * @memberof Rendition\n\t\t\t\t */\n\t\t\t\tthis.emit(EVENTS.RENDITION.DISPLAYED, section);\n\t\t\t\tthis.reportLocation();\n\t\t\t}, (err) => {\n\t\t\t\t/**\n\t\t\t\t * Emit that has been an error displaying\n\t\t\t\t * @event displayError\n\t\t\t\t * @param {Section} section\n\t\t\t\t * @memberof Rendition\n\t\t\t\t */\n\t\t\t\tthis.emit(EVENTS.RENDITION.DISPLAY_ERROR, err);\n\t\t\t});\n\n\t\treturn displayed;\n\t}\n\n\t/*\n\trender(view, show) {\n\n\t\t// view.onLayout = this.layout.format.bind(this.layout);\n\t\tview.create();\n\n\t\t// Fit to size of the container, apply padding\n\t\tthis.manager.resizeView(view);\n\n\t\t// Render Chain\n\t\treturn view.section.render(this.book.request)\n\t\t\t.then(function(contents){\n\t\t\t\treturn view.load(contents);\n\t\t\t}.bind(this))\n\t\t\t.then(function(doc){\n\t\t\t\treturn this.hooks.content.trigger(view, this);\n\t\t\t}.bind(this))\n\t\t\t.then(function(){\n\t\t\t\tthis.layout.format(view.contents);\n\t\t\t\treturn this.hooks.layout.trigger(view, this);\n\t\t\t}.bind(this))\n\t\t\t.then(function(){\n\t\t\t\treturn view.display();\n\t\t\t}.bind(this))\n\t\t\t.then(function(){\n\t\t\t\treturn this.hooks.render.trigger(view, this);\n\t\t\t}.bind(this))\n\t\t\t.then(function(){\n\t\t\t\tif(show !== false) {\n\t\t\t\t\tthis.q.enqueue(function(view){\n\t\t\t\t\t\tview.show();\n\t\t\t\t\t}, view);\n\t\t\t\t}\n\t\t\t\t// this.map = new Map(view, this.layout);\n\t\t\t\tthis.hooks.show.trigger(view, this);\n\t\t\t\tthis.trigger(\"rendered\", view.section);\n\n\t\t\t}.bind(this))\n\t\t\t.catch(function(e){\n\t\t\t\tthis.trigger(\"loaderror\", e);\n\t\t\t}.bind(this));\n\n\t}\n\t*/\n\n\t/**\n\t * Report what section has been displayed\n\t * @private\n\t * @param {*} view\n\t */\n\tafterDisplayed(view){\n\n\t\tview.on(EVENTS.VIEWS.MARK_CLICKED, (cfiRange, data) => this.triggerMarkEvent(cfiRange, data, view.contents));\n\n\t\tthis.hooks.render.trigger(view, this)\n\t\t\t.then(() => {\n\t\t\t\tif (view.contents) {\n\t\t\t\t\tthis.hooks.content.trigger(view.contents, this).then(() => {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Emit that a section has been rendered\n\t\t\t\t\t\t * @event rendered\n\t\t\t\t\t\t * @param {Section} section\n\t\t\t\t\t\t * @param {View} view\n\t\t\t\t\t\t * @memberof Rendition\n\t\t\t\t\t\t */\n\t\t\t\t\t\tthis.emit(EVENTS.RENDITION.RENDERED, view.section, view);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.emit(EVENTS.RENDITION.RENDERED, view.section, view);\n\t\t\t\t}\n\t\t\t});\n\n\t}\n\n\t/**\n\t * Report what has been removed\n\t * @private\n\t * @param {*} view\n\t */\n\tafterRemoved(view){\n\t\tthis.hooks.unloaded.trigger(view, this).then(() => {\n\t\t\t/**\n\t\t\t * Emit that a section has been removed\n\t\t\t * @event removed\n\t\t\t * @param {Section} section\n\t\t\t * @param {View} view\n\t\t\t * @memberof Rendition\n\t\t\t */\n\t\t\tthis.emit(EVENTS.RENDITION.REMOVED, view.section, view);\n\t\t});\n\t}\n\n\t/**\n\t * Report resize events and display the last seen location\n\t * @private\n\t */\n\tonResized(size, epubcfi){\n\n\t\t/**\n\t\t * Emit that the rendition has been resized\n\t\t * @event resized\n\t\t * @param {number} width\n\t\t * @param {height} height\n\t\t * @param {string} epubcfi (optional)\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.emit(EVENTS.RENDITION.RESIZED, {\n\t\t\twidth: size.width,\n\t\t\theight: size.height\n\t\t}, epubcfi);\n\n\t\tif (this.location && this.location.start) {\n\t\t\tthis.display(epubcfi || this.location.start.cfi);\n\t\t}\n\n\t}\n\n\t/**\n\t * Report orientation events and display the last seen location\n\t * @private\n\t */\n\tonOrientationChange(orientation){\n\t\t/**\n\t\t * Emit that the rendition has been rotated\n\t\t * @event orientationchange\n\t\t * @param {string} orientation\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.emit(EVENTS.RENDITION.ORIENTATION_CHANGE, orientation);\n\t}\n\n\t/**\n\t * Move the Rendition to a specific offset\n\t * Usually you would be better off calling display()\n\t * @param {object} offset\n\t */\n\tmoveTo(offset){\n\t\tthis.manager.moveTo(offset);\n\t}\n\n\t/**\n\t * Trigger a resize of the views\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t * @param {string} [epubcfi] (optional)\n\t */\n\tresize(width, height, epubcfi){\n\t\tif (width) {\n\t\t\tthis.settings.width = width;\n\t\t}\n\t\tif (height) {\n\t\t\tthis.settings.height = height;\n\t\t}\n\t\tthis.manager.resize(width, height, epubcfi);\n\t}\n\n\t/**\n\t * Clear all rendered views\n\t */\n\tclear(){\n\t\tthis.manager.clear();\n\t}\n\n\t/**\n\t * Go to the next \"page\" in the rendition\n\t * @return {Promise}\n\t */\n\tnext(){\n\t\treturn this.q.enqueue(this.manager.next.bind(this.manager))\n\t\t\t.then(this.reportLocation.bind(this));\n\t}\n\n\t/**\n\t * Go to the previous \"page\" in the rendition\n\t * @return {Promise}\n\t */\n\tprev(){\n\t\treturn this.q.enqueue(this.manager.prev.bind(this.manager))\n\t\t\t.then(this.reportLocation.bind(this));\n\t}\n\n\t//-- http://www.idpf.org/epub/301/spec/epub-publications.html#meta-properties-rendering\n\t/**\n\t * Determine the Layout properties from metadata and settings\n\t * @private\n\t * @param {object} metadata\n\t * @return {object} properties\n\t */\n\tdetermineLayoutProperties(metadata){\n\t\tvar properties;\n\t\tvar layout = this.settings.layout || metadata.layout || \"reflowable\";\n\t\tvar spread = this.settings.spread || metadata.spread || \"auto\";\n\t\tvar orientation = this.settings.orientation || metadata.orientation || \"auto\";\n\t\tvar flow = this.settings.flow || metadata.flow || \"auto\";\n\t\tvar viewport = metadata.viewport || \"\";\n\t\tvar minSpreadWidth = this.settings.minSpreadWidth || metadata.minSpreadWidth || 800;\n\t\tvar direction = this.settings.direction || metadata.direction || \"ltr\";\n\n\t\tif ((this.settings.width === 0 || this.settings.width > 0) &&\n\t\t\t\t(this.settings.height === 0 || this.settings.height > 0)) {\n\t\t\t// viewport = \"width=\"+this.settings.width+\", height=\"+this.settings.height+\"\";\n\t\t}\n\n\t\tproperties = {\n\t\t\tlayout : layout,\n\t\t\tspread : spread,\n\t\t\torientation : orientation,\n\t\t\tflow : flow,\n\t\t\tviewport : viewport,\n\t\t\tminSpreadWidth : minSpreadWidth,\n\t\t\tdirection: direction\n\t\t};\n\n\t\treturn properties;\n\t}\n\n\t/**\n\t * Adjust the flow of the rendition to paginated or scrolled\n\t * (scrolled-continuous vs scrolled-doc are handled by different view managers)\n\t * @param {string} flow\n\t */\n\tflow(flow){\n\t\tvar _flow = flow;\n\t\tif (flow === \"scrolled\" ||\n\t\t\t\tflow === \"scrolled-doc\" ||\n\t\t\t\tflow === \"scrolled-continuous\") {\n\t\t\t_flow = \"scrolled\";\n\t\t}\n\n\t\tif (flow === \"auto\" || flow === \"paginated\") {\n\t\t\t_flow = \"paginated\";\n\t\t}\n\n\t\tthis.settings.flow = flow;\n\n\t\tif (this._layout) {\n\t\t\tthis._layout.flow(_flow);\n\t\t}\n\n\t\tif (this.manager && this._layout) {\n\t\t\tthis.manager.applyLayout(this._layout);\n\t\t}\n\n\t\tif (this.manager) {\n\t\t\tthis.manager.updateFlow(_flow);\n\t\t}\n\n\t\tif (this.manager && this.manager.isRendered() && this.location) {\n\t\t\tthis.manager.clear();\n\t\t\tthis.display(this.location.start.cfi);\n\t\t}\n\t}\n\n\t/**\n\t * Adjust the layout of the rendition to reflowable or pre-paginated\n\t * @param {object} settings\n\t */\n\tlayout(settings){\n\t\tif (settings) {\n\t\t\tthis._layout = new Layout(settings);\n\t\t\tthis._layout.spread(settings.spread, this.settings.minSpreadWidth);\n\n\t\t\t// this.mapping = new Mapping(this._layout.props);\n\n\t\t\tthis._layout.on(EVENTS.LAYOUT.UPDATED, (props, changed) => {\n\t\t\t\tthis.emit(EVENTS.RENDITION.LAYOUT, props, changed);\n\t\t\t})\n\t\t}\n\n\t\tif (this.manager && this._layout) {\n\t\t\tthis.manager.applyLayout(this._layout);\n\t\t}\n\n\t\treturn this._layout;\n\t}\n\n\t/**\n\t * Adjust if the rendition uses spreads\n\t * @param {string} spread none | auto (TODO: implement landscape, portrait, both)\n\t * @param {int} [min] min width to use spreads at\n\t */\n\tspread(spread, min){\n\n\t\tthis.settings.spread = spread;\n\n\t\tif (min) {\n\t\t\tthis.settings.minSpreadWidth = min;\n\t\t}\n\n\t\tif (this._layout) {\n\t\t\tthis._layout.spread(spread, min);\n\t\t}\n\n\t\tif (this.manager && this.manager.isRendered()) {\n\t\t\tthis.manager.updateLayout();\n\t\t}\n\t}\n\n\t/**\n\t * Adjust the direction of the rendition\n\t * @param {string} dir\n\t */\n\tdirection(dir){\n\n\t\tthis.settings.direction = dir || \"ltr\";\n\n\t\tif (this.manager) {\n\t\t\tthis.manager.direction(this.settings.direction);\n\t\t}\n\n\t\tif (this.manager && this.manager.isRendered() && this.location) {\n\t\t\tthis.manager.clear();\n\t\t\tthis.display(this.location.start.cfi);\n\t\t}\n\t}\n\n\t/**\n\t * Report the current location\n\t * @fires relocated\n\t * @fires locationChanged\n\t */\n\treportLocation(){\n\t\treturn this.q.enqueue(function reportedLocation(){\n\t\t\trequestAnimationFrame(function reportedLocationAfterRAF() {\n\t\t\t\tvar location = this.manager.currentLocation();\n\t\t\t\tif (location && location.then && typeof location.then === \"function\") {\n\t\t\t\t\tlocation.then(function(result) {\n\t\t\t\t\t\tlet located = this.located(result);\n\n\t\t\t\t\t\tif (!located || !located.start || !located.end) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.location = located;\n\n\t\t\t\t\t\tthis.emit(EVENTS.RENDITION.LOCATION_CHANGED, {\n\t\t\t\t\t\t\tindex: this.location.start.index,\n\t\t\t\t\t\t\thref: this.location.start.href,\n\t\t\t\t\t\t\tstart: this.location.start.cfi,\n\t\t\t\t\t\t\tend: this.location.end.cfi,\n\t\t\t\t\t\t\tpercentage: this.location.start.percentage\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tthis.emit(EVENTS.RENDITION.RELOCATED, this.location);\n\t\t\t\t\t}.bind(this));\n\t\t\t\t} else if (location) {\n\t\t\t\t\tlet located = this.located(location);\n\n\t\t\t\t\tif (!located || !located.start || !located.end) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.location = located;\n\n\t\t\t\t\t/**\n\t\t\t\t\t * @event locationChanged\n\t\t\t\t\t * @deprecated\n\t\t\t\t\t * @type {object}\n\t\t\t\t\t * @property {number} index\n\t\t\t\t\t * @property {string} href\n\t\t\t\t\t * @property {EpubCFI} start\n\t\t\t\t\t * @property {EpubCFI} end\n\t\t\t\t\t * @property {number} percentage\n\t\t\t\t\t * @memberof Rendition\n\t\t\t\t\t */\n\t\t\t\t\tthis.emit(EVENTS.RENDITION.LOCATION_CHANGED, {\n\t\t\t\t\t\tindex: this.location.start.index,\n\t\t\t\t\t\thref: this.location.start.href,\n\t\t\t\t\t\tstart: this.location.start.cfi,\n\t\t\t\t\t\tend: this.location.end.cfi,\n\t\t\t\t\t\tpercentage: this.location.start.percentage\n\t\t\t\t\t});\n\n\t\t\t\t\t/**\n\t\t\t\t\t * @event relocated\n\t\t\t\t\t * @type {displayedLocation}\n\t\t\t\t\t * @memberof Rendition\n\t\t\t\t\t */\n\t\t\t\t\tthis.emit(EVENTS.RENDITION.RELOCATED, this.location);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t}.bind(this));\n\t}\n\n\t/**\n\t * Get the Current Location object\n\t * @return {displayedLocation | promise} location (may be a promise)\n\t */\n\tcurrentLocation(){\n\t\tvar location = this.manager.currentLocation();\n\t\tif (location && location.then && typeof location.then === \"function\") {\n\t\t\tlocation.then(function(result) {\n\t\t\t\tlet located = this.located(result);\n\t\t\t\treturn located;\n\t\t\t}.bind(this));\n\t\t} else if (location) {\n\t\t\tlet located = this.located(location);\n\t\t\treturn located;\n\t\t}\n\t}\n\n\t/**\n\t * Creates a Rendition#locationRange from location\n\t * passed by the Manager\n\t * @returns {displayedLocation}\n\t * @private\n\t */\n\tlocated(location){\n\t\tif (!location.length) {\n\t\t\treturn {};\n\t\t}\n\t\tlet start = location[0];\n\t\tlet end = location[location.length-1];\n\n\t\tlet located = {\n\t\t\tstart: {\n\t\t\t\tindex: start.index,\n\t\t\t\thref: start.href,\n\t\t\t\tcfi: start.mapping.start,\n\t\t\t\tdisplayed: {\n\t\t\t\t\tpage: start.pages[0] || 1,\n\t\t\t\t\ttotal: start.totalPages\n\t\t\t\t}\n\t\t\t},\n\t\t\tend: {\n\t\t\t\tindex: end.index,\n\t\t\t\thref: end.href,\n\t\t\t\tcfi: end.mapping.end,\n\t\t\t\tdisplayed: {\n\t\t\t\t\tpage: end.pages[end.pages.length-1] || 1,\n\t\t\t\t\ttotal: end.totalPages\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tlet locationStart = this.book.locations.locationFromCfi(start.mapping.start);\n\t\tlet locationEnd = this.book.locations.locationFromCfi(end.mapping.end);\n\n\t\tif (locationStart != null) {\n\t\t\tlocated.start.location = locationStart;\n\t\t\tlocated.start.percentage = this.book.locations.percentageFromLocation(locationStart);\n\t\t}\n\t\tif (locationEnd != null) {\n\t\t\tlocated.end.location = locationEnd;\n\t\t\tlocated.end.percentage = this.book.locations.percentageFromLocation(locationEnd);\n\t\t}\n\n\t\tlet pageStart = this.book.pageList.pageFromCfi(start.mapping.start);\n\t\tlet pageEnd = this.book.pageList.pageFromCfi(end.mapping.end);\n\n\t\tif (pageStart != -1) {\n\t\t\tlocated.start.page = pageStart;\n\t\t}\n\t\tif (pageEnd != -1) {\n\t\t\tlocated.end.page = pageEnd;\n\t\t}\n\n\t\tif (end.index === this.book.spine.last().index &&\n\t\t\t\tlocated.end.displayed.page >= located.end.displayed.total) {\n\t\t\tlocated.atEnd = true;\n\t\t}\n\n\t\tif (start.index === this.book.spine.first().index &&\n\t\t\t\tlocated.start.displayed.page === 1) {\n\t\t\tlocated.atStart = true;\n\t\t}\n\n\t\treturn located;\n\t}\n\n\t/**\n\t * Remove and Clean Up the Rendition\n\t */\n\tdestroy(){\n\t\t// Clear the queue\n\t\t// this.q.clear();\n\t\t// this.q = undefined;\n\n\t\tthis.manager && this.manager.destroy();\n\n\t\tthis.book = undefined;\n\n\t\t// this.views = null;\n\n\t\t// this.hooks.display.clear();\n\t\t// this.hooks.serialize.clear();\n\t\t// this.hooks.content.clear();\n\t\t// this.hooks.layout.clear();\n\t\t// this.hooks.render.clear();\n\t\t// this.hooks.show.clear();\n\t\t// this.hooks = {};\n\n\t\t// this.themes.destroy();\n\t\t// this.themes = undefined;\n\n\t\t// this.epubcfi = undefined;\n\n\t\t// this.starting = undefined;\n\t\t// this.started = undefined;\n\n\n\t}\n\n\t/**\n\t * Pass the events from a view's Contents\n\t * @private\n\t * @param {Contents} view contents\n\t */\n\tpassEvents(contents){\n\t\tDOM_EVENTS.forEach((e) => {\n\t\t\tcontents.on(e, (ev) => this.triggerViewEvent(ev, contents));\n\t\t});\n\n\t\tcontents.on(EVENTS.CONTENTS.SELECTED, (e) => this.triggerSelectedEvent(e, contents));\n\t}\n\n\t/**\n\t * Emit events passed by a view\n\t * @private\n\t * @param {event} e\n\t */\n\ttriggerViewEvent(e, contents){\n\t\tthis.emit(e.type, e, contents);\n\t}\n\n\t/**\n\t * Emit a selection event's CFI Range passed from a a view\n\t * @private\n\t * @param {string} cfirange\n\t */\n\ttriggerSelectedEvent(cfirange, contents){\n\t\t/**\n\t\t * Emit that a text selection has occurred\n\t\t * @event selected\n\t\t * @param {string} cfirange\n\t\t * @param {Contents} contents\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.emit(EVENTS.RENDITION.SELECTED, cfirange, contents);\n\t}\n\n\t/**\n\t * Emit a markClicked event with the cfiRange and data from a mark\n\t * @private\n\t * @param {EpubCFI} cfirange\n\t */\n\ttriggerMarkEvent(cfiRange, data, contents){\n\t\t/**\n\t\t * Emit that a mark was clicked\n\t\t * @event markClicked\n\t\t * @param {EpubCFI} cfirange\n\t\t * @param {object} data\n\t\t * @param {Contents} contents\n\t\t * @memberof Rendition\n\t\t */\n\t\tthis.emit(EVENTS.RENDITION.MARK_CLICKED, cfiRange, data, contents);\n\t}\n\n\t/**\n\t * Get a Range from a Visible CFI\n\t * @param {string} cfi EpubCfi String\n\t * @param {string} ignoreClass\n\t * @return {range}\n\t */\n\tgetRange(cfi, ignoreClass){\n\t\tvar _cfi = new EpubCFI(cfi);\n\t\tvar found = this.manager.visible().filter(function (view) {\n\t\t\tif(_cfi.spinePos === view.index) return true;\n\t\t});\n\n\t\t// Should only every return 1 item\n\t\tif (found.length) {\n\t\t\treturn found[0].contents.range(_cfi, ignoreClass);\n\t\t}\n\t}\n\n\t/**\n\t * Hook to adjust images to fit in columns\n\t * @param {Contents} contents\n\t * @private\n\t */\n\tadjustImages(contents) {\n\n\t\tif (this._layout.name === \"pre-paginated\") {\n\t\t\treturn new Promise(function(resolve){\n\t\t\t\tresolve();\n\t\t\t});\n\t\t}\n\n\t\tlet computed = contents.window.getComputedStyle(contents.content, null);\n\t\tlet height = (contents.content.offsetHeight - (parseFloat(computed.paddingTop) + parseFloat(computed.paddingBottom))) * .95;\n\t\tlet horizontalPadding = parseFloat(computed.paddingLeft) + parseFloat(computed.paddingRight);\n\n\t\tcontents.addStylesheetRules({\n\t\t\t\"img\" : {\n\t\t\t\t\"max-width\": (this._layout.columnWidth ? (this._layout.columnWidth - horizontalPadding) + \"px\" : \"100%\") + \"!important\",\n\t\t\t\t\"max-height\": height + \"px\" + \"!important\",\n\t\t\t\t\"object-fit\": \"contain\",\n\t\t\t\t\"page-break-inside\": \"avoid\",\n\t\t\t\t\"break-inside\": \"avoid\",\n\t\t\t\t\"box-sizing\": \"border-box\"\n\t\t\t},\n\t\t\t\"svg\" : {\n\t\t\t\t\"max-width\": (this._layout.columnWidth ? (this._layout.columnWidth - horizontalPadding) + \"px\" : \"100%\") + \"!important\",\n\t\t\t\t\"max-height\": height + \"px\" + \"!important\",\n\t\t\t\t\"page-break-inside\": \"avoid\",\n\t\t\t\t\"break-inside\": \"avoid\"\n\t\t\t}\n\t\t});\n\n\t\treturn new Promise(function(resolve, reject){\n\t\t\t// Wait to apply\n\t\t\tsetTimeout(function() {\n\t\t\t\tresolve();\n\t\t\t}, 1);\n\t\t});\n\t}\n\n\t/**\n\t * Get the Contents object of each rendered view\n\t * @returns {Contents[]}\n\t */\n\tgetContents () {\n\t\treturn this.manager ? this.manager.getContents() : [];\n\t}\n\n\t/**\n\t * Get the views member from the manager\n\t * @returns {Views}\n\t */\n\tviews () {\n\t\tlet views = this.manager ? this.manager.views : undefined;\n\t\treturn views || [];\n\t}\n\n\t/**\n\t * Hook to handle link clicks in rendered content\n\t * @param {Contents} contents\n\t * @private\n\t */\n\thandleLinks(contents) {\n\t\tif (contents) {\n\t\t\tcontents.on(EVENTS.CONTENTS.LINK_CLICKED, (href) => {\n\t\t\t\tlet relative = this.book.path.relative(href);\n\t\t\t\tthis.display(relative);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Hook to handle injecting stylesheet before\n\t * a Section is serialized\n\t * @param {document} doc\n\t * @param {Section} section\n\t * @private\n\t */\n\tinjectStylesheet(doc, section) {\n\t\tlet style = doc.createElement(\"link\");\n\t\tstyle.setAttribute(\"type\", \"text/css\");\n\t\tstyle.setAttribute(\"rel\", \"stylesheet\");\n\t\tstyle.setAttribute(\"href\", this.settings.stylesheet);\n\t\tdoc.getElementsByTagName(\"head\")[0].appendChild(style);\n\t}\n\n\t/**\n\t * Hook to handle injecting scripts before\n\t * a Section is serialized\n\t * @param {document} doc\n\t * @param {Section} section\n\t * @private\n\t */\n\tinjectScript(doc, section) {\n\t\tlet script = doc.createElement(\"script\");\n\t\tscript.setAttribute(\"type\", \"text/javascript\");\n\t\tscript.setAttribute(\"src\", this.settings.script);\n\t\tscript.textContent = \" \"; // Needed to prevent self closing tag\n\t\tdoc.getElementsByTagName(\"head\")[0].appendChild(script);\n\t}\n\n\t/**\n\t * Hook to handle the document identifier before\n\t * a Section is serialized\n\t * @param {document} doc\n\t * @param {Section} section\n\t * @private\n\t */\n\tinjectIdentifier(doc, section) {\n\t\tlet ident = this.book.packaging.metadata.identifier;\n\t\tlet meta = doc.createElement(\"meta\");\n\t\tmeta.setAttribute(\"name\", \"dc.relation.ispartof\");\n\t\tif (ident) {\n\t\t\tmeta.setAttribute(\"content\", ident);\n\t\t}\n\t\tdoc.getElementsByTagName(\"head\")[0].appendChild(meta);\n\t}\n\n}\n\n//-- Enable binding events to Renderer\nEventEmitter(Rendition.prototype);\n\nexport default Rendition;\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var isCallable = require('../internals/is-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && Object(it) instanceof $Symbol;\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(iteratorMethod.call(argument));\n throw TypeError(String(argument) + ' is not iterable');\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","\"use strict\";\n\nvar _undefined = require(\"../function/noop\")(); // Support ES3 engines\n\nmodule.exports = function (val) {\n return (val !== _undefined) && (val !== null);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\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","import EventEmitter from \"event-emitter\";\nimport {extend, borders, uuid, isNumber, bounds, defer, createBlobUrl, revokeBlobUrl} from \"../../utils/core\";\nimport EpubCFI from \"../../epubcfi\";\nimport Contents from \"../../contents\";\nimport { EVENTS } from \"../../utils/constants\";\nimport { Pane, Highlight, Underline } from \"marks-pane\";\n\nclass IframeView {\n\tconstructor(section, options) {\n\t\tthis.settings = extend({\n\t\t\tignoreClass : \"\",\n\t\t\taxis: undefined, //options.layout && options.layout.props.flow === \"scrolled\" ? \"vertical\" : \"horizontal\",\n\t\t\tdirection: undefined,\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tlayout: undefined,\n\t\t\tglobalLayoutProperties: {},\n\t\t\tmethod: undefined,\n\t\t\tforceRight: false,\n\t\t\tallowScriptedContent: false,\n\t\t\tallowPopups: false\n\t\t}, options || {});\n\n\t\tthis.id = \"epubjs-view-\" + uuid();\n\t\tthis.section = section;\n\t\tthis.index = section.index;\n\n\t\tthis.element = this.container(this.settings.axis);\n\n\t\tthis.added = false;\n\t\tthis.displayed = false;\n\t\tthis.rendered = false;\n\n\t\t// this.width = this.settings.width;\n\t\t// this.height = this.settings.height;\n\n\t\tthis.fixedWidth = 0;\n\t\tthis.fixedHeight = 0;\n\n\t\t// Blank Cfi for Parsing\n\t\tthis.epubcfi = new EpubCFI();\n\n\t\tthis.layout = this.settings.layout;\n\t\t// Dom events to listen for\n\t\t// this.listenedEvents = [\"keydown\", \"keyup\", \"keypressed\", \"mouseup\", \"mousedown\", \"click\", \"touchend\", \"touchstart\"];\n\n\t\tthis.pane = undefined;\n\t\tthis.highlights = {};\n\t\tthis.underlines = {};\n\t\tthis.marks = {};\n\n\t}\n\n\tcontainer(axis) {\n\t\tvar element = document.createElement(\"div\");\n\n\t\telement.classList.add(\"epub-view\");\n\n\t\t// this.element.style.minHeight = \"100px\";\n\t\telement.style.height = \"0px\";\n\t\telement.style.width = \"0px\";\n\t\telement.style.overflow = \"hidden\";\n\t\telement.style.position = \"relative\";\n\t\telement.style.display = \"block\";\n\n\t\tif(axis && axis == \"horizontal\"){\n\t\t\telement.style.flex = \"none\";\n\t\t} else {\n\t\t\telement.style.flex = \"initial\";\n\t\t}\n\n\t\treturn element;\n\t}\n\n\tcreate() {\n\n\t\tif(this.iframe) {\n\t\t\treturn this.iframe;\n\t\t}\n\n\t\tif(!this.element) {\n\t\t\tthis.element = this.createContainer();\n\t\t}\n\n\t\tthis.iframe = document.createElement(\"iframe\");\n\t\tthis.iframe.id = this.id;\n\t\tthis.iframe.scrolling = \"no\"; // Might need to be removed: breaks ios width calculations\n\t\tthis.iframe.style.overflow = \"hidden\";\n\t\tthis.iframe.seamless = \"seamless\";\n\t\t// Back up if seamless isn't supported\n\t\tthis.iframe.style.border = \"none\";\n\n\t\t// sandbox\n\t\tthis.iframe.sandbox = \"allow-same-origin\";\n\t\tif (this.settings.allowScriptedContent) {\n\t\t\tthis.iframe.sandbox += \" allow-scripts\";\n\t\t}\n\t\tif (this.settings.allowPopups) {\n\t\t\tthis.iframe.sandbox += \" allow-popups\";\n\t\t}\n\t\t\n\t\tthis.iframe.setAttribute(\"enable-annotation\", \"true\");\n\n\t\tthis.resizing = true;\n\n\t\t// this.iframe.style.display = \"none\";\n\t\tthis.element.style.visibility = \"hidden\";\n\t\tthis.iframe.style.visibility = \"hidden\";\n\n\t\tthis.iframe.style.width = \"0\";\n\t\tthis.iframe.style.height = \"0\";\n\t\tthis._width = 0;\n\t\tthis._height = 0;\n\n\t\tthis.element.setAttribute(\"ref\", this.index);\n\n\t\tthis.added = true;\n\n\t\tthis.elementBounds = bounds(this.element);\n\n\t\t// if(width || height){\n\t\t// this.resize(width, height);\n\t\t// } else if(this.width && this.height){\n\t\t// this.resize(this.width, this.height);\n\t\t// } else {\n\t\t// this.iframeBounds = bounds(this.iframe);\n\t\t// }\n\n\n\t\tif((\"srcdoc\" in this.iframe)) {\n\t\t\tthis.supportsSrcdoc = true;\n\t\t} else {\n\t\t\tthis.supportsSrcdoc = false;\n\t\t}\n\n\t\tif (!this.settings.method) {\n\t\t\tthis.settings.method = this.supportsSrcdoc ? \"srcdoc\" : \"write\";\n\t\t}\n\n\t\treturn this.iframe;\n\t}\n\n\trender(request, show) {\n\n\t\t// view.onLayout = this.layout.format.bind(this.layout);\n\t\tthis.create();\n\n\t\t// Fit to size of the container, apply padding\n\t\tthis.size();\n\n\t\tif(!this.sectionRender) {\n\t\t\tthis.sectionRender = this.section.render(request);\n\t\t}\n\n\t\t// Render Chain\n\t\treturn this.sectionRender\n\t\t\t.then(function(contents){\n\t\t\t\treturn this.load(contents);\n\t\t\t}.bind(this))\n\t\t\t.then(function(){\n\n\t\t\t\t// find and report the writingMode axis\n\t\t\t\tlet writingMode = this.contents.writingMode();\n\n\t\t\t\t// Set the axis based on the flow and writing mode\n\t\t\t\tlet axis;\n\t\t\t\tif (this.settings.flow === \"scrolled\") {\n\t\t\t\t\taxis = (writingMode.indexOf(\"vertical\") === 0) ? \"horizontal\" : \"vertical\";\n\t\t\t\t} else {\n\t\t\t\t\taxis = (writingMode.indexOf(\"vertical\") === 0) ? \"vertical\" : \"horizontal\";\n\t\t\t\t}\n\n\t\t\t\tif (writingMode.indexOf(\"vertical\") === 0 && this.settings.flow === \"paginated\") {\n\t\t\t\t\tthis.layout.delta = this.layout.height;\n\t\t\t\t}\n\n\t\t\t\tthis.setAxis(axis);\n\t\t\t\tthis.emit(EVENTS.VIEWS.AXIS, axis);\n\n\t\t\t\tthis.setWritingMode(writingMode);\n\t\t\t\tthis.emit(EVENTS.VIEWS.WRITING_MODE, writingMode);\n\n\n\t\t\t\t// apply the layout function to the contents\n\t\t\t\tthis.layout.format(this.contents, this.section, this.axis);\n\n\t\t\t\t// Listen for events that require an expansion of the iframe\n\t\t\t\tthis.addListeners();\n\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t// Expand the iframe to the full size of the content\n\t\t\t\t\tthis.expand();\n\n\t\t\t\t\tif (this.settings.forceRight) {\n\t\t\t\t\t\tthis.element.style.marginLeft = this.width() + \"px\";\n\t\t\t\t\t}\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\n\t\t\t}.bind(this), function(e){\n\t\t\t\tthis.emit(EVENTS.VIEWS.LOAD_ERROR, e);\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\treject(e);\n\t\t\t\t});\n\t\t\t}.bind(this))\n\t\t\t.then(function() {\n\t\t\t\tthis.emit(EVENTS.VIEWS.RENDERED, this.section);\n\t\t\t}.bind(this));\n\n\t}\n\n\treset () {\n\t\tif (this.iframe) {\n\t\t\tthis.iframe.style.width = \"0\";\n\t\t\tthis.iframe.style.height = \"0\";\n\t\t\tthis._width = 0;\n\t\t\tthis._height = 0;\n\t\t\tthis._textWidth = undefined;\n\t\t\tthis._contentWidth = undefined;\n\t\t\tthis._textHeight = undefined;\n\t\t\tthis._contentHeight = undefined;\n\t\t}\n\t\tthis._needsReframe = true;\n\t}\n\n\t// Determine locks base on settings\n\tsize(_width, _height) {\n\t\tvar width = _width || this.settings.width;\n\t\tvar height = _height || this.settings.height;\n\n\t\tif(this.layout.name === \"pre-paginated\") {\n\t\t\tthis.lock(\"both\", width, height);\n\t\t} else if(this.settings.axis === \"horizontal\") {\n\t\t\tthis.lock(\"height\", width, height);\n\t\t} else {\n\t\t\tthis.lock(\"width\", width, height);\n\t\t}\n\n\t\tthis.settings.width = width;\n\t\tthis.settings.height = height;\n\t}\n\n\t// Lock an axis to element dimensions, taking borders into account\n\tlock(what, width, height) {\n\t\tvar elBorders = borders(this.element);\n\t\tvar iframeBorders;\n\n\t\tif(this.iframe) {\n\t\t\tiframeBorders = borders(this.iframe);\n\t\t} else {\n\t\t\tiframeBorders = {width: 0, height: 0};\n\t\t}\n\n\t\tif(what == \"width\" && isNumber(width)){\n\t\t\tthis.lockedWidth = width - elBorders.width - iframeBorders.width;\n\t\t\t// this.resize(this.lockedWidth, width); // width keeps ratio correct\n\t\t}\n\n\t\tif(what == \"height\" && isNumber(height)){\n\t\t\tthis.lockedHeight = height - elBorders.height - iframeBorders.height;\n\t\t\t// this.resize(width, this.lockedHeight);\n\t\t}\n\n\t\tif(what === \"both\" &&\n\t\t\t isNumber(width) &&\n\t\t\t isNumber(height)){\n\n\t\t\tthis.lockedWidth = width - elBorders.width - iframeBorders.width;\n\t\t\tthis.lockedHeight = height - elBorders.height - iframeBorders.height;\n\t\t\t// this.resize(this.lockedWidth, this.lockedHeight);\n\t\t}\n\n\t\tif(this.displayed && this.iframe) {\n\n\t\t\t// this.contents.layout();\n\t\t\tthis.expand();\n\t\t}\n\n\n\n\t}\n\n\t// Resize a single axis based on content dimensions\n\texpand(force) {\n\t\tvar width = this.lockedWidth;\n\t\tvar height = this.lockedHeight;\n\t\tvar columns;\n\n\t\tvar textWidth, textHeight;\n\n\t\tif(!this.iframe || this._expanding) return;\n\n\t\tthis._expanding = true;\n\n\t\tif(this.layout.name === \"pre-paginated\") {\n\t\t\twidth = this.layout.columnWidth;\n\t\t\theight = this.layout.height;\n\t\t}\n\t\t// Expand Horizontally\n\t\telse if(this.settings.axis === \"horizontal\") {\n\t\t\t// Get the width of the text\n\t\t\twidth = this.contents.textWidth();\n\n\t\t\tif (width % this.layout.pageWidth > 0) {\n\t\t\t\twidth = Math.ceil(width / this.layout.pageWidth) * this.layout.pageWidth;\n\t\t\t}\n\n\t\t\tif (this.settings.forceEvenPages) {\n\t\t\t\tcolumns = (width / this.layout.pageWidth);\n\t\t\t\tif ( this.layout.divisor > 1 &&\n\t\t\t\t\t\t this.layout.name === \"reflowable\" &&\n\t\t\t\t\t\t(columns % 2 > 0)) {\n\t\t\t\t\t// add a blank page\n\t\t\t\t\twidth += this.layout.pageWidth;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} // Expand Vertically\n\t\telse if(this.settings.axis === \"vertical\") {\n\t\t\theight = this.contents.textHeight();\n\t\t\tif (this.settings.flow === \"paginated\" &&\n\t\t\t\theight % this.layout.height > 0) {\n\t\t\t\theight = Math.ceil(height / this.layout.height) * this.layout.height;\n\t\t\t}\n\t\t}\n\n\t\t// Only Resize if dimensions have changed or\n\t\t// if Frame is still hidden, so needs reframing\n\t\tif(this._needsReframe || width != this._width || height != this._height){\n\t\t\tthis.reframe(width, height);\n\t\t}\n\n\t\tthis._expanding = false;\n\t}\n\n\treframe(width, height) {\n\t\tvar size;\n\n\t\tif(isNumber(width)){\n\t\t\tthis.element.style.width = width + \"px\";\n\t\t\tthis.iframe.style.width = width + \"px\";\n\t\t\tthis._width = width;\n\t\t}\n\n\t\tif(isNumber(height)){\n\t\t\tthis.element.style.height = height + \"px\";\n\t\t\tthis.iframe.style.height = height + \"px\";\n\t\t\tthis._height = height;\n\t\t}\n\n\t\tlet widthDelta = this.prevBounds ? width - this.prevBounds.width : width;\n\t\tlet heightDelta = this.prevBounds ? height - this.prevBounds.height : height;\n\n\t\tsize = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthDelta: widthDelta,\n\t\t\theightDelta: heightDelta,\n\t\t};\n\n\t\tthis.pane && this.pane.render();\n\n\t\trequestAnimationFrame(() => {\n\t\t\tlet mark;\n\t\t\tfor (let m in this.marks) {\n\t\t\t\tif (this.marks.hasOwnProperty(m)) {\n\t\t\t\t\tmark = this.marks[m];\n\t\t\t\t\tthis.placeMark(mark.element, mark.range);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.onResize(this, size);\n\n\t\tthis.emit(EVENTS.VIEWS.RESIZED, size);\n\n\t\tthis.prevBounds = size;\n\n\t\tthis.elementBounds = bounds(this.element);\n\n\t}\n\n\n\tload(contents) {\n\t\tvar loading = new defer();\n\t\tvar loaded = loading.promise;\n\n\t\tif(!this.iframe) {\n\t\t\tloading.reject(new Error(\"No Iframe Available\"));\n\t\t\treturn loaded;\n\t\t}\n\n\t\tthis.iframe.onload = function(event) {\n\n\t\t\tthis.onLoad(event, loading);\n\n\t\t}.bind(this);\n\n\t\tif (this.settings.method === \"blobUrl\") {\n\t\t\tthis.blobUrl = createBlobUrl(contents, \"application/xhtml+xml\");\n\t\t\tthis.iframe.src = this.blobUrl;\n\t\t\tthis.element.appendChild(this.iframe);\n\t\t} else if(this.settings.method === \"srcdoc\"){\n\t\t\tthis.iframe.srcdoc = contents;\n\t\t\tthis.element.appendChild(this.iframe);\n\t\t} else {\n\n\t\t\tthis.element.appendChild(this.iframe);\n\n\t\t\tthis.document = this.iframe.contentDocument;\n\n\t\t\tif(!this.document) {\n\t\t\t\tloading.reject(new Error(\"No Document Available\"));\n\t\t\t\treturn loaded;\n\t\t\t}\n\n\t\t\tthis.iframe.contentDocument.open();\n\t\t\t// For Cordova windows platform\n\t\t\tif(window.MSApp && MSApp.execUnsafeLocalFunction) {\n\t\t\t\tvar outerThis = this;\n\t\t\t\tMSApp.execUnsafeLocalFunction(function () {\n\t\t\t\t\touterThis.iframe.contentDocument.write(contents);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.iframe.contentDocument.write(contents);\n\t\t\t}\n\t\t\tthis.iframe.contentDocument.close();\n\n\t\t}\n\n\t\treturn loaded;\n\t}\n\n\tonLoad(event, promise) {\n\n\t\tthis.window = this.iframe.contentWindow;\n\t\tthis.document = this.iframe.contentDocument;\n\n\t\tthis.contents = new Contents(this.document, this.document.body, this.section.cfiBase, this.section.index);\n\n\t\tthis.rendering = false;\n\n\t\tvar link = this.document.querySelector(\"link[rel='canonical']\");\n\t\tif (link) {\n\t\t\tlink.setAttribute(\"href\", this.section.canonical);\n\t\t} else {\n\t\t\tlink = this.document.createElement(\"link\");\n\t\t\tlink.setAttribute(\"rel\", \"canonical\");\n\t\t\tlink.setAttribute(\"href\", this.section.canonical);\n\t\t\tthis.document.querySelector(\"head\").appendChild(link);\n\t\t}\n\n\t\tthis.contents.on(EVENTS.CONTENTS.EXPAND, () => {\n\t\t\tif(this.displayed && this.iframe) {\n\t\t\t\tthis.expand();\n\t\t\t\tif (this.contents) {\n\t\t\t\t\tthis.layout.format(this.contents);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.contents.on(EVENTS.CONTENTS.RESIZE, (e) => {\n\t\t\tif(this.displayed && this.iframe) {\n\t\t\t\tthis.expand();\n\t\t\t\tif (this.contents) {\n\t\t\t\t\tthis.layout.format(this.contents);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tpromise.resolve(this.contents);\n\t}\n\n\tsetLayout(layout) {\n\t\tthis.layout = layout;\n\n\t\tif (this.contents) {\n\t\t\tthis.layout.format(this.contents);\n\t\t\tthis.expand();\n\t\t}\n\t}\n\n\tsetAxis(axis) {\n\n\t\tthis.settings.axis = axis;\n\n\t\tif(axis == \"horizontal\"){\n\t\t\tthis.element.style.flex = \"none\";\n\t\t} else {\n\t\t\tthis.element.style.flex = \"initial\";\n\t\t}\n\n\t\tthis.size();\n\n\t}\n\n\tsetWritingMode(mode) {\n\t\t// this.element.style.writingMode = writingMode;\n\t\tthis.writingMode = mode;\n\t}\n\n\taddListeners() {\n\t\t//TODO: Add content listeners for expanding\n\t}\n\n\tremoveListeners(layoutFunc) {\n\t\t//TODO: remove content listeners for expanding\n\t}\n\n\tdisplay(request) {\n\t\tvar displayed = new defer();\n\n\t\tif (!this.displayed) {\n\n\t\t\tthis.render(request)\n\t\t\t\t.then(function () {\n\n\t\t\t\t\tthis.emit(EVENTS.VIEWS.DISPLAYED, this);\n\t\t\t\t\tthis.onDisplayed(this);\n\n\t\t\t\t\tthis.displayed = true;\n\t\t\t\t\tdisplayed.resolve(this);\n\n\t\t\t\t}.bind(this), function (err) {\n\t\t\t\t\tdisplayed.reject(err, this);\n\t\t\t\t});\n\n\t\t} else {\n\t\t\tdisplayed.resolve(this);\n\t\t}\n\n\n\t\treturn displayed.promise;\n\t}\n\n\tshow() {\n\n\t\tthis.element.style.visibility = \"visible\";\n\n\t\tif(this.iframe){\n\t\t\tthis.iframe.style.visibility = \"visible\";\n\n\t\t\t// Remind Safari to redraw the iframe\n\t\t\tthis.iframe.style.transform = \"translateZ(0)\";\n\t\t\tthis.iframe.offsetWidth;\n\t\t\tthis.iframe.style.transform = null;\n\t\t}\n\n\t\tthis.emit(EVENTS.VIEWS.SHOWN, this);\n\t}\n\n\thide() {\n\t\t// this.iframe.style.display = \"none\";\n\t\tthis.element.style.visibility = \"hidden\";\n\t\tthis.iframe.style.visibility = \"hidden\";\n\n\t\tthis.stopExpanding = true;\n\t\tthis.emit(EVENTS.VIEWS.HIDDEN, this);\n\t}\n\n\toffset() {\n\t\treturn {\n\t\t\ttop: this.element.offsetTop,\n\t\t\tleft: this.element.offsetLeft\n\t\t}\n\t}\n\n\twidth() {\n\t\treturn this._width;\n\t}\n\n\theight() {\n\t\treturn this._height;\n\t}\n\n\tposition() {\n\t\treturn this.element.getBoundingClientRect();\n\t}\n\n\tlocationOf(target) {\n\t\tvar parentPos = this.iframe.getBoundingClientRect();\n\t\tvar targetPos = this.contents.locationOf(target, this.settings.ignoreClass);\n\n\t\treturn {\n\t\t\t\"left\": targetPos.left,\n\t\t\t\"top\": targetPos.top\n\t\t};\n\t}\n\n\tonDisplayed(view) {\n\t\t// Stub, override with a custom functions\n\t}\n\n\tonResize(view, e) {\n\t\t// Stub, override with a custom functions\n\t}\n\n\tbounds(force) {\n\t\tif(force || !this.elementBounds) {\n\t\t\tthis.elementBounds = bounds(this.element);\n\t\t}\n\n\t\treturn this.elementBounds;\n\t}\n\n\thighlight(cfiRange, data={}, cb, className = \"epubjs-hl\", styles = {}) {\n\t\tif (!this.contents) {\n\t\t\treturn;\n\t\t}\n\t\tconst attributes = Object.assign({\"fill\": \"yellow\", \"fill-opacity\": \"0.3\", \"mix-blend-mode\": \"multiply\"}, styles);\n\t\tlet range = this.contents.range(cfiRange);\n\n\t\tlet emitter = () => {\n\t\t\tthis.emit(EVENTS.VIEWS.MARK_CLICKED, cfiRange, data);\n\t\t};\n\n\t\tdata[\"epubcfi\"] = cfiRange;\n\n\t\tif (!this.pane) {\n\t\t\tthis.pane = new Pane(this.iframe, this.element);\n\t\t}\n\n\t\tlet m = new Highlight(range, className, data, attributes);\n\t\tlet h = this.pane.addMark(m);\n\n\t\tthis.highlights[cfiRange] = { \"mark\": h, \"element\": h.element, \"listeners\": [emitter, cb] };\n\n\t\th.element.setAttribute(\"ref\", className);\n\t\th.element.addEventListener(\"click\", emitter);\n\t\th.element.addEventListener(\"touchstart\", emitter);\n\n\t\tif (cb) {\n\t\t\th.element.addEventListener(\"click\", cb);\n\t\t\th.element.addEventListener(\"touchstart\", cb);\n\t\t}\n\t\treturn h;\n\t}\n\n\tunderline(cfiRange, data={}, cb, className = \"epubjs-ul\", styles = {}) {\n\t\tif (!this.contents) {\n\t\t\treturn;\n\t\t}\n\t\tconst attributes = Object.assign({\"stroke\": \"black\", \"stroke-opacity\": \"0.3\", \"mix-blend-mode\": \"multiply\"}, styles);\n\t\tlet range = this.contents.range(cfiRange);\n\t\tlet emitter = () => {\n\t\t\tthis.emit(EVENTS.VIEWS.MARK_CLICKED, cfiRange, data);\n\t\t};\n\n\t\tdata[\"epubcfi\"] = cfiRange;\n\n\t\tif (!this.pane) {\n\t\t\tthis.pane = new Pane(this.iframe, this.element);\n\t\t}\n\n\t\tlet m = new Underline(range, className, data, attributes);\n\t\tlet h = this.pane.addMark(m);\n\n\t\tthis.underlines[cfiRange] = { \"mark\": h, \"element\": h.element, \"listeners\": [emitter, cb] };\n\n\t\th.element.setAttribute(\"ref\", className);\n\t\th.element.addEventListener(\"click\", emitter);\n\t\th.element.addEventListener(\"touchstart\", emitter);\n\n\t\tif (cb) {\n\t\t\th.element.addEventListener(\"click\", cb);\n\t\t\th.element.addEventListener(\"touchstart\", cb);\n\t\t}\n\t\treturn h;\n\t}\n\n\tmark(cfiRange, data={}, cb) {\n\t\tif (!this.contents) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (cfiRange in this.marks) {\n\t\t\tlet item = this.marks[cfiRange];\n\t\t\treturn item;\n\t\t}\n\n\t\tlet range = this.contents.range(cfiRange);\n\t\tif (!range) {\n\t\t\treturn;\n\t\t}\n\t\tlet container = range.commonAncestorContainer;\n\t\tlet parent = (container.nodeType === 1) ? container : container.parentNode;\n\n\t\tlet emitter = (e) => {\n\t\t\tthis.emit(EVENTS.VIEWS.MARK_CLICKED, cfiRange, data);\n\t\t};\n\n\t\tif (range.collapsed && container.nodeType === 1) {\n\t\t\trange = new Range();\n\t\t\trange.selectNodeContents(container);\n\t\t} else if (range.collapsed) { // Webkit doesn't like collapsed ranges\n\t\t\trange = new Range();\n\t\t\trange.selectNodeContents(parent);\n\t\t}\n\n\t\tlet mark = this.document.createElement(\"a\");\n\t\tmark.setAttribute(\"ref\", \"epubjs-mk\");\n\t\tmark.style.position = \"absolute\";\n\n\t\tmark.dataset[\"epubcfi\"] = cfiRange;\n\n\t\tif (data) {\n\t\t\tObject.keys(data).forEach((key) => {\n\t\t\t\tmark.dataset[key] = data[key];\n\t\t\t});\n\t\t}\n\n\t\tif (cb) {\n\t\t\tmark.addEventListener(\"click\", cb);\n\t\t\tmark.addEventListener(\"touchstart\", cb);\n\t\t}\n\n\t\tmark.addEventListener(\"click\", emitter);\n\t\tmark.addEventListener(\"touchstart\", emitter);\n\n\t\tthis.placeMark(mark, range);\n\n\t\tthis.element.appendChild(mark);\n\n\t\tthis.marks[cfiRange] = { \"element\": mark, \"range\": range, \"listeners\": [emitter, cb] };\n\n\t\treturn parent;\n\t}\n\n\tplaceMark(element, range) {\n\t\tlet top, right, left;\n\n\t\tif(this.layout.name === \"pre-paginated\" ||\n\t\t\tthis.settings.axis !== \"horizontal\") {\n\t\t\tlet pos = range.getBoundingClientRect();\n\t\t\ttop = pos.top;\n\t\t\tright = pos.right;\n\t\t} else {\n\t\t\t// Element might break columns, so find the left most element\n\t\t\tlet rects = range.getClientRects();\n\n\t\t\tlet rect;\n\t\t\tfor (var i = 0; i != rects.length; i++) {\n\t\t\t\trect = rects[i];\n\t\t\t\tif (!left || rect.left < left) {\n\t\t\t\t\tleft = rect.left;\n\t\t\t\t\t// right = rect.right;\n\t\t\t\t\tright = Math.ceil(left / this.layout.props.pageWidth) * this.layout.props.pageWidth - (this.layout.gap / 2);\n\t\t\t\t\ttop = rect.top;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\telement.style.top = `${top}px`;\n\t\telement.style.left = `${right}px`;\n\t}\n\n\tunhighlight(cfiRange) {\n\t\tlet item;\n\t\tif (cfiRange in this.highlights) {\n\t\t\titem = this.highlights[cfiRange];\n\n\t\t\tthis.pane.removeMark(item.mark);\n\t\t\titem.listeners.forEach((l) => {\n\t\t\t\tif (l) {\n\t\t\t\t\titem.element.removeEventListener(\"click\", l);\n\t\t\t\t\titem.element.removeEventListener(\"touchstart\", l);\n\t\t\t\t};\n\t\t\t});\n\t\t\tdelete this.highlights[cfiRange];\n\t\t}\n\t}\n\n\tununderline(cfiRange) {\n\t\tlet item;\n\t\tif (cfiRange in this.underlines) {\n\t\t\titem = this.underlines[cfiRange];\n\t\t\tthis.pane.removeMark(item.mark);\n\t\t\titem.listeners.forEach((l) => {\n\t\t\t\tif (l) {\n\t\t\t\t\titem.element.removeEventListener(\"click\", l);\n\t\t\t\t\titem.element.removeEventListener(\"touchstart\", l);\n\t\t\t\t};\n\t\t\t});\n\t\t\tdelete this.underlines[cfiRange];\n\t\t}\n\t}\n\n\tunmark(cfiRange) {\n\t\tlet item;\n\t\tif (cfiRange in this.marks) {\n\t\t\titem = this.marks[cfiRange];\n\t\t\tthis.element.removeChild(item.element);\n\t\t\titem.listeners.forEach((l) => {\n\t\t\t\tif (l) {\n\t\t\t\t\titem.element.removeEventListener(\"click\", l);\n\t\t\t\t\titem.element.removeEventListener(\"touchstart\", l);\n\t\t\t\t};\n\t\t\t});\n\t\t\tdelete this.marks[cfiRange];\n\t\t}\n\t}\n\n\tdestroy() {\n\n\t\tfor (let cfiRange in this.highlights) {\n\t\t\tthis.unhighlight(cfiRange);\n\t\t}\n\n\t\tfor (let cfiRange in this.underlines) {\n\t\t\tthis.ununderline(cfiRange);\n\t\t}\n\n\t\tfor (let cfiRange in this.marks) {\n\t\t\tthis.unmark(cfiRange);\n\t\t}\n\n\t\tif (this.blobUrl) {\n\t\t\trevokeBlobUrl(this.blobUrl);\n\t\t}\n\n\t\tif(this.displayed){\n\t\t\tthis.displayed = false;\n\n\t\t\tthis.removeListeners();\n\t\t\tthis.contents.destroy();\n\n\t\t\tthis.stopExpanding = true;\n\t\t\tthis.element.removeChild(this.iframe);\n\n\t\t\tif (this.pane) {\n\t\t\t\tthis.pane.element.remove();\n\t\t\t\tthis.pane = undefined;\n\t\t\t}\n\n\t\t\tthis.iframe = undefined;\n\t\t\tthis.contents = undefined;\n\n\t\t\tthis._textWidth = null;\n\t\t\tthis._textHeight = null;\n\t\t\tthis._width = null;\n\t\t\tthis._height = null;\n\t\t}\n\n\t\t// this.element.style.height = \"0px\";\n\t\t// this.element.style.width = \"0px\";\n\t}\n}\n\nEventEmitter(IframeView.prototype);\n\nexport default IframeView;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * 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 debounced 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 `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","import {extend, defer, requestAnimationFrame, prefixed} from \"../../utils/core\";\nimport { EVENTS, DOM_EVENTS } from \"../../utils/constants\";\nimport EventEmitter from \"event-emitter\";\n\n// easing equations from https://github.com/danro/easing-js/blob/master/easing.js\nconst PI_D2 = (Math.PI / 2);\nconst EASING_EQUATIONS = {\n\t\teaseOutSine: function (pos) {\n\t\t\t\treturn Math.sin(pos * PI_D2);\n\t\t},\n\t\teaseInOutSine: function (pos) {\n\t\t\t\treturn (-0.5 * (Math.cos(Math.PI * pos) - 1));\n\t\t},\n\t\teaseInOutQuint: function (pos) {\n\t\t\t\tif ((pos /= 0.5) < 1) {\n\t\t\t\t\t\treturn 0.5 * Math.pow(pos, 5);\n\t\t\t\t}\n\t\t\t\treturn 0.5 * (Math.pow((pos - 2), 5) + 2);\n\t\t},\n\t\teaseInCubic: function(pos) {\n\t\t\treturn Math.pow(pos, 3);\n \t}\n};\n\nclass Snap {\n\tconstructor(manager, options) {\n\n\t\tthis.settings = extend({\n\t\t\tduration: 80,\n\t\t\tminVelocity: 0.2,\n\t\t\tminDistance: 10,\n\t\t\teasing: EASING_EQUATIONS['easeInCubic']\n\t\t}, options || {});\n\n\t\tthis.supportsTouch = this.supportsTouch();\n\n\t\tif (this.supportsTouch) {\n\t\t\tthis.setup(manager);\n\t\t}\n\t}\n\n\tsetup(manager) {\n\t\tthis.manager = manager;\n\n\t\tthis.layout = this.manager.layout;\n\n\t\tthis.fullsize = this.manager.settings.fullsize;\n\t\tif (this.fullsize) {\n\t\t\tthis.element = this.manager.stage.element;\n\t\t\tthis.scroller = window;\n\t\t\tthis.disableScroll();\n\t\t} else {\n\t\t\tthis.element = this.manager.stage.container;\n\t\t\tthis.scroller = this.element;\n\t\t\tthis.element.style[\"WebkitOverflowScrolling\"] = \"touch\";\n\t\t}\n\n\t\t// this.overflow = this.manager.overflow;\n\n\t\t// set lookahead offset to page width\n\t\tthis.manager.settings.offset = this.layout.width;\n\t\tthis.manager.settings.afterScrolledTimeout = this.settings.duration * 2;\n\n\t\tthis.isVertical = this.manager.settings.axis === \"vertical\";\n\n\t\t// disable snapping if not paginated or axis in not horizontal\n\t\tif (!this.manager.isPaginated || this.isVertical) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.touchCanceler = false;\n\t\tthis.resizeCanceler = false;\n\t\tthis.snapping = false;\n\n\n\t\tthis.scrollLeft;\n\t\tthis.scrollTop;\n\n\t\tthis.startTouchX = undefined;\n\t\tthis.startTouchY = undefined;\n\t\tthis.startTime = undefined;\n\t\tthis.endTouchX = undefined;\n\t\tthis.endTouchY = undefined;\n\t\tthis.endTime = undefined;\n\n\t\tthis.addListeners();\n\t}\n\n\tsupportsTouch() {\n\t\tif (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tdisableScroll() {\n\t\tthis.element.style.overflow = \"hidden\";\n\t}\n\n\tenableScroll() {\n\t\tthis.element.style.overflow = \"\";\n\t}\n\n\taddListeners() {\n\t\tthis._onResize = this.onResize.bind(this);\n\t\twindow.addEventListener('resize', this._onResize);\n\n\t\tthis._onScroll = this.onScroll.bind(this);\n\t\tthis.scroller.addEventListener('scroll', this._onScroll);\n\n\t\tthis._onTouchStart = this.onTouchStart.bind(this);\n\t\tthis.scroller.addEventListener('touchstart', this._onTouchStart, { passive: true });\n\t\tthis.on('touchstart', this._onTouchStart);\n\n\t\tthis._onTouchMove = this.onTouchMove.bind(this);\n\t\tthis.scroller.addEventListener('touchmove', this._onTouchMove, { passive: true });\n\t\tthis.on('touchmove', this._onTouchMove);\n\n\t\tthis._onTouchEnd = this.onTouchEnd.bind(this);\n\t\tthis.scroller.addEventListener('touchend', this._onTouchEnd, { passive: true });\n\t\tthis.on('touchend', this._onTouchEnd);\n\n\t\tthis._afterDisplayed = this.afterDisplayed.bind(this);\n\t\tthis.manager.on(EVENTS.MANAGERS.ADDED, this._afterDisplayed);\n\t}\n\n\tremoveListeners() {\n\t\twindow.removeEventListener('resize', this._onResize);\n\t\tthis._onResize = undefined;\n\n\t\tthis.scroller.removeEventListener('scroll', this._onScroll);\n\t\tthis._onScroll = undefined;\n\n\t\tthis.scroller.removeEventListener('touchstart', this._onTouchStart, { passive: true });\n\t\tthis.off('touchstart', this._onTouchStart);\n\t\tthis._onTouchStart = undefined;\n\n\t\tthis.scroller.removeEventListener('touchmove', this._onTouchMove, { passive: true });\n\t\tthis.off('touchmove', this._onTouchMove);\n\t\tthis._onTouchMove = undefined;\n\n\t\tthis.scroller.removeEventListener('touchend', this._onTouchEnd, { passive: true });\n\t\tthis.off('touchend', this._onTouchEnd);\n\t\tthis._onTouchEnd = undefined;\n\n\t\tthis.manager.off(EVENTS.MANAGERS.ADDED, this._afterDisplayed);\n\t\tthis._afterDisplayed = undefined;\n\t}\n\n\tafterDisplayed(view) {\n\t\tlet contents = view.contents;\n\t\t[\"touchstart\", \"touchmove\", \"touchend\"].forEach((e) => {\n\t\t\tcontents.on(e, (ev) => this.triggerViewEvent(ev, contents));\n\t\t});\n\t}\n\n\ttriggerViewEvent(e, contents){\n\t\tthis.emit(e.type, e, contents);\n\t}\n\n\tonScroll(e) {\n\t\tthis.scrollLeft = this.fullsize ? window.scrollX : this.scroller.scrollLeft;\n\t\tthis.scrollTop = this.fullsize ? window.scrollY : this.scroller.scrollTop;\n\t}\n\n\tonResize(e) {\n\t\tthis.resizeCanceler = true;\n\t}\n\n\tonTouchStart(e) {\n\t\tlet { screenX, screenY } = e.touches[0];\n\n\t\tif (this.fullsize) {\n\t\t\tthis.enableScroll();\n\t\t}\n\n\t\tthis.touchCanceler = true;\n\n\t\tif (!this.startTouchX) {\n\t\t\tthis.startTouchX = screenX;\n\t\t\tthis.startTouchY = screenY;\n\t\t\tthis.startTime = this.now();\n\t\t}\n\n\t\tthis.endTouchX = screenX;\n\t\tthis.endTouchY = screenY;\n\t\tthis.endTime = this.now();\n\t}\n\n\tonTouchMove(e) {\n\t\tlet { screenX, screenY } = e.touches[0];\n\t\tlet deltaY = Math.abs(screenY - this.endTouchY);\n\n\t\tthis.touchCanceler = true;\n\n\n\t\tif (!this.fullsize && deltaY < 10) {\n\t\t\tthis.element.scrollLeft -= screenX - this.endTouchX;\n\t\t}\n\n\t\tthis.endTouchX = screenX;\n\t\tthis.endTouchY = screenY;\n\t\tthis.endTime = this.now();\n\t}\n\n\tonTouchEnd(e) {\n\t\tif (this.fullsize) {\n\t\t\tthis.disableScroll();\n\t\t}\n\n\t\tthis.touchCanceler = false;\n\n\t\tlet swipped = this.wasSwiped();\n\n\t\tif (swipped !== 0) {\n\t\t\tthis.snap(swipped);\n\t\t} else {\n\t\t\tthis.snap();\n\t\t}\n\n\t\tthis.startTouchX = undefined;\n\t\tthis.startTouchY = undefined;\n\t\tthis.startTime = undefined;\n\t\tthis.endTouchX = undefined;\n\t\tthis.endTouchY = undefined;\n\t\tthis.endTime = undefined;\n\t}\n\n\twasSwiped() {\n\t\tlet snapWidth = this.layout.pageWidth * this.layout.divisor;\n\t\tlet distance = (this.endTouchX - this.startTouchX);\n\t\tlet absolute = Math.abs(distance);\n\t\tlet time = this.endTime - this.startTime;\n\t\tlet velocity = (distance / time);\n\t\tlet minVelocity = this.settings.minVelocity;\n\n\t\tif (absolute <= this.settings.minDistance || absolute >= snapWidth) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (velocity > minVelocity) {\n\t\t\t// previous\n\t\t\treturn -1;\n\t\t} else if (velocity < -minVelocity) {\n\t\t\t// next\n\t\t\treturn 1;\n\t\t}\n\t}\n\n\tneedsSnap() {\n\t\tlet left = this.scrollLeft;\n\t\tlet snapWidth = this.layout.pageWidth * this.layout.divisor;\n\t\treturn (left % snapWidth) !== 0;\n\t}\n\n\tsnap(howMany=0) {\n\t\tlet left = this.scrollLeft;\n\t\tlet snapWidth = this.layout.pageWidth * this.layout.divisor;\n\t\tlet snapTo = Math.round(left / snapWidth) * snapWidth;\n\n\t\tif (howMany) {\n\t\t\tsnapTo += (howMany * snapWidth);\n\t\t}\n\n\t\treturn this.smoothScrollTo(snapTo);\n\t}\n\n\tsmoothScrollTo(destination) {\n\t\tconst deferred = new defer();\n\t\tconst start = this.scrollLeft;\n\t\tconst startTime = this.now();\n\n\t\tconst duration = this.settings.duration;\n\t\tconst easing = this.settings.easing;\n\n\t\tthis.snapping = true;\n\n\t\t// add animation loop\n\t\tfunction tick() {\n\t\t\tconst now = this.now();\n\t\t\tconst time = Math.min(1, ((now - startTime) / duration));\n\t\t\tconst timeFunction = easing(time);\n\n\n\t\t\tif (this.touchCanceler || this.resizeCanceler) {\n\t\t\t\tthis.resizeCanceler = false;\n\t\t\t\tthis.snapping = false;\n\t\t\t\tdeferred.resolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (time < 1) {\n\t\t\t\t\twindow.requestAnimationFrame(tick.bind(this));\n\t\t\t\t\tthis.scrollTo(start + ((destination - start) * time), 0);\n\t\t\t} else {\n\t\t\t\t\tthis.scrollTo(destination, 0);\n\t\t\t\t\tthis.snapping = false;\n\t\t\t\t\tdeferred.resolve();\n\t\t\t}\n\t\t}\n\n\t\ttick.call(this);\n\n\t\treturn deferred.promise;\n\t}\n\n\tscrollTo(left=0, top=0) {\n\t\tif (this.fullsize) {\n\t\t\twindow.scroll(left, top);\n\t\t} else {\n\t\t\tthis.scroller.scrollLeft = left;\n\t\t\tthis.scroller.scrollTop = top;\n\t\t}\n\t}\n\n\tnow() {\n\t\treturn ('now' in window.performance) ? performance.now() : new Date().getTime();\n\t}\n\n\tdestroy() {\n\t\tif (!this.scroller) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.fullsize) {\n\t\t\tthis.enableScroll();\n\t\t}\n\n\t\tthis.removeListeners();\n\n\t\tthis.scroller = undefined;\n\t}\n}\n\nEventEmitter(Snap.prototype);\n\nexport default Snap;\n","import {extend, defer, requestAnimationFrame} from \"../../utils/core\";\nimport DefaultViewManager from \"../default\";\nimport Snap from \"../helpers/snap\";\nimport { EVENTS } from \"../../utils/constants\";\nimport debounce from \"lodash/debounce\";\n\nclass ContinuousViewManager extends DefaultViewManager {\n\tconstructor(options) {\n\t\tsuper(options);\n\n\t\tthis.name = \"continuous\";\n\n\t\tthis.settings = extend(this.settings || {}, {\n\t\t\tinfinite: true,\n\t\t\toverflow: undefined,\n\t\t\taxis: undefined,\n\t\t\twritingMode: undefined,\n\t\t\tflow: \"scrolled\",\n\t\t\toffset: 500,\n\t\t\toffsetDelta: 250,\n\t\t\twidth: undefined,\n\t\t\theight: undefined,\n\t\t\tsnap: false,\n\t\t\tafterScrolledTimeout: 10,\n\t\t\tallowScriptedContent: false,\n\t\t\tallowPopups: false\n\t\t});\n\n\t\textend(this.settings, options.settings || {});\n\n\t\t// Gap can be 0, but defaults doesn't handle that\n\t\tif (options.settings.gap != \"undefined\" && options.settings.gap === 0) {\n\t\t\tthis.settings.gap = options.settings.gap;\n\t\t}\n\n\t\tthis.viewSettings = {\n\t\t\tignoreClass: this.settings.ignoreClass,\n\t\t\taxis: this.settings.axis,\n\t\t\tflow: this.settings.flow,\n\t\t\tlayout: this.layout,\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tforceEvenPages: false,\n\t\t\tallowScriptedContent: this.settings.allowScriptedContent,\n\t\t\tallowPopups: this.settings.allowPopups\n\t\t};\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t}\n\n\tdisplay(section, target){\n\t\treturn DefaultViewManager.prototype.display.call(this, section, target)\n\t\t\t.then(function () {\n\t\t\t\treturn this.fill();\n\t\t\t}.bind(this));\n\t}\n\n\tfill(_full){\n\t\tvar full = _full || new defer();\n\n\t\tthis.q.enqueue(() => {\n\t\t\treturn this.check();\n\t\t}).then((result) => {\n\t\t\tif (result) {\n\t\t\t\tthis.fill(full);\n\t\t\t} else {\n\t\t\t\tfull.resolve();\n\t\t\t}\n\t\t});\n\n\t\treturn full.promise;\n\t}\n\n\tmoveTo(offset){\n\t\t// var bounds = this.stage.bounds();\n\t\t// var dist = Math.floor(offset.top / bounds.height) * bounds.height;\n\t\tvar distX = 0,\n\t\t\t\tdistY = 0;\n\n\t\tvar offsetX = 0,\n\t\t\t\toffsetY = 0;\n\n\t\tif(!this.isPaginated) {\n\t\t\tdistY = offset.top;\n\t\t\toffsetY = offset.top+this.settings.offsetDelta;\n\t\t} else {\n\t\t\tdistX = Math.floor(offset.left / this.layout.delta) * this.layout.delta;\n\t\t\toffsetX = distX+this.settings.offsetDelta;\n\t\t}\n\n\t\tif (distX > 0 || distY > 0) {\n\t\t\tthis.scrollBy(distX, distY, true);\n\t\t}\n\t}\n\n\tafterResized(view){\n\t\tthis.emit(EVENTS.MANAGERS.RESIZE, view.section);\n\t}\n\n\t// Remove Previous Listeners if present\n\tremoveShownListeners(view){\n\n\t\t// view.off(\"shown\", this.afterDisplayed);\n\t\t// view.off(\"shown\", this.afterDisplayedAbove);\n\t\tview.onDisplayed = function(){};\n\n\t}\n\n\tadd(section){\n\t\tvar view = this.createView(section);\n\n\t\tthis.views.append(view);\n\n\t\tview.on(EVENTS.VIEWS.RESIZED, (bounds) => {\n\t\t\tview.expanded = true;\n\t\t});\n\n\t\tview.on(EVENTS.VIEWS.AXIS, (axis) => {\n\t\t\tthis.updateAxis(axis);\n\t\t});\n\n\t\tview.on(EVENTS.VIEWS.WRITING_MODE, (mode) => {\n\t\t\tthis.updateWritingMode(mode);\n\t\t});\n\n\t\t// view.on(EVENTS.VIEWS.SHOWN, this.afterDisplayed.bind(this));\n\t\tview.onDisplayed = this.afterDisplayed.bind(this);\n\t\tview.onResize = this.afterResized.bind(this);\n\n\t\treturn view.display(this.request);\n\t}\n\n\tappend(section){\n\t\tvar view = this.createView(section);\n\n\t\tview.on(EVENTS.VIEWS.RESIZED, (bounds) => {\n\t\t\tview.expanded = true;\n\t\t});\n\n\t\tview.on(EVENTS.VIEWS.AXIS, (axis) => {\n\t\t\tthis.updateAxis(axis);\n\t\t});\n\n\t\tview.on(EVENTS.VIEWS.WRITING_MODE, (mode) => {\n\t\t\tthis.updateWritingMode(mode);\n\t\t});\n\n\t\tthis.views.append(view);\n\n\t\tview.onDisplayed = this.afterDisplayed.bind(this);\n\n\t\treturn view;\n\t}\n\n\tprepend(section){\n\t\tvar view = this.createView(section);\n\n\t\tview.on(EVENTS.VIEWS.RESIZED, (bounds) => {\n\t\t\tthis.counter(bounds);\n\t\t\tview.expanded = true;\n\t\t});\n\n\t\tview.on(EVENTS.VIEWS.AXIS, (axis) => {\n\t\t\tthis.updateAxis(axis);\n\t\t});\n\n\t\tview.on(EVENTS.VIEWS.WRITING_MODE, (mode) => {\n\t\t\tthis.updateWritingMode(mode);\n\t\t});\n\n\t\tthis.views.prepend(view);\n\n\t\tview.onDisplayed = this.afterDisplayed.bind(this);\n\n\t\treturn view;\n\t}\n\n\tcounter(bounds){\n\t\tif(this.settings.axis === \"vertical\") {\n\t\t\tthis.scrollBy(0, bounds.heightDelta, true);\n\t\t} else {\n\t\t\tthis.scrollBy(bounds.widthDelta, 0, true);\n\t\t}\n\t}\n\n\tupdate(_offset){\n\t\tvar container = this.bounds();\n\t\tvar views = this.views.all();\n\t\tvar viewsLength = views.length;\n\t\tvar visible = [];\n\t\tvar offset = typeof _offset != \"undefined\" ? _offset : (this.settings.offset || 0);\n\t\tvar isVisible;\n\t\tvar view;\n\n\t\tvar updating = new defer();\n\t\tvar promises = [];\n\t\tfor (var i = 0; i < viewsLength; i++) {\n\t\t\tview = views[i];\n\n\t\t\tisVisible = this.isVisible(view, offset, offset, container);\n\n\t\t\tif(isVisible === true) {\n\t\t\t\t// console.log(\"visible \" + view.index, view.displayed);\n\n\t\t\t\tif (!view.displayed) {\n\t\t\t\t\tlet displayed = view.display(this.request)\n\t\t\t\t\t\t.then(function (view) {\n\t\t\t\t\t\t\tview.show();\n\t\t\t\t\t\t}, (err) => {\n\t\t\t\t\t\t\tview.hide();\n\t\t\t\t\t\t});\n\t\t\t\t\tpromises.push(displayed);\n\t\t\t\t} else {\n\t\t\t\t\tview.show();\n\t\t\t\t}\n\t\t\t\tvisible.push(view);\n\t\t\t} else {\n\t\t\t\tthis.q.enqueue(view.destroy.bind(view));\n\t\t\t\t// console.log(\"hidden \" + view.index, view.displayed);\n\n\t\t\t\tclearTimeout(this.trimTimeout);\n\t\t\t\tthis.trimTimeout = setTimeout(function(){\n\t\t\t\t\tthis.q.enqueue(this.trim.bind(this));\n\t\t\t\t}.bind(this), 250);\n\t\t\t}\n\n\t\t}\n\n\t\tif(promises.length){\n\t\t\treturn Promise.all(promises)\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tupdating.reject(err);\n\t\t\t\t});\n\t\t} else {\n\t\t\tupdating.resolve();\n\t\t\treturn updating.promise;\n\t\t}\n\n\t}\n\n\tcheck(_offsetLeft, _offsetTop){\n\t\tvar checking = new defer();\n\t\tvar newViews = [];\n\n\t\tvar horizontal = (this.settings.axis === \"horizontal\");\n\t\tvar delta = this.settings.offset || 0;\n\n\t\tif (_offsetLeft && horizontal) {\n\t\t\tdelta = _offsetLeft;\n\t\t}\n\n\t\tif (_offsetTop && !horizontal) {\n\t\t\tdelta = _offsetTop;\n\t\t}\n\n\t\tvar bounds = this._bounds; // bounds saved this until resize\n\n\t\tlet offset = horizontal ? this.scrollLeft : this.scrollTop;\n\t\tlet visibleLength = horizontal ? Math.floor(bounds.width) : bounds.height;\n\t\tlet contentLength = horizontal ? this.container.scrollWidth : this.container.scrollHeight;\n\t\tlet writingMode = (this.writingMode && this.writingMode.indexOf(\"vertical\") === 0) ? \"vertical\" : \"horizontal\";\n\t\tlet rtlScrollType = this.settings.rtlScrollType;\n\t\tlet rtl = this.settings.direction === \"rtl\";\n\n\t\tif (!this.settings.fullsize) {\n\t\t\t// Scroll offset starts at width of element\n\t\t\tif (rtl && rtlScrollType === \"default\" && writingMode === \"horizontal\") {\n\t\t\t\toffset = contentLength - visibleLength - offset;\n\t\t\t}\n\t\t\t// Scroll offset starts at 0 and goes negative\n\t\t\tif (rtl && rtlScrollType === \"negative\" && writingMode === \"horizontal\") {\n\t\t\t\toffset = offset * -1;\n\t\t\t}\n\t\t} else {\n\t\t\t// Scroll offset starts at 0 and goes negative\n\t\t\tif ((horizontal && rtl && rtlScrollType === \"negative\") ||\n\t\t\t\t(!horizontal && rtl && rtlScrollType === \"default\")) {\n\t\t\t\toffset = offset * -1;\n\t\t\t}\n\t\t}\n\n\t\tlet prepend = () => {\n\t\t\tlet first = this.views.first();\n\t\t\tlet prev = first && first.section.prev();\n\n\t\t\tif(prev) {\n\t\t\t\tnewViews.push(this.prepend(prev));\n\t\t\t}\n\t\t};\n\n\t\tlet append = () => {\n\t\t\tlet last = this.views.last();\n\t\t\tlet next = last && last.section.next();\n\n\t\t\tif(next) {\n\t\t\t\tnewViews.push(this.append(next));\n\t\t\t}\n\n\t\t};\n\n\t\tlet end = offset + visibleLength + delta;\n\t\tlet start = offset - delta;\n\n\t\tif (end >= contentLength) {\n\t\t\tappend();\n\t\t}\n\t\t\n\t\tif (start < 0) {\n\t\t\tprepend();\n\t\t}\n\t\t\n\n\t\tlet promises = newViews.map((view) => {\n\t\t\treturn view.display(this.request);\n\t\t});\n\n\t\tif(newViews.length){\n\t\t\treturn Promise.all(promises)\n\t\t\t\t.then(() => {\n\t\t\t\t\treturn this.check();\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\t// Check to see if anything new is on screen after rendering\n\t\t\t\t\treturn this.update(delta);\n\t\t\t\t}, (err) => {\n\t\t\t\t\treturn err;\n\t\t\t\t});\n\t\t} else {\n\t\t\tthis.q.enqueue(function(){\n\t\t\t\tthis.update();\n\t\t\t}.bind(this));\n\t\t\tchecking.resolve(false);\n\t\t\treturn checking.promise;\n\t\t}\n\n\n\t}\n\n\ttrim(){\n\t\tvar task = new defer();\n\t\tvar displayed = this.views.displayed();\n\t\tvar first = displayed[0];\n\t\tvar last = displayed[displayed.length-1];\n\t\tvar firstIndex = this.views.indexOf(first);\n\t\tvar lastIndex = this.views.indexOf(last);\n\t\tvar above = this.views.slice(0, firstIndex);\n\t\tvar below = this.views.slice(lastIndex+1);\n\n\t\t// Erase all but last above\n\t\tfor (var i = 0; i < above.length-1; i++) {\n\t\t\tthis.erase(above[i], above);\n\t\t}\n\n\t\t// Erase all except first below\n\t\tfor (var j = 1; j < below.length; j++) {\n\t\t\tthis.erase(below[j]);\n\t\t}\n\n\t\ttask.resolve();\n\t\treturn task.promise;\n\t}\n\n\terase(view, above){ //Trim\n\n\t\tvar prevTop;\n\t\tvar prevLeft;\n\n\t\tif(!this.settings.fullsize) {\n\t\t\tprevTop = this.container.scrollTop;\n\t\t\tprevLeft = this.container.scrollLeft;\n\t\t} else {\n\t\t\tprevTop = window.scrollY;\n\t\t\tprevLeft = window.scrollX;\n\t\t}\n\n\t\tvar bounds = view.bounds();\n\n\t\tthis.views.remove(view);\n\t\t\n\t\tif(above) {\n\t\t\tif (this.settings.axis === \"vertical\") {\n\t\t\t\tthis.scrollTo(0, prevTop - bounds.height, true);\n\t\t\t} else {\n\t\t\t\tif(this.settings.direction === 'rtl') {\n\t\t\t\t\tif (!this.settings.fullsize) {\n\t\t\t\t\t\tthis.scrollTo(prevLeft, 0, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.scrollTo(prevLeft + Math.floor(bounds.width), 0, true);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.scrollTo(prevLeft - Math.floor(bounds.width), 0, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\taddEventListeners(stage){\n\n\t\twindow.addEventListener(\"unload\", function(e){\n\t\t\tthis.ignore = true;\n\t\t\t// this.scrollTo(0,0);\n\t\t\tthis.destroy();\n\t\t}.bind(this));\n\n\t\tthis.addScrollListeners();\n\n\t\tif (this.isPaginated && this.settings.snap) {\n\t\t\tthis.snapper = new Snap(this, this.settings.snap && (typeof this.settings.snap === \"object\") && this.settings.snap);\n\t\t}\n\t}\n\n\taddScrollListeners() {\n\t\tvar scroller;\n\n\t\tthis.tick = requestAnimationFrame;\n\n\t\tlet dir = this.settings.direction === \"rtl\" && this.settings.rtlScrollType === \"default\" ? -1 : 1;\n\n\t\tthis.scrollDeltaVert = 0;\n\t\tthis.scrollDeltaHorz = 0;\n\n\t\tif(!this.settings.fullsize) {\n\t\t\tscroller = this.container;\n\t\t\tthis.scrollTop = this.container.scrollTop;\n\t\t\tthis.scrollLeft = this.container.scrollLeft;\n\t\t} else {\n\t\t\tscroller = window;\n\t\t\tthis.scrollTop = window.scrollY * dir;\n\t\t\tthis.scrollLeft = window.scrollX * dir;\n\t\t}\n\n\t\tthis._onScroll = this.onScroll.bind(this);\n\t\tscroller.addEventListener(\"scroll\", this._onScroll);\n\t\tthis._scrolled = debounce(this.scrolled.bind(this), 30);\n\t\t// this.tick.call(window, this.onScroll.bind(this));\n\n\t\tthis.didScroll = false;\n\n\t}\n\n\tremoveEventListeners(){\n\t\tvar scroller;\n\n\t\tif(!this.settings.fullsize) {\n\t\t\tscroller = this.container;\n\t\t} else {\n\t\t\tscroller = window;\n\t\t}\n\n\t\tscroller.removeEventListener(\"scroll\", this._onScroll);\n\t\tthis._onScroll = undefined;\n\t}\n\n\tonScroll(){\n\t\tlet scrollTop;\n\t\tlet scrollLeft;\n\t\tlet dir = this.settings.direction === \"rtl\" && this.settings.rtlScrollType === \"default\" ? -1 : 1;\n\n\t\tif(!this.settings.fullsize) {\n\t\t\tscrollTop = this.container.scrollTop;\n\t\t\tscrollLeft = this.container.scrollLeft;\n\t\t} else {\n\t\t\tscrollTop = window.scrollY * dir;\n\t\t\tscrollLeft = window.scrollX * dir;\n\t\t}\n\n\t\tthis.scrollTop = scrollTop;\n\t\tthis.scrollLeft = scrollLeft;\n\n\t\tif(!this.ignore) {\n\n\t\t\tthis._scrolled();\n\n\t\t} else {\n\t\t\tthis.ignore = false;\n\t\t}\n\n\t\tthis.scrollDeltaVert += Math.abs(scrollTop-this.prevScrollTop);\n\t\tthis.scrollDeltaHorz += Math.abs(scrollLeft-this.prevScrollLeft);\n\n\t\tthis.prevScrollTop = scrollTop;\n\t\tthis.prevScrollLeft = scrollLeft;\n\n\t\tclearTimeout(this.scrollTimeout);\n\t\tthis.scrollTimeout = setTimeout(function(){\n\t\t\tthis.scrollDeltaVert = 0;\n\t\t\tthis.scrollDeltaHorz = 0;\n\t\t}.bind(this), 150);\n\n\t\tclearTimeout(this.afterScrolled);\n\n\t\tthis.didScroll = false;\n\n\t}\n\n\tscrolled() {\n\n\t\tthis.q.enqueue(function() {\n\t\t\treturn this.check();\n\t\t}.bind(this));\n\n\t\tthis.emit(EVENTS.MANAGERS.SCROLL, {\n\t\t\ttop: this.scrollTop,\n\t\t\tleft: this.scrollLeft\n\t\t});\n\n\t\tclearTimeout(this.afterScrolled);\n\t\tthis.afterScrolled = setTimeout(function () {\n\n\t\t\t// Don't report scroll if we are about the snap\n\t\t\tif (this.snapper && this.snapper.supportsTouch && this.snapper.needsSnap()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.emit(EVENTS.MANAGERS.SCROLLED, {\n\t\t\t\ttop: this.scrollTop,\n\t\t\t\tleft: this.scrollLeft\n\t\t\t});\n\n\t\t}.bind(this), this.settings.afterScrolledTimeout);\n\t}\n\n\tnext(){\n\n\t\tlet delta = this.layout.props.name === \"pre-paginated\" &&\n\t\t\t\t\t\t\t\tthis.layout.props.spread ? this.layout.props.delta * 2 : this.layout.props.delta;\n\n\t\tif(!this.views.length) return;\n\n\t\tif(this.isPaginated && this.settings.axis === \"horizontal\") {\n\n\t\t\tthis.scrollBy(delta, 0, true);\n\n\t\t} else {\n\n\t\t\tthis.scrollBy(0, this.layout.height, true);\n\n\t\t}\n\n\t\tthis.q.enqueue(function() {\n\t\t\treturn this.check();\n\t\t}.bind(this));\n\t}\n\n\tprev(){\n\n\t\tlet delta = this.layout.props.name === \"pre-paginated\" &&\n\t\t\t\t\t\t\t\tthis.layout.props.spread ? this.layout.props.delta * 2 : this.layout.props.delta;\n\n\t\tif(!this.views.length) return;\n\n\t\tif(this.isPaginated && this.settings.axis === \"horizontal\") {\n\n\t\t\tthis.scrollBy(-delta, 0, true);\n\n\t\t} else {\n\n\t\t\tthis.scrollBy(0, -this.layout.height, true);\n\n\t\t}\n\n\t\tthis.q.enqueue(function() {\n\t\t\treturn this.check();\n\t\t}.bind(this));\n\t}\n\n\tupdateFlow(flow){\n\t\tif (this.rendered && this.snapper) {\n\t\t\tthis.snapper.destroy();\n\t\t\tthis.snapper = undefined;\n\t\t}\n\n\t\tsuper.updateFlow(flow, \"scroll\");\n\n\t\tif (this.rendered && this.isPaginated && this.settings.snap) {\n\t\t\tthis.snapper = new Snap(this, this.settings.snap && (typeof this.settings.snap === \"object\") && this.settings.snap);\n\t\t}\n\t}\n\n\tdestroy(){\n\t\tsuper.destroy();\n\n\t\tif (this.snapper) {\n\t\t\tthis.snapper.destroy();\n\t\t}\n\t}\n\n}\n\nexport default ContinuousViewManager;\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\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.localforage = 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 element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","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} store objects\n\t */\n\tadd(resources, force) {\n\t\tlet mapped = resources.resources.map((item) => {\n\t\t\tlet { href } = item;\n\t\t\tlet url = this.resolver(href);\n\t\t\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\t\treturn this.storage.getItem(encodedUrl).then((item) => {\n\t\t\t\tif (!item || force) {\n\t\t\t\t\treturn this.requester(url, \"binary\")\n\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\treturn this.storage.setItem(encodedUrl, data);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\t\treturn Promise.all(mapped);\n\t}\n\n\t/**\n\t * Put binary data from a url to storage\n\t * @param {string} url a url to request from storage\n\t * @param {boolean} [withCredentials]\n\t * @param {object} [headers]\n\t * @return {Promise}\n\t */\n\tput(url, withCredentials, headers) {\n\t\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\treturn this.storage.getItem(encodedUrl).then((result) => {\n\t\t\tif (!result) {\n\t\t\t\treturn this.requester(url, \"binary\", withCredentials, headers).then((data) => {\n\t\t\t\t\treturn this.storage.setItem(encodedUrl, data);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn result;\n\t\t});\n\t}\n\n\t/**\n\t * Request a url\n\t * @param {string} url a url to request from storage\n\t * @param {string} [type] specify the type of the returned result\n\t * @param {boolean} [withCredentials]\n\t * @param {object} [headers]\n\t * @return {Promise}\n\t */\n\trequest(url, type, withCredentials, headers){\n\t\tif (this.online) {\n\t\t\t// From network\n\t\t\treturn this.requester(url, type, withCredentials, headers).then((data) => {\n\t\t\t\t// save to store if not present\n\t\t\t\tthis.put(url);\n\t\t\t\treturn data;\n\t\t\t})\n\t\t} else {\n\t\t\t// From store\n\t\t\treturn this.retrieve(url, type);\n\t\t}\n\n\t}\n\n\t/**\n\t * Request a url from storage\n\t * @param {string} url a url to request from storage\n\t * @param {string} [type] specify the type of the returned result\n\t * @return {Promise}\n\t */\n\tretrieve(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\n\t\treturn response.then((r) => {\n\t\t\tvar deferred = new defer();\n\t\t\tvar result;\n\t\t\tif (r) {\n\t\t\t\tresult = this.handleResponse(r, type);\n\t\t\t\tdeferred.resolve(result);\n\t\t\t} else {\n\t\t\t\tdeferred.reject({\n\t\t\t\t\tmessage : \"File not found in storage: \" + url,\n\t\t\t\t\tstack : new Error().stack\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn deferred.promise;\n\t\t});\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 Storage by Url\n\t * @param {string} url\n\t * @param {string} [mimeType]\n\t * @return {Blob}\n\t */\n\tgetBlob(url, mimeType){\n\t\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\treturn this.storage.getItem(encodedUrl).then(function(uint8array) {\n\t\t\tif(!uint8array) return;\n\n\t\t\tmimeType = mimeType || mime.lookup(url);\n\n\t\t\treturn new Blob([uint8array], {type : mimeType});\n\t\t});\n\n\t}\n\n\t/**\n\t * Get Text from Storage by Url\n\t * @param {string} url\n\t * @param {string} [mimeType]\n\t * @return {string}\n\t */\n\tgetText(url, mimeType){\n\t\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\tmimeType = mimeType || mime.lookup(url);\n\n\t\treturn this.storage.getItem(encodedUrl).then(function(uint8array) {\n\t\t\tvar deferred = new defer();\n\t\t\tvar reader = new FileReader();\n\t\t\tvar blob;\n\n\t\t\tif(!uint8array) return;\n\n\t\t\tblob = new Blob([uint8array], {type : mimeType});\n\n\t\t\treader.addEventListener(\"loadend\", () => {\n\t\t\t\tdeferred.resolve(reader.result);\n\t\t\t});\n\n\t\t\treader.readAsText(blob, mimeType);\n\n\t\t\treturn deferred.promise;\n\t\t});\n\t}\n\n\t/**\n\t * Get a base64 encoded result from Storage 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\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\tmimeType = mimeType || mime.lookup(url);\n\n\t\treturn this.storage.getItem(encodedUrl).then((uint8array) => {\n\t\t\tvar deferred = new defer();\n\t\t\tvar reader = new FileReader();\n\t\t\tvar blob;\n\n\t\t\tif(!uint8array) return;\n\n\t\t\tblob = new Blob([uint8array], {type : mimeType});\n\n\t\t\treader.addEventListener(\"loadend\", () => {\n\t\t\t\tdeferred.resolve(reader.result);\n\t\t\t});\n\t\t\treader.readAsDataURL(blob, mimeType);\n\n\t\t\treturn deferred.promise;\n\t\t});\n\t}\n\n\t/**\n\t * Create a Url from a stored 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 storage: \" + 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 store\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.urlCache = {};\n\t\tthis.removeListeners();\n\t}\n}\n\nEventEmitter(Store.prototype);\n\nexport default Store;\n","import {qs, qsa } from \"./utils/core\";\n\n/**\n * Open DisplayOptions Format Parser\n * @class\n * @param {document} displayOptionsDocument XML\n */\nclass DisplayOptions {\n\tconstructor(displayOptionsDocument) {\n\t\tthis.interactive = \"\";\n\t\tthis.fixedLayout = \"\";\n\t\tthis.openToSpread = \"\";\n\t\tthis.orientationLock = \"\";\n\n\t\tif (displayOptionsDocument) {\n\t\t\tthis.parse(displayOptionsDocument);\n\t\t}\n\t}\n\n\t/**\n\t * Parse XML\n\t * @param {document} displayOptionsDocument XML\n\t * @return {DisplayOptions} self\n\t */\n\tparse(displayOptionsDocument) {\n\t\tif(!displayOptionsDocument) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst displayOptionsNode = qs(displayOptionsDocument, \"display_options\");\n\t\tif(!displayOptionsNode) {\n\t\t\treturn this;\n\t\t} \n\n\t\tconst options = qsa(displayOptionsNode, \"option\");\n\t\toptions.forEach((el) => {\n\t\t\tlet value = \"\";\n\n\t\t\tif (el.childNodes.length) {\n\t\t\t\tvalue = el.childNodes[0].nodeValue;\n\t\t\t}\n\n\t\t\tswitch (el.attributes.name.value) {\n\t\t\t case \"interactive\":\n\t\t\t this.interactive = value;\n\t\t\t break;\n\t\t\t case \"fixed-layout\":\n\t\t\t this.fixedLayout = value;\n\t\t\t break;\n\t\t\t case \"open-to-spread\":\n\t\t\t this.openToSpread = value;\n\t\t\t break;\n\t\t\t case \"orientation-lock\":\n\t\t\t this.orientationLock = value;\n\t\t\t break;\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tdestroy() {\n\t\tthis.interactive = undefined;\n\t\tthis.fixedLayout = undefined;\n\t\tthis.openToSpread = undefined;\n\t\tthis.orientationLock = undefined;\n\t}\n}\n\nexport default DisplayOptions;\n","import EventEmitter from \"event-emitter\";\nimport {extend, defer} from \"./utils/core\";\nimport Url from \"./utils/url\";\nimport Path from \"./utils/path\";\nimport Spine from \"./spine\";\nimport Locations from \"./locations\";\nimport Container from \"./container\";\nimport Packaging from \"./packaging\";\nimport Navigation from \"./navigation\";\nimport Resources from \"./resources\";\nimport PageList from \"./pagelist\";\nimport Rendition from \"./rendition\";\nimport Archive from \"./archive\";\nimport request from \"./utils/request\";\nimport EpubCFI from \"./epubcfi\";\nimport Store from \"./store\";\nimport DisplayOptions from \"./displayoptions\";\nimport { EPUBJS_VERSION, EVENTS } from \"./utils/constants\";\n\nconst CONTAINER_PATH = \"META-INF/container.xml\";\nconst IBOOKS_DISPLAY_OPTIONS_PATH = \"META-INF/com.apple.ibooks.display-options.xml\";\n\nconst INPUT_TYPE = {\n\tBINARY: \"binary\",\n\tBASE64: \"base64\",\n\tEPUB: \"epub\",\n\tOPF: \"opf\",\n\tMANIFEST: \"json\",\n\tDIRECTORY: \"directory\"\n};\n\n/**\n * An Epub representation with methods for the loading, parsing and manipulation\n * of its contents.\n * @class\n * @param {string} [url]\n * @param {object} [options]\n * @param {method} [options.requestMethod] a request function to use instead of the default\n * @param {boolean} [options.requestCredentials=undefined] send the xhr request withCredentials\n * @param {object} [options.requestHeaders=undefined] send the xhr request headers\n * @param {string} [options.encoding=binary] optional to pass 'binary' or base64' for archived Epubs\n * @param {string} [options.replacements=none] use base64, blobUrl, or none for replacing assets in archived Epubs\n * @param {method} [options.canonical] optional function to determine canonical urls for a path\n * @param {string} [options.openAs] optional string to determine the input type\n * @param {string} [options.store=false] cache the contents in local storage, value should be the name of the reader\n * @returns {Book}\n * @example new Book(\"/path/to/book.epub\", {})\n * @example new Book({ replacements: \"blobUrl\" })\n */\nclass Book {\n\tconstructor(url, options) {\n\t\t// Allow passing just options to the Book\n\t\tif (typeof(options) === \"undefined\" &&\n\t\t\t typeof(url) !== \"string\" &&\n\t\t url instanceof Blob === false &&\n\t\t url instanceof ArrayBuffer === false) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\tthis.settings = extend(this.settings || {}, {\n\t\t\trequestMethod: undefined,\n\t\t\trequestCredentials: undefined,\n\t\t\trequestHeaders: undefined,\n\t\t\tencoding: undefined,\n\t\t\treplacements: undefined,\n\t\t\tcanonical: undefined,\n\t\t\topenAs: undefined,\n\t\t\tstore: undefined\n\t\t});\n\n\t\textend(this.settings, options);\n\n\n\t\t// Promises\n\t\tthis.opening = new defer();\n\t\t/**\n\t\t * @member {promise} opened returns after the book is loaded\n\t\t * @memberof Book\n\t\t */\n\t\tthis.opened = this.opening.promise;\n\t\tthis.isOpen = false;\n\n\t\tthis.loading = {\n\t\t\tmanifest: new defer(),\n\t\t\tspine: new defer(),\n\t\t\tmetadata: new defer(),\n\t\t\tcover: new defer(),\n\t\t\tnavigation: new defer(),\n\t\t\tpageList: new defer(),\n\t\t\tresources: new defer(),\n\t\t\tdisplayOptions: new defer()\n\t\t};\n\n\t\tthis.loaded = {\n\t\t\tmanifest: this.loading.manifest.promise,\n\t\t\tspine: this.loading.spine.promise,\n\t\t\tmetadata: this.loading.metadata.promise,\n\t\t\tcover: this.loading.cover.promise,\n\t\t\tnavigation: this.loading.navigation.promise,\n\t\t\tpageList: this.loading.pageList.promise,\n\t\t\tresources: this.loading.resources.promise,\n\t\t\tdisplayOptions: this.loading.displayOptions.promise\n\t\t};\n\n\t\t/**\n\t\t * @member {promise} ready returns after the book is loaded and parsed\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.ready = Promise.all([\n\t\t\tthis.loaded.manifest,\n\t\t\tthis.loaded.spine,\n\t\t\tthis.loaded.metadata,\n\t\t\tthis.loaded.cover,\n\t\t\tthis.loaded.navigation,\n\t\t\tthis.loaded.resources,\n\t\t\tthis.loaded.displayOptions\n\t\t]);\n\n\n\t\t// Queue for methods used before opening\n\t\tthis.isRendered = false;\n\t\t// this._q = queue(this);\n\n\t\t/**\n\t\t * @member {method} request\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.request = this.settings.requestMethod || request;\n\n\t\t/**\n\t\t * @member {Spine} spine\n\t\t * @memberof Book\n\t\t */\n\t\tthis.spine = new Spine();\n\n\t\t/**\n\t\t * @member {Locations} locations\n\t\t * @memberof Book\n\t\t */\n\t\tthis.locations = new Locations(this.spine, this.load.bind(this));\n\n\t\t/**\n\t\t * @member {Navigation} navigation\n\t\t * @memberof Book\n\t\t */\n\t\tthis.navigation = undefined;\n\n\t\t/**\n\t\t * @member {PageList} pagelist\n\t\t * @memberof Book\n\t\t */\n\t\tthis.pageList = undefined;\n\n\t\t/**\n\t\t * @member {Url} url\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.url = undefined;\n\n\t\t/**\n\t\t * @member {Path} path\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.path = undefined;\n\n\t\t/**\n\t\t * @member {boolean} archived\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.archived = false;\n\n\t\t/**\n\t\t * @member {Archive} archive\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.archive = undefined;\n\n\t\t/**\n\t\t * @member {Store} storage\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.storage = undefined;\n\n\t\t/**\n\t\t * @member {Resources} resources\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.resources = undefined;\n\n\t\t/**\n\t\t * @member {Rendition} rendition\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.rendition = undefined;\n\n\t\t/**\n\t\t * @member {Container} container\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.container = undefined;\n\n\t\t/**\n\t\t * @member {Packaging} packaging\n\t\t * @memberof Book\n\t\t * @private\n\t\t */\n\t\tthis.packaging = undefined;\n\n\t\t/**\n\t\t * @member {DisplayOptions} displayOptions\n\t\t * @memberof DisplayOptions\n\t\t * @private\n\t\t */\n\t\tthis.displayOptions = undefined;\n\n\t\t// this.toc = undefined;\n\t\tif (this.settings.store) {\n\t\t\tthis.store(this.settings.store);\n\t\t}\n\n\t\tif(url) {\n\t\t\tthis.open(url, this.settings.openAs).catch((error) => {\n\t\t\t\tvar err = new Error(\"Cannot load book at \"+ url );\n\t\t\t\tthis.emit(EVENTS.BOOK.OPEN_FAILED, err);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Open a epub or url\n\t * @param {string | ArrayBuffer} input Url, Path or ArrayBuffer\n\t * @param {string} [what=\"binary\", \"base64\", \"epub\", \"opf\", \"json\", \"directory\"] force opening as a certain type\n\t * @returns {Promise} of when the book has been loaded\n\t * @example book.open(\"/path/to/book.epub\")\n\t */\n\topen(input, what) {\n\t\tvar opening;\n\t\tvar type = what || this.determineType(input);\n\n\t\tif (type === INPUT_TYPE.BINARY) {\n\t\t\tthis.archived = true;\n\t\t\tthis.url = new Url(\"/\", \"\");\n\t\t\topening = this.openEpub(input);\n\t\t} else if (type === INPUT_TYPE.BASE64) {\n\t\t\tthis.archived = true;\n\t\t\tthis.url = new Url(\"/\", \"\");\n\t\t\topening = this.openEpub(input, type);\n\t\t} else if (type === INPUT_TYPE.EPUB) {\n\t\t\tthis.archived = true;\n\t\t\tthis.url = new Url(\"/\", \"\");\n\t\t\topening = this.request(input, \"binary\", this.settings.requestCredentials, this.settings.requestHeaders)\n\t\t\t\t.then(this.openEpub.bind(this));\n\t\t} else if(type == INPUT_TYPE.OPF) {\n\t\t\tthis.url = new Url(input);\n\t\t\topening = this.openPackaging(this.url.Path.toString());\n\t\t} else if(type == INPUT_TYPE.MANIFEST) {\n\t\t\tthis.url = new Url(input);\n\t\t\topening = this.openManifest(this.url.Path.toString());\n\t\t} else {\n\t\t\tthis.url = new Url(input);\n\t\t\topening = this.openContainer(CONTAINER_PATH)\n\t\t\t\t.then(this.openPackaging.bind(this));\n\t\t}\n\n\t\treturn opening;\n\t}\n\n\t/**\n\t * Open an archived epub\n\t * @private\n\t * @param {binary} data\n\t * @param {string} [encoding]\n\t * @return {Promise}\n\t */\n\topenEpub(data, encoding) {\n\t\treturn this.unarchive(data, encoding || this.settings.encoding)\n\t\t\t.then(() => {\n\t\t\t\treturn this.openContainer(CONTAINER_PATH);\n\t\t\t})\n\t\t\t.then((packagePath) => {\n\t\t\t\treturn this.openPackaging(packagePath);\n\t\t\t});\n\t}\n\n\t/**\n\t * Open the epub container\n\t * @private\n\t * @param {string} url\n\t * @return {string} packagePath\n\t */\n\topenContainer(url) {\n\t\treturn this.load(url)\n\t\t\t.then((xml) => {\n\t\t\t\tthis.container = new Container(xml);\n\t\t\t\treturn this.resolve(this.container.packagePath);\n\t\t\t});\n\t}\n\n\t/**\n\t * Open the Open Packaging Format Xml\n\t * @private\n\t * @param {string} url\n\t * @return {Promise}\n\t */\n\topenPackaging(url) {\n\t\tthis.path = new Path(url);\n\t\treturn this.load(url)\n\t\t\t.then((xml) => {\n\t\t\t\tthis.packaging = new Packaging(xml);\n\t\t\t\treturn this.unpack(this.packaging);\n\t\t\t});\n\t}\n\n\t/**\n\t * Open the manifest JSON\n\t * @private\n\t * @param {string} url\n\t * @return {Promise}\n\t */\n\topenManifest(url) {\n\t\tthis.path = new Path(url);\n\t\treturn this.load(url)\n\t\t\t.then((json) => {\n\t\t\t\tthis.packaging = new Packaging();\n\t\t\t\tthis.packaging.load(json);\n\t\t\t\treturn this.unpack(this.packaging);\n\t\t\t});\n\t}\n\n\t/**\n\t * Load a resource from the Book\n\t * @param {string} path path to the resource to load\n\t * @return {Promise} returns a promise with the requested resource\n\t */\n\tload(path) {\n\t\tvar resolved = this.resolve(path);\n\t\tif(this.archived) {\n\t\t\treturn this.archive.request(resolved);\n\t\t} else {\n\t\t\treturn this.request(resolved, null, this.settings.requestCredentials, this.settings.requestHeaders);\n\t\t}\n\t}\n\n\t/**\n\t * Resolve a path to it's absolute position in the Book\n\t * @param {string} path\n\t * @param {boolean} [absolute] force resolving the full URL\n\t * @return {string} the resolved path string\n\t */\n\tresolve(path, absolute) {\n\t\tif (!path) {\n\t\t\treturn;\n\t\t}\n\t\tvar resolved = path;\n\t\tvar isAbsolute = (path.indexOf(\"://\") > -1);\n\n\t\tif (isAbsolute) {\n\t\t\treturn path;\n\t\t}\n\n\t\tif (this.path) {\n\t\t\tresolved = this.path.resolve(path);\n\t\t}\n\n\t\tif(absolute != false && this.url) {\n\t\t\tresolved = this.url.resolve(resolved);\n\t\t}\n\n\t\treturn resolved;\n\t}\n\n\t/**\n\t * Get a canonical link to a path\n\t * @param {string} path\n\t * @return {string} the canonical path string\n\t */\n\tcanonical(path) {\n\t\tvar url = path;\n\n\t\tif (!path) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tif (this.settings.canonical) {\n\t\t\turl = this.settings.canonical(path);\n\t\t} else {\n\t\t\turl = this.resolve(path, true);\n\t\t}\n\n\t\treturn url;\n\t}\n\n\t/**\n\t * Determine the type of they input passed to open\n\t * @private\n\t * @param {string} input\n\t * @return {string} binary | directory | epub | opf\n\t */\n\tdetermineType(input) {\n\t\tvar url;\n\t\tvar path;\n\t\tvar extension;\n\n\t\tif (this.settings.encoding === \"base64\") {\n\t\t\treturn INPUT_TYPE.BASE64;\n\t\t}\n\n\t\tif(typeof(input) != \"string\") {\n\t\t\treturn INPUT_TYPE.BINARY;\n\t\t}\n\n\t\turl = new Url(input);\n\t\tpath = url.path();\n\t\textension = path.extension;\n\n\t\t// If there's a search string, remove it before determining type\n\t\tif (extension) {\n\t\t\textension = extension.replace(/\\?.*$/, \"\");\n\t\t}\n\n\t\tif (!extension) {\n\t\t\treturn INPUT_TYPE.DIRECTORY;\n\t\t}\n\n\t\tif(extension === \"epub\"){\n\t\t\treturn INPUT_TYPE.EPUB;\n\t\t}\n\n\t\tif(extension === \"opf\"){\n\t\t\treturn INPUT_TYPE.OPF;\n\t\t}\n\n\t\tif(extension === \"json\"){\n\t\t\treturn INPUT_TYPE.MANIFEST;\n\t\t}\n\t}\n\n\n\t/**\n\t * unpack the contents of the Books packaging\n\t * @private\n\t * @param {Packaging} packaging object\n\t */\n\tunpack(packaging) {\n\t\tthis.package = packaging; //TODO: deprecated this\n\n\t\tif (this.packaging.metadata.layout === \"\") {\n\t\t\t// rendition:layout not set - check display options if book is pre-paginated\n\t\t\tthis.load(this.url.resolve(IBOOKS_DISPLAY_OPTIONS_PATH)).then((xml) => {\n\t\t\t\tthis.displayOptions = new DisplayOptions(xml);\n\t\t\t\tthis.loading.displayOptions.resolve(this.displayOptions);\n\t\t\t}).catch((err) => {\n\t\t\t\tthis.displayOptions = new DisplayOptions();\n\t\t\t\tthis.loading.displayOptions.resolve(this.displayOptions);\n\t\t\t});\n\t\t} else {\n\t\t\tthis.displayOptions = new DisplayOptions();\n\t\t\tthis.loading.displayOptions.resolve(this.displayOptions);\n\t\t}\n\n\t\tthis.spine.unpack(this.packaging, this.resolve.bind(this), this.canonical.bind(this));\n\n\t\tthis.resources = new Resources(this.packaging.manifest, {\n\t\t\tarchive: this.archive,\n\t\t\tresolver: this.resolve.bind(this),\n\t\t\trequest: this.request.bind(this),\n\t\t\treplacements: this.settings.replacements || (this.archived ? \"blobUrl\" : \"base64\")\n\t\t});\n\n\t\tthis.loadNavigation(this.packaging).then(() => {\n\t\t\t// this.toc = this.navigation.toc;\n\t\t\tthis.loading.navigation.resolve(this.navigation);\n\t\t});\n\n\t\tif (this.packaging.coverPath) {\n\t\t\tthis.cover = this.resolve(this.packaging.coverPath);\n\t\t}\n\t\t// Resolve promises\n\t\tthis.loading.manifest.resolve(this.packaging.manifest);\n\t\tthis.loading.metadata.resolve(this.packaging.metadata);\n\t\tthis.loading.spine.resolve(this.spine);\n\t\tthis.loading.cover.resolve(this.cover);\n\t\tthis.loading.resources.resolve(this.resources);\n\t\tthis.loading.pageList.resolve(this.pageList);\n\n\t\tthis.isOpen = true;\n\n\t\tif(this.archived || this.settings.replacements && this.settings.replacements != \"none\") {\n\t\t\tthis.replacements().then(() => {\n\t\t\t\tthis.loaded.displayOptions.then(() => {\n\t\t\t\t\tthis.opening.resolve(this);\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(err);\n\t\t\t});\n\t\t} else {\n\t\t\t// Resolve book opened promise\n\t\t\tthis.loaded.displayOptions.then(() => {\n\t\t\t\tthis.opening.resolve(this);\n\t\t\t});\n\t\t}\n\n\t}\n\n\t/**\n\t * Load Navigation and PageList from package\n\t * @private\n\t * @param {Packaging} packaging\n\t */\n\tloadNavigation(packaging) {\n\t\tlet navPath = packaging.navPath || packaging.ncxPath;\n\t\tlet toc = packaging.toc;\n\n\t\t// From json manifest\n\t\tif (toc) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tthis.navigation = new Navigation(toc);\n\n\t\t\t\tif (packaging.pageList) {\n\t\t\t\t\tthis.pageList = new PageList(packaging.pageList); // TODO: handle page lists from Manifest\n\t\t\t\t}\n\n\t\t\t\tresolve(this.navigation);\n\t\t\t});\n\t\t}\n\n\t\tif (!navPath) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tthis.navigation = new Navigation();\n\t\t\t\tthis.pageList = new PageList();\n\n\t\t\t\tresolve(this.navigation);\n\t\t\t});\n\t\t}\n\n\t\treturn this.load(navPath, \"xml\")\n\t\t\t.then((xml) => {\n\t\t\t\tthis.navigation = new Navigation(xml);\n\t\t\t\tthis.pageList = new PageList(xml);\n\t\t\t\treturn this.navigation;\n\t\t\t});\n\t}\n\n\t/**\n\t * Gets a Section of the Book from the Spine\n\t * Alias for `book.spine.get`\n\t * @param {string} target\n\t * @return {Section}\n\t */\n\tsection(target) {\n\t\treturn this.spine.get(target);\n\t}\n\n\t/**\n\t * Sugar to render a book to an element\n\t * @param {element | string} element element or string to add a rendition to\n\t * @param {object} [options]\n\t * @return {Rendition}\n\t */\n\trenderTo(element, options) {\n\t\tthis.rendition = new Rendition(this, options);\n\t\tthis.rendition.attachTo(element);\n\n\t\treturn this.rendition;\n\t}\n\n\t/**\n\t * Set if request should use withCredentials\n\t * @param {boolean} credentials\n\t */\n\tsetRequestCredentials(credentials) {\n\t\tthis.settings.requestCredentials = credentials;\n\t}\n\n\t/**\n\t * Set headers request should use\n\t * @param {object} headers\n\t */\n\tsetRequestHeaders(headers) {\n\t\tthis.settings.requestHeaders = headers;\n\t}\n\n\t/**\n\t * Unarchive a zipped epub\n\t * @private\n\t * @param {binary} input epub data\n\t * @param {string} [encoding]\n\t * @return {Archive}\n\t */\n\tunarchive(input, encoding) {\n\t\tthis.archive = new Archive();\n\t\treturn this.archive.open(input, encoding);\n\t}\n\n\t/**\n\t * Store the epubs contents\n\t * @private\n\t * @param {binary} input epub data\n\t * @param {string} [encoding]\n\t * @return {Store}\n\t */\n\tstore(name) {\n\t\t// Use \"blobUrl\" or \"base64\" for replacements\n\t\tlet replacementsSetting = this.settings.replacements && this.settings.replacements !== \"none\";\n\t\t// Save original url\n\t\tlet originalUrl = this.url;\n\t\t// Save original request method\n\t\tlet requester = this.settings.requestMethod || request.bind(this);\n\t\t// Create new Store\n\t\tthis.storage = new Store(name, requester, this.resolve.bind(this));\n\t\t// Replace request method to go through store\n\t\tthis.request = this.storage.request.bind(this.storage);\n\n\t\tthis.opened.then(() => {\n\t\t\tif (this.archived) {\n\t\t\t\tthis.storage.requester = this.archive.request.bind(this.archive);\n\t\t\t}\n\t\t\t// Substitute hook\n\t\t\tlet substituteResources = (output, section) => {\n\t\t\t\tsection.output = this.resources.substitute(output, section.url);\n\t\t\t};\n\n\t\t\t// Set to use replacements\n\t\t\tthis.resources.settings.replacements = replacementsSetting || \"blobUrl\";\n\t\t\t// Create replacement urls\n\t\t\tthis.resources.replacements().\n\t\t\t\tthen(() => {\n\t\t\t\t\treturn this.resources.replaceCss();\n\t\t\t\t});\n\n\t\t\tthis.storage.on(\"offline\", () => {\n\t\t\t\t// Remove url to use relative resolving for hrefs\n\t\t\t\tthis.url = new Url(\"/\", \"\");\n\t\t\t\t// Add hook to replace resources in contents\n\t\t\t\tthis.spine.hooks.serialize.register(substituteResources);\n\t\t\t});\n\n\t\t\tthis.storage.on(\"online\", () => {\n\t\t\t\t// Restore original url\n\t\t\t\tthis.url = originalUrl;\n\t\t\t\t// Remove hook\n\t\t\t\tthis.spine.hooks.serialize.deregister(substituteResources);\n\t\t\t});\n\n\t\t});\n\n\t\treturn this.storage;\n\t}\n\n\t/**\n\t * Get the cover url\n\t * @return {Promise} coverUrl\n\t */\n\tcoverUrl() {\n\t\treturn this.loaded.cover.then(() => {\n\t\t\tif (!this.cover) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (this.archived) {\n\t\t\t\treturn this.archive.createUrl(this.cover);\n\t\t\t} else {\n\t\t\t\treturn this.cover;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Load replacement urls\n\t * @private\n\t * @return {Promise} completed loading urls\n\t */\n\treplacements() {\n\t\tthis.spine.hooks.serialize.register((output, section) => {\n\t\t\tsection.output = this.resources.substitute(output, section.url);\n\t\t});\n\n\t\treturn this.resources.replacements().\n\t\t\tthen(() => {\n\t\t\t\treturn this.resources.replaceCss();\n\t\t\t});\n\t}\n\n\t/**\n\t * Find a DOM Range for a given CFI Range\n\t * @param {EpubCFI} cfiRange a epub cfi range\n\t * @return {Promise}\n\t */\n\tgetRange(cfiRange) {\n\t\tvar cfi = new EpubCFI(cfiRange);\n\t\tvar item = this.spine.get(cfi.spinePos);\n\t\tvar _request = this.load.bind(this);\n\t\tif (!item) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\treject(\"CFI could not be found\");\n\t\t\t});\n\t\t}\n\t\treturn item.load(_request).then(function (contents) {\n\t\t\tvar range = cfi.toRange(item.document);\n\t\t\treturn range;\n\t\t});\n\t}\n\n\t/**\n\t * Generates the Book Key using the identifier in the manifest or other string provided\n\t * @param {string} [identifier] to use instead of metadata identifier\n\t * @return {string} key\n\t */\n\tkey(identifier) {\n\t\tvar ident = identifier || this.packaging.metadata.identifier || this.url.filename;\n\t\treturn `epubjs:${EPUBJS_VERSION}:${ident}`;\n\t}\n\n\t/**\n\t * Destroy the Book and all associated objects\n\t */\n\tdestroy() {\n\t\tthis.opened = undefined;\n\t\tthis.loading = undefined;\n\t\tthis.loaded = undefined;\n\t\tthis.ready = undefined;\n\n\t\tthis.isOpen = false;\n\t\tthis.isRendered = false;\n\n\t\tthis.spine && this.spine.destroy();\n\t\tthis.locations && this.locations.destroy();\n\t\tthis.pageList && this.pageList.destroy();\n\t\tthis.archive && this.archive.destroy();\n\t\tthis.resources && this.resources.destroy();\n\t\tthis.container && this.container.destroy();\n\t\tthis.packaging && this.packaging.destroy();\n\t\tthis.rendition && this.rendition.destroy();\n\t\tthis.displayOptions && this.displayOptions.destroy();\n\n\t\tthis.spine = undefined;\n\t\tthis.locations = undefined;\n\t\tthis.pageList = undefined;\n\t\tthis.archive = undefined;\n\t\tthis.resources = undefined;\n\t\tthis.container = undefined;\n\t\tthis.packaging = undefined;\n\t\tthis.rendition = undefined;\n\n\t\tthis.navigation = undefined;\n\t\tthis.url = undefined;\n\t\tthis.path = undefined;\n\t\tthis.archived = false;\n\t}\n\n}\n\n//-- Enable binding events to book\nEventEmitter(Book.prototype);\n\nexport default Book;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","module.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = innerResult.call(iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var argumentsLength = arguments.length;\n var i = 1;\n while (argumentsLength > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (isCallable(fn) ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\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","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var conventions = require(\"./conventions\");\n\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record} current\n * @param {string} element\n * @returns {Record}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tdest[p] = src[p];\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR \t= ExceptionCode.INVALID_STATE_ERR \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR \t= ExceptionCode.SYNTAX_ERR \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR \t= ExceptionCode.NAMESPACE_ERR \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR \t= ExceptionCode.INVALID_ACCESS_ERR \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0, \n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index unsigned long \n\t * Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index. \n\t */\n\titem: function(index) {\n\t\treturn this[index] || null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t\t\n\t\t\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\t\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI, qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises \n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises \n\t\tthis.insertBefore(newChild,oldChild);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n // Introduced in DOM Level 2:\n hasAttributes:function(){\n \treturn this.attributes.length>0;\n },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n lookupPrefix:function(namespaceURI){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tfor(var n in map){\n \t\t\t\tif(map[n] == namespaceURI){\n \t\t\t\t\treturn n;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n lookupNamespaceURI:function(prefix){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tif(prefix in map){\n \t\t\t\treturn map[prefix] ;\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n isDefaultNamespace:function(namespaceURI){\n \tvar prefix = this.lookupPrefix(namespaceURI);\n \treturn prefix == null;\n }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '<' ||\n c == '>' && '>' ||\n c == '&' && '&' ||\n c == '\"' && '"' ||\n '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n }while(node=node.nextSibling)\n }\n}\n\n\n\nfunction Document(){\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\nfunction _onUpdateChild(doc,el,newChild){\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif(newChild){\n\t\t\tcs[cs.length++] = newChild;\n\t\t}else{\n\t\t\t//console.log(1)\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile(child){\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild =child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t}\n\t}\n}\n\n/**\n * attributes;\n * children;\n * \n * writeable properties:\n * nodeValue,Attr:value,CharacterData:data\n * prefix\n */\nfunction _removeChild(parentNode,child){\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif(previous){\n\t\tprevious.nextSibling = next;\n\t}else{\n\t\tparentNode.firstChild = next\n\t}\n\tif(next){\n\t\tnext.previousSibling = previous;\n\t}else{\n\t\tparentNode.lastChild = previous;\n\t}\n\t_onUpdateChild(parentNode.ownerDocument,parentNode);\n\treturn child;\n}\n/**\n * preformance key(refChild == null)\n */\nfunction _insertBefore(parentNode,newChild,nextChild){\n\tvar cp = newChild.parentNode;\n\tif(cp){\n\t\tcp.removeChild(newChild);//remove and update\n\t}\n\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = newChild.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn newChild;\n\t\t}\n\t\tvar newLast = newChild.lastChild;\n\t}else{\n\t\tnewFirst = newLast = newChild;\n\t}\n\tvar pre = nextChild ? nextChild.previousSibling : parentNode.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = nextChild;\n\t\n\t\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparentNode.firstChild = newFirst;\n\t}\n\tif(nextChild == null){\n\t\tparentNode.lastChild = newLast;\n\t}else{\n\t\tnextChild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parentNode;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parentNode.ownerDocument||parentNode,parentNode);\n\t//console.log(parentNode.lastChild.nextSibling == null)\n\tif (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnewChild.firstChild = newChild.lastChild = null;\n\t}\n\treturn newChild;\n}\nfunction _appendSingleChild(parentNode,newChild){\n\tvar cp = newChild.parentNode;\n\tif(cp){\n\t\tvar pre = parentNode.lastChild;\n\t\tcp.removeChild(newChild);//remove and update\n\t\tvar pre = parentNode.lastChild;\n\t}\n\tvar pre = parentNode.lastChild;\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = pre;\n\tnewChild.nextSibling = null;\n\tif(pre){\n\t\tpre.nextSibling = newChild;\n\t}else{\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument,parentNode,newChild);\n\treturn newChild;\n\t//console.log(\"__aa\",parentNode.lastChild.nextSibling == null)\n}\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName : '#document',\n\tnodeType : DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype : null,\n\tdocumentElement : null,\n\t_inc : 1,\n\n\tinsertBefore : function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\tif(this.documentElement == null && newChild.nodeType == ELEMENT_NODE){\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild;\n\t},\n\tremoveChild : function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\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\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.target = target;\n\t\tnode.nodeValue= node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\t\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\t\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\t\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t\t\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\t\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\t\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\t\n\tvar i = visibleNamespaces.length \n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * The replacement text of any entity referred to directly or indirectly in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml/#CleanAttrVals\n * @see https://www.w3.org/TR/xml/#NT-AttValue\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<&\"]/g,_xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\t\t\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&` and `<` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" > \", and must, for compatibility,\n\t\t * be escaped using either `>` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&]/g,_xmlEncoder)\n\t\t\t.replace(/]]>/g, ']]>')\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~toString(requireObjectCoercible(this))\n .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\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","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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","module.exports = __WEBPACK_EXTERNAL_MODULE__168__;","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","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = fn.call(input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = fn.call(input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (argument) {\n if (typeof argument === 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar bind = require('../internals/function-bind-context');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw TypeError(String(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","module.exports = typeof window == 'object';\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\n\nvar assign = require('es5-ext/object/assign')\n , normalizeOpts = require('es5-ext/object/normalize-options')\n , isCallable = require('es5-ext/object/is-callable')\n , contains = require('es5-ext/string/#/contains')\n\n , d;\n\nd = module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif ((arguments.length < 2) || (typeof dscr !== 'string')) {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (dscr == null) {\n\t\tc = w = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t\tw = contains.call(dscr, 'w');\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== 'string') {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (get == null) {\n\t\tget = undefined;\n\t} else if (!isCallable(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (set == null) {\n\t\tset = undefined;\n\t} else if (!isCallable(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (dscr == null) {\n\t\tc = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")()\n\t? Object.assign\n\t: require(\"./shim\");\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\";\n\nvar keys = require(\"../keys\")\n , value = require(\"../valid-value\")\n , max = Math.max;\n\nmodule.exports = function (dest, src /*, …srcn*/) {\n\tvar error, i, length = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry {\n\t\t\tdest[key] = src[key];\n\t\t} catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < length; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")()\n\t? Object.keys\n\t: require(\"./shim\");\n","\"use strict\";\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys(\"primitive\");\n\t\treturn true;\n\t} catch (e) {\n return false;\n}\n};\n","\"use strict\";\n\nvar isValue = require(\"../is-value\");\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) {\n\treturn keys(isValue(object) ? Object(object) : object);\n};\n","\"use strict\";\n\n// eslint-disable-next-line no-empty-function\nmodule.exports = function () {};\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function (opts1 /*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (!isValue(options)) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n","// Deprecated\n\n\"use strict\";\n\nmodule.exports = function (obj) {\n return typeof obj === \"function\";\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")()\n\t? String.prototype.contains\n\t: require(\"./shim\");\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","\"use strict\";\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\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';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\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","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\n// eslint-disable-next-line es/no-object-getownpropertynames -- required for testing\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n getOwnPropertyNames: getOwnPropertyNames\n});\n","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = [].splice;\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice.call(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax = new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tif(source && typeof source === 'string'){\n\t\tsax.parse(source,defaultNSMap,entityMap);\n\t}else{\n\t\tsax.errorHandler.error(\"invalid doc source\");\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n \tif (this.locator) {\n \tthis.doc.documentURI = this.locator.systemId;\n \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\n\t var len = attrs.length;\n\t appendElement(this, el);\n\t this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t for (var i = 0 ; i < len; i++) {\n\t var namespaceURI = attrs.getURI(i);\n\t var value = attrs.getValue(i);\n\t var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t var ins = this.doc.createProcessingInstruction(target, data);\n\t this.locator && position(this.locator,ins)\n\t appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\n\t \tlocator.lineNumber = 0;\n\t }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t var comm = this.doc.createComment(chars);\n\t this.locator && position(this.locator,comm)\n\t appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t //used in characters() methods\n\t this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t if (impl && impl.createDocumentType) {\n\t var dt = impl.createDocumentType(name, publicId, systemId);\n\t this.locator && position(this.locator,dt)\n\t appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n * #comment(chars, start, length)\n * #startCDATA()\n * #endCDATA()\n * #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n * #endDTD()\n * #startEntity(name)\n * #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n * #elementDecl(name, model)\n * #externalEntityDecl(name, publicId, systemId)\n * #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\n * #resolveEntity(publicId, systemId)\n * #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n * #notationDecl(name, publicId, systemId) {};\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n if (!hander.currentElement) {\n hander.doc.appendChild(node);\n } else {\n hander.currentElement.appendChild(node);\n }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.DOMParser = DOMParser;\n\n/**\n * @deprecated Import/require from main entry point instead\n */\nexports.DOMImplementation = dom.DOMImplementation;\n\n/**\n * @deprecated Import/require from main entry point instead\n */\nexports.XMLSerializer = dom.XMLSerializer;\n","var freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({amp:'&', apos:\"'\", gt:'>', lt:'<', quot:'\"'})\n\n/**\n * A map of currently 241 entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n lt: '<',\n gt: '>',\n amp: '&',\n quot: '\"',\n apos: \"'\",\n Agrave: \"À\",\n Aacute: \"Á\",\n Acirc: \"Â\",\n Atilde: \"Ã\",\n Auml: \"Ä\",\n Aring: \"Å\",\n AElig: \"Æ\",\n Ccedil: \"Ç\",\n Egrave: \"È\",\n Eacute: \"É\",\n Ecirc: \"Ê\",\n Euml: \"Ë\",\n Igrave: \"Ì\",\n Iacute: \"Í\",\n Icirc: \"Î\",\n Iuml: \"Ï\",\n ETH: \"Ð\",\n Ntilde: \"Ñ\",\n Ograve: \"Ò\",\n Oacute: \"Ó\",\n Ocirc: \"Ô\",\n Otilde: \"Õ\",\n Ouml: \"Ö\",\n Oslash: \"Ø\",\n Ugrave: \"Ù\",\n Uacute: \"Ú\",\n Ucirc: \"Û\",\n Uuml: \"Ü\",\n Yacute: \"Ý\",\n THORN: \"Þ\",\n szlig: \"ß\",\n agrave: \"à\",\n aacute: \"á\",\n acirc: \"â\",\n atilde: \"ã\",\n auml: \"ä\",\n aring: \"å\",\n aelig: \"æ\",\n ccedil: \"ç\",\n egrave: \"è\",\n eacute: \"é\",\n ecirc: \"ê\",\n euml: \"ë\",\n igrave: \"ì\",\n iacute: \"í\",\n icirc: \"î\",\n iuml: \"ï\",\n eth: \"ð\",\n ntilde: \"ñ\",\n ograve: \"ò\",\n oacute: \"ó\",\n ocirc: \"ô\",\n otilde: \"õ\",\n ouml: \"ö\",\n oslash: \"ø\",\n ugrave: \"ù\",\n uacute: \"ú\",\n ucirc: \"û\",\n uuml: \"ü\",\n yacute: \"ý\",\n thorn: \"þ\",\n yuml: \"ÿ\",\n nbsp: \"\\u00a0\",\n iexcl: \"¡\",\n cent: \"¢\",\n pound: \"£\",\n curren: \"¤\",\n yen: \"¥\",\n brvbar: \"¦\",\n sect: \"§\",\n uml: \"¨\",\n copy: \"©\",\n ordf: \"ª\",\n laquo: \"«\",\n not: \"¬\",\n shy: \"­­\",\n reg: \"®\",\n macr: \"¯\",\n deg: \"°\",\n plusmn: \"±\",\n sup2: \"²\",\n sup3: \"³\",\n acute: \"´\",\n micro: \"µ\",\n para: \"¶\",\n middot: \"·\",\n cedil: \"¸\",\n sup1: \"¹\",\n ordm: \"º\",\n raquo: \"»\",\n frac14: \"¼\",\n frac12: \"½\",\n frac34: \"¾\",\n iquest: \"¿\",\n times: \"×\",\n divide: \"÷\",\n forall: \"∀\",\n part: \"∂\",\n exist: \"∃\",\n empty: \"∅\",\n nabla: \"∇\",\n isin: \"∈\",\n notin: \"∉\",\n ni: \"∋\",\n prod: \"∏\",\n sum: \"∑\",\n minus: \"−\",\n lowast: \"∗\",\n radic: \"√\",\n prop: \"∝\",\n infin: \"∞\",\n ang: \"∠\",\n and: \"∧\",\n or: \"∨\",\n cap: \"∩\",\n cup: \"∪\",\n 'int': \"∫\",\n there4: \"∴\",\n sim: \"∼\",\n cong: \"≅\",\n asymp: \"≈\",\n ne: \"≠\",\n equiv: \"≡\",\n le: \"≤\",\n ge: \"≥\",\n sub: \"⊂\",\n sup: \"⊃\",\n nsub: \"⊄\",\n sube: \"⊆\",\n supe: \"⊇\",\n oplus: \"⊕\",\n otimes: \"⊗\",\n perp: \"⊥\",\n sdot: \"⋅\",\n Alpha: \"Α\",\n Beta: \"Β\",\n Gamma: \"Γ\",\n Delta: \"Δ\",\n Epsilon: \"Ε\",\n Zeta: \"Ζ\",\n Eta: \"Η\",\n Theta: \"Θ\",\n Iota: \"Ι\",\n Kappa: \"Κ\",\n Lambda: \"Λ\",\n Mu: \"Μ\",\n Nu: \"Ν\",\n Xi: \"Ξ\",\n Omicron: \"Ο\",\n Pi: \"Π\",\n Rho: \"Ρ\",\n Sigma: \"Σ\",\n Tau: \"Τ\",\n Upsilon: \"Υ\",\n Phi: \"Φ\",\n Chi: \"Χ\",\n Psi: \"Ψ\",\n Omega: \"Ω\",\n alpha: \"α\",\n beta: \"β\",\n gamma: \"γ\",\n delta: \"δ\",\n epsilon: \"ε\",\n zeta: \"ζ\",\n eta: \"η\",\n theta: \"θ\",\n iota: \"ι\",\n kappa: \"κ\",\n lambda: \"λ\",\n mu: \"μ\",\n nu: \"ν\",\n xi: \"ξ\",\n omicron: \"ο\",\n pi: \"π\",\n rho: \"ρ\",\n sigmaf: \"ς\",\n sigma: \"σ\",\n tau: \"τ\",\n upsilon: \"υ\",\n phi: \"φ\",\n chi: \"χ\",\n psi: \"ψ\",\n omega: \"ω\",\n thetasym: \"ϑ\",\n upsih: \"ϒ\",\n piv: \"ϖ\",\n OElig: \"Œ\",\n oelig: \"œ\",\n Scaron: \"Š\",\n scaron: \"š\",\n Yuml: \"Ÿ\",\n fnof: \"ƒ\",\n circ: \"ˆ\",\n tilde: \"˜\",\n ensp: \" \",\n emsp: \" \",\n thinsp: \" \",\n zwnj: \"‌\",\n zwj: \"‍\",\n lrm: \"‎\",\n rlm: \"‏\",\n ndash: \"–\",\n mdash: \"—\",\n lsquo: \"‘\",\n rsquo: \"’\",\n sbquo: \"‚\",\n ldquo: \"“\",\n rdquo: \"”\",\n bdquo: \"„\",\n dagger: \"†\",\n Dagger: \"‡\",\n bull: \"•\",\n hellip: \"…\",\n permil: \"‰\",\n prime: \"′\",\n Prime: \"″\",\n lsaquo: \"‹\",\n rsaquo: \"›\",\n oline: \"‾\",\n euro: \"€\",\n trade: \"™\",\n larr: \"←\",\n uarr: \"↑\",\n rarr: \"→\",\n darr: \"↓\",\n harr: \"↔\",\n crarr: \"↵\",\n lceil: \"⌈\",\n rceil: \"⌉\",\n lfloor: \"⌊\",\n rfloor: \"⌋\",\n loz: \"◊\",\n spades: \"♠\",\n clubs: \"♣\",\n hearts: \"♥\",\n diams: \"♦\"\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring \nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\t\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif(k in entityMap){\n\t\t\treturn entityMap[k]; \n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\t\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\t\t\t\t\t\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(qname, value, startIndex)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t//console.log(attrName,value,start,p)\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\t//console.dir(el)\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value.replace(/&#?\\w+;/g,entityReplacer), start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute \n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value) \n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\t\t\t\t\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor(prefix in localNSMap){\n\t\t\t\tdomBuilder.endPrefixMapping(prefix) \n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\t\t\t\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//