(function(n,e){typeof exports==="object"&&typeof module!=="undefined"?module.exports=e():typeof define==="function"&&define.amd?define(e):n.Dexie=e();if(!n.Dexie){n.Dexie=e()}})(this,function(){"use strict";var n=Object.keys;var e=Array.isArray;var t=typeof self!=="undefined"?self:typeof window!=="undefined"?window:global;function r(e,t){if(typeof t!=="object")return e;n(t).forEach(function(n){e[n]=t[n]});return e}var i=Object.getPrototypeOf;var o={}.hasOwnProperty;function u(n,e){return o.call(n,e)}function a(e,t){if(typeof t==="function")t=t(i(e));if(typeof t!=="object")return;n(t).forEach(function(n){c(e,n,t[n])})}var s=Object.defineProperty;function c(n,e,t,i){s(n,e,r(t&&u(t,"get")&&typeof t.get==="function"?{get:t.get,set:t.set,configurable:true}:{value:t,configurable:true,writable:true},i))}function f(n){return{from:function(e){n.prototype=Object.create(e.prototype);c(n.prototype,"constructor",n);return{extend:a.bind(null,n.prototype)}}}}var l=Object.getOwnPropertyDescriptor;function h(n,e){var t=l(n,e),r;return t||(r=i(n))&&h(r,e)}var v=[].slice;function d(n,e,t){return v.call(n,e,t)}function p(n,e){return e(n)}function y(n){if(!n)throw new Error("Assertion Failed")}function m(n){if(t.setImmediate)setImmediate(n);else setTimeout(n,0)}function g(n,e){return n.reduce(function(n,t,r){var i=e(t,r);if(i)n[i[0]]=i[1];return n},{})}function b(n,e){return function(){try{n.apply(this,arguments)}catch(n){e(n)}}}function w(n,e,t){try{n.apply(null,t)}catch(n){e&&e(n)}}function _(n,e){if(u(n,e))return n[e];if(!e)return n;if(typeof e!=="string"){var t=[];for(var r=0,i=e.length;r=0){t=n}else{t=n.constructor?Object.create(n.constructor.prototype):{};for(var o in n){if(u(n,o)){t[o]=O(n[o])}}}return t}function S(e,t,r,i){r=r||{};i=i||"";n(e).forEach(function(n){if(!u(t,n))r[i+n]=undefined;else{var o=e[n],a=t[n];if(typeof o==="object"&&typeof a==="object"&&o&&a&&""+o.constructor===""+a.constructor)S(o,a,r,i+n+".");else if(o!==a)r[i+n]=t[n]}});n(t).forEach(function(n){if(!u(e,n)){r[i+n]=t[n]}});return r}var I=typeof Symbol!=="undefined"&&Symbol.iterator;var D=I?function(n){var e;return n!=null&&(e=n[I])&&e.apply(n)}:function(){return null};var C={};function K(n){var t,r,i,o;if(arguments.length===1){if(e(n))return n.slice();if(this===C&&typeof n==="string")return[n];if(o=D(n)){r=[];while(i=o.next(),!i.done)r.push(i.value);return r}if(n==null)return[n];t=n.length;if(typeof t==="number"){r=new Array(t);while(t--)r[t]=n[t];return r}return[n]}t=arguments.length;r=new Array(t);while(t--)r[t]=arguments[t];return r}var T=typeof location!=="undefined"&&/^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);function B(n,e){T=n;F=e}var F=function(){return true};var M=!new Error("").stack;function N(){"use strict";if(M)try{N.arguments;throw new Error}catch(n){return n}return new Error}function q(n,e){var t=n.stack;if(!t)return"";e=e||0;if(t.indexOf(n.name)===0)e+=(n.name+n.message).split("\n").length;return t.split("\n").slice(e).filter(F).map(function(n){return"\n"+n}).join("")}function R(n,e){return function(){console.warn(n+" is deprecated. See https://github.com/dfahlander/Dexie.js/wiki/Deprecations. "+q(N(),1));return e.apply(this,arguments)}}var U=["Modify","Bulk","OpenFailed","VersionChange","Schema","Upgrade","InvalidTable","MissingAPI","NoSuchDatabase","InvalidArgument","SubTransaction","Unsupported","Internal","DatabaseClosed","PrematureCommit","ForeignAwait"];var V=["Unknown","Constraint","Data","TransactionInactive","ReadOnly","Version","NotFound","InvalidState","InvalidAccess","Abort","Timeout","QuotaExceeded","Syntax","DataClone"];var z=U.concat(V);var L={VersionChanged:"Database version changed by other database connection",DatabaseClosed:"Database has been closed",Abort:"Transaction aborted",TransactionInactive:"Transaction has already completed or failed"};function W(n,e){this._e=N();this.name=n;this.message=e}f(W).from(Error).extend({stack:{get:function(){return this._stack||(this._stack=this.name+": "+this.message+q(this._e,2))}},toString:function(){return this.name+": "+this.message}});function Q(n,e){return n+". Errors: "+e.map(function(n){return n.toString()}).filter(function(n,e,t){return t.indexOf(n)===e}).join("\n")}function H(n,e,t,r){this._e=N();this.failures=e;this.failedKeys=r;this.successCount=t}f(H).from(W);function G(n,e){this._e=N();this.name="BulkError";this.failures=e;this.message=Q(n,e)}f(G).from(W);var J=z.reduce(function(n,e){return n[e]=e+"Error",n},{});var Y=W;var $=z.reduce(function(n,e){var t=e+"Error";function r(n,r){this._e=N();this.name=t;if(!n){this.message=L[e]||t;this.inner=null}else if(typeof n==="string"){this.message=n;this.inner=r||null}else if(typeof n==="object"){this.message=n.name+" "+n.message;this.inner=n}}f(r).from(Y);n[e]=r;return n},{});$.Syntax=SyntaxError;$.Type=TypeError;$.Range=RangeError;var X=V.reduce(function(n,e){n[e+"Error"]=$[e];return n},{});function Z(n,e){if(!n||n instanceof W||n instanceof TypeError||n instanceof SyntaxError||!n.name||!X[n.name])return n;var t=new X[n.name](e||n.message,n);if("stack"in n){c(t,"stack",{get:function(){return this.inner.stack}})}return t}var nn=z.reduce(function(n,e){if(["Syntax","Type","Range"].indexOf(e)===-1)n[e+"Error"]=$[e];return n},{});nn.ModifyError=H;nn.DexieError=W;nn.BulkError=G;function en(){}function tn(n){return n}function rn(n,e){if(n==null||n===tn)return e;return function(t){return e(n(t))}}function on(n,e){return function(){n.apply(this,arguments);e.apply(this,arguments)}}function un(n,e){if(n===en)return e;return function(){var t=n.apply(this,arguments);if(t!==undefined)arguments[0]=t;var r=this.onsuccess,i=this.onerror;this.onsuccess=null;this.onerror=null;var o=e.apply(this,arguments);if(r)this.onsuccess=this.onsuccess?on(r,this.onsuccess):r;if(i)this.onerror=this.onerror?on(i,this.onerror):i;return o!==undefined?o:t}}function an(n,e){if(n===en)return e;return function(){n.apply(this,arguments);var t=this.onsuccess,r=this.onerror;this.onsuccess=this.onerror=null;e.apply(this,arguments);if(t)this.onsuccess=this.onsuccess?on(t,this.onsuccess):t;if(r)this.onerror=this.onerror?on(r,this.onerror):r}}function sn(n,e){if(n===en)return e;return function(t){var i=n.apply(this,arguments);r(t,i);var o=this.onsuccess,u=this.onerror;this.onsuccess=null;this.onerror=null;var a=e.apply(this,arguments);if(o)this.onsuccess=this.onsuccess?on(o,this.onsuccess):o;if(u)this.onerror=this.onerror?on(u,this.onerror):u;return i===undefined?a===undefined?undefined:a:r(i,a)}}function cn(n,e){if(n===en)return e;return function(){if(e.apply(this,arguments)===false)return false;return n.apply(this,arguments)}}function fn(n,e){if(n===en)return e;return function(){var t=n.apply(this,arguments);if(t&&typeof t.then==="function"){var r=this,i=arguments.length,o=new Array(i);while(i--)o[i]=arguments[i];return t.then(function(){return e.apply(r,o)})}return e.apply(this,arguments)}}var ln={};var hn=100;var vn=20;var dn=7;var pn=function(){try{return new Function("let F=async ()=>{},p=F();return [p,Object.getPrototypeOf(p),Promise.resolve(),F.constructor];")()}catch(e){var n=t.Promise;return n?[n.resolve(),n.prototype,n.resolve()]:[]}}();var yn=pn[0];var mn=pn[1];var gn=pn[2];var bn=mn&&mn.then;var wn=yn&&yn.constructor;var _n=pn[3];var kn=!!gn;var xn=false;var jn=gn?function(){gn.then(Hn)}:t.setImmediate?setImmediate.bind(null,Hn):t.MutationObserver?function(){var n=document.createElement("div");new MutationObserver(function(){Hn();n=null}).observe(n,{attributes:true});n.setAttribute("i","1")}:function(){setTimeout(Hn,0)};var Pn=function(n,e){Tn.push([n,e]);if(An){jn();An=false}};var En=true;var An=true;var On=[];var Sn=[];var In=null;var Dn=tn;var Cn={id:"global",global:true,ref:0,unhandleds:[],onunhandled:_e,pgp:false,env:{},finalize:function(){this.unhandleds.forEach(function(n){try{_e(n[0],n[1])}catch(n){}})}};var Kn=Cn;var Tn=[];var Bn=0;var Fn=[];function Mn(n){if(typeof this!=="object")throw new TypeError("Promises must be constructed via new");this._listeners=[];this.onuncatched=en;this._lib=false;var e=this._PSD=Kn;if(T){this._stackHolder=N();this._prev=null;this._numPrev=0}if(typeof n!=="function"){if(n!==ln)throw new TypeError("Not a function");this._state=arguments[1];this._value=arguments[2];if(this._state===false)Un(this,this._value);return}this._state=null;this._value=null;++e.ref;Rn(this,n)}var Nn={get:function(){var n=Kn,e=ue;function t(t,r){var i=this;var o=!n.global&&(n!==Kn||e!==ue);if(o)fe();var u=new Mn(function(e,u){zn(i,new qn(ge(t,n,o),ge(r,n,o),e,u,n))});T&&Qn(u,this);return u}t.prototype=ln;return t},set:function(n){c(this,"then",n&&n.prototype===ln?Nn:{get:function(){return n},set:Nn.set})}};a(Mn.prototype,{then:Nn,_then:function(n,e){zn(this,new qn(null,null,n,e,Kn))},catch:function(n){if(arguments.length===1)return this.then(null,n);var e=arguments[0],t=arguments[1];return typeof e==="function"?this.then(null,function(n){return n instanceof e?t(n):ne(n)}):this.then(null,function(n){return n&&n.name===e?t(n):ne(n)})},finally:function(n){return this.then(function(e){n();return e},function(e){n();return ne(e)})},stack:{get:function(){if(this._stack)return this._stack;try{xn=true;var n=Wn(this,[],vn);var e=n.join("\nFrom previous: ");if(this._state!==null)this._stack=e;return e}finally{xn=false}}},timeout:function(n,e){var t=this;return n0){n=Tn;Tn=[];t=n.length;for(e=0;e0);En=true;An=true}function Yn(){var n=On;On=[];n.forEach(function(n){n._PSD.onunhandled.call(null,n._value,n)});var e=Fn.slice(0);var t=e.length;while(t)e[--t]()}function $n(n){function e(){n();Fn.splice(Fn.indexOf(e),1)}Fn.push(e);++Bn;Pn(function(){if(--Bn===0)Yn()},[])}function Xn(n){if(!On.some(function(e){return e._value===n._value}))On.push(n)}function Zn(n){var e=On.length;while(e)if(On[--e]._value===n._value){On.splice(e,1);return}}function ne(n){return new Mn(ln,false,n)}function ee(n,e){var t=Kn;return function(){var r=Gn(),i=Kn;try{de(t,true);return n.apply(this,arguments)}catch(n){e&&e(n)}finally{de(i,false);if(r)Jn()}}}var te={awaits:0,echoes:0,id:0};var re=0;var ie=[];var oe=0;var ue=0;var ae=0;function se(n,e,t,i){var o=Kn,u=Object.create(o);u.parent=o;u.ref=0;u.global=false;u.id=++ae;var a=Cn.env;u.env=kn?{Promise:Mn,PromiseProp:{value:Mn,configurable:true,writable:true},all:Mn.all,race:Mn.race,resolve:Mn.resolve,reject:Mn.reject,nthen:be(a.nthen,u),gthen:be(a.gthen,u)}:{};if(e)r(u,e);++o.ref;u.finalize=function(){--this.parent.ref||this.parent.finalize()};var s=ye(u,n,t,i);if(u.ref===0)u.finalize();return s}function ce(){if(!te.id)te.id=++re;++te.awaits;te.echoes+=dn;return te.id}function fe(n){if(!te.awaits||n&&n!==te.id)return;if(--te.awaits===0)te.id=0;te.echoes=te.awaits*dn}function le(n){if(te.echoes&&n&&n.constructor===wn){ce();return n.then(function(n){fe();return n},function(n){fe();return ke(n)})}return n}function he(n){++ue;if(!te.echoes||--te.echoes===0){te.echoes=te.id=0}ie.push(Kn);de(n,true)}function ve(){var n=ie[ie.length-1];ie.pop();de(n,false)}function de(n,e){var r=Kn;if(e?te.echoes&&(!oe++||n!==Kn):oe&&(!--oe||n!==Kn)){me(e?he.bind(null,n):ve)}if(n===Kn)return;Kn=n;if(r===Cn)Cn.env=pe();if(kn){var i=Cn.env.Promise;var o=n.env;mn.then=o.nthen;i.prototype.then=o.gthen;if(r.global||n.global){Object.defineProperty(t,"Promise",o.PromiseProp);i.all=o.all;i.race=o.race;i.resolve=o.resolve;i.reject=o.reject}}}function pe(){var n=t.Promise;return kn?{Promise:n,PromiseProp:Object.getOwnPropertyDescriptor(t,"Promise"),all:n.all,race:n.race,resolve:n.resolve,reject:n.reject,nthen:mn.then,gthen:n.prototype.then}:{}}function ye(n,e,t,r,i){var o=Kn;try{de(n,true);return e(t,r,i)}finally{de(o,false)}}function me(n){bn.call(yn,n)}function ge(n,e,t){return typeof n!=="function"?n:function(){var r=Kn;if(t)ce();de(e,true);try{return n.apply(this,arguments)}finally{de(r,false)}}}function be(n,e){return function(t,r){return n.call(this,ge(t,e,false),ge(r,e,false))}}var we="unhandledrejection";function _e(n,e){var i;try{i=e.onuncatched(n)}catch(n){}if(i!==false)try{var o,u={promise:e,reason:n};if(t.document&&document.createEvent){o=document.createEvent("Event");o.initEvent(we,true,true);r(o,u)}else if(t.CustomEvent){o=new CustomEvent(we,{detail:u});r(o,u)}if(o&&t.dispatchEvent){dispatchEvent(o);if(!t.PromiseRejectionEvent&&t.onunhandledrejection)try{t.onunhandledrejection(o)}catch(n){}}if(!o.defaultPrevented){console.warn("Unhandled rejection: "+(n.stack||n))}}catch(n){}}var ke=Mn.reject;function xe(t){var r={};var i=function(n,e){if(e){var i=arguments.length,o=new Array(i-1);while(--i)o[i-1]=arguments[i];r[n].subscribe.apply(null,o);return t}else if(typeof n==="string"){return r[n]}};i.addEventType=a;for(var o=1,u=arguments.length;o0)console.warn("Another connection wants to upgrade database '"+z.name+"'. Closing db now to resume the upgrade.");else console.warn("Another connection wants to delete database '"+z.name+"'. Closing db now to resume the delete request.");z.close()});z.on("blocked",function(n){if(!n.newVersion||n.newVersionn});u.forEach(function(n){r.push(function(){var r=x;var i=n._cfg.dbschema;Ln(r,t);Ln(i,t);x=z._dbSchema=i;var u=hn(r,i);u.add.forEach(function(n){vn(t,n[0],n[1].primKey,n[1].indexes)});u.change.forEach(function(n){if(n.recreate){throw new $.Upgrade("Not yet support for changing primary key")}else{var e=t.objectStore(n.name);n.add.forEach(function(n){yn(e,n)});n.change.forEach(function(n){e.deleteIndex(n.name);yn(e,n)});n.del.forEach(function(n){e.deleteIndex(n)})}});if(n._cfg.contentUpgrade){o=true;return Mn.follow(function(){n._cfg.contentUpgrade(e)})}});r.push(function(e){if(!o||!Ce){var t=n._cfg.dbschema;pn(t,e)}})});function a(){return r.length?Mn.resolve(r.shift()(e.idbtrans)).then(a):Mn.resolve()}return a().then(function(){dn(x,t)})}function hn(n,e){var t={del:[],add:[],change:[]};for(var r in n){if(!e[r])t.del.push(r)}for(r in e){var i=n[r],o=e[r];if(!i){t.add.push([r,o])}else{var u={name:r,def:o,recreate:false,del:[],add:[],change:[]};if(i.primKey.src!==o.primKey.src){u.recreate=true;t.change.push(u)}else{var a=i.idxByName;var s=o.idxByName;for(var c in a){if(!s[c])u.del.push(c)}for(c in s){var f=a[c],l=s[c];if(!f)u.add.push(l);else if(f.src!==l.src)u.change.push(l)}if(u.del.length>0||u.add.length>0||u.change.length>0){t.change.push(u)}}}}return t}function vn(n,e,t,r){var i=n.db.createObjectStore(e,t.keyPath?{keyPath:t.keyPath,autoIncrement:t.auto}:{autoIncrement:t.auto});r.forEach(function(n){yn(i,n)});return i}function dn(e,t){n(e).forEach(function(n){if(!t.db.objectStoreNames.contains(n)){vn(t,n,e[n].primKey,e[n].indexes)}})}function pn(n,e){for(var t=0;tMath.pow(2,62)?0:n.oldVersion;cn(u/10,e,t,r)}},t);r.onsuccess=ee(function(){e=null;D=r.result;Ie.push(z);if(Y)zn();else if(D.objectStoreNames.length>0){try{Ln(x,D.transaction(He(D.objectStoreNames),U))}catch(n){}}D.onversionchange=ee(function(n){z._vcFired=true;z.on("versionchange").fire(n)});if(!X&&i!=="__dbnames"){Be.dbnames.put({name:i}).catch(en)}n()},t)})]).then(function(){M=[];return Mn.resolve(Fe.vip(z.on.ready.fire)).then(function n(){if(M.length>0){var e=M.reduce(fn,en);M=[];return Mn.resolve(Fe.vip(e)).then(n)}})}).finally(function(){M=null}).then(function(){F=false;return z}).catch(function(n){try{e&&e.abort()}catch(n){}F=false;z.close();B=n;return ke(B)}).finally(function(){q=true;n()})};this.close=function(){var n=Ie.indexOf(z);if(n>=0)Ie.splice(n,1);if(D){try{D.close()}catch(n){}D=null}h=false;B=new $.DatabaseClosed;if(F)Q(B);W=new Mn(function(n){L=n});J=new Mn(function(n,e){Q=e})};this.delete=function(){var n=arguments.length>0;return new Mn(function(e,t){if(n)throw new $.InvalidArgument("Arguments not allowed in db.delete()");if(F){W.then(r)}else{r()}function r(){z.close();var n=v.deleteDatabase(i);n.onsuccess=ee(function(){if(!X){Be.dbnames.delete(i).catch(en)}e()});n.onerror=Re(t);n.onblocked=Wn}})};this.backendDB=function(){return D};this.isOpen=function(){return D!==null};this.hasBeenClosed=function(){return B&&B instanceof $.DatabaseClosed};this.hasFailed=function(){return B!==null};this.dynamicallyOpened=function(){return Y};this.name=i;a(this,{tables:{get:function(){return n(I).map(function(n){return I[n]})}}});this.on=xe(this,"populate","blocked","versionchange",{ready:[fn,en]});this.on.ready.subscribe=p(this.on.ready.subscribe,function(n){return function(e,t){Fe.vip(function(){if(q){if(!B)Mn.resolve().then(e);if(t)n(e)}else if(M){M.push(e);if(t)n(e)}else{n(e);if(!t)n(function n(){z.on.ready.unsubscribe(e);z.on.ready.unsubscribe(n)})}})}});this.transaction=function(){var n=gn.apply(this,arguments);return this._transaction.apply(this,n)};function gn(n,e,t){var r=arguments.length;if(r<2)throw new $.InvalidArgument("Too few arguments");var i=new Array(r-1);while(--r)i[r-1]=arguments[r];t=i.pop();var o=E(i);return[n,o,t]}this._transaction=function(n,e,t){var r=Kn.trans;if(!r||r.db!==z||n.indexOf("!")!==-1)r=null;var i=n.indexOf("?")!==-1;n=n.replace("!","").replace("?","");try{var o=e.map(function(n){var e=n instanceof bn?n.name:n;if(typeof e!=="string")throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed");return e});if(n=="r"||n==U)n=U;else if(n=="rw"||n==V)n=V;else throw new $.InvalidArgument("Invalid transaction mode: "+n);if(r){if(r.mode===U&&n===V){if(i){r=null}else throw new $.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY")}if(r){o.forEach(function(n){if(r&&r.storeNames.indexOf(n)===-1){if(i){r=null}else throw new $.SubTransaction("Table "+n+" not included in parent transaction.")}})}if(i&&r&&!r.active){r=null}}}catch(n){return r?r._promise(null,function(e,t){t(n)}):ke(n)}return r?r._promise(n,u,"lock"):Kn.trans?ye(Kn.transless,function(){return z._whenReady(u)}):z._whenReady(u);function u(){return Mn.resolve().then(function(){var e=Kn.transless||Kn;var i=z._createTransaction(n,o,x,r);var u={trans:i,transless:e};if(r){i.idbtrans=r.idbtrans}else{i.create()}if(t.constructor===_n){ce()}var a;var s=Mn.follow(function(){a=t.call(i,i);if(a){if(a.constructor===wn){var n=fe.bind(null,null);a.then(n,n)}else if(typeof a.next==="function"&&typeof a.throw==="function"){a=Le(a)}}},u);return(a&&typeof a.then==="function"?Mn.resolve(a).then(function(n){return i.active?n:ke(new $.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn"))}):s.then(function(){return a})).then(function(n){if(r)i._resolve();return i._completion.then(function(){return n})}).catch(function(n){i._reject(n);return ke(n)})})}};this.table=function(n){if(!u(I,n)){throw new $.InvalidTable("Table "+n+" does not exist")}return I[n]};function bn(n,e,t){this.name=n;this.schema=e;this._tx=t;this.hook=I[n]?I[n].hook:xe(null,{creating:[un,en],reading:[rn,tn],updating:[sn,en],deleting:[an,en]})}function kn(n,e,t){return(t?Ve:Re)(function(t){n.push(t);e&&e()})}function xn(n,e,t,r,i){return new Mn(function(o,u){var a=t.length,s=a-1;if(a===0)return o();if(!r){for(var c=0;c=0})&&n.keyPath.every(function(n){return r.indexOf(n)>=0})})[0];if(i&&Ee!==Pe)return this.where(i.name).equals(i.keyPath.map(function(n){return t[n]}));if(!i)console.warn("The query "+JSON.stringify(t)+" on "+this.name+" would benefit of a "+("compound index ["+r.join("+")+"]"));var o=this.schema.idxByName;var u=r.reduce(function(n,e){return[n[0]||o[e],n[0]||!o[e]?Vn(n[1],function(n){return""+_(n,e)==""+t[e]}):n[1]]},[null,null]);var a=u[0];return a?this.where(a.name).equals(t[a.keyPath]).filter(u[1]):i?this.filter(u[1]):this.where(r).equals("")},count:function(n){return this.toCollection().count(n)},offset:function(n){return this.toCollection().offset(n)},limit:function(n){return this.toCollection().limit(n)},reverse:function(){return this.toCollection().reverse()},filter:function(n){return this.toCollection().and(n)},each:function(n){return this.toCollection().each(n)},toArray:function(n){return this.toCollection().toArray(n)},orderBy:function(n){return new En(new Pn(this,e(n)?"["+n.join("+")+"]":n))},toCollection:function(){return new En(new Pn(this))},mapToClass:function(n,e){this.schema.mappedClass=n;var t=Object.create(n.prototype);if(e){Ne(t,e)}this.schema.instanceTemplate=t;var r=function(e){if(!e)return e;var t=Object.create(n.prototype);for(var r in e)if(u(e,r))try{t[r]=e[r]}catch(n){}return t};if(this.schema.readHook){this.hook.reading.unsubscribe(this.schema.readHook)}this.schema.readHook=r;this.hook("reading",r);return n},defineClass:function(n){return this.mapToClass(Fe.defineClass(n),n)},bulkDelete:function(n){if(this.hook.deleting.fire===en){return this._idbstore(V,function(e,t,r,i){e(xn(r,i,n,false,en))})}else{return this.where(":id").anyOf(n).delete().then(function(){})}},bulkPut:function(n,e){var t=this;return this._idbstore(V,function(r,i,o){if(!o.keyPath&&!t.schema.primKey.auto&&!e)throw new $.InvalidArgument("bulkPut() with non-inbound keys requires keys array in second argument");if(o.keyPath&&e)throw new $.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys");if(e&&e.length!==n.length)throw new $.InvalidArgument("Arguments objects and keys must have the same length");if(n.length===0)return r();var u=function(n){if(s.length===0)r(n);else i(new G(t.name+".bulkPut(): "+s.length+" of "+f+" operations failed",s))};var a,s=[],c,f=n.length,l=t;if(t.hook.creating.fire===en&&t.hook.updating.fire===en){c=kn(s);for(var h=0,v=n.length;h=0;--i){var o=d[i];if(o==null||p[o]){t.push(n[i]);e&&r.push(o);if(o!=null)p[o]=null}}t.reverse();e&&r.reverse();return l.bulkAdd(t,r)}).then(function(n){var e=d[d.length-1];return e!=null?e:n});y.then(u).catch(G,function(n){s=s.concat(n.failures);u()}).catch(i)}},"locked")},bulkAdd:function(n,e){var t=this,r=this.hook.creating.fire;return this._idbstore(V,function(i,o,u,a){if(!u.keyPath&&!t.schema.primKey.auto&&!e)throw new $.InvalidArgument("bulkAdd() with non-inbound keys requires keys array in second argument");if(u.keyPath&&e)throw new $.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys");if(e&&e.length!==n.length)throw new $.InvalidArgument("Arguments objects and keys must have the same length");if(n.length===0)return i();function s(n){if(f.length===0)i(n);else o(new G(t.name+".bulkAdd(): "+f.length+" of "+v+" operations failed",f))}var c,f=[],l,h,v=n.length;if(r!==en){var d=u.keyPath,p;l=kn(f,null,true);h=qe(null);w(function(){for(var t=0,i=n.length;t0&&!this._locked()){var n=this._blockedFuncs.shift();try{ye(n[1],n[0])}catch(n){}}}return this},_locked:function(){return this._reculock&&Kn.lockOwnerFor!==this},create:function(n){var e=this;if(!this.mode)return this;y(!this.idbtrans);if(!n&&!D){switch(B&&B.name){case"DatabaseClosedError":throw new $.DatabaseClosed(B);case"MissingAPIError":throw new $.MissingAPI(B.message,B);default:throw new $.OpenFailed(B)}}if(!this.active)throw new $.TransactionInactive;y(this._completion._state===null);n=this.idbtrans=n||D.transaction(He(this.storeNames),this.mode);n.onerror=ee(function(t){ze(t);e._reject(n.error)});n.onabort=ee(function(t){ze(t);e.active&&e._reject(new $.Abort(n.error));e.active=false;e.on("abort").fire(t)});n.oncomplete=ee(function(){e.active=false;e._resolve()});return this},_promise:function(n,e,t){var r=this;if(n===V&&this.mode!==V)return ke(new $.ReadOnly("Transaction is readonly"));if(!this.active)return ke(new $.TransactionInactive);if(this._locked()){return new Mn(function(i,o){r._blockedFuncs.push([function(){r._promise(n,e,t).then(i,o)},Kn])})}else if(t){return se(function(){var n=new Mn(function(n,t){r._lock();var i=e(n,t,r);if(i&&i.then)i.then(n,t)});n.finally(function(){return r._unlock()});n._lib=true;return n})}else{var i=new Mn(function(n,t){var i=e(n,t,r);if(i&&i.then)i.then(n,t)});i._lib=true;return i}},_root:function(){return this.parent?this.parent._root():this},waitFor:function(n){var e=this._root();n=Mn.resolve(n);if(e._waitingFor){e._waitingFor=e._waitingFor.then(function(){return n})}else{e._waitingFor=n;e._waitingQueue=[];var t=e.idbtrans.objectStore(e.storeNames[0]);(function n(){++e._spinCount;while(e._waitingQueue.length)e._waitingQueue.shift()();if(e._waitingFor)t.get(-Infinity).onsuccess=n})()}var r=e._waitingFor;return new Mn(function(t,i){n.then(function(n){return e._waitingQueue.push(ee(t.bind(null,n)))},function(n){return e._waitingQueue.push(ee(i.bind(null,n)))}).finally(function(){if(e._waitingFor===r){e._waitingFor=null}})})},abort:function(){this.active&&this._reject(new $.Abort);this.active=false},tables:{get:R("Transaction.tables",function(){return I})},table:function(n){var e=z.table(n);return new bn(n,e.schema,this)}});function Pn(n,e,t){this._ctx={table:n,index:e===":id"?null:e,or:t}}a(Pn.prototype,function(){function n(n,e,t){var r=n instanceof Pn?new En(n):n;r._ctx.error=t?new t(e):new TypeError(e);return r}function e(n){return new En(n,function(){return m.only("")}).limit(0)}function t(n){return n==="next"?function(n){return n.toUpperCase()}:function(n){return n.toLowerCase()}}function r(n){return n==="next"?function(n){return n.toLowerCase()}:function(n){return n.toUpperCase()}}function i(n,e,t,r,i,o){var u=Math.min(n.length,r.length);var a=-1;for(var s=0;s=0)return n.substr(0,a)+e[a]+t.substr(a+1);return null}if(i(n[s],c)<0)a=s}if(u0){a=y}}if(a!==null){e(function(){n.continue(a+d)})}else{e(t)}return false}});return g}return{between:function(t,r,i,o){i=i!==false;o=o===true;try{if(Tn(t,r)>0||Tn(t,r)===0&&(i||o)&&!(i&&o))return e(this);return new En(this,function(){return m.bound(t,r,!i,!o)})}catch(e){return n(this,Oe)}},equals:function(n){return new En(this,function(){return m.only(n)})},above:function(n){return new En(this,function(){return m.lowerBound(n,true)})},aboveOrEqual:function(n){return new En(this,function(){return m.lowerBound(n)})},below:function(n){return new En(this,function(){return m.upperBound(n,true)})},belowOrEqual:function(n){return new En(this,function(){return m.upperBound(n)})},startsWith:function(e){if(typeof e!=="string")return n(this,Se);return this.between(e,e+Pe,true,true)},startsWithIgnoreCase:function(n){if(n==="")return this.startsWith(n);return o(this,function(n,e){return n.indexOf(e[0])===0},[n],Pe)},equalsIgnoreCase:function(n){return o(this,function(n,e){return n===e[0]},[n],"")},anyOfIgnoreCase:function(){var n=K.apply(C,arguments);if(n.length===0)return e(this);return o(this,function(n,e){return e.indexOf(n)!==-1},n,"")},startsWithAnyOfIgnoreCase:function(){var n=K.apply(C,arguments);if(n.length===0)return e(this);return o(this,function(n,e){return e.some(function(e){return n.indexOf(e)===0})},n,Pe)},anyOf:function(){var t=K.apply(C,arguments);var r=Nn;try{t.sort(r)}catch(e){return n(this,Oe)}if(t.length===0)return e(this);var i=new En(this,function(){return m.bound(t[0],t[t.length-1])});i._ondirectionchange=function(n){r=n==="next"?Nn:qn;t.sort(r)};var o=0;i._addAlgorithm(function(n,e,i){var u=n.key;while(r(u,t[o])>0){++o;if(o===t.length){e(i);return false}}if(r(u,t[o])===0){return true}else{e(function(){n.continue(t[o])});return false}});return i},notEqual:function(n){return this.inAnyRange([[Ae,n],[n,Ee]],{includeLowers:false,includeUppers:false})},noneOf:function(){var e=K.apply(C,arguments);if(e.length===0)return new En(this);try{e.sort(Nn)}catch(e){return n(this,Oe)}var t=e.reduce(function(n,e){return n?n.concat([[n[n.length-1][1],e]]):[[Ae,e]]},null);t.push([e[e.length-1],Ee]);return this.inAnyRange(t,{includeLowers:false,includeUppers:false})},inAnyRange:function(t,r){if(t.length===0)return e(this);if(!t.every(function(n){return n[0]!==undefined&&n[1]!==undefined&&Nn(n[0],n[1])<=0})){return n(this,"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower",$.InvalidArgument)}var i=!r||r.includeLowers!==false;var o=r&&r.includeUppers===true;function u(n,e){for(var t=0,r=n.length;t0){i[0]=Bn(i[0],e[0]);i[1]=Fn(i[1],e[1]);break}}if(t===r)n.push(e);return n}var a=Nn;function s(n,e){return a(n[0],e[0])}var c;try{c=t.reduce(u,[]);c.sort(s)}catch(e){return n(this,Oe)}var f=0;var l=o?function(n){return Nn(n,c[f][1])>0}:function(n){return Nn(n,c[f][1])>=0};var h=i?function(n){return qn(n,c[f][0])>0}:function(n){return qn(n,c[f][0])>=0};function v(n){return!l(n)&&!h(n)}var d=l;var p=new En(this,function(){return m.bound(c[0][0],c[c.length-1][1],!i,!o)});p._ondirectionchange=function(n){if(n==="next"){d=l;a=Nn}else{d=h;a=qn}c.sort(s)};p._addAlgorithm(function(n,e,t){var r=n.key;while(d(r)){++f;if(f===c.length){e(t);return false}}if(v(r)){return true}else if(Tn(r,c[f][1])===0||Tn(r,c[f][0])===0){return false}else{e(function(){if(a===Nn)n.continue(c[f][0]);else n.continue(c[f][1])});return false}});return p},startsWithAnyOf:function(){var t=K.apply(C,arguments);if(!t.every(function(n){return typeof n==="string"})){return n(this,"startsWithAnyOf() only works with strings")}if(t.length===0)return e(this);return this.inAnyRange(t.map(function(n){return[n,n+Pe]}))}}});function En(n,e){var t=null,r=null;if(e)try{t=e()}catch(n){r=n}var i=n._ctx,o=i.table;this._ctx={table:o,index:i.index,isPrimKey:!i.index||o.schema.primKey.keyPath&&i.index===o.schema.primKey.name,range:t,keysOnly:false,dir:"next",unique:"",algorithm:null,filter:null,replayFilter:null,justLimit:true,isMatch:null,offset:0,limit:Infinity,error:r,or:i.or,valueMapper:o.hook.reading.fire}}function An(n,e){return!(n.filter||n.algorithm||n.or)&&(e?n.justLimit:!n.replayFilter)}a(En.prototype,function(){function e(n,e){n.filter=Vn(n.filter,e)}function t(n,e,t){var r=n.replayFilter;n.replayFilter=r?function(){return Vn(r(),e())}:e;n.justLimit=t&&!r}function i(n,e){n.isMatch=Vn(n.isMatch,e)}function o(n,e){if(n.isPrimKey)return e;var t=n.table.schema.idxByName[n.index];if(!t)throw new $.Schema("KeyPath "+n.index+" on object store "+e.name+" is not indexed");return e.index(t.name)}function a(n,e){var t=o(n,e);return n.keysOnly&&"openKeyCursor"in t?t.openKeyCursor(n.range||null,n.dir+n.unique):t.openCursor(n.range||null,n.dir+n.unique)}function s(n,e,t,r,i){var o=n.replayFilter?Vn(n.filter,n.replayFilter()):n.filter;if(!n.or){Dn(a(n,i),Vn(n.algorithm,o),e,t,r,!n.keysOnly&&n.valueMapper)}else(function(){var s={};var c=0;function f(){if(++c===2)t()}function l(n,t,i){if(!o||o(t,i,f,r)){var a=t.primaryKey;var c=""+a;if(c==="[object ArrayBuffer]")c=""+new Uint8Array(a);if(!u(s,c)){s[c]=true;e(n,t,i)}}}n.or._iterate(l,f,r,i);Dn(a(n,i),n.algorithm,l,f,r,!n.keysOnly&&n.valueMapper)})()}return{_read:function(n,e){var t=this._ctx;return t.error?t.table._trans(null,ke.bind(null,t.error)):t.table._idbstore(U,n).then(e)},_write:function(n){var e=this._ctx;return e.error?e.table._trans(null,ke.bind(null,e.error)):e.table._idbstore(V,n,"locked")},_addAlgorithm:function(n){var e=this._ctx;e.algorithm=Vn(e.algorithm,n)},_iterate:function(n,e,t,r){return s(this._ctx,n,e,t,r)},clone:function(n){var e=Object.create(this.constructor.prototype),t=Object.create(this._ctx);if(n)r(t,n);e._ctx=t;return e},raw:function(){this._ctx.valueMapper=null;return this},each:function(n){var e=this._ctx;return this._read(function(t,r,i){s(e,n,t,r,i)})},count:function(n){var e=this._ctx;if(An(e,true)){return this._read(function(n,t,r){var i=o(e,r);var u=e.range?i.count(e.range):i.count();u.onerror=Re(t);u.onsuccess=function(t){n(Math.min(t.target.result,e.limit))}},n)}else{var t=0;return this._read(function(n,r,i){s(e,function(){++t;return false},function(){n(t)},r,i)},n)}},sortBy:function(n,e){var t=n.split(".").reverse(),r=t[0],i=t.length-1;function o(n,e){if(e)return o(n[t[e]],e-1);return n[r]}var u=this._ctx.dir==="next"?1:-1;function a(n,e){var t=o(n,i),r=o(e,i);return tr?u:0}return this.toArray(function(n){return n.sort(a)}).then(e)},toArray:function(n){var e=this._ctx;return this._read(function(n,t,r){if(Z&&e.dir==="next"&&An(e,true)&&e.limit>0){var i=e.table.hook.reading.fire;var u=o(e,r);var a=e.limit=0}},true);return this},until:function(n,t){e(this._ctx,function(e,r,i){if(n(e.value)){r(i);return t}else{return true}});return this},first:function(n){return this.limit(1).toArray(function(n){return n[0]}).then(n)},last:function(n){return this.reverse().first(n)},filter:function(n){e(this._ctx,function(e){return n(e.value)});i(this._ctx,n);return this},and:function(n){return this.filter(n)},or:function(n){return new Pn(this._ctx.table,n,this)},reverse:function(){this._ctx.dir=this._ctx.dir==="prev"?"next":"prev";if(this._ondirectionchange)this._ondirectionchange(this._ctx.dir);return this},desc:function(){return this.reverse()},eachKey:function(n){var e=this._ctx;e.keysOnly=!e.isMatch;return this.each(function(e,t){n(t.key,t)})},eachUniqueKey:function(n){this._ctx.unique="unique";return this.eachKey(n)},eachPrimaryKey:function(n){var e=this._ctx;e.keysOnly=!e.isMatch;return this.each(function(e,t){n(t.primaryKey,t)})},keys:function(n){var e=this._ctx;e.keysOnly=!e.isMatch;var t=[];return this.each(function(n,e){t.push(e.key)}).then(function(){return t}).then(n)},primaryKeys:function(n){var e=this._ctx;if(Z&&e.dir==="next"&&An(e,true)&&e.limit>0){return this._read(function(n,t,r){var i=o(e,r);var u=e.limit0)E();else i(y)}}t.clone().raw()._iterate(P,function(){m=true;A()},E,c)})},delete:function(){var n=this;var e=this._ctx,t=e.range,r=e.table.hook.deleting.fire,i=r!==en;if(!i&&An(e)&&(e.isPrimKey&&!Ke||!t)){return this._write(function(n,e,r){var i=Re(e),o=t?r.count(t):r.count();o.onerror=i;o.onsuccess=function(){var u=o.result;w(function(){var e=t?r.delete(t):r.clear();e.onerror=i;e.onsuccess=function(){return n(u)}},function(n){return e(n)})}})}var o=i?2e3:1e4;return this._write(function(t,u,a,s){var c=0;var f=n.clone({keysOnly:!e.isMatch&&!i}).distinct().limit(o).raw();var l=[];var h=function(){return f.each(i?function(n,e){l.push([e.primaryKey,e.value])}:function(n,e){l.push(e.primaryKey)}).then(function(){i?l.sort(function(n,e){return Nn(n[0],e[0])}):l.sort(Nn);return xn(a,s,l,i,r)}).then(function(){var n=l.length;c+=n;l=[];return n0?n:e}function Nn(n,e){return v.cmp(n,e)}function qn(n,e){return v.cmp(e,n)}function Rn(n,e){return ne?-1:n===e?0:1}function Vn(n,e){return n?e?function(){return n.apply(this,arguments)&&e.apply(this,arguments)}:n:e}function zn(){z.verno=D.version/10;z._dbSchema=x={};A=d(D.objectStoreNames,0);if(A.length===0)return;var e=D.transaction(He(A),"readonly");A.forEach(function(n){var t=e.objectStore(n),r=t.keyPath,i=r&&typeof r==="string"&&r.indexOf(".")!==-1;var o=new We(r,r||"",false,false,!!t.autoIncrement,r&&typeof r!=="string",i);var u=[];for(var a=0;a