{"version":3,"sources":["webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/has-own-property.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/function-bind.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/lodash/isSet.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/make-built-in.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/iterator-define.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/classof.js","webpack:///./node_modules/dexie/dist/dexie.mjs","webpack:///./src/app/db.js","webpack:///./node_modules/lodash/assign.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/function-name.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.symbol.constructor.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.symbol.key-for.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.object.to-string.js","webpack:///./src/app/components/HomePageMeta.js","webpack:///./src/app/templates/Articles/HomePageHighlight.js","webpack:///./src/app/pages/LandingPages/HomePage.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/to-property-key.js","webpack:///./src/app/components/FollowConcept.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/shared.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/try-to-string.js","webpack:///./src/app/components/AuthorBio.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/a-constructor.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.object.define-property.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/get-json-replacer-function.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.reflect.construct.js","webpack:///./node_modules/lodash/_baseAssignIn.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./node_modules/lodash/_copySymbolsIn.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/get-method.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/is-array.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/engine-v8-version.js","webpack:///./src/app/static/icons/no-search-results-v2.svg","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/lodash/_baseIsMap.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/path.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/create-iter-result-object.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-create.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/create-property.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/function-call.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/html.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/global.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/array-slice-simple.js","webpack:///./node_modules/semantic-ui-react/dist/es/elements/Loader/Loader.js","webpack:///./node_modules/lodash/_baseClone.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/create-property-descriptor.js","webpack:///./src/app/pages/AuthorsSectionPage.js","webpack:///./src/app/components/AdFormats.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/to-string.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/to-object.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/well-known-symbol-define.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/is-constructor.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/lodash/_copySymbols.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/array-species-constructor.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/lodash/_baseAssign.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./src/app/images/brands/icons/notifications-ico.svg","webpack:///./node_modules/lodash/_cloneDataView.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/an-object.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/subscribe-ui-event/dist-es/lib/supportPassiveEvent.js","webpack:///./node_modules/subscribe-ui-event/dist-es/globalVars.js","webpack:///./node_modules/subscribe-ui-event/dist-es/lib/listen.js","webpack:///./node_modules/subscribe-ui-event/dist-es/lib/leIE8.js","webpack:///./node_modules/subscribe-ui-event/dist-es/AugmentedEvent.js","webpack:///./node_modules/subscribe-ui-event/dist-es/lib/rAFThrottle.js","webpack:///./node_modules/subscribe-ui-event/dist-es/mainEventConnectors.js","webpack:///./node_modules/subscribe-ui-event/dist-es/constants.js","webpack:///./node_modules/subscribe-ui-event/dist-es/subscribe.js","webpack:///./node_modules/subscribe-ui-event/dist-es/unsubscribe.js","webpack:///./node_modules/subscribe-ui-event/index.es.js","webpack:///./node_modules/react-stickynode/dist/es/Sticky.js","webpack:///./src/app/components/SidebarArticleCard.js","webpack:///./src/app/components/MostReadArticles.js","webpack:///./src/app/components/NotificationsBell.js","webpack:///./src/app/components/Sidebar.js","webpack:///./node_modules/react-spinners/esm/helpers/unitConverter.js","webpack:///./node_modules/react-spinners/esm/helpers/animation.js","webpack:///./node_modules/react-spinners/esm/PulseLoader.js","webpack:///./src/app/pages/SearchPage.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/iterator-create-constructor.js","webpack:///./node_modules/lodash/_cloneRegExp.js","webpack:///./node_modules/performance-now/lib/performance-now.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/uid.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/math-trunc.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/define-built-in.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/symbol-define-to-primitive.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/iterators.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/is-null-or-undefined.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./src/app/components/WingBanners.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/is-object.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/lodash/_cloneSymbol.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.symbol.for.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./src/app/components/ArticleCard.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/export.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/to-length.js","webpack:///./node_modules/lodash/clone.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/define-global-property.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/symbol-registry-detection.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/lodash/_baseIsSet.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./src/app/components/StyledLink.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/document-all.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/lodash/_initCloneByTag.js","webpack:///./node_modules/raf/index.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/fails.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/lodash/_initCloneArray.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/lodash/isMap.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/modules/es.json.stringify.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/react-stickynode/node_modules/core-js/internals/define-built-in-accessor.js"],"names":["defineWellKnownSymbol","uncurryThis","toObject","hasOwnProperty","module","exports","Object","hasOwn","it","key","Uint8Array","arrayBuffer","result","constructor","byteLength","set","uncurryThisAccessor","anObject","aPossiblePrototype","setPrototypeOf","setter","CORRECT_SETTER","test","prototype","Array","error","O","proto","__proto__","undefined","toIndexedObject","addToUnscopables","Iterators","InternalStateModule","defineProperty","f","defineIterator","createIterResultObject","IS_PURE","DESCRIPTORS","setInternalState","getInternalState","getterFor","iterated","kind","this","type","target","index","state","length","values","Arguments","name","value","baseCreate","getPrototype","isPrototype","object","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","source","exceptions","keys","getOwnPropertyDescriptor","i","aCallable","isObject","arraySlice","NATIVE_BIND","$Function","Function","concat","join","factories","construct","C","argsLength","args","list","bind","that","F","Prototype","partArgs","arguments","boundFunction","apply","method","fails","getPrototypeOf","baseIsSet","baseUnary","nodeUtil","nodeIsSet","isSet","toLength","obj","isCallable","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","inspectSource","enforceInternalState","enforce","get","$String","String","stringSlice","slice","replace","CONFIGURABLE_LENGTH","TEMPLATE","split","makeBuiltIn","options","getter","configurable","arity","writable","toString","$","call","FunctionName","createIteratorConstructor","setToStringTag","createNonEnumerableProperty","defineBuiltIn","wellKnownSymbol","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","IteratorPrototype","BUGGY_SAFARI_ITERATORS","ITERATOR","returnThis","Iterable","NAME","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","TO_STRING_TAG","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","forced","TO_STRING_TAG_SUPPORT","classofRaw","$Object","CORRECT_ARGUMENTS","tag","tryGet","callee","__assign","assign","t","s","n","p","__spreadArray","to","from","pack","ar","l","_global","globalThis","self","window","global","isArray","extend","extension","forEach","Promise","getProto","_hasOwn","prop","props","Reflect","setProp","functionOrGetSet","derive","Child","Parent","create","getPropertyDescriptor","_slice","start","end","override","origFunc","overridedFactory","assert","b","Error","asap$1","fn","setImmediate","setTimeout","arrayToObject","array","extractor","reduce","item","nameAndValue","getByKeyPath","keyPath","rv","val","push","period","indexOf","innerObj","substr","setByKeyPath","isFrozen","currentKeyPath","remainingKeyPath","isNaN","parseInt","splice","shallowClone","m","flatten","a","intrinsicTypeNames","map","num","filter","intrinsicTypes","x","circularRefs","deepClone","any","WeakMap","innerDeepClone","toStringTag","o","iteratorSymbol","Symbol","iterator","getIteratorOf","NO_CHAR_ARRAY","getArrayOf","arrayLike","done","isAsyncFunction","debug","location","href","setDebug","libraryFilter","NEEDS_THROW_FOR_STACK","stack","getErrorWithStack","e","prettyStack","exception","numIgnoredFrames","message","frame","idbDomErrorNames","errorList","defaultTexts","VersionChanged","DatabaseClosed","Abort","TransactionInactive","MissingAPI","DexieError","msg","_e","getMultiErrorMessage","failures","v","ModifyError","successCount","failedKeys","BulkError","pos","failuresByPos","_stack","errnames","BaseException","fullName","msgOrInner","inner","Syntax","SyntaxError","Type","TypeError","Range","RangeError","exceptionMap","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","res","onsuccess","onerror","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","then","thiz","INTERNAL","_a$1","globalP","resolve","crypto","subtle","nativeP","digest","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","patchGlobalPromise","stack_being_generated","schedulePhysicalTick","physicalTick","MutationObserver","hiddenDiv","document","createElement","observe","attributes","setAttribute","asap","callback","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","currentFulfiller","rejectionMapper","globalPSD","id","ref","unhandleds","onunhandled","globalError","pgp","env","finalize","uh","PSD","numScheduledCalls","tickFinalizers","DexiePromise","_listeners","onuncatched","_lib","psd","_PSD","_stackHolder","_prev","_numPrev","_state","_value","handleRejection","executePromiseTask","thenProp","microTaskId","totalEchoes","onFulfilled","onRejected","_this","possibleAwait","cleanup","decrementExpectedAwaits","reject","propagateToListener","Listener","nativeAwaitCompatibleWrap","linkToPreviousPromise","zone","promise","shouldExecuteTick","beginMicroTickScope","_then","propagateAllListeners","endMicroTickScope","ex","reason","_promise","tryCatch","origProp","some","addPossiblyUnhandledError","listeners","len","finalizePhysicalTick","listener","cb","callListener","ret","markErrorAsHandled","prev","numPrev","wasRootExec","callbacks","unhandledErrs","finalizers","PromiseReject","wrap","errorCatcher","outerScope","switchToZone","catch","handler","err","finally","onFinally","getStack","stacks","limit","errorName","failure","timeout","ms","Infinity","handle","Timeout","clearTimeout","snapShot","all","onPossibleParallellAsync","remaining","race","newPSD","newScope","usePSD","scheduler","follow","zoneProps","finalizer","run_at_end_of_this_or_next_physical_tick","allSettled","possiblePromises","results","status","AggregateError","task","awaits","echoes","taskCounter","zoneStack","zoneEchoes","zone_id_counter","a1","a2","parent","globalEnv","PromiseProp","nthen","getPatchedPromiseThen","gthen","incrementExpectedAwaits","possiblePromise","rejection","zoneEnterEcho","targetZone","zoneLeaveEcho","pop","bEnteringZone","currentZone","enqueueNativeMicroTask","GlobalPromise_1","targetEnv","GlobalPromise","a3","job","outerZone","origThen","onResolved","event","eventData","createEvent","initEvent","CustomEvent","detail","dispatchEvent","PromiseRejectionEvent","onunhandledrejection","_","defaultPrevented","console","warn","maxString","fromCharCode","INVALID_KEY_ARGUMENT","connections","isIEOrEdge","navigator","userAgent","hasIEDeleteObjectStoreBug","hangsOnDeleteLargeKeyRange","dexieStackFrameFilter","combine","filter1","filter2","AnyRange","lower","lowerOpen","upper","upperOpen","workaroundForUndefinedPrimKey","Table","_trans","mode","writeLocked","trans","_tx","tableName","checkTableInTransaction","schema","NotFound","idbtrans","db","transless","tempTransaction","storeNames","idbdb","openComplete","letThrough","_vip","_createTransaction","_dbSchema","PR1398_maxLoop","InvalidState","isOpen","_close","open","_completion","dbOpenError","isBeingOpened","_options","autoOpen","dbReadyPromise","keyOrCrit","where","first","core","hook","reading","fire","indexOrCrit","WhereClause","keyPaths","equals","compoundIndex","indexes","primKey","ix","compound","every","_maxKey","kp","JSON","stringify","idxByName","idb","_deps","indexedDB","cmp","_a","prevIndex","prevFilterFn","multi","idx","filterFunction","toCollection","and","count","thenShortcut","offset","numRows","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","readHook","unsubscribe","defineClass","content","add","auto","objToAdd","mutate","numFailures","lastResult","update","keyOrObject","modify","InvalidArgument","put","delete","clear","range","bulkGet","getMany","bulkAdd","objects","keysOrOptions","wantResults","allKeys","numObjects","objectsToAdd","bulkPut","objectsToPut","bulkDelete","numKeys","Events","ctx","evs","eventName","subscriber","subscribe","addEventType","chainFunction","defaultFunction","addConfiguredEvents","context","subscribers","cfg","makeClassConstructor","isPlainKeyRange","ignoreLimitFilter","algorithm","or","justLimit","replayFilter","addFilter","addReplayFilter","factory","isLimitFilter","curr","getIndexOrStore","coreSchema","isPrimKey","primaryKey","getIndexByKeyPath","Schema","openCursor","coreTable","keysOnly","dir","unique","query","iter","coreTrans","set_1","union","cursor","advance","stop","fail","_iterate","iterate","valueMapper","cursorPromise","wrappedFn","c","continue","advancer","ta","tb","NaN","al","bl","compareUint8Arrays","getUint8Array","compareArrays","ArrayBuffer","isView","tsTag","buffer","byteOffset","_read","_ctx","table","_write","_addAlgorithm","clone","raw","Math","min","sortBy","parts","lastPart","lastIndex","getval","order","sorter","aVal","bVal","sort","valueMapper_1","a_1","offsetLeft","rowsLeft","until","bIncludeStopEntry","last","isMatch","indexName","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","strKey","found","changes","modifyer","anythingModified","outbound","extractKey","modifyChunkSize","totalFailures","applyMutateResult","expectedCount","_i","nextChunk","cache","addValues","putValues","putKeys","deleteKeys","origValue","ctx_1","criteria","deleteCallback","changeSpec","coreRange","simpleCompare","simpleCompareReverse","collectionOrWhereClause","T","collection","emptyCollection","whereClause","rangeEqual","nextCasing","lowerKey","upperNeedle","lowerNeedle","llp","lwrKeyChar","addIgnoreCaseAlgorithm","match","needles","suffix","compare","upperNeedles","lowerNeedles","direction","nextKeySuffix","needlesLen","initDirection","toUpperCase","toLowerCase","upperFactory","lowerFactory","needleBounds","needle","nb","createRange","firstPossibleNeedle","lowestPossibleCasing","casing","enumerable","between","includeLower","includeUpper","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWith","str","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","ranges","ascending","descending","_min","max","_max","sortDirection","rangeSorter","newRange","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","checkKey","keyWithinCurrentRange","startsWithAnyOf","eventRejectHandler","preventDefault","stopPropagation","globalEvents","Transaction","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","fnAndPSD","shift","OpenFailed","active","transaction","durability","chromeTransactionDurability","ev","_reject","onabort","on","oncomplete","_resolve","storagemutated","bWriteLock","ReadOnly","_root","waitFor","promiseLike","root","_waitingFor","_waitingQueue","store","objectStore","spin","_spinCount","currentWaitPromise","abort","memoizedTables","_memoizedTables","tableSchema","transactionBoundTable","createIndexSpec","src","nameFromKeyPath","createTableSchema","getMaxKey","IdbKeyRange","only","getKeyExtractor","getSinglePathKeyExtractor","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","makeIDBKeyRange","upperBound","lowerBound","bound","tables","objectStoreNames","autoIncrement","indexByKeyPath","isPrimaryKey","indexNames","multiEntry","hasGetAll","extractSchema","isAddOrPut","req","reqs","errorHandler","args1","args2","keyCount","callbackCount","successHandler","_pos","request","nonInfinitLimit","idbKeyRange","getAll","getAllKeys","count_1","req_1","openKeyCursor","result_1","___id","_cursorContinue","_cursorContinuePrimaryKey","continuePrimaryKey","_cursorAdvance","doThrowCursorIsStopped","gotOne","iterationPromise","resolveIteration","rejectIteration","guardedCallback","createDbCoreTable","tableMap","MIN_KEY","MAX_KEY","createMiddlewareStacks","middlewares","IDBKeyRange","dbcore","stackImpl","down","createMiddlewareStack","generateMiddlewareStacks","_novip","_middlewares","tbl","setApiOnPlace","objs","tableNames","dbschema","propDesc","removeTablesApi","lowerVersionFirst","_cfg","version","runUpgraders","oldVersion","idbUpgradeTrans","globalSchema","_storeNames","rejectTransaction","createTable","populate","queue","versions","_versions","buildGlobalSchema","anyContentUpgraderHasRun","runQueue","oldSchema","newSchema","adjustToExistingIndexNames","diff","getSchemaDiff","tuple","change","recreate","Upgrade","store_1","addIndex","deleteIndex","del","idxName","contentUpgrade","upgradeSchema_1","returnValue_1","contentUpgradeIsAsync_1","promiseFollowed","decrementor","storeName","deleteObjectStore","deleteRemovedTables","contains","updateTablesAndIndexes","oldDef","newDef","def","oldIndexes","newIndexes","oldIdx","newIdx","createObjectStore","createIndex","j","idbindex","_hasGetAll","dexieName","indexSpec","WorkerGlobalScope","Version","_parseStoresSpec","stores","outSchema","indexNum","trim","storesSource","storesSpec","_allTables","upgrade","upgradeFunction","getDbNamesTable","dbNamesDB","Dexie$1","addons","dbnames","hasDatabasesNative","databases","_onDatabaseDeleted","vip","idbReady","intervalId","userAgentData","tryIdb","setInterval","clearInterval","dexieOpen","openCanceller","throwIfCancelled","resolveDbReady","dbReadyResolve","upgradeTransaction","wasCreated","dbName","autoSchema","round","verno","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","close","delreq","deleteDatabase","NoSuchDatabase","oldVer","pow","readGlobalSchema","ch","verifyInstalledSchema","onversionchange","vcFired","onclose","_onDatabaseCreated","onReadyBeingFired","ready","fireRemainders","remainders_1","awaitIterator","callNext","onSuccess","step","onError","throw","getNext","extractTransactionArgs","_tableArgs_","scopeFunc","enterTransactionScope","parentTransaction","returnValue","scopeFuncIsAsync","PrematureCommit","pad","virtualIndexMiddleware","level","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","keyLength","isVirtual","virtualIndex","translateRequest","createVirtualCursor","getObjectDiff","prfx","ap","bp","apTypeName","hooksMiddleware","downCore","downTable","dxTrans","deleting","creating","updating","addPutOrDelete","deleteNextChunk","deleteRange","getEffectiveKeys","effectiveKeys","getExistingValues","existingValues","contexts","existingValue","generatedPrimaryKey","objectDiff","additionalChanges_1","requestedValue_1","getFromTransactionCache","cacheExistingValuesMiddleware","cachedResult","isEmptyRange","node","RangeSet","fromOrTree","d","addRange","left","right","r","rebalance","rightWasCutOff","mergeRanges","newSet","_addRangeSet","getRangeSetIterator","keyProvided","up","_b","rootClone","oldRootRight","computeDepth","rangeSet","addKey","addKeys","observabilityMiddleware","FULL_RANGE","tableClone","mutatedParts","getRangeSet","part","pkRangeSet","delsRangeSet","newObjs","oldCache","oldObjs","addKeyOrKeys","oldKey","newKey","trackAffectedIndexes","getRange","_c","_d","readSubscribers","subscr","pkRangeSet_1","delsRangeSet_1","queriedIndex","queriedRanges","keysPromise_1","resultingKeys","pKeys","cursor_1","wantValues_1","pkey","domDeps","Dexie","deps","dependencies","cancelOpen","bSticky","db_1","keyRangeGenerator","keyRange","whereCtx","readingHook","createCollectionConstructor","createTableConstructor","complete","wasActive","createTransactionConstructor","versionNumber","createVersionConstructor","orCollection","_IDBKeyRange","createWhereClauseConstructor","newVersion","use","addon","versionInstance","_whenReady","unuse","mw","hasArguments","doDelete","backendDB","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","idbMode","onlyIfCompatible","SubTransaction","enterTransaction","InvalidTable","symbolObservable","observable","Observable","_subscribe","extendObservabilitySet","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","propagateLocally","updateParts","wasMe","propagatingLocally","databaseName","exists","getDatabaseNames","infos","info","ignoreTransaction","async","generatorFn","spawn","currentTransaction","promiseOrFunction","optionalTimeout","liveQuery","querier","observer","closed","accumMuts","currentObs","subscription","mutationListener","querying","startedListening","shouldNotify","rangeSet1","rangeSet2","i1","nextResult1","i2","nextResult2","rangesOverlap","doQuery","exec","execute","delByKeyPath","minKey","semVer","maxKey","addEventListener","updatedParts","event_1","initCustomEvent","BroadcastChannel","bc_1","unref","changedParts","postMessage","onmessage","data","localStorage","setItem","trig","random","matchAll","includeUncontrolled","client","parse","newValue","swContainer","serviceWorker","domError","bm","messages","assignValue","copyObject","createAssigner","isArrayLike","FunctionPrototype","getDescriptor","EXISTS","shared","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","isPrototypeOf","toPropertyKey","$toString","createPropertyDescriptor","nativeObjectCreate","objectKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternal","getOwnPropertySymbolsModule","definePropertiesModule","propertyIsEnumerableModule","defineBuiltInAccessor","sharedKey","hiddenKeys","wrappedWellKnownSymbolModule","defineSymbolToPrimitive","$forEach","HIDDEN","ObjectPrototype","$Symbol","SymbolPrototype","QObject","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","setSymbolDescriptor","P","Attributes","ObjectPrototypeDescriptor","description","symbol","$defineProperty","$defineProperties","Properties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","V","$getOwnPropertyDescriptor","descriptor","$getOwnPropertyNames","names","IS_OBJECT_PROTOTYPE","unsafe","sham","stat","useSetter","useSimple","defineProperties","getOwnPropertyNames","uncurryThisWithBind","functionToString","has","NATIVE_WEAK_MAP","metadata","facade","STATE","TYPE","isSymbol","tryToString","NATIVE_SYMBOL_REGISTRY","SymbolToStringRegistry","keyFor","sym","freeExports","nodeType","freeModule","Buffer","allocUnsafe","isDeep","copy","HomePageMeta","__jsx","Helmet","process","alternateName","url","logo","sameAs","headline","potentialAction","Default","_ref","articles","noImage","section","isConnected","moreButton","React","Fragment","article","contentKey","ArticleCard","MobileElse","Ad","_extends","path","slotId","targeting","leaderboard","collapseEmptyDiv","className","FORMATS","leaderboard3","Mobile","MagazineCover","lazy","Number","isInteger","mpu","adNotice","HomePage","_Component","_inherits","_super","_createSuper","_classCallCheck","isEmpty","is600","hasMounted","_createClass","setState","WingBanners","useSmall","onSlotRenderEndedLeft","onSlotRenderEndedRight","title","property","itemProp","setStickyRef","Articles","component","HomePageTemplate","pageSize","NoImage","withMore","SiteSidebar","sticky","DesktopTablet","Component","connect","dispatch","bindActionCreators","Prefetch","classList","documentCreateElement","DOMTokenListPrototype","toPrimitive","argument","DefaultTemplate","componentText","subscribeConcept","onClick","FollowConcept","_ref2","topic","followText","unFollowText","Template","template","_useState","useState","isSubscribed","setIsSubscribed","_useState2","helpPopupVisible","setHelpPopupVisible","_useState3","setSubscription","_useState4","registration","setRegistration","isSubscribedToConcept","uuid","log","qs","titleKey","endpoint","axios","post","headers","subscribed","useEffect","getRegistration","reg","pushManager","getSubscription","sub","_setSubscribed","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_context","sent","setSubscribed","canPush","Popup","visible","popupLogo","alt","color","display","justifycontent","Link","userVisibleOnly","applicationServerKey","urlB64ToUint8Array","copyright","license","$TypeError","AuthorBio","ImageOrNoImage","shape","width","image","imageUrl","slug","isConstructor","UNSCOPABLES","ArrayPrototype","classof","propertyIsEnumerable","replacer","rawLength","element","keysLength","getBuiltIn","aConstructor","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","instance","keysIn","debounce","func","wait","leading","trailing","getSymbolsIn","isNullOrUndefined","Deno","v8","trunc","number","getTag","isObjectLike","windowNames","getWindowNames","nativeGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","input","pref","valueOf","activeXDocument","enumBugKeys","html","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","write","temp","parentWindow","NullProtoObject","ActiveXObject","domain","iframeDocument","iframe","style","appendChild","contentWindow","NullProtoObjectViaIFrame","NASHORN_BUG","1","propertyKey","check","getOwnPropertySymbols","baseRest","isIterateeCall","assigner","sources","customizer","guard","internalObjectKeys","toAbsoluteIndex","lengthOfArrayLike","createProperty","$Array","k","fin","Loader","children","disabled","indeterminate","inline","inverted","size","classes","rest","ElementType","isNil","handledProps","propTypes","Stack","arrayEach","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeysIn","initCloneArray","initCloneByTag","initCloneObject","isBuffer","isMap","cloneableTags","baseClone","bitmask","isFlat","isFull","isArr","isFunc","stacked","subValue","bitmap","AuthorsSectionPage","_React$Component","authors","hasFetched","fetchAuthors","titleTemplate","getSectionLabel","keywords","Sidebar","SectionMeta","defaultProps","withRouter","desktop","tablet","mobile","leaderboard2","mpu2","wingbanner","interstitial","halfpage","PrototypeOfArrayIteratorPrototype","arrayIterator","Date","now","requireObjectCoercible","defineGlobalProperty","noop","empty","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","getSymbols","SPECIES","originalArray","charAt","string","point","arraySpeciesConstructor","cloneArrayBuffer","dataView","IndexedObject","passiveSupported","removeEventListener","EE","enableResizeInfo","enableScrollInfo","removers","supportPassiveEvent","globalVars","defaultEventOption","capture","passive","eventType","_remove","eventOptions","attachEvent","remove","leIE8","matches","parseFloat","Constructor","protoProps","staticProps","resize","height","delta","top","touch","axisIntention","startX","startY","deltaX","deltaY","getXY","y","docBody","body","docEl","documentElement","pageX","pageY","clientX","scrollLeft","clientY","scrollTop","AugmentedEvent","option","mainType","subType","scroll","innerWidth","clientWidth","innerHeight","clientHeight","enableTouchInfo","touches","absX","absY","abs","getTime","throttle","requestId","later","doc","win","hashId","getHash","domNode","connectThrottle","throttledEvent","throttledMainEvent","_type","_cb","removeListener","connectContinuousEvent","mainEvent","throttleRate","domTarget","domId","targetPart","throttledStartEvent","throttledEndEvent","remover","ae","main","timer","endCallback","emit","connectDiscreteEvent","scrollStart","scrollEnd","resizeStart","resizeEnd","visibilitychange","touchmoveStart","touchmoveEnd","touchmove","touchstart","touchend","useRAF","mainEventConnectors","IS_CLIENT","_defineProperty","_typeof","_defineProperties","_setPrototypeOf","Derived","hasNativeReflectConstruct","Proxy","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","M","TRANSFORM_PROP","canEnableTransforms","scrollDelta","winHeight","subClass","superClass","Sticky","handleResize","handleScroll","handleScrollStart","stickyTop","stickyBottom","frozen","skipNextScrollEvent","bottomBoundaryTarget","topTarget","bottom","topBoundary","bottomBoundary","activated","offsetHeight","querySelector","getTargetHeight","rect","getBoundingClientRect","boundary","getTargetBottom","outerElement","innerElement","outerRect","innerRect","outerY","getTopPosition","getBottomBoundary","shouldFreeze","updateInitialDimension","enabled","reset","release","fix","toRelease","deltaHeight","prevProps","prevState","_this2","onStateChange","Modernizr","prefixed","csstransforms3d","enableTransforms","nextProps","nextState","_classNames","_this3","innerStyle","position","zIndex","innerZ","outerStyle","translate","outerClasses","activeClass","releasedClass","innerClasses","innerClass","innerActiveClass","outer","displayName","bool","oneOfType","STATUS_ORIGINAL","STATUS_RELEASED","STATUS_FIXED","SidebarArticleCard","getCanonicalUri","getImageObject","getSectionId","getGrandSectionId","sponsoredIndicator","MostReadArticles","page0Limit","fetchArticles","fetchMostReadArticles","notFound","noDiv","fetchMoreArticles","mostReadArticles","NotificationsBell","UnreadCount","setUnreadCount","NotificationsLastViewed","getCookie","timestamp","StyledLink","mr","bellIcon","handleSubmit","handleChange","newState","updateForm","email","validateEmail","validateName","firstName","lastName","subscribeNewsletter","showForm","hasSubmitted","isSubmitting","submitting","showThankYou","deviceWidth","defaultWidth","rel","LinkedIn","Facebook","Instagram","Pinterest","Twitter","fill","Youtube","TikTok","action","placeholder","Search","onSubmit","onChange","required","Segment","Dimmer","Desktop","Tablet","reinitialize","cssUnit","cm","mm","in","px","pt","pc","em","rem","vw","vh","vmin","vmax","cssValue","lengthWithunit","unit","valueString","includes","parseLengthAndUnit","__rest","pulse","loaderName","frames","animationName","styleEl","head","styleSheet","sheet","keyFrames","insertRule","createAnimation","loading","speedMultiplier","cssOverride","_f","_g","margin","additionalprops","wrapper","backgroundColor","borderRadius","animation","animationFillMode","SearchPage","isHidden","page","handleViewMore","searchArticles","lastFetch","params","q","search","ignoreQueryPrefix","initialArticles","alreadyFetchedArticles","searchArticlesMore","hasError","NoResults","IonArticle","itemType","hasMore","PulseLoader","isLoadingMore","itemprop","pathname","V8_PROTOTYPE_DEFINE_BUG","ENUMERABLE_NEXT","reFlags","regexp","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","hr","uptime","postfix","ceil","floor","TAG","STATIC","$documentAll","documentAll","IS_HTMLDDA","simple","nonConfigurable","nonWritable","toIntegerOrInfinity","charCodeAt","createMethod","CONVERT_TO_STRING","$this","second","S","codeAt","integer","TO_PRIMITIVE","hint","IE8_DOM_DEFINE","baseAssignValue","isNew","HagDesktop","onSlotRenderEnded","DOMIterables","ArrayIteratorMethods","ArrayValues","handlePrototype","CollectionPrototype","COLLECTION_NAME","METHOD_NAME","V8_VERSION","symbolProto","symbolValueOf","StringToSymbolRegistry","aria-label","role","aFunction","namespace","toNumber","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","dontCallGetSet","prefix","once","addListener","emitter","evt","_events","_eventsCount","clearEvent","EventEmitter","eventNames","events","handlers","ee","listenerCount","a4","a5","removeAllListeners","off","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","find","findIndex","filterReject","getMethod","ordinaryToPrimitive","exoticToPrim","keyProp","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","thisSymbolValue","symbolDescriptiveString","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","Ctor","vendors","raf","caf","_now","cp","cancelled","polyfill","requestAnimationFrame","cancelAnimationFrame","current","replacement","feature","detection","normalize","POLYFILL","NATIVE","typedArray","IS_INCLUDES","el","fromIndex","baseIsMap","nodeIsMap","getReplacerFunction","$stringify","numberToString","tester","low","hi","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","space"],"mappings":"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","file":"static/js/pages-SearchPage.5b5c83bc.chunk.js","sourcesContent":["var defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\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    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(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(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\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 defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\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 createIterResultObject(undefined, true);\n  }\n  if (kind == 'keys') return createIterResultObject(index, false);\n  if (kind == 'values') return createIterResultObject(target[index], false);\n  return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\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, exceptions) {\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) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n  var F = aCallable(this);\n  var Prototype = F.prototype;\n  var partArgs = arraySlice(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = concat(partArgs, arraySlice(arguments));\n    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n  };\n  if (isObject(Prototype)) boundFunction.prototype = Prototype;\n  return boundFunction;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\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","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\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","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-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 defineBuiltIn = require('../internals/define-built-in');\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          defineBuiltIn(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 call(nativeIterator, 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        defineBuiltIn(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    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\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');\nvar $Object = Object;\n\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","/*\n * Dexie.js - a minimalistic wrapper for IndexedDB\n * ===============================================\n *\n * By David Fahlander, david.fahlander@gmail.com\n *\n * Version 3.2.3, Mon Jan 23 2023\n *\n * https://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n */\n \n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar __assign = function() {\n    __assign = Object.assign || function __assign(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nfunction __spreadArray(to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nvar _global = typeof globalThis !== 'undefined' ? globalThis :\n    typeof self !== 'undefined' ? self :\n        typeof window !== 'undefined' ? window :\n            global;\n\nvar keys = Object.keys;\nvar isArray = Array.isArray;\nif (typeof Promise !== 'undefined' && !_global.Promise) {\n    _global.Promise = Promise;\n}\nfunction extend(obj, extension) {\n    if (typeof extension !== 'object')\n        return obj;\n    keys(extension).forEach(function (key) {\n        obj[key] = extension[key];\n    });\n    return obj;\n}\nvar getProto = Object.getPrototypeOf;\nvar _hasOwn = {}.hasOwnProperty;\nfunction hasOwn(obj, prop) {\n    return _hasOwn.call(obj, prop);\n}\nfunction props(proto, extension) {\n    if (typeof extension === 'function')\n        extension = extension(getProto(proto));\n    (typeof Reflect === \"undefined\" ? keys : Reflect.ownKeys)(extension).forEach(function (key) {\n        setProp(proto, key, extension[key]);\n    });\n}\nvar defineProperty = Object.defineProperty;\nfunction setProp(obj, prop, functionOrGetSet, options) {\n    defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ?\n        { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } :\n        { value: functionOrGetSet, configurable: true, writable: true }, options));\n}\nfunction derive(Child) {\n    return {\n        from: function (Parent) {\n            Child.prototype = Object.create(Parent.prototype);\n            setProp(Child.prototype, \"constructor\", Child);\n            return {\n                extend: props.bind(null, Child.prototype)\n            };\n        }\n    };\n}\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nfunction getPropertyDescriptor(obj, prop) {\n    var pd = getOwnPropertyDescriptor(obj, prop);\n    var proto;\n    return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop);\n}\nvar _slice = [].slice;\nfunction slice(args, start, end) {\n    return _slice.call(args, start, end);\n}\nfunction override(origFunc, overridedFactory) {\n    return overridedFactory(origFunc);\n}\nfunction assert(b) {\n    if (!b)\n        throw new Error(\"Assertion Failed\");\n}\nfunction asap$1(fn) {\n    if (_global.setImmediate)\n        setImmediate(fn);\n    else\n        setTimeout(fn, 0);\n}\nfunction arrayToObject(array, extractor) {\n    return array.reduce(function (result, item, i) {\n        var nameAndValue = extractor(item, i);\n        if (nameAndValue)\n            result[nameAndValue[0]] = nameAndValue[1];\n        return result;\n    }, {});\n}\nfunction tryCatch(fn, onerror, args) {\n    try {\n        fn.apply(null, args);\n    }\n    catch (ex) {\n        onerror && onerror(ex);\n    }\n}\nfunction getByKeyPath(obj, keyPath) {\n    if (hasOwn(obj, keyPath))\n        return obj[keyPath];\n    if (!keyPath)\n        return obj;\n    if (typeof keyPath !== 'string') {\n        var rv = [];\n        for (var i = 0, l = keyPath.length; i < l; ++i) {\n            var val = getByKeyPath(obj, keyPath[i]);\n            rv.push(val);\n        }\n        return rv;\n    }\n    var period = keyPath.indexOf('.');\n    if (period !== -1) {\n        var innerObj = obj[keyPath.substr(0, period)];\n        return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n    }\n    return undefined;\n}\nfunction setByKeyPath(obj, keyPath, value) {\n    if (!obj || keyPath === undefined)\n        return;\n    if ('isFrozen' in Object && Object.isFrozen(obj))\n        return;\n    if (typeof keyPath !== 'string' && 'length' in keyPath) {\n        assert(typeof value !== 'string' && 'length' in value);\n        for (var i = 0, l = keyPath.length; i < l; ++i) {\n            setByKeyPath(obj, keyPath[i], value[i]);\n        }\n    }\n    else {\n        var period = keyPath.indexOf('.');\n        if (period !== -1) {\n            var currentKeyPath = keyPath.substr(0, period);\n            var remainingKeyPath = keyPath.substr(period + 1);\n            if (remainingKeyPath === \"\")\n                if (value === undefined) {\n                    if (isArray(obj) && !isNaN(parseInt(currentKeyPath)))\n                        obj.splice(currentKeyPath, 1);\n                    else\n                        delete obj[currentKeyPath];\n                }\n                else\n                    obj[currentKeyPath] = value;\n            else {\n                var innerObj = obj[currentKeyPath];\n                if (!innerObj || !hasOwn(obj, currentKeyPath))\n                    innerObj = (obj[currentKeyPath] = {});\n                setByKeyPath(innerObj, remainingKeyPath, value);\n            }\n        }\n        else {\n            if (value === undefined) {\n                if (isArray(obj) && !isNaN(parseInt(keyPath)))\n                    obj.splice(keyPath, 1);\n                else\n                    delete obj[keyPath];\n            }\n            else\n                obj[keyPath] = value;\n        }\n    }\n}\nfunction delByKeyPath(obj, keyPath) {\n    if (typeof keyPath === 'string')\n        setByKeyPath(obj, keyPath, undefined);\n    else if ('length' in keyPath)\n        [].map.call(keyPath, function (kp) {\n            setByKeyPath(obj, kp, undefined);\n        });\n}\nfunction shallowClone(obj) {\n    var rv = {};\n    for (var m in obj) {\n        if (hasOwn(obj, m))\n            rv[m] = obj[m];\n    }\n    return rv;\n}\nvar concat = [].concat;\nfunction flatten(a) {\n    return concat.apply([], a);\n}\nvar intrinsicTypeNames = \"Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\"\n    .split(',').concat(flatten([8, 16, 32, 64].map(function (num) { return [\"Int\", \"Uint\", \"Float\"].map(function (t) { return t + num + \"Array\"; }); }))).filter(function (t) { return _global[t]; });\nvar intrinsicTypes = intrinsicTypeNames.map(function (t) { return _global[t]; });\narrayToObject(intrinsicTypeNames, function (x) { return [x, true]; });\nvar circularRefs = null;\nfunction deepClone(any) {\n    circularRefs = typeof WeakMap !== 'undefined' && new WeakMap();\n    var rv = innerDeepClone(any);\n    circularRefs = null;\n    return rv;\n}\nfunction innerDeepClone(any) {\n    if (!any || typeof any !== 'object')\n        return any;\n    var rv = circularRefs && circularRefs.get(any);\n    if (rv)\n        return rv;\n    if (isArray(any)) {\n        rv = [];\n        circularRefs && circularRefs.set(any, rv);\n        for (var i = 0, l = any.length; i < l; ++i) {\n            rv.push(innerDeepClone(any[i]));\n        }\n    }\n    else if (intrinsicTypes.indexOf(any.constructor) >= 0) {\n        rv = any;\n    }\n    else {\n        var proto = getProto(any);\n        rv = proto === Object.prototype ? {} : Object.create(proto);\n        circularRefs && circularRefs.set(any, rv);\n        for (var prop in any) {\n            if (hasOwn(any, prop)) {\n                rv[prop] = innerDeepClone(any[prop]);\n            }\n        }\n    }\n    return rv;\n}\nvar toString = {}.toString;\nfunction toStringTag(o) {\n    return toString.call(o).slice(8, -1);\n}\nvar iteratorSymbol = typeof Symbol !== 'undefined' ?\n    Symbol.iterator :\n    '@@iterator';\nvar getIteratorOf = typeof iteratorSymbol === \"symbol\" ? function (x) {\n    var i;\n    return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n} : function () { return null; };\nvar NO_CHAR_ARRAY = {};\nfunction getArrayOf(arrayLike) {\n    var i, a, x, it;\n    if (arguments.length === 1) {\n        if (isArray(arrayLike))\n            return arrayLike.slice();\n        if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string')\n            return [arrayLike];\n        if ((it = getIteratorOf(arrayLike))) {\n            a = [];\n            while ((x = it.next()), !x.done)\n                a.push(x.value);\n            return a;\n        }\n        if (arrayLike == null)\n            return [arrayLike];\n        i = arrayLike.length;\n        if (typeof i === 'number') {\n            a = new Array(i);\n            while (i--)\n                a[i] = arrayLike[i];\n            return a;\n        }\n        return [arrayLike];\n    }\n    i = arguments.length;\n    a = new Array(i);\n    while (i--)\n        a[i] = arguments[i];\n    return a;\n}\nvar isAsyncFunction = typeof Symbol !== 'undefined'\n    ? function (fn) { return fn[Symbol.toStringTag] === 'AsyncFunction'; }\n    : function () { return false; };\n\nvar debug = typeof location !== 'undefined' &&\n    /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\nfunction setDebug(value, filter) {\n    debug = value;\n    libraryFilter = filter;\n}\nvar libraryFilter = function () { return true; };\nvar NEEDS_THROW_FOR_STACK = !new Error(\"\").stack;\nfunction getErrorWithStack() {\n    if (NEEDS_THROW_FOR_STACK)\n        try {\n            getErrorWithStack.arguments;\n            throw new Error();\n        }\n        catch (e) {\n            return e;\n        }\n    return new Error();\n}\nfunction prettyStack(exception, numIgnoredFrames) {\n    var stack = exception.stack;\n    if (!stack)\n        return \"\";\n    numIgnoredFrames = (numIgnoredFrames || 0);\n    if (stack.indexOf(exception.name) === 0)\n        numIgnoredFrames += (exception.name + exception.message).split('\\n').length;\n    return stack.split('\\n')\n        .slice(numIgnoredFrames)\n        .filter(libraryFilter)\n        .map(function (frame) { return \"\\n\" + frame; })\n        .join('');\n}\n\nvar dexieErrorNames = [\n    'Modify',\n    'Bulk',\n    'OpenFailed',\n    'VersionChange',\n    'Schema',\n    'Upgrade',\n    'InvalidTable',\n    'MissingAPI',\n    'NoSuchDatabase',\n    'InvalidArgument',\n    'SubTransaction',\n    'Unsupported',\n    'Internal',\n    'DatabaseClosed',\n    'PrematureCommit',\n    'ForeignAwait'\n];\nvar idbDomErrorNames = [\n    'Unknown',\n    'Constraint',\n    'Data',\n    'TransactionInactive',\n    'ReadOnly',\n    'Version',\n    'NotFound',\n    'InvalidState',\n    'InvalidAccess',\n    'Abort',\n    'Timeout',\n    'QuotaExceeded',\n    'Syntax',\n    'DataClone'\n];\nvar errorList = dexieErrorNames.concat(idbDomErrorNames);\nvar defaultTexts = {\n    VersionChanged: \"Database version changed by other database connection\",\n    DatabaseClosed: \"Database has been closed\",\n    Abort: \"Transaction aborted\",\n    TransactionInactive: \"Transaction has already completed or failed\",\n    MissingAPI: \"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"\n};\nfunction DexieError(name, msg) {\n    this._e = getErrorWithStack();\n    this.name = name;\n    this.message = msg;\n}\nderive(DexieError).from(Error).extend({\n    stack: {\n        get: function () {\n            return this._stack ||\n                (this._stack = this.name + \": \" + this.message + prettyStack(this._e, 2));\n        }\n    },\n    toString: function () { return this.name + \": \" + this.message; }\n});\nfunction getMultiErrorMessage(msg, failures) {\n    return msg + \". Errors: \" + Object.keys(failures)\n        .map(function (key) { return failures[key].toString(); })\n        .filter(function (v, i, s) { return s.indexOf(v) === i; })\n        .join('\\n');\n}\nfunction ModifyError(msg, failures, successCount, failedKeys) {\n    this._e = getErrorWithStack();\n    this.failures = failures;\n    this.failedKeys = failedKeys;\n    this.successCount = successCount;\n    this.message = getMultiErrorMessage(msg, failures);\n}\nderive(ModifyError).from(DexieError);\nfunction BulkError(msg, failures) {\n    this._e = getErrorWithStack();\n    this.name = \"BulkError\";\n    this.failures = Object.keys(failures).map(function (pos) { return failures[pos]; });\n    this.failuresByPos = failures;\n    this.message = getMultiErrorMessage(msg, failures);\n}\nderive(BulkError).from(DexieError);\nvar errnames = errorList.reduce(function (obj, name) { return (obj[name] = name + \"Error\", obj); }, {});\nvar BaseException = DexieError;\nvar exceptions = errorList.reduce(function (obj, name) {\n    var fullName = name + \"Error\";\n    function DexieError(msgOrInner, inner) {\n        this._e = getErrorWithStack();\n        this.name = fullName;\n        if (!msgOrInner) {\n            this.message = defaultTexts[name] || fullName;\n            this.inner = null;\n        }\n        else if (typeof msgOrInner === 'string') {\n            this.message = \"\" + msgOrInner + (!inner ? '' : '\\n ' + inner);\n            this.inner = inner || null;\n        }\n        else if (typeof msgOrInner === 'object') {\n            this.message = msgOrInner.name + \" \" + msgOrInner.message;\n            this.inner = msgOrInner;\n        }\n    }\n    derive(DexieError).from(BaseException);\n    obj[name] = DexieError;\n    return obj;\n}, {});\nexceptions.Syntax = SyntaxError;\nexceptions.Type = TypeError;\nexceptions.Range = RangeError;\nvar exceptionMap = idbDomErrorNames.reduce(function (obj, name) {\n    obj[name + \"Error\"] = exceptions[name];\n    return obj;\n}, {});\nfunction mapError(domError, message) {\n    if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])\n        return domError;\n    var rv = new exceptionMap[domError.name](message || domError.message, domError);\n    if (\"stack\" in domError) {\n        setProp(rv, \"stack\", { get: function () {\n                return this.inner.stack;\n            } });\n    }\n    return rv;\n}\nvar fullNameExceptions = errorList.reduce(function (obj, name) {\n    if ([\"Syntax\", \"Type\", \"Range\"].indexOf(name) === -1)\n        obj[name + \"Error\"] = exceptions[name];\n    return obj;\n}, {});\nfullNameExceptions.ModifyError = ModifyError;\nfullNameExceptions.DexieError = DexieError;\nfullNameExceptions.BulkError = BulkError;\n\nfunction nop() { }\nfunction mirror(val) { return val; }\nfunction pureFunctionChain(f1, f2) {\n    if (f1 == null || f1 === mirror)\n        return f2;\n    return function (val) {\n        return f2(f1(val));\n    };\n}\nfunction callBoth(on1, on2) {\n    return function () {\n        on1.apply(this, arguments);\n        on2.apply(this, arguments);\n    };\n}\nfunction hookCreatingChain(f1, f2) {\n    if (f1 === nop)\n        return f2;\n    return function () {\n        var res = f1.apply(this, arguments);\n        if (res !== undefined)\n            arguments[0] = res;\n        var onsuccess = this.onsuccess,\n        onerror = this.onerror;\n        this.onsuccess = null;\n        this.onerror = null;\n        var res2 = f2.apply(this, arguments);\n        if (onsuccess)\n            this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n        if (onerror)\n            this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n        return res2 !== undefined ? res2 : res;\n    };\n}\nfunction hookDeletingChain(f1, f2) {\n    if (f1 === nop)\n        return f2;\n    return function () {\n        f1.apply(this, arguments);\n        var onsuccess = this.onsuccess,\n        onerror = this.onerror;\n        this.onsuccess = this.onerror = null;\n        f2.apply(this, arguments);\n        if (onsuccess)\n            this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n        if (onerror)\n            this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n    };\n}\nfunction hookUpdatingChain(f1, f2) {\n    if (f1 === nop)\n        return f2;\n    return function (modifications) {\n        var res = f1.apply(this, arguments);\n        extend(modifications, res);\n        var onsuccess = this.onsuccess,\n        onerror = this.onerror;\n        this.onsuccess = null;\n        this.onerror = null;\n        var res2 = f2.apply(this, arguments);\n        if (onsuccess)\n            this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n        if (onerror)\n            this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n        return res === undefined ?\n            (res2 === undefined ? undefined : res2) :\n            (extend(res, res2));\n    };\n}\nfunction reverseStoppableEventChain(f1, f2) {\n    if (f1 === nop)\n        return f2;\n    return function () {\n        if (f2.apply(this, arguments) === false)\n            return false;\n        return f1.apply(this, arguments);\n    };\n}\nfunction promisableChain(f1, f2) {\n    if (f1 === nop)\n        return f2;\n    return function () {\n        var res = f1.apply(this, arguments);\n        if (res && typeof res.then === 'function') {\n            var thiz = this, i = arguments.length, args = new Array(i);\n            while (i--)\n                args[i] = arguments[i];\n            return res.then(function () {\n                return f2.apply(thiz, args);\n            });\n        }\n        return f2.apply(this, arguments);\n    };\n}\n\nvar INTERNAL = {};\nvar LONG_STACKS_CLIP_LIMIT = 100,\nMAX_LONG_STACKS = 20, ZONE_ECHO_LIMIT = 100, _a$1 = typeof Promise === 'undefined' ?\n    [] :\n    (function () {\n        var globalP = Promise.resolve();\n        if (typeof crypto === 'undefined' || !crypto.subtle)\n            return [globalP, getProto(globalP), globalP];\n        var nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n        return [\n            nativeP,\n            getProto(nativeP),\n            globalP\n        ];\n    })(), resolvedNativePromise = _a$1[0], nativePromiseProto = _a$1[1], resolvedGlobalPromise = _a$1[2], nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\nvar NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\nvar patchGlobalPromise = !!resolvedGlobalPromise;\nvar stack_being_generated = false;\nvar schedulePhysicalTick = resolvedGlobalPromise ?\n    function () { resolvedGlobalPromise.then(physicalTick); }\n    :\n        _global.setImmediate ?\n            setImmediate.bind(null, physicalTick) :\n            _global.MutationObserver ?\n                function () {\n                    var hiddenDiv = document.createElement(\"div\");\n                    (new MutationObserver(function () {\n                        physicalTick();\n                        hiddenDiv = null;\n                    })).observe(hiddenDiv, { attributes: true });\n                    hiddenDiv.setAttribute('i', '1');\n                } :\n                function () { setTimeout(physicalTick, 0); };\nvar asap = function (callback, args) {\n    microtickQueue.push([callback, args]);\n    if (needsNewPhysicalTick) {\n        schedulePhysicalTick();\n        needsNewPhysicalTick = false;\n    }\n};\nvar isOutsideMicroTick = true,\nneedsNewPhysicalTick = true,\nunhandledErrors = [],\nrejectingErrors = [],\ncurrentFulfiller = null, rejectionMapper = mirror;\nvar globalPSD = {\n    id: 'global',\n    global: true,\n    ref: 0,\n    unhandleds: [],\n    onunhandled: globalError,\n    pgp: false,\n    env: {},\n    finalize: function () {\n        this.unhandleds.forEach(function (uh) {\n            try {\n                globalError(uh[0], uh[1]);\n            }\n            catch (e) { }\n        });\n    }\n};\nvar PSD = globalPSD;\nvar microtickQueue = [];\nvar numScheduledCalls = 0;\nvar tickFinalizers = [];\nfunction DexiePromise(fn) {\n    if (typeof this !== 'object')\n        throw new TypeError('Promises must be constructed via new');\n    this._listeners = [];\n    this.onuncatched = nop;\n    this._lib = false;\n    var psd = (this._PSD = PSD);\n    if (debug) {\n        this._stackHolder = getErrorWithStack();\n        this._prev = null;\n        this._numPrev = 0;\n    }\n    if (typeof fn !== 'function') {\n        if (fn !== INTERNAL)\n            throw new TypeError('Not a function');\n        this._state = arguments[1];\n        this._value = arguments[2];\n        if (this._state === false)\n            handleRejection(this, this._value);\n        return;\n    }\n    this._state = null;\n    this._value = null;\n    ++psd.ref;\n    executePromiseTask(this, fn);\n}\nvar thenProp = {\n    get: function () {\n        var psd = PSD, microTaskId = totalEchoes;\n        function then(onFulfilled, onRejected) {\n            var _this = this;\n            var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n            var cleanup = possibleAwait && !decrementExpectedAwaits();\n            var rv = new DexiePromise(function (resolve, reject) {\n                propagateToListener(_this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup), resolve, reject, psd));\n            });\n            debug && linkToPreviousPromise(rv, this);\n            return rv;\n        }\n        then.prototype = INTERNAL;\n        return then;\n    },\n    set: function (value) {\n        setProp(this, 'then', value && value.prototype === INTERNAL ?\n            thenProp :\n            {\n                get: function () {\n                    return value;\n                },\n                set: thenProp.set\n            });\n    }\n};\nprops(DexiePromise.prototype, {\n    then: thenProp,\n    _then: function (onFulfilled, onRejected) {\n        propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD));\n    },\n    catch: function (onRejected) {\n        if (arguments.length === 1)\n            return this.then(null, onRejected);\n        var type = arguments[0], handler = arguments[1];\n        return typeof type === 'function' ? this.then(null, function (err) {\n            return err instanceof type ? handler(err) : PromiseReject(err);\n        })\n            : this.then(null, function (err) {\n                return err && err.name === type ? handler(err) : PromiseReject(err);\n            });\n    },\n    finally: function (onFinally) {\n        return this.then(function (value) {\n            onFinally();\n            return value;\n        }, function (err) {\n            onFinally();\n            return PromiseReject(err);\n        });\n    },\n    stack: {\n        get: function () {\n            if (this._stack)\n                return this._stack;\n            try {\n                stack_being_generated = true;\n                var stacks = getStack(this, [], MAX_LONG_STACKS);\n                var stack = stacks.join(\"\\nFrom previous: \");\n                if (this._state !== null)\n                    this._stack = stack;\n                return stack;\n            }\n            finally {\n                stack_being_generated = false;\n            }\n        }\n    },\n    timeout: function (ms, msg) {\n        var _this = this;\n        return ms < Infinity ?\n            new DexiePromise(function (resolve, reject) {\n                var handle = setTimeout(function () { return reject(new exceptions.Timeout(msg)); }, ms);\n                _this.then(resolve, reject).finally(clearTimeout.bind(null, handle));\n            }) : this;\n    }\n});\nif (typeof Symbol !== 'undefined' && Symbol.toStringTag)\n    setProp(DexiePromise.prototype, Symbol.toStringTag, 'Dexie.Promise');\nglobalPSD.env = snapShot();\nfunction Listener(onFulfilled, onRejected, resolve, reject, zone) {\n    this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n    this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n    this.resolve = resolve;\n    this.reject = reject;\n    this.psd = zone;\n}\nprops(DexiePromise, {\n    all: function () {\n        var values = getArrayOf.apply(null, arguments)\n            .map(onPossibleParallellAsync);\n        return new DexiePromise(function (resolve, reject) {\n            if (values.length === 0)\n                resolve([]);\n            var remaining = values.length;\n            values.forEach(function (a, i) { return DexiePromise.resolve(a).then(function (x) {\n                values[i] = x;\n                if (!--remaining)\n                    resolve(values);\n            }, reject); });\n        });\n    },\n    resolve: function (value) {\n        if (value instanceof DexiePromise)\n            return value;\n        if (value && typeof value.then === 'function')\n            return new DexiePromise(function (resolve, reject) {\n                value.then(resolve, reject);\n            });\n        var rv = new DexiePromise(INTERNAL, true, value);\n        linkToPreviousPromise(rv, currentFulfiller);\n        return rv;\n    },\n    reject: PromiseReject,\n    race: function () {\n        var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n        return new DexiePromise(function (resolve, reject) {\n            values.map(function (value) { return DexiePromise.resolve(value).then(resolve, reject); });\n        });\n    },\n    PSD: {\n        get: function () { return PSD; },\n        set: function (value) { return PSD = value; }\n    },\n    totalEchoes: { get: function () { return totalEchoes; } },\n    newPSD: newScope,\n    usePSD: usePSD,\n    scheduler: {\n        get: function () { return asap; },\n        set: function (value) { asap = value; }\n    },\n    rejectionMapper: {\n        get: function () { return rejectionMapper; },\n        set: function (value) { rejectionMapper = value; }\n    },\n    follow: function (fn, zoneProps) {\n        return new DexiePromise(function (resolve, reject) {\n            return newScope(function (resolve, reject) {\n                var psd = PSD;\n                psd.unhandleds = [];\n                psd.onunhandled = reject;\n                psd.finalize = callBoth(function () {\n                    var _this = this;\n                    run_at_end_of_this_or_next_physical_tick(function () {\n                        _this.unhandleds.length === 0 ? resolve() : reject(_this.unhandleds[0]);\n                    });\n                }, psd.finalize);\n                fn();\n            }, zoneProps, resolve, reject);\n        });\n    }\n});\nif (NativePromise) {\n    if (NativePromise.allSettled)\n        setProp(DexiePromise, \"allSettled\", function () {\n            var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n            return new DexiePromise(function (resolve) {\n                if (possiblePromises.length === 0)\n                    resolve([]);\n                var remaining = possiblePromises.length;\n                var results = new Array(remaining);\n                possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return results[i] = { status: \"fulfilled\", value: value }; }, function (reason) { return results[i] = { status: \"rejected\", reason: reason }; })\n                    .then(function () { return --remaining || resolve(results); }); });\n            });\n        });\n    if (NativePromise.any && typeof AggregateError !== 'undefined')\n        setProp(DexiePromise, \"any\", function () {\n            var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n            return new DexiePromise(function (resolve, reject) {\n                if (possiblePromises.length === 0)\n                    reject(new AggregateError([]));\n                var remaining = possiblePromises.length;\n                var failures = new Array(remaining);\n                possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return resolve(value); }, function (failure) {\n                    failures[i] = failure;\n                    if (!--remaining)\n                        reject(new AggregateError(failures));\n                }); });\n            });\n        });\n}\nfunction executePromiseTask(promise, fn) {\n    try {\n        fn(function (value) {\n            if (promise._state !== null)\n                return;\n            if (value === promise)\n                throw new TypeError('A promise cannot be resolved with itself.');\n            var shouldExecuteTick = promise._lib && beginMicroTickScope();\n            if (value && typeof value.then === 'function') {\n                executePromiseTask(promise, function (resolve, reject) {\n                    value instanceof DexiePromise ?\n                        value._then(resolve, reject) :\n                        value.then(resolve, reject);\n                });\n            }\n            else {\n                promise._state = true;\n                promise._value = value;\n                propagateAllListeners(promise);\n            }\n            if (shouldExecuteTick)\n                endMicroTickScope();\n        }, handleRejection.bind(null, promise));\n    }\n    catch (ex) {\n        handleRejection(promise, ex);\n    }\n}\nfunction handleRejection(promise, reason) {\n    rejectingErrors.push(reason);\n    if (promise._state !== null)\n        return;\n    var shouldExecuteTick = promise._lib && beginMicroTickScope();\n    reason = rejectionMapper(reason);\n    promise._state = false;\n    promise._value = reason;\n    debug && reason !== null && typeof reason === 'object' && !reason._promise && tryCatch(function () {\n        var origProp = getPropertyDescriptor(reason, \"stack\");\n        reason._promise = promise;\n        setProp(reason, \"stack\", {\n            get: function () {\n                return stack_being_generated ?\n                    origProp && (origProp.get ?\n                        origProp.get.apply(reason) :\n                        origProp.value) :\n                    promise.stack;\n            }\n        });\n    });\n    addPossiblyUnhandledError(promise);\n    propagateAllListeners(promise);\n    if (shouldExecuteTick)\n        endMicroTickScope();\n}\nfunction propagateAllListeners(promise) {\n    var listeners = promise._listeners;\n    promise._listeners = [];\n    for (var i = 0, len = listeners.length; i < len; ++i) {\n        propagateToListener(promise, listeners[i]);\n    }\n    var psd = promise._PSD;\n    --psd.ref || psd.finalize();\n    if (numScheduledCalls === 0) {\n        ++numScheduledCalls;\n        asap(function () {\n            if (--numScheduledCalls === 0)\n                finalizePhysicalTick();\n        }, []);\n    }\n}\nfunction propagateToListener(promise, listener) {\n    if (promise._state === null) {\n        promise._listeners.push(listener);\n        return;\n    }\n    var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n    if (cb === null) {\n        return (promise._state ? listener.resolve : listener.reject)(promise._value);\n    }\n    ++listener.psd.ref;\n    ++numScheduledCalls;\n    asap(callListener, [cb, promise, listener]);\n}\nfunction callListener(cb, promise, listener) {\n    try {\n        currentFulfiller = promise;\n        var ret, value = promise._value;\n        if (promise._state) {\n            ret = cb(value);\n        }\n        else {\n            if (rejectingErrors.length)\n                rejectingErrors = [];\n            ret = cb(value);\n            if (rejectingErrors.indexOf(value) === -1)\n                markErrorAsHandled(promise);\n        }\n        listener.resolve(ret);\n    }\n    catch (e) {\n        listener.reject(e);\n    }\n    finally {\n        currentFulfiller = null;\n        if (--numScheduledCalls === 0)\n            finalizePhysicalTick();\n        --listener.psd.ref || listener.psd.finalize();\n    }\n}\nfunction getStack(promise, stacks, limit) {\n    if (stacks.length === limit)\n        return stacks;\n    var stack = \"\";\n    if (promise._state === false) {\n        var failure = promise._value, errorName, message;\n        if (failure != null) {\n            errorName = failure.name || \"Error\";\n            message = failure.message || failure;\n            stack = prettyStack(failure, 0);\n        }\n        else {\n            errorName = failure;\n            message = \"\";\n        }\n        stacks.push(errorName + (message ? \": \" + message : \"\") + stack);\n    }\n    if (debug) {\n        stack = prettyStack(promise._stackHolder, 2);\n        if (stack && stacks.indexOf(stack) === -1)\n            stacks.push(stack);\n        if (promise._prev)\n            getStack(promise._prev, stacks, limit);\n    }\n    return stacks;\n}\nfunction linkToPreviousPromise(promise, prev) {\n    var numPrev = prev ? prev._numPrev + 1 : 0;\n    if (numPrev < LONG_STACKS_CLIP_LIMIT) {\n        promise._prev = prev;\n        promise._numPrev = numPrev;\n    }\n}\nfunction physicalTick() {\n    beginMicroTickScope() && endMicroTickScope();\n}\nfunction beginMicroTickScope() {\n    var wasRootExec = isOutsideMicroTick;\n    isOutsideMicroTick = false;\n    needsNewPhysicalTick = false;\n    return wasRootExec;\n}\nfunction endMicroTickScope() {\n    var callbacks, i, l;\n    do {\n        while (microtickQueue.length > 0) {\n            callbacks = microtickQueue;\n            microtickQueue = [];\n            l = callbacks.length;\n            for (i = 0; i < l; ++i) {\n                var item = callbacks[i];\n                item[0].apply(null, item[1]);\n            }\n        }\n    } while (microtickQueue.length > 0);\n    isOutsideMicroTick = true;\n    needsNewPhysicalTick = true;\n}\nfunction finalizePhysicalTick() {\n    var unhandledErrs = unhandledErrors;\n    unhandledErrors = [];\n    unhandledErrs.forEach(function (p) {\n        p._PSD.onunhandled.call(null, p._value, p);\n    });\n    var finalizers = tickFinalizers.slice(0);\n    var i = finalizers.length;\n    while (i)\n        finalizers[--i]();\n}\nfunction run_at_end_of_this_or_next_physical_tick(fn) {\n    function finalizer() {\n        fn();\n        tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n    }\n    tickFinalizers.push(finalizer);\n    ++numScheduledCalls;\n    asap(function () {\n        if (--numScheduledCalls === 0)\n            finalizePhysicalTick();\n    }, []);\n}\nfunction addPossiblyUnhandledError(promise) {\n    if (!unhandledErrors.some(function (p) { return p._value === promise._value; }))\n        unhandledErrors.push(promise);\n}\nfunction markErrorAsHandled(promise) {\n    var i = unhandledErrors.length;\n    while (i)\n        if (unhandledErrors[--i]._value === promise._value) {\n            unhandledErrors.splice(i, 1);\n            return;\n        }\n}\nfunction PromiseReject(reason) {\n    return new DexiePromise(INTERNAL, false, reason);\n}\nfunction wrap(fn, errorCatcher) {\n    var psd = PSD;\n    return function () {\n        var wasRootExec = beginMicroTickScope(), outerScope = PSD;\n        try {\n            switchToZone(psd, true);\n            return fn.apply(this, arguments);\n        }\n        catch (e) {\n            errorCatcher && errorCatcher(e);\n        }\n        finally {\n            switchToZone(outerScope, false);\n            if (wasRootExec)\n                endMicroTickScope();\n        }\n    };\n}\nvar task = { awaits: 0, echoes: 0, id: 0 };\nvar taskCounter = 0;\nvar zoneStack = [];\nvar zoneEchoes = 0;\nvar totalEchoes = 0;\nvar zone_id_counter = 0;\nfunction newScope(fn, props, a1, a2) {\n    var parent = PSD, psd = Object.create(parent);\n    psd.parent = parent;\n    psd.ref = 0;\n    psd.global = false;\n    psd.id = ++zone_id_counter;\n    var globalEnv = globalPSD.env;\n    psd.env = patchGlobalPromise ? {\n        Promise: DexiePromise,\n        PromiseProp: { value: DexiePromise, configurable: true, writable: true },\n        all: DexiePromise.all,\n        race: DexiePromise.race,\n        allSettled: DexiePromise.allSettled,\n        any: DexiePromise.any,\n        resolve: DexiePromise.resolve,\n        reject: DexiePromise.reject,\n        nthen: getPatchedPromiseThen(globalEnv.nthen, psd),\n        gthen: getPatchedPromiseThen(globalEnv.gthen, psd)\n    } : {};\n    if (props)\n        extend(psd, props);\n    ++parent.ref;\n    psd.finalize = function () {\n        --this.parent.ref || this.parent.finalize();\n    };\n    var rv = usePSD(psd, fn, a1, a2);\n    if (psd.ref === 0)\n        psd.finalize();\n    return rv;\n}\nfunction incrementExpectedAwaits() {\n    if (!task.id)\n        task.id = ++taskCounter;\n    ++task.awaits;\n    task.echoes += ZONE_ECHO_LIMIT;\n    return task.id;\n}\nfunction decrementExpectedAwaits() {\n    if (!task.awaits)\n        return false;\n    if (--task.awaits === 0)\n        task.id = 0;\n    task.echoes = task.awaits * ZONE_ECHO_LIMIT;\n    return true;\n}\nif (('' + nativePromiseThen).indexOf('[native code]') === -1) {\n    incrementExpectedAwaits = decrementExpectedAwaits = nop;\n}\nfunction onPossibleParallellAsync(possiblePromise) {\n    if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) {\n        incrementExpectedAwaits();\n        return possiblePromise.then(function (x) {\n            decrementExpectedAwaits();\n            return x;\n        }, function (e) {\n            decrementExpectedAwaits();\n            return rejection(e);\n        });\n    }\n    return possiblePromise;\n}\nfunction zoneEnterEcho(targetZone) {\n    ++totalEchoes;\n    if (!task.echoes || --task.echoes === 0) {\n        task.echoes = task.id = 0;\n    }\n    zoneStack.push(PSD);\n    switchToZone(targetZone, true);\n}\nfunction zoneLeaveEcho() {\n    var zone = zoneStack[zoneStack.length - 1];\n    zoneStack.pop();\n    switchToZone(zone, false);\n}\nfunction switchToZone(targetZone, bEnteringZone) {\n    var currentZone = PSD;\n    if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {\n        enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n    }\n    if (targetZone === PSD)\n        return;\n    PSD = targetZone;\n    if (currentZone === globalPSD)\n        globalPSD.env = snapShot();\n    if (patchGlobalPromise) {\n        var GlobalPromise_1 = globalPSD.env.Promise;\n        var targetEnv = targetZone.env;\n        nativePromiseProto.then = targetEnv.nthen;\n        GlobalPromise_1.prototype.then = targetEnv.gthen;\n        if (currentZone.global || targetZone.global) {\n            Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n            GlobalPromise_1.all = targetEnv.all;\n            GlobalPromise_1.race = targetEnv.race;\n            GlobalPromise_1.resolve = targetEnv.resolve;\n            GlobalPromise_1.reject = targetEnv.reject;\n            if (targetEnv.allSettled)\n                GlobalPromise_1.allSettled = targetEnv.allSettled;\n            if (targetEnv.any)\n                GlobalPromise_1.any = targetEnv.any;\n        }\n    }\n}\nfunction snapShot() {\n    var GlobalPromise = _global.Promise;\n    return patchGlobalPromise ? {\n        Promise: GlobalPromise,\n        PromiseProp: Object.getOwnPropertyDescriptor(_global, \"Promise\"),\n        all: GlobalPromise.all,\n        race: GlobalPromise.race,\n        allSettled: GlobalPromise.allSettled,\n        any: GlobalPromise.any,\n        resolve: GlobalPromise.resolve,\n        reject: GlobalPromise.reject,\n        nthen: nativePromiseProto.then,\n        gthen: GlobalPromise.prototype.then\n    } : {};\n}\nfunction usePSD(psd, fn, a1, a2, a3) {\n    var outerScope = PSD;\n    try {\n        switchToZone(psd, true);\n        return fn(a1, a2, a3);\n    }\n    finally {\n        switchToZone(outerScope, false);\n    }\n}\nfunction enqueueNativeMicroTask(job) {\n    nativePromiseThen.call(resolvedNativePromise, job);\n}\nfunction nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) {\n    return typeof fn !== 'function' ? fn : function () {\n        var outerZone = PSD;\n        if (possibleAwait)\n            incrementExpectedAwaits();\n        switchToZone(zone, true);\n        try {\n            return fn.apply(this, arguments);\n        }\n        finally {\n            switchToZone(outerZone, false);\n            if (cleanup)\n                enqueueNativeMicroTask(decrementExpectedAwaits);\n        }\n    };\n}\nfunction getPatchedPromiseThen(origThen, zone) {\n    return function (onResolved, onRejected) {\n        return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone), nativeAwaitCompatibleWrap(onRejected, zone));\n    };\n}\nvar UNHANDLEDREJECTION = \"unhandledrejection\";\nfunction globalError(err, promise) {\n    var rv;\n    try {\n        rv = promise.onuncatched(err);\n    }\n    catch (e) { }\n    if (rv !== false)\n        try {\n            var event, eventData = { promise: promise, reason: err };\n            if (_global.document && document.createEvent) {\n                event = document.createEvent('Event');\n                event.initEvent(UNHANDLEDREJECTION, true, true);\n                extend(event, eventData);\n            }\n            else if (_global.CustomEvent) {\n                event = new CustomEvent(UNHANDLEDREJECTION, { detail: eventData });\n                extend(event, eventData);\n            }\n            if (event && _global.dispatchEvent) {\n                dispatchEvent(event);\n                if (!_global.PromiseRejectionEvent && _global.onunhandledrejection)\n                    try {\n                        _global.onunhandledrejection(event);\n                    }\n                    catch (_) { }\n            }\n            if (debug && event && !event.defaultPrevented) {\n                console.warn(\"Unhandled rejection: \" + (err.stack || err));\n            }\n        }\n        catch (e) { }\n}\nvar rejection = DexiePromise.reject;\n\nfunction tempTransaction(db, mode, storeNames, fn) {\n    if (!db.idbdb || (!db._state.openComplete && (!PSD.letThrough && !db._vip))) {\n        if (db._state.openComplete) {\n            return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError));\n        }\n        if (!db._state.isBeingOpened) {\n            if (!db._options.autoOpen)\n                return rejection(new exceptions.DatabaseClosed());\n            db.open().catch(nop);\n        }\n        return db._state.dbReadyPromise.then(function () { return tempTransaction(db, mode, storeNames, fn); });\n    }\n    else {\n        var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n        try {\n            trans.create();\n            db._state.PR1398_maxLoop = 3;\n        }\n        catch (ex) {\n            if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n                console.warn('Dexie: Need to reopen db');\n                db._close();\n                return db.open().then(function () { return tempTransaction(db, mode, storeNames, fn); });\n            }\n            return rejection(ex);\n        }\n        return trans._promise(mode, function (resolve, reject) {\n            return newScope(function () {\n                PSD.trans = trans;\n                return fn(resolve, reject, trans);\n            });\n        }).then(function (result) {\n            return trans._completion.then(function () { return result; });\n        });\n    }\n}\n\nvar DEXIE_VERSION = '3.2.3';\nvar maxString = String.fromCharCode(65535);\nvar minKey = -Infinity;\nvar INVALID_KEY_ARGUMENT = \"Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.\";\nvar STRING_EXPECTED = \"String expected.\";\nvar connections = [];\nvar isIEOrEdge = typeof navigator !== 'undefined' && /(MSIE|Trident|Edge)/.test(navigator.userAgent);\nvar hasIEDeleteObjectStoreBug = isIEOrEdge;\nvar hangsOnDeleteLargeKeyRange = isIEOrEdge;\nvar dexieStackFrameFilter = function (frame) { return !/(dexie\\.js|dexie\\.min\\.js)/.test(frame); };\nvar DBNAMES_DB = '__dbnames';\nvar READONLY = 'readonly';\nvar READWRITE = 'readwrite';\n\nfunction combine(filter1, filter2) {\n    return filter1 ?\n        filter2 ?\n            function () { return filter1.apply(this, arguments) && filter2.apply(this, arguments); } :\n            filter1 :\n        filter2;\n}\n\nvar AnyRange = {\n    type: 3 ,\n    lower: -Infinity,\n    lowerOpen: false,\n    upper: [[]],\n    upperOpen: false\n};\n\nfunction workaroundForUndefinedPrimKey(keyPath) {\n    return typeof keyPath === \"string\" && !/\\./.test(keyPath)\n        ? function (obj) {\n            if (obj[keyPath] === undefined && (keyPath in obj)) {\n                obj = deepClone(obj);\n                delete obj[keyPath];\n            }\n            return obj;\n        }\n        : function (obj) { return obj; };\n}\n\nvar Table =  (function () {\n    function Table() {\n    }\n    Table.prototype._trans = function (mode, fn, writeLocked) {\n        var trans = this._tx || PSD.trans;\n        var tableName = this.name;\n        function checkTableInTransaction(resolve, reject, trans) {\n            if (!trans.schema[tableName])\n                throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n            return fn(trans.idbtrans, trans);\n        }\n        var wasRootExec = beginMicroTickScope();\n        try {\n            return trans && trans.db === this.db ?\n                trans === PSD.trans ?\n                    trans._promise(mode, checkTableInTransaction, writeLocked) :\n                    newScope(function () { return trans._promise(mode, checkTableInTransaction, writeLocked); }, { trans: trans, transless: PSD.transless || PSD }) :\n                tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n        }\n        finally {\n            if (wasRootExec)\n                endMicroTickScope();\n        }\n    };\n    Table.prototype.get = function (keyOrCrit, cb) {\n        var _this = this;\n        if (keyOrCrit && keyOrCrit.constructor === Object)\n            return this.where(keyOrCrit).first(cb);\n        return this._trans('readonly', function (trans) {\n            return _this.core.get({ trans: trans, key: keyOrCrit })\n                .then(function (res) { return _this.hook.reading.fire(res); });\n        }).then(cb);\n    };\n    Table.prototype.where = function (indexOrCrit) {\n        if (typeof indexOrCrit === 'string')\n            return new this.db.WhereClause(this, indexOrCrit);\n        if (isArray(indexOrCrit))\n            return new this.db.WhereClause(this, \"[\" + indexOrCrit.join('+') + \"]\");\n        var keyPaths = keys(indexOrCrit);\n        if (keyPaths.length === 1)\n            return this\n                .where(keyPaths[0])\n                .equals(indexOrCrit[keyPaths[0]]);\n        var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function (ix) {\n            return ix.compound &&\n                keyPaths.every(function (keyPath) { return ix.keyPath.indexOf(keyPath) >= 0; }) &&\n                ix.keyPath.every(function (keyPath) { return keyPaths.indexOf(keyPath) >= 0; });\n        })[0];\n        if (compoundIndex && this.db._maxKey !== maxString)\n            return this\n                .where(compoundIndex.name)\n                .equals(compoundIndex.keyPath.map(function (kp) { return indexOrCrit[kp]; }));\n        if (!compoundIndex && debug)\n            console.warn(\"The query \" + JSON.stringify(indexOrCrit) + \" on \" + this.name + \" would benefit of a \" +\n                (\"compound index [\" + keyPaths.join('+') + \"]\"));\n        var idxByName = this.schema.idxByName;\n        var idb = this.db._deps.indexedDB;\n        function equals(a, b) {\n            try {\n                return idb.cmp(a, b) === 0;\n            }\n            catch (e) {\n                return false;\n            }\n        }\n        var _a = keyPaths.reduce(function (_a, keyPath) {\n            var prevIndex = _a[0], prevFilterFn = _a[1];\n            var index = idxByName[keyPath];\n            var value = indexOrCrit[keyPath];\n            return [\n                prevIndex || index,\n                prevIndex || !index ?\n                    combine(prevFilterFn, index && index.multi ?\n                        function (x) {\n                            var prop = getByKeyPath(x, keyPath);\n                            return isArray(prop) && prop.some(function (item) { return equals(value, item); });\n                        } : function (x) { return equals(value, getByKeyPath(x, keyPath)); })\n                    : prevFilterFn\n            ];\n        }, [null, null]), idx = _a[0], filterFunction = _a[1];\n        return idx ?\n            this.where(idx.name).equals(indexOrCrit[idx.keyPath])\n                .filter(filterFunction) :\n            compoundIndex ?\n                this.filter(filterFunction) :\n                this.where(keyPaths).equals('');\n    };\n    Table.prototype.filter = function (filterFunction) {\n        return this.toCollection().and(filterFunction);\n    };\n    Table.prototype.count = function (thenShortcut) {\n        return this.toCollection().count(thenShortcut);\n    };\n    Table.prototype.offset = function (offset) {\n        return this.toCollection().offset(offset);\n    };\n    Table.prototype.limit = function (numRows) {\n        return this.toCollection().limit(numRows);\n    };\n    Table.prototype.each = function (callback) {\n        return this.toCollection().each(callback);\n    };\n    Table.prototype.toArray = function (thenShortcut) {\n        return this.toCollection().toArray(thenShortcut);\n    };\n    Table.prototype.toCollection = function () {\n        return new this.db.Collection(new this.db.WhereClause(this));\n    };\n    Table.prototype.orderBy = function (index) {\n        return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ?\n            \"[\" + index.join('+') + \"]\" :\n            index));\n    };\n    Table.prototype.reverse = function () {\n        return this.toCollection().reverse();\n    };\n    Table.prototype.mapToClass = function (constructor) {\n        this.schema.mappedClass = constructor;\n        var readHook = function (obj) {\n            if (!obj)\n                return obj;\n            var res = Object.create(constructor.prototype);\n            for (var m in obj)\n                if (hasOwn(obj, m))\n                    try {\n                        res[m] = obj[m];\n                    }\n                    catch (_) { }\n            return res;\n        };\n        if (this.schema.readHook) {\n            this.hook.reading.unsubscribe(this.schema.readHook);\n        }\n        this.schema.readHook = readHook;\n        this.hook(\"reading\", readHook);\n        return constructor;\n    };\n    Table.prototype.defineClass = function () {\n        function Class(content) {\n            extend(this, content);\n        }\n        return this.mapToClass(Class);\n    };\n    Table.prototype.add = function (obj, key) {\n        var _this = this;\n        var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n        var objToAdd = obj;\n        if (keyPath && auto) {\n            objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n        }\n        return this._trans('readwrite', function (trans) {\n            return _this.core.mutate({ trans: trans, type: 'add', keys: key != null ? [key] : null, values: [objToAdd] });\n        }).then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n            .then(function (lastResult) {\n            if (keyPath) {\n                try {\n                    setByKeyPath(obj, keyPath, lastResult);\n                }\n                catch (_) { }\n            }\n            return lastResult;\n        });\n    };\n    Table.prototype.update = function (keyOrObject, modifications) {\n        if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n            var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n            if (key === undefined)\n                return rejection(new exceptions.InvalidArgument(\"Given object does not contain its primary key\"));\n            try {\n                if (typeof modifications !== \"function\") {\n                    keys(modifications).forEach(function (keyPath) {\n                        setByKeyPath(keyOrObject, keyPath, modifications[keyPath]);\n                    });\n                }\n                else {\n                    modifications(keyOrObject, { value: keyOrObject, primKey: key });\n                }\n            }\n            catch (_a) {\n            }\n            return this.where(\":id\").equals(key).modify(modifications);\n        }\n        else {\n            return this.where(\":id\").equals(keyOrObject).modify(modifications);\n        }\n    };\n    Table.prototype.put = function (obj, key) {\n        var _this = this;\n        var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n        var objToAdd = obj;\n        if (keyPath && auto) {\n            objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n        }\n        return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'put', values: [objToAdd], keys: key != null ? [key] : null }); })\n            .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n            .then(function (lastResult) {\n            if (keyPath) {\n                try {\n                    setByKeyPath(obj, keyPath, lastResult);\n                }\n                catch (_) { }\n            }\n            return lastResult;\n        });\n    };\n    Table.prototype.delete = function (key) {\n        var _this = this;\n        return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'delete', keys: [key] }); })\n            .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined; });\n    };\n    Table.prototype.clear = function () {\n        var _this = this;\n        return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'deleteRange', range: AnyRange }); })\n            .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : undefined; });\n    };\n    Table.prototype.bulkGet = function (keys) {\n        var _this = this;\n        return this._trans('readonly', function (trans) {\n            return _this.core.getMany({\n                keys: keys,\n                trans: trans\n            }).then(function (result) { return result.map(function (res) { return _this.hook.reading.fire(res); }); });\n        });\n    };\n    Table.prototype.bulkAdd = function (objects, keysOrOptions, options) {\n        var _this = this;\n        var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n        options = options || (keys ? undefined : keysOrOptions);\n        var wantResults = options ? options.allKeys : undefined;\n        return this._trans('readwrite', function (trans) {\n            var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n            if (keyPath && keys)\n                throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n            if (keys && keys.length !== objects.length)\n                throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n            var numObjects = objects.length;\n            var objectsToAdd = keyPath && auto ?\n                objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n                objects;\n            return _this.core.mutate({ trans: trans, type: 'add', keys: keys, values: objectsToAdd, wantResults: wantResults })\n                .then(function (_a) {\n                var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n                var result = wantResults ? results : lastResult;\n                if (numFailures === 0)\n                    return result;\n                throw new BulkError(_this.name + \".bulkAdd(): \" + numFailures + \" of \" + numObjects + \" operations failed\", failures);\n            });\n        });\n    };\n    Table.prototype.bulkPut = function (objects, keysOrOptions, options) {\n        var _this = this;\n        var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n        options = options || (keys ? undefined : keysOrOptions);\n        var wantResults = options ? options.allKeys : undefined;\n        return this._trans('readwrite', function (trans) {\n            var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n            if (keyPath && keys)\n                throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n            if (keys && keys.length !== objects.length)\n                throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n            var numObjects = objects.length;\n            var objectsToPut = keyPath && auto ?\n                objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n                objects;\n            return _this.core.mutate({ trans: trans, type: 'put', keys: keys, values: objectsToPut, wantResults: wantResults })\n                .then(function (_a) {\n                var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n                var result = wantResults ? results : lastResult;\n                if (numFailures === 0)\n                    return result;\n                throw new BulkError(_this.name + \".bulkPut(): \" + numFailures + \" of \" + numObjects + \" operations failed\", failures);\n            });\n        });\n    };\n    Table.prototype.bulkDelete = function (keys) {\n        var _this = this;\n        var numKeys = keys.length;\n        return this._trans('readwrite', function (trans) {\n            return _this.core.mutate({ trans: trans, type: 'delete', keys: keys });\n        }).then(function (_a) {\n            var numFailures = _a.numFailures, lastResult = _a.lastResult, failures = _a.failures;\n            if (numFailures === 0)\n                return lastResult;\n            throw new BulkError(_this.name + \".bulkDelete(): \" + numFailures + \" of \" + numKeys + \" operations failed\", failures);\n        });\n    };\n    return Table;\n}());\n\nfunction Events(ctx) {\n    var evs = {};\n    var rv = function (eventName, subscriber) {\n        if (subscriber) {\n            var i = arguments.length, args = new Array(i - 1);\n            while (--i)\n                args[i - 1] = arguments[i];\n            evs[eventName].subscribe.apply(null, args);\n            return ctx;\n        }\n        else if (typeof (eventName) === 'string') {\n            return evs[eventName];\n        }\n    };\n    rv.addEventType = add;\n    for (var i = 1, l = arguments.length; i < l; ++i) {\n        add(arguments[i]);\n    }\n    return rv;\n    function add(eventName, chainFunction, defaultFunction) {\n        if (typeof eventName === 'object')\n            return addConfiguredEvents(eventName);\n        if (!chainFunction)\n            chainFunction = reverseStoppableEventChain;\n        if (!defaultFunction)\n            defaultFunction = nop;\n        var context = {\n            subscribers: [],\n            fire: defaultFunction,\n            subscribe: function (cb) {\n                if (context.subscribers.indexOf(cb) === -1) {\n                    context.subscribers.push(cb);\n                    context.fire = chainFunction(context.fire, cb);\n                }\n            },\n            unsubscribe: function (cb) {\n                context.subscribers = context.subscribers.filter(function (fn) { return fn !== cb; });\n                context.fire = context.subscribers.reduce(chainFunction, defaultFunction);\n            }\n        };\n        evs[eventName] = rv[eventName] = context;\n        return context;\n    }\n    function addConfiguredEvents(cfg) {\n        keys(cfg).forEach(function (eventName) {\n            var args = cfg[eventName];\n            if (isArray(args)) {\n                add(eventName, cfg[eventName][0], cfg[eventName][1]);\n            }\n            else if (args === 'asap') {\n                var context = add(eventName, mirror, function fire() {\n                    var i = arguments.length, args = new Array(i);\n                    while (i--)\n                        args[i] = arguments[i];\n                    context.subscribers.forEach(function (fn) {\n                        asap$1(function fireEvent() {\n                            fn.apply(null, args);\n                        });\n                    });\n                });\n            }\n            else\n                throw new exceptions.InvalidArgument(\"Invalid event config\");\n        });\n    }\n}\n\nfunction makeClassConstructor(prototype, constructor) {\n    derive(constructor).from({ prototype: prototype });\n    return constructor;\n}\n\nfunction createTableConstructor(db) {\n    return makeClassConstructor(Table.prototype, function Table(name, tableSchema, trans) {\n        this.db = db;\n        this._tx = trans;\n        this.name = name;\n        this.schema = tableSchema;\n        this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n            \"creating\": [hookCreatingChain, nop],\n            \"reading\": [pureFunctionChain, mirror],\n            \"updating\": [hookUpdatingChain, nop],\n            \"deleting\": [hookDeletingChain, nop]\n        });\n    });\n}\n\nfunction isPlainKeyRange(ctx, ignoreLimitFilter) {\n    return !(ctx.filter || ctx.algorithm || ctx.or) &&\n        (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n}\nfunction addFilter(ctx, fn) {\n    ctx.filter = combine(ctx.filter, fn);\n}\nfunction addReplayFilter(ctx, factory, isLimitFilter) {\n    var curr = ctx.replayFilter;\n    ctx.replayFilter = curr ? function () { return combine(curr(), factory()); } : factory;\n    ctx.justLimit = isLimitFilter && !curr;\n}\nfunction addMatchFilter(ctx, fn) {\n    ctx.isMatch = combine(ctx.isMatch, fn);\n}\nfunction getIndexOrStore(ctx, coreSchema) {\n    if (ctx.isPrimKey)\n        return coreSchema.primaryKey;\n    var index = coreSchema.getIndexByKeyPath(ctx.index);\n    if (!index)\n        throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n    return index;\n}\nfunction openCursor(ctx, coreTable, trans) {\n    var index = getIndexOrStore(ctx, coreTable.schema);\n    return coreTable.openCursor({\n        trans: trans,\n        values: !ctx.keysOnly,\n        reverse: ctx.dir === 'prev',\n        unique: !!ctx.unique,\n        query: {\n            index: index,\n            range: ctx.range\n        }\n    });\n}\nfunction iter(ctx, fn, coreTrans, coreTable) {\n    var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n    if (!ctx.or) {\n        return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n    }\n    else {\n        var set_1 = {};\n        var union = function (item, cursor, advance) {\n            if (!filter || filter(cursor, advance, function (result) { return cursor.stop(result); }, function (err) { return cursor.fail(err); })) {\n                var primaryKey = cursor.primaryKey;\n                var key = '' + primaryKey;\n                if (key === '[object ArrayBuffer]')\n                    key = '' + new Uint8Array(primaryKey);\n                if (!hasOwn(set_1, key)) {\n                    set_1[key] = true;\n                    fn(item, cursor, advance);\n                }\n            }\n        };\n        return Promise.all([\n            ctx.or._iterate(union, coreTrans),\n            iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)\n        ]);\n    }\n}\nfunction iterate(cursorPromise, filter, fn, valueMapper) {\n    var mappedFn = valueMapper ? function (x, c, a) { return fn(valueMapper(x), c, a); } : fn;\n    var wrappedFn = wrap(mappedFn);\n    return cursorPromise.then(function (cursor) {\n        if (cursor) {\n            return cursor.start(function () {\n                var c = function () { return cursor.continue(); };\n                if (!filter || filter(cursor, function (advancer) { return c = advancer; }, function (val) { cursor.stop(val); c = nop; }, function (e) { cursor.fail(e); c = nop; }))\n                    wrappedFn(cursor.value, cursor, function (advancer) { return c = advancer; });\n                c();\n            });\n        }\n    });\n}\n\nfunction cmp(a, b) {\n    try {\n        var ta = type(a);\n        var tb = type(b);\n        if (ta !== tb) {\n            if (ta === 'Array')\n                return 1;\n            if (tb === 'Array')\n                return -1;\n            if (ta === 'binary')\n                return 1;\n            if (tb === 'binary')\n                return -1;\n            if (ta === 'string')\n                return 1;\n            if (tb === 'string')\n                return -1;\n            if (ta === 'Date')\n                return 1;\n            if (tb !== 'Date')\n                return NaN;\n            return -1;\n        }\n        switch (ta) {\n            case 'number':\n            case 'Date':\n            case 'string':\n                return a > b ? 1 : a < b ? -1 : 0;\n            case 'binary': {\n                return compareUint8Arrays(getUint8Array(a), getUint8Array(b));\n            }\n            case 'Array':\n                return compareArrays(a, b);\n        }\n    }\n    catch (_a) { }\n    return NaN;\n}\nfunction compareArrays(a, b) {\n    var al = a.length;\n    var bl = b.length;\n    var l = al < bl ? al : bl;\n    for (var i = 0; i < l; ++i) {\n        var res = cmp(a[i], b[i]);\n        if (res !== 0)\n            return res;\n    }\n    return al === bl ? 0 : al < bl ? -1 : 1;\n}\nfunction compareUint8Arrays(a, b) {\n    var al = a.length;\n    var bl = b.length;\n    var l = al < bl ? al : bl;\n    for (var i = 0; i < l; ++i) {\n        if (a[i] !== b[i])\n            return a[i] < b[i] ? -1 : 1;\n    }\n    return al === bl ? 0 : al < bl ? -1 : 1;\n}\nfunction type(x) {\n    var t = typeof x;\n    if (t !== 'object')\n        return t;\n    if (ArrayBuffer.isView(x))\n        return 'binary';\n    var tsTag = toStringTag(x);\n    return tsTag === 'ArrayBuffer' ? 'binary' : tsTag;\n}\nfunction getUint8Array(a) {\n    if (a instanceof Uint8Array)\n        return a;\n    if (ArrayBuffer.isView(a))\n        return new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n    return new Uint8Array(a);\n}\n\nvar Collection =  (function () {\n    function Collection() {\n    }\n    Collection.prototype._read = function (fn, cb) {\n        var ctx = this._ctx;\n        return ctx.error ?\n            ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n            ctx.table._trans('readonly', fn).then(cb);\n    };\n    Collection.prototype._write = function (fn) {\n        var ctx = this._ctx;\n        return ctx.error ?\n            ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n            ctx.table._trans('readwrite', fn, \"locked\");\n    };\n    Collection.prototype._addAlgorithm = function (fn) {\n        var ctx = this._ctx;\n        ctx.algorithm = combine(ctx.algorithm, fn);\n    };\n    Collection.prototype._iterate = function (fn, coreTrans) {\n        return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n    };\n    Collection.prototype.clone = function (props) {\n        var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx);\n        if (props)\n            extend(ctx, props);\n        rv._ctx = ctx;\n        return rv;\n    };\n    Collection.prototype.raw = function () {\n        this._ctx.valueMapper = null;\n        return this;\n    };\n    Collection.prototype.each = function (fn) {\n        var ctx = this._ctx;\n        return this._read(function (trans) { return iter(ctx, fn, trans, ctx.table.core); });\n    };\n    Collection.prototype.count = function (cb) {\n        var _this = this;\n        return this._read(function (trans) {\n            var ctx = _this._ctx;\n            var coreTable = ctx.table.core;\n            if (isPlainKeyRange(ctx, true)) {\n                return coreTable.count({\n                    trans: trans,\n                    query: {\n                        index: getIndexOrStore(ctx, coreTable.schema),\n                        range: ctx.range\n                    }\n                }).then(function (count) { return Math.min(count, ctx.limit); });\n            }\n            else {\n                var count = 0;\n                return iter(ctx, function () { ++count; return false; }, trans, coreTable)\n                    .then(function () { return count; });\n            }\n        }).then(cb);\n    };\n    Collection.prototype.sortBy = function (keyPath, cb) {\n        var parts = keyPath.split('.').reverse(), lastPart = parts[0], lastIndex = parts.length - 1;\n        function getval(obj, i) {\n            if (i)\n                return getval(obj[parts[i]], i - 1);\n            return obj[lastPart];\n        }\n        var order = this._ctx.dir === \"next\" ? 1 : -1;\n        function sorter(a, b) {\n            var aVal = getval(a, lastIndex), bVal = getval(b, lastIndex);\n            return aVal < bVal ? -order : aVal > bVal ? order : 0;\n        }\n        return this.toArray(function (a) {\n            return a.sort(sorter);\n        }).then(cb);\n    };\n    Collection.prototype.toArray = function (cb) {\n        var _this = this;\n        return this._read(function (trans) {\n            var ctx = _this._ctx;\n            if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n                var valueMapper_1 = ctx.valueMapper;\n                var index = getIndexOrStore(ctx, ctx.table.core.schema);\n                return ctx.table.core.query({\n                    trans: trans,\n                    limit: ctx.limit,\n                    values: true,\n                    query: {\n                        index: index,\n                        range: ctx.range\n                    }\n                }).then(function (_a) {\n                    var result = _a.result;\n                    return valueMapper_1 ? result.map(valueMapper_1) : result;\n                });\n            }\n            else {\n                var a_1 = [];\n                return iter(ctx, function (item) { return a_1.push(item); }, trans, ctx.table.core).then(function () { return a_1; });\n            }\n        }, cb);\n    };\n    Collection.prototype.offset = function (offset) {\n        var ctx = this._ctx;\n        if (offset <= 0)\n            return this;\n        ctx.offset += offset;\n        if (isPlainKeyRange(ctx)) {\n            addReplayFilter(ctx, function () {\n                var offsetLeft = offset;\n                return function (cursor, advance) {\n                    if (offsetLeft === 0)\n                        return true;\n                    if (offsetLeft === 1) {\n                        --offsetLeft;\n                        return false;\n                    }\n                    advance(function () {\n                        cursor.advance(offsetLeft);\n                        offsetLeft = 0;\n                    });\n                    return false;\n                };\n            });\n        }\n        else {\n            addReplayFilter(ctx, function () {\n                var offsetLeft = offset;\n                return function () { return (--offsetLeft < 0); };\n            });\n        }\n        return this;\n    };\n    Collection.prototype.limit = function (numRows) {\n        this._ctx.limit = Math.min(this._ctx.limit, numRows);\n        addReplayFilter(this._ctx, function () {\n            var rowsLeft = numRows;\n            return function (cursor, advance, resolve) {\n                if (--rowsLeft <= 0)\n                    advance(resolve);\n                return rowsLeft >= 0;\n            };\n        }, true);\n        return this;\n    };\n    Collection.prototype.until = function (filterFunction, bIncludeStopEntry) {\n        addFilter(this._ctx, function (cursor, advance, resolve) {\n            if (filterFunction(cursor.value)) {\n                advance(resolve);\n                return bIncludeStopEntry;\n            }\n            else {\n                return true;\n            }\n        });\n        return this;\n    };\n    Collection.prototype.first = function (cb) {\n        return this.limit(1).toArray(function (a) { return a[0]; }).then(cb);\n    };\n    Collection.prototype.last = function (cb) {\n        return this.reverse().first(cb);\n    };\n    Collection.prototype.filter = function (filterFunction) {\n        addFilter(this._ctx, function (cursor) {\n            return filterFunction(cursor.value);\n        });\n        addMatchFilter(this._ctx, filterFunction);\n        return this;\n    };\n    Collection.prototype.and = function (filter) {\n        return this.filter(filter);\n    };\n    Collection.prototype.or = function (indexName) {\n        return new this.db.WhereClause(this._ctx.table, indexName, this);\n    };\n    Collection.prototype.reverse = function () {\n        this._ctx.dir = (this._ctx.dir === \"prev\" ? \"next\" : \"prev\");\n        if (this._ondirectionchange)\n            this._ondirectionchange(this._ctx.dir);\n        return this;\n    };\n    Collection.prototype.desc = function () {\n        return this.reverse();\n    };\n    Collection.prototype.eachKey = function (cb) {\n        var ctx = this._ctx;\n        ctx.keysOnly = !ctx.isMatch;\n        return this.each(function (val, cursor) { cb(cursor.key, cursor); });\n    };\n    Collection.prototype.eachUniqueKey = function (cb) {\n        this._ctx.unique = \"unique\";\n        return this.eachKey(cb);\n    };\n    Collection.prototype.eachPrimaryKey = function (cb) {\n        var ctx = this._ctx;\n        ctx.keysOnly = !ctx.isMatch;\n        return this.each(function (val, cursor) { cb(cursor.primaryKey, cursor); });\n    };\n    Collection.prototype.keys = function (cb) {\n        var ctx = this._ctx;\n        ctx.keysOnly = !ctx.isMatch;\n        var a = [];\n        return this.each(function (item, cursor) {\n            a.push(cursor.key);\n        }).then(function () {\n            return a;\n        }).then(cb);\n    };\n    Collection.prototype.primaryKeys = function (cb) {\n        var ctx = this._ctx;\n        if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n            return this._read(function (trans) {\n                var index = getIndexOrStore(ctx, ctx.table.core.schema);\n                return ctx.table.core.query({\n                    trans: trans,\n                    values: false,\n                    limit: ctx.limit,\n                    query: {\n                        index: index,\n                        range: ctx.range\n                    }\n                });\n            }).then(function (_a) {\n                var result = _a.result;\n                return result;\n            }).then(cb);\n        }\n        ctx.keysOnly = !ctx.isMatch;\n        var a = [];\n        return this.each(function (item, cursor) {\n            a.push(cursor.primaryKey);\n        }).then(function () {\n            return a;\n        }).then(cb);\n    };\n    Collection.prototype.uniqueKeys = function (cb) {\n        this._ctx.unique = \"unique\";\n        return this.keys(cb);\n    };\n    Collection.prototype.firstKey = function (cb) {\n        return this.limit(1).keys(function (a) { return a[0]; }).then(cb);\n    };\n    Collection.prototype.lastKey = function (cb) {\n        return this.reverse().firstKey(cb);\n    };\n    Collection.prototype.distinct = function () {\n        var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n        if (!idx || !idx.multi)\n            return this;\n        var set = {};\n        addFilter(this._ctx, function (cursor) {\n            var strKey = cursor.primaryKey.toString();\n            var found = hasOwn(set, strKey);\n            set[strKey] = true;\n            return !found;\n        });\n        return this;\n    };\n    Collection.prototype.modify = function (changes) {\n        var _this = this;\n        var ctx = this._ctx;\n        return this._write(function (trans) {\n            var modifyer;\n            if (typeof changes === 'function') {\n                modifyer = changes;\n            }\n            else {\n                var keyPaths = keys(changes);\n                var numKeys = keyPaths.length;\n                modifyer = function (item) {\n                    var anythingModified = false;\n                    for (var i = 0; i < numKeys; ++i) {\n                        var keyPath = keyPaths[i], val = changes[keyPath];\n                        if (getByKeyPath(item, keyPath) !== val) {\n                            setByKeyPath(item, keyPath, val);\n                            anythingModified = true;\n                        }\n                    }\n                    return anythingModified;\n                };\n            }\n            var coreTable = ctx.table.core;\n            var _a = coreTable.schema.primaryKey, outbound = _a.outbound, extractKey = _a.extractKey;\n            var limit = _this.db._options.modifyChunkSize || 200;\n            var totalFailures = [];\n            var successCount = 0;\n            var failedKeys = [];\n            var applyMutateResult = function (expectedCount, res) {\n                var failures = res.failures, numFailures = res.numFailures;\n                successCount += expectedCount - numFailures;\n                for (var _i = 0, _a = keys(failures); _i < _a.length; _i++) {\n                    var pos = _a[_i];\n                    totalFailures.push(failures[pos]);\n                }\n            };\n            return _this.clone().primaryKeys().then(function (keys) {\n                var nextChunk = function (offset) {\n                    var count = Math.min(limit, keys.length - offset);\n                    return coreTable.getMany({\n                        trans: trans,\n                        keys: keys.slice(offset, offset + count),\n                        cache: \"immutable\"\n                    }).then(function (values) {\n                        var addValues = [];\n                        var putValues = [];\n                        var putKeys = outbound ? [] : null;\n                        var deleteKeys = [];\n                        for (var i = 0; i < count; ++i) {\n                            var origValue = values[i];\n                            var ctx_1 = {\n                                value: deepClone(origValue),\n                                primKey: keys[offset + i]\n                            };\n                            if (modifyer.call(ctx_1, ctx_1.value, ctx_1) !== false) {\n                                if (ctx_1.value == null) {\n                                    deleteKeys.push(keys[offset + i]);\n                                }\n                                else if (!outbound && cmp(extractKey(origValue), extractKey(ctx_1.value)) !== 0) {\n                                    deleteKeys.push(keys[offset + i]);\n                                    addValues.push(ctx_1.value);\n                                }\n                                else {\n                                    putValues.push(ctx_1.value);\n                                    if (outbound)\n                                        putKeys.push(keys[offset + i]);\n                                }\n                            }\n                        }\n                        var criteria = isPlainKeyRange(ctx) &&\n                            ctx.limit === Infinity &&\n                            (typeof changes !== 'function' || changes === deleteCallback) && {\n                            index: ctx.index,\n                            range: ctx.range\n                        };\n                        return Promise.resolve(addValues.length > 0 &&\n                            coreTable.mutate({ trans: trans, type: 'add', values: addValues })\n                                .then(function (res) {\n                                for (var pos in res.failures) {\n                                    deleteKeys.splice(parseInt(pos), 1);\n                                }\n                                applyMutateResult(addValues.length, res);\n                            })).then(function () { return (putValues.length > 0 || (criteria && typeof changes === 'object')) &&\n                            coreTable.mutate({\n                                trans: trans,\n                                type: 'put',\n                                keys: putKeys,\n                                values: putValues,\n                                criteria: criteria,\n                                changeSpec: typeof changes !== 'function'\n                                    && changes\n                            }).then(function (res) { return applyMutateResult(putValues.length, res); }); }).then(function () { return (deleteKeys.length > 0 || (criteria && changes === deleteCallback)) &&\n                            coreTable.mutate({\n                                trans: trans,\n                                type: 'delete',\n                                keys: deleteKeys,\n                                criteria: criteria\n                            }).then(function (res) { return applyMutateResult(deleteKeys.length, res); }); }).then(function () {\n                            return keys.length > offset + count && nextChunk(offset + limit);\n                        });\n                    });\n                };\n                return nextChunk(0).then(function () {\n                    if (totalFailures.length > 0)\n                        throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys);\n                    return keys.length;\n                });\n            });\n        });\n    };\n    Collection.prototype.delete = function () {\n        var ctx = this._ctx, range = ctx.range;\n        if (isPlainKeyRange(ctx) &&\n            ((ctx.isPrimKey && !hangsOnDeleteLargeKeyRange) || range.type === 3 ))\n         {\n            return this._write(function (trans) {\n                var primaryKey = ctx.table.core.schema.primaryKey;\n                var coreRange = range;\n                return ctx.table.core.count({ trans: trans, query: { index: primaryKey, range: coreRange } }).then(function (count) {\n                    return ctx.table.core.mutate({ trans: trans, type: 'deleteRange', range: coreRange })\n                        .then(function (_a) {\n                        var failures = _a.failures; _a.lastResult; _a.results; var numFailures = _a.numFailures;\n                        if (numFailures)\n                            throw new ModifyError(\"Could not delete some values\", Object.keys(failures).map(function (pos) { return failures[pos]; }), count - numFailures);\n                        return count - numFailures;\n                    });\n                });\n            });\n        }\n        return this.modify(deleteCallback);\n    };\n    return Collection;\n}());\nvar deleteCallback = function (value, ctx) { return ctx.value = null; };\n\nfunction createCollectionConstructor(db) {\n    return makeClassConstructor(Collection.prototype, function Collection(whereClause, keyRangeGenerator) {\n        this.db = db;\n        var keyRange = AnyRange, error = null;\n        if (keyRangeGenerator)\n            try {\n                keyRange = keyRangeGenerator();\n            }\n            catch (ex) {\n                error = ex;\n            }\n        var whereCtx = whereClause._ctx;\n        var table = whereCtx.table;\n        var readingHook = table.hook.reading.fire;\n        this._ctx = {\n            table: table,\n            index: whereCtx.index,\n            isPrimKey: (!whereCtx.index || (table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name)),\n            range: keyRange,\n            keysOnly: false,\n            dir: \"next\",\n            unique: \"\",\n            algorithm: null,\n            filter: null,\n            replayFilter: null,\n            justLimit: true,\n            isMatch: null,\n            offset: 0,\n            limit: Infinity,\n            error: error,\n            or: whereCtx.or,\n            valueMapper: readingHook !== mirror ? readingHook : null\n        };\n    });\n}\n\nfunction simpleCompare(a, b) {\n    return a < b ? -1 : a === b ? 0 : 1;\n}\nfunction simpleCompareReverse(a, b) {\n    return a > b ? -1 : a === b ? 0 : 1;\n}\n\nfunction fail(collectionOrWhereClause, err, T) {\n    var collection = collectionOrWhereClause instanceof WhereClause ?\n        new collectionOrWhereClause.Collection(collectionOrWhereClause) :\n        collectionOrWhereClause;\n    collection._ctx.error = T ? new T(err) : new TypeError(err);\n    return collection;\n}\nfunction emptyCollection(whereClause) {\n    return new whereClause.Collection(whereClause, function () { return rangeEqual(\"\"); }).limit(0);\n}\nfunction upperFactory(dir) {\n    return dir === \"next\" ?\n        function (s) { return s.toUpperCase(); } :\n        function (s) { return s.toLowerCase(); };\n}\nfunction lowerFactory(dir) {\n    return dir === \"next\" ?\n        function (s) { return s.toLowerCase(); } :\n        function (s) { return s.toUpperCase(); };\n}\nfunction nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n    var length = Math.min(key.length, lowerNeedle.length);\n    var llp = -1;\n    for (var i = 0; i < length; ++i) {\n        var lwrKeyChar = lowerKey[i];\n        if (lwrKeyChar !== lowerNeedle[i]) {\n            if (cmp(key[i], upperNeedle[i]) < 0)\n                return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n            if (cmp(key[i], lowerNeedle[i]) < 0)\n                return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n            if (llp >= 0)\n                return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n            return null;\n        }\n        if (cmp(key[i], lwrKeyChar) < 0)\n            llp = i;\n    }\n    if (length < lowerNeedle.length && dir === \"next\")\n        return key + upperNeedle.substr(key.length);\n    if (length < key.length && dir === \"prev\")\n        return key.substr(0, upperNeedle.length);\n    return (llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1));\n}\nfunction addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) {\n    var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length;\n    if (!needles.every(function (s) { return typeof s === 'string'; })) {\n        return fail(whereClause, STRING_EXPECTED);\n    }\n    function initDirection(dir) {\n        upper = upperFactory(dir);\n        lower = lowerFactory(dir);\n        compare = (dir === \"next\" ? simpleCompare : simpleCompareReverse);\n        var needleBounds = needles.map(function (needle) {\n            return { lower: lower(needle), upper: upper(needle) };\n        }).sort(function (a, b) {\n            return compare(a.lower, b.lower);\n        });\n        upperNeedles = needleBounds.map(function (nb) { return nb.upper; });\n        lowerNeedles = needleBounds.map(function (nb) { return nb.lower; });\n        direction = dir;\n        nextKeySuffix = (dir === \"next\" ? \"\" : suffix);\n    }\n    initDirection(\"next\");\n    var c = new whereClause.Collection(whereClause, function () { return createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix); });\n    c._ondirectionchange = function (direction) {\n        initDirection(direction);\n    };\n    var firstPossibleNeedle = 0;\n    c._addAlgorithm(function (cursor, advance, resolve) {\n        var key = cursor.key;\n        if (typeof key !== 'string')\n            return false;\n        var lowerKey = lower(key);\n        if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n            return true;\n        }\n        else {\n            var lowestPossibleCasing = null;\n            for (var i = firstPossibleNeedle; i < needlesLen; ++i) {\n                var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction);\n                if (casing === null && lowestPossibleCasing === null)\n                    firstPossibleNeedle = i + 1;\n                else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) {\n                    lowestPossibleCasing = casing;\n                }\n            }\n            if (lowestPossibleCasing !== null) {\n                advance(function () { cursor.continue(lowestPossibleCasing + nextKeySuffix); });\n            }\n            else {\n                advance(resolve);\n            }\n            return false;\n        }\n    });\n    return c;\n}\nfunction createRange(lower, upper, lowerOpen, upperOpen) {\n    return {\n        type: 2 ,\n        lower: lower,\n        upper: upper,\n        lowerOpen: lowerOpen,\n        upperOpen: upperOpen\n    };\n}\nfunction rangeEqual(value) {\n    return {\n        type: 1 ,\n        lower: value,\n        upper: value\n    };\n}\n\nvar WhereClause =  (function () {\n    function WhereClause() {\n    }\n    Object.defineProperty(WhereClause.prototype, \"Collection\", {\n        get: function () {\n            return this._ctx.table.db.Collection;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    WhereClause.prototype.between = function (lower, upper, includeLower, includeUpper) {\n        includeLower = includeLower !== false;\n        includeUpper = includeUpper === true;\n        try {\n            if ((this._cmp(lower, upper) > 0) ||\n                (this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)))\n                return emptyCollection(this);\n            return new this.Collection(this, function () { return createRange(lower, upper, !includeLower, !includeUpper); });\n        }\n        catch (e) {\n            return fail(this, INVALID_KEY_ARGUMENT);\n        }\n    };\n    WhereClause.prototype.equals = function (value) {\n        if (value == null)\n            return fail(this, INVALID_KEY_ARGUMENT);\n        return new this.Collection(this, function () { return rangeEqual(value); });\n    };\n    WhereClause.prototype.above = function (value) {\n        if (value == null)\n            return fail(this, INVALID_KEY_ARGUMENT);\n        return new this.Collection(this, function () { return createRange(value, undefined, true); });\n    };\n    WhereClause.prototype.aboveOrEqual = function (value) {\n        if (value == null)\n            return fail(this, INVALID_KEY_ARGUMENT);\n        return new this.Collection(this, function () { return createRange(value, undefined, false); });\n    };\n    WhereClause.prototype.below = function (value) {\n        if (value == null)\n            return fail(this, INVALID_KEY_ARGUMENT);\n        return new this.Collection(this, function () { return createRange(undefined, value, false, true); });\n    };\n    WhereClause.prototype.belowOrEqual = function (value) {\n        if (value == null)\n            return fail(this, INVALID_KEY_ARGUMENT);\n        return new this.Collection(this, function () { return createRange(undefined, value); });\n    };\n    WhereClause.prototype.startsWith = function (str) {\n        if (typeof str !== 'string')\n            return fail(this, STRING_EXPECTED);\n        return this.between(str, str + maxString, true, true);\n    };\n    WhereClause.prototype.startsWithIgnoreCase = function (str) {\n        if (str === \"\")\n            return this.startsWith(str);\n        return addIgnoreCaseAlgorithm(this, function (x, a) { return x.indexOf(a[0]) === 0; }, [str], maxString);\n    };\n    WhereClause.prototype.equalsIgnoreCase = function (str) {\n        return addIgnoreCaseAlgorithm(this, function (x, a) { return x === a[0]; }, [str], \"\");\n    };\n    WhereClause.prototype.anyOfIgnoreCase = function () {\n        var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n        if (set.length === 0)\n            return emptyCollection(this);\n        return addIgnoreCaseAlgorithm(this, function (x, a) { return a.indexOf(x) !== -1; }, set, \"\");\n    };\n    WhereClause.prototype.startsWithAnyOfIgnoreCase = function () {\n        var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n        if (set.length === 0)\n            return emptyCollection(this);\n        return addIgnoreCaseAlgorithm(this, function (x, a) { return a.some(function (n) { return x.indexOf(n) === 0; }); }, set, maxString);\n    };\n    WhereClause.prototype.anyOf = function () {\n        var _this = this;\n        var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n        var compare = this._cmp;\n        try {\n            set.sort(compare);\n        }\n        catch (e) {\n            return fail(this, INVALID_KEY_ARGUMENT);\n        }\n        if (set.length === 0)\n            return emptyCollection(this);\n        var c = new this.Collection(this, function () { return createRange(set[0], set[set.length - 1]); });\n        c._ondirectionchange = function (direction) {\n            compare = (direction === \"next\" ?\n                _this._ascending :\n                _this._descending);\n            set.sort(compare);\n        };\n        var i = 0;\n        c._addAlgorithm(function (cursor, advance, resolve) {\n            var key = cursor.key;\n            while (compare(key, set[i]) > 0) {\n                ++i;\n                if (i === set.length) {\n                    advance(resolve);\n                    return false;\n                }\n            }\n            if (compare(key, set[i]) === 0) {\n                return true;\n            }\n            else {\n                advance(function () { cursor.continue(set[i]); });\n                return false;\n            }\n        });\n        return c;\n    };\n    WhereClause.prototype.notEqual = function (value) {\n        return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false });\n    };\n    WhereClause.prototype.noneOf = function () {\n        var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n        if (set.length === 0)\n            return new this.Collection(this);\n        try {\n            set.sort(this._ascending);\n        }\n        catch (e) {\n            return fail(this, INVALID_KEY_ARGUMENT);\n        }\n        var ranges = set.reduce(function (res, val) { return res ?\n            res.concat([[res[res.length - 1][1], val]]) :\n            [[minKey, val]]; }, null);\n        ranges.push([set[set.length - 1], this.db._maxKey]);\n        return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false });\n    };\n    WhereClause.prototype.inAnyRange = function (ranges, options) {\n        var _this = this;\n        var cmp = this._cmp, ascending = this._ascending, descending = this._descending, min = this._min, max = this._max;\n        if (ranges.length === 0)\n            return emptyCollection(this);\n        if (!ranges.every(function (range) {\n            return range[0] !== undefined &&\n                range[1] !== undefined &&\n                ascending(range[0], range[1]) <= 0;\n        })) {\n            return fail(this, \"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\", exceptions.InvalidArgument);\n        }\n        var includeLowers = !options || options.includeLowers !== false;\n        var includeUppers = options && options.includeUppers === true;\n        function addRange(ranges, newRange) {\n            var i = 0, l = ranges.length;\n            for (; i < l; ++i) {\n                var range = ranges[i];\n                if (cmp(newRange[0], range[1]) < 0 && cmp(newRange[1], range[0]) > 0) {\n                    range[0] = min(range[0], newRange[0]);\n                    range[1] = max(range[1], newRange[1]);\n                    break;\n                }\n            }\n            if (i === l)\n                ranges.push(newRange);\n            return ranges;\n        }\n        var sortDirection = ascending;\n        function rangeSorter(a, b) { return sortDirection(a[0], b[0]); }\n        var set;\n        try {\n            set = ranges.reduce(addRange, []);\n            set.sort(rangeSorter);\n        }\n        catch (ex) {\n            return fail(this, INVALID_KEY_ARGUMENT);\n        }\n        var rangePos = 0;\n        var keyIsBeyondCurrentEntry = includeUppers ?\n            function (key) { return ascending(key, set[rangePos][1]) > 0; } :\n            function (key) { return ascending(key, set[rangePos][1]) >= 0; };\n        var keyIsBeforeCurrentEntry = includeLowers ?\n            function (key) { return descending(key, set[rangePos][0]) > 0; } :\n            function (key) { return descending(key, set[rangePos][0]) >= 0; };\n        function keyWithinCurrentRange(key) {\n            return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key);\n        }\n        var checkKey = keyIsBeyondCurrentEntry;\n        var c = new this.Collection(this, function () { return createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers); });\n        c._ondirectionchange = function (direction) {\n            if (direction === \"next\") {\n                checkKey = keyIsBeyondCurrentEntry;\n                sortDirection = ascending;\n            }\n            else {\n                checkKey = keyIsBeforeCurrentEntry;\n                sortDirection = descending;\n            }\n            set.sort(rangeSorter);\n        };\n        c._addAlgorithm(function (cursor, advance, resolve) {\n            var key = cursor.key;\n            while (checkKey(key)) {\n                ++rangePos;\n                if (rangePos === set.length) {\n                    advance(resolve);\n                    return false;\n                }\n            }\n            if (keyWithinCurrentRange(key)) {\n                return true;\n            }\n            else if (_this._cmp(key, set[rangePos][1]) === 0 || _this._cmp(key, set[rangePos][0]) === 0) {\n                return false;\n            }\n            else {\n                advance(function () {\n                    if (sortDirection === ascending)\n                        cursor.continue(set[rangePos][0]);\n                    else\n                        cursor.continue(set[rangePos][1]);\n                });\n                return false;\n            }\n        });\n        return c;\n    };\n    WhereClause.prototype.startsWithAnyOf = function () {\n        var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n        if (!set.every(function (s) { return typeof s === 'string'; })) {\n            return fail(this, \"startsWithAnyOf() only works with strings\");\n        }\n        if (set.length === 0)\n            return emptyCollection(this);\n        return this.inAnyRange(set.map(function (str) { return [str, str + maxString]; }));\n    };\n    return WhereClause;\n}());\n\nfunction createWhereClauseConstructor(db) {\n    return makeClassConstructor(WhereClause.prototype, function WhereClause(table, index, orCollection) {\n        this.db = db;\n        this._ctx = {\n            table: table,\n            index: index === \":id\" ? null : index,\n            or: orCollection\n        };\n        var indexedDB = db._deps.indexedDB;\n        if (!indexedDB)\n            throw new exceptions.MissingAPI();\n        this._cmp = this._ascending = indexedDB.cmp.bind(indexedDB);\n        this._descending = function (a, b) { return indexedDB.cmp(b, a); };\n        this._max = function (a, b) { return indexedDB.cmp(a, b) > 0 ? a : b; };\n        this._min = function (a, b) { return indexedDB.cmp(a, b) < 0 ? a : b; };\n        this._IDBKeyRange = db._deps.IDBKeyRange;\n    });\n}\n\nfunction eventRejectHandler(reject) {\n    return wrap(function (event) {\n        preventDefault(event);\n        reject(event.target.error);\n        return false;\n    });\n}\nfunction preventDefault(event) {\n    if (event.stopPropagation)\n        event.stopPropagation();\n    if (event.preventDefault)\n        event.preventDefault();\n}\n\nvar DEXIE_STORAGE_MUTATED_EVENT_NAME = 'storagemutated';\nvar STORAGE_MUTATED_DOM_EVENT_NAME = 'x-storagemutated-1';\nvar globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME);\n\nvar Transaction =  (function () {\n    function Transaction() {\n    }\n    Transaction.prototype._lock = function () {\n        assert(!PSD.global);\n        ++this._reculock;\n        if (this._reculock === 1 && !PSD.global)\n            PSD.lockOwnerFor = this;\n        return this;\n    };\n    Transaction.prototype._unlock = function () {\n        assert(!PSD.global);\n        if (--this._reculock === 0) {\n            if (!PSD.global)\n                PSD.lockOwnerFor = null;\n            while (this._blockedFuncs.length > 0 && !this._locked()) {\n                var fnAndPSD = this._blockedFuncs.shift();\n                try {\n                    usePSD(fnAndPSD[1], fnAndPSD[0]);\n                }\n                catch (e) { }\n            }\n        }\n        return this;\n    };\n    Transaction.prototype._locked = function () {\n        return this._reculock && PSD.lockOwnerFor !== this;\n    };\n    Transaction.prototype.create = function (idbtrans) {\n        var _this = this;\n        if (!this.mode)\n            return this;\n        var idbdb = this.db.idbdb;\n        var dbOpenError = this.db._state.dbOpenError;\n        assert(!this.idbtrans);\n        if (!idbtrans && !idbdb) {\n            switch (dbOpenError && dbOpenError.name) {\n                case \"DatabaseClosedError\":\n                    throw new exceptions.DatabaseClosed(dbOpenError);\n                case \"MissingAPIError\":\n                    throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n                default:\n                    throw new exceptions.OpenFailed(dbOpenError);\n            }\n        }\n        if (!this.active)\n            throw new exceptions.TransactionInactive();\n        assert(this._completion._state === null);\n        idbtrans = this.idbtrans = idbtrans ||\n            (this.db.core\n                ? this.db.core.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability })\n                : idbdb.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability }));\n        idbtrans.onerror = wrap(function (ev) {\n            preventDefault(ev);\n            _this._reject(idbtrans.error);\n        });\n        idbtrans.onabort = wrap(function (ev) {\n            preventDefault(ev);\n            _this.active && _this._reject(new exceptions.Abort(idbtrans.error));\n            _this.active = false;\n            _this.on(\"abort\").fire(ev);\n        });\n        idbtrans.oncomplete = wrap(function () {\n            _this.active = false;\n            _this._resolve();\n            if ('mutatedParts' in idbtrans) {\n                globalEvents.storagemutated.fire(idbtrans[\"mutatedParts\"]);\n            }\n        });\n        return this;\n    };\n    Transaction.prototype._promise = function (mode, fn, bWriteLock) {\n        var _this = this;\n        if (mode === 'readwrite' && this.mode !== 'readwrite')\n            return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n        if (!this.active)\n            return rejection(new exceptions.TransactionInactive());\n        if (this._locked()) {\n            return new DexiePromise(function (resolve, reject) {\n                _this._blockedFuncs.push([function () {\n                        _this._promise(mode, fn, bWriteLock).then(resolve, reject);\n                    }, PSD]);\n            });\n        }\n        else if (bWriteLock) {\n            return newScope(function () {\n                var p = new DexiePromise(function (resolve, reject) {\n                    _this._lock();\n                    var rv = fn(resolve, reject, _this);\n                    if (rv && rv.then)\n                        rv.then(resolve, reject);\n                });\n                p.finally(function () { return _this._unlock(); });\n                p._lib = true;\n                return p;\n            });\n        }\n        else {\n            var p = new DexiePromise(function (resolve, reject) {\n                var rv = fn(resolve, reject, _this);\n                if (rv && rv.then)\n                    rv.then(resolve, reject);\n            });\n            p._lib = true;\n            return p;\n        }\n    };\n    Transaction.prototype._root = function () {\n        return this.parent ? this.parent._root() : this;\n    };\n    Transaction.prototype.waitFor = function (promiseLike) {\n        var root = this._root();\n        var promise = DexiePromise.resolve(promiseLike);\n        if (root._waitingFor) {\n            root._waitingFor = root._waitingFor.then(function () { return promise; });\n        }\n        else {\n            root._waitingFor = promise;\n            root._waitingQueue = [];\n            var store = root.idbtrans.objectStore(root.storeNames[0]);\n            (function spin() {\n                ++root._spinCount;\n                while (root._waitingQueue.length)\n                    (root._waitingQueue.shift())();\n                if (root._waitingFor)\n                    store.get(-Infinity).onsuccess = spin;\n            }());\n        }\n        var currentWaitPromise = root._waitingFor;\n        return new DexiePromise(function (resolve, reject) {\n            promise.then(function (res) { return root._waitingQueue.push(wrap(resolve.bind(null, res))); }, function (err) { return root._waitingQueue.push(wrap(reject.bind(null, err))); }).finally(function () {\n                if (root._waitingFor === currentWaitPromise) {\n                    root._waitingFor = null;\n                }\n            });\n        });\n    };\n    Transaction.prototype.abort = function () {\n        if (this.active) {\n            this.active = false;\n            if (this.idbtrans)\n                this.idbtrans.abort();\n            this._reject(new exceptions.Abort());\n        }\n    };\n    Transaction.prototype.table = function (tableName) {\n        var memoizedTables = (this._memoizedTables || (this._memoizedTables = {}));\n        if (hasOwn(memoizedTables, tableName))\n            return memoizedTables[tableName];\n        var tableSchema = this.schema[tableName];\n        if (!tableSchema) {\n            throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n        }\n        var transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n        transactionBoundTable.core = this.db.core.table(tableName);\n        memoizedTables[tableName] = transactionBoundTable;\n        return transactionBoundTable;\n    };\n    return Transaction;\n}());\n\nfunction createTransactionConstructor(db) {\n    return makeClassConstructor(Transaction.prototype, function Transaction(mode, storeNames, dbschema, chromeTransactionDurability, parent) {\n        var _this = this;\n        this.db = db;\n        this.mode = mode;\n        this.storeNames = storeNames;\n        this.schema = dbschema;\n        this.chromeTransactionDurability = chromeTransactionDurability;\n        this.idbtrans = null;\n        this.on = Events(this, \"complete\", \"error\", \"abort\");\n        this.parent = parent || null;\n        this.active = true;\n        this._reculock = 0;\n        this._blockedFuncs = [];\n        this._resolve = null;\n        this._reject = null;\n        this._waitingFor = null;\n        this._waitingQueue = null;\n        this._spinCount = 0;\n        this._completion = new DexiePromise(function (resolve, reject) {\n            _this._resolve = resolve;\n            _this._reject = reject;\n        });\n        this._completion.then(function () {\n            _this.active = false;\n            _this.on.complete.fire();\n        }, function (e) {\n            var wasActive = _this.active;\n            _this.active = false;\n            _this.on.error.fire(e);\n            _this.parent ?\n                _this.parent._reject(e) :\n                wasActive && _this.idbtrans && _this.idbtrans.abort();\n            return rejection(e);\n        });\n    });\n}\n\nfunction createIndexSpec(name, keyPath, unique, multi, auto, compound, isPrimKey) {\n    return {\n        name: name,\n        keyPath: keyPath,\n        unique: unique,\n        multi: multi,\n        auto: auto,\n        compound: compound,\n        src: (unique && !isPrimKey ? '&' : '') + (multi ? '*' : '') + (auto ? \"++\" : \"\") + nameFromKeyPath(keyPath)\n    };\n}\nfunction nameFromKeyPath(keyPath) {\n    return typeof keyPath === 'string' ?\n        keyPath :\n        keyPath ? ('[' + [].join.call(keyPath, '+') + ']') : \"\";\n}\n\nfunction createTableSchema(name, primKey, indexes) {\n    return {\n        name: name,\n        primKey: primKey,\n        indexes: indexes,\n        mappedClass: null,\n        idxByName: arrayToObject(indexes, function (index) { return [index.name, index]; })\n    };\n}\n\nfunction safariMultiStoreFix(storeNames) {\n    return storeNames.length === 1 ? storeNames[0] : storeNames;\n}\nvar getMaxKey = function (IdbKeyRange) {\n    try {\n        IdbKeyRange.only([[]]);\n        getMaxKey = function () { return [[]]; };\n        return [[]];\n    }\n    catch (e) {\n        getMaxKey = function () { return maxString; };\n        return maxString;\n    }\n};\n\nfunction getKeyExtractor(keyPath) {\n    if (keyPath == null) {\n        return function () { return undefined; };\n    }\n    else if (typeof keyPath === 'string') {\n        return getSinglePathKeyExtractor(keyPath);\n    }\n    else {\n        return function (obj) { return getByKeyPath(obj, keyPath); };\n    }\n}\nfunction getSinglePathKeyExtractor(keyPath) {\n    var split = keyPath.split('.');\n    if (split.length === 1) {\n        return function (obj) { return obj[keyPath]; };\n    }\n    else {\n        return function (obj) { return getByKeyPath(obj, keyPath); };\n    }\n}\n\nfunction arrayify(arrayLike) {\n    return [].slice.call(arrayLike);\n}\nvar _id_counter = 0;\nfunction getKeyPathAlias(keyPath) {\n    return keyPath == null ?\n        \":id\" :\n        typeof keyPath === 'string' ?\n            keyPath :\n            \"[\" + keyPath.join('+') + \"]\";\n}\nfunction createDBCore(db, IdbKeyRange, tmpTrans) {\n    function extractSchema(db, trans) {\n        var tables = arrayify(db.objectStoreNames);\n        return {\n            schema: {\n                name: db.name,\n                tables: tables.map(function (table) { return trans.objectStore(table); }).map(function (store) {\n                    var keyPath = store.keyPath, autoIncrement = store.autoIncrement;\n                    var compound = isArray(keyPath);\n                    var outbound = keyPath == null;\n                    var indexByKeyPath = {};\n                    var result = {\n                        name: store.name,\n                        primaryKey: {\n                            name: null,\n                            isPrimaryKey: true,\n                            outbound: outbound,\n                            compound: compound,\n                            keyPath: keyPath,\n                            autoIncrement: autoIncrement,\n                            unique: true,\n                            extractKey: getKeyExtractor(keyPath)\n                        },\n                        indexes: arrayify(store.indexNames).map(function (indexName) { return store.index(indexName); })\n                            .map(function (index) {\n                            var name = index.name, unique = index.unique, multiEntry = index.multiEntry, keyPath = index.keyPath;\n                            var compound = isArray(keyPath);\n                            var result = {\n                                name: name,\n                                compound: compound,\n                                keyPath: keyPath,\n                                unique: unique,\n                                multiEntry: multiEntry,\n                                extractKey: getKeyExtractor(keyPath)\n                            };\n                            indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n                            return result;\n                        }),\n                        getIndexByKeyPath: function (keyPath) { return indexByKeyPath[getKeyPathAlias(keyPath)]; }\n                    };\n                    indexByKeyPath[\":id\"] = result.primaryKey;\n                    if (keyPath != null) {\n                        indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n                    }\n                    return result;\n                })\n            },\n            hasGetAll: tables.length > 0 && ('getAll' in trans.objectStore(tables[0])) &&\n                !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n                    !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n                    [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n        };\n    }\n    function makeIDBKeyRange(range) {\n        if (range.type === 3 )\n            return null;\n        if (range.type === 4 )\n            throw new Error(\"Cannot convert never type to IDBKeyRange\");\n        var lower = range.lower, upper = range.upper, lowerOpen = range.lowerOpen, upperOpen = range.upperOpen;\n        var idbRange = lower === undefined ?\n            upper === undefined ?\n                null :\n                IdbKeyRange.upperBound(upper, !!upperOpen) :\n            upper === undefined ?\n                IdbKeyRange.lowerBound(lower, !!lowerOpen) :\n                IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n        return idbRange;\n    }\n    function createDbCoreTable(tableSchema) {\n        var tableName = tableSchema.name;\n        function mutate(_a) {\n            var trans = _a.trans, type = _a.type, keys = _a.keys, values = _a.values, range = _a.range;\n            return new Promise(function (resolve, reject) {\n                resolve = wrap(resolve);\n                var store = trans.objectStore(tableName);\n                var outbound = store.keyPath == null;\n                var isAddOrPut = type === \"put\" || type === \"add\";\n                if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange')\n                    throw new Error(\"Invalid operation type: \" + type);\n                var length = (keys || values || { length: 1 }).length;\n                if (keys && values && keys.length !== values.length) {\n                    throw new Error(\"Given keys array must have same length as given values array.\");\n                }\n                if (length === 0)\n                    return resolve({ numFailures: 0, failures: {}, results: [], lastResult: undefined });\n                var req;\n                var reqs = [];\n                var failures = [];\n                var numFailures = 0;\n                var errorHandler = function (event) {\n                    ++numFailures;\n                    preventDefault(event);\n                };\n                if (type === 'deleteRange') {\n                    if (range.type === 4 )\n                        return resolve({ numFailures: numFailures, failures: failures, results: [], lastResult: undefined });\n                    if (range.type === 3 )\n                        reqs.push(req = store.clear());\n                    else\n                        reqs.push(req = store.delete(makeIDBKeyRange(range)));\n                }\n                else {\n                    var _a = isAddOrPut ?\n                        outbound ?\n                            [values, keys] :\n                            [values, null] :\n                        [keys, null], args1 = _a[0], args2 = _a[1];\n                    if (isAddOrPut) {\n                        for (var i = 0; i < length; ++i) {\n                            reqs.push(req = (args2 && args2[i] !== undefined ?\n                                store[type](args1[i], args2[i]) :\n                                store[type](args1[i])));\n                            req.onerror = errorHandler;\n                        }\n                    }\n                    else {\n                        for (var i = 0; i < length; ++i) {\n                            reqs.push(req = store[type](args1[i]));\n                            req.onerror = errorHandler;\n                        }\n                    }\n                }\n                var done = function (event) {\n                    var lastResult = event.target.result;\n                    reqs.forEach(function (req, i) { return req.error != null && (failures[i] = req.error); });\n                    resolve({\n                        numFailures: numFailures,\n                        failures: failures,\n                        results: type === \"delete\" ? keys : reqs.map(function (req) { return req.result; }),\n                        lastResult: lastResult\n                    });\n                };\n                req.onerror = function (event) {\n                    errorHandler(event);\n                    done(event);\n                };\n                req.onsuccess = done;\n            });\n        }\n        function openCursor(_a) {\n            var trans = _a.trans, values = _a.values, query = _a.query, reverse = _a.reverse, unique = _a.unique;\n            return new Promise(function (resolve, reject) {\n                resolve = wrap(resolve);\n                var index = query.index, range = query.range;\n                var store = trans.objectStore(tableName);\n                var source = index.isPrimaryKey ?\n                    store :\n                    store.index(index.name);\n                var direction = reverse ?\n                    unique ?\n                        \"prevunique\" :\n                        \"prev\" :\n                    unique ?\n                        \"nextunique\" :\n                        \"next\";\n                var req = values || !('openKeyCursor' in source) ?\n                    source.openCursor(makeIDBKeyRange(range), direction) :\n                    source.openKeyCursor(makeIDBKeyRange(range), direction);\n                req.onerror = eventRejectHandler(reject);\n                req.onsuccess = wrap(function (ev) {\n                    var cursor = req.result;\n                    if (!cursor) {\n                        resolve(null);\n                        return;\n                    }\n                    cursor.___id = ++_id_counter;\n                    cursor.done = false;\n                    var _cursorContinue = cursor.continue.bind(cursor);\n                    var _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n                    if (_cursorContinuePrimaryKey)\n                        _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n                    var _cursorAdvance = cursor.advance.bind(cursor);\n                    var doThrowCursorIsNotStarted = function () { throw new Error(\"Cursor not started\"); };\n                    var doThrowCursorIsStopped = function () { throw new Error(\"Cursor not stopped\"); };\n                    cursor.trans = trans;\n                    cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n                    cursor.fail = wrap(reject);\n                    cursor.next = function () {\n                        var _this = this;\n                        var gotOne = 1;\n                        return this.start(function () { return gotOne-- ? _this.continue() : _this.stop(); }).then(function () { return _this; });\n                    };\n                    cursor.start = function (callback) {\n                        var iterationPromise = new Promise(function (resolveIteration, rejectIteration) {\n                            resolveIteration = wrap(resolveIteration);\n                            req.onerror = eventRejectHandler(rejectIteration);\n                            cursor.fail = rejectIteration;\n                            cursor.stop = function (value) {\n                                cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n                                resolveIteration(value);\n                            };\n                        });\n                        var guardedCallback = function () {\n                            if (req.result) {\n                                try {\n                                    callback();\n                                }\n                                catch (err) {\n                                    cursor.fail(err);\n                                }\n                            }\n                            else {\n                                cursor.done = true;\n                                cursor.start = function () { throw new Error(\"Cursor behind last entry\"); };\n                                cursor.stop();\n                            }\n                        };\n                        req.onsuccess = wrap(function (ev) {\n                            req.onsuccess = guardedCallback;\n                            guardedCallback();\n                        });\n                        cursor.continue = _cursorContinue;\n                        cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n                        cursor.advance = _cursorAdvance;\n                        guardedCallback();\n                        return iterationPromise;\n                    };\n                    resolve(cursor);\n                }, reject);\n            });\n        }\n        function query(hasGetAll) {\n            return function (request) {\n                return new Promise(function (resolve, reject) {\n                    resolve = wrap(resolve);\n                    var trans = request.trans, values = request.values, limit = request.limit, query = request.query;\n                    var nonInfinitLimit = limit === Infinity ? undefined : limit;\n                    var index = query.index, range = query.range;\n                    var store = trans.objectStore(tableName);\n                    var source = index.isPrimaryKey ? store : store.index(index.name);\n                    var idbKeyRange = makeIDBKeyRange(range);\n                    if (limit === 0)\n                        return resolve({ result: [] });\n                    if (hasGetAll) {\n                        var req = values ?\n                            source.getAll(idbKeyRange, nonInfinitLimit) :\n                            source.getAllKeys(idbKeyRange, nonInfinitLimit);\n                        req.onsuccess = function (event) { return resolve({ result: event.target.result }); };\n                        req.onerror = eventRejectHandler(reject);\n                    }\n                    else {\n                        var count_1 = 0;\n                        var req_1 = values || !('openKeyCursor' in source) ?\n                            source.openCursor(idbKeyRange) :\n                            source.openKeyCursor(idbKeyRange);\n                        var result_1 = [];\n                        req_1.onsuccess = function (event) {\n                            var cursor = req_1.result;\n                            if (!cursor)\n                                return resolve({ result: result_1 });\n                            result_1.push(values ? cursor.value : cursor.primaryKey);\n                            if (++count_1 === limit)\n                                return resolve({ result: result_1 });\n                            cursor.continue();\n                        };\n                        req_1.onerror = eventRejectHandler(reject);\n                    }\n                });\n            };\n        }\n        return {\n            name: tableName,\n            schema: tableSchema,\n            mutate: mutate,\n            getMany: function (_a) {\n                var trans = _a.trans, keys = _a.keys;\n                return new Promise(function (resolve, reject) {\n                    resolve = wrap(resolve);\n                    var store = trans.objectStore(tableName);\n                    var length = keys.length;\n                    var result = new Array(length);\n                    var keyCount = 0;\n                    var callbackCount = 0;\n                    var req;\n                    var successHandler = function (event) {\n                        var req = event.target;\n                        if ((result[req._pos] = req.result) != null)\n                            ;\n                        if (++callbackCount === keyCount)\n                            resolve(result);\n                    };\n                    var errorHandler = eventRejectHandler(reject);\n                    for (var i = 0; i < length; ++i) {\n                        var key = keys[i];\n                        if (key != null) {\n                            req = store.get(keys[i]);\n                            req._pos = i;\n                            req.onsuccess = successHandler;\n                            req.onerror = errorHandler;\n                            ++keyCount;\n                        }\n                    }\n                    if (keyCount === 0)\n                        resolve(result);\n                });\n            },\n            get: function (_a) {\n                var trans = _a.trans, key = _a.key;\n                return new Promise(function (resolve, reject) {\n                    resolve = wrap(resolve);\n                    var store = trans.objectStore(tableName);\n                    var req = store.get(key);\n                    req.onsuccess = function (event) { return resolve(event.target.result); };\n                    req.onerror = eventRejectHandler(reject);\n                });\n            },\n            query: query(hasGetAll),\n            openCursor: openCursor,\n            count: function (_a) {\n                var query = _a.query, trans = _a.trans;\n                var index = query.index, range = query.range;\n                return new Promise(function (resolve, reject) {\n                    var store = trans.objectStore(tableName);\n                    var source = index.isPrimaryKey ? store : store.index(index.name);\n                    var idbKeyRange = makeIDBKeyRange(range);\n                    var req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n                    req.onsuccess = wrap(function (ev) { return resolve(ev.target.result); });\n                    req.onerror = eventRejectHandler(reject);\n                });\n            }\n        };\n    }\n    var _a = extractSchema(db, tmpTrans), schema = _a.schema, hasGetAll = _a.hasGetAll;\n    var tables = schema.tables.map(function (tableSchema) { return createDbCoreTable(tableSchema); });\n    var tableMap = {};\n    tables.forEach(function (table) { return tableMap[table.name] = table; });\n    return {\n        stack: \"dbcore\",\n        transaction: db.transaction.bind(db),\n        table: function (name) {\n            var result = tableMap[name];\n            if (!result)\n                throw new Error(\"Table '\" + name + \"' not found\");\n            return tableMap[name];\n        },\n        MIN_KEY: -Infinity,\n        MAX_KEY: getMaxKey(IdbKeyRange),\n        schema: schema\n    };\n}\n\nfunction createMiddlewareStack(stackImpl, middlewares) {\n    return middlewares.reduce(function (down, _a) {\n        var create = _a.create;\n        return (__assign(__assign({}, down), create(down)));\n    }, stackImpl);\n}\nfunction createMiddlewareStacks(middlewares, idbdb, _a, tmpTrans) {\n    var IDBKeyRange = _a.IDBKeyRange; _a.indexedDB;\n    var dbcore = createMiddlewareStack(createDBCore(idbdb, IDBKeyRange, tmpTrans), middlewares.dbcore);\n    return {\n        dbcore: dbcore\n    };\n}\nfunction generateMiddlewareStacks(_a, tmpTrans) {\n    var db = _a._novip;\n    var idbdb = tmpTrans.db;\n    var stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n    db.core = stacks.dbcore;\n    db.tables.forEach(function (table) {\n        var tableName = table.name;\n        if (db.core.schema.tables.some(function (tbl) { return tbl.name === tableName; })) {\n            table.core = db.core.table(tableName);\n            if (db[tableName] instanceof db.Table) {\n                db[tableName].core = table.core;\n            }\n        }\n    });\n}\n\nfunction setApiOnPlace(_a, objs, tableNames, dbschema) {\n    var db = _a._novip;\n    tableNames.forEach(function (tableName) {\n        var schema = dbschema[tableName];\n        objs.forEach(function (obj) {\n            var propDesc = getPropertyDescriptor(obj, tableName);\n            if (!propDesc || (\"value\" in propDesc && propDesc.value === undefined)) {\n                if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {\n                    setProp(obj, tableName, {\n                        get: function () { return this.table(tableName); },\n                        set: function (value) {\n                            defineProperty(this, tableName, { value: value, writable: true, configurable: true, enumerable: true });\n                        }\n                    });\n                }\n                else {\n                    obj[tableName] = new db.Table(tableName, schema);\n                }\n            }\n        });\n    });\n}\nfunction removeTablesApi(_a, objs) {\n    var db = _a._novip;\n    objs.forEach(function (obj) {\n        for (var key in obj) {\n            if (obj[key] instanceof db.Table)\n                delete obj[key];\n        }\n    });\n}\nfunction lowerVersionFirst(a, b) {\n    return a._cfg.version - b._cfg.version;\n}\nfunction runUpgraders(db, oldVersion, idbUpgradeTrans, reject) {\n    var globalSchema = db._dbSchema;\n    var trans = db._createTransaction('readwrite', db._storeNames, globalSchema);\n    trans.create(idbUpgradeTrans);\n    trans._completion.catch(reject);\n    var rejectTransaction = trans._reject.bind(trans);\n    var transless = PSD.transless || PSD;\n    newScope(function () {\n        PSD.trans = trans;\n        PSD.transless = transless;\n        if (oldVersion === 0) {\n            keys(globalSchema).forEach(function (tableName) {\n                createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes);\n            });\n            generateMiddlewareStacks(db, idbUpgradeTrans);\n            DexiePromise.follow(function () { return db.on.populate.fire(trans); }).catch(rejectTransaction);\n        }\n        else\n            updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans).catch(rejectTransaction);\n    });\n}\nfunction updateTablesAndIndexes(_a, oldVersion, trans, idbUpgradeTrans) {\n    var db = _a._novip;\n    var queue = [];\n    var versions = db._versions;\n    var globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n    var anyContentUpgraderHasRun = false;\n    var versToRun = versions.filter(function (v) { return v._cfg.version >= oldVersion; });\n    versToRun.forEach(function (version) {\n        queue.push(function () {\n            var oldSchema = globalSchema;\n            var newSchema = version._cfg.dbschema;\n            adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n            adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n            globalSchema = db._dbSchema = newSchema;\n            var diff = getSchemaDiff(oldSchema, newSchema);\n            diff.add.forEach(function (tuple) {\n                createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n            });\n            diff.change.forEach(function (change) {\n                if (change.recreate) {\n                    throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n                }\n                else {\n                    var store_1 = idbUpgradeTrans.objectStore(change.name);\n                    change.add.forEach(function (idx) { return addIndex(store_1, idx); });\n                    change.change.forEach(function (idx) {\n                        store_1.deleteIndex(idx.name);\n                        addIndex(store_1, idx);\n                    });\n                    change.del.forEach(function (idxName) { return store_1.deleteIndex(idxName); });\n                }\n            });\n            var contentUpgrade = version._cfg.contentUpgrade;\n            if (contentUpgrade && version._cfg.version > oldVersion) {\n                generateMiddlewareStacks(db, idbUpgradeTrans);\n                trans._memoizedTables = {};\n                anyContentUpgraderHasRun = true;\n                var upgradeSchema_1 = shallowClone(newSchema);\n                diff.del.forEach(function (table) {\n                    upgradeSchema_1[table] = oldSchema[table];\n                });\n                removeTablesApi(db, [db.Transaction.prototype]);\n                setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema_1), upgradeSchema_1);\n                trans.schema = upgradeSchema_1;\n                var contentUpgradeIsAsync_1 = isAsyncFunction(contentUpgrade);\n                if (contentUpgradeIsAsync_1) {\n                    incrementExpectedAwaits();\n                }\n                var returnValue_1;\n                var promiseFollowed = DexiePromise.follow(function () {\n                    returnValue_1 = contentUpgrade(trans);\n                    if (returnValue_1) {\n                        if (contentUpgradeIsAsync_1) {\n                            var decrementor = decrementExpectedAwaits.bind(null, null);\n                            returnValue_1.then(decrementor, decrementor);\n                        }\n                    }\n                });\n                return (returnValue_1 && typeof returnValue_1.then === 'function' ?\n                    DexiePromise.resolve(returnValue_1) : promiseFollowed.then(function () { return returnValue_1; }));\n            }\n        });\n        queue.push(function (idbtrans) {\n            if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) {\n                var newSchema = version._cfg.dbschema;\n                deleteRemovedTables(newSchema, idbtrans);\n            }\n            removeTablesApi(db, [db.Transaction.prototype]);\n            setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n            trans.schema = db._dbSchema;\n        });\n    });\n    function runQueue() {\n        return queue.length ? DexiePromise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) :\n            DexiePromise.resolve();\n    }\n    return runQueue().then(function () {\n        createMissingTables(globalSchema, idbUpgradeTrans);\n    });\n}\nfunction getSchemaDiff(oldSchema, newSchema) {\n    var diff = {\n        del: [],\n        add: [],\n        change: []\n    };\n    var table;\n    for (table in oldSchema) {\n        if (!newSchema[table])\n            diff.del.push(table);\n    }\n    for (table in newSchema) {\n        var oldDef = oldSchema[table], newDef = newSchema[table];\n        if (!oldDef) {\n            diff.add.push([table, newDef]);\n        }\n        else {\n            var change = {\n                name: table,\n                def: newDef,\n                recreate: false,\n                del: [],\n                add: [],\n                change: []\n            };\n            if ((\n            '' + (oldDef.primKey.keyPath || '')) !== ('' + (newDef.primKey.keyPath || '')) ||\n                (oldDef.primKey.auto !== newDef.primKey.auto && !isIEOrEdge))\n             {\n                change.recreate = true;\n                diff.change.push(change);\n            }\n            else {\n                var oldIndexes = oldDef.idxByName;\n                var newIndexes = newDef.idxByName;\n                var idxName = void 0;\n                for (idxName in oldIndexes) {\n                    if (!newIndexes[idxName])\n                        change.del.push(idxName);\n                }\n                for (idxName in newIndexes) {\n                    var oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName];\n                    if (!oldIdx)\n                        change.add.push(newIdx);\n                    else if (oldIdx.src !== newIdx.src)\n                        change.change.push(newIdx);\n                }\n                if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n                    diff.change.push(change);\n                }\n            }\n        }\n    }\n    return diff;\n}\nfunction createTable(idbtrans, tableName, primKey, indexes) {\n    var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ?\n        { keyPath: primKey.keyPath, autoIncrement: primKey.auto } :\n        { autoIncrement: primKey.auto });\n    indexes.forEach(function (idx) { return addIndex(store, idx); });\n    return store;\n}\nfunction createMissingTables(newSchema, idbtrans) {\n    keys(newSchema).forEach(function (tableName) {\n        if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n            createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n        }\n    });\n}\nfunction deleteRemovedTables(newSchema, idbtrans) {\n    [].slice.call(idbtrans.db.objectStoreNames).forEach(function (storeName) {\n        return newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName);\n    });\n}\nfunction addIndex(store, idx) {\n    store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n}\nfunction buildGlobalSchema(db, idbdb, tmpTrans) {\n    var globalSchema = {};\n    var dbStoreNames = slice(idbdb.objectStoreNames, 0);\n    dbStoreNames.forEach(function (storeName) {\n        var store = tmpTrans.objectStore(storeName);\n        var keyPath = store.keyPath;\n        var primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || \"\", false, false, !!store.autoIncrement, keyPath && typeof keyPath !== \"string\", true);\n        var indexes = [];\n        for (var j = 0; j < store.indexNames.length; ++j) {\n            var idbindex = store.index(store.indexNames[j]);\n            keyPath = idbindex.keyPath;\n            var index = createIndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== \"string\", false);\n            indexes.push(index);\n        }\n        globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);\n    });\n    return globalSchema;\n}\nfunction readGlobalSchema(_a, idbdb, tmpTrans) {\n    var db = _a._novip;\n    db.verno = idbdb.version / 10;\n    var globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans);\n    db._storeNames = slice(idbdb.objectStoreNames, 0);\n    setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);\n}\nfunction verifyInstalledSchema(db, tmpTrans) {\n    var installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans);\n    var diff = getSchemaDiff(installedSchema, db._dbSchema);\n    return !(diff.add.length || diff.change.some(function (ch) { return ch.add.length || ch.change.length; }));\n}\nfunction adjustToExistingIndexNames(_a, schema, idbtrans) {\n    var db = _a._novip;\n    var storeNames = idbtrans.db.objectStoreNames;\n    for (var i = 0; i < storeNames.length; ++i) {\n        var storeName = storeNames[i];\n        var store = idbtrans.objectStore(storeName);\n        db._hasGetAll = 'getAll' in store;\n        for (var j = 0; j < store.indexNames.length; ++j) {\n            var indexName = store.indexNames[j];\n            var keyPath = store.index(indexName).keyPath;\n            var dexieName = typeof keyPath === 'string' ? keyPath : \"[\" + slice(keyPath).join('+') + \"]\";\n            if (schema[storeName]) {\n                var indexSpec = schema[storeName].idxByName[dexieName];\n                if (indexSpec) {\n                    indexSpec.name = indexName;\n                    delete schema[storeName].idxByName[dexieName];\n                    schema[storeName].idxByName[indexName] = indexSpec;\n                }\n            }\n        }\n    }\n    if (typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n        !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n        _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope &&\n        [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604) {\n        db._hasGetAll = false;\n    }\n}\nfunction parseIndexSyntax(primKeyAndIndexes) {\n    return primKeyAndIndexes.split(',').map(function (index, indexNum) {\n        index = index.trim();\n        var name = index.replace(/([&*]|\\+\\+)/g, \"\");\n        var keyPath = /^\\[/.test(name) ? name.match(/^\\[(.*)\\]$/)[1].split('+') : name;\n        return createIndexSpec(name, keyPath || null, /\\&/.test(index), /\\*/.test(index), /\\+\\+/.test(index), isArray(keyPath), indexNum === 0);\n    });\n}\n\nvar Version =  (function () {\n    function Version() {\n    }\n    Version.prototype._parseStoresSpec = function (stores, outSchema) {\n        keys(stores).forEach(function (tableName) {\n            if (stores[tableName] !== null) {\n                var indexes = parseIndexSyntax(stores[tableName]);\n                var primKey = indexes.shift();\n                if (primKey.multi)\n                    throw new exceptions.Schema(\"Primary key cannot be multi-valued\");\n                indexes.forEach(function (idx) {\n                    if (idx.auto)\n                        throw new exceptions.Schema(\"Only primary key can be marked as autoIncrement (++)\");\n                    if (!idx.keyPath)\n                        throw new exceptions.Schema(\"Index must have a name and cannot be an empty string\");\n                });\n                outSchema[tableName] = createTableSchema(tableName, primKey, indexes);\n            }\n        });\n    };\n    Version.prototype.stores = function (stores) {\n        var db = this.db;\n        this._cfg.storesSource = this._cfg.storesSource ?\n            extend(this._cfg.storesSource, stores) :\n            stores;\n        var versions = db._versions;\n        var storesSpec = {};\n        var dbschema = {};\n        versions.forEach(function (version) {\n            extend(storesSpec, version._cfg.storesSource);\n            dbschema = (version._cfg.dbschema = {});\n            version._parseStoresSpec(storesSpec, dbschema);\n        });\n        db._dbSchema = dbschema;\n        removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]);\n        setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema);\n        db._storeNames = keys(dbschema);\n        return this;\n    };\n    Version.prototype.upgrade = function (upgradeFunction) {\n        this._cfg.contentUpgrade = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction);\n        return this;\n    };\n    return Version;\n}());\n\nfunction createVersionConstructor(db) {\n    return makeClassConstructor(Version.prototype, function Version(versionNumber) {\n        this.db = db;\n        this._cfg = {\n            version: versionNumber,\n            storesSource: null,\n            dbschema: {},\n            tables: {},\n            contentUpgrade: null\n        };\n    });\n}\n\nfunction getDbNamesTable(indexedDB, IDBKeyRange) {\n    var dbNamesDB = indexedDB[\"_dbNamesDB\"];\n    if (!dbNamesDB) {\n        dbNamesDB = indexedDB[\"_dbNamesDB\"] = new Dexie$1(DBNAMES_DB, {\n            addons: [],\n            indexedDB: indexedDB,\n            IDBKeyRange: IDBKeyRange,\n        });\n        dbNamesDB.version(1).stores({ dbnames: \"name\" });\n    }\n    return dbNamesDB.table(\"dbnames\");\n}\nfunction hasDatabasesNative(indexedDB) {\n    return indexedDB && typeof indexedDB.databases === \"function\";\n}\nfunction getDatabaseNames(_a) {\n    var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n    return hasDatabasesNative(indexedDB)\n        ? Promise.resolve(indexedDB.databases()).then(function (infos) {\n            return infos\n                .map(function (info) { return info.name; })\n                .filter(function (name) { return name !== DBNAMES_DB; });\n        })\n        : getDbNamesTable(indexedDB, IDBKeyRange).toCollection().primaryKeys();\n}\nfunction _onDatabaseCreated(_a, name) {\n    var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n    !hasDatabasesNative(indexedDB) &&\n        name !== DBNAMES_DB &&\n        getDbNamesTable(indexedDB, IDBKeyRange).put({ name: name }).catch(nop);\n}\nfunction _onDatabaseDeleted(_a, name) {\n    var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n    !hasDatabasesNative(indexedDB) &&\n        name !== DBNAMES_DB &&\n        getDbNamesTable(indexedDB, IDBKeyRange).delete(name).catch(nop);\n}\n\nfunction vip(fn) {\n    return newScope(function () {\n        PSD.letThrough = true;\n        return fn();\n    });\n}\n\nfunction idbReady() {\n    var isSafari = !navigator.userAgentData &&\n        /Safari\\//.test(navigator.userAgent) &&\n        !/Chrom(e|ium)\\//.test(navigator.userAgent);\n    if (!isSafari || !indexedDB.databases)\n        return Promise.resolve();\n    var intervalId;\n    return new Promise(function (resolve) {\n        var tryIdb = function () { return indexedDB.databases().finally(resolve); };\n        intervalId = setInterval(tryIdb, 100);\n        tryIdb();\n    }).finally(function () { return clearInterval(intervalId); });\n}\n\nfunction dexieOpen(db) {\n    var state = db._state;\n    var indexedDB = db._deps.indexedDB;\n    if (state.isBeingOpened || db.idbdb)\n        return state.dbReadyPromise.then(function () { return state.dbOpenError ?\n            rejection(state.dbOpenError) :\n            db; });\n    debug && (state.openCanceller._stackHolder = getErrorWithStack());\n    state.isBeingOpened = true;\n    state.dbOpenError = null;\n    state.openComplete = false;\n    var openCanceller = state.openCanceller;\n    function throwIfCancelled() {\n        if (state.openCanceller !== openCanceller)\n            throw new exceptions.DatabaseClosed('db.open() was cancelled');\n    }\n    var resolveDbReady = state.dbReadyResolve,\n    upgradeTransaction = null, wasCreated = false;\n    return DexiePromise.race([openCanceller, (typeof navigator === 'undefined' ? DexiePromise.resolve() : idbReady()).then(function () { return new DexiePromise(function (resolve, reject) {\n            throwIfCancelled();\n            if (!indexedDB)\n                throw new exceptions.MissingAPI();\n            var dbName = db.name;\n            var req = state.autoSchema ?\n                indexedDB.open(dbName) :\n                indexedDB.open(dbName, Math.round(db.verno * 10));\n            if (!req)\n                throw new exceptions.MissingAPI();\n            req.onerror = eventRejectHandler(reject);\n            req.onblocked = wrap(db._fireOnBlocked);\n            req.onupgradeneeded = wrap(function (e) {\n                upgradeTransaction = req.transaction;\n                if (state.autoSchema && !db._options.allowEmptyDB) {\n                    req.onerror = preventDefault;\n                    upgradeTransaction.abort();\n                    req.result.close();\n                    var delreq = indexedDB.deleteDatabase(dbName);\n                    delreq.onsuccess = delreq.onerror = wrap(function () {\n                        reject(new exceptions.NoSuchDatabase(\"Database \" + dbName + \" doesnt exist\"));\n                    });\n                }\n                else {\n                    upgradeTransaction.onerror = eventRejectHandler(reject);\n                    var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion;\n                    wasCreated = oldVer < 1;\n                    db._novip.idbdb = req.result;\n                    runUpgraders(db, oldVer / 10, upgradeTransaction, reject);\n                }\n            }, reject);\n            req.onsuccess = wrap(function () {\n                upgradeTransaction = null;\n                var idbdb = db._novip.idbdb = req.result;\n                var objectStoreNames = slice(idbdb.objectStoreNames);\n                if (objectStoreNames.length > 0)\n                    try {\n                        var tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), 'readonly');\n                        if (state.autoSchema)\n                            readGlobalSchema(db, idbdb, tmpTrans);\n                        else {\n                            adjustToExistingIndexNames(db, db._dbSchema, tmpTrans);\n                            if (!verifyInstalledSchema(db, tmpTrans)) {\n                                console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.\");\n                            }\n                        }\n                        generateMiddlewareStacks(db, tmpTrans);\n                    }\n                    catch (e) {\n                    }\n                connections.push(db);\n                idbdb.onversionchange = wrap(function (ev) {\n                    state.vcFired = true;\n                    db.on(\"versionchange\").fire(ev);\n                });\n                idbdb.onclose = wrap(function (ev) {\n                    db.on(\"close\").fire(ev);\n                });\n                if (wasCreated)\n                    _onDatabaseCreated(db._deps, dbName);\n                resolve();\n            }, reject);\n        }); })]).then(function () {\n        throwIfCancelled();\n        state.onReadyBeingFired = [];\n        return DexiePromise.resolve(vip(function () { return db.on.ready.fire(db.vip); })).then(function fireRemainders() {\n            if (state.onReadyBeingFired.length > 0) {\n                var remainders_1 = state.onReadyBeingFired.reduce(promisableChain, nop);\n                state.onReadyBeingFired = [];\n                return DexiePromise.resolve(vip(function () { return remainders_1(db.vip); })).then(fireRemainders);\n            }\n        });\n    }).finally(function () {\n        state.onReadyBeingFired = null;\n        state.isBeingOpened = false;\n    }).then(function () {\n        return db;\n    }).catch(function (err) {\n        state.dbOpenError = err;\n        try {\n            upgradeTransaction && upgradeTransaction.abort();\n        }\n        catch (_a) { }\n        if (openCanceller === state.openCanceller) {\n            db._close();\n        }\n        return rejection(err);\n    }).finally(function () {\n        state.openComplete = true;\n        resolveDbReady();\n    });\n}\n\nfunction awaitIterator(iterator) {\n    var callNext = function (result) { return iterator.next(result); }, doThrow = function (error) { return iterator.throw(error); }, onSuccess = step(callNext), onError = step(doThrow);\n    function step(getNext) {\n        return function (val) {\n            var next = getNext(val), value = next.value;\n            return next.done ? value :\n                (!value || typeof value.then !== 'function' ?\n                    isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) :\n                    value.then(onSuccess, onError));\n        };\n    }\n    return step(callNext)();\n}\n\nfunction extractTransactionArgs(mode, _tableArgs_, scopeFunc) {\n    var i = arguments.length;\n    if (i < 2)\n        throw new exceptions.InvalidArgument(\"Too few arguments\");\n    var args = new Array(i - 1);\n    while (--i)\n        args[i - 1] = arguments[i];\n    scopeFunc = args.pop();\n    var tables = flatten(args);\n    return [mode, tables, scopeFunc];\n}\nfunction enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) {\n    return DexiePromise.resolve().then(function () {\n        var transless = PSD.transless || PSD;\n        var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n        var zoneProps = {\n            trans: trans,\n            transless: transless\n        };\n        if (parentTransaction) {\n            trans.idbtrans = parentTransaction.idbtrans;\n        }\n        else {\n            try {\n                trans.create();\n                db._state.PR1398_maxLoop = 3;\n            }\n            catch (ex) {\n                if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n                    console.warn('Dexie: Need to reopen db');\n                    db._close();\n                    return db.open().then(function () { return enterTransactionScope(db, mode, storeNames, null, scopeFunc); });\n                }\n                return rejection(ex);\n            }\n        }\n        var scopeFuncIsAsync = isAsyncFunction(scopeFunc);\n        if (scopeFuncIsAsync) {\n            incrementExpectedAwaits();\n        }\n        var returnValue;\n        var promiseFollowed = DexiePromise.follow(function () {\n            returnValue = scopeFunc.call(trans, trans);\n            if (returnValue) {\n                if (scopeFuncIsAsync) {\n                    var decrementor = decrementExpectedAwaits.bind(null, null);\n                    returnValue.then(decrementor, decrementor);\n                }\n                else if (typeof returnValue.next === 'function' && typeof returnValue.throw === 'function') {\n                    returnValue = awaitIterator(returnValue);\n                }\n            }\n        }, zoneProps);\n        return (returnValue && typeof returnValue.then === 'function' ?\n            DexiePromise.resolve(returnValue).then(function (x) { return trans.active ?\n                x\n                : rejection(new exceptions.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\")); })\n            : promiseFollowed.then(function () { return returnValue; })).then(function (x) {\n            if (parentTransaction)\n                trans._resolve();\n            return trans._completion.then(function () { return x; });\n        }).catch(function (e) {\n            trans._reject(e);\n            return rejection(e);\n        });\n    });\n}\n\nfunction pad(a, value, count) {\n    var result = isArray(a) ? a.slice() : [a];\n    for (var i = 0; i < count; ++i)\n        result.push(value);\n    return result;\n}\nfunction createVirtualIndexMiddleware(down) {\n    return __assign(__assign({}, down), { table: function (tableName) {\n            var table = down.table(tableName);\n            var schema = table.schema;\n            var indexLookup = {};\n            var allVirtualIndexes = [];\n            function addVirtualIndexes(keyPath, keyTail, lowLevelIndex) {\n                var keyPathAlias = getKeyPathAlias(keyPath);\n                var indexList = (indexLookup[keyPathAlias] = indexLookup[keyPathAlias] || []);\n                var keyLength = keyPath == null ? 0 : typeof keyPath === 'string' ? 1 : keyPath.length;\n                var isVirtual = keyTail > 0;\n                var virtualIndex = __assign(__assign({}, lowLevelIndex), { isVirtual: isVirtual, keyTail: keyTail, keyLength: keyLength, extractKey: getKeyExtractor(keyPath), unique: !isVirtual && lowLevelIndex.unique });\n                indexList.push(virtualIndex);\n                if (!virtualIndex.isPrimaryKey) {\n                    allVirtualIndexes.push(virtualIndex);\n                }\n                if (keyLength > 1) {\n                    var virtualKeyPath = keyLength === 2 ?\n                        keyPath[0] :\n                        keyPath.slice(0, keyLength - 1);\n                    addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n                }\n                indexList.sort(function (a, b) { return a.keyTail - b.keyTail; });\n                return virtualIndex;\n            }\n            var primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n            indexLookup[\":id\"] = [primaryKey];\n            for (var _i = 0, _a = schema.indexes; _i < _a.length; _i++) {\n                var index = _a[_i];\n                addVirtualIndexes(index.keyPath, 0, index);\n            }\n            function findBestIndex(keyPath) {\n                var result = indexLookup[getKeyPathAlias(keyPath)];\n                return result && result[0];\n            }\n            function translateRange(range, keyTail) {\n                return {\n                    type: range.type === 1  ?\n                        2  :\n                        range.type,\n                    lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n                    lowerOpen: true,\n                    upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n                    upperOpen: true\n                };\n            }\n            function translateRequest(req) {\n                var index = req.query.index;\n                return index.isVirtual ? __assign(__assign({}, req), { query: {\n                        index: index,\n                        range: translateRange(req.query.range, index.keyTail)\n                    } }) : req;\n            }\n            var result = __assign(__assign({}, table), { schema: __assign(__assign({}, schema), { primaryKey: primaryKey, indexes: allVirtualIndexes, getIndexByKeyPath: findBestIndex }), count: function (req) {\n                    return table.count(translateRequest(req));\n                }, query: function (req) {\n                    return table.query(translateRequest(req));\n                }, openCursor: function (req) {\n                    var _a = req.query.index, keyTail = _a.keyTail, isVirtual = _a.isVirtual, keyLength = _a.keyLength;\n                    if (!isVirtual)\n                        return table.openCursor(req);\n                    function createVirtualCursor(cursor) {\n                        function _continue(key) {\n                            key != null ?\n                                cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) :\n                                req.unique ?\n                                    cursor.continue(cursor.key.slice(0, keyLength)\n                                        .concat(req.reverse\n                                        ? down.MIN_KEY\n                                        : down.MAX_KEY, keyTail)) :\n                                    cursor.continue();\n                        }\n                        var virtualCursor = Object.create(cursor, {\n                            continue: { value: _continue },\n                            continuePrimaryKey: {\n                                value: function (key, primaryKey) {\n                                    cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey);\n                                }\n                            },\n                            primaryKey: {\n                                get: function () {\n                                    return cursor.primaryKey;\n                                }\n                            },\n                            key: {\n                                get: function () {\n                                    var key = cursor.key;\n                                    return keyLength === 1 ?\n                                        key[0] :\n                                        key.slice(0, keyLength);\n                                }\n                            },\n                            value: {\n                                get: function () {\n                                    return cursor.value;\n                                }\n                            }\n                        });\n                        return virtualCursor;\n                    }\n                    return table.openCursor(translateRequest(req))\n                        .then(function (cursor) { return cursor && createVirtualCursor(cursor); });\n                } });\n            return result;\n        } });\n}\nvar virtualIndexMiddleware = {\n    stack: \"dbcore\",\n    name: \"VirtualIndexMiddleware\",\n    level: 1,\n    create: createVirtualIndexMiddleware\n};\n\nfunction getObjectDiff(a, b, rv, prfx) {\n    rv = rv || {};\n    prfx = prfx || '';\n    keys(a).forEach(function (prop) {\n        if (!hasOwn(b, prop)) {\n            rv[prfx + prop] = undefined;\n        }\n        else {\n            var ap = a[prop], bp = b[prop];\n            if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n                var apTypeName = toStringTag(ap);\n                var bpTypeName = toStringTag(bp);\n                if (apTypeName !== bpTypeName) {\n                    rv[prfx + prop] = b[prop];\n                }\n                else if (apTypeName === 'Object') {\n                    getObjectDiff(ap, bp, rv, prfx + prop + '.');\n                }\n                else if (ap !== bp) {\n                    rv[prfx + prop] = b[prop];\n                }\n            }\n            else if (ap !== bp)\n                rv[prfx + prop] = b[prop];\n        }\n    });\n    keys(b).forEach(function (prop) {\n        if (!hasOwn(a, prop)) {\n            rv[prfx + prop] = b[prop];\n        }\n    });\n    return rv;\n}\n\nfunction getEffectiveKeys(primaryKey, req) {\n    if (req.type === 'delete')\n        return req.keys;\n    return req.keys || req.values.map(primaryKey.extractKey);\n}\n\nvar hooksMiddleware = {\n    stack: \"dbcore\",\n    name: \"HooksMiddleware\",\n    level: 2,\n    create: function (downCore) { return (__assign(__assign({}, downCore), { table: function (tableName) {\n            var downTable = downCore.table(tableName);\n            var primaryKey = downTable.schema.primaryKey;\n            var tableMiddleware = __assign(__assign({}, downTable), { mutate: function (req) {\n                    var dxTrans = PSD.trans;\n                    var _a = dxTrans.table(tableName).hook, deleting = _a.deleting, creating = _a.creating, updating = _a.updating;\n                    switch (req.type) {\n                        case 'add':\n                            if (creating.fire === nop)\n                                break;\n                            return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n                        case 'put':\n                            if (creating.fire === nop && updating.fire === nop)\n                                break;\n                            return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n                        case 'delete':\n                            if (deleting.fire === nop)\n                                break;\n                            return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n                        case 'deleteRange':\n                            if (deleting.fire === nop)\n                                break;\n                            return dxTrans._promise('readwrite', function () { return deleteRange(req); }, true);\n                    }\n                    return downTable.mutate(req);\n                    function addPutOrDelete(req) {\n                        var dxTrans = PSD.trans;\n                        var keys = req.keys || getEffectiveKeys(primaryKey, req);\n                        if (!keys)\n                            throw new Error(\"Keys missing\");\n                        req = req.type === 'add' || req.type === 'put' ? __assign(__assign({}, req), { keys: keys }) : __assign({}, req);\n                        if (req.type !== 'delete')\n                            req.values = __spreadArray([], req.values, true);\n                        if (req.keys)\n                            req.keys = __spreadArray([], req.keys, true);\n                        return getExistingValues(downTable, req, keys).then(function (existingValues) {\n                            var contexts = keys.map(function (key, i) {\n                                var existingValue = existingValues[i];\n                                var ctx = { onerror: null, onsuccess: null };\n                                if (req.type === 'delete') {\n                                    deleting.fire.call(ctx, key, existingValue, dxTrans);\n                                }\n                                else if (req.type === 'add' || existingValue === undefined) {\n                                    var generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n                                    if (key == null && generatedPrimaryKey != null) {\n                                        key = generatedPrimaryKey;\n                                        req.keys[i] = key;\n                                        if (!primaryKey.outbound) {\n                                            setByKeyPath(req.values[i], primaryKey.keyPath, key);\n                                        }\n                                    }\n                                }\n                                else {\n                                    var objectDiff = getObjectDiff(existingValue, req.values[i]);\n                                    var additionalChanges_1 = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n                                    if (additionalChanges_1) {\n                                        var requestedValue_1 = req.values[i];\n                                        Object.keys(additionalChanges_1).forEach(function (keyPath) {\n                                            if (hasOwn(requestedValue_1, keyPath)) {\n                                                requestedValue_1[keyPath] = additionalChanges_1[keyPath];\n                                            }\n                                            else {\n                                                setByKeyPath(requestedValue_1, keyPath, additionalChanges_1[keyPath]);\n                                            }\n                                        });\n                                    }\n                                }\n                                return ctx;\n                            });\n                            return downTable.mutate(req).then(function (_a) {\n                                var failures = _a.failures, results = _a.results, numFailures = _a.numFailures, lastResult = _a.lastResult;\n                                for (var i = 0; i < keys.length; ++i) {\n                                    var primKey = results ? results[i] : keys[i];\n                                    var ctx = contexts[i];\n                                    if (primKey == null) {\n                                        ctx.onerror && ctx.onerror(failures[i]);\n                                    }\n                                    else {\n                                        ctx.onsuccess && ctx.onsuccess(req.type === 'put' && existingValues[i] ?\n                                            req.values[i] :\n                                            primKey\n                                        );\n                                    }\n                                }\n                                return { failures: failures, results: results, numFailures: numFailures, lastResult: lastResult };\n                            }).catch(function (error) {\n                                contexts.forEach(function (ctx) { return ctx.onerror && ctx.onerror(error); });\n                                return Promise.reject(error);\n                            });\n                        });\n                    }\n                    function deleteRange(req) {\n                        return deleteNextChunk(req.trans, req.range, 10000);\n                    }\n                    function deleteNextChunk(trans, range, limit) {\n                        return downTable.query({ trans: trans, values: false, query: { index: primaryKey, range: range }, limit: limit })\n                            .then(function (_a) {\n                            var result = _a.result;\n                            return addPutOrDelete({ type: 'delete', keys: result, trans: trans }).then(function (res) {\n                                if (res.numFailures > 0)\n                                    return Promise.reject(res.failures[0]);\n                                if (result.length < limit) {\n                                    return { failures: [], numFailures: 0, lastResult: undefined };\n                                }\n                                else {\n                                    return deleteNextChunk(trans, __assign(__assign({}, range), { lower: result[result.length - 1], lowerOpen: true }), limit);\n                                }\n                            });\n                        });\n                    }\n                } });\n            return tableMiddleware;\n        } })); }\n};\nfunction getExistingValues(table, req, effectiveKeys) {\n    return req.type === \"add\"\n        ? Promise.resolve([])\n        : table.getMany({ trans: req.trans, keys: effectiveKeys, cache: \"immutable\" });\n}\n\nfunction getFromTransactionCache(keys, cache, clone) {\n    try {\n        if (!cache)\n            return null;\n        if (cache.keys.length < keys.length)\n            return null;\n        var result = [];\n        for (var i = 0, j = 0; i < cache.keys.length && j < keys.length; ++i) {\n            if (cmp(cache.keys[i], keys[j]) !== 0)\n                continue;\n            result.push(clone ? deepClone(cache.values[i]) : cache.values[i]);\n            ++j;\n        }\n        return result.length === keys.length ? result : null;\n    }\n    catch (_a) {\n        return null;\n    }\n}\nvar cacheExistingValuesMiddleware = {\n    stack: \"dbcore\",\n    level: -1,\n    create: function (core) {\n        return {\n            table: function (tableName) {\n                var table = core.table(tableName);\n                return __assign(__assign({}, table), { getMany: function (req) {\n                        if (!req.cache) {\n                            return table.getMany(req);\n                        }\n                        var cachedResult = getFromTransactionCache(req.keys, req.trans[\"_cache\"], req.cache === \"clone\");\n                        if (cachedResult) {\n                            return DexiePromise.resolve(cachedResult);\n                        }\n                        return table.getMany(req).then(function (res) {\n                            req.trans[\"_cache\"] = {\n                                keys: req.keys,\n                                values: req.cache === \"clone\" ? deepClone(res) : res,\n                            };\n                            return res;\n                        });\n                    }, mutate: function (req) {\n                        if (req.type !== \"add\")\n                            req.trans[\"_cache\"] = null;\n                        return table.mutate(req);\n                    } });\n            },\n        };\n    },\n};\n\nvar _a;\nfunction isEmptyRange(node) {\n    return !(\"from\" in node);\n}\nvar RangeSet = function (fromOrTree, to) {\n    if (this) {\n        extend(this, arguments.length ? { d: 1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree } : { d: 0 });\n    }\n    else {\n        var rv = new RangeSet();\n        if (fromOrTree && (\"d\" in fromOrTree)) {\n            extend(rv, fromOrTree);\n        }\n        return rv;\n    }\n};\nprops(RangeSet.prototype, (_a = {\n        add: function (rangeSet) {\n            mergeRanges(this, rangeSet);\n            return this;\n        },\n        addKey: function (key) {\n            addRange(this, key, key);\n            return this;\n        },\n        addKeys: function (keys) {\n            var _this = this;\n            keys.forEach(function (key) { return addRange(_this, key, key); });\n            return this;\n        }\n    },\n    _a[iteratorSymbol] = function () {\n        return getRangeSetIterator(this);\n    },\n    _a));\nfunction addRange(target, from, to) {\n    var diff = cmp(from, to);\n    if (isNaN(diff))\n        return;\n    if (diff > 0)\n        throw RangeError();\n    if (isEmptyRange(target))\n        return extend(target, { from: from, to: to, d: 1 });\n    var left = target.l;\n    var right = target.r;\n    if (cmp(to, target.from) < 0) {\n        left\n            ? addRange(left, from, to)\n            : (target.l = { from: from, to: to, d: 1, l: null, r: null });\n        return rebalance(target);\n    }\n    if (cmp(from, target.to) > 0) {\n        right\n            ? addRange(right, from, to)\n            : (target.r = { from: from, to: to, d: 1, l: null, r: null });\n        return rebalance(target);\n    }\n    if (cmp(from, target.from) < 0) {\n        target.from = from;\n        target.l = null;\n        target.d = right ? right.d + 1 : 1;\n    }\n    if (cmp(to, target.to) > 0) {\n        target.to = to;\n        target.r = null;\n        target.d = target.l ? target.l.d + 1 : 1;\n    }\n    var rightWasCutOff = !target.r;\n    if (left && !target.l) {\n        mergeRanges(target, left);\n    }\n    if (right && rightWasCutOff) {\n        mergeRanges(target, right);\n    }\n}\nfunction mergeRanges(target, newSet) {\n    function _addRangeSet(target, _a) {\n        var from = _a.from, to = _a.to, l = _a.l, r = _a.r;\n        addRange(target, from, to);\n        if (l)\n            _addRangeSet(target, l);\n        if (r)\n            _addRangeSet(target, r);\n    }\n    if (!isEmptyRange(newSet))\n        _addRangeSet(target, newSet);\n}\nfunction rangesOverlap(rangeSet1, rangeSet2) {\n    var i1 = getRangeSetIterator(rangeSet2);\n    var nextResult1 = i1.next();\n    if (nextResult1.done)\n        return false;\n    var a = nextResult1.value;\n    var i2 = getRangeSetIterator(rangeSet1);\n    var nextResult2 = i2.next(a.from);\n    var b = nextResult2.value;\n    while (!nextResult1.done && !nextResult2.done) {\n        if (cmp(b.from, a.to) <= 0 && cmp(b.to, a.from) >= 0)\n            return true;\n        cmp(a.from, b.from) < 0\n            ? (a = (nextResult1 = i1.next(b.from)).value)\n            : (b = (nextResult2 = i2.next(a.from)).value);\n    }\n    return false;\n}\nfunction getRangeSetIterator(node) {\n    var state = isEmptyRange(node) ? null : { s: 0, n: node };\n    return {\n        next: function (key) {\n            var keyProvided = arguments.length > 0;\n            while (state) {\n                switch (state.s) {\n                    case 0:\n                        state.s = 1;\n                        if (keyProvided) {\n                            while (state.n.l && cmp(key, state.n.from) < 0)\n                                state = { up: state, n: state.n.l, s: 1 };\n                        }\n                        else {\n                            while (state.n.l)\n                                state = { up: state, n: state.n.l, s: 1 };\n                        }\n                    case 1:\n                        state.s = 2;\n                        if (!keyProvided || cmp(key, state.n.to) <= 0)\n                            return { value: state.n, done: false };\n                    case 2:\n                        if (state.n.r) {\n                            state.s = 3;\n                            state = { up: state, n: state.n.r, s: 0 };\n                            continue;\n                        }\n                    case 3:\n                        state = state.up;\n                }\n            }\n            return { done: true };\n        },\n    };\n}\nfunction rebalance(target) {\n    var _a, _b;\n    var diff = (((_a = target.r) === null || _a === void 0 ? void 0 : _a.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0);\n    var r = diff > 1 ? \"r\" : diff < -1 ? \"l\" : \"\";\n    if (r) {\n        var l = r === \"r\" ? \"l\" : \"r\";\n        var rootClone = __assign({}, target);\n        var oldRootRight = target[r];\n        target.from = oldRootRight.from;\n        target.to = oldRootRight.to;\n        target[r] = oldRootRight[r];\n        rootClone[r] = oldRootRight[l];\n        target[l] = rootClone;\n        rootClone.d = computeDepth(rootClone);\n    }\n    target.d = computeDepth(target);\n}\nfunction computeDepth(_a) {\n    var r = _a.r, l = _a.l;\n    return (r ? (l ? Math.max(r.d, l.d) : r.d) : l ? l.d : 0) + 1;\n}\n\nvar observabilityMiddleware = {\n    stack: \"dbcore\",\n    level: 0,\n    create: function (core) {\n        var dbName = core.schema.name;\n        var FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY);\n        return __assign(__assign({}, core), { table: function (tableName) {\n                var table = core.table(tableName);\n                var schema = table.schema;\n                var primaryKey = schema.primaryKey;\n                var extractKey = primaryKey.extractKey, outbound = primaryKey.outbound;\n                var tableClone = __assign(__assign({}, table), { mutate: function (req) {\n                        var trans = req.trans;\n                        var mutatedParts = trans.mutatedParts || (trans.mutatedParts = {});\n                        var getRangeSet = function (indexName) {\n                            var part = \"idb://\" + dbName + \"/\" + tableName + \"/\" + indexName;\n                            return (mutatedParts[part] ||\n                                (mutatedParts[part] = new RangeSet()));\n                        };\n                        var pkRangeSet = getRangeSet(\"\");\n                        var delsRangeSet = getRangeSet(\":dels\");\n                        var type = req.type;\n                        var _a = req.type === \"deleteRange\"\n                            ? [req.range]\n                            : req.type === \"delete\"\n                                ? [req.keys]\n                                : req.values.length < 50\n                                    ? [[], req.values]\n                                    : [], keys = _a[0], newObjs = _a[1];\n                        var oldCache = req.trans[\"_cache\"];\n                        return table.mutate(req).then(function (res) {\n                            if (isArray(keys)) {\n                                if (type !== \"delete\")\n                                    keys = res.results;\n                                pkRangeSet.addKeys(keys);\n                                var oldObjs = getFromTransactionCache(keys, oldCache);\n                                if (!oldObjs && type !== \"add\") {\n                                    delsRangeSet.addKeys(keys);\n                                }\n                                if (oldObjs || newObjs) {\n                                    trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs);\n                                }\n                            }\n                            else if (keys) {\n                                var range = { from: keys.lower, to: keys.upper };\n                                delsRangeSet.add(range);\n                                pkRangeSet.add(range);\n                            }\n                            else {\n                                pkRangeSet.add(FULL_RANGE);\n                                delsRangeSet.add(FULL_RANGE);\n                                schema.indexes.forEach(function (idx) { return getRangeSet(idx.name).add(FULL_RANGE); });\n                            }\n                            return res;\n                        });\n                    } });\n                var getRange = function (_a) {\n                    var _b, _c;\n                    var _d = _a.query, index = _d.index, range = _d.range;\n                    return [\n                        index,\n                        new RangeSet((_b = range.lower) !== null && _b !== void 0 ? _b : core.MIN_KEY, (_c = range.upper) !== null && _c !== void 0 ? _c : core.MAX_KEY),\n                    ];\n                };\n                var readSubscribers = {\n                    get: function (req) { return [primaryKey, new RangeSet(req.key)]; },\n                    getMany: function (req) { return [primaryKey, new RangeSet().addKeys(req.keys)]; },\n                    count: getRange,\n                    query: getRange,\n                    openCursor: getRange,\n                };\n                keys(readSubscribers).forEach(function (method) {\n                    tableClone[method] = function (req) {\n                        var subscr = PSD.subscr;\n                        if (subscr) {\n                            var getRangeSet = function (indexName) {\n                                var part = \"idb://\" + dbName + \"/\" + tableName + \"/\" + indexName;\n                                return (subscr[part] ||\n                                    (subscr[part] = new RangeSet()));\n                            };\n                            var pkRangeSet_1 = getRangeSet(\"\");\n                            var delsRangeSet_1 = getRangeSet(\":dels\");\n                            var _a = readSubscribers[method](req), queriedIndex = _a[0], queriedRanges = _a[1];\n                            getRangeSet(queriedIndex.name || \"\").add(queriedRanges);\n                            if (!queriedIndex.isPrimaryKey) {\n                                if (method === \"count\") {\n                                    delsRangeSet_1.add(FULL_RANGE);\n                                }\n                                else {\n                                    var keysPromise_1 = method === \"query\" &&\n                                        outbound &&\n                                        req.values &&\n                                        table.query(__assign(__assign({}, req), { values: false }));\n                                    return table[method].apply(this, arguments).then(function (res) {\n                                        if (method === \"query\") {\n                                            if (outbound && req.values) {\n                                                return keysPromise_1.then(function (_a) {\n                                                    var resultingKeys = _a.result;\n                                                    pkRangeSet_1.addKeys(resultingKeys);\n                                                    return res;\n                                                });\n                                            }\n                                            var pKeys = req.values\n                                                ? res.result.map(extractKey)\n                                                : res.result;\n                                            if (req.values) {\n                                                pkRangeSet_1.addKeys(pKeys);\n                                            }\n                                            else {\n                                                delsRangeSet_1.addKeys(pKeys);\n                                            }\n                                        }\n                                        else if (method === \"openCursor\") {\n                                            var cursor_1 = res;\n                                            var wantValues_1 = req.values;\n                                            return (cursor_1 &&\n                                                Object.create(cursor_1, {\n                                                    key: {\n                                                        get: function () {\n                                                            delsRangeSet_1.addKey(cursor_1.primaryKey);\n                                                            return cursor_1.key;\n                                                        },\n                                                    },\n                                                    primaryKey: {\n                                                        get: function () {\n                                                            var pkey = cursor_1.primaryKey;\n                                                            delsRangeSet_1.addKey(pkey);\n                                                            return pkey;\n                                                        },\n                                                    },\n                                                    value: {\n                                                        get: function () {\n                                                            wantValues_1 && pkRangeSet_1.addKey(cursor_1.primaryKey);\n                                                            return cursor_1.value;\n                                                        },\n                                                    },\n                                                }));\n                                        }\n                                        return res;\n                                    });\n                                }\n                            }\n                        }\n                        return table[method].apply(this, arguments);\n                    };\n                });\n                return tableClone;\n            } });\n    },\n};\nfunction trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs) {\n    function addAffectedIndex(ix) {\n        var rangeSet = getRangeSet(ix.name || \"\");\n        function extractKey(obj) {\n            return obj != null ? ix.extractKey(obj) : null;\n        }\n        var addKeyOrKeys = function (key) { return ix.multiEntry && isArray(key)\n            ? key.forEach(function (key) { return rangeSet.addKey(key); })\n            : rangeSet.addKey(key); };\n        (oldObjs || newObjs).forEach(function (_, i) {\n            var oldKey = oldObjs && extractKey(oldObjs[i]);\n            var newKey = newObjs && extractKey(newObjs[i]);\n            if (cmp(oldKey, newKey) !== 0) {\n                if (oldKey != null)\n                    addKeyOrKeys(oldKey);\n                if (newKey != null)\n                    addKeyOrKeys(newKey);\n            }\n        });\n    }\n    schema.indexes.forEach(addAffectedIndex);\n}\n\nvar Dexie$1 =  (function () {\n    function Dexie(name, options) {\n        var _this = this;\n        this._middlewares = {};\n        this.verno = 0;\n        var deps = Dexie.dependencies;\n        this._options = options = __assign({\n            addons: Dexie.addons, autoOpen: true,\n            indexedDB: deps.indexedDB, IDBKeyRange: deps.IDBKeyRange }, options);\n        this._deps = {\n            indexedDB: options.indexedDB,\n            IDBKeyRange: options.IDBKeyRange\n        };\n        var addons = options.addons;\n        this._dbSchema = {};\n        this._versions = [];\n        this._storeNames = [];\n        this._allTables = {};\n        this.idbdb = null;\n        this._novip = this;\n        var state = {\n            dbOpenError: null,\n            isBeingOpened: false,\n            onReadyBeingFired: null,\n            openComplete: false,\n            dbReadyResolve: nop,\n            dbReadyPromise: null,\n            cancelOpen: nop,\n            openCanceller: null,\n            autoSchema: true,\n            PR1398_maxLoop: 3\n        };\n        state.dbReadyPromise = new DexiePromise(function (resolve) {\n            state.dbReadyResolve = resolve;\n        });\n        state.openCanceller = new DexiePromise(function (_, reject) {\n            state.cancelOpen = reject;\n        });\n        this._state = state;\n        this.name = name;\n        this.on = Events(this, \"populate\", \"blocked\", \"versionchange\", \"close\", { ready: [promisableChain, nop] });\n        this.on.ready.subscribe = override(this.on.ready.subscribe, function (subscribe) {\n            return function (subscriber, bSticky) {\n                Dexie.vip(function () {\n                    var state = _this._state;\n                    if (state.openComplete) {\n                        if (!state.dbOpenError)\n                            DexiePromise.resolve().then(subscriber);\n                        if (bSticky)\n                            subscribe(subscriber);\n                    }\n                    else if (state.onReadyBeingFired) {\n                        state.onReadyBeingFired.push(subscriber);\n                        if (bSticky)\n                            subscribe(subscriber);\n                    }\n                    else {\n                        subscribe(subscriber);\n                        var db_1 = _this;\n                        if (!bSticky)\n                            subscribe(function unsubscribe() {\n                                db_1.on.ready.unsubscribe(subscriber);\n                                db_1.on.ready.unsubscribe(unsubscribe);\n                            });\n                    }\n                });\n            };\n        });\n        this.Collection = createCollectionConstructor(this);\n        this.Table = createTableConstructor(this);\n        this.Transaction = createTransactionConstructor(this);\n        this.Version = createVersionConstructor(this);\n        this.WhereClause = createWhereClauseConstructor(this);\n        this.on(\"versionchange\", function (ev) {\n            if (ev.newVersion > 0)\n                console.warn(\"Another connection wants to upgrade database '\" + _this.name + \"'. Closing db now to resume the upgrade.\");\n            else\n                console.warn(\"Another connection wants to delete database '\" + _this.name + \"'. Closing db now to resume the delete request.\");\n            _this.close();\n        });\n        this.on(\"blocked\", function (ev) {\n            if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n                console.warn(\"Dexie.delete('\" + _this.name + \"') was blocked\");\n            else\n                console.warn(\"Upgrade '\" + _this.name + \"' blocked by other connection holding version \" + ev.oldVersion / 10);\n        });\n        this._maxKey = getMaxKey(options.IDBKeyRange);\n        this._createTransaction = function (mode, storeNames, dbschema, parentTransaction) { return new _this.Transaction(mode, storeNames, dbschema, _this._options.chromeTransactionDurability, parentTransaction); };\n        this._fireOnBlocked = function (ev) {\n            _this.on(\"blocked\").fire(ev);\n            connections\n                .filter(function (c) { return c.name === _this.name && c !== _this && !c._state.vcFired; })\n                .map(function (c) { return c.on(\"versionchange\").fire(ev); });\n        };\n        this.use(virtualIndexMiddleware);\n        this.use(hooksMiddleware);\n        this.use(observabilityMiddleware);\n        this.use(cacheExistingValuesMiddleware);\n        this.vip = Object.create(this, { _vip: { value: true } });\n        addons.forEach(function (addon) { return addon(_this); });\n    }\n    Dexie.prototype.version = function (versionNumber) {\n        if (isNaN(versionNumber) || versionNumber < 0.1)\n            throw new exceptions.Type(\"Given version is not a positive number\");\n        versionNumber = Math.round(versionNumber * 10) / 10;\n        if (this.idbdb || this._state.isBeingOpened)\n            throw new exceptions.Schema(\"Cannot add version when database is open\");\n        this.verno = Math.max(this.verno, versionNumber);\n        var versions = this._versions;\n        var versionInstance = versions.filter(function (v) { return v._cfg.version === versionNumber; })[0];\n        if (versionInstance)\n            return versionInstance;\n        versionInstance = new this.Version(versionNumber);\n        versions.push(versionInstance);\n        versions.sort(lowerVersionFirst);\n        versionInstance.stores({});\n        this._state.autoSchema = false;\n        return versionInstance;\n    };\n    Dexie.prototype._whenReady = function (fn) {\n        var _this = this;\n        return (this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip)) ? fn() : new DexiePromise(function (resolve, reject) {\n            if (_this._state.openComplete) {\n                return reject(new exceptions.DatabaseClosed(_this._state.dbOpenError));\n            }\n            if (!_this._state.isBeingOpened) {\n                if (!_this._options.autoOpen) {\n                    reject(new exceptions.DatabaseClosed());\n                    return;\n                }\n                _this.open().catch(nop);\n            }\n            _this._state.dbReadyPromise.then(resolve, reject);\n        }).then(fn);\n    };\n    Dexie.prototype.use = function (_a) {\n        var stack = _a.stack, create = _a.create, level = _a.level, name = _a.name;\n        if (name)\n            this.unuse({ stack: stack, name: name });\n        var middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n        middlewares.push({ stack: stack, create: create, level: level == null ? 10 : level, name: name });\n        middlewares.sort(function (a, b) { return a.level - b.level; });\n        return this;\n    };\n    Dexie.prototype.unuse = function (_a) {\n        var stack = _a.stack, name = _a.name, create = _a.create;\n        if (stack && this._middlewares[stack]) {\n            this._middlewares[stack] = this._middlewares[stack].filter(function (mw) {\n                return create ? mw.create !== create :\n                    name ? mw.name !== name :\n                        false;\n            });\n        }\n        return this;\n    };\n    Dexie.prototype.open = function () {\n        return dexieOpen(this);\n    };\n    Dexie.prototype._close = function () {\n        var state = this._state;\n        var idx = connections.indexOf(this);\n        if (idx >= 0)\n            connections.splice(idx, 1);\n        if (this.idbdb) {\n            try {\n                this.idbdb.close();\n            }\n            catch (e) { }\n            this._novip.idbdb = null;\n        }\n        state.dbReadyPromise = new DexiePromise(function (resolve) {\n            state.dbReadyResolve = resolve;\n        });\n        state.openCanceller = new DexiePromise(function (_, reject) {\n            state.cancelOpen = reject;\n        });\n    };\n    Dexie.prototype.close = function () {\n        this._close();\n        var state = this._state;\n        this._options.autoOpen = false;\n        state.dbOpenError = new exceptions.DatabaseClosed();\n        if (state.isBeingOpened)\n            state.cancelOpen(state.dbOpenError);\n    };\n    Dexie.prototype.delete = function () {\n        var _this = this;\n        var hasArguments = arguments.length > 0;\n        var state = this._state;\n        return new DexiePromise(function (resolve, reject) {\n            var doDelete = function () {\n                _this.close();\n                var req = _this._deps.indexedDB.deleteDatabase(_this.name);\n                req.onsuccess = wrap(function () {\n                    _onDatabaseDeleted(_this._deps, _this.name);\n                    resolve();\n                });\n                req.onerror = eventRejectHandler(reject);\n                req.onblocked = _this._fireOnBlocked;\n            };\n            if (hasArguments)\n                throw new exceptions.InvalidArgument(\"Arguments not allowed in db.delete()\");\n            if (state.isBeingOpened) {\n                state.dbReadyPromise.then(doDelete);\n            }\n            else {\n                doDelete();\n            }\n        });\n    };\n    Dexie.prototype.backendDB = function () {\n        return this.idbdb;\n    };\n    Dexie.prototype.isOpen = function () {\n        return this.idbdb !== null;\n    };\n    Dexie.prototype.hasBeenClosed = function () {\n        var dbOpenError = this._state.dbOpenError;\n        return dbOpenError && (dbOpenError.name === 'DatabaseClosed');\n    };\n    Dexie.prototype.hasFailed = function () {\n        return this._state.dbOpenError !== null;\n    };\n    Dexie.prototype.dynamicallyOpened = function () {\n        return this._state.autoSchema;\n    };\n    Object.defineProperty(Dexie.prototype, \"tables\", {\n        get: function () {\n            var _this = this;\n            return keys(this._allTables).map(function (name) { return _this._allTables[name]; });\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Dexie.prototype.transaction = function () {\n        var args = extractTransactionArgs.apply(this, arguments);\n        return this._transaction.apply(this, args);\n    };\n    Dexie.prototype._transaction = function (mode, tables, scopeFunc) {\n        var _this = this;\n        var parentTransaction = PSD.trans;\n        if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1)\n            parentTransaction = null;\n        var onlyIfCompatible = mode.indexOf('?') !== -1;\n        mode = mode.replace('!', '').replace('?', '');\n        var idbMode, storeNames;\n        try {\n            storeNames = tables.map(function (table) {\n                var storeName = table instanceof _this.Table ? table.name : table;\n                if (typeof storeName !== 'string')\n                    throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n                return storeName;\n            });\n            if (mode == \"r\" || mode === READONLY)\n                idbMode = READONLY;\n            else if (mode == \"rw\" || mode == READWRITE)\n                idbMode = READWRITE;\n            else\n                throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n            if (parentTransaction) {\n                if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n                    if (onlyIfCompatible) {\n                        parentTransaction = null;\n                    }\n                    else\n                        throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n                }\n                if (parentTransaction) {\n                    storeNames.forEach(function (storeName) {\n                        if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n                            if (onlyIfCompatible) {\n                                parentTransaction = null;\n                            }\n                            else\n                                throw new exceptions.SubTransaction(\"Table \" + storeName +\n                                    \" not included in parent transaction.\");\n                        }\n                    });\n                }\n                if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n                    parentTransaction = null;\n                }\n            }\n        }\n        catch (e) {\n            return parentTransaction ?\n                parentTransaction._promise(null, function (_, reject) { reject(e); }) :\n                rejection(e);\n        }\n        var enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n        return (parentTransaction ?\n            parentTransaction._promise(idbMode, enterTransaction, \"lock\") :\n            PSD.trans ?\n                usePSD(PSD.transless, function () { return _this._whenReady(enterTransaction); }) :\n                this._whenReady(enterTransaction));\n    };\n    Dexie.prototype.table = function (tableName) {\n        if (!hasOwn(this._allTables, tableName)) {\n            throw new exceptions.InvalidTable(\"Table \" + tableName + \" does not exist\");\n        }\n        return this._allTables[tableName];\n    };\n    return Dexie;\n}());\n\nvar symbolObservable = typeof Symbol !== \"undefined\" && \"observable\" in Symbol\n    ? Symbol.observable\n    : \"@@observable\";\nvar Observable =  (function () {\n    function Observable(subscribe) {\n        this._subscribe = subscribe;\n    }\n    Observable.prototype.subscribe = function (x, error, complete) {\n        return this._subscribe(!x || typeof x === \"function\" ? { next: x, error: error, complete: complete } : x);\n    };\n    Observable.prototype[symbolObservable] = function () {\n        return this;\n    };\n    return Observable;\n}());\n\nfunction extendObservabilitySet(target, newSet) {\n    keys(newSet).forEach(function (part) {\n        var rangeSet = target[part] || (target[part] = new RangeSet());\n        mergeRanges(rangeSet, newSet[part]);\n    });\n    return target;\n}\n\nfunction liveQuery(querier) {\n    return new Observable(function (observer) {\n        var scopeFuncIsAsync = isAsyncFunction(querier);\n        function execute(subscr) {\n            if (scopeFuncIsAsync) {\n                incrementExpectedAwaits();\n            }\n            var exec = function () { return newScope(querier, { subscr: subscr, trans: null }); };\n            var rv = PSD.trans\n                ?\n                    usePSD(PSD.transless, exec)\n                : exec();\n            if (scopeFuncIsAsync) {\n                rv.then(decrementExpectedAwaits, decrementExpectedAwaits);\n            }\n            return rv;\n        }\n        var closed = false;\n        var accumMuts = {};\n        var currentObs = {};\n        var subscription = {\n            get closed() {\n                return closed;\n            },\n            unsubscribe: function () {\n                closed = true;\n                globalEvents.storagemutated.unsubscribe(mutationListener);\n            },\n        };\n        observer.start && observer.start(subscription);\n        var querying = false, startedListening = false;\n        function shouldNotify() {\n            return keys(currentObs).some(function (key) {\n                return accumMuts[key] && rangesOverlap(accumMuts[key], currentObs[key]);\n            });\n        }\n        var mutationListener = function (parts) {\n            extendObservabilitySet(accumMuts, parts);\n            if (shouldNotify()) {\n                doQuery();\n            }\n        };\n        var doQuery = function () {\n            if (querying || closed)\n                return;\n            accumMuts = {};\n            var subscr = {};\n            var ret = execute(subscr);\n            if (!startedListening) {\n                globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener);\n                startedListening = true;\n            }\n            querying = true;\n            Promise.resolve(ret).then(function (result) {\n                querying = false;\n                if (closed)\n                    return;\n                if (shouldNotify()) {\n                    doQuery();\n                }\n                else {\n                    accumMuts = {};\n                    currentObs = subscr;\n                    observer.next && observer.next(result);\n                }\n            }, function (err) {\n                querying = false;\n                observer.error && observer.error(err);\n                subscription.unsubscribe();\n            });\n        };\n        doQuery();\n        return subscription;\n    });\n}\n\nvar domDeps;\ntry {\n    domDeps = {\n        indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n        IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n    };\n}\ncatch (e) {\n    domDeps = { indexedDB: null, IDBKeyRange: null };\n}\n\nvar Dexie = Dexie$1;\nprops(Dexie, __assign(__assign({}, fullNameExceptions), {\n    delete: function (databaseName) {\n        var db = new Dexie(databaseName, { addons: [] });\n        return db.delete();\n    },\n    exists: function (name) {\n        return new Dexie(name, { addons: [] }).open().then(function (db) {\n            db.close();\n            return true;\n        }).catch('NoSuchDatabaseError', function () { return false; });\n    },\n    getDatabaseNames: function (cb) {\n        try {\n            return getDatabaseNames(Dexie.dependencies).then(cb);\n        }\n        catch (_a) {\n            return rejection(new exceptions.MissingAPI());\n        }\n    },\n    defineClass: function () {\n        function Class(content) {\n            extend(this, content);\n        }\n        return Class;\n    }, ignoreTransaction: function (scopeFunc) {\n        return PSD.trans ?\n            usePSD(PSD.transless, scopeFunc) :\n            scopeFunc();\n    }, vip: vip, async: function (generatorFn) {\n        return function () {\n            try {\n                var rv = awaitIterator(generatorFn.apply(this, arguments));\n                if (!rv || typeof rv.then !== 'function')\n                    return DexiePromise.resolve(rv);\n                return rv;\n            }\n            catch (e) {\n                return rejection(e);\n            }\n        };\n    }, spawn: function (generatorFn, args, thiz) {\n        try {\n            var rv = awaitIterator(generatorFn.apply(thiz, args || []));\n            if (!rv || typeof rv.then !== 'function')\n                return DexiePromise.resolve(rv);\n            return rv;\n        }\n        catch (e) {\n            return rejection(e);\n        }\n    },\n    currentTransaction: {\n        get: function () { return PSD.trans || null; }\n    }, waitFor: function (promiseOrFunction, optionalTimeout) {\n        var promise = DexiePromise.resolve(typeof promiseOrFunction === 'function' ?\n            Dexie.ignoreTransaction(promiseOrFunction) :\n            promiseOrFunction)\n            .timeout(optionalTimeout || 60000);\n        return PSD.trans ?\n            PSD.trans.waitFor(promise) :\n            promise;\n    },\n    Promise: DexiePromise,\n    debug: {\n        get: function () { return debug; },\n        set: function (value) {\n            setDebug(value, value === 'dexie' ? function () { return true; } : dexieStackFrameFilter);\n        }\n    },\n    derive: derive, extend: extend, props: props, override: override,\n    Events: Events, on: globalEvents, liveQuery: liveQuery, extendObservabilitySet: extendObservabilitySet,\n    getByKeyPath: getByKeyPath, setByKeyPath: setByKeyPath, delByKeyPath: delByKeyPath, shallowClone: shallowClone, deepClone: deepClone, getObjectDiff: getObjectDiff, cmp: cmp, asap: asap$1,\n    minKey: minKey,\n    addons: [],\n    connections: connections,\n    errnames: errnames,\n    dependencies: domDeps,\n    semVer: DEXIE_VERSION, version: DEXIE_VERSION.split('.')\n        .map(function (n) { return parseInt(n); })\n        .reduce(function (p, c, i) { return p + (c / Math.pow(10, i * 2)); }) }));\nDexie.maxKey = getMaxKey(Dexie.dependencies.IDBKeyRange);\n\nif (typeof dispatchEvent !== 'undefined' && typeof addEventListener !== 'undefined') {\n    globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (updatedParts) {\n        if (!propagatingLocally) {\n            var event_1;\n            if (isIEOrEdge) {\n                event_1 = document.createEvent('CustomEvent');\n                event_1.initCustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, true, true, updatedParts);\n            }\n            else {\n                event_1 = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, {\n                    detail: updatedParts\n                });\n            }\n            propagatingLocally = true;\n            dispatchEvent(event_1);\n            propagatingLocally = false;\n        }\n    });\n    addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, function (_a) {\n        var detail = _a.detail;\n        if (!propagatingLocally) {\n            propagateLocally(detail);\n        }\n    });\n}\nfunction propagateLocally(updateParts) {\n    var wasMe = propagatingLocally;\n    try {\n        propagatingLocally = true;\n        globalEvents.storagemutated.fire(updateParts);\n    }\n    finally {\n        propagatingLocally = wasMe;\n    }\n}\nvar propagatingLocally = false;\n\nif (typeof BroadcastChannel !== 'undefined') {\n    var bc_1 = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME);\n    if (typeof bc_1.unref === 'function') {\n        bc_1.unref();\n    }\n    globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (changedParts) {\n        if (!propagatingLocally) {\n            bc_1.postMessage(changedParts);\n        }\n    });\n    bc_1.onmessage = function (ev) {\n        if (ev.data)\n            propagateLocally(ev.data);\n    };\n}\nelse if (typeof self !== 'undefined' && typeof navigator !== 'undefined') {\n    globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (changedParts) {\n        try {\n            if (!propagatingLocally) {\n                if (typeof localStorage !== 'undefined') {\n                    localStorage.setItem(STORAGE_MUTATED_DOM_EVENT_NAME, JSON.stringify({\n                        trig: Math.random(),\n                        changedParts: changedParts,\n                    }));\n                }\n                if (typeof self['clients'] === 'object') {\n                    __spreadArray([], self['clients'].matchAll({ includeUncontrolled: true }), true).forEach(function (client) {\n                        return client.postMessage({\n                            type: STORAGE_MUTATED_DOM_EVENT_NAME,\n                            changedParts: changedParts,\n                        });\n                    });\n                }\n            }\n        }\n        catch (_a) { }\n    });\n    if (typeof addEventListener !== 'undefined') {\n        addEventListener('storage', function (ev) {\n            if (ev.key === STORAGE_MUTATED_DOM_EVENT_NAME) {\n                var data = JSON.parse(ev.newValue);\n                if (data)\n                    propagateLocally(data.changedParts);\n            }\n        });\n    }\n    var swContainer = self.document && navigator.serviceWorker;\n    if (swContainer) {\n        swContainer.addEventListener('message', propagateMessageLocally);\n    }\n}\nfunction propagateMessageLocally(_a) {\n    var data = _a.data;\n    if (data && data.type === STORAGE_MUTATED_DOM_EVENT_NAME) {\n        propagateLocally(data.changedParts);\n    }\n}\n\nDexiePromise.rejectionMapper = mapError;\nsetDebug(debug, dexieStackFrameFilter);\n\nexport { Dexie$1 as Dexie, RangeSet, Dexie$1 as default, liveQuery, mergeRanges, rangesOverlap };\n//# sourceMappingURL=dexie.mjs.map\n","import Dexie from 'dexie'\n\nexport const db = new Dexie('pushDatabase')\nexport const bm = new Dexie('bookmarksDatabase')\n\ndb.version(1).stores({\n  messages: '++id, uuid'\n})\n\nbm.version(1).stores({\n  messages: '++id, uuid, article'\n})\n","var assignValue = require('./_assignValue'),\n    copyObject = require('./_copyObject'),\n    createAssigner = require('./_createAssigner'),\n    isArrayLike = require('./isArrayLike'),\n    isPrototype = require('./_isPrototype'),\n    keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\nmodule.exports = assign;\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 global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\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/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-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 definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\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/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\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';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\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(SymbolPrototype);\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 || call($propertyIsEnumerable, 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 = call(nativePropertyIsEnumerable, 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)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function (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      push(result, 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 (isPrototypeOf(SymbolPrototype, this)) 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) call(setter, 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  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  definePropertiesModule.f = $defineProperties;\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    defineBuiltInAccessor(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, constructor: 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  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});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(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(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\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 TypeError = global.TypeError;\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  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw 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","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  }\n});\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\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  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","import React from 'react'\nimport Helmet from 'react-helmet'\n\nconst HomePageMeta = (props) => {\n  const schema = {\n    '@context': 'https://schema.org',\n    '@graph': [{\n      '@type': 'Organization',\n      name: process.env.RAZZLE_SCHEMA_SITE_NAME,\n      alternateName: process.env.RAZZLE_SCHEMA_ALT_NAME,\n      url: process.env.RAZZLE_SITE_URL,\n      logo: process.env.RAZZLE_SITE_URL + '/logo.jpg',\n      sameAs: [\n        process.env.RAZZLE_SITE_FACEBOOK,\n        process.env.RAZZLE_SITE_YOUTUBE,\n        process.env.RAZZLE_SITE_INSTAGRAM,\n        process.env.RAZZLE_SITE_LINKEDIN,\n        process.env.RAZZLE_SITE_TWITTER,\n        process.env.RAZZLE_SITE_TIKTOK,\n        process.env.RAZZLE_SITE_PINTEREST\n      ]\n    }, {\n      '@type': 'WebSite',\n      name: process.env.RAZZLE_SCHEMA_SITE_NAME,\n      url: process.env.RAZZLE_SITE_URL,\n      headline: process.env.RAZZLE_SITE_TITLE,\n      potentialAction: {\n        '@type': 'SearchAction',\n        target: process.env.RAZZLE_SITE_URL + '/search?q={search_term_string}',\n        'query-input': 'required name=search_term_string'\n      }\n    }]\n  }\n  return (\n    <Helmet>\n      {/* inline script elements */}\n      <script type='application/ld+json'>\n        {`${JSON.stringify(schema)}`}\n      </script>\n    </Helmet>\n  )\n}\nexport default HomePageMeta\n","import React, { Fragment } from 'react'\nimport Ad from '../../components/Ad'\nimport FORMATS from '../../components/AdFormats'\nimport ArticleCard from '../../components/ArticleCard'\nimport { Mobile, MobileElse } from 'ion-media'\nimport MagazineCover from '../../components/MagazineCover'\n\nconst Default = ({ articles, section, noImage, isConnected, moreButton }) => {\n  return (\n    <>\n      {articles.map((article, index) => (\n        <Fragment key={article.contentKey}>\n          {index <= 10 && (\n            <ArticleCard article={article} noImage={noImage} />\n          )}\n          <MobileElse>\n            {(index % 18 === 0) && (index > 15) && (\n              <Ad isConnected={isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId='leaderboard-vm' targeting={{ leaderboard: 'vm' }} collapseEmptyDiv className='advert-leaderboard-vm' {...FORMATS.leaderboard3} />\n            )}\n          </MobileElse>\n          <Mobile>\n            {(index === 2) && (<MagazineCover />)}\n          </Mobile>\n          {index > 10 && (\n            <ArticleCard article={article} noImage={noImage} lazy />\n          )}\n          <MobileElse>\n            {index === 8 && (\n              <Ad isConnected={isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId='leaderboard-2' targeting={{ leaderboard: '2' }} collapseEmptyDiv className='advert-leaderboard-2' {...FORMATS.leaderboard3} />\n            )}\n          </MobileElse>\n          {Number.isInteger((index + 5) / 4) && (\n            <Mobile>\n              <article className='advert'>\n                <Ad isConnected={isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId={'repeatMpu-' + index} targeting={{ mpu: index < 14 ? ((index + 1) / 4) : 'vm' }} collapseEmptyDiv className='align-all' adNotice {...FORMATS.mpu} />\n              </article>\n            </Mobile>\n          )}\n        </Fragment>\n      ))}\n      {moreButton}\n    </>\n  )\n}\n\nexport default Default\n","import React, { Component, Fragment } from 'react'\nimport { bindActionCreators } from 'redux'\nimport { connect } from 'react-redux'\nimport Helmet from 'react-helmet'\nimport { Prefetch } from '../../../store/app'\nimport { Articles } from 'ion-article-cmp'\nimport HomePageMeta from '../../components/HomePageMeta'\nimport Ad from '../../components/Ad'\nimport WingBanners from '../../components/WingBanners'\nimport FORMATS from '../../components/AdFormats'\nimport NoImage from '../../static/no-image.png'\nimport HomePageTemplate from '../../templates/Articles/HomePageHighlight'\nimport SiteSidebar from '../../components/Sidebar'\nimport logo from '../../static/general/house-and-garden.svg'\nimport { DesktopTablet, MobileElse } from 'ion-media'\nimport MagazineCover from '../../components/MagazineCover'\n\nexport class HomePage extends Component {\n  constructor (props) {\n    super(props)\n    // Don't call this.setState() here!\n    this.state = { isEmpty: true, is600: false, hasMounted: false }\n  }\n\n  componentDidMount () {\n    // Don't prefetch at this stage\n    // this.props.Prefetch()\n    this.setState({ hasMounted: true })\n  }\n\n  render () {\n    return (\n      <>\n        <WingBanners useSmall={this.props.useSmall} isConnected={this.props.isConnected} location={this.props.location} onSlotRenderEndedLeft={this.props.onSlotRenderEndedLeft} onSlotRenderEndedRight={this.props.onSlotRenderEndedRight} />\n        <Helmet title={process.env.RAZZLE_SITE_TITLE}>\n          <meta property='og:url' content={process.env.RAZZLE_SITE_URL} />\n          <meta name='description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n          <meta itemProp='description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n          <meta property='og:description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n          <meta name='twitter:site' content={process.env.RAZZLE_SITE_TWITTER} />\n          <meta name='twitter:creator' content={process.env.RAZZLE_SITE_TWITTER} />\n          <meta name='twitter:description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n          <meta name='twitter:title' content={process.env.RAZZLE_SITE_TITLE} />\n          <meta name='twitter:card' content='summary_large_image' />\n          <meta name='twitter:image:src' content={logo} />\n        </Helmet>\n        <HomePageMeta {...this.props} />\n        <span>\n          <Ad isConnected={this.props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId='leaderboard-1' targeting={{ leaderboard: '1' }} collapseEmptyDiv className='advert-leaderboard-1' {...FORMATS.leaderboard} />\n        </span>\n        <div className='wrapper article-listing' ref={this.setStickyRef}>\n          <Articles {...this.props} component={HomePageTemplate} section='all-content-feed' count={18} pageSize={18} noImage={NoImage} withMore />\n          <SiteSidebar {...this.props} section='homepage' sticky={this.state.sticky}>\n            <div>\n              {this.state.hasMounted &&\n                <DesktopTablet>\n                  <MagazineCover />\n                </DesktopTablet>}\n            </div>\n          </SiteSidebar>\n        </div>\n        {this.state.hasMounted &&\n          <MobileElse>\n            <Ad isConnected={this.props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId='leaderboard-3' targeting={{ leaderboard: '3' }} collapseEmptyDiv className='advert-leaderboard-3' {...FORMATS.leaderboard} />\n          </MobileElse>}\n      </>\n    )\n  }\n}\n\nconst mapStateToProps = (state) => ({ articles: state.articles })\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ Prefetch }, dispatch)\n\nexport default connect(mapStateToProps, mapDispatchToProps)(HomePage)\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 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 $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\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 : key + '';\n};\n","import React, { useEffect, useState } from 'react'\nimport { Link } from 'react-router-dom'\nimport axios from 'axios'\nimport qs from 'qs'\nimport { urlB64ToUint8Array } from './ServiceWorker'\nimport Popup from 'ion-popup'\nimport popupLogo from '../static/general/house-and-garden.svg'\n\nconst DefaultTemplate = ({ componentText, subscribeConcept }) => (\n  <button className='follow-me-btn' onClick={() => subscribeConcept()}>{componentText}</button>\n)\n\nconst FollowConcept = ({ topic, followText, unFollowText, template }) => {\n  const Template = template || DefaultTemplate\n  const [isSubscribed, setIsSubscribed] = useState(false)\n  const [helpPopupVisible, setHelpPopupVisible] = useState(false)\n  const [subscription, setSubscription] = useState(false)\n  const [registration, setRegistration] = useState(false)\n\n  useEffect(() => {\n    if (navigator.serviceWorker) {\n      navigator.serviceWorker.getRegistration()\n        .then(reg => {\n          console.log('*** FollowConcept: registration', reg)\n          setRegistration(reg)\n        })\n    }\n  }, [])\n\n  useEffect(() => {\n    console.log('*** FollowConcept: registration', registration)\n    if (registration && registration.pushManager) {\n      registration.pushManager.getSubscription()\n        .then(sub => {\n          console.log('*** FollowConcept: subscription', sub)\n          setSubscription(sub)\n        })\n    }\n  }, [registration])\n\n  useEffect(() => {\n    console.log('FollowConcept setIsSubscribed', topic.name, subscription, topic.topic)\n    async function setSubscribed () {\n      const isSubscribed = await isSubscribedToConcept(topic.topic, subscription)\n      setIsSubscribed(isSubscribed)\n    }\n    setSubscribed()\n  }, [subscription, topic.topic])\n\n  function isSubscribedToConcept (uuid, subscription) {\n    if (!subscription) {\n      console.log('*** isSubscribedToConcept: User is not subscribed to any push notifications')\n      return Promise.resolve(false)\n    }\n    const data = qs.stringify({\n      titleKey: process.env.RAZZLE_TITLE_KEY,\n      endpoint: (subscription && subscription.endpoint) || ''\n    })\n    return axios.post(process.env.RAZZLE_PUSH_SERVICE + '/topics', data, {\n      headers: {\n        'Content-Type': 'application/x-www-form-urlencoded'\n      }\n    })\n      .then(res => {\n        const subscribed = res.data.filter(topic => topic.topic === uuid)\n        console.log('*** subscriptions response', res.status, res.data, 'subscribed:', (subscribed.length > 0))\n        return (subscribed.length > 0)\n      })\n      .catch(error => {\n        console.log('*** isSubscribedToConcept error:', error.message)\n        return false\n      })\n  }\n\n  function subscribeConcept (uuid, subscription) {\n    const data = {\n      topic: uuid,\n      titleKey: process.env.RAZZLE_TITLE_KEY,\n      subscription: JSON.stringify(subscription)\n    }\n    console.log('*** FollowConcept:', 'Subscribing', data)\n    console.log('Calling', isSubscribed ? 'unsubscribe' : 'subscribe', topic.name)\n    axios.post(process.env.RAZZLE_PUSH_SERVICE + (isSubscribed ? '/unsubscribe' : '/subscribe'), qs.stringify(data), {\n      headers: {\n        'Content-Type': 'application/x-www-form-urlencoded'\n      }\n    })\n      .then(res => setIsSubscribed(!isSubscribed))\n      .catch(error => {\n        console.log(isSubscribed ? 'Unsubscribe' : 'Subscribe', 'Error:', error.message)\n        return false\n      })\n  }\n\n  function registerAndSubscribeConcept (uuid) {\n    console.log('*** FollowConcept:', 'Registering and subscribing')\n    registration.pushManager.subscribe({\n      userVisibleOnly: true,\n      applicationServerKey: urlB64ToUint8Array(process.env.RAZZLE_SERVERKEY)\n    })\n      .then(function (subscription) {\n        console.log('User IS now subscribed.')\n        setSubscription(subscription)\n        return subscribeConcept(uuid, subscription)\n      })\n      .catch(function (err) {\n        console.log('Failed to subscribe the user: ', err)\n        setHelpPopupVisible(true)\n        setSubscription(false)\n      })\n  }\n\n  const canPush = !!(process.env.RAZZLE_ENABLE_PUSHNOTIFICATIONS && typeof window !== 'undefined' && typeof window.navigator !== 'undefined' && subscription)\n  const isFollowing = canPush && isSubscribed\n\n  if (canPush) {\n    return <Template componentText={isFollowing ? unFollowText : followText} subscribeConcept={() => subscribeConcept(topic.topic, subscription)} />\n  } else {\n    if (registration && registration.pushManager) {\n      return (\n        <>\n          {helpPopupVisible &&\n            <Popup visible>\n              <div className='push-notification'>\n                <div>\n                  <img src={popupLogo} alt={process.env.RAZZLE_SITE_NAME} />\n                </div>\n                <div color='grey'>\n                  <p>Small problem..</p>\n                  <p>You have chosen to block notifications.</p>\n                  <p>To follow stories requires you to enable notifications in your browser settings.</p>\n                  <div display='flex' justifycontent='flex-end'>\n                    <Link onClick={() => setHelpPopupVisible(false)} to='/help'>Help</Link>\n                    <button onClick={() => setHelpPopupVisible(false)}>OK</button>\n                  </div>\n                </div>\n              </div>\n            </Popup>}\n          <Template componentText={followText} subscribeConcept={() => registerAndSubscribeConcept(topic.topic)} />\n        </>\n      )\n    } else {\n      return null\n    }\n  }\n}\n\nexport default FollowConcept\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.30.1',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.30.1/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\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","var $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","import React from 'react'\nimport { ImageOrNoImage } from 'ion-image'\nimport FollowConcept from '../components/FollowConcept'\nimport { Link } from 'react-router-dom'\n\nconst AuthorBio = (props) => {\n  return (\n    <>\n      <div className='author-bio'>\n        <ImageOrNoImage shape='square' width={450} image={{ url: props.imageUrl }} alt={props.name} noImage={props.noImage} />\n        <h4><Link to={'/' + props.slug}>{props.name}</Link></h4>\n        {props.description && <p>{props.description}</p>}\n        <FollowConcept\n          topic={{ topic: props.uuid, type: 'author', name: props.name }}\n          followText='Follow My Stories'\n          unFollowText='Unfollow My Stories'\n        />\n      </div>\n    </>\n  )\n}\n\nexport default AuthorBio\n","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\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 wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\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  defineProperty(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 uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.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(it, '') : $Object(it);\n} : $Object;\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n  if (isCallable(replacer)) return replacer;\n  if (!isArray(replacer)) return;\n  var rawLength = replacer.length;\n  var keys = [];\n  for (var i = 0; i < rawLength; i++) {\n    var element = replacer[i];\n    if (typeof element == 'string') push(keys, element);\n    else if (typeof element == 'number' || classof(element) == 'Number' || classof(element) == 'String') push(keys, toString(element));\n  }\n  var keysLength = keys.length;\n  var root = true;\n  return function (key, value) {\n    if (root) {\n      root = false;\n      return value;\n    }\n    if (isArray(this)) return value;\n    for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n  };\n};\n","module.exports = false;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\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 $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aConstructor(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      apply(push, $args, args);\n      return new (apply(bind, Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : ObjectPrototype);\n    var result = apply(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\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","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\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","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  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && 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;\n","module.exports = __webpack_public_path__ + \"static/media/no-search-results-v2.f76581a0.svg\";","var trunc = require('../internals/math-trunc');\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 -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\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 arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) == 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\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 = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw $TypeError(\"Can't convert object to primitive value\");\n};\n","// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = 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\n// eslint-disable-next-line es/no-object-create -- safe\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 : definePropertiesModule.f(result, Properties);\n};\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","'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","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\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 getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\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\nvar concat = uncurryThis([].concat);\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 ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\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 toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = $Array(max(fin - k, 0));\n  for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey } from '../../lib';\n/**\n * A loader alerts a user to wait for an activity to complete.\n * @see Dimmer\n */\n\nfunction Loader(props) {\n  var active = props.active,\n      children = props.children,\n      className = props.className,\n      content = props.content,\n      disabled = props.disabled,\n      indeterminate = props.indeterminate,\n      inline = props.inline,\n      inverted = props.inverted,\n      size = props.size;\n  var classes = cx('ui', size, useKeyOnly(active, 'active'), useKeyOnly(disabled, 'disabled'), useKeyOnly(indeterminate, 'indeterminate'), useKeyOnly(inverted, 'inverted'), useKeyOnly(children || content, 'text'), useKeyOrValueAndKey(inline, 'inline'), 'loader', className);\n  var rest = getUnhandledProps(Loader, props);\n  var ElementType = getElementType(Loader, props);\n  return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n    className: classes\n  }), childrenUtils.isNil(children) ? content : children);\n}\n\nLoader.handledProps = [\"active\", \"as\", \"children\", \"className\", \"content\", \"disabled\", \"indeterminate\", \"inline\", \"inverted\", \"size\"];\nLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /** An element type to render as (string or function). */\n  as: PropTypes.elementType,\n\n  /** A loader can be active or visible. */\n  active: PropTypes.bool,\n\n  /** Primary content. */\n  children: PropTypes.node,\n\n  /** Additional classes. */\n  className: PropTypes.string,\n\n  /** Shorthand for primary content. */\n  content: customPropTypes.contentShorthand,\n\n  /** A loader can be disabled or hidden. */\n  disabled: PropTypes.bool,\n\n  /** A loader can show it's unsure of how long a task will take. */\n  indeterminate: PropTypes.bool,\n\n  /** Loaders can appear inline with content. */\n  inline: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['centered'])]),\n\n  /** Loaders can have their colors inverted. */\n  inverted: PropTypes.bool,\n\n  /** Loaders can have different sizes. */\n  size: PropTypes.oneOf(SUI.SIZES)\n} : {};\nexport default Loader;","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\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 $Object = Object;\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","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","import React, { Fragment } from 'react'\nimport Helmet from 'react-helmet'\nimport { connect } from 'react-redux'\nimport { SectionMeta } from 'ion-article-cmp'\nimport WingBanners from '../components/WingBanners'\nimport { bindActionCreators } from 'redux'\nimport { withRouter } from 'react-router'\nimport { fetchAuthors } from '../../store/authors'\nimport { getSectionLabel } from 'ion-sections'\nimport Ad from '../components/Ad'\nimport FORMATS from '../components/AdFormats'\nimport { MobileElse, DesktopTablet } from 'ion-media'\nimport Sidebar from '../components/Sidebar'\nimport NoImage from '../static/no-image.png'\nimport MagazineCover from '../components/MagazineCover'\nimport AuthorBio from '../components/AuthorBio'\n\nclass AuthorsSectionPage extends (React.Component) {\n  constructor (props) {\n    super(props)\n    this.state = { hasMounted: false }\n    if (!this.props.authors.hasFetched) {\n      props.fetchAuthors()\n    }\n  }\n\n  componentDidMount () {\n    this.setState({ hasMounted: true })\n  }\n\n  render () {\n    const props = this.props\n    return (\n      <>\n        <Helmet\n          titleTemplate='%s'\n          title={props.title || getSectionLabel(props.section)}\n        >\n          <meta property='og:type' content='section' />\n          <meta name='description' content={props.description} />\n          <meta itemProp='description' content={props.description} />\n          <meta property='og:description' content={props.description} />\n          <meta property='og:url' content={props.url} />\n          <meta property='keywords' content={props.keywords} />\n          <meta name='twitter:description' content={props.description} />\n        </Helmet>\n        <WingBanners useSmall={props.useSmall} isConnected={props.isConnected} location={props.location} onSlotRenderEndedLeft={props.onSlotRenderEndedLeft} onSlotRenderEndedRight={props.onSlotRenderEndedRight} />\n        <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} slotId='leaderboard-1' targeting={{ leaderboard: '1' }} collapseEmptyDiv className='advert-leaderboard-1' {...FORMATS.leaderboard} />\n        <div className='wrapper article-listing'>\n          {props.authors && props.authors.authors &&\n            <div className='author article-list'>\n              <div className='author-bio no-divider'>\n                <h1>Authors</h1>\n                <p>Follow your favourite authors here to be notified of all their latest articles.</p>\n                <p>This option is not available to all web browsers.</p>\n              </div>\n              {\n                props.authors.authors.map((element, index) => {\n                  return (\n                    <AuthorBio key={index} {...element} noImage={NoImage} />\n                  )\n                })\n              }\n            </div>}\n          {this.state.hasMounted\n            ? (\n              <Sidebar {...props}>\n                <DesktopTablet>\n                  <MagazineCover />\n                </DesktopTablet>\n              </Sidebar>\n              )\n            : (\n              <Sidebar {...props} />\n              )}\n        </div>\n        <MobileElse>\n          <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} slotId='leaderboard-3' targeting={{ leaderboard: '3' }} collapseEmptyDiv className='advert-leaderboard-3' {...FORMATS.leaderboard} />\n        </MobileElse>\n        <SectionMeta {...props} />\n      </>\n    )\n  }\n}\n\nAuthorsSectionPage.defaultProps = {\n  section: 'homepage'\n}\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ fetchAuthors }, dispatch)\n\nexport default withRouter(connect((state) => ({ authors: state.authors }), mapDispatchToProps)(AuthorsSectionPage))\n","export const FORMATS = {\n  leaderboard: {\n    desktop: [[728, 90], [970, 90]],\n    tablet: [[728, 90], [970, 90]],\n    mobile: [[320, 50]]\n  },\n  leaderboard2: {\n    desktop: [[468, 60]],\n    tablet: [[468, 60]],\n    mobile: [[320, 50]]\n  },\n  leaderboard3: {\n    desktop: [[728, 90]],\n    tablet: [[728, 90]],\n    mobile: [[320, 50]]\n  },\n  mpu: {\n    desktop: [[300, 250]],\n    tablet: [[300, 250]],\n    mobile: [[300, 250]]\n  },\n  mpu2: {\n    desktop: [[300, 250]],\n    tablet: [[300, 250]],\n    mobile: [[300, 600]]\n  },\n  wingbanner: {\n    desktop: [[160, 600]],\n    tablet: [],\n    mobile: []\n  },\n  interstitial: {\n    desktop: [[2, 2]],\n    tablet: [[2, 2]]\n  },\n  halfpage: {\n    desktop: [[300, 600]],\n    tablet: [[300, 600]],\n    mobile: [[300, 600]]\n  }\n}\nexport default FORMATS\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\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 = !isObject(IteratorPrototype) || 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  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var classof = require('../internals/classof');\n\nvar $String = String;\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 root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\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) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar 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 noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\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","var uncurryThis = require('../internals/function-uncurry-this');\nvar 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\nvar push = uncurryThis([].push);\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) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\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","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');\nvar $Array = Array;\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';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\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 createIterResultObject(undefined, true);\n  point = charAt(string, index);\n  state.index += point.length;\n  return createIterResultObject(point, false);\n});\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\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","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","module.exports = __webpack_public_path__ + \"static/media/notifications-ico.2720215b.svg\";","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\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","// 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","/* global window */\n\nvar passiveSupported = false; // eslint-disable-line import/no-mutable-exports\n\nif (typeof window !== 'undefined') {\n  try {\n    var options = Object.defineProperty({}, 'passive', {\n      get: function get() {\n        passiveSupported = true;\n      }\n    });\n\n    window.addEventListener('test', null, options);\n    window.removeEventListener('test', null, options);\n  } catch (err) {} // eslint-disable-line no-empty\n}\n\nexport default passiveSupported;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport EventEmitter from 'eventemitter3';\nimport supportPassiveEvent from './lib/supportPassiveEvent';\n\nexport default {\n  connections: {},\n  EE: new EventEmitter(),\n  enableResizeInfo: false,\n  enableScrollInfo: false,\n  listeners: {},\n  removers: [],\n  supportPassiveEvent: supportPassiveEvent\n};\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport assign from 'lodash/assign';\nimport globalVars from '../globalVars';\n\nvar supportPassiveEvent = globalVars.supportPassiveEvent;\n\n\nvar defaultEventOption = {\n  capture: false,\n  passive: false\n};\n\n/**\n * Cross-browser addEventListener.\n * @method listen\n * @param {Object} target - The target to add event listener.\n * @param {String} eventType - The event type.\n * @param {Function} handler - The event handler.\n * @param {Object} handler - The options object that specifies\n * characteristics about the event listener.\n * @return {Object} The object to be able to remove the handler.\n */\nfunction listen(target, eventType, handler, options) {\n  var add = 'addEventListener';\n  var _remove = 'removeEventListener';\n  var type = eventType;\n\n  var eventOptions = supportPassiveEvent ? assign({}, defaultEventOption, options) : false;\n\n  if (!target.addEventListener && target.attachEvent) {\n    add = 'attachEvent';\n    _remove = 'detachEvent';\n    type = 'on' + eventType;\n  }\n  target[add](type, handler, eventOptions);\n\n  return {\n    remove: function remove() {\n      target[_remove](eventType, handler);\n    }\n  };\n}\n\nexport default listen;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n/* global navigator, parseFloat */\n\n// less then or equal to IE8\nvar leIE8 = false; // eslint-disable-line import/no-mutable-exports\n\nif (typeof navigator !== 'undefined') {\n  var matches = navigator.userAgent.match(/MSIE (\\d+\\.\\d+)/);\n  if (matches) {\n    leIE8 = parseFloat(matches[1], 10) < 9;\n  }\n}\n\nexport default leIE8;\n","var _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n/* global window, document */\n\nimport globalVars from './globalVars';\n\nvar resize = { // eslint-disable-line prefer-const\n  width: 0,\n  height: 0\n};\nvar scroll = { // eslint-disable-line prefer-const\n  delta: 0,\n  top: 0\n};\nvar touch = { // eslint-disable-line prefer-const\n  axisIntention: '',\n  startX: 0,\n  startY: 0,\n  deltaX: 0,\n  deltaY: 0\n};\n\nvar INTENTION_THRESHOLD = 5;\n\nvar getXY = function getXY(pos) {\n  var t = { x: 0, y: 0 }; // eslint-disable-line prefer-const\n  var docBody = document.body;\n  var docEl = document.documentElement;\n\n  if (pos.pageX || pos.pageY) {\n    t.x = pos.pageX;\n    t.y = pos.pageY;\n  } else {\n    t.x = pos.clientX + docBody.scrollLeft + docEl.scrollLeft;\n    t.y = pos.clientY + docBody.scrollTop + docEl.scrollTop;\n  }\n\n  return t;\n};\n\n/**\n * ArgmentedEvent will hold some global information, such like window scroll postion,\n * so that those information is only calculated once.\n * @param {Object} option - The option for SyntheticEvent\n */\n\nvar AugmentedEvent = function () {\n  function AugmentedEvent() {\n    var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, AugmentedEvent);\n\n    var mainType = (option.mainType || '').toLowerCase();\n    var subType = (option.subType || '').toLowerCase();\n\n    this.mainType = mainType;\n    this.subType = subType;\n    this.type = mainType + subType.charAt(0).toUpperCase() + subType.slice(1) || '';\n    this.scroll = scroll;\n    this.resize = resize;\n    this.touch = touch;\n  }\n\n  _createClass(AugmentedEvent, [{\n    key: 'update',\n    value: function update(e) {\n      var mainType = this.mainType,\n          subType = this.subType;\n\n      var docEl = document.documentElement;\n\n      if (globalVars.enableScrollInfo && (mainType === 'scroll' || mainType === 'touchmove')) {\n        var top = docEl.scrollTop + document.body.scrollTop;\n        // Prevent delta from being 0\n        if (top !== this.scroll.top) {\n          this.scroll.delta = top - this.scroll.top;\n          this.scroll.top = top;\n        }\n      }\n      if (globalVars.enableResizeInfo && mainType === 'resize') {\n        this.resize.width = window.innerWidth || docEl.clientWidth;\n        this.resize.height = window.innerHeight || docEl.clientHeight;\n      }\n      if (globalVars.enableTouchInfo && e.touches && (mainType === 'touchstart' || mainType === 'touchmove' || mainType === 'touchend')) {\n        var pos = void 0;\n        var absX = void 0;\n        var absY = void 0;\n        if (mainType === 'touchstart' || subType === 'start') {\n          pos = getXY(e.touches[0]);\n          this.touch.axisIntention = '';\n          this.touch.startX = pos.x;\n          this.touch.startY = pos.y;\n          this.touch.deltaX = 0;\n          this.touch.deltaY = 0;\n        } else if (mainType === 'touchmove') {\n          pos = getXY(e.touches[0]);\n          this.touch.deltaX = pos.x - this.touch.startX;\n          this.touch.deltaY = pos.y - this.touch.startY;\n          if (this.touch.axisIntention === '') {\n            absX = Math.abs(this.touch.deltaX);\n            absY = Math.abs(this.touch.deltaY);\n            if (absX > INTENTION_THRESHOLD && absX >= absY) {\n              this.touch.axisIntention = 'x';\n            } else if (absY > INTENTION_THRESHOLD && absY > absX) {\n              this.touch.axisIntention = 'y';\n            }\n          }\n        }\n      }\n    }\n  }]);\n\n  return AugmentedEvent;\n}();\n\nexport default AugmentedEvent;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport rAF from 'raf';\n\nvar getTime = Date.now ||\n/* istanbul ignore next */function () {\n  return new Date().getTime();\n};\n\nfunction rAFThrottle(func) {\n  var throttle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 15;\n\n  var context = void 0;\n  var args = void 0;\n  var last = 0;\n  var requestId = 0;\n\n  var later = function later() {\n    var now = getTime();\n    var remaining = throttle - (now - last);\n\n    if (remaining <= 0) {\n      last = now;\n      requestId = 0;\n      func.apply(context, args);\n    } else {\n      requestId = rAF(later);\n    }\n  };\n\n  return function throttledFunc() {\n    context = this;\n    args = arguments; // eslint-disable-line prefer-rest-params\n\n    if (!requestId) {\n      requestId = rAF(later);\n    }\n  };\n}\n\nexport default rAFThrottle;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n/* global window, document, setTimeout */\n\nimport clone from 'lodash/clone';\nimport throttle from 'lodash/throttle';\nimport noop from 'lodash/noop';\n\nimport AugmentedEvent from './AugmentedEvent';\nimport globalVars from './globalVars';\nimport leIE8 from './lib/leIE8';\nimport listen from './lib/listen';\nimport rAFThrottle from './lib/rAFThrottle';\n\n// constants\nimport { EVENT_END_DELAY } from './constants';\n\nvar connections = globalVars.connections,\n    EE = globalVars.EE,\n    listeners = globalVars.listeners,\n    removers = globalVars.removers;\n\n// global variables\n\nvar doc = void 0;\nvar win = void 0;\nvar body = void 0;\nvar hashId = 0;\n\nif (typeof window !== 'undefined') {\n  win = window;\n  doc = win.document || document;\n  body = doc.body;\n}\n\nfunction getHash(domNode) {\n  return domNode.id || 'target-id-' + hashId++; // eslint-disable-line\n}\n\n/**\n * Connect a throttled event to a throttled main event, and return an event remover.\n * The number of connections to a throttled main event will be kept. If all throttled events\n * are removed, then remove throttled main event.\n * @method connectThrottle\n * @param {String} throttledEvent - A throttled event\n * @param {Function} cb - Callback function\n * @param {Object} ctx - The \"this\"\n * @param {String} throttledMainEvent - A throttled main event\n * @return {Object} An event remover\n */\nfunction connectThrottle(throttledEvent, cb, ctx, throttledMainEvent) {\n  EE.on(throttledEvent, cb || noop, ctx);\n  throttledMainEvent = throttledMainEvent || throttledEvent;\n  connections[throttledMainEvent] = (connections[throttledMainEvent] || 0) + 1;\n  return {\n    _type: throttledEvent,\n    _cb: cb,\n    _ctx: ctx,\n    unsubscribe: function unsubscribe() {\n      if (!this._type) {\n        return;\n      }\n\n      EE.removeListener(throttledEvent, cb, ctx);\n      connections[throttledMainEvent]--;\n      if (connections[throttledMainEvent] === 0) {\n        listeners[throttledMainEvent].remove();\n        listeners[throttledMainEvent] = undefined;\n      }\n\n      this._type = undefined;\n      this._cb = undefined;\n      this._ctx = undefined;\n\n      // remove the remover from removers array\n      for (var i = removers.length - 1; i >= 0; i--) {\n        var remover = removers[i];\n        if (remover === this) {\n          removers.splice(i, 1);\n          break;\n        }\n      }\n    }\n  };\n}\n\n/**\n * Connect to event, event start and event end.\n * @method connectContinuousEvent\n * @param {Object} target - The target of a main event, window or document.\n * @param {String} mainEvent - A browser event, like scroll or resize.\n * @param {String} event - A subscribe event.\n * @param {Object} eventOptions - An options pass to event listener\n */\nfunction connectContinuousEvent(target, mainEvent, event) {\n  return function throttleEvent(throttleRate, cb, options, eventOptions) {\n    var context = options.context;\n    var domTarget = options.target;\n    var domId = domTarget && getHash(domTarget);\n    var targetPart = domId ? ':' + domId : '';\n\n    var throttledStartEvent = mainEvent + 'Start:' + throttleRate + targetPart;\n    var throttledEndEvent = mainEvent + 'End:' + throttleRate + targetPart;\n    var throttledMainEvent = mainEvent + ':' + throttleRate + targetPart;\n    var throttledEvent = event + ':' + throttleRate + targetPart;\n\n    var remover = connectThrottle(throttledEvent, cb, context, throttledMainEvent);\n    removers.push(remover);\n\n    if (listeners[throttledMainEvent]) {\n      return remover;\n    }\n\n    var ae = {\n      start: new AugmentedEvent({ mainType: mainEvent, subType: 'start' }), // start\n      main: new AugmentedEvent({ mainType: mainEvent }), // main\n      end: new AugmentedEvent({ mainType: mainEvent, subType: 'end' })\n    };\n\n    // No throttle for throttleRate = 0\n    // end\n    if (throttleRate === 'raf') {\n      throttleRate = 16; // Set as a number for setTimeout later.\n      handler = rAFThrottle(handler);\n    } else if (throttleRate > 0) {\n      handler = throttle(handler, throttleRate);\n    }\n\n    var timer = void 0;\n    function endCallback(e) {\n      ae.end.update(e);\n      EE.emit(throttledEndEvent, e, ae.end);\n      timer = null;\n    }\n    function handler(e) {\n      if (!timer) {\n        ae.start.update(e);\n        EE.emit(throttledStartEvent, e, ae.start);\n      }\n      clearTimeout(timer);\n\n      ae.main.update(e);\n      EE.emit(throttledMainEvent, e, ae.main);\n      if (!leIE8) {\n        timer = setTimeout(endCallback.bind(null, e), throttleRate + EVENT_END_DELAY);\n      } else {\n        // For browser less then and equal to IE8, event object need to be cloned for setTimeout.\n        timer = setTimeout(function () {\n          endCallback(clone(e));\n        }, throttleRate + EVENT_END_DELAY);\n      }\n    }\n\n    listeners[throttledMainEvent] = listen(domTarget || target, mainEvent, handler, eventOptions);\n    return remover;\n  };\n}\n\nfunction connectDiscreteEvent(target, event) {\n  return function throttleEvent(throttleRate, cb, options, eventOptions) {\n    var context = options.context;\n    var domTarget = options.target;\n    var domId = domTarget && getHash(domTarget);\n\n    // no throttling for discrete event\n    var throttledEvent = event + ':0' + (domId ? ':' + domId : '');\n\n    var remover = connectThrottle(throttledEvent, cb, context);\n    removers.push(remover);\n\n    if (listeners[throttledEvent]) {\n      return remover;\n    }\n\n    var ae = new AugmentedEvent({ mainType: event });\n\n    function handler(e) {\n      ae.update(e);\n      EE.emit(throttledEvent, e, ae);\n    }\n\n    listeners[throttledEvent] = listen(domTarget || target, event, handler, eventOptions);\n    return remover;\n  };\n}\n\nexport default {\n  scrollStart: connectContinuousEvent(win, 'scroll', 'scrollStart'),\n  scrollEnd: connectContinuousEvent(win, 'scroll', 'scrollEnd'),\n  scroll: connectContinuousEvent(win, 'scroll', 'scroll'),\n  resizeStart: connectContinuousEvent(win, 'resize', 'resizeStart'),\n  resizeEnd: connectContinuousEvent(win, 'resize', 'resizeEnd'),\n  resize: connectContinuousEvent(win, 'resize', 'resize'),\n  visibilitychange: connectDiscreteEvent(doc, 'visibilitychange'),\n  touchmoveStart: connectContinuousEvent(body, 'touchmove', 'touchmoveStart'),\n  touchmoveEnd: connectContinuousEvent(body, 'touchmove', 'touchmoveEnd'),\n  touchmove: connectContinuousEvent(body, 'touchmove', 'touchmove'),\n  touchstart: connectDiscreteEvent(body, 'touchstart'),\n  touchend: connectDiscreteEvent(body, 'touchend')\n};\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nexport var EVENT_END_DELAY = 100;\nexport var DEFAULT_THROTTLE_RATE = 50;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport globalVars from './globalVars';\nimport leIE8 from './lib/leIE8'; // less then or equal to IE8\nimport mainEventConnectors from './mainEventConnectors';\n\n// constants\nimport { DEFAULT_THROTTLE_RATE } from './constants';\n\n/**\n * Subscribe to UI events.\n * @method subscribe\n * @param {String} type - The type of event.\n * @param {Function} cb - The callback function.\n * @param {Object} options.context - The caller.\n * @param {Number} options.throttleRate - The amount of time for throttling.\n * @param {Boolean} options.useRAF - Use rAF for throttling if true.\n * @param {Object} options.eventOptions - Option to pass to event listener\n * @return {Object} The object with unsubscribe function.\n */\nfunction subscribe(type, cb) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  var useRAF = options.useRAF || false;\n  var throttleRate = parseInt(options.throttleRate, 10);\n  var eventOptions = options.eventOptions;\n\n  if (isNaN(throttleRate)) {\n    throttleRate = DEFAULT_THROTTLE_RATE;\n  }\n\n  if (useRAF) {\n    throttleRate = 'raf';\n  }\n\n  // turn off throttle if the browser is IE8 or less, because window.event will be reset\n  // when using any delayed function, i.g., setTimeout, or rAF.\n  if (leIE8) {\n    throttleRate = 0;\n  }\n\n  // once those variables enabled, then never disabled.\n  globalVars.enableScrollInfo = globalVars.enableScrollInfo || options.enableScrollInfo || false;\n  globalVars.enableResizeInfo = globalVars.enableResizeInfo || options.enableResizeInfo || false;\n  globalVars.enableTouchInfo = globalVars.enableTouchInfo || options.enableTouchInfo || false;\n\n  return mainEventConnectors[type](throttleRate, cb, options, eventOptions);\n}\n\nexport default subscribe;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport globalVars from './globalVars';\n\nvar removers = globalVars.removers;\n\n/**\n * Unsubscribe to UI events.\n * @method unsubscribe\n * @param {String} type - The type of event.\n * @param {Function} cb - The callback function.\n */\n\nfunction unsubscribe(type, cb) {\n  var remover = void 0;\n  for (var i = removers.length - 1; i >= 0; i -= 1) {\n    remover = removers[i];\n    if (remover._cb === cb && remover._type.indexOf(type) >= 0) {\n      remover.unsubscribe();\n      removers.splice(i, 1);\n    }\n  }\n}\n\nexport default unsubscribe;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport listenLib from './dist-es/lib/listen';\nimport subscribeLib from './dist-es/subscribe';\nimport unsubscribeLib from './dist-es/unsubscribe';\n\nvar IS_CLIENT = typeof window !== 'undefined';\n\nfunction warn() {\n  if (process.env.NODE_ENV !== 'production') {\n    console.warn('Warning: the function is client-side only, does not work on server side'); // eslint-disable-line\n  }\n}\n\nexport var listen = IS_CLIENT ? listenLib : warn;\nexport var subscribe = IS_CLIENT ? subscribeLib : warn;\nexport var unsubscribe = IS_CLIENT ? unsubscribeLib : warn;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.object.define-property.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { subscribe } from 'subscribe-ui-event';\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal'; // constants\n\nvar STATUS_ORIGINAL = 0; // The default status, locating at the original position.\n\nvar STATUS_RELEASED = 1; // The released status, locating at somewhere on document but not default one.\n\nvar STATUS_FIXED = 2; // The sticky status, locating fixed to the top or the bottom of screen.\n\nvar TRANSFORM_PROP = 'transform'; // global variable for all instances\n\nvar doc;\nvar docBody;\nvar docEl;\nvar canEnableTransforms = true; // Use transform by default, so no Sticky on lower-end browser when no Modernizr\n\nvar M;\nvar scrollDelta = 0;\nvar win;\nvar winHeight = -1;\n\nvar Sticky = /*#__PURE__*/function (_Component) {\n  _inherits(Sticky, _Component);\n\n  var _super = _createSuper(Sticky);\n\n  function Sticky(props, context) {\n    var _this;\n\n    _classCallCheck(this, Sticky);\n\n    _this = _super.call(this, props, context);\n    _this.handleResize = _this.handleResize.bind(_assertThisInitialized(_this));\n    _this.handleScroll = _this.handleScroll.bind(_assertThisInitialized(_this));\n    _this.handleScrollStart = _this.handleScrollStart.bind(_assertThisInitialized(_this));\n    _this.delta = 0;\n    _this.stickyTop = 0;\n    _this.stickyBottom = 0;\n    _this.frozen = false;\n    _this.skipNextScrollEvent = false;\n    _this.scrollTop = -1;\n    _this.bottomBoundaryTarget;\n    _this.topTarget;\n    _this.subscribers;\n    _this.state = {\n      top: 0,\n      // A top offset from viewport top where Sticky sticks to when scrolling up\n      bottom: 0,\n      // A bottom offset from viewport top where Sticky sticks to when scrolling down\n      width: 0,\n      // Sticky width\n      height: 0,\n      // Sticky height\n      x: 0,\n      // The original x of Sticky\n      y: 0,\n      // The original y of Sticky\n      topBoundary: 0,\n      // The top boundary on document\n      bottomBoundary: Infinity,\n      // The bottom boundary on document\n      status: STATUS_ORIGINAL,\n      // The Sticky status\n      pos: 0,\n      // Real y-axis offset for rendering position-fixed and position-relative\n      activated: false // once browser info is available after mounted, it becomes true to avoid checksum error\n\n    };\n    return _this;\n  }\n\n  _createClass(Sticky, [{\n    key: \"getTargetHeight\",\n    value: function getTargetHeight(target) {\n      return target && target.offsetHeight || 0;\n    }\n  }, {\n    key: \"getTopPosition\",\n    value: function getTopPosition(top) {\n      // a top argument can be provided to override reading from the props\n      top = top || this.props.top || 0;\n\n      if (typeof top === 'string') {\n        if (!this.topTarget) {\n          this.topTarget = doc.querySelector(top);\n        }\n\n        top = this.getTargetHeight(this.topTarget);\n      }\n\n      return top;\n    }\n  }, {\n    key: \"getTargetBottom\",\n    value: function getTargetBottom(target) {\n      if (!target) {\n        return -1;\n      }\n\n      var rect = target.getBoundingClientRect();\n      return this.scrollTop + rect.bottom;\n    }\n  }, {\n    key: \"getBottomBoundary\",\n    value: function getBottomBoundary(bottomBoundary) {\n      // a bottomBoundary can be provided to avoid reading from the props\n      var boundary = bottomBoundary || this.props.bottomBoundary; // TODO, bottomBoundary was an object, depricate it later.\n\n      if (_typeof(boundary) === 'object') {\n        boundary = boundary.value || boundary.target || 0;\n      }\n\n      if (typeof boundary === 'string') {\n        if (!this.bottomBoundaryTarget) {\n          this.bottomBoundaryTarget = doc.querySelector(boundary);\n        }\n\n        boundary = this.getTargetBottom(this.bottomBoundaryTarget);\n      }\n\n      return boundary && boundary > 0 ? boundary : Infinity;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.setState({\n        status: STATUS_ORIGINAL,\n        pos: 0\n      });\n    }\n  }, {\n    key: \"release\",\n    value: function release(pos) {\n      this.setState({\n        status: STATUS_RELEASED,\n        pos: pos - this.state.y\n      });\n    }\n  }, {\n    key: \"fix\",\n    value: function fix(pos) {\n      this.setState({\n        status: STATUS_FIXED,\n        pos: pos\n      });\n    }\n    /**\n     * Update the initial position, width, and height. It should update whenever children change.\n     * @param {Object} options optional top and bottomBoundary new values\n     */\n\n  }, {\n    key: \"updateInitialDimension\",\n    value: function updateInitialDimension(options) {\n      options = options || {};\n\n      if (!this.outerElement || !this.innerElement) {\n        return;\n      }\n\n      var outerRect = this.outerElement.getBoundingClientRect();\n      var innerRect = this.innerElement.getBoundingClientRect();\n      var width = outerRect.width || outerRect.right - outerRect.left;\n      var height = innerRect.height || innerRect.bottom - innerRect.top;\n      var outerY = outerRect.top + this.scrollTop;\n      this.setState({\n        top: this.getTopPosition(options.top),\n        bottom: Math.min(this.state.top + height, winHeight),\n        width: width,\n        height: height,\n        x: outerRect.left,\n        y: outerY,\n        bottomBoundary: this.getBottomBoundary(options.bottomBoundary),\n        topBoundary: outerY\n      });\n    }\n  }, {\n    key: \"handleResize\",\n    value: function handleResize(e, ae) {\n      if (this.props.shouldFreeze()) {\n        return;\n      }\n\n      winHeight = ae.resize.height;\n      this.updateInitialDimension();\n      this.update();\n    }\n  }, {\n    key: \"handleScrollStart\",\n    value: function handleScrollStart(e, ae) {\n      this.frozen = this.props.shouldFreeze();\n\n      if (this.frozen) {\n        return;\n      }\n\n      if (this.scrollTop === ae.scroll.top) {\n        // Scroll position hasn't changed,\n        // do nothing\n        this.skipNextScrollEvent = true;\n      } else {\n        this.scrollTop = ae.scroll.top;\n        this.updateInitialDimension();\n      }\n    }\n  }, {\n    key: \"handleScroll\",\n    value: function handleScroll(e, ae) {\n      // Scroll doesn't need to be handled\n      if (this.skipNextScrollEvent) {\n        this.skipNextScrollEvent = false;\n        return;\n      }\n\n      scrollDelta = ae.scroll.delta;\n      this.scrollTop = ae.scroll.top;\n      this.update();\n    }\n    /**\n     * Update Sticky position.\n     */\n\n  }, {\n    key: \"update\",\n    value: function update() {\n      var disabled = !this.props.enabled || this.state.bottomBoundary - this.state.topBoundary <= this.state.height || this.state.width === 0 && this.state.height === 0;\n\n      if (disabled) {\n        if (this.state.status !== STATUS_ORIGINAL) {\n          this.reset();\n        }\n\n        return;\n      }\n\n      var delta = scrollDelta; // \"top\" and \"bottom\" are the positions that this.state.top and this.state.bottom project\n      // on document from viewport.\n\n      var top = this.scrollTop + this.state.top;\n      var bottom = this.scrollTop + this.state.bottom; // There are 2 principles to make sure Sticky won't get wrong so much:\n      // 1. Reset Sticky to the original postion when \"top\" <= topBoundary\n      // 2. Release Sticky to the bottom boundary when \"bottom\" >= bottomBoundary\n\n      if (top <= this.state.topBoundary) {\n        // #1\n        this.reset();\n      } else if (bottom >= this.state.bottomBoundary) {\n        // #2\n        this.stickyBottom = this.state.bottomBoundary;\n        this.stickyTop = this.stickyBottom - this.state.height;\n        this.release(this.stickyTop);\n      } else {\n        if (this.state.height > winHeight - this.state.top) {\n          // In this case, Sticky is higher then viewport minus top offset\n          switch (this.state.status) {\n            case STATUS_ORIGINAL:\n              this.release(this.state.y);\n              this.stickyTop = this.state.y;\n              this.stickyBottom = this.stickyTop + this.state.height;\n            // Commentting out \"break\" is on purpose, because there is a chance to transit to FIXED\n            // from ORIGINAL when calling window.scrollTo().\n            // break;\n\n            case STATUS_RELEASED:\n              // If \"top\" and \"bottom\" are inbetween stickyTop and stickyBottom, then Sticky is in\n              // RELEASE status. Otherwise, it changes to FIXED status, and its bottom sticks to\n              // viewport bottom when scrolling down, or its top sticks to viewport top when scrolling up.\n              this.stickyBottom = this.stickyTop + this.state.height;\n\n              if (delta > 0 && bottom > this.stickyBottom) {\n                this.fix(this.state.bottom - this.state.height);\n              } else if (delta < 0 && top < this.stickyTop) {\n                this.fix(this.state.top);\n              }\n\n              break;\n\n            case STATUS_FIXED:\n              var toRelease = true;\n              var pos = this.state.pos;\n              var height = this.state.height; // In regular cases, when Sticky is in FIXED status,\n              // 1. it's top will stick to the screen top,\n              // 2. it's bottom will stick to the screen bottom,\n              // 3. if not the cases above, then it's height gets changed\n\n              if (delta > 0 && pos === this.state.top) {\n                // case 1, and scrolling down\n                this.stickyTop = top - delta;\n                this.stickyBottom = this.stickyTop + height;\n              } else if (delta < 0 && pos === this.state.bottom - height) {\n                // case 2, and scrolling up\n                this.stickyBottom = bottom - delta;\n                this.stickyTop = this.stickyBottom - height;\n              } else if (pos !== this.state.bottom - height && pos !== this.state.top) {\n                // case 3\n                // This case only happens when Sticky's bottom sticks to the screen bottom and\n                // its height gets changed. Sticky should be in RELEASE status and update its\n                // sticky bottom by calculating how much height it changed.\n                var deltaHeight = pos + height - this.state.bottom;\n                this.stickyBottom = bottom - delta + deltaHeight;\n                this.stickyTop = this.stickyBottom - height;\n              } else {\n                toRelease = false;\n              }\n\n              if (toRelease) {\n                this.release(this.stickyTop);\n              }\n\n              break;\n          }\n        } else {\n          // In this case, Sticky is shorter then viewport minus top offset\n          // and will always fix to the top offset of viewport\n          this.fix(this.state.top);\n        }\n      }\n\n      this.delta = delta;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this2 = this;\n\n      if (prevState.status !== this.state.status && this.props.onStateChange) {\n        this.props.onStateChange({\n          status: this.state.status\n        });\n      } // check if we are up-to-date, is triggered in case of scroll restoration\n\n\n      if (this.props.top !== prevState.top) {\n        this.updateInitialDimension();\n        this.update();\n      }\n\n      var arePropsChanged = !shallowEqual(this.props, prevProps);\n\n      if (arePropsChanged) {\n        // if the props for enabling are toggled, then trigger the update or reset depending on the current props\n        if (prevProps.enabled !== this.props.enabled) {\n          if (this.props.enabled) {\n            this.setState({\n              activated: true\n            }, function () {\n              _this2.updateInitialDimension();\n\n              _this2.update();\n            });\n          } else {\n            this.setState({\n              activated: false\n            }, function () {\n              _this2.reset();\n            });\n          }\n        } // if the top or bottomBoundary props were changed, then trigger the update\n        else if (prevProps.top !== this.props.top || prevProps.bottomBoundary !== this.props.bottomBoundary) {\n          this.updateInitialDimension();\n          this.update();\n        }\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var subscribers = this.subscribers || [];\n\n      for (var i = subscribers.length - 1; i >= 0; i--) {\n        this.subscribers[i].unsubscribe();\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // Only initialize the globals if this is the first\n      // time this component type has been mounted\n      if (!win) {\n        win = window;\n        doc = document;\n        docEl = doc.documentElement;\n        docBody = doc.body;\n        winHeight = win.innerHeight || docEl.clientHeight;\n        M = window.Modernizr; // No Sticky on lower-end browser when no Modernizr\n\n        if (M && M.prefixed) {\n          canEnableTransforms = M.csstransforms3d;\n          TRANSFORM_PROP = M.prefixed('transform');\n        }\n      } // when mount, the scrollTop is not necessary on the top\n\n\n      this.scrollTop = docBody.scrollTop + docEl.scrollTop;\n\n      if (this.props.enabled) {\n        this.setState({\n          activated: true\n        });\n        this.updateInitialDimension();\n        this.update();\n      } // bind the listeners regardless if initially enabled - allows the component to toggle sticky functionality\n\n\n      this.subscribers = [subscribe('scrollStart', this.handleScrollStart.bind(this), {\n        useRAF: true\n      }), subscribe('scroll', this.handleScroll.bind(this), {\n        useRAF: true,\n        enableScrollInfo: true\n      }), subscribe('resize', this.handleResize.bind(this), {\n        enableResizeInfo: true\n      })];\n    }\n  }, {\n    key: \"translate\",\n    value: function translate(style, pos) {\n      var enableTransforms = canEnableTransforms && this.props.enableTransforms;\n\n      if (enableTransforms && this.state.activated) {\n        style[TRANSFORM_PROP] = 'translate3d(0,' + Math.round(pos) + 'px,0)';\n      } else {\n        style.top = pos + 'px';\n      }\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps, nextState) {\n      return !this.props.shouldFreeze() && !(shallowEqual(this.props, nextProps) && shallowEqual(this.state, nextState));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames,\n          _this3 = this;\n\n      // TODO, \"overflow: auto\" prevents collapse, need a good way to get children height\n      var innerStyle = {\n        position: this.state.status === STATUS_FIXED ? 'fixed' : 'relative',\n        top: this.state.status === STATUS_FIXED ? '0px' : '',\n        zIndex: this.props.innerZ\n      };\n      var outerStyle = {}; // always use translate3d to enhance the performance\n\n      this.translate(innerStyle, this.state.pos);\n\n      if (this.state.status !== STATUS_ORIGINAL) {\n        innerStyle.width = this.state.width + 'px';\n        outerStyle.height = this.state.height + 'px';\n      }\n\n      var outerClasses = classNames('sticky-outer-wrapper', this.props.className, (_classNames = {}, _defineProperty(_classNames, this.props.activeClass, this.state.status === STATUS_FIXED), _defineProperty(_classNames, this.props.releasedClass, this.state.status === STATUS_RELEASED), _classNames));\n      var innerClasses = classNames('sticky-inner-wrapper', this.props.innerClass, _defineProperty({}, this.props.innerActiveClass, this.state.status === STATUS_FIXED));\n      var children = this.props.children;\n      return /*#__PURE__*/React.createElement(\"div\", {\n        ref: function ref(outer) {\n          _this3.outerElement = outer;\n        },\n        className: outerClasses,\n        style: outerStyle\n      }, /*#__PURE__*/React.createElement(\"div\", {\n        ref: function ref(inner) {\n          _this3.innerElement = inner;\n        },\n        className: innerClasses,\n        style: innerStyle\n      }, typeof children === 'function' ? children({\n        status: this.state.status\n      }) : children));\n    }\n  }]);\n\n  return Sticky;\n}(Component);\n\nSticky.displayName = 'Sticky';\nSticky.defaultProps = {\n  shouldFreeze: function shouldFreeze() {\n    return false;\n  },\n  enabled: true,\n  top: 0,\n  bottomBoundary: 0,\n  enableTransforms: true,\n  activeClass: 'active',\n  releasedClass: 'released',\n  onStateChange: null,\n  innerClass: '',\n  innerActiveClass: ''\n};\n/**\n * @param {Bool} enabled A switch to enable or disable Sticky.\n * @param {String/Number} top A top offset px for Sticky. Could be a selector representing a node\n *        whose height should serve as the top offset.\n * @param {String/Number} bottomBoundary A bottom boundary px on document where Sticky will stop.\n *        Could be a selector representing a node whose bottom should serve as the bottom boudary.\n */\n\nSticky.propTypes = {\n  enabled: PropTypes.bool,\n  top: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  bottomBoundary: PropTypes.oneOfType([PropTypes.object, // TODO, may remove\n  PropTypes.string, PropTypes.number]),\n  enableTransforms: PropTypes.bool,\n  activeClass: PropTypes.string,\n  releasedClass: PropTypes.string,\n  innerClass: PropTypes.string,\n  innerActiveClass: PropTypes.string,\n  className: PropTypes.string,\n  onStateChange: PropTypes.func,\n  shouldFreeze: PropTypes.func,\n  innerZ: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nSticky.STATUS_ORIGINAL = STATUS_ORIGINAL;\nSticky.STATUS_RELEASED = STATUS_RELEASED;\nSticky.STATUS_FIXED = STATUS_FIXED;\nexport default Sticky;","import React from 'react'\nimport { Link } from 'react-router-dom'\nimport { ImageOrNoImage } from 'ion-image'\nimport NoImage from '../static/no-image.png'\n\nconst SidebarArticleCard = ({ article, noImage }) => (\n  <article>\n    <Link to={'/' + article.getCanonicalUri()}>\n      <ImageOrNoImage image={article.getImageObject()} width={120} alt={article.headline} shape='square' noImage={NoImage} />\n    </Link>\n    <p>\n      <Link to={'/' + article.getSectionId()}>\n        {article.getGrandSectionId()}\n      </Link>\n    </p>\n    <p>\n      <Link to={'/' + article.getCanonicalUri()}>\n        {article.headline}\n      </Link>\n      {(article.sponsoredIndicator === 'SPONSORED' || article.sponsoredIndicator === 'SPONSORED_EXPIRED') &&\n        <small className='sponsored'>Sponsored</small>}\n      {(article.sponsoredIndicator === 'NATIVE' || article.sponsoredIndicator === 'NATIVE_EXPIRED') &&\n        <small className='native'>Partnered</small>}\n    </p>\n  </article>\n)\n\nexport default SidebarArticleCard\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport { fetchMostReadArticles } from '../../store/mostReadArticles'\n\nimport SidebarArticleCard from './SidebarArticleCard'\nimport { Articles } from 'ion-article-cmp'\n\nconst MostReadArticles = (props) => {\n  return (\n    <>\n      <h2>Most Popular</h2>\n      <Articles\n        section={props.section || 'news'} page0Limit={props.pageSize + 1} pageSize={props.pageSize + 1} fetchArticles={props.fetchMostReadArticles}\n        noImage={props.noImage} notFound={() => (<div>Oops!</div>)} noDiv fetchMoreArticles={() => { }} articles={props.articles}\n        component={({ articles }) => {\n          return articles\n            .filter(article => article.contentKey !== props.contentKey)\n            .slice(0, props.pageSize)\n            .map((article, index) => (\n              <div key={'mr-' + article.uuid} className={props.className}>\n                <SidebarArticleCard article={article} />\n              </div>\n            ))\n        }}\n      />\n    </>\n  )\n}\n\nMostReadArticles.propTypes = {\n  articles: PropTypes.object.isRequired,\n  fetchMostReadArticles: PropTypes.func.isRequired\n}\n\nMostReadArticles.defaultProps = {\n  pageSize: 3\n}\n\nconst mapStateToProps = (state) => ({ articles: state.mostReadArticles })\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ fetchMostReadArticles }, dispatch)\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MostReadArticles)\n","import React, { useState, useEffect } from 'react'\nimport StyledLink from '../components/StyledLink'\nimport { db } from '../db'\nimport { getCookie } from './ui/utils'\n\nimport bellIcon from '../images/brands/icons/notifications-ico.svg'\n\nconst NotificationsBell = (props) => {\n  const [UnreadCount, setUnreadCount] = useState(0)\n  useEffect(() => {\n    const NotificationsLastViewed = getCookie('NotificationsLastViewed')\n    db.messages.toArray().then(articles =>\n      setUnreadCount((articles.filter(article =>\n        Date.parse(article.timestamp) > Date.parse(NotificationsLastViewed))).length\n      )\n    )\n  }, [])\n\n  return (\n    <StyledLink to='/my-notifications' mr={10} title='View recent push notifications.' className='my-notifications'>\n      <div>\n        <img src={bellIcon} alt={'View ' + UnreadCount + ' recent articles pushed to you.'} />\n        {UnreadCount > 0 &&\n          <span>\n            <span>{UnreadCount}</span>\n          </span>}\n      </div>\n      <div>View my notifications</div>\n    </StyledLink>\n  )\n}\n\nexport default NotificationsBell\n","import React, { Component, Fragment } from 'react'\nimport Helmet from 'react-helmet'\nimport { Dimmer, Loader, Segment } from 'semantic-ui-react/dist/commonjs'\nimport { subscribeNewsletter, updateForm, reinitialize } from '../../store/subscribe'\nimport Sticky from 'react-stickynode'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\n// import JoinDirectory from '../static/general/join-our-design-directory.jpg'\n// import designdirectoryImage from '../static/general/ef4332e5-bf85-476a-b4ca-cdc107a2b0d4.jpg'\n// import { Link } from 'react-router-dom'\nimport Ad from './Ad'\nimport FORMATS from './AdFormats'\nimport { Search, LinkedIn, Facebook, Twitter, Instagram, Pinterest, Youtube, TikTok } from 'ion-icon'\nimport { Mobile, Desktop, Tablet, DesktopTablet, MobileElse, defaultWidth } from 'ion-media'\nimport MostReadArticles from './MostReadArticles'\nimport NoImage from '../static/no-image.png'\nimport NotificationsBell from './NotificationsBell'\n\nexport class Sidebar extends Component {\n  constructor (props) {\n    super(props)\n    this.handleSubmit = this.handleSubmit.bind(this)\n    this.handleChange = this.handleChange.bind(this)\n    this.state = { hasMounted: false }\n  }\n\n  componentDidMount () {\n    this.setState({ hasMounted: true })\n  }\n\n  handleChange (event) {\n    const newState = {}\n    newState[event.target.name] = event.target.value\n    this.props.updateForm(newState)\n  }\n\n  validateName (name) {\n    const re = /^[`a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ' -]{2,45}$/i\n    return name.match(re)\n  }\n\n  validateEmail (email) {\n    const re = /^[^.@][^@]+@{1}[^@]+\\.[^@]+[^.@]$/i\n    return email.match(re)\n  }\n\n  handleSubmit (event) {\n    event.preventDefault()\n    if (!this.validateEmail(this.props.email)) {\n      this.props.updateForm({ error: 'Please enter a valid email address' })\n      return false\n    }\n    if (!this.validateName(this.props.firstName) || !this.validateName(this.props.lastName)) {\n      this.props.updateForm({ error: 'Please enter valid first and last names' })\n      return false\n    }\n    this.props.subscribeNewsletter({ email: this.props.email, firstName: this.props.firstName, lastName: this.props.lastName })\n    return true\n  }\n\n  render () {\n    const props = this.props\n    const showForm = !props.hasSubmitted && !props.isSubmitting\n    const submitting = props.isSubmitting\n    const showThankYou = props.hasSubmitted\n    return (\n      <aside className='sidebar' id='sidebar'>\n        <Mobile>\n          <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} slotId='leaderboard-3' targeting={{ leaderboard: '3' }} collapseEmptyDiv className='advert-leaderboard-3' {...FORMATS.leaderboard} />\n        </Mobile>\n        {/* <Link to='/design-directory'><img src={JoinDirectory} alt='Join our design directory' /></Link> */}\n        {this.state.hasMounted &&\n          <DesktopTablet values={{ deviceWidth: defaultWidth }}>\n            <div className='follow-us'>\n              <span>Follow us</span>\n              <nav>\n                <ul>\n                  <li>\n                    <a href={process.env.RAZZLE_SITE_LINKEDIN} target='_blank' rel='noopener noreferrer' title='Follow House and Garden on LinkedIn'>\n                      <LinkedIn width='18' height='18' />\n                    </a>\n                  </li>\n                  <li>\n                    <a href={process.env.RAZZLE_SITE_FACEBOOK} target='_blank' rel='noopener noreferrer' title='Like House and Garden on Facebook'>\n                      <Facebook width='18' height='18' />\n                    </a>\n                  </li>\n                  <li>\n                    <a href={process.env.RAZZLE_SITE_INSTAGRAM} target='_blank' rel='noopener noreferrer' title='Follow House and Garden on Instagram'>\n                      <Instagram width='18' height='18' />\n                    </a>\n                  </li>\n                  <li>\n                    <a href={process.env.RAZZLE_SITE_PINTEREST} target='_blank' rel='noopener noreferrer' title='Follow House and Garden on Pinterest'>\n                      <Pinterest width='18' height='18' />\n                    </a>\n                  </li>\n                  <li>\n                    <a href={process.env.RAZZLE_SITE_TWITTER} target='_blank' rel='noopener noreferrer' title='Follow House and Garden on Twitter'>\n                      <Twitter width='18' height='18' fill='white' />\n                    </a>\n                  </li>\n                  <li>\n                    <a href={process.env.RAZZLE_SITE_YOUTUBE} target='_blank' rel='noopener noreferrer' title='Subscribe to House and Garden on Youtube'>\n                      <Youtube width='18' height='18' />\n                    </a>\n                  </li>\n                  <li>\n                    <a href={process.env.RAZZLE_SITE_TIKTOK} target='_blank' rel='noopener noreferrer' title='Subscribe to House and Garden on TikTok '>\n                      <TikTok width='18' height='18' />\n                    </a>\n                  </li>\n                </ul>\n              </nav>\n            </div>\n          </DesktopTablet>}\n        <div className='sidebar-search'>\n          <form action='/search' method='get'>\n            <input type='search' placeholder='Search House & Garden' name='q' id='q' />\n            <button><Search /></button>\n          </form>\n        </div>\n        <NotificationsBell />\n        {props.children}\n        {/* <div className='on-sale-now'>\n          <a href='/design-directory'>\n            <img src={designdirectoryImage} alt='Design Directory' />\n          </a>\n        </div> */}\n        {this.state.hasMounted &&\n          <MobileElse>\n            <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} slotId='mpu-1' targeting={{ mpu: '1' }} collapseEmptyDiv className='advert-sidebar' {...FORMATS.mpu} />\n          </MobileElse>}\n        <div className='newsletter-subscribe'>\n          <h5>Sign up to your weekly dose of inspiration</h5>\n          {showForm &&\n            <>\n              <form name='item-form' id='item-form' onSubmit={this.handleSubmit}>\n                {props.error &&\n                  <small style={{ color: 'red' }}>{this.props.error ? this.props.error : 'An error occured, please try again'}</small>}\n                <input type='text' name='firstName' placeholder='First Name' id='firstName' value={this.props.firstName} onChange={this.handleChange} required />\n                <input type='text' name='lastName' placeholder='Last Name' id='lastName' value={this.props.lastName} onChange={this.handleChange} />\n                <input type='email' name='email' placeholder='Email Address' id='email' value={this.props.email} onChange={this.handleChange} required />\n                <button type='submit'>Subscribe</button>\n              </form>\n            </>}\n          {submitting &&\n            <>\n              <Helmet title='Article' />\n              <Segment>\n                <Dimmer active>\n                  <Loader indeterminate size='large'>Submitting subscription.....</Loader>\n                </Dimmer>\n              </Segment>\n            </>}\n          {showThankYou &&\n            <>\n              <Helmet title='Article' />\n              <h3>Thank you for Subscribing!</h3>\n              <p>We have sent a confirmation email to the email address that you provided. Click on the link in the email to confirm your subscription to our newsletter.</p>\n            </>}\n        </div>\n        <div>\n          <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} slotId='mpu-2' targeting={{ mpu: '2' }} collapseEmptyDiv className='advert-sidebar' {...FORMATS.mpu2} />\n        </div>\n        <div className='sidebar-articles'>\n          <MostReadArticles section={props.section} className='side-articles' noImage={NoImage} contentKey={this.props.contentKey} />\n        </div>\n        <>\n          {this.state.hasMounted &&\n            <Desktop>\n              <Sticky bottomBoundary='#sidebar' top={122}>\n                <Ad\n                  isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} slotId='halfpage-1' targeting={{ halfpage: '1' }} collapseEmptyDiv className='advert-sidebar'\n                  desktop={[[300, 600]]} tablet={[[300, 600]]} mobile={[]}\n                />\n              </Sticky>\n            </Desktop>}\n          {this.state.hasMounted &&\n            <Tablet>\n              <Ad\n                isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} slotId='halfpage-1' targeting={{ halfpage: '1' }} collapseEmptyDiv className='advert-sidebar'\n                desktop={[[300, 600]]} tablet={[[300, 600]]} mobile={[]}\n              />\n            </Tablet>}\n          {/* Disabled until further notice\n          <Mobile>\n            <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} targeting={{halfpage: '1'}} collapseEmptyDiv className='advert-sidebar'\n              mobile={[]} />\n          </Mobile>\n          */}\n        </>\n      </aside>\n    )\n  }\n}\nconst mapStateToProps = (state) => (Object.assign({}, state.subscribe))\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({\n  subscribeNewsletter,\n  updateForm,\n  reinitialize\n}, dispatch)\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Sidebar)\n","var cssUnit = {\n    cm: true,\n    mm: true,\n    in: true,\n    px: true,\n    pt: true,\n    pc: true,\n    em: true,\n    ex: true,\n    ch: true,\n    rem: true,\n    vw: true,\n    vh: true,\n    vmin: true,\n    vmax: true,\n    \"%\": true,\n};\n/**\n * If size is a number, append px to the value as default unit.\n * If size is a string, validate against list of valid units.\n * If unit is valid, return size as is.\n * If unit is invalid, console warn issue, replace with px as the unit.\n *\n * @param {(number | string)} size\n * @return {LengthObject} LengthObject\n */\nexport function parseLengthAndUnit(size) {\n    if (typeof size === \"number\") {\n        return {\n            value: size,\n            unit: \"px\",\n        };\n    }\n    var value;\n    var valueString = (size.match(/^[0-9.]*/) || \"\").toString();\n    if (valueString.includes(\".\")) {\n        value = parseFloat(valueString);\n    }\n    else {\n        value = parseInt(valueString, 10);\n    }\n    var unit = (size.match(/[^0-9]*$/) || \"\").toString();\n    if (cssUnit[unit]) {\n        return {\n            value: value,\n            unit: unit,\n        };\n    }\n    console.warn(\"React Spinners: \".concat(size, \" is not a valid css value. Defaulting to \").concat(value, \"px.\"));\n    return {\n        value: value,\n        unit: \"px\",\n    };\n}\n/**\n * Take value as an input and return valid css value\n *\n * @param {(number | string)} value\n * @return {string} valid css value\n */\nexport function cssValue(value) {\n    var lengthWithunit = parseLengthAndUnit(value);\n    return \"\".concat(lengthWithunit.value).concat(lengthWithunit.unit);\n}\n","export var createAnimation = function (loaderName, frames, suffix) {\n    var animationName = \"react-spinners-\".concat(loaderName, \"-\").concat(suffix);\n    if (typeof window == \"undefined\" || !window.document) {\n        return animationName;\n    }\n    var styleEl = document.createElement(\"style\");\n    document.head.appendChild(styleEl);\n    var styleSheet = styleEl.sheet;\n    var keyFrames = \"\\n    @keyframes \".concat(animationName, \" {\\n      \").concat(frames, \"\\n    }\\n  \");\n    if (styleSheet) {\n        styleSheet.insertRule(keyFrames, 0);\n    }\n    return animationName;\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nimport * as React from \"react\";\nimport { cssValue } from \"./helpers/unitConverter\";\nimport { createAnimation } from \"./helpers/animation\";\nvar pulse = createAnimation(\"PulseLoader\", \"0% {transform: scale(1); opacity: 1} 45% {transform: scale(0.1); opacity: 0.7} 80% {transform: scale(1); opacity: 1}\", \"pulse\");\nfunction PulseLoader(_a) {\n    var _b = _a.loading, loading = _b === void 0 ? true : _b, _c = _a.color, color = _c === void 0 ? \"#000000\" : _c, _d = _a.speedMultiplier, speedMultiplier = _d === void 0 ? 1 : _d, _e = _a.cssOverride, cssOverride = _e === void 0 ? {} : _e, _f = _a.size, size = _f === void 0 ? 15 : _f, _g = _a.margin, margin = _g === void 0 ? 2 : _g, additionalprops = __rest(_a, [\"loading\", \"color\", \"speedMultiplier\", \"cssOverride\", \"size\", \"margin\"]);\n    var wrapper = __assign({ display: \"inherit\" }, cssOverride);\n    var style = function (i) {\n        return {\n            backgroundColor: color,\n            width: cssValue(size),\n            height: cssValue(size),\n            margin: cssValue(margin),\n            borderRadius: \"100%\",\n            display: \"inline-block\",\n            animation: \"\".concat(pulse, \" \").concat(0.75 / speedMultiplier, \"s \").concat((i * 0.12) / speedMultiplier, \"s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08)\"),\n            animationFillMode: \"both\",\n        };\n    };\n    if (!loading) {\n        return null;\n    }\n    return (React.createElement(\"span\", __assign({ style: wrapper }, additionalprops),\n        React.createElement(\"span\", { style: style(1) }),\n        React.createElement(\"span\", { style: style(2) }),\n        React.createElement(\"span\", { style: style(3) })));\n}\nexport default PulseLoader;\n","import React, { Component, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { bindActionCreators } from 'redux'\nimport { connect } from 'react-redux'\nimport { Dimmer, Loader, Segment } from 'semantic-ui-react'\nimport { PulseLoader } from 'react-spinners'\nimport 'semantic-ui-css/components/dimmer.min.css'\nimport 'semantic-ui-css/components/loader.min.css'\nimport 'semantic-ui-css/components/segment.min.css'\nimport qs from 'qs'\nimport Helmet from 'react-helmet'\n\nimport Ad from '../components/Ad'\nimport FORMATS from '../components/AdFormats'\nimport { searchArticles, searchArticlesMore } from '../../store/search'\nimport IonArticle from 'ion-article'\nimport noImage from '../static/no-image.png'\nimport NoResults from '../static/icons/no-search-results-v2.svg'\nimport Sidebar from '../components/Sidebar'\nimport ArticleCard from '../components/ArticleCard'\nimport { Search } from 'ion-icon'\nimport MagazineCover from '../components/MagazineCover'\nimport { Mobile, DesktopTablet } from 'ion-media'\n\nexport class SearchPage extends Component {\n  constructor () {\n    super()\n    this.state = {\n      isHidden: false\n    }\n    this.page = 0\n    this.index = 0\n    this.pageSize = 15\n    this.handleViewMore = this.handleViewMore.bind(this)\n  }\n\n  componentDidUpdate (prevProps) {\n    // Re-fetch articles when the section changes\n    if (prevProps.query !== this.props.query) {\n      this.props.searchArticles(this.props.query, this.index, this.pageSize)\n    }\n  }\n\n  UNSAFE_componentWillMount () {\n    // Fetch the first time this component is mounted\n    const data = this.props.articles\n    const lastFetch = new Date(this.props.lastFetch || 0)\n    const now = new Date()\n    this.params = !this.props.query ? qs.parse(this.props.location.search, { ignoreQueryPrefix: true }) : { q: this.props.query }\n    this.page = this.params.page || 1\n    if (!data || now - lastFetch > 1000) {\n      this.props.searchArticles(this.params.q, this.index, this.pageSize)\n    }\n  }\n\n  componentDidMount () {\n    // Display the server-side view more button\n    this.setState({\n      isHidden: !this.state.isHidden\n    })\n  }\n\n  handleViewMore () {\n    const initialArticles = Math.max(this.index, 0)\n    const alreadyFetchedArticles = (Math.max(this.page, 0) * this.pageSize)\n    this.props.searchArticlesMore(this.params.q, initialArticles + alreadyFetchedArticles, this.pageSize)\n    this.page++\n  }\n\n  render () {\n    if (this.props.isEmpty || this.props.hasError) {\n      return (\n        <div className='wrapper no-results'>\n          <Ad path={`/${process.env.RAZZLE_DFP_CODE}/search`} slotId='leaderboard-1' targeting={{ leaderboard: '1' }} className='advert-leaderboard-1' {...FORMATS.leaderboard} />\n          <img src={NoResults} alt='No search results' />\n          <h1>Nothing to see here</h1>\n          <div>\n            <p>Your search for <strong>{this.props.query}</strong> returned no results.</p>\n          </div>\n          <div className='no-results-search'>\n            <form action='/search' method='get'>\n              <input type='search' placeholder='Search House & Garden' name='q' id='q' />\n              <button><Search /></button>\n            </form>\n          </div>\n          <Ad path={`/${process.env.RAZZLE_DFP_CODE}/search`} slotId='leaderboard-3' targeting={{ leaderboard: '3' }} className='advert-leaderboard-3' {...FORMATS.leaderboard} />\n        </div>\n      )\n    }\n    if (this.props.articles && this.props.articles.length && this.props.hasFetched) {\n      const articles = this.props.articles.map(article => new IonArticle(article))\n      return (\n        <div className='wrapper'>\n          <Ad path={`/${process.env.RAZZLE_DFP_CODE}/search`} slotId='leaderboard-1' targeting={{ leaderboard: '1' }} className='advert-leaderboard-1' {...FORMATS.leaderboard} />\n          <h1>Search Results for <em>{this.props.query}</em></h1>\n          <div className='wrapper article-listing'>\n            <div className='article-list' itemType='http://schema.org/ItemList'>\n              {articles.map((article, index) => {\n                return (\n                  <Fragment key={article.contentKey}>\n                    {index <= 2 && (\n                      <ArticleCard article={article} noImage={noImage} />\n                    )}\n                    {index > 2 && (\n                      <ArticleCard article={article} noImage={noImage} />\n                    )}\n                    {(index === 2) && (\n                      <Mobile>\n                        <MagazineCover />\n                      </Mobile>\n                    )}\n                  </Fragment>\n                )\n              })}\n              {this.props.hasMore && (\n                <div id='buttonContainer' className='more-from-btn noScript'>\n                  <>\n                    <PulseLoader color='#B10015' loading={this.props.isLoadingMore} margin='10px' />\n                    <button id='viewMoreButton' onClick={this.handleViewMore}> View More</button>\n                  </>\n                  <Helmet>\n                    <link rel='canonical' itemprop='url' href={process.env.RAZZLE_SITE_URL + this.props.location.pathname + '?query=' + this.props.query} />\n                  </Helmet>\n                </div>\n              )}\n              {this.props.children}\n            </div>\n            <Sidebar section={this.props.section}>\n              <DesktopTablet>\n                <MagazineCover />\n              </DesktopTablet>\n            </Sidebar>\n          </div>\n          <Ad path={`/${process.env.RAZZLE_DFP_CODE}/search`} slotId='leaderboard-3' targeting={{ leaderboard: '3' }} className='advert-leaderboard-3' {...FORMATS.leaderboard} />\n        </div>\n      )\n    } else {\n      return (\n        <Segment>\n          <Dimmer active>\n            <Loader indeterminate size='large'>Loading...</Loader>\n          </Dimmer>\n        </Segment>\n      )\n    }\n  }\n}\n\nSearchPage.propTypes = {\n  searchArticles: PropTypes.func.isRequired,\n  query: PropTypes.string\n}\n\nSearchPage.defaultProps = {\n  articles: {}\n}\n\nconst mapStateToProps = (state) => (state.search)\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ searchArticles, searchArticlesMore }, dispatch)\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SearchPage)\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-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\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\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++], props[key]);\n  return O;\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, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now();\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n  }\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 (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\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 = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (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","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\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","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n  var Symbol = getBuiltIn('Symbol');\n  var SymbolPrototype = Symbol && Symbol.prototype;\n  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n    // `Symbol.prototype[@@toPrimitive]` method\n    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n    // eslint-disable-next-line no-unused-vars -- required for .length\n    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n      return call(valueOf, this);\n    }, { arity: 1 });\n  }\n};\n","module.exports = {};\n","var classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\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(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","import React from 'react'\nimport { HagDesktop, defaultWidth } from 'ion-media'\nimport Ad from './Ad'\nimport FORMATS from './AdFormats'\n\nconst WingBanners = ({ useSmall, isConnected, location, onSlotRenderEndedLeft, onSlotRenderEndedRight }) => {\n  return (\n    <span>\n      {process.env.NODE_ENV === 'production' &&\n        <HagDesktop values={{ deviceWidth: defaultWidth }}>\n          <div className={'wing-banners horizontal-center' + (useSmall ? ' reduced-header' : '')}>\n            <Ad isConnected={isConnected} path={`/${process.env.RAZZLE_DFP_CODE}${location.pathname === '/' ? '/homepage' : location.pathname}`} slotId='wingbanner-left' targeting={{ wingbanner: 'left' }} onSlotRenderEnded={onSlotRenderEndedLeft} collapseEmptyDiv className='advert-wingbanner-left' {...FORMATS.wingbanner} />\n            <Ad isConnected={isConnected} path={`/${process.env.RAZZLE_DFP_CODE}${location.pathname === '/' ? '/homepage' : location.pathname}`} slotId='wingbanner-right' targeting={{ wingbanner: 'right' }} onSlotRenderEnded={onSlotRenderEndedRight} collapseEmptyDiv className='advert-wingbanner-right' {...FORMATS.wingbanner} />\n          </div>\n        </HagDesktop>}\n    </span>\n  )\n}\n\nexport default WingBanners\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 isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\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","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","/* 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 fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  'for': function (key) {\n    var string = toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = getBuiltIn('Symbol')(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  }\n});\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\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","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","import React from 'react'\nimport { Link } from 'react-router-dom'\nimport { ImageOrNoImage } from 'ion-image'\n\nconst ArticleCard = ({ article, noImage, lazy }) => (\n  <article key={article.contentKey} aria-label='article'>\n    <Link to={'/' + article.getCanonicalUri()}>\n      <div className='article-list-img'>\n        <ImageOrNoImage shape='square' width={400} image={article.image} alt={article.headline} noImage={noImage} />\n      </div>\n      <h4 role='heading'>{article.headline}\n      </h4>\n      {(article.sponsoredIndicator === 'SPONSORED' || article.sponsoredIndicator === 'SPONSORED_EXPIRED') &&\n        <small className='sponsored'>Sponsored</small>}\n      {(article.sponsoredIndicator === 'NATIVE' || article.sponsoredIndicator === 'NATIVE_EXPIRED') &&\n        <small className='native'>Partnered</small>}\n      <p>{article.abstract}</p>\n    </Link>\n  </article>\n)\n\nexport default ArticleCard\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","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 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","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\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.dontCallGetSet - 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] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\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    defineBuiltIn(target, key, sourceProperty, options);\n  }\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","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n  return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\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 = uncurryThis([].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);\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(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(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","var call = require('../internals/function-call');\nvar 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 $TypeError = TypeError;\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 = call(exoticToPrim, 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 getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\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","// import styled, { system } from '@xstyled/styled-components'\nimport { Link } from 'react-router-dom'\n\nconst StyledLink = ({ className, to, keyProp, replace, onClick, children }) => <Link key={keyProp} to={to} replace={replace} onClick={onClick} className={className}>{children}</Link>\n\n// const StyledLink = styled(MyLink)`\n//   ${system}\n// `\n\nexport default StyledLink\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n  all: documentAll,\n  IS_HTMLDDA: IS_HTMLDDA\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","// `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 uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\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 : toString(arguments[0]);\n    var result = isPrototypeOf(SymbolPrototype, this)\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\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  SymbolWrapper.prototype = SymbolPrototype;\n  SymbolPrototype.constructor = SymbolWrapper;\n\n  var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n  var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n  var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  var replace = uncurryThis(''.replace);\n  var stringSlice = uncurryThis(''.slice);\n\n  defineBuiltInAccessor(SymbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = thisSymbolValue(this);\n      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n      var string = symbolDescriptiveString(symbol);\n      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, constructor: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","var now = require('performance-now')\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $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 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 NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\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 baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('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// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = getReplacerFunction(replacer);\n  if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n  args[1] = function (key, value) {\n    // some old implementations (like WebKit) could pass numbers as keys\n    if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n    if (!isSymbol(value)) return value;\n  };\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\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 makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n"],"sourceRoot":""}